diff --git a/EVT/CH32V20x_List.txt b/EVT/CH32V20x_List.txt index 39076a0..1f36e65 100644 --- a/EVT/CH32V20x_List.txt +++ b/EVT/CH32V20x_List.txt @@ -1,7 +1,7 @@ -南京沁恒微电子股份有限公司 2022.01 +南京沁恒微电子股份有限公司 2023.09 最新资料请到我们的网站上查询 -http://wch.cn +https://wch.cn 文件目录 @@ -9,8 +9,10 @@ http://wch.cn |-- CH32V20x:RISC-V内核微控制器 | |-- EVT: CH32V20x评估板和CH32V20x相关例程 | | |-- PUB: + | | | |-- CH32V20x Evaluation Board Reference-EN.pdf:英文版CH32V20x评估板说明及工程创建说明 | | | |-- CH32V20x评估板说明书.pdf:CH32V20x评估板说明及工程创建说明 | | | |-- CH32V20xSCH.pdf:CH32V20x评估板原理图 + | | | |-- SCHPCB: CH32V20x评估板原理图和PCB原文件 | | |-- EXAM: | | | |-- SRC | | | | |-- Core:内核系统头文件 @@ -18,7 +20,7 @@ http://wch.cn | | | | |-- Ld:ld文件 | | | | |-- Peripheral:基本外设驱动源文件及头文件 | | | | |-- Startup:启动文件。针对用户使用芯片型号包含下列相应的启动文件,同时在ch32v20x.h文件中选择匹配芯片型号定义 - | | | | | |-- startup_ch32v20x_D6.S:适用于CH32V203F6-CH32V203G6-CH32V203K6-CH32V203K8-CH32V203C6-CH32V203C8系列 + | | | | | |-- startup_ch32v20x_D6.S:适用于CH32V203F6-CH32V203G6-CH32V203K6-CH32V203K8-CH32V203C6-CH32V203C8-CH32V203G8系列 | | | | | |-- startup_ch32v20x_D8.S:适用于CH32V203RB系列 | | | | | |-- startup_ch32v20x_D8W.S:适用于CH32V208系列 | | | |-- ADC @@ -57,10 +59,13 @@ http://wch.cn | | | | |-- Observer:观察者角色例程,定时扫描,如果扫描结果不为空,则打印扫描到的广播地址 | | | | |-- OnlyUpdateApp_IAP:固定库无线升级IAP例程,具备OTA功能,接收升级固件后对用户区代码进行升级 | | | | |-- OnlyUpdateApp_Peripheral:固定库无线升级用户例程,外设从机例程基础上添加跳转IAP程序进行后续升级的功能 + | | | | |-- PAwR_ADV:有响应的周期广播例程,广播者 + | | | | |-- PAwR_RSP:有响应的周期广播例程,应答者 | | | | |-- Peripheral:外设从机角色例程,自定义包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读 | | | | |-- peripheral_ancs_client:外设从机角色例程,包含苹果通知中心服务 | | | | |-- peripheral_ETH:蓝牙以太网例程 | | | | |-- RF_PHY:非标准无线收发例程 + | | | | |-- RF_PHY_Auto:非标准无线收发自动切换例程 | | | | |-- RF_PHY_Hop:非标准无线跳频收发例程 | | | | |-- RunningSensor:跑步传感器例程,连接主机后定时上传速度 | | | | |-- SpeedTest_Central:蓝牙测速主机例程 @@ -114,7 +119,8 @@ http://wch.cn | | | | |-- WebServer: 演示通过Web浏览器配置WCHNET芯片的功能,WCHNET芯片内置web服务器 ,通过网页可以实现WCHNET的网络参数配置,以及密码管理 | | | |-- EXTI:外部中断线例程 | | | |-- FLASH:FLASH的擦/读/写,以及快速编程 - | | | |-- FreeRTOS:FreeRTOS移植例程 + | | | |-- FreeRTOS + | | | | |-- FreeRTOS_Core:FreeRTOS移植例程 | | | |-- GPIO:GPIO例程 | | | |-- HarmonyOS:HarmonyOS移植例程 | | | |-- I2C @@ -148,7 +154,9 @@ http://wch.cn | | | | |-- SPI_CRC:使用CRC错误校验,Master/Slave 模式收发例程 | | | | |-- SPI_DMA:SPI使用DMA,Master/Slave 模式收发例程 | | | | |-- SPI_FLASH:SPI接口操作FLASH外设例程 - | | | |-- TencentOS:TencentOS移植例程 + | | | |-- TencentOS:TencentOS移植例程 + | | | |-- SDI_Printf:调试口打印例程 + | | | |-- SYSTICK:滴答定时器例程 | | | |-- TIM | | | | |-- Clock_Select:时钟源选择例程 | | | | |-- ComplementaryOutput_DeadTime:互补输出和死区插入模式例程 diff --git a/EVT/CH32V20x_List_EN.txt b/EVT/CH32V20x_List_EN.txt index e46c521..1cdb2e4 100644 --- a/EVT/CH32V20x_List_EN.txt +++ b/EVT/CH32V20x_List_EN.txt @@ -1,7 +1,7 @@ -Nanjing Qinheng Microelectronics Co., Ltd. 2022.01 +Nanjing Qinheng Microelectronics Co., Ltd. 2023.09 -http://wch-ic.com +https://wch-ic.com Directory @@ -11,6 +11,7 @@ Directory | | |-- PUB: | | | |-- CH32V20xEVT Evaluation Board Manual.pdf: CH32V20xEVT evaluation board introduction and project creation description | | | |-- CH32V20xSCH.pdf: Schematic of CH32V20xEVT evaluation board + | | | |-- SCHPCB: Schematic and PCB of CH32V20xEVT evaluation board | | |-- EXAM: | | | |-- SRC | | | | |-- Core: kernal system header file @@ -18,7 +19,7 @@ Directory | | | | |-- Ld: ld file | | | | |-- Peripheral: basic peripheral driver source file and header file | | | | |-- Startup: startup file. For different devices selected by users, the following 3 startup files are provided, and the matched device definition is selected in the ch32v20x.h file. - | | | | | |-- startup_ch32v20x_D6.S: applied to the CH32V203F6-CH32V203G6-CH32V203K6-CH32V203K8-CH32V203C6-CH32V203C8 + | | | | | |-- startup_ch32v20x_D6.S: applied to the CH32V203F6-CH32V203G6-CH32V203K6-CH32V203K8-CH32V203C6-CH32V203C8-CH32V203G8 | | | | | |-- startup_ch32v20x_D8.S: applied to the CH32V203RB | | | | | |-- startup_ch32v20x_D8W.S: applied to the CH32V208 | | | |-- ADC @@ -34,7 +35,7 @@ Directory | | | | |-- DualADC_SlowInterleaved: dual ADC slow interleaved sampling routine, only applied to CH32V20x_D6 | | | | |-- ExtLines_Trigger: external lines trigger ADC conversion routine | | | | |-- Internal_Temperature: internal temperature sensor routine - | | | |-- BLE ——only for CH32V20x_D8W + | | | |-- BLE ----only for CH32V20x_D8W | | | | |-- BackupUpgrade_IAP: backup wireless upgrade IAP routine. Detect the current code flag, determine whether to move the code from the backup area to the user area, and run the code in the user area | | | | |-- BackupUpgrade_OTA: backup wireless upgrade user routine. Add OTA function to peripheral slave routines, save the upgrade firmware to the backup area and jump to the IAP program to upgrade | | | | |-- BLE_UART: BLE and UART transparent transmission routine, for detailed instructions, please refer to the document in the root directory @@ -51,20 +52,23 @@ Directory | | | | |-- HID_Mouse: BLE mouse routine, simulate a mouse device, upload key value regularly after connected to the central | | | | |-- HID_Touch: BLE touch routine, simulate a touch pencil device, upload touch value regularly after connected to the central | | | | |-- LIB: BLE protocol stack library file and header file - | | | | |-- LWNS:LWNS wireless networking routine,including broadcast、unicast、netflood、mesh. - | | | | |-- MultiCentPeri:Multi-central and multi-peripheral routines, support connecting three masters and three slaves at the same time + | | | | |-- LWNS:LWNS wireless networking routine,including broadcast/unicast/netflood/mesh. + | | | | |-- MultiCentPeri:Multi-central and multi-peripheral routines, support connecting three masters and three slaves at the same time | | | | |-- MultiCentral: multicentral routine, actively scan surrounding devices, conect to the specified three peripheral addresses, search custom services and characteristics, execute read/write commands, peripheral routine is needed, and modify the peripheral address to this routine target address, the addresses of these peripherals are (84:C2:E4:03:02:02), (84:C2:E4:03:02:03) and (84:C2:E4:03:02:04) by default | | | | |-- Observer: observer routine, scan regularly, print the scanned broadcast address if the scanning result is not empty | | | | |-- OnlyUpdateApp_IAP: the only library wireless upgrade IAP routine, with OTA function, upgrade the user area code after receiving the upgraded firmware | | | | |-- OnlyUpdateApp_Peripheral: the only library wireless upgrade user routine, on the basis of peripheral routine, the jumping to IAP program is added for subsequent upgrades + | | | | |-- PAwR_ADV锛歱eriodic advertising with responses routine in advertising + | | | | |-- PAwR_RSP锛歱eriodic advertising with responses routine in responses | | | | |-- Peripheral: peripheral role routine, custom including five services with different attributes, including read attribute, write attribute, notify attribute, read/write attribute, and safe and readable attribute - | | | | |-- peripheral_ancs_client:peripheral slave role routine, including Apple Notification Center service - | | | | |-- peripheral_ETH:Bluetooth ETH routines + | | | | |-- peripheral_ancs_client:peripheral slave role routine, including Apple Notification Center service + | | | | |-- peripheral_ETH:Bluetooth ETH routines | | | | |-- RF_PHY: non-standard wireless transceiver routines + | | | | |-- RF_PHY_Auto锛歯on-standard wireless auto transceiver routines | | | | |-- RF_PHY_Hop: non-standard wireless frequency hopping transceiver routine | | | | |-- RunningSensor: running sensor routine,upload rate regularly after connected to the central - | | | | |-- SpeedTest_Central:Bluetooth speed test central routine - | | | | |-- SpeedTest_Peripheral:Bluetooth speed test peripheral routine + | | | | |-- SpeedTest_Central:Bluetooth speed test central routine + | | | | |-- SpeedTest_Peripheral:Bluetooth speed test peripheral routine | | | | |-- SYNC_ADV: cycle synchronization advertising routine | | | | |-- SYNC_SCAN: cycle synchronization scanning routine | | | | |-- WCH BLE Software Developers Guide.pdf @@ -80,7 +84,7 @@ Directory | | | | | |-- adv_vendor_friend: based on vendor-defined model routine, support friend node function | | | | | |-- adv_vendor_low_power: On the basis of the vendor custom model routine, support low-power node functions and should be used with friend nodes | | | | | |-- adv_vendor_self_provision: On the basis of the vendor custom model routine, support local provision - | | | | | |-- adv_vendor_self_provision_IAP:MESH backup wireless upgrade IAP routine, detect the current code flag, judge whether to move the backup area code to the user area and run the user area code + | | | | | |-- adv_vendor_self_provision_IAP:MESH backup wireless upgrade IAP routine, detect the current code flag, judge whether to move the backup area code to the user area and run the user area code | | | | | |-- adv_vendor_self_provision_with_peripheral: MESH backup wireless upgrade user routine, On the basis of the vendor custom model routine, supports the connection control of the mobile phone BLE debugging assistant, receives the distribution network information through BLE and distributes the network itself. It is suitable for terminal control networking applications. It can formulate the communication protocol by itself to realize the mobile phone control all devices in the mesh network. | | | | | |-- self_provisioner_vendor: vendor-defined model self-provisioning network initiator routine, used with adv_vendor, automatically provision network to the surrounding devices without network, and add it to its own mesh network, support provision network to six devices by default . The default configuration device is bound with single APPKEY, which is used for response transmission and non-response transparent transmission, and the configuration device is bound with single subscription address, which is used for mass sending of unanswered messages | | | | | |-- self_provisioner_vendor_with_peripheral: Based on the vendor-defined model self-provisioning network initiator routine, can be connected and controlled by BLE debugging tool on the mobile phone, transfer the communication between the mobile phone and the mesh network, and can draw up the communication protocol to implement that all devices in mesh network can be controlled the mobile phone. @@ -88,7 +92,7 @@ Directory | | | | | |-- Qinheng MESH APP Management Distribution Network Application Manual.pdf | | | | | |-- Qinheng Low Energy Bluetooth MESH Software Development Reference Manual.pdf | | | |-- BKP: BKP routine - | | | |-- CAN ——only for CH32V20x_D6-CH32V20x_D8W + | | | |-- CAN ----only for CH32V20x_D6-CH32V20x_D8W | | | | |-- Networking: CAN routine: normal mode, standard frame and expanded frame data transceiver | | | | |-- TestMode: test mode, including silent mode, loopback mode and loopback silent mode | | | | |-- Time-triggered: time triggered communication mode @@ -96,7 +100,7 @@ Directory | | | |-- DMA | | | | |-- DMA_MEM2MEM: Memory to memory mode routine | | | | |-- DMA_MEM2PERIP: Memory to peripheral mode, and peripheral to memory mode routine, see peripheral sub-routines - | | | |-- ETH ——only for CH32V20x_D8-CH32V20x_D8W + | | | |-- ETH ----only for CH32V20x_D8-CH32V20x_D8W | | | | |-- 1_Tool_Doc: routine-related documents and configuration software | | | | |-- DHCP: DHCP demonstration routine to obtain IP automatically, and establish TCP connection for data return | | | | |-- DNS: DHCP demonstration routine to obtain IP automatically and then request domain name resolution @@ -114,9 +118,10 @@ Directory | | | | |-- WebServer: Web Server routine, to demonstrate the configuration of WCHNET device functions through Web browser. As the WCHNET devices have built-in web server, the network parameter configuration and password management of WCHNET can be implemented on the web page. | | | |-- EXTI: external interrupt line routine | | | |-- FLASH: FLASH erase/read/write, and fast programming - | | | |-- FreeRTOS: FreeRTOS migration routine + | | | |-- FreeRTOS + | | | | |-- FreeRTOS_Core:FreeRTOS migration routines | | | |-- GPIO: GPIO routine - | | | |-- HarmonyOS:HarmonyOS migration routine + | | | |-- HarmonyOS:HarmonyOS migration routine | | | |-- I2C | | | | |-- I2C_7bit_Mode: 7-bit addressing mode, master/slave mode, transceiver routine | | | | |-- I2C_10bit_Mode: 10-bit addressing mode, master/slave mode transceiver routine @@ -134,12 +139,12 @@ Directory | | | | |-- Standby_Mode: low power, standby mode routine | | | | |-- Stop_Mode: low power, stop mode routine | | | | |-- Standby_RAM_LV_Mode: when LV is enabled in standby mode, RAM 2k and 30K low-power data holding routines - | | | | |-- Standby_RAM_Mode:when LV is not enabled in standby mode, RAM 2k and 30K low-power data holding routines + | | | | |-- Standby_RAM_Mode:when LV is not enabled in standby mode, RAM 2k and 30K low-power data holding routines | | | |-- RCC - | | | | |-- Get_CLK:Get system-HCLK-AHB1-AHB2 clock routine + | | | | |-- Get_CLK:Get system-HCLK-AHB1-AHB2 clock routine | | | | |-- MCO: MCO pin clock output routine - | | | | |-- HSI_PLL_Source:HSI or HSI/2 as PLL input clock routine - | | | |-- RT-Thread:RT thread migration routine + | | | | |-- HSI_PLL_Source:HSI or HSI/2 as PLL input clock routine + | | | |-- RT-Thread:RT thread migration routine | | | |-- RTC: calendar routine | | | |-- SPI | | | | |-- 1Lines_half-duplex: single wire half duplex mode, master/slave mode, data transceiver @@ -149,6 +154,9 @@ Directory | | | | |-- SPI_DMA: SPI DMA, master/slave mode transceiver routine | | | | |-- SPI_FLASH: SPI interface operation flash peripheral routine | | | |-- TencentOS: TencentOS migration routine + | | | |-- SDI_Printf + | | | | |-- SDI_Printf锛歞ebug interface SDI, virtual serial port. + | | | |-- SYSTICK: Systick timer routine | | | |-- TIM | | | | |-- Clock_Select: clock source selection routine | | | | |-- ComplementaryOutput_DeadTime: complementary output and deadband insertion mode routines @@ -157,10 +165,10 @@ Directory | | | | |-- One_Pulse: single pulse output routine | | | | |-- Output_Compare_Mode: output comparison mode routine | | | | |-- PWM_Output: PWM output routine - | | | | |-- Synchro_ExtTrigger:slave mode routine, including reset mode, gating mode and trigger mode - | | | | |-- Synchro_Timer:timer synchronization mode + | | | | |-- Synchro_ExtTrigger:slave mode routine, including reset mode, gating mode and trigger mode + | | | | |-- Synchro_Timer:timer synchronization mode | | | | |-- TIM_DMA: timer DMA routines - | | | |-- TOUCHKEY:touchkey detection routine + | | | |-- TOUCHKEY:touchkey detection routine | | | |-- USART | | | | |-- USART_DMA: USART DMA, master/slave mode transceiver routine | | | | |-- USART_HalfDuplex: single wire half duplex mode, master/slave mode transceiver routine @@ -172,28 +180,28 @@ Directory | | | | |-- USART_SynchronousMode: synchronous mode, master/slave mode, transceiver routine | | | |-- USB | | | | |-- USBD - | | | | | |-- CH372:Simulates a custom USB device (CH372 device) with endpoints 1, 3 down and 2, 4 up. Data down from endpoint 1 is uploaded from endpoint 3 and not reversed, and data down from endpoint 2 is uploaded from endpoint 4 and reversed. - | | | | | |-- Compatibility_HID:Simulates HID devices, with data transmitted up and down through the serial port. - | | | | | |-- CompositeKM:Simulate keyboard and mouse, use IO to simulate keystrokes, while simulated data can be uploaded through serial port 2. + | | | | | |-- CH372:Simulates a custom USB device (CH372 device) with endpoints 1, 3 down and 2, 4 up. Data down from endpoint 1 is uploaded from endpoint 3 and not reversed, and data down from endpoint 2 is uploaded from endpoint 4 and reversed. + | | | | | |-- Compatibility_HID:Simulates HID devices, with data transmitted up and down through the serial port. + | | | | | |-- CompositeKM:Simulate keyboard and mouse, use IO to simulate keystrokes, while simulated data can be uploaded through serial port 2. | | | | | |-- MSC_U-Disk: Smulates a simple USB flash drive, optionally using on-chip Flash or external SPI-Flash | | | | | |-- MSC_CD-ROM: Simulate CDROM, need external SPI-Flash - | | | | | |-- SimulateCDC:Simulate a CDC serial port and use serial port 2 to send and receive. - | | | | | |-- SimulateCDC-HID:Simulate a CDC serial port, use serial port 2 to send and receive, HID interrupt endpoints to send and receive data to reverse and upload. + | | | | | |-- SimulateCDC:Simulate a CDC serial port and use serial port 2 to send and receive. + | | | | | |-- SimulateCDC-HID:Simulate a CDC serial port, use serial port 2 to send and receive, HID interrupt endpoints to send and receive data to reverse and upload. | | | | |-- USBFS | | | | | |-- DEVICE - | | | | | | |-- CH372:Simulates a custom USB device (CH372 device) with endpoints 1, 3 down and 2, 4 up. Data down from endpoint 1 is uploaded from endpoint 3 and not reversed, and data down from endpoint 2 is uploaded from endpoint 4 and reversed. - | | | | | | |-- Compatibility_HID:Simulates HID devices, with data transmitted up and down through the serial port. - | | | | | | |-- CompositeKM:Simulate keyboard and mouse, use IO to simulate keystrokes, while simulated data can be uploaded through serial port 2. + | | | | | | |-- CH372:Simulates a custom USB device (CH372 device) with endpoints 1, 3 down and 2, 4 up. Data down from endpoint 1 is uploaded from endpoint 3 and not reversed, and data down from endpoint 2 is uploaded from endpoint 4 and reversed. + | | | | | | |-- Compatibility_HID:Simulates HID devices, with data transmitted up and down through the serial port. + | | | | | | |-- CompositeKM:Simulate keyboard and mouse, use IO to simulate keystrokes, while simulated data can be uploaded through serial port 2. | | | | | | |-- MSC_U-Disk: Smulates a simple USB flash drive, optionally using on-chip Flash or external SPI-Flash | | | | | | |-- MSC_CD-ROM: Simulate CDROM, need external SPI-Flash - | | | | | | |-- SimulateCDC:Simulate a CDC serial port and use serial port 2 to send and receive. - | | | | | | |-- SimulateCDC-HID:Simulate a CDC serial port, use serial port 2 to send and receive, HID interrupt endpoints to send and receive data to reverse and upload. + | | | | | | |-- SimulateCDC:Simulate a CDC serial port and use serial port 2 to send and receive. + | | | | | | |-- SimulateCDC-HID:Simulate a CDC serial port, use serial port 2 to send and receive, HID interrupt endpoints to send and receive data to reverse and upload. | | | | | |-- HOST_IAP | | | | | | |-- APP: APP used with HOST_IAP, the project has modified the starting location of the program, after compilation, you need to convert the file into a bin file and rename it to APP.bin | | | | | | |-- HOST_IAP: The host U disk IAP routine based on the U disk read file routine finishing, read the file with the name bit APP.bin from the U disk, write it to the internal flash, check it and jump automatically. | | | | | |-- HOST_KM: The host operates the keypad, gets the data of the endpoints uploaded by the keypad and prints it, supports U-port under level 1 hub - | | | | | |-- HOST_MTP_FileSystem:Enumeration process of a USB host to a device that supports MTP and PTP protocols, supports MTP and PTP protocols, and reads its files - | | | | | |-- Host_Udisk:USB host operation USB disk routine - | | | | | |-- Udisk_Lib:U disk file system library file + | | | | | |-- HOST_MTP_FileSystem:Enumeration process of a USB host to a device that supports MTP and PTP protocols, supports MTP and PTP protocols, and reads its files + | | | | | |-- Host_Udisk:USB host operation USB disk routine + | | | | | |-- Udisk_Lib:U disk file system library file | | | |-- WWDG: window watchdog routine diff --git a/EVT/EXAM/ADC/ADC_DMA/.settings/language.settings.xml b/EVT/EXAM/ADC/ADC_DMA/.settings/language.settings.xml deleted file mode 100644 index f16e375..0000000 --- a/EVT/EXAM/ADC/ADC_DMA/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/ADC_DMA/User/main.c b/EVT/EXAM/ADC/ADC_DMA/User/main.c index 3d36dad..b42e490 100644 --- a/EVT/EXAM/ADC/ADC_DMA/User/main.c +++ b/EVT/EXAM/ADC/ADC_DMA/User/main.c @@ -4,19 +4,19 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - ADC DMA sampling routines: - ADC channel 1 (PA1), the rule group channel obtains ADC conversion data - for 1024 consecutive times through DMA. - -*/ + *ADC DMA sampling routines: + *ADC channel 1 (PA1), the rule group channel obtains ADC conversion data + *for 1024 consecutive times through DMA. + * + */ #include "debug.h" @@ -166,10 +166,11 @@ u16 Get_ConversionVal(s16 val) int main(void) { u16 i; - + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue:%d\n", Calibrattion_Val); diff --git a/EVT/EXAM/ADC/AnalogWatchdog/.settings/language.settings.xml b/EVT/EXAM/ADC/AnalogWatchdog/.settings/language.settings.xml deleted file mode 100644 index 7f837f0..0000000 --- a/EVT/EXAM/ADC/AnalogWatchdog/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/AnalogWatchdog/User/main.c b/EVT/EXAM/ADC/AnalogWatchdog/User/main.c index a12b323..17c0d5e 100644 --- a/EVT/EXAM/ADC/AnalogWatchdog/User/main.c +++ b/EVT/EXAM/ADC/AnalogWatchdog/User/main.c @@ -4,19 +4,19 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - Analog watchdog routine: - ADC channel 1 (PA1), detect that the ADC conversion data on the rule group channel - is outside 2000 - 3500 and trigger the simulation Watchdog interrupt. - -*/ + *Analog watchdog routine: + *ADC channel 1 (PA1), detect that the ADC conversion data on the rule group channel + *is outside 2000 - 3500 and trigger the simulation Watchdog interrupt. + * + */ #include "debug.h" @@ -125,9 +125,11 @@ int main(void) u16 ADC_val; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); diff --git a/EVT/EXAM/ADC/Auto_Injection/.settings/language.settings.xml b/EVT/EXAM/ADC/Auto_Injection/.settings/language.settings.xml deleted file mode 100644 index 4482581..0000000 --- a/EVT/EXAM/ADC/Auto_Injection/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/Auto_Injection/User/main.c b/EVT/EXAM/ADC/Auto_Injection/User/main.c index 452d28c..a8898b9 100644 --- a/EVT/EXAM/ADC/Auto_Injection/User/main.c +++ b/EVT/EXAM/ADC/Auto_Injection/User/main.c @@ -4,18 +4,18 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - Automatic injection mode routine: - ADC channel 1 (PA1) - regular group channel, channel 3 (PA3) - injection group channel - -*/ + *Automatic injection mode routine: + *ADC channel 1 (PA1) - regular group channel, channel 3 (PA3) - injection group channel + * + */ #include "debug.h" @@ -138,9 +138,11 @@ int main(void) u16 adc_val; u16 adc_jval; + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue:%d\n", Calibrattion_Val); diff --git a/EVT/EXAM/ADC/Discontinuous_mode/.settings/language.settings.xml b/EVT/EXAM/ADC/Discontinuous_mode/.settings/language.settings.xml deleted file mode 100644 index f89650f..0000000 --- a/EVT/EXAM/ADC/Discontinuous_mode/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/Discontinuous_mode/User/main.c b/EVT/EXAM/ADC/Discontinuous_mode/User/main.c index e52c5df..97551f5 100644 --- a/EVT/EXAM/ADC/Discontinuous_mode/User/main.c +++ b/EVT/EXAM/ADC/Discontinuous_mode/User/main.c @@ -4,21 +4,21 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - Discontinuous mode routine: - ADC channel 1 (PA1) - injection group channel, channel 3 (PA3) - injection group channel, - channel 4 (PA4) - injection group channel, this mode - Next, an ADC conversion is triggered by the TIM1_CC4 event, and the above-mentioned 1 injection - group channel is converted in sequence each time. - -*/ + *Discontinuous mode routine: + *ADC channel 1 (PA1) - injection group channel, channel 3 (PA3) - injection group channel, + *channel 4 (PA4) - injection group channel, this mode + *Next, an ADC conversion is triggered by the TIM1_CC4 event, and the above-mentioned 1 injection + *group channel is converted in sequence each time. + * + */ #include "debug.h" s16 Calibrattion_Val = 0; @@ -149,8 +149,10 @@ u16 Get_ConversionVal(s16 val) */ int main(void) { + SystemCoreClockUpdate(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue:%d\n", Calibrattion_Val); diff --git a/EVT/EXAM/ADC/DualADC_AlternateTrigger/.settings/language.settings.xml b/EVT/EXAM/ADC/DualADC_AlternateTrigger/.settings/language.settings.xml deleted file mode 100644 index 772c2fa..0000000 --- a/EVT/EXAM/ADC/DualADC_AlternateTrigger/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/DualADC_AlternateTrigger/User/main.c b/EVT/EXAM/ADC/DualADC_AlternateTrigger/User/main.c index 4667212..a74d758 100644 --- a/EVT/EXAM/ADC/DualADC_AlternateTrigger/User/main.c +++ b/EVT/EXAM/ADC/DualADC_AlternateTrigger/User/main.c @@ -4,19 +4,19 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - Dual ADC alternate trigger sampling routine: - Dual ADC alternate trigger sampling routine. - - Note:only applied to CH32V20x_D6 -*/ + *Dual ADC alternate trigger sampling routine: + *Dual ADC alternate trigger sampling routine. + * + *Note:only applied to CH32V20x_D6 + */ #include "debug.h" @@ -186,8 +186,10 @@ u16 Get_ConversionVal2(s16 val) int main(void) { USART_Printf_Init(115200); + SystemCoreClockUpdate(); Delay_Init(); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue1:%d\n", Calibrattion_Val1); printf("CalibrattionValue2:%d\n", Calibrattion_Val2); diff --git a/EVT/EXAM/ADC/DualADC_Combined_RegInjectionSimul/.settings/language.settings.xml b/EVT/EXAM/ADC/DualADC_Combined_RegInjectionSimul/.settings/language.settings.xml deleted file mode 100644 index 86d8883..0000000 --- a/EVT/EXAM/ADC/DualADC_Combined_RegInjectionSimul/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/DualADC_Combined_RegInjectionSimul/User/main.c b/EVT/EXAM/ADC/DualADC_Combined_RegInjectionSimul/User/main.c index 8e6b628..4e824bc 100644 --- a/EVT/EXAM/ADC/DualADC_Combined_RegInjectionSimul/User/main.c +++ b/EVT/EXAM/ADC/DualADC_Combined_RegInjectionSimul/User/main.c @@ -4,23 +4,23 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - dual ADC combined regular + injection + simultaneous sampling routine: - Rule group ADC1 channel 1 (PA1), ADC2 channel 4 (PA4), injection group ADC1 - channel 3 (PA3) ADC2 channel 5 (PA5)) - The rule group injection groups are all triggered by software, and the dual ADC - rule group data is obtained through the DMA interrupt, and the dual ADC injection - group data is obtained through the ADC interrupt. - - Note:only applied to CH32V20x_D6 -*/ + *dual ADC combined regular + injection + simultaneous sampling routine: + *Rule group ADC1 channel 1 (PA1), ADC2 channel 4 (PA4), injection group ADC1 + *channel 3 (PA3) ADC2 channel 5 (PA5)) + *The rule group injection groups are all triggered by software, and the dual ADC + *rule group data is obtained through the DMA interrupt, and the dual ADC injection + *group data is obtained through the ADC interrupt. + * + *Note:only applied to CH32V20x_D6 + */ #include "debug.h" @@ -201,8 +201,10 @@ u16 Get_ConversionVal2(s16 val) int main(void) { USART_Printf_Init(115200); + SystemCoreClockUpdate(); Delay_Init(); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("ADC test\r\n"); printf("CalibrattionValue1:%d\n", Calibrattion_Val1); diff --git a/EVT/EXAM/ADC/DualADC_FastInterleaved/.settings/language.settings.xml b/EVT/EXAM/ADC/DualADC_FastInterleaved/.settings/language.settings.xml deleted file mode 100644 index cce61f0..0000000 --- a/EVT/EXAM/ADC/DualADC_FastInterleaved/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/DualADC_FastInterleaved/User/main.c b/EVT/EXAM/ADC/DualADC_FastInterleaved/User/main.c index b485009..61d5d7d 100644 --- a/EVT/EXAM/ADC/DualADC_FastInterleaved/User/main.c +++ b/EVT/EXAM/ADC/DualADC_FastInterleaved/User/main.c @@ -4,20 +4,20 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - dual ADC fast interleaved sampling routine: - ADC1 channel 1 (PA1), ADC2 channel 1 (PA1)), the rule group channel obtains - dual ADC conversion data through ADC interrupt. - - Note:only applied toCH32V203 -*/ + *dual ADC fast interleaved sampling routine: + *ADC1 channel 1 (PA1), ADC2 channel 1 (PA1)), the rule group channel obtains + *dual ADC conversion data through ADC interrupt. + * + *Note:only applied toCH32V203 + */ #include "debug.h" @@ -145,8 +145,10 @@ u16 Get_ConversionVal2(s16 val) int main(void) { USART_Printf_Init(115200); + SystemCoreClockUpdate(); Delay_Init(); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue1:%d\n", Calibrattion_Val1); printf("CalibrattionValue2:%d\n", Calibrattion_Val2); diff --git a/EVT/EXAM/ADC/DualADC_InjectionSimul/.settings/language.settings.xml b/EVT/EXAM/ADC/DualADC_InjectionSimul/.settings/language.settings.xml deleted file mode 100644 index cda24fd..0000000 --- a/EVT/EXAM/ADC/DualADC_InjectionSimul/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/DualADC_InjectionSimul/User/main.c b/EVT/EXAM/ADC/DualADC_InjectionSimul/User/main.c index 4a818c9..2de8e1f 100644 --- a/EVT/EXAM/ADC/DualADC_InjectionSimul/User/main.c +++ b/EVT/EXAM/ADC/DualADC_InjectionSimul/User/main.c @@ -4,19 +4,19 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - Dual ADC injection simultaneous sampling routine: - ADC1 channel 1 (PA1), ADC2 channel 2 (PA3). - - Note:only applied toCH32V203 -*/ + *Dual ADC injection simultaneous sampling routine: + *ADC1 channel 1 (PA1), ADC2 channel 2 (PA3). + * + *Note:only applied toCH32V203 + */ #include "debug.h" @@ -136,8 +136,10 @@ u16 Get_ConversionVal2(s16 val) int main(void) { USART_Printf_Init(115200); + SystemCoreClockUpdate(); Delay_Init(); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue1:%d\n", Calibrattion_Val1); printf("CalibrattionValue2:%d\n", Calibrattion_Val2); diff --git a/EVT/EXAM/ADC/DualADC_RegSimul/.settings/language.settings.xml b/EVT/EXAM/ADC/DualADC_RegSimul/.settings/language.settings.xml deleted file mode 100644 index 6f693e9..0000000 --- a/EVT/EXAM/ADC/DualADC_RegSimul/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/DualADC_RegSimul/User/main.c b/EVT/EXAM/ADC/DualADC_RegSimul/User/main.c index e82c2d1..3274a6e 100644 --- a/EVT/EXAM/ADC/DualADC_RegSimul/User/main.c +++ b/EVT/EXAM/ADC/DualADC_RegSimul/User/main.c @@ -4,20 +4,20 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - Dual ADC regular simultaneous sampling routine: -ADC1 channel 1 (PA1), ADC2 channel 3 (PA3)), and the rule group channel obtains - dual ADC conversion data through DMA interrupt. - - Note锟斤拷only applied toCH32V203 -*/ + *Dual ADC regular simultaneous sampling routine: + *ADC1 channel 1 (PA1), ADC2 channel 3 (PA3)), and the rule group channel obtains + *dual ADC conversion data through DMA interrupt. + * + *Note锟斤拷only applied toCH32V203 + */ #include "debug.h" @@ -179,8 +179,10 @@ u16 Get_ConversionVal2(s16 val) int main(void) { USART_Printf_Init(115200); + SystemCoreClockUpdate(); Delay_Init(); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue1:%d\n", Calibrattion_Val1); printf("CalibrattionValue2:%d\n", Calibrattion_Val2); diff --git a/EVT/EXAM/ADC/DualADC_SlowInterleaved/.settings/language.settings.xml b/EVT/EXAM/ADC/DualADC_SlowInterleaved/.settings/language.settings.xml deleted file mode 100644 index def5630..0000000 --- a/EVT/EXAM/ADC/DualADC_SlowInterleaved/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/DualADC_SlowInterleaved/User/main.c b/EVT/EXAM/ADC/DualADC_SlowInterleaved/User/main.c index 79098ba..a9d71e0 100644 --- a/EVT/EXAM/ADC/DualADC_SlowInterleaved/User/main.c +++ b/EVT/EXAM/ADC/DualADC_SlowInterleaved/User/main.c @@ -4,20 +4,20 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - dual ADC slow interleaved sampling routine: - ADC1 channel 1 (PA1), ADC2 channel 1 (PA1)), the rule group channel obtains - dual ADC conversion data through ADC interrupt. - - Note:Only applied to CH32V203 -*/ + *dual ADC slow interleaved sampling routine: + *ADC1 channel 1 (PA1), ADC2 channel 1 (PA1)), the rule group channel obtains + *dual ADC conversion data through ADC interrupt. + * + *Note:Only applied to CH32V203 + */ #include "debug.h" @@ -146,8 +146,10 @@ u16 Get_ConversionVal2(s16 val) int main(void) { USART_Printf_Init(115200); + SystemCoreClockUpdate(); Delay_Init(); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue1:%d\n", Calibrattion_Val1); printf("CalibrattionValue2:%d\n", Calibrattion_Val2); diff --git a/EVT/EXAM/ADC/ExtLines_Trigger/.settings/language.settings.xml b/EVT/EXAM/ADC/ExtLines_Trigger/.settings/language.settings.xml deleted file mode 100644 index 6231d8b..0000000 --- a/EVT/EXAM/ADC/ExtLines_Trigger/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/ExtLines_Trigger/User/main.c b/EVT/EXAM/ADC/ExtLines_Trigger/User/main.c index 6cad701..9e785dc 100644 --- a/EVT/EXAM/ADC/ExtLines_Trigger/User/main.c +++ b/EVT/EXAM/ADC/ExtLines_Trigger/User/main.c @@ -4,21 +4,21 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - External lines trigger ADC conversion routine: - ADC channel 1 (PA1) - injection group channel, external trigger pin (PA15) high - level triggers EXTI line 15 event,In this mode, an ADC conversion is triggered - by an event on EXTI line 15, and a JEOC interrupt is generated after the conversion - is completed. - -*/ + *External lines trigger ADC conversion routine: + *ADC channel 1 (PA1) - injection group channel, external trigger pin (PA15) high + *level triggers EXTI line 15 event,In this mode, an ADC conversion is triggered + *by an event on EXTI line 15, and a JEOC interrupt is generated after the conversion + *is completed. + * + */ #include "debug.h" @@ -132,8 +132,10 @@ u16 Get_ConversionVal(s16 val) */ int main(void) { + SystemCoreClockUpdate(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue:%d\n", Calibrattion_Val); diff --git a/EVT/EXAM/ADC/Internal_Temperature/.settings/language.settings.xml b/EVT/EXAM/ADC/Internal_Temperature/.settings/language.settings.xml deleted file mode 100644 index 9481ded..0000000 --- a/EVT/EXAM/ADC/Internal_Temperature/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ADC/Internal_Temperature/User/main.c b/EVT/EXAM/ADC/Internal_Temperature/User/main.c index 7ab6875..dd2cceb 100644 --- a/EVT/EXAM/ADC/Internal_Temperature/User/main.c +++ b/EVT/EXAM/ADC/Internal_Temperature/User/main.c @@ -4,19 +4,19 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - Internal temperature sensor routine: - Through the ADC channel 16, the output voltage value and temperature value of - the internal temperature sensor are collected. - -*/ + *Internal temperature sensor routine: + *Through the ADC channel 16, the output voltage value and temperature value of + *the internal temperature sensor are collected. + * + */ #include "debug.h" @@ -180,9 +180,11 @@ int main(void) u16 ADC_val; s32 val_mv; + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); ADC_Function_Init(); printf("CalibrattionValue:%d\n", Calibrattion_Val); diff --git a/EVT/EXAM/BKP/.settings/language.settings.xml b/EVT/EXAM/BKP/.settings/language.settings.xml deleted file mode 100644 index 8a76c0e..0000000 --- a/EVT/EXAM/BKP/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/BKP/User/main.c b/EVT/EXAM/BKP/User/main.c index 0a42830..16692d5 100644 --- a/EVT/EXAM/BKP/User/main.c +++ b/EVT/EXAM/BKP/User/main.c @@ -4,19 +4,19 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - BKP routine: - Intrusion detection pin (PC13), when an intrusion detection event occurs, all data - backup register contents are cleared,And trigger the intrusion detection interrupt. - -*/ + *BKP routine: + *Intrusion detection pin (PC13), when an intrusion detection event occurs, all data + *backup register contents are cleared,And trigger the intrusion detection interrupt. + * + */ #include "debug.h" @@ -69,9 +69,11 @@ void BKP_Tamper_Init(void) */ int main(void) { + SystemCoreClockUpdate(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); BKP_Tamper_Init(); diff --git a/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index c0bb941..0000000 --- a/EVT/EXAM/BLE/BLE_UART/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//APP/peripheral.c=UTF-8 diff --git a/EVT/EXAM/BLE/BLE_UART/APP/app_uart.c b/EVT/EXAM/BLE/BLE_UART/APP/app_uart.c new file mode 100644 index 0000000..edc45fe --- /dev/null +++ b/EVT/EXAM/BLE/BLE_UART/APP/app_uart.c @@ -0,0 +1,239 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : peripheral.C + * Author : WCH + * Version : v1.0 + * Date : 2020/11/26 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "CONFIG.h" +#include "devinfoservice.h" +#include "gattprofile.h" +#include "peripheral.h" +#include "app_uart.h" + +/********************************************************************* + * MACROS + */ +//The buffer length should be a power of 2 +#define APP_UART_TX_BUFFER_LENGTH 512U +#define APP_UART_RX_BUFFER_LENGTH 2048U + +/********************************************************************* + * CONSTANTS + */ + +/********************************************************************* + * TYPEDEFS + */ + +/********************************************************************* + * GLOBAL VARIABLES + */ +uint8_t to_test_buffer[BLE_BUFF_MAX_LEN - 4 - 3]; + +app_drv_fifo_t app_uart_tx_fifo; +app_drv_fifo_t app_uart_rx_fifo; + +//interupt uart rx flag ,clear at main loop +bool uart_rx_flag = false; + +//for interrupt rx blcak hole ,when uart rx fifo full +uint8_t for_uart_rx_black_hole = 0; + +//fifo length less that MTU-3, retry times +uint32_t uart_to_ble_send_evt_cnt = 0; + +/********************************************************************* + * EXTERNAL VARIABLES + */ + +/********************************************************************* + * EXTERNAL FUNCTIONS + */ + +/********************************************************************* + * LOCAL VARIABLES + */ +// + +//The tx buffer and rx buffer for app_drv_fifo +//length should be a power of 2 +static uint8_t app_uart_tx_buffer[APP_UART_TX_BUFFER_LENGTH] = {0}; +static uint8_t app_uart_rx_buffer[APP_UART_RX_BUFFER_LENGTH] = {0}; + + +/********************************************************************* + * LOCAL FUNCTIONS + */ + +/********************************************************************* + * PROFILE CALLBACKS + */ + +/********************************************************************* + * PUBLIC FUNCTIONS + */ + +/********************************************************************* + * @fn app_uart_process + * + * @brief process uart data + * + * @return NULL + */ +void app_uart_process(void) +{ + uint8_t data; + __disable_irq(); + if(uart_rx_flag) + { + tmos_start_task(Peripheral_TaskID, UART_TO_BLE_SEND_EVT, 2); + uart_rx_flag = false; + } + __enable_irq(); + + + while(app_drv_fifo_length(&app_uart_tx_fifo)) + { + app_drv_fifo_read_to_same_addr(&app_uart_tx_fifo, (uint8_t *)&data, 1); + USART_SendData(USART3, data); + while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET) /* waiting for sending finish */ + { + } + } +} +/********************************************************************* + * @fn app_uart_init + * + * @brief init uart + * + * @return NULL + */ +void app_uart_init() +{ + //tx fifo and tx fifo + //The buffer length should be a power of 2 + app_drv_fifo_init(&app_uart_tx_fifo, app_uart_tx_buffer, APP_UART_TX_BUFFER_LENGTH); + app_drv_fifo_init(&app_uart_rx_fifo, app_uart_rx_buffer, APP_UART_RX_BUFFER_LENGTH); + + GPIO_InitTypeDef GPIO_InitStructure = {0}; + USART_InitTypeDef USART_InitStructure = {0}; + NVIC_InitTypeDef NVIC_InitStructure = {0}; + + //uart3 init + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + + /* USART3 TX-->B.10 RX-->B.11 */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOB, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOB, &GPIO_InitStructure); + + USART_InitStructure.USART_BaudRate = 115200; + USART_InitStructure.USART_WordLength = USART_WordLength_8b; + USART_InitStructure.USART_StopBits = USART_StopBits_1; + USART_InitStructure.USART_Parity = USART_Parity_No; + USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; + + USART_Init(USART3, &USART_InitStructure); + USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); + + NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); + + USART_Cmd(USART3, ENABLE); +} + +/********************************************************************* + * @fn app_uart_tx_data + * + * @brief app_uart_tx_data + * + * @return NULL + */ +void app_uart_tx_data(uint8_t *data, uint16_t length) +{ + uint16_t write_length = length; + app_drv_fifo_write(&app_uart_tx_fifo, data, &write_length); +} + +/********************************************************************* + * @fn UART3_IRQHandler + * + * @brief Not every uart reception will end with a UART_II_RECV_TOUT + * UART_II_RECV_TOUT can only be triggered when R8_UARTx_RFC is not 0 + * Here we cannot rely UART_II_RECV_TOUT as the end of a uart reception + * + * @return NULL + */ +__attribute__((interrupt("WCH-Interrupt-fast"))) +void USART3_IRQHandler(void) +{ + uint16_t error; + uint8_t data; + if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) + { + data = USART_ReceiveData(USART3); + error = app_drv_fifo_write_from_same_addr(&app_uart_rx_fifo, (uint8_t *)&data, 1); + if(error != APP_DRV_FIFO_RESULT_SUCCESS) + { + PRINT("APP_DRV_FIFO_RESULT_NOT_MEM\r\n"); + } + uart_rx_flag = true; + } +} + +/********************************************************************* + * @fn on_bleuartServiceEvt + * + * @brief ble uart service callback handler + * + * @return NULL + */ +void on_bleuartServiceEvt(uint16_t connection_handle, ble_uart_evt_t *p_evt) +{ + switch(p_evt->type) + { + case BLE_UART_EVT_TX_NOTI_DISABLED: + PRINT("%02x:bleuart_EVT_TX_NOTI_DISABLED\r\n", connection_handle); + break; + case BLE_UART_EVT_TX_NOTI_ENABLED: + PRINT("%02x:bleuart_EVT_TX_NOTI_ENABLED\r\n", connection_handle); + break; + case BLE_UART_EVT_BLE_DATA_RECIEVED: + PRINT("BLE RX DATA len:%d\r\n", p_evt->data.length); + + //for notify back test + //to ble + uint16_t to_write_length = p_evt->data.length; + app_drv_fifo_write(&app_uart_rx_fifo, (uint8_t *)p_evt->data.p_data, &to_write_length); + tmos_start_task(Peripheral_TaskID, UART_TO_BLE_SEND_EVT, 2); + //end of nofify back test + + //ble to uart + app_uart_tx_data((uint8_t *)p_evt->data.p_data, p_evt->data.length); + + break; + default: + break; + } +} + +/********************************************************************* +*********************************************************************/ diff --git a/EVT/EXAM/BLE/BLE_UART/APP/ch32v20x_it.c b/EVT/EXAM/BLE/BLE_UART/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/BLE_UART/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/BLE_UART/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/BLE_UART/APP/include/app_uart.h b/EVT/EXAM/BLE/BLE_UART/APP/include/app_uart.h new file mode 100644 index 0000000..7d854b5 --- /dev/null +++ b/EVT/EXAM/BLE/BLE_UART/APP/include/app_uart.h @@ -0,0 +1,66 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : app_uart.h + * Author : WCH + * Version : V1.0 + * Date : 2018/12/11 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef app_uart_H +#define app_uart_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************************************************************* + * INCLUDES + */ + +#include "app_drv_fifo.h" +#include "ble_uart_service.h" + +/********************************************************************* + * CONSTANTS + */ + +extern uint8_t to_test_buffer[BLE_BUFF_MAX_LEN - 4 - 3]; + +extern app_drv_fifo_t app_uart_tx_fifo; +extern app_drv_fifo_t app_uart_rx_fifo; + +//interupt uart rx flag ,clear at main loop +extern bool uart_rx_flag; + +//for interrupt rx blcak hole ,when uart rx fifo full +extern uint8_t for_uart_rx_black_hole; + +//fifo length less that MTU-3, retry times +extern uint32_t uart_to_ble_send_evt_cnt; + +/********************************************************************* + * MACROS + */ + +/********************************************************************* + * FUNCTIONS + */ + +extern void app_uart_process(void); + +extern void app_uart_init(void); + +extern void on_bleuartServiceEvt(uint16_t connection_handle, ble_uart_evt_t *p_evt); + +/********************************************************************* +*********************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/EVT/EXAM/BLE/BLE_UART/APP/include/peripheral.h b/EVT/EXAM/BLE/BLE_UART/APP/include/peripheral.h index 76812be..e7c016d 100644 --- a/EVT/EXAM/BLE/BLE_UART/APP/include/peripheral.h +++ b/EVT/EXAM/BLE/BLE_UART/APP/include/peripheral.h @@ -43,6 +43,7 @@ typedef struct uint16_t connTimeout; } peripheralConnItem_t; +extern uint8_t Peripheral_TaskID; /********************************************************************* * FUNCTIONS */ diff --git a/EVT/EXAM/BLE/BLE_UART/APP/peripheral.c b/EVT/EXAM/BLE/BLE_UART/APP/peripheral.c index c4646e4..e2307d0 100644 --- a/EVT/EXAM/BLE/BLE_UART/APP/peripheral.c +++ b/EVT/EXAM/BLE/BLE_UART/APP/peripheral.c @@ -1,7 +1,7 @@ /********************************** (C) COPYRIGHT ******************************* * File Name : peripheral.C - * Author : zhangxiyi @WCH - * Version : v0.1 + * Author : WCH + * Version : v1.0 * Date : 2020/11/26 * Description : ********************************************************************************* @@ -17,157 +17,9 @@ #include "devinfoservice.h" #include "gattprofile.h" #include "peripheral.h" - #include "ble_uart_service.h" #include "app_drv_fifo.h" - -uint8_t Peripheral_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing - -// -static uint8_t to_test_buffer[BLE_BUFF_MAX_LEN - 4 - 3]; - -//The buffer length should be a power of 2 -#define APP_UART_TX_BUFFER_LENGTH 512U -#define APP_UART_RX_BUFFER_LENGTH 2048U - -//The tx buffer and rx buffer for app_drv_fifo -//length should be a power of 2 -static uint8_t app_uart_tx_buffer[APP_UART_TX_BUFFER_LENGTH] = {0}; -static uint8_t app_uart_rx_buffer[APP_UART_RX_BUFFER_LENGTH] = {0}; - -static app_drv_fifo_t app_uart_tx_fifo; -static app_drv_fifo_t app_uart_rx_fifo; - -//interupt uart rx flag ,clear at main loop -bool uart_rx_flag = false; - -//for interrupt rx blcak hole ,when uart rx fifo full -uint8_t for_uart_rx_black_hole = 0; - -//fifo length less that MTU-3, retry times -uint32_t uart_to_ble_send_evt_cnt = 0; - -void app_uart_process(void) -{ - uint8_t data; - __disable_irq(); - if(uart_rx_flag) - { - tmos_start_task(Peripheral_TaskID, UART_TO_BLE_SEND_EVT, 2); - uart_rx_flag = false; - } - __enable_irq(); - - - while(app_drv_fifo_length(&app_uart_tx_fifo)) - { - app_drv_fifo_read_to_same_addr(&app_uart_tx_fifo, (uint8_t *)&data, 1); - USART_SendData(USART3, data); - while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET) /* waiting for sending finish */ - { - } - } -} - -void app_uart_init() -{ - //tx fifo and tx fifo - //The buffer length should be a power of 2 - app_drv_fifo_init(&app_uart_tx_fifo, app_uart_tx_buffer, APP_UART_TX_BUFFER_LENGTH); - app_drv_fifo_init(&app_uart_rx_fifo, app_uart_rx_buffer, APP_UART_RX_BUFFER_LENGTH); - - GPIO_InitTypeDef GPIO_InitStructure = {0}; - USART_InitTypeDef USART_InitStructure = {0}; - NVIC_InitTypeDef NVIC_InitStructure = {0}; - - //uart3 init - RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); - - /* USART3 TX-->B.10 RX-->B.11 */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOB, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOB, &GPIO_InitStructure); - - USART_InitStructure.USART_BaudRate = 115200; - USART_InitStructure.USART_WordLength = USART_WordLength_8b; - USART_InitStructure.USART_StopBits = USART_StopBits_1; - USART_InitStructure.USART_Parity = USART_Parity_No; - USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; - USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; - - USART_Init(USART3, &USART_InitStructure); - USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); - - NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); - - USART_Cmd(USART3, ENABLE); -} - -void app_uart_tx_data(uint8_t *data, uint16_t length) -{ - uint16_t write_length = length; - app_drv_fifo_write(&app_uart_tx_fifo, data, &write_length); -} -// -//Not every uart reception will end with a UART_II_RECV_TOUT -//UART_II_RECV_TOUT can only be triggered when R8_UARTx_RFC is not 0 -//Here we cannot rely UART_II_RECV_TOUT as the end of a uart reception - -__attribute__((interrupt("WCH-Interrupt-fast"))) -void USART3_IRQHandler(void) -{ - uint16_t error; - uint8_t data; - if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) - { - data = USART_ReceiveData(USART3); - error = app_drv_fifo_write_from_same_addr(&app_uart_rx_fifo, (uint8_t *)&data, 1); - if(error != APP_DRV_FIFO_RESULT_SUCCESS) - { - PRINT("APP_DRV_FIFO_RESULT_NOT_MEM\r\n"); - } - uart_rx_flag = true; - } -} - -//ble uart service callback handler -void on_bleuartServiceEvt(uint16_t connection_handle, ble_uart_evt_t *p_evt) -{ - switch(p_evt->type) - { - case BLE_UART_EVT_TX_NOTI_DISABLED: - PRINT("%02x:bleuart_EVT_TX_NOTI_DISABLED\r\n", connection_handle); - break; - case BLE_UART_EVT_TX_NOTI_ENABLED: - PRINT("%02x:bleuart_EVT_TX_NOTI_ENABLED\r\n", connection_handle); - break; - case BLE_UART_EVT_BLE_DATA_RECIEVED: - PRINT("BLE RX DATA len:%d\r\n", p_evt->data.length); - - //for notify back test - //to ble - uint16_t to_write_length = p_evt->data.length; - app_drv_fifo_write(&app_uart_rx_fifo, (uint8_t *)p_evt->data.p_data, &to_write_length); - tmos_start_task(Peripheral_TaskID, UART_TO_BLE_SEND_EVT, 2); - //end of nofify back test - - //ble to uart - app_uart_tx_data((uint8_t *)p_evt->data.p_data, p_evt->data.length); - - break; - default: - break; - } -} +#include "app_uart.h" /********************************************************************* * MACROS @@ -216,6 +68,8 @@ void on_bleuartServiceEvt(uint16_t connection_handle, ble_uart_evt_t *p_evt) * GLOBAL VARIABLES */ +uint8_t Peripheral_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing + /********************************************************************* * EXTERNAL VARIABLES */ @@ -354,7 +208,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Set advertising interval { diff --git a/EVT/EXAM/BLE/BLE_UART/APP/peripheral_main.c b/EVT/EXAM/BLE/BLE_UART/APP/peripheral_main.c index 83aba64..166e8dd 100644 --- a/EVT/EXAM/BLE/BLE_UART/APP/peripheral_main.c +++ b/EVT/EXAM/BLE/BLE_UART/APP/peripheral_main.c @@ -16,6 +16,7 @@ #include "HAL.h" #include "gattprofile.h" #include "peripheral.h" +#include "app_uart.h" /********************************************************************* * GLOBAL TYPEDEFS @@ -26,8 +27,6 @@ __attribute__((aligned(4))) u32 MEM_BUF[BLE_MEMHEAP_SIZE / 4]; uint8_t const MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; #endif -extern void app_uart_process(void); -extern void app_uart_init(void); /********************************************************************* * @fn Main_Circulation @@ -56,6 +55,7 @@ void Main_Circulation(void) *******************************************************************************/ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index eb5f8a2..0000000 --- a/EVT/EXAM/BLE/BLE_USB/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//APP/ch32v20x_usbotg_device.c=UTF-8 diff --git a/EVT/EXAM/BLE/BLE_USB/APP/RingMem.c b/EVT/EXAM/BLE/BLE_USB/APP/RingMem.c index 841c88d..ce4a14c 100644 --- a/EVT/EXAM/BLE/BLE_USB/APP/RingMem.c +++ b/EVT/EXAM/BLE/BLE_USB/APP/RingMem.c @@ -1,6 +1,6 @@ /********************************** (C) COPYRIGHT ******************************* * File Name : RingMem.C - * Author : Hikari + * Author : WCH * Version : V1.4 * Date : 2019/12/20 * Description : diff --git a/EVT/EXAM/BLE/BLE_USB/APP/ch32v20x_it.c b/EVT/EXAM/BLE/BLE_USB/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/BLE_USB/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/BLE_USB/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/BLE_USB/APP/ch32v20x_usbotg_device.c b/EVT/EXAM/BLE/BLE_USB/APP/ch32v20x_usbotg_device.c index ef47952..a178923 100644 --- a/EVT/EXAM/BLE/BLE_USB/APP/ch32v20x_usbotg_device.c +++ b/EVT/EXAM/BLE/BLE_USB/APP/ch32v20x_usbotg_device.c @@ -909,7 +909,7 @@ void DevEP2_OUT_Deal(UINT8 l) { PRINT("RingMemBLE ERR \n"); } - tmos_start_task(Peripheral_TaskID, SBP_PROCESS_USBDATA_EVT, 32); + tmos_set_event(Peripheral_TaskID, SBP_PROCESS_USBDATA_EVT); } /********************************************************************* diff --git a/EVT/EXAM/BLE/BLE_USB/APP/include/RingMem.h b/EVT/EXAM/BLE/BLE_USB/APP/include/RingMem.h index d8e87eb..8175b1a 100644 --- a/EVT/EXAM/BLE/BLE_USB/APP/include/RingMem.h +++ b/EVT/EXAM/BLE/BLE_USB/APP/include/RingMem.h @@ -1,6 +1,6 @@ /********************************** (C) COPYRIGHT ******************************* * File Name : RingMem.h - * Author : Hikari + * Author : WCH * Version : V1.4 * Date : 2019/12/20 * Description : diff --git a/EVT/EXAM/BLE/BLE_USB/APP/peripheral.c b/EVT/EXAM/BLE/BLE_USB/APP/peripheral.c index ab79c81..a0618d9 100644 --- a/EVT/EXAM/BLE/BLE_USB/APP/peripheral.c +++ b/EVT/EXAM/BLE/BLE_USB/APP/peripheral.c @@ -159,7 +159,8 @@ int RingMem_Protection(uint8_t enable); static gapRolesCBs_t Peripheral_PeripheralCBs = { peripheralStateNotificationCB, // Profile State Change Callbacks peripheralRssiCB, // When a valid RSSI is read from controller (not used by application) - peripheralParamUpdateCB}; + peripheralParamUpdateCB +}; // Broadcast Callbacks static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { @@ -214,7 +215,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); { uint16_t advInt = DEFAULT_ADVERTISING_INTERVAL; diff --git a/EVT/EXAM/BLE/BLE_USB/APP/peripheral_main.c b/EVT/EXAM/BLE/BLE_USB/APP/peripheral_main.c index 7ae675d..a7db6b5 100644 --- a/EVT/EXAM/BLE/BLE_USB/APP/peripheral_main.c +++ b/EVT/EXAM/BLE/BLE_USB/APP/peripheral_main.c @@ -53,6 +53,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/BackupUpgrade_IAP/APP/ch32v20x_it.c b/EVT/EXAM/BLE/BackupUpgrade_IAP/APP/ch32v20x_it.c index d775c74..f16a877 100644 --- a/EVT/EXAM/BLE/BackupUpgrade_IAP/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/BackupUpgrade_IAP/APP/ch32v20x_it.c @@ -21,7 +21,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -59,15 +58,3 @@ void BB_IRQHandler(void) { PRINT("BB_IRQHandler\n"); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - PRINT("LLE_IRQHandler\n"); -} diff --git a/EVT/EXAM/BLE/BackupUpgrade_OTA/.cproject b/EVT/EXAM/BLE/BackupUpgrade_OTA/.cproject index ea1b4e0..4c68f80 100644 --- a/EVT/EXAM/BLE/BackupUpgrade_OTA/.cproject +++ b/EVT/EXAM/BLE/BackupUpgrade_OTA/.cproject @@ -159,5 +159,4 @@ - diff --git a/EVT/EXAM/BLE/BackupUpgrade_OTA/APP/ch32v20x_it.c b/EVT/EXAM/BLE/BackupUpgrade_OTA/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/BackupUpgrade_OTA/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/BackupUpgrade_OTA/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/BackupUpgrade_OTA/APP/peripheral_main.c b/EVT/EXAM/BLE/BackupUpgrade_OTA/APP/peripheral_main.c index e673ac5..bc928a7 100644 --- a/EVT/EXAM/BLE/BackupUpgrade_OTA/APP/peripheral_main.c +++ b/EVT/EXAM/BLE/BackupUpgrade_OTA/APP/peripheral_main.c @@ -88,6 +88,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.core.prefs b/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.core.prefs deleted file mode 100644 index fc01500..0000000 --- a/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.core.prefs +++ /dev/null @@ -1,164 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=18 -org.eclipse.cdt.core.formatter.alignment_for_assignment=18 -org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=16 -org.eclipse.cdt.core.formatter.alignment_for_binary_expression=18 -org.eclipse.cdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=35 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=16 -org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 -org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=51 -org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 -org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=18 -org.eclipse.cdt.core.formatter.alignment_for_member_access=0 -org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=18 -org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=18 -org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_block=next_line -org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line -org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line -org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line -org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line -org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line -org.eclipse.cdt.core.formatter.comment.line_up_line_comment_in_blocks_on_first_column=true -org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=4 -org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true -org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true -org.eclipse.cdt.core.formatter.compact_else_if=true -org.eclipse.cdt.core.formatter.continuation_indentation=2 -org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=true -org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0 -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=true -org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false -org.eclipse.cdt.core.formatter.indent_empty_lines=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.cdt.core.formatter.indentation.size=2 -org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert -org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert -org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.join_wrapped_lines=true -org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.cdt.core.formatter.lineSplit=120 -org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.cdt.core.formatter.tabulation.char=space -org.eclipse.cdt.core.formatter.tabulation.size=2 -org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false diff --git a/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 79313df..0000000 --- a/EVT/EXAM/BLE/Broadcaster/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -formatter_profile=_new -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/Broadcaster/APP/broadcaster_main.c b/EVT/EXAM/BLE/Broadcaster/APP/broadcaster_main.c index 69676d6..0f7513a 100644 --- a/EVT/EXAM/BLE/Broadcaster/APP/broadcaster_main.c +++ b/EVT/EXAM/BLE/Broadcaster/APP/broadcaster_main.c @@ -51,6 +51,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/Broadcaster/APP/ch32v20x_it.c b/EVT/EXAM/BLE/Broadcaster/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/Broadcaster/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/Broadcaster/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.core.prefs b/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.core.prefs deleted file mode 100644 index fc01500..0000000 --- a/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.core.prefs +++ /dev/null @@ -1,164 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=18 -org.eclipse.cdt.core.formatter.alignment_for_assignment=18 -org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=16 -org.eclipse.cdt.core.formatter.alignment_for_binary_expression=18 -org.eclipse.cdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=35 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=16 -org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 -org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=51 -org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 -org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=18 -org.eclipse.cdt.core.formatter.alignment_for_member_access=0 -org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=18 -org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=18 -org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_block=next_line -org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line -org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line -org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line -org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line -org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line -org.eclipse.cdt.core.formatter.comment.line_up_line_comment_in_blocks_on_first_column=true -org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=4 -org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true -org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true -org.eclipse.cdt.core.formatter.compact_else_if=true -org.eclipse.cdt.core.formatter.continuation_indentation=2 -org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=true -org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0 -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=true -org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false -org.eclipse.cdt.core.formatter.indent_empty_lines=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.cdt.core.formatter.indentation.size=2 -org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert -org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert -org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.join_wrapped_lines=true -org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.cdt.core.formatter.lineSplit=120 -org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.cdt.core.formatter.tabulation.char=space -org.eclipse.cdt.core.formatter.tabulation.size=2 -org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false diff --git a/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 79313df..0000000 --- a/EVT/EXAM/BLE/CentPeri/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -formatter_profile=_new -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/CentPeri/APP/central.c b/EVT/EXAM/BLE/CentPeri/APP/central.c index 1371ee0..0288402 100644 --- a/EVT/EXAM/BLE/CentPeri/APP/central.c +++ b/EVT/EXAM/BLE/CentPeri/APP/central.c @@ -649,6 +649,24 @@ static void centralEventCB(gapRoleEvent_t *pEvent) } break; + case GAP_EXT_ADV_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv ext adv \n"); + // Add device to list + centralAddDeviceInfo(pEvent->deviceExtAdvInfo.addr, pEvent->deviceExtAdvInfo.addrType); + } + break; + + case GAP_DIRECT_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv direct adv \n"); + // Add device to list + centralAddDeviceInfo(pEvent->deviceDirectInfo.addr, pEvent->deviceDirectInfo.addrType); + } + break; + default: break; } @@ -716,7 +734,7 @@ static void centralPasscodeCB(uint8_t *deviceAddr, uint16_t connectionHandle, // Display passcode to user if(uiOutputs != 0) { - PRINT("Passcode:%d\n", (int)passcode); + PRINT("Passcode:%06d\n", (int)passcode); } // Send passcode response GAPBondMgr_PasscodeRsp(connectionHandle, SUCCESS, passcode); diff --git a/EVT/EXAM/BLE/CentPeri/APP/ch32v20x_it.c b/EVT/EXAM/BLE/CentPeri/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/CentPeri/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/CentPeri/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/CentPeri/APP/peripheral.c b/EVT/EXAM/BLE/CentPeri/APP/peripheral.c index 13ea6f7..32e75bd 100644 --- a/EVT/EXAM/BLE/CentPeri/APP/peripheral.c +++ b/EVT/EXAM/BLE/CentPeri/APP/peripheral.c @@ -166,7 +166,8 @@ static gapRolesCBs_t Peripheral_PeripheralCBs = { // GAP Bond Manager Callbacks static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) - NULL // Pairing / Bonding state Callback (not used by application) + NULL, // Pairing / Bonding state Callback (not used by application) + NULL // oob callback }; // Simple GATT Profile Callbacks @@ -210,7 +211,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Set advertising interval { diff --git a/EVT/EXAM/BLE/CentPeri/Profile/gattprofile.c b/EVT/EXAM/BLE/CentPeri/Profile/gattprofile.c index 8402805..43655be 100644 --- a/EVT/EXAM/BLE/CentPeri/Profile/gattprofile.c +++ b/EVT/EXAM/BLE/CentPeri/Profile/gattprofile.c @@ -3,7 +3,9 @@ * Author : WCH * Version : V1.0 * Date : 2018/12/10 - * Description : 自定义包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读 + * Description : Customize services with five different attributes, + * including readable, writable, notification, readable and writable, + * and safe readable ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for diff --git a/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.core.prefs b/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.core.prefs deleted file mode 100644 index fc01500..0000000 --- a/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.core.prefs +++ /dev/null @@ -1,164 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=18 -org.eclipse.cdt.core.formatter.alignment_for_assignment=18 -org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=16 -org.eclipse.cdt.core.formatter.alignment_for_binary_expression=18 -org.eclipse.cdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=35 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=16 -org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 -org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=51 -org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 -org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=18 -org.eclipse.cdt.core.formatter.alignment_for_member_access=0 -org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=18 -org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=18 -org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_block=next_line -org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line -org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line -org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line -org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line -org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line -org.eclipse.cdt.core.formatter.comment.line_up_line_comment_in_blocks_on_first_column=true -org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=4 -org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true -org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true -org.eclipse.cdt.core.formatter.compact_else_if=true -org.eclipse.cdt.core.formatter.continuation_indentation=2 -org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=true -org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0 -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=true -org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false -org.eclipse.cdt.core.formatter.indent_empty_lines=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.cdt.core.formatter.indentation.size=2 -org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert -org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert -org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.join_wrapped_lines=true -org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.cdt.core.formatter.lineSplit=120 -org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.cdt.core.formatter.tabulation.char=space -org.eclipse.cdt.core.formatter.tabulation.size=2 -org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false diff --git a/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 79313df..0000000 --- a/EVT/EXAM/BLE/Central/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -formatter_profile=_new -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/Central/APP/central.c b/EVT/EXAM/BLE/Central/APP/central.c index 7f4cadf..3f397f3 100644 --- a/EVT/EXAM/BLE/Central/APP/central.c +++ b/EVT/EXAM/BLE/Central/APP/central.c @@ -42,7 +42,7 @@ #define DEFAULT_MIN_CONNECTION_INTERVAL 20 // Connection max interval in 1.25ms -#define DEFAULT_MAX_CONNECTION_INTERVAL 100 +#define DEFAULT_MAX_CONNECTION_INTERVAL 60 // Connection supervision timeout in 10ms #define DEFAULT_CONNECTION_TIMEOUT 100 @@ -93,7 +93,7 @@ #define DEFAULT_IO_CAPABILITIES GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT // Default service discovery timer delay in 0.625ms -#define DEFAULT_SVC_DISCOVERY_DELAY 1600 +#define DEFAULT_SVC_DISCOVERY_DELAY 1800 // Default parameter update delay in 0.625ms #define DEFAULT_PARAM_UPDATE_DELAY 3200 @@ -638,6 +638,13 @@ static void centralEventCB(gapRoleEvent_t *pEvent) centralState = BLE_STATE_CONNECTED; centralConnHandle = pEvent->linkCmpl.connectionHandle; centralProcedureInProgress = TRUE; + + // Update MTU + attExchangeMTUReq_t req = { + .clientRxMTU = BLE_BUFF_MAX_LEN - 4, + }; + + GATT_ExchangeMTU(centralConnHandle, &req, centralTaskId); // Initiate service discovery tmos_start_task(centralTaskId, START_SVC_DISCOVERY_EVT, DEFAULT_SVC_DISCOVERY_DELAY); @@ -786,7 +793,7 @@ static void centralPasscodeCB(uint8_t *deviceAddr, uint16_t connectionHandle, // Display passcode to user if(uiOutputs != 0) { - PRINT("Passcode:%d\n", (int)passcode); + PRINT("Passcode:%06d\n", (int)passcode); } // Send passcode response GAPBondMgr_PasscodeRsp(connectionHandle, SUCCESS, passcode); diff --git a/EVT/EXAM/BLE/Central/APP/ch32v20x_it.c b/EVT/EXAM/BLE/Central/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/Central/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/Central/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/CyclingSensor/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/CyclingSensor/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/CyclingSensor/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/CyclingSensor/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/CyclingSensor/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/CyclingSensor/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/CyclingSensor/APP/ch32v20x_it.c b/EVT/EXAM/BLE/CyclingSensor/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/CyclingSensor/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/CyclingSensor/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/CyclingSensor/APP/cyclingsensor.c b/EVT/EXAM/BLE/CyclingSensor/APP/cyclingsensor.c index 82fd596..9c1e85c 100644 --- a/EVT/EXAM/BLE/CyclingSensor/APP/cyclingsensor.c +++ b/EVT/EXAM/BLE/CyclingSensor/APP/cyclingsensor.c @@ -59,7 +59,7 @@ #define DEFAULT_DESIRED_CONN_TIMEOUT 1000 // Sensor sends a slave security request. -#define DEFAULT_PAIRING_PARAMETER GAPBOND_PAIRING_MODE_INITIATE +#define DEFAULT_PAIRING_PARAMETER GAPBOND_PAIRING_MODE_WAIT_FOR_REQ // Bonded devices' addresses are stored in white list. #define USING_WHITE_LIST FALSE @@ -203,7 +203,8 @@ static gapRolesCBs_t cyclingPeripheralCB = { // Bond Manager Callbacks static gapBondCBs_t cyclingBondCB = { NULL, // Passcode callback - NULL // Pairing state callback + NULL, // Pairing state callback + NULL // oob callback }; /********************************************************************* @@ -239,7 +240,7 @@ void CyclingSensor_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Setup the GAP Bond Manager { diff --git a/EVT/EXAM/BLE/CyclingSensor/APP/cyclingsensor_main.c b/EVT/EXAM/BLE/CyclingSensor/APP/cyclingsensor_main.c index 730c278..8ee660f 100644 --- a/EVT/EXAM/BLE/CyclingSensor/APP/cyclingsensor_main.c +++ b/EVT/EXAM/BLE/CyclingSensor/APP/cyclingsensor_main.c @@ -52,6 +52,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/CyclingSensor/Profile/cyclingservice.c b/EVT/EXAM/BLE/CyclingSensor/Profile/cyclingservice.c index 96963db..4efc5d0 100644 --- a/EVT/EXAM/BLE/CyclingSensor/Profile/cyclingservice.c +++ b/EVT/EXAM/BLE/CyclingSensor/Profile/cyclingservice.c @@ -70,8 +70,6 @@ const uint8_t cyclingCommandUUID[ATT_BT_UUID_SIZE] = { * EXTERNAL FUNCTIONS */ -uint16_t CyclingService_ProcessEvent(uint8_t task_id, uint16_t events); - /********************************************************************* * LOCAL VARIABLES */ diff --git a/EVT/EXAM/BLE/Direct_Test_Mode/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/Direct_Test_Mode/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/Direct_Test_Mode/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/Direct_Test_Mode/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/Direct_Test_Mode/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/Direct_Test_Mode/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/Direct_Test_Mode/APP/ch32v20x_it.c b/EVT/EXAM/BLE/Direct_Test_Mode/APP/ch32v20x_it.c index 0c0d90b..463960b 100644 --- a/EVT/EXAM/BLE/Direct_Test_Mode/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/Direct_Test_Mode/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -61,14 +60,3 @@ void BB_IRQHandler(void) BB_IRQLibHandler(); } -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/Direct_Test_Mode/APP/main.c b/EVT/EXAM/BLE/Direct_Test_Mode/APP/main.c index d882d62..025a520 100644 --- a/EVT/EXAM/BLE/Direct_Test_Mode/APP/main.c +++ b/EVT/EXAM/BLE/Direct_Test_Mode/APP/main.c @@ -52,6 +52,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/HAL/MCU.c b/EVT/EXAM/BLE/HAL/MCU.c index 4ae5ea3..6df834b 100644 --- a/EVT/EXAM/BLE/HAL/MCU.c +++ b/EVT/EXAM/BLE/HAL/MCU.c @@ -16,6 +16,7 @@ #include "string.h" tmosTaskID halTaskID; +uint32_t g_LLE_IRQLibHandlerLocation; /******************************************************************************* * @fn Lib_Calibration_LSI @@ -84,6 +85,9 @@ void WCHBLE_Init(void) { uint8_t i; bleConfig_t cfg; + + g_LLE_IRQLibHandlerLocation = (uint32_t)LLE_IRQLibHandler; + if(!tmos_memcmp(VER_LIB, VER_FILE, strlen(VER_FILE))) { PRINT("head file error...\n"); @@ -258,7 +262,8 @@ void HAL_Init() */ uint16_t HAL_GetInterTempValue(void) { - uint32_t rcc_apb2pcenr, rcc_cfgr0, adc1_ctrl1, adc1_ctrl2, adc1_rsqr1, adc1_rsqr3, adc1_samptr1; + uint32_t rcc_apb2pcenr, rcc_cfgr0, adc1_ctrl1, adc1_ctrl2, adc1_rsqr1, adc1_rsqr2, adc1_rsqr3, adc1_samptr1, adc1_samptr2; + uint32_t adc1_iofr1, adc1_iofr2, adc1_iofr3, adc1_iofr4, adc1_wdhtr, adc1_wdltr, adc1_isqr; ADC_InitTypeDef ADC_InitStructure = {0}; uint16_t adc_data; @@ -267,8 +272,17 @@ uint16_t HAL_GetInterTempValue(void) adc1_ctrl1 = ADC1->CTLR1; adc1_ctrl2 = ADC1->CTLR2; adc1_rsqr1 = ADC1->RSQR1; + adc1_rsqr2 = ADC1->RSQR2; adc1_rsqr3 = ADC1->RSQR3; adc1_samptr1 = ADC1->SAMPTR1; + adc1_samptr2 = ADC1->SAMPTR2; + adc1_iofr1 = ADC1->IOFR1; + adc1_iofr2 = ADC1->IOFR2; + adc1_iofr3 = ADC1->IOFR3; + adc1_iofr4 = ADC1->IOFR4; + adc1_wdhtr = ADC1->WDHTR; + adc1_wdltr = ADC1->WDLTR; + adc1_isqr = ADC1->ISQR; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div8); @@ -295,8 +309,17 @@ uint16_t HAL_GetInterTempValue(void) ADC1->CTLR1 = adc1_ctrl1; ADC1->CTLR2 = adc1_ctrl2; ADC1->RSQR1 = adc1_rsqr1; + ADC1->RSQR2 = adc1_rsqr2; ADC1->RSQR3 = adc1_rsqr3; ADC1->SAMPTR1 = adc1_samptr1; + ADC1->SAMPTR2 = adc1_samptr2; + ADC1->IOFR1 = adc1_iofr1; + ADC1->IOFR2 = adc1_iofr2; + ADC1->IOFR3 = adc1_iofr3; + ADC1->IOFR4 = adc1_iofr4; + ADC1->WDHTR = adc1_wdhtr; + ADC1->WDLTR = adc1_wdltr; + ADC1->ISQR = adc1_isqr; return (adc_data); } diff --git a/EVT/EXAM/BLE/HAL/RTC.c b/EVT/EXAM/BLE/HAL/RTC.c index f292409..d069251 100644 --- a/EVT/EXAM/BLE/HAL/RTC.c +++ b/EVT/EXAM/BLE/HAL/RTC.c @@ -43,7 +43,6 @@ void RTC_SetTignTime(uint32_t time) RTCTigFlag = 0; } - /******************************************************************************* * @fn HAL_Time0Init * @@ -56,6 +55,9 @@ void RTC_SetTignTime(uint32_t time) void HAL_TimeInit(void) { uint16_t temp=0; + uint8_t state=0; + bleClockConfig_t conf; + RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP, ENABLE); PWR_BackupAccessCmd(ENABLE); #if( CLK_OSC32K ) @@ -87,13 +89,21 @@ void HAL_TimeInit(void) #if( CLK_OSC32K ) Lib_Calibration_LSI(); #endif - TMOS_TimerInit( RTC_GetCounter ); + conf.ClockAccuracy = CLK_OSC32K?1000:100; + conf.ClockFrequency = CAB_LSIFQ/2; + conf.ClockMaxCount = 0xFFFFFFFF; + conf.getClockValue = RTC_GetCounter; + state = TMOS_TimerInit( &conf ); + if(state) + { + PRINT("TMOS_TimerInit err %x\n",state); + } } + __attribute__((interrupt("WCH-Interrupt-fast"))) void RTCAlarm_IRQHandler(void) { - TMOS_TimerIRQHandler(); RTCTigFlag = 1; EXTI_ClearITPendingBit(EXTI_Line17); RTC_ClearITPendingBit(RTC_IT_ALR); diff --git a/EVT/EXAM/BLE/HAL/SLEEP.c b/EVT/EXAM/BLE/HAL/SLEEP.c index 7e7f2c1..c275e1f 100644 --- a/EVT/EXAM/BLE/HAL/SLEEP.c +++ b/EVT/EXAM/BLE/HAL/SLEEP.c @@ -6,7 +6,7 @@ * Description : Sleep configuration and its initialization ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. - * Attention: This software (modified or not) and binary are used for + * Attention: This software (modified or not) and binary are used for * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ @@ -14,12 +14,12 @@ /* Header file contains */ #include "HAL.h" -#define US_TO_TICK(us) (uint32_t)((us)/(1000000/((CAB_LSIFQ/2)))) +#define US_TO_TICK(us) (uint32_t)((us) / (1000000 / ((CAB_LSIFQ / 2)))) -#define SLEEP_PERIOD_MIN_US 200 -#define SLEEP_PERIOD_MAX_TICK 0xFFD2393F -#define SLEEP_PERIOD_MIN_TICK US_TO_TICK(SLEEP_PERIOD_MIN_US) -#define HESREADY_TICK US_TO_TICK(WAKE_UP_MAX_TIME_US) +#define SLEEP_PERIOD_MIN_US 200 +#define SLEEP_PERIOD_MAX_TICK 0xFFD2393F +#define SLEEP_PERIOD_MIN_TICK US_TO_TICK(SLEEP_PERIOD_MIN_US) +#define HESREADY_TICK US_TO_TICK(WAKE_UP_MAX_TIME_US) /******************************************************************************* * @fn BLE_LowPower @@ -43,8 +43,8 @@ uint32_t BLE_LowPower(uint32_t time) current_time = RTC_GetCounter(); sleep_period = wake_time - current_time; - if((sleep_period < SLEEP_PERIOD_MIN_TICK) - || (sleep_period > SLEEP_PERIOD_MAX_TICK)) { + if((sleep_period < SLEEP_PERIOD_MIN_TICK) || (sleep_period > SLEEP_PERIOD_MAX_TICK)) + { __enable_irq(); return 2; } @@ -52,18 +52,21 @@ uint32_t BLE_LowPower(uint32_t time) RTC_SetTignTime(wake_time); __enable_irq(); - #if(DEBUG == DEBUG_UART1) // To use other serial ports to output printing information, you need to modify this line of code +#if(DEBUG == DEBUG_UART1) // To use other serial ports to output printing information, you need to modify this line of code while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) { __NOP(); } - #endif +#endif // LOW POWER-sleep - if(!RTCTigFlag) { + if(!RTCTigFlag) + { PWR_EnterSTOPMode_RAM_LV(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); SystemInit(); - } else { - return 3; + } + else + { + return 3; } #endif diff --git a/EVT/EXAM/BLE/HID_Consumer/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/HID_Consumer/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/HID_Consumer/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/HID_Consumer/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/HID_Consumer/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/HID_Consumer/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/HID_Consumer/APP/ch32v20x_it.c b/EVT/EXAM/BLE/HID_Consumer/APP/ch32v20x_it.c index 0c0d90b..463960b 100644 --- a/EVT/EXAM/BLE/HID_Consumer/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/HID_Consumer/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -61,14 +60,3 @@ void BB_IRQHandler(void) BB_IRQLibHandler(); } -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/HID_Consumer/APP/hidconsumer.c b/EVT/EXAM/BLE/HID_Consumer/APP/hidconsumer.c index 7eaaec2..a82cb3b 100644 --- a/EVT/EXAM/BLE/HID_Consumer/APP/hidconsumer.c +++ b/EVT/EXAM/BLE/HID_Consumer/APP/hidconsumer.c @@ -57,7 +57,7 @@ #define DEFAULT_PASSCODE 0 // Default GAP pairing mode -#define DEFAULT_PAIRING_MODE GAPBOND_PAIRING_MODE_INITIATE +#define DEFAULT_PAIRING_MODE GAPBOND_PAIRING_MODE_WAIT_FOR_REQ // Default MITM mode (TRUE to require passcode or OOB when pairing) #define DEFAULT_MITM_MODE FALSE @@ -216,7 +216,8 @@ void HidEmu_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, (void *)attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), (void *)attDeviceName); + // Setup the GAP Bond Manager { uint32_t passkey = DEFAULT_PASSCODE; @@ -399,7 +400,6 @@ static void hidEmuStateCB(gapRole_States_t newState, gapRoleEvent_t *pEvent) hidEmuConnHandle = event->connectionHandle; tmos_start_task(hidEmuTaskId, START_PARAM_UPDATE_EVT, START_PARAM_UPDATE_EVT_DELAY); PRINT("Connected..\n"); - tmos_start_task(hidEmuTaskId, START_REPORT_EVT, 5500); } break; @@ -472,7 +472,6 @@ static uint8_t hidEmuRptCB(uint8_t id, uint8_t type, uint16_t uuid, // notifications enabled else if(oper == HID_DEV_OPER_ENABLE) { - PRINT("HID_DEV_OPER_ENABLE\n"); tmos_start_task(hidEmuTaskId, START_REPORT_EVT, 500); } return status; diff --git a/EVT/EXAM/BLE/HID_Consumer/APP/hidconsumer_main.c b/EVT/EXAM/BLE/HID_Consumer/APP/hidconsumer_main.c index f19df5d..e82ab53 100644 --- a/EVT/EXAM/BLE/HID_Consumer/APP/hidconsumer_main.c +++ b/EVT/EXAM/BLE/HID_Consumer/APP/hidconsumer_main.c @@ -52,6 +52,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/HID_Consumer/Profile/hidconsumerservice.c b/EVT/EXAM/BLE/HID_Consumer/Profile/hidconsumerservice.c index 2956e1f..c16c50f 100644 --- a/EVT/EXAM/BLE/HID_Consumer/Profile/hidconsumerservice.c +++ b/EVT/EXAM/BLE/HID_Consumer/Profile/hidconsumerservice.c @@ -85,9 +85,9 @@ static const uint8_t hidReportMap[] = { // 0xA1,0x01, // 0x85,0x01, // 0x15,0x00, -// 0x26,0xff,0x1f, +// 0x26,0x3C,0x03, // 0x19,0x00, -// 0x2A,0xff,0x1f, +// 0x2A,0x3C,0x03, // 0x75,0x10, // 0x95,0x01, // 0x81,0x00, @@ -99,8 +99,6 @@ static const uint8_t hidReportMap[] = { 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x01, // REPORT_ID (1) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x08, // REPORT_SIZE (8) diff --git a/EVT/EXAM/BLE/HID_Consumer/Profile/hiddev.c b/EVT/EXAM/BLE/HID_Consumer/Profile/hiddev.c index a871e9c..51ace77 100644 --- a/EVT/EXAM/BLE/HID_Consumer/Profile/hiddev.c +++ b/EVT/EXAM/BLE/HID_Consumer/Profile/hiddev.c @@ -137,7 +137,8 @@ static gapRolesCBs_t hidDev_PeripheralCBs = { // Bond Manager Callbacks static gapBondCBs_t hidDevBondCB = { hidDevPasscodeCB, - hidDevPairStateCB + hidDevPairStateCB, + NULL // oob callback }; /********************************************************************* diff --git a/EVT/EXAM/BLE/HID_Keyboard/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/HID_Keyboard/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/HID_Keyboard/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/HID_Keyboard/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/HID_Keyboard/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/HID_Keyboard/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/HID_Keyboard/APP/ch32v20x_it.c b/EVT/EXAM/BLE/HID_Keyboard/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/HID_Keyboard/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/HID_Keyboard/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/HID_Keyboard/APP/hidkbd.c b/EVT/EXAM/BLE/HID_Keyboard/APP/hidkbd.c index a30e02a..fa1c3de 100644 --- a/EVT/EXAM/BLE/HID_Keyboard/APP/hidkbd.c +++ b/EVT/EXAM/BLE/HID_Keyboard/APP/hidkbd.c @@ -214,7 +214,7 @@ void HidEmu_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, (void *)attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), (void *)attDeviceName); // Setup the GAP Bond Manager { diff --git a/EVT/EXAM/BLE/HID_Keyboard/APP/hidkbd_main.c b/EVT/EXAM/BLE/HID_Keyboard/APP/hidkbd_main.c index 503ca72..4d3d067 100644 --- a/EVT/EXAM/BLE/HID_Keyboard/APP/hidkbd_main.c +++ b/EVT/EXAM/BLE/HID_Keyboard/APP/hidkbd_main.c @@ -52,6 +52,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/HID_Keyboard/Profile/hiddev.c b/EVT/EXAM/BLE/HID_Keyboard/Profile/hiddev.c index 8de3b56..5873b24 100644 --- a/EVT/EXAM/BLE/HID_Keyboard/Profile/hiddev.c +++ b/EVT/EXAM/BLE/HID_Keyboard/Profile/hiddev.c @@ -137,7 +137,8 @@ static gapRolesCBs_t hidDev_PeripheralCBs = { // Bond Manager Callbacks static gapBondCBs_t hidDevBondCB = { hidDevPasscodeCB, - hidDevPairStateCB + hidDevPairStateCB, + NULL // oob callback }; /********************************************************************* diff --git a/EVT/EXAM/BLE/HID_Mouse/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/HID_Mouse/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/HID_Mouse/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/HID_Mouse/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/HID_Mouse/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/HID_Mouse/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/HID_Mouse/APP/ch32v20x_it.c b/EVT/EXAM/BLE/HID_Mouse/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/HID_Mouse/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/HID_Mouse/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/HID_Mouse/APP/hidmouse.c b/EVT/EXAM/BLE/HID_Mouse/APP/hidmouse.c index d628d7c..8979612 100644 --- a/EVT/EXAM/BLE/HID_Mouse/APP/hidmouse.c +++ b/EVT/EXAM/BLE/HID_Mouse/APP/hidmouse.c @@ -213,7 +213,7 @@ void HidEmu_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, (void *)attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), (void *)attDeviceName); // Setup the GAP Bond Manager { diff --git a/EVT/EXAM/BLE/HID_Mouse/APP/hidmouse_main.c b/EVT/EXAM/BLE/HID_Mouse/APP/hidmouse_main.c index 3b3e1dc..6c03d3d 100644 --- a/EVT/EXAM/BLE/HID_Mouse/APP/hidmouse_main.c +++ b/EVT/EXAM/BLE/HID_Mouse/APP/hidmouse_main.c @@ -52,6 +52,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/HID_Mouse/Profile/hiddev.c b/EVT/EXAM/BLE/HID_Mouse/Profile/hiddev.c index 8ab16c9..f61dd1f 100644 --- a/EVT/EXAM/BLE/HID_Mouse/Profile/hiddev.c +++ b/EVT/EXAM/BLE/HID_Mouse/Profile/hiddev.c @@ -137,7 +137,8 @@ static gapRolesCBs_t hidDev_PeripheralCBs = { // Bond Manager Callbacks static gapBondCBs_t hidDevBondCB = { hidDevPasscodeCB, - hidDevPairStateCB + hidDevPairStateCB, + NULL // oob callback }; /********************************************************************* diff --git a/EVT/EXAM/BLE/HID_Touch/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/HID_Touch/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/HID_Touch/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/HID_Touch/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/HID_Touch/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/HID_Touch/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/HID_Touch/APP/ch32v20x_it.c b/EVT/EXAM/BLE/HID_Touch/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/HID_Touch/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/HID_Touch/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/HID_Touch/APP/hidtouch.c b/EVT/EXAM/BLE/HID_Touch/APP/hidtouch.c index 46cda4d..d280592 100644 --- a/EVT/EXAM/BLE/HID_Touch/APP/hidtouch.c +++ b/EVT/EXAM/BLE/HID_Touch/APP/hidtouch.c @@ -209,7 +209,7 @@ void HidEmu_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, (void *)attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), (void *)attDeviceName); // Setup the GAP Bond Manager { diff --git a/EVT/EXAM/BLE/HID_Touch/APP/hidtouch_main.c b/EVT/EXAM/BLE/HID_Touch/APP/hidtouch_main.c index 5c894f6..e83aee6 100644 --- a/EVT/EXAM/BLE/HID_Touch/APP/hidtouch_main.c +++ b/EVT/EXAM/BLE/HID_Touch/APP/hidtouch_main.c @@ -52,6 +52,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/HID_Touch/Profile/hiddev.c b/EVT/EXAM/BLE/HID_Touch/Profile/hiddev.c index 9e1387d..2b1acc2 100644 --- a/EVT/EXAM/BLE/HID_Touch/Profile/hiddev.c +++ b/EVT/EXAM/BLE/HID_Touch/Profile/hiddev.c @@ -137,7 +137,8 @@ static gapRolesCBs_t hidDev_PeripheralCBs = { // Bond Manager Callbacks static gapBondCBs_t hidDevBondCB = { hidDevPasscodeCB, - hidDevPairStateCB + hidDevPairStateCB, + NULL // oob callback }; /********************************************************************* diff --git a/EVT/EXAM/BLE/HeartRate/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/HeartRate/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/HeartRate/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/HeartRate/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/HeartRate/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/HeartRate/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/HeartRate/APP/ch32v20x_it.c b/EVT/EXAM/BLE/HeartRate/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/HeartRate/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/HeartRate/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/HeartRate/APP/heartrate.c b/EVT/EXAM/BLE/HeartRate/APP/heartrate.c index b863a5f..255cd30 100644 --- a/EVT/EXAM/BLE/HeartRate/APP/heartrate.c +++ b/EVT/EXAM/BLE/HeartRate/APP/heartrate.c @@ -186,7 +186,8 @@ static gapRolesCBs_t heartRatePeripheralCB = { // Bond Manager Callbacks static gapBondCBs_t heartRateBondCB = { NULL, // Passcode callback - NULL // Pairing state callback + NULL, // Pairing state callback + NULL // oob callback }; /********************************************************************* @@ -221,7 +222,7 @@ void HeartRate_Init() GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData); } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Setup the GAP Bond Manager { diff --git a/EVT/EXAM/BLE/HeartRate/APP/heartrate_main.c b/EVT/EXAM/BLE/HeartRate/APP/heartrate_main.c index e0fbfdf..bb3a083 100644 --- a/EVT/EXAM/BLE/HeartRate/APP/heartrate_main.c +++ b/EVT/EXAM/BLE/HeartRate/APP/heartrate_main.c @@ -52,6 +52,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/LIB/ble_task_scheduler.S b/EVT/EXAM/BLE/LIB/ble_task_scheduler.S new file mode 100644 index 0000000..be4e2e2 --- /dev/null +++ b/EVT/EXAM/BLE/LIB/ble_task_scheduler.S @@ -0,0 +1,127 @@ +.global Ecall_M_Mode_Handler +.global Ecall_U_Mode_Handler +.global LLE_IRQHandler + +.extern g_LLE_IRQLibHandlerLocation + +.section .highcode,"ax",@progbits +.align 2 +.func +Ecall_M_Mode_Handler: +Ecall_U_Mode_Handler: + + addi a1, x0, 0x20 + csrs 0x804, a1 + + lw a1, 0 * 4( sp ) + csrw mepc, a1 + + lw x1, 1 * 4( sp ) + lw x4, 2 * 4( sp ) + lw x5, 3 * 4( sp ) + lw x6, 4 * 4( sp ) + lw x7, 5 * 4( sp ) + lw x8, 6 * 4( sp ) + lw x9, 7 * 4( sp ) + lw x10, 8 * 4( sp ) + lw x11, 9 * 4( sp ) + lw x12, 10 * 4( sp ) + lw x13, 11 * 4( sp ) + lw x14, 12 * 4( sp ) + lw x15, 13 * 4( sp ) + lw x16, 14 * 4( sp ) + lw x17, 15 * 4( sp ) + lw x18, 16 * 4( sp ) + lw x19, 17 * 4( sp ) + lw x20, 18 * 4( sp ) + lw x21, 19 * 4( sp ) + lw x22, 20 * 4( sp ) + lw x23, 21 * 4( sp ) + lw x24, 22 * 4( sp ) + lw x25, 23 * 4( sp ) + lw x26, 24 * 4( sp ) + lw x27, 25 * 4( sp ) + lw x28, 26 * 4( sp ) + lw x29, 27 * 4( sp ) + lw x30, 28 * 4( sp ) + lw x31, 29 * 4( sp ) + + addi sp, sp, 32*4 + + mret + .endfunc + +.section .highcode.LLE_IRQHandler,"ax",@progbits +.align 2 +.func +LLE_IRQHandler: + addi sp, sp, -32*4 + + sw x1, 1 * 4( sp ) + sw x4, 2 * 4( sp ) + sw x5, 3 * 4( sp ) + sw x6, 4 * 4( sp ) + sw x7, 5 * 4( sp ) + sw x8, 6 * 4( sp ) + sw x9, 7 * 4( sp ) + sw x10, 8 * 4( sp ) + sw x11, 9 * 4( sp ) + sw x12, 10 * 4( sp ) + sw x13, 11 * 4( sp ) + sw x14, 12 * 4( sp ) + sw x15, 13 * 4( sp ) + sw x16, 14 * 4( sp ) + sw x17, 15 * 4( sp ) + sw x18, 16 * 4( sp ) + sw x19, 17 * 4( sp ) + sw x20, 18 * 4( sp ) + sw x21, 19 * 4( sp ) + sw x22, 20 * 4( sp ) + sw x23, 21 * 4( sp ) + sw x24, 22 * 4( sp ) + sw x25, 23 * 4( sp ) + sw x26, 24 * 4( sp ) + sw x27, 25 * 4( sp ) + sw x28, 26 * 4( sp ) + sw x29, 27 * 4( sp ) + sw x30, 28 * 4( sp ) + sw x31, 29 * 4( sp ) + + la a1, g_LLE_IRQLibHandlerLocation + lw a0, 0(a1) + jalr x1, 0(a0) + + lw x1, 1 * 4( sp ) + lw x4, 2 * 4( sp ) + lw x5, 3 * 4( sp ) + lw x6, 4 * 4( sp ) + lw x7, 5 * 4( sp ) + lw x8, 6 * 4( sp ) + lw x9, 7 * 4( sp ) + lw x10, 8 * 4( sp ) + lw x11, 9 * 4( sp ) + lw x12, 10 * 4( sp ) + lw x13, 11 * 4( sp ) + lw x14, 12 * 4( sp ) + lw x15, 13 * 4( sp ) + lw x16, 14 * 4( sp ) + lw x17, 15 * 4( sp ) + lw x18, 16 * 4( sp ) + lw x19, 17 * 4( sp ) + lw x20, 18 * 4( sp ) + lw x21, 19 * 4( sp ) + lw x22, 20 * 4( sp ) + lw x23, 21 * 4( sp ) + lw x24, 22 * 4( sp ) + lw x25, 23 * 4( sp ) + lw x26, 24 * 4( sp ) + lw x27, 25 * 4( sp ) + lw x28, 26 * 4( sp ) + lw x29, 27 * 4( sp ) + lw x30, 28 * 4( sp ) + lw x31, 29 * 4( sp ) + + addi sp, sp, 32*4 + + mret + .endfunc diff --git a/EVT/EXAM/BLE/LIB/libwchble.a b/EVT/EXAM/BLE/LIB/libwchble.a index 3474d48..00ce155 100644 Binary files a/EVT/EXAM/BLE/LIB/libwchble.a and b/EVT/EXAM/BLE/LIB/libwchble.a differ diff --git a/EVT/EXAM/BLE/LIB/wchble.h b/EVT/EXAM/BLE/LIB/wchble.h index 5e2c673..2dd0121 100644 --- a/EVT/EXAM/BLE/LIB/wchble.h +++ b/EVT/EXAM/BLE/LIB/wchble.h @@ -1,12 +1,15 @@ 锘�/********************************** (C) COPYRIGHT ****************************** * File Name : wchble.h * Author : WCH - * Version : V1.20 - * Date : 2022/11/09 + * Version : V1.30 + * Date : 2023/07/01 * Description : head file * Copyright (c) 2022 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ + /******************************************************************************/ #ifndef __WCHBLE_H #define __WCHBLE_H @@ -105,6 +108,16 @@ typedef struct tag_ble_config pfnFlashWriteCB writeFlashCB; // Register a program that write flash } bleConfig_t; // Library initialization call BLE_LibInit function +/* BLE pa control config struct */ +typedef struct tag_ble_clock_config +{ + pfnGetSysClock getClockValue; + uint32_t ClockMaxCount; // The maximum count value + uint16_t ClockFrequency; // The timing clock frequency(Hz) + uint16_t ClockAccuracy; // The timing clock accuracy(ppm) + uint8_t irqEnable; // resv +}bleClockConfig_t; + /* BLE pa control config struct */ typedef struct tag_ble_pa_control_config { @@ -130,7 +143,7 @@ typedef struct /********************************************************************* * GLOBAL MACROS */ -#define VER_FILE "CH32V20x_BLE_LIB_V1.2" +#define VER_FILE "CH32V20x_BLE_LIB_V1.3" extern const uint8_t VER_LIB[]; // LIB version #define SYSTEM_TIME_MICROSEN 625 // unit of process event timer is 625us #define MS1_TO_SYSTEM_TIME(x) ((x)*1000/SYSTEM_TIME_MICROSEN) // transform unit in ms to unit in 625us ( attentional bias ) @@ -172,7 +185,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define ABS(n) (((n) < 0) ? -(n) : (n)) #endif -/* TxPower define(Accuracy:卤2dBm) */ +/* Tx_POWER define(Accuracy:鍗�2dBm) */ #define LL_TX_POWEER_MINUS_18_DBM 0x01 #define LL_TX_POWEER_MINUS_10_DBM 0x03 #define LL_TX_POWEER_MINUS_5_DBM 0x05 @@ -289,6 +302,9 @@ extern const uint8_t VER_LIB[]; // LIB version #define PERI_CONN_PARAM_UUID 0x2A04 // Peripheral Preferred Connection Parameters #define SERVICE_CHANGED_UUID 0x2A05 // Service Changed #define CENTRAL_ADDRESS_RESOLUTION_UUID 0x2AA6 // Central Address Resolution +#define RL_PRIVATE_ADDR_ONLY_UUID 0x2AC9 // Resolvable Private Address Only +#define ENC_DATA_KEY_MATERIAL_UUID 0x2B88 // Encrypted Data Key Material +#define LE_GATT_SEC_LEVELS_UUID 0x2BF5 // LE GATT Security Levels /** * GATT Service UUIDs @@ -410,6 +426,15 @@ extern const uint8_t VER_LIB[]; // LIB version #define TERM_REASON_UUID 0x2BC0 // Termination Reason #define INCOMING_CALL_UUID 0x2BC1 // Incoming Call #define MUTE_UUID 0x2BC3 // Mute +#define ESL_ADDR_UUID 0x2BF6 // ESL Address +#define AP_SYNC_KEY_MATERIAL_UUID 0x2BF7 // AP Sync Key Material +#define ESL_RSP_KEY_MATERIAL_UUID 0x2BF8 // ESL Response Key Material +#define ESL_CURR_ABS_TIME_UUID 0x2BF9 // ESL Current Absolute Time +#define ESL_DISPLAY_INFO_UUID 0x2BFA // ESL Display Information +#define ESL_IMAGE_INFO_UUID 0x2BFB // ESL Image Information +#define ESL_SENSOR_INFO_UUID 0x2BFC // ESL Sensor Information +#define ESL_LED_INFO_UUID 0x2BFD // ESL LED Information +#define ESL_CTL_POINT_UUID 0x2BFE // ESL Control Point /** * GATT Unit UUIDs @@ -565,6 +590,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define ATT_BT_UUID_SIZE 2 // Size of 128-bit UUID #define ATT_UUID_SIZE 16 + /******************************** GATT ***********************************/ // GATT Attribute Access Permissions Bit Fields @@ -627,7 +653,18 @@ extern const uint8_t VER_LIB[]; // LIB version #define GATT_CFG_NO_OPERATION 0x0000 // No operation // All profile services bit fields -#define GATT_ALL_SERVICES 0xFFFFFFFF +#define GATT_SERVICE_DEVICE_NAME (1<<0) //!< Device Name +#define GATT_SERVICE_APPEARANCE (1<<1) //!< Appearance +#define GATT_SERVICE_PRIVACY_FLAG (1<<2) //!< Peripheral Privacy Flag +#define GATT_SERVICE_RECONN_ADDR (1<<3) //!< Reconnection Address +#define GATT_SERVICE_PERI_CONN_PARAM (1<<4) //!< Peripheral Preferred Connection Parameters (PPCP) +#define GATT_SERVICE_CENTRAL_ADDR_RL (1<<5) //!< Central Address Resolution +#define GATT_SERVICE_PRIV_ADDR_ONLY (1<<6) //!< Resolvable Private Address Only +#define GATT_SERVICE_ENCY_DATA_KEY (1<<7) //!< Encrypted Data Key Material +#define GATT_SERVICE_LE_GATT_SECU (1<<8) //!< LE GATT Security Levels + +#define GATT_SERVICES_DEFS (GATT_SERVICE_DEVICE_NAME|GATT_SERVICE_APPEARANCE|GATT_SERVICE_PERI_CONN_PARAM|GATT_SERVICE_CENTRAL_ADDR_RL) +#define GATT_ALL_SERVICES GATT_SERVICES_DEFS // The number of attribute records in a given attribute table #define GATT_NUM_ATTRS( attrs ) ( sizeof( attrs ) / sizeof( gattAttribute_t ) ) @@ -671,7 +708,12 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_OOB_NEEDED_EVENT 0x1A //!< resv #define GAP_MAKE_CONNECTIONESS_CTE_DONE_EVENT 0x1B //!< Sent when the Set Connectionless CTE Transmit enable is complete. This event is sent as an tmos message defined as gapMakeConnectionlessCTERspEvent_t. #define GAP_END_CONNECTIONESS_CTE_DONE_EVENT 0x1C //!< Sent when the Set Connectionless CTE Transmit disable is complete. This event is sent as an tmos message defined as gapEndConnectionlessCTERspEvent_t. -#define GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT 0x1D //!< Sent when the periodic advertising sync transfer received. This event is sent as an tmos message defined as gapPeriTranReceivec_t. +#define GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT 0x1D //!< Sent when the periodic advertising sync transfer received. This event is sent as an tmos message defined as gapPeriodicTranReceivec_t. + + +#define GAP_PERI_ADV_SUBEVENT_DATA_REQ_EVENT 0x27 //!< Sent when the Controller +#define GAP_PERI_ADV_RESPONSE_REPORT_EVENT 0x28 //!< Sent when one or more devices have responded to a periodic advertising subevent during a PAwR train. This event is sent as an tmos message defined as gapPeriodicAdvResponseEvent_t. + // GAP_PROFILE_ROLE_DEFINES GAP Profile Roles #define GAP_PROFILE_BROADCASTER 0x01 //!< A device that sends advertising events only. @@ -685,7 +727,8 @@ extern const uint8_t VER_LIB[]; // LIB version #define bleGAPBondRejected 0x32 //!< The bond information was rejected. #define bleGAPExpiredCanceled 0x33 //!< The duration has expired -#define GAP_DEVICE_NAME_LEN 21 // Excluding null-terminate char +#define GAP_DEVICE_NAME_LEN 21 //!< Excluding null-terminate char +#define GAP_DEVICE_NAME_MAX_LEN 248 //!< maximum length of device name // option defined #define LISTEN_PERIODIC_ADVERTISING_MODE (1<<0) //!< used to determine whether the Periodic Advertiser List is used @@ -708,18 +751,21 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_PRIVACY_ENABLED 0x01 // GAP GATT Server Parameters used with GGS Get/Set Parameter and Application's Callback functions -#define GGS_DEVICE_NAME_ATT 0 // RW uint8_t[GAP_DEVICE_NAME_LEN] -#define GGS_APPEARANCE_ATT 1 // RW uint16_t -#define GGS_PERI_PRIVACY_FLAG_ATT 2 // RW uint8_t -#define GGS_RECONNCT_ADDR_ATT 3 // RW uint8_t[B_ADDR_LEN] -#define GGS_PERI_CONN_PARAM_ATT 4 // RW sizeof(gapPeriConnectParams_t) -#define GGS_PERI_PRIVACY_FLAG_PROPS 5 // RW uint8_t -#define GGS_W_PERMIT_DEVICE_NAME_ATT 6 // W uint8_t -#define GGS_W_PERMIT_APPEARANCE_ATT 7 // W uint8_t -#define GGS_W_PERMIT_PRIVACY_FLAG_ATT 8 // W uint8_t -#define GGS_CENT_ADDR_RES_ATT 9 // RW uint8_t -// GAP Services bit fields -#define GAP_SERVICE 0x00000001 +#define GGS_DEVICE_NAME_ATT 0 //!< RW uint8_t[GAP_DEVICE_NAME_LEN] +#define GGS_APPEARANCE_ATT 1 //!< RW uint16_t +#define GGS_PERI_PRIVACY_FLAG_ATT 2 //!< RW uint8_t +#define GGS_RECONNCT_ADDR_ATT 3 //!< RW uint8_t[B_ADDR_LEN] +#define GGS_PERI_CONN_PARAM_ATT 4 //!< RW sizeof(gapPeriConnectParams_t) +#define GGS_CENT_ADDR_RES_ATT 5 //!< RW uint8_t +#define GGS_RL_PRIVATE_ADDR_ONLY 6 //!< RW uint8_t +#define GGS_ENC_DATA_KEY_MATERIAL 7 //!< RW sizeof(gapEncDataKey_t) +#define GGS_LE_GATT_SEC_LEVELS 8 //!< RW uint8_t + +#define GGS_PERI_PRIVACY_FLAG_PROPS 0X42 //!< RW uint8_t + +#define GGS_W_PERMIT_DEVICE_NAME_ATT 0x80 //!< W uint8_t +#define GGS_W_PERMIT_APPEARANCE_ATT 0x81 //!< W uint8_t +#define GGS_W_PERMIT_PRIVACY_FLAG_ATT 0x82 //!< W uint8_t // GAP_PARAMETER_ID_DEFINES GAP Parameter IDs // Timers @@ -804,10 +850,14 @@ extern const uint8_t VER_LIB[]; // LIB version // Constant Tone Extension Transmit #define TGAP_CTE_TYPE 60 //!< The type of Constant Tone Extension.Default GAP_CTE_TYPE_AOA. #define TGAP_CTE_LENGTH 61 //!< The type of Constant Tone Extension.Default 20.Range[2,20] -#define TGAP_CTE_COUNT 62 //!< The type of Constant Tone Extension.Default 1.Range[1,16] +#define TGAP_CTE_COUNT 62 //!< resv #define TGAP_LENGTH_OF_SWITCHING_PATTERN 63 //!< The number of Antenna IDs in the pattern,only used when transmitting an AoD Constant Tone Extension.Default 0. -#define TGAP_PARAMID_MAX 64 //!< ID MAX-valid Parameter ID +// Advertising Coding Selection +#define TGAP_ADV_PRIMARY_PHY_OPTIONS 64 //!< Indicate the Host's preference or requirement concerning coding scheme.Default GAP_PHY_OPTIONS_NOPRE. +#define TGAP_ADV_SECONDARY_PHY_OPTIONS 65 //!< indicate the Host's preference or requirement concerning coding scheme (including for periodic advertising).Default GAP_PHY_OPTIONS_NOPRE. + +#define TGAP_PARAMID_MAX 66 //!< ID MAX-valid Parameter ID // GAP_DEVDISC_MODE_DEFINES GAP Device Discovery Modes #define DEVDISC_MODE_NONDISCOVERABLE 0x00 //!< No discoverable setting @@ -851,9 +901,11 @@ extern const uint8_t VER_LIB[]; // LIB version // PHY_OPTIONS preferred coding when transmitting on the LE Coded PHY #define GAP_PHY_OPTIONS_TYPE -#define GAP_PHY_OPTIONS_NOPRE 0x00 // 0:no preferred -#define GAP_PHY_OPTIONS_S2 0x01 -#define GAP_PHY_OPTIONS_S8 0x02 +#define GAP_PHY_OPTIONS_NOPRE 0x00 //!< 0:no preferred +#define GAP_PHY_OPTIONS_S2 0x01 //!< prefers that S=2 coding be used when transmitting on the LE Coded PHY +#define GAP_PHY_OPTIONS_S8 0x02 //!< prefers that S=8 coding be used when transmitting on the LE Coded PHY +#define GAP_PHY_OPTIONS_S2_REQUIRES 0x03 //!< requires that S=2 coding be used when transmitting on the LE Coded PHY +#define GAP_PHY_OPTIONS_S8_REQUIRES 0x04 //!< requires that S=8 coding be used when transmitting on the LE Coded PHY // GAP_ADVERTISEMENT_TYPE_DEFINES GAP Periodic Advertising Properties #define GAP_PERI_PROPERTIES_INCLUDE_TXPOWER (1<<6) @@ -896,7 +948,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_FILTER_POLICY_WHITE_CON 0x02 //!< Allow Scan Request from Any, Connect from White List Only #define GAP_FILTER_POLICY_WHITE 0x03 //!< Allow Scan Request and Connect from White List Only -//! Maximum Pairing Passcode/Passkey value. Range of a passkey can be 0 - 999,999. +// Maximum Pairing Passcode/Passkey value. Range of a passkey can be 0 - 999,999. #define GAP_PASSCODE_MAX 999999 /** Sign Counter Initialized - Sign counter hasn't been used yet. Used when setting up @@ -941,6 +993,8 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_ADTYPE_SIMPLE_PAIRING_RANDR_256 0x1E //!< Simple Pairing Randomizer R-256 #define GAP_ADTYPE_SERVICE_DATA_32BIT 0x20 //!< Service Data - 32-bit UUID #define GAP_ADTYPE_SERVICE_DATA_128BIT 0x21 //!< Service Data - 128-bit UUID +#define GAP_ADTYPE_LE_SC_CONFIRMATION_VALUE 0x22 //!< LE Secure Connections Confirmation Value +#define GAP_ADTYPE_LE_SC_RANDOM_VALUE 0x23 //!< LE Secure Connections Random Value #define GAP_ADTYPE_URI 0x24 //!< URI #define GAP_ADTYPE_INDOOR_POSITION 0x25 //!< Indoor Positioning Service v1.0 or later #define GAP_ADTYPE_TRAN_DISCOVERY_DATA 0x26 //!< Transport Discovery Service v1.0 or later @@ -953,6 +1007,10 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_ADTYPE_BROADCAST_CODE 0x2D //!< Broadcast_Code #define GAP_ADTYPE_RSL_SET_IDENT 0x2E //!< Resolvable Set Identifier.Coordinated Set Identification Profile 1.0 #define GAP_ADTYPE_ADV_INTERVAL_LONG 0x2F //!< Advertising Interval - long +#define GAP_ADTYPE_BROADCAST_NAME 0x30 //!< Public Broadcast Profile v1.0 or later +#define GAP_ADTYPE_ENCRYPTED_ADV_DATA 0x31 //!< Core Specification Supplement, Part A, Section 1.23 +#define GAP_ADTYPE_PERI_ADV_RSP_TIMING_INFO 0x32 //!< Periodic Advertising Response Timing Information +#define GAP_ADTYPE_ELECTRONIC_SHELF_LABEL 0x34 //!< ESL Profile #define GAP_ADTYPE_3D_INFO_DATA 0x3D //!< 3D Information Data #define GAP_ADTYPE_MANUFACTURER_SPECIFIC 0xFF //!< Manufacturer Specific Data: first 2 octets contain the Company Identifier Code followed by the additional manufacturer specific data @@ -1139,6 +1197,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define BLE_NVID_GATT_CFG_START 0x7000 //!< Start of the GATT Configuration NV IDs // Macros to calculate the GATT index/offset in to NV space +// Six characteristic configuration can be saved in NV. #define gattCfgNvID(Idx) ((Idx) + BLE_NVID_GATT_CFG_START) #define BLE_NVID_MAX_VAL 0x7FFF @@ -1146,26 +1205,27 @@ extern const uint8_t VER_LIB[]; // LIB version // Structure of NV data for the connected device's encryption information typedef struct { - uint8_t LTK[KEYLEN]; // Long Term Key (LTK) - uint16_t div; // LTK eDiv - uint8_t rand[B_RANDOM_NUM_SIZE]; // LTK random number - uint8_t keySize; // LTK key size + uint8_t LTK[KEYLEN]; //!< Long Term Key (LTK) + uint16_t div; //!< LTK eDiv + uint8_t rand[B_RANDOM_NUM_SIZE]; //!< LTK random number + uint8_t keySize; //!< LTK key size } gapBondLTK_t; // Structure of NV data for the connected device's address information typedef struct { - uint8_t publicAddr[B_ADDR_LEN]; // Master's address - uint8_t reconnectAddr[B_ADDR_LEN]; // Privacy Reconnection Address - uint16_t stateFlags; // State flags: SM_AUTH_STATE_AUTHENTICATED & SM_AUTH_STATE_BONDING + uint8_t publicAddr[B_ADDR_LEN]; //!< Central's address + uint8_t reconnectAddr[B_ADDR_LEN]; //!< Privacy Reconnection Address + uint16_t stateFlags; //!< State flags: SM_AUTH_STATE_AUTHENTICATED & SM_AUTH_STATE_BONDING uint8_t bondsToDelete; + uint8_t publicAddrType; //!< Central's address type } gapBondRec_t; // Structure of NV data for the connected device's characteristic configuration typedef struct { - uint16_t attrHandle; // attribute handle - uint8_t value; // attribute value for this device + uint16_t attrHandle; //!< attribute handle + uint8_t value; //!< attribute value for this device } gapBondCharCfg_t; /********************************************************************* @@ -1173,41 +1233,41 @@ typedef struct */ typedef struct { - uint8_t srk[KEYLEN]; // Signature Resolving Key - uint32_t signCounter; // Sign Counter + uint8_t srk[KEYLEN]; //!< Signature Resolving Key + uint32_t signCounter; //!< Sign Counter } linkSec_t; typedef struct { - uint8_t ltk[KEYLEN]; // Long Term Key - uint16_t div; // Diversifier - uint8_t rand[B_RANDOM_NUM_SIZE]; // random number - uint8_t keySize; // LTK Key Size + uint8_t ltk[KEYLEN]; //!< Long Term Key + uint16_t div; //!< Diversifier + uint8_t rand[B_RANDOM_NUM_SIZE]; //!< random number + uint8_t keySize; //!< LTK Key Size uint8_t gapBondInvalid; } encParams_t; typedef struct { - uint8_t connRole; // GAP Profile Roles @GAP_PROFILE_ROLE_DEFINES - uint8_t addrType; // Address type of connected device - uint8_t addr[B_ADDR_LEN]; // Other Device's address + uint8_t connRole; //!< GAP Profile Roles @GAP_PROFILE_ROLE_DEFINES + uint8_t addrType; //!< Address type of connected device + uint8_t addr[B_ADDR_LEN]; //!< Other Device's address encParams_t encParams; } bondEncParams_t; typedef struct { - uint8_t taskID; // Application that controls the link - uint16_t connectionHandle; // Controller connection handle - uint8_t stateFlags; // LINK_CONNECTED, LINK_AUTHENTICATED... - uint8_t addrType; // Address type of connected device - uint8_t addr[B_ADDR_LEN]; // Other Device's address - uint8_t connRole; // Connection formed as central or peripheral - uint16_t connInterval; // The connection's interval (n * 1.25ms) + uint8_t taskID; //!< Application that controls the link + uint16_t connectionHandle; //!< Controller connection handle + uint8_t stateFlags; //!< LINK_CONNECTED, LINK_AUTHENTICATED... + uint8_t addrType; //!< Address type of connected device + uint8_t addr[B_ADDR_LEN]; //!< Other Device's address + uint8_t connRole; //!< Connection formed as central or peripheral + uint16_t connInterval; //!< The connection's interval (n * 1.25ms) uint16_t connLatency; uint16_t connTimeout; - uint16_t MTU; // The connection's MTU size - linkSec_t sec; // Connection Security related items - encParams_t *pEncParams; // pointer to LTK, ediv, rand. if needed. + uint16_t MTU; //!< The connection's MTU size + linkSec_t sec; //!< Connection Security related items + encParams_t *pEncParams; //!< pointer to LTK, ediv, rand. if needed. uint16_t smEvtID; void *pPairingParams; void *pAuthLink; @@ -1288,7 +1348,7 @@ typedef struct { uint16_t startHandle; //!< First requested handle number (must be first field) uint16_t endHandle; //!< Last requested handle number - attAttrBtType_t type; //!< 2-octet UUID to find + attAttrBtType_t type; //!< 2-octet UUID to find uint16_t len; //!< Length of value uint8_t *pValue; //!< Attribute value to find (0 to ATT_MTU_SIZE-7) } attFindByTypeValueReq_t; @@ -1771,6 +1831,12 @@ typedef struct uint16_t timeout; //!< Connection Timeout (0x000A - 0x0C80 * 10ms) } gapPeriConnectParams_t; +typedef struct +{ + uint8_t sessionKey[16]; //!< The shared session key. + uint8_t IV[8]; //!< The initialization vector. +} gapEncDataKey_t; + /** * GAP event header format. */ @@ -1958,6 +2024,10 @@ typedef struct uint8_t advertisingPHY; //!< Advertiser PHY uint16_t periodicInterval; //!< Periodic advertising interval uint8_t clockAccuracy; //!< Clock Accuracy + uint8_t numSubevents; //!< Number of subevents.0x00-No subevents + uint8_t subInterval; //!< Subevent interval.0x00-No subevents + uint8_t rspSlotDelay; //!< Response slot delay.0x00-No response slots + uint8_t rspSlotSpacing; //!< Response slot spacing.0x00-No response slots } gapSyncEstablishedEvent_t; /** @@ -1972,6 +2042,8 @@ typedef struct int8_t txPower; //!< Periodic advertising tx power,Units: dBm int8_t rssi; //!< Periodic advertising rssi,Units: dBm uint8_t unUsed; + uint16_t eventCounter; //!< The value of paEventCounter for the reported periodic advertising packet + uint8_t subevent; //!< The subevent number. 0xFF: No subevents uint8_t dataStatus; //!< Data complete uint8_t dataLength; //!< Length (in bytes) of the data field (evtData) uint8_t *pEvtData; //!< Data field of periodic advertising data @@ -1988,6 +2060,90 @@ typedef struct uint16_t syncHandle; //!< Identifying the periodic advertising train } gapSyncLostEvent_t; +#define PKT_TRANSMITTED 0x00 +#define PKT_NOT_TRANSMITTED 0x01 + +typedef struct +{ + uint8_t taskID; //!< set periodic advertising task ID + uint8_t enable; //!< bit0 Enable periodic advertising + //!< bit1 Include the ADI field in AUX_SYNC_IND PDUs + uint8_t advHandle; //!< Used to identify a periodic advertising train + uint16_t advIntervalMin; //!< Minimum advertising interval for periodic advertising.Time = N 脳 1.25ms.Time Range: 7.5ms to 81.91875s + uint16_t advIntervalMax; //!< Maximum advertising interval for periodic advertising.Time = N 脳 1.25ms.Time Range: 7.5ms to 81.91875s + uint16_t advProperties; //!< bit6 Include TxPower in the advertising PDU + uint8_t numSubevents; //!< Number of subevents. + uint8_t subInterval; //!< Interval between subevents.Time = N 脳 1.25ms.Time Range: 7.5 ms to 318.75 ms + uint8_t rspSlotDelay; //!< Time between the advertising packet in a subevent and the first response slot.Time = N 脳 1.25 ms.Time Range: 1.25ms to 317.5ms + uint8_t rspSlotSpacing; //!< Time between response slots.Time = N 脳 0.125ms.Time Range: 0.25ms to 31.875ms + uint8_t numRspSlots; //!< Number of subevent response slots.Range: 0x01 to 0xFF +}gapPawrSetParam_t; + +typedef struct +{ + uint8_t subevent; //!< The subevent index of the data contained in this command. + uint8_t rspSlotStart; //!< The first response slots to be used in this subevent. + uint8_t rspSlotCount; //!< The number of response slots to be used. + uint8_t dataLength; //!< The number of octets in the Subevent_Data parameter. + uint16_t rspMaxLength; //!< + uint8_t *pData; //!< Advertising data +}gapPawrSetData_t; + +typedef struct +{ + uint16_t syncHandle; //!< identifying the PAwR train + uint16_t reqEvent; //!< The value of paEventCounter the periodic advertising packet that the Host is responding to + uint8_t reqSubevent; //!< The subevent for the periodic advertising packet that the Host is responding to + uint8_t rspSubevent; //!< Used to identify the subevent of the PAwR train. + uint8_t rspSlot; //!< Used to identify the response slot of the PAwR train. + uint8_t rspDataLength;//!< The number of octets in the Response_Data parameter. + uint8_t *pRspData; //!< Response data +} gapPawrSetResponseData_t; + +typedef struct +{ + tmos_event_hdr_t hdr; //!< GAP_MSG_EVENT and status + uint8_t opcode; //!< GAP_PERI_ADV_SUBEVENT_DATA_REQ_EVENT + uint8_t advHandle; + uint8_t subeventStart; + uint8_t subeventDataCount; +} gapPawrDataRequestEvent_t; + +typedef struct +{ + uint8_t txPower; + int8_t rssi; + uint8_t cteType; + uint8_t rspSlot; + uint8_t dataStatus; + uint8_t dataLength; + uint8_t *pData; +}pawrResponseInfo_t; + +typedef struct +{ + tmos_event_hdr_t hdr; //!< GAP_MSG_EVENT and status + uint8_t opcode; //!< GAP_PERI_ADV_RESPONSE_REPORT_EVENT + uint8_t advHandle; + uint8_t subevent; + uint8_t txStatus; //!< 0x00 packet was transmitted. 0x01 packet was not transmitted. + uint8_t numResponses; + pawrResponseInfo_t *pList; +} gapPawrResponseEvent_t; + +typedef struct +{ + uint8_t advHandle; //!< Used to identify a periodic advertising train + uint8_t subevent; //!< Subevent where the connection request is to be sent. + uint8_t ownAddrType; + uint8_t peerAddrType; + uint8_t peerAddr[6]; + uint16_t connIntervalMin; + uint16_t connIntervalMax; + uint16_t maxLatency; + uint16_t supervisionTimeout; +} gapPawrCreateConnection_t; + /** * GAP_SCAN_REQUEST_EVENT message format. This message is sent to the * app when the advertiser receives a SCAN_REQ PDU or an AUX_SCAN_REQ PDU @@ -2046,11 +2202,13 @@ typedef struct uint8_t devAddrType; //!< Device address type: @ref GAP_ADDR_TYPE_DEFINES uint8_t devAddr[B_ADDR_LEN]; //!< Device address of link uint16_t connectionHandle; //!< Connection Handle from controller used to ref the device - uint8_t connRole; //!< Connection formed as Master or Slave + uint8_t connRole; //!< Connection formed as Central or Peripheral uint16_t connInterval; //!< Connection Interval uint16_t connLatency; //!< Connection Latency uint16_t connTimeout; //!< Connection Timeout uint8_t clockAccuracy; //!< Clock Accuracy + uint8_t advHandle; //!< Used to identify an advertising set + uint16_t syncHandle; //!< Identifying the periodic advertising train } gapEstLinkReqEvent_t; /** @@ -2095,6 +2253,30 @@ typedef struct uint8_t connRxPHYS; //!< rx phy(GAP_PHY_VAL_TYPE) } gapPhyUpdateEvent_t; +/** + * GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT message format. This message is sent to the app(GAP_MSG_EVENT) + * when the periodic advertising sync transfer received. + */ +typedef struct +{ + tmos_event_hdr_t hdr; //!< GAP_MSG_EVENT and status + uint8_t opcode; //!< GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT + uint8_t status; //!< bStatus_t + uint16_t connectionHandle; //!< Connection handle of the update + uint16_t serviceData; //!< A value provided by the peer device + uint16_t syncHandle; //!< Identifying the periodic advertising train + uint8_t advertisingSID; //!< Value of the Advertising SID used to advertise the periodic advertising + uint8_t devAddrType; //!< Device address type: @ref GAP_ADDR_TYPE_DEFINES + uint8_t devAddr[B_ADDR_LEN]; //!< Device address of periodic advertising + uint8_t advertisingPHY; //!< the PHY used for the periodic advertising + uint16_t periodicInterval; //!< Periodic advertising interval + uint8_t clockAccuracy; //!< Clock Accuracy + uint8_t numSubevents; //!< Number of subevents + uint8_t subInterval; //!< Subevent interval + uint8_t rspSlotDelay; //!< Response slot delay + uint8_t rspSlotSpacing; //!< Response slot spacing +} gapPeriodicTranReceivec_t; + /** * GAP_PASSKEY_NEEDED_EVENT message format. This message is sent to the * app when a Passkey is needed from the app's user interface. @@ -2188,7 +2370,7 @@ typedef struct /** * gapRole_States_t defined */ -typedef unsigned long gapRole_States_t; +typedef uint32_t gapRole_States_t; // gapRole_States_t @ 4b'[3-0]-advertising states #define GAPROLE_STATE_ADV_MASK (0xF) //!< advertising states mask @@ -2223,7 +2405,19 @@ typedef unsigned long gapRole_States_t; // gapRole_States_t @ 8b'[31-24] - indicates which fields change #define GAPROLE_PERIODIC_STATE_VALID (1<<24) //!< indicates periodic advertising states change #define GAPROLE_CTE_T_STATE_VALID (1<<25) //!< indicates Connectionless CTE Transmit states change -#define GAPROLE_BIG_T_STATE_VALID (1<<26) //!< indicates BIG Transmit states change + +typedef union { + struct { + uint32_t advState : 4; + uint32_t periState : 4; + uint32_t cteState : 4; + uint32_t Reserved0 : 12; + uint32_t periValid : 1; + uint32_t cteValid : 1; + uint32_t Reserved1 : 6; + }; + uint32_t gapRoleStates; +} gapRoleStates_t; /** * gapRole Event Structure @@ -2246,6 +2440,7 @@ typedef union gapLinkUpdateEvent_t linkUpdate; //!< Link update event structure. gapTerminateLinkEvent_t linkTerminate; //!< Link terminated event structure. gapPhyUpdateEvent_t linkPhyUpdate; //!< Link phy update event structure. + gapPeriodicTranReceivec_t syncTran; } gapRoleEvent_t; /** @@ -2286,6 +2481,46 @@ typedef struct //!< (a value of 0 indicates that the presence or absence of a Constant Tone Extension is irrelevant). } gapCreateSync_t; +/** + * Type of GAPRole_SyncTransferParameters command parameters. + */ +typedef struct +{ + uint16_t connHandle; //!< Used to identify the Connection handle + uint8_t mode; //!< specifies the action to be taken when periodic advertising synchronization information is received +#define MODE_0 0 //!< No attempt is made to synchronize to the periodic advertising and no + //!< gapPeriodicTranReceivec_t event is sent to the APP. +#define MODE_1 1 //!< An gapPeriodicTranReceivec_t event is sent to the APP. + //!< gapPeriodicAdvDeviceInfoEvent_t events will be disabled. +#define MODE_2 2 //!< An gapPeriodicTranReceivec_t event is sent to the APP. + //!< gapPeriodicAdvDeviceInfoEvent_t events will be enabled with duplicate filtering disabled. +#define MODE_3 3 //!< An gapPeriodicTranReceivec_t event is sent to the APP. + //!< gapPeriodicAdvDeviceInfoEvent_t events will be enabled with duplicate filtering enabled. + uint16_t skip; //!< resv(The number of periodic advertising packets that can be skipped after a successful receive). + uint16_t syncTimeout; //!< Synchronization timeout for the periodic advertising train.Time = N*10 ms.Range: 0x000A to 0x4000 + uint8_t cteType; //!< Reserved for future use. +} gapSyncTransferParam_t; + +/** + * Type of GAPRole_SyncTransferSync command parameters. + */ +typedef struct +{ + uint16_t connHandle; //!< Used to identify the Connection handle + uint16_t serviceData; //!< A value provided by the Host for use by the Host of the peer device. + uint16_t syncHandle; //!< Identifier of the periodic advertising train to a connected device. +} gapSyncTransferSync_t; + +/** + * Type of GAPRole_SyncTransferAdvertising command parameters. + */ +typedef struct +{ + uint16_t connHandle; //!< Used to identify the Connection handle + uint16_t serviceData; //!< A value provided by the Host for use by the Host of the peer device. + uint8_t advHandle; //!< Identifier of the periodic advertising in an advertising set to a connected device. +} gapSyncTransferAdvertising_t; + /** * Type of GAPRole_SetPathLossReporting command parameters. */ @@ -2638,7 +2873,7 @@ extern bStatus_t tmos_snv_read( tmosSnvId_t id, tmosSnvLen_t len, void *pBuf ); * * @return SUCCESS if successful, FAILURE if failed. */ -extern bStatus_t TMOS_TimerInit( pfnGetSysClock fnGetClock ); +extern bStatus_t TMOS_TimerInit( bleClockConfig_t *pClockConfig ); /** * @brief interrupt handler. @@ -2647,7 +2882,7 @@ extern bStatus_t TMOS_TimerInit( pfnGetSysClock fnGetClock ); * * @return None */ -extern void TMOS_TimerIRQHandler( void ); +extern bStatus_t TMOS_TimerIRQHandler( uint32_t *time ); /** * @brief Process system @@ -4106,6 +4341,39 @@ extern bStatus_t GAPRole_CancelSync( void ); */ extern bStatus_t GAPRole_TerminateSync( uint16_t syncHandle ); +/** + * @brief used to instruct the Controller to send synchronization information about the periodic + * advertising in an advertising set to a connected device. + * + * @param pSync - sync parameters@ gapSyncTransferParam_t + * + * @return bStatus_t: HCI Error Code.
+ * + */ +extern bStatus_t GAPRole_SyncTransferParameters( gapSyncTransferParam_t *pSync ); + +/** + * @brief used to instruct the Controller to send synchronization information about the periodic + * advertising train identified by the Sync_Handle parameter to a connected device. + * + * @param pSync - sync parameters@ gapSyncTransferSync_t + * + * @return bStatus_t: HCI Error Code.
+ * + */ +extern bStatus_t GAPRole_SyncTransferSync( gapSyncTransferSync_t *pSync ); + +/** + * @brief used to instruct the Controller to send synchronization information about the periodic + * advertising in an advertising set to a connected device. + * + * @param pSync - sync parameters@ gapSyncTransferAdvertising_t + * + * @return bStatus_t: HCI Error Code.
+ * + */ +extern bStatus_t GAPRole_SyncTransferAdvertising( gapSyncTransferAdvertising_t *pSync ); + /** * @brief Update the link connection parameters. * @@ -4176,6 +4444,50 @@ extern bStatus_t GAPRole_SetPathLossReporting( gapRoleSetPathLossReporting_t *pP */ extern bStatus_t GAPRole_SetPowerlevel( gapRolePowerlevelManagement_t *pParm ); +/** + * @brief used to set the parameters for pawr advertising.. + * + * @param pParm - set pawr parameters@ gapPawrSetParam_t + * + * @return Command Status. + * + */ +extern bStatus_t GAPPawr_SetParameters( gapPawrSetParam_t *pParm ); + +/** + * @brief used to set the data for one or more subevents of PAwR in reply to an + * HCI_LE_Periodic_Advertising_Subevent_Data_Request event. + * + * @param advHandle - advertising handle + * @param numSubevents - the number of subevent data contained in the parameter arrays. + * @param pParm - The arrayed parameter @ gapPawrSetResponseData_t + * + * @return Command Status. + * + */ +extern bStatus_t GAPPawr_SetSubeventData( uint8_t advHandle, uint8_t numSubevents, gapPawrSetData_t *pParm ); + +/** + * @brief used by the Host to set the data for a response slot in a specific subevent + * of the PAwR identified by the Sync_Handle. + * + * @param pParm - The parameter @ gapPawrSetResponseData_t + * + * @return Command Status. + * + */ +extern bStatus_t GAPPawr_SetResponseData( gapPawrSetResponseData_t *pParm ); + +/** + * @brief used to create an ACL connection between a periodic advertiser and a synchronized device. + * + * @param pParm - The parameter @ gapPawrCreateConnection_t + * + * @return Command Status. + * + */ +extern bStatus_t GAPPawr_CreatConnection( gapPawrCreateConnection_t *pParm ); + /*------------------------------------------------------------------- * FUNCTIONS - BROADCASTER_PROFILE_API Broadcaster Profile API */ @@ -4409,7 +4721,7 @@ extern bStatus_t RF_Config( rfConfig_t *pConfig ); * broadcast type(0xFF):received by all matching types; * others:only received by matching type * - * @return 0 - success. + * @return 0 - success. 1-access address error 2-busy */ extern bStatus_t RF_Rx( uint8_t *txBuf, uint8_t txLen, uint8_t pktRxType, uint8_t pktTxType ); @@ -4425,7 +4737,7 @@ extern bStatus_t RF_Rx( uint8_t *txBuf, uint8_t txLen, uint8_t pktRxType, uint8_ * broadcast type(0xFF):receive all matching types, * others:receive match type or broadcast type * - * @return 0 - success. + * @return 0 - success. 1-access address error 2-busy */ extern bStatus_t RF_Tx( uint8_t *txBuf, uint8_t txLen, uint8_t pktTxType, uint8_t pktRxType ); diff --git a/EVT/EXAM/BLE/LIB/wchble_rom.h b/EVT/EXAM/BLE/LIB/wchble_rom.h index dfb9044..a9ea107 100644 --- a/EVT/EXAM/BLE/LIB/wchble_rom.h +++ b/EVT/EXAM/BLE/LIB/wchble_rom.h @@ -1,8 +1,8 @@ /********************************** (C) COPYRIGHT ****************************** * File Name : wchble_rom.h * Author : WCH - * Version : V1.20 - * Date : 2022/11/09 + * Version : V1.30 + * Date : 2023/07/01 * Description : head file * Address Space * CODE: 00040000H - 0006FFFFH 192K @@ -13,8 +13,11 @@ * wchble_rom.hex #define LIB_FLASH_BASE_ADDRESSS 0x00040000(default) * wchble_rom_mesh.hex #define LIB_FLASH_BASE_ADDRESSS 0x0004E000 * Copyright (c) 2022 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ + /******************************************************************************/ #ifndef __WCHBLE_ROM_H #define __WCHBLE_ROM_H @@ -113,6 +116,16 @@ typedef struct tag_ble_config pfnFlashWriteCB writeFlashCB; // Register a program that write flash } bleConfig_t; // Library initialization call BLE_LibInit function +/* BLE pa control config struct */ +typedef struct tag_ble_clock_config +{ + pfnGetSysClock getClockValue; + uint32_t ClockMaxCount; // The maximum count value + uint16_t ClockFrequency; // The timing clock frequency(Hz) + uint16_t ClockAccuracy; // The timing clock accuracy(ppm) + uint8_t irqEnable; // resv +}bleClockConfig_t; + /* BLE pa control config struct */ typedef struct tag_ble_pa_control_config { @@ -138,7 +151,7 @@ typedef struct /********************************************************************* * GLOBAL MACROS */ -#define VER_FILE "CH32V20x_BLE_LIB_V1.2" +#define VER_FILE "CH32V20x_BLE_LIB_V1.3" extern const uint8_t VER_LIB[]; // LIB version #define SYSTEM_TIME_MICROSEN 625 // unit of process event timer is 625us #define MS1_TO_SYSTEM_TIME(x) ((x)*1000/SYSTEM_TIME_MICROSEN) // transform unit in ms to unit in 625us ( attentional bias ) @@ -180,7 +193,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define ABS(n) (((n) < 0) ? -(n) : (n)) #endif -/* TxPower define(Accuracy:±2dBm) */ +/* Tx_POWER define(Accuracy:卤2dBm) */ #define LL_TX_POWEER_MINUS_18_DBM 0x01 #define LL_TX_POWEER_MINUS_10_DBM 0x03 #define LL_TX_POWEER_MINUS_5_DBM 0x05 @@ -297,6 +310,9 @@ extern const uint8_t VER_LIB[]; // LIB version #define PERI_CONN_PARAM_UUID 0x2A04 // Peripheral Preferred Connection Parameters #define SERVICE_CHANGED_UUID 0x2A05 // Service Changed #define CENTRAL_ADDRESS_RESOLUTION_UUID 0x2AA6 // Central Address Resolution +#define RL_PRIVATE_ADDR_ONLY_UUID 0x2AC9 // Resolvable Private Address Only +#define ENC_DATA_KEY_MATERIAL_UUID 0x2B88 // Encrypted Data Key Material +#define LE_GATT_SEC_LEVELS_UUID 0x2BF5 // LE GATT Security Levels /** * GATT Service UUIDs @@ -418,6 +434,15 @@ extern const uint8_t VER_LIB[]; // LIB version #define TERM_REASON_UUID 0x2BC0 // Termination Reason #define INCOMING_CALL_UUID 0x2BC1 // Incoming Call #define MUTE_UUID 0x2BC3 // Mute +#define ESL_ADDR_UUID 0x2BF6 // ESL Address +#define AP_SYNC_KEY_MATERIAL_UUID 0x2BF7 // AP Sync Key Material +#define ESL_RSP_KEY_MATERIAL_UUID 0x2BF8 // ESL Response Key Material +#define ESL_CURR_ABS_TIME_UUID 0x2BF9 // ESL Current Absolute Time +#define ESL_DISPLAY_INFO_UUID 0x2BFA // ESL Display Information +#define ESL_IMAGE_INFO_UUID 0x2BFB // ESL Image Information +#define ESL_SENSOR_INFO_UUID 0x2BFC // ESL Sensor Information +#define ESL_LED_INFO_UUID 0x2BFD // ESL LED Information +#define ESL_CTL_POINT_UUID 0x2BFE // ESL Control Point /** * GATT Unit UUIDs @@ -573,6 +598,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define ATT_BT_UUID_SIZE 2 // Size of 128-bit UUID #define ATT_UUID_SIZE 16 + /******************************** GATT ***********************************/ // GATT Attribute Access Permissions Bit Fields @@ -635,7 +661,18 @@ extern const uint8_t VER_LIB[]; // LIB version #define GATT_CFG_NO_OPERATION 0x0000 // No operation // All profile services bit fields -#define GATT_ALL_SERVICES 0xFFFFFFFF +#define GATT_SERVICE_DEVICE_NAME (1<<0) //!< Device Name +#define GATT_SERVICE_APPEARANCE (1<<1) //!< Appearance +#define GATT_SERVICE_PRIVACY_FLAG (1<<2) //!< Peripheral Privacy Flag +#define GATT_SERVICE_RECONN_ADDR (1<<3) //!< Reconnection Address +#define GATT_SERVICE_PERI_CONN_PARAM (1<<4) //!< Peripheral Preferred Connection Parameters (PPCP) +#define GATT_SERVICE_CENTRAL_ADDR_RL (1<<5) //!< Central Address Resolution +#define GATT_SERVICE_PRIV_ADDR_ONLY (1<<6) //!< Resolvable Private Address Only +#define GATT_SERVICE_ENCY_DATA_KEY (1<<7) //!< Encrypted Data Key Material +#define GATT_SERVICE_LE_GATT_SECU (1<<8) //!< LE GATT Security Levels + +#define GATT_SERVICES_DEFS (GATT_SERVICE_DEVICE_NAME|GATT_SERVICE_APPEARANCE|GATT_SERVICE_PERI_CONN_PARAM|GATT_SERVICE_CENTRAL_ADDR_RL) +#define GATT_ALL_SERVICES GATT_SERVICES_DEFS // The number of attribute records in a given attribute table #define GATT_NUM_ATTRS( attrs ) ( sizeof( attrs ) / sizeof( gattAttribute_t ) ) @@ -679,7 +716,12 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_OOB_NEEDED_EVENT 0x1A //!< resv #define GAP_MAKE_CONNECTIONESS_CTE_DONE_EVENT 0x1B //!< Sent when the Set Connectionless CTE Transmit enable is complete. This event is sent as an tmos message defined as gapMakeConnectionlessCTERspEvent_t. #define GAP_END_CONNECTIONESS_CTE_DONE_EVENT 0x1C //!< Sent when the Set Connectionless CTE Transmit disable is complete. This event is sent as an tmos message defined as gapEndConnectionlessCTERspEvent_t. -#define GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT 0x1D //!< Sent when the periodic advertising sync transfer received. This event is sent as an tmos message defined as gapPeriTranReceivec_t. +#define GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT 0x1D //!< Sent when the periodic advertising sync transfer received. This event is sent as an tmos message defined as gapPeriodicTranReceivec_t. + + +#define GAP_PERI_ADV_SUBEVENT_DATA_REQ_EVENT 0x27 //!< Sent when the Controller +#define GAP_PERI_ADV_RESPONSE_REPORT_EVENT 0x28 //!< Sent when one or more devices have responded to a periodic advertising subevent during a PAwR train. This event is sent as an tmos message defined as gapPeriodicAdvResponseEvent_t. + // GAP_PROFILE_ROLE_DEFINES GAP Profile Roles #define GAP_PROFILE_BROADCASTER 0x01 //!< A device that sends advertising events only. @@ -693,7 +735,8 @@ extern const uint8_t VER_LIB[]; // LIB version #define bleGAPBondRejected 0x32 //!< The bond information was rejected. #define bleGAPExpiredCanceled 0x33 //!< The duration has expired -#define GAP_DEVICE_NAME_LEN 21 // Excluding null-terminate char +#define GAP_DEVICE_NAME_LEN 21 //!< Excluding null-terminate char +#define GAP_DEVICE_NAME_MAX_LEN 248 //!< maximum length of device name // option defined #define LISTEN_PERIODIC_ADVERTISING_MODE (1<<0) //!< used to determine whether the Periodic Advertiser List is used @@ -716,18 +759,21 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_PRIVACY_ENABLED 0x01 // GAP GATT Server Parameters used with GGS Get/Set Parameter and Application's Callback functions -#define GGS_DEVICE_NAME_ATT 0 // RW uint8_t[GAP_DEVICE_NAME_LEN] -#define GGS_APPEARANCE_ATT 1 // RW uint16_t -#define GGS_PERI_PRIVACY_FLAG_ATT 2 // RW uint8_t -#define GGS_RECONNCT_ADDR_ATT 3 // RW uint8_t[B_ADDR_LEN] -#define GGS_PERI_CONN_PARAM_ATT 4 // RW sizeof(gapPeriConnectParams_t) -#define GGS_PERI_PRIVACY_FLAG_PROPS 5 // RW uint8_t -#define GGS_W_PERMIT_DEVICE_NAME_ATT 6 // W uint8_t -#define GGS_W_PERMIT_APPEARANCE_ATT 7 // W uint8_t -#define GGS_W_PERMIT_PRIVACY_FLAG_ATT 8 // W uint8_t -#define GGS_CENT_ADDR_RES_ATT 9 // RW uint8_t -// GAP Services bit fields -#define GAP_SERVICE 0x00000001 +#define GGS_DEVICE_NAME_ATT 0 //!< RW uint8_t[GAP_DEVICE_NAME_LEN] +#define GGS_APPEARANCE_ATT 1 //!< RW uint16_t +#define GGS_PERI_PRIVACY_FLAG_ATT 2 //!< RW uint8_t +#define GGS_RECONNCT_ADDR_ATT 3 //!< RW uint8_t[B_ADDR_LEN] +#define GGS_PERI_CONN_PARAM_ATT 4 //!< RW sizeof(gapPeriConnectParams_t) +#define GGS_CENT_ADDR_RES_ATT 5 //!< RW uint8_t +#define GGS_RL_PRIVATE_ADDR_ONLY 6 //!< RW uint8_t +#define GGS_ENC_DATA_KEY_MATERIAL 7 //!< RW sizeof(gapEncDataKey_t) +#define GGS_LE_GATT_SEC_LEVELS 8 //!< RW uint8_t + +#define GGS_PERI_PRIVACY_FLAG_PROPS 0X42 //!< RW uint8_t + +#define GGS_W_PERMIT_DEVICE_NAME_ATT 0x80 //!< W uint8_t +#define GGS_W_PERMIT_APPEARANCE_ATT 0x81 //!< W uint8_t +#define GGS_W_PERMIT_PRIVACY_FLAG_ATT 0x82 //!< W uint8_t // GAP_PARAMETER_ID_DEFINES GAP Parameter IDs // Timers @@ -812,10 +858,14 @@ extern const uint8_t VER_LIB[]; // LIB version // Constant Tone Extension Transmit #define TGAP_CTE_TYPE 60 //!< The type of Constant Tone Extension.Default GAP_CTE_TYPE_AOA. #define TGAP_CTE_LENGTH 61 //!< The type of Constant Tone Extension.Default 20.Range[2,20] -#define TGAP_CTE_COUNT 62 //!< The type of Constant Tone Extension.Default 1.Range[1,16] +#define TGAP_CTE_COUNT 62 //!< resv #define TGAP_LENGTH_OF_SWITCHING_PATTERN 63 //!< The number of Antenna IDs in the pattern,only used when transmitting an AoD Constant Tone Extension.Default 0. -#define TGAP_PARAMID_MAX 64 //!< ID MAX-valid Parameter ID +// Advertising Coding Selection +#define TGAP_ADV_PRIMARY_PHY_OPTIONS 64 //!< Indicate the Host's preference or requirement concerning coding scheme.Default GAP_PHY_OPTIONS_NOPRE. +#define TGAP_ADV_SECONDARY_PHY_OPTIONS 65 //!< indicate the Host's preference or requirement concerning coding scheme (including for periodic advertising).Default GAP_PHY_OPTIONS_NOPRE. + +#define TGAP_PARAMID_MAX 66 //!< ID MAX-valid Parameter ID // GAP_DEVDISC_MODE_DEFINES GAP Device Discovery Modes #define DEVDISC_MODE_NONDISCOVERABLE 0x00 //!< No discoverable setting @@ -859,9 +909,11 @@ extern const uint8_t VER_LIB[]; // LIB version // PHY_OPTIONS preferred coding when transmitting on the LE Coded PHY #define GAP_PHY_OPTIONS_TYPE -#define GAP_PHY_OPTIONS_NOPRE 0x00 // 0:no preferred -#define GAP_PHY_OPTIONS_S2 0x01 -#define GAP_PHY_OPTIONS_S8 0x02 +#define GAP_PHY_OPTIONS_NOPRE 0x00 //!< 0:no preferred +#define GAP_PHY_OPTIONS_S2 0x01 //!< prefers that S=2 coding be used when transmitting on the LE Coded PHY +#define GAP_PHY_OPTIONS_S8 0x02 //!< prefers that S=8 coding be used when transmitting on the LE Coded PHY +#define GAP_PHY_OPTIONS_S2_REQUIRES 0x03 //!< requires that S=2 coding be used when transmitting on the LE Coded PHY +#define GAP_PHY_OPTIONS_S8_REQUIRES 0x04 //!< requires that S=8 coding be used when transmitting on the LE Coded PHY // GAP_ADVERTISEMENT_TYPE_DEFINES GAP Periodic Advertising Properties #define GAP_PERI_PROPERTIES_INCLUDE_TXPOWER (1<<6) @@ -904,7 +956,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_FILTER_POLICY_WHITE_CON 0x02 //!< Allow Scan Request from Any, Connect from White List Only #define GAP_FILTER_POLICY_WHITE 0x03 //!< Allow Scan Request and Connect from White List Only -//! Maximum Pairing Passcode/Passkey value. Range of a passkey can be 0 - 999,999. +// Maximum Pairing Passcode/Passkey value. Range of a passkey can be 0 - 999,999. #define GAP_PASSCODE_MAX 999999 /** Sign Counter Initialized - Sign counter hasn't been used yet. Used when setting up @@ -949,6 +1001,8 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_ADTYPE_SIMPLE_PAIRING_RANDR_256 0x1E //!< Simple Pairing Randomizer R-256 #define GAP_ADTYPE_SERVICE_DATA_32BIT 0x20 //!< Service Data - 32-bit UUID #define GAP_ADTYPE_SERVICE_DATA_128BIT 0x21 //!< Service Data - 128-bit UUID +#define GAP_ADTYPE_LE_SC_CONFIRMATION_VALUE 0x22 //!< LE Secure Connections Confirmation Value +#define GAP_ADTYPE_LE_SC_RANDOM_VALUE 0x23 //!< LE Secure Connections Random Value #define GAP_ADTYPE_URI 0x24 //!< URI #define GAP_ADTYPE_INDOOR_POSITION 0x25 //!< Indoor Positioning Service v1.0 or later #define GAP_ADTYPE_TRAN_DISCOVERY_DATA 0x26 //!< Transport Discovery Service v1.0 or later @@ -961,6 +1015,10 @@ extern const uint8_t VER_LIB[]; // LIB version #define GAP_ADTYPE_BROADCAST_CODE 0x2D //!< Broadcast_Code #define GAP_ADTYPE_RSL_SET_IDENT 0x2E //!< Resolvable Set Identifier.Coordinated Set Identification Profile 1.0 #define GAP_ADTYPE_ADV_INTERVAL_LONG 0x2F //!< Advertising Interval - long +#define GAP_ADTYPE_BROADCAST_NAME 0x30 //!< Public Broadcast Profile v1.0 or later +#define GAP_ADTYPE_ENCRYPTED_ADV_DATA 0x31 //!< Core Specification Supplement, Part A, Section 1.23 +#define GAP_ADTYPE_PERI_ADV_RSP_TIMING_INFO 0x32 //!< Periodic Advertising Response Timing Information +#define GAP_ADTYPE_ELECTRONIC_SHELF_LABEL 0x34 //!< ESL Profile #define GAP_ADTYPE_3D_INFO_DATA 0x3D //!< 3D Information Data #define GAP_ADTYPE_MANUFACTURER_SPECIFIC 0xFF //!< Manufacturer Specific Data: first 2 octets contain the Company Identifier Code followed by the additional manufacturer specific data @@ -1147,6 +1205,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define BLE_NVID_GATT_CFG_START 0x7000 //!< Start of the GATT Configuration NV IDs // Macros to calculate the GATT index/offset in to NV space +// Six characteristic configuration can be saved in NV. #define gattCfgNvID(Idx) ((Idx) + BLE_NVID_GATT_CFG_START) #define BLE_NVID_MAX_VAL 0x7FFF @@ -1154,26 +1213,27 @@ extern const uint8_t VER_LIB[]; // LIB version // Structure of NV data for the connected device's encryption information typedef struct { - uint8_t LTK[KEYLEN]; // Long Term Key (LTK) - uint16_t div; // LTK eDiv - uint8_t rand[B_RANDOM_NUM_SIZE]; // LTK random number - uint8_t keySize; // LTK key size + uint8_t LTK[KEYLEN]; //!< Long Term Key (LTK) + uint16_t div; //!< LTK eDiv + uint8_t rand[B_RANDOM_NUM_SIZE]; //!< LTK random number + uint8_t keySize; //!< LTK key size } gapBondLTK_t; // Structure of NV data for the connected device's address information typedef struct { - uint8_t publicAddr[B_ADDR_LEN]; // Master's address - uint8_t reconnectAddr[B_ADDR_LEN]; // Privacy Reconnection Address - uint16_t stateFlags; // State flags: SM_AUTH_STATE_AUTHENTICATED & SM_AUTH_STATE_BONDING + uint8_t publicAddr[B_ADDR_LEN]; //!< Central's address + uint8_t reconnectAddr[B_ADDR_LEN]; //!< Privacy Reconnection Address + uint16_t stateFlags; //!< State flags: SM_AUTH_STATE_AUTHENTICATED & SM_AUTH_STATE_BONDING uint8_t bondsToDelete; + uint8_t publicAddrType; //!< Central's address type } gapBondRec_t; // Structure of NV data for the connected device's characteristic configuration typedef struct { - uint16_t attrHandle; // attribute handle - uint8_t value; // attribute value for this device + uint16_t attrHandle; //!< attribute handle + uint8_t value; //!< attribute value for this device } gapBondCharCfg_t; /********************************************************************* @@ -1181,41 +1241,41 @@ typedef struct */ typedef struct { - uint8_t srk[KEYLEN]; // Signature Resolving Key - uint32_t signCounter; // Sign Counter + uint8_t srk[KEYLEN]; //!< Signature Resolving Key + uint32_t signCounter; //!< Sign Counter } linkSec_t; typedef struct { - uint8_t ltk[KEYLEN]; // Long Term Key - uint16_t div; // Diversifier - uint8_t rand[B_RANDOM_NUM_SIZE]; // random number - uint8_t keySize; // LTK Key Size + uint8_t ltk[KEYLEN]; //!< Long Term Key + uint16_t div; //!< Diversifier + uint8_t rand[B_RANDOM_NUM_SIZE]; //!< random number + uint8_t keySize; //!< LTK Key Size uint8_t gapBondInvalid; } encParams_t; typedef struct { - uint8_t connRole; // GAP Profile Roles @GAP_PROFILE_ROLE_DEFINES - uint8_t addrType; // Address type of connected device - uint8_t addr[B_ADDR_LEN]; // Other Device's address + uint8_t connRole; //!< GAP Profile Roles @GAP_PROFILE_ROLE_DEFINES + uint8_t addrType; //!< Address type of connected device + uint8_t addr[B_ADDR_LEN]; //!< Other Device's address encParams_t encParams; } bondEncParams_t; typedef struct { - uint8_t taskID; // Application that controls the link - uint16_t connectionHandle; // Controller connection handle - uint8_t stateFlags; // LINK_CONNECTED, LINK_AUTHENTICATED... - uint8_t addrType; // Address type of connected device - uint8_t addr[B_ADDR_LEN]; // Other Device's address - uint8_t connRole; // Connection formed as central or peripheral - uint16_t connInterval; // The connection's interval (n * 1.25ms) + uint8_t taskID; //!< Application that controls the link + uint16_t connectionHandle; //!< Controller connection handle + uint8_t stateFlags; //!< LINK_CONNECTED, LINK_AUTHENTICATED... + uint8_t addrType; //!< Address type of connected device + uint8_t addr[B_ADDR_LEN]; //!< Other Device's address + uint8_t connRole; //!< Connection formed as central or peripheral + uint16_t connInterval; //!< The connection's interval (n * 1.25ms) uint16_t connLatency; uint16_t connTimeout; - uint16_t MTU; // The connection's MTU size - linkSec_t sec; // Connection Security related items - encParams_t *pEncParams; // pointer to LTK, ediv, rand. if needed. + uint16_t MTU; //!< The connection's MTU size + linkSec_t sec; //!< Connection Security related items + encParams_t *pEncParams; //!< pointer to LTK, ediv, rand. if needed. uint16_t smEvtID; void *pPairingParams; void *pAuthLink; @@ -1296,7 +1356,7 @@ typedef struct { uint16_t startHandle; //!< First requested handle number (must be first field) uint16_t endHandle; //!< Last requested handle number - attAttrBtType_t type; //!< 2-octet UUID to find + attAttrBtType_t type; //!< 2-octet UUID to find uint16_t len; //!< Length of value uint8_t *pValue; //!< Attribute value to find (0 to ATT_MTU_SIZE-7) } attFindByTypeValueReq_t; @@ -1779,6 +1839,12 @@ typedef struct uint16_t timeout; //!< Connection Timeout (0x000A - 0x0C80 * 10ms) } gapPeriConnectParams_t; +typedef struct +{ + uint8_t sessionKey[16]; //!< The shared session key. + uint8_t IV[8]; //!< The initialization vector. +} gapEncDataKey_t; + /** * GAP event header format. */ @@ -1966,6 +2032,10 @@ typedef struct uint8_t advertisingPHY; //!< Advertiser PHY uint16_t periodicInterval; //!< Periodic advertising interval uint8_t clockAccuracy; //!< Clock Accuracy + uint8_t numSubevents; //!< Number of subevents.0x00-No subevents + uint8_t subInterval; //!< Subevent interval.0x00-No subevents + uint8_t rspSlotDelay; //!< Response slot delay.0x00-No response slots + uint8_t rspSlotSpacing; //!< Response slot spacing.0x00-No response slots } gapSyncEstablishedEvent_t; /** @@ -1980,6 +2050,8 @@ typedef struct int8_t txPower; //!< Periodic advertising tx power,Units: dBm int8_t rssi; //!< Periodic advertising rssi,Units: dBm uint8_t unUsed; + uint16_t eventCounter; //!< The value of paEventCounter for the reported periodic advertising packet + uint8_t subevent; //!< The subevent number. 0xFF: No subevents uint8_t dataStatus; //!< Data complete uint8_t dataLength; //!< Length (in bytes) of the data field (evtData) uint8_t *pEvtData; //!< Data field of periodic advertising data @@ -1996,6 +2068,90 @@ typedef struct uint16_t syncHandle; //!< Identifying the periodic advertising train } gapSyncLostEvent_t; +#define PKT_TRANSMITTED 0x00 +#define PKT_NOT_TRANSMITTED 0x01 + +typedef struct +{ + uint8_t taskID; //!< set periodic advertising task ID + uint8_t enable; //!< bit0 Enable periodic advertising + //!< bit1 Include the ADI field in AUX_SYNC_IND PDUs + uint8_t advHandle; //!< Used to identify a periodic advertising train + uint16_t advIntervalMin; //!< Minimum advertising interval for periodic advertising.Time = N × 1.25ms.Time Range: 7.5ms to 81.91875s + uint16_t advIntervalMax; //!< Maximum advertising interval for periodic advertising.Time = N × 1.25ms.Time Range: 7.5ms to 81.91875s + uint16_t advProperties; //!< bit6 Include TxPower in the advertising PDU + uint8_t numSubevents; //!< Number of subevents. + uint8_t subInterval; //!< Interval between subevents.Time = N × 1.25ms.Time Range: 7.5 ms to 318.75 ms + uint8_t rspSlotDelay; //!< Time between the advertising packet in a subevent and the first response slot.Time = N × 1.25 ms.Time Range: 1.25ms to 317.5ms + uint8_t rspSlotSpacing; //!< Time between response slots.Time = N × 0.125ms.Time Range: 0.25ms to 31.875ms + uint8_t numRspSlots; //!< Number of subevent response slots.Range: 0x01 to 0xFF +}gapPawrSetParam_t; + +typedef struct +{ + uint8_t subevent; //!< The subevent index of the data contained in this command. + uint8_t rspSlotStart; //!< The first response slots to be used in this subevent. + uint8_t rspSlotCount; //!< The number of response slots to be used. + uint8_t dataLength; //!< The number of octets in the Subevent_Data parameter. + uint16_t rspMaxLength; //!< + uint8_t *pData; //!< Advertising data +}gapPawrSetData_t; + +typedef struct +{ + uint16_t syncHandle; //!< identifying the PAwR train + uint16_t reqEvent; //!< The value of paEventCounter the periodic advertising packet that the Host is responding to + uint8_t reqSubevent; //!< The subevent for the periodic advertising packet that the Host is responding to + uint8_t rspSubevent; //!< Used to identify the subevent of the PAwR train. + uint8_t rspSlot; //!< Used to identify the response slot of the PAwR train. + uint8_t rspDataLength;//!< The number of octets in the Response_Data parameter. + uint8_t *pRspData; //!< Response data +} gapPawrSetResponseData_t; + +typedef struct +{ + tmos_event_hdr_t hdr; //!< GAP_MSG_EVENT and status + uint8_t opcode; //!< GAP_PERI_ADV_SUBEVENT_DATA_REQ_EVENT + uint8_t advHandle; + uint8_t subeventStart; + uint8_t subeventDataCount; +} gapPawrDataRequestEvent_t; + +typedef struct +{ + uint8_t txPower; + int8_t rssi; + uint8_t cteType; + uint8_t rspSlot; + uint8_t dataStatus; + uint8_t dataLength; + uint8_t *pData; +}pawrResponseInfo_t; + +typedef struct +{ + tmos_event_hdr_t hdr; //!< GAP_MSG_EVENT and status + uint8_t opcode; //!< GAP_PERI_ADV_RESPONSE_REPORT_EVENT + uint8_t advHandle; + uint8_t subevent; + uint8_t txStatus; //!< 0x00 packet was transmitted. 0x01 packet was not transmitted. + uint8_t numResponses; + pawrResponseInfo_t *pList; +} gapPawrResponseEvent_t; + +typedef struct +{ + uint8_t advHandle; //!< Used to identify a periodic advertising train + uint8_t subevent; //!< Subevent where the connection request is to be sent. + uint8_t ownAddrType; + uint8_t peerAddrType; + uint8_t peerAddr[6]; + uint16_t connIntervalMin; + uint16_t connIntervalMax; + uint16_t maxLatency; + uint16_t supervisionTimeout; +} gapPawrCreateConnection_t; + /** * GAP_SCAN_REQUEST_EVENT message format. This message is sent to the * app when the advertiser receives a SCAN_REQ PDU or an AUX_SCAN_REQ PDU @@ -2054,11 +2210,13 @@ typedef struct uint8_t devAddrType; //!< Device address type: @ref GAP_ADDR_TYPE_DEFINES uint8_t devAddr[B_ADDR_LEN]; //!< Device address of link uint16_t connectionHandle; //!< Connection Handle from controller used to ref the device - uint8_t connRole; //!< Connection formed as Master or Slave + uint8_t connRole; //!< Connection formed as Central or Peripheral uint16_t connInterval; //!< Connection Interval uint16_t connLatency; //!< Connection Latency uint16_t connTimeout; //!< Connection Timeout uint8_t clockAccuracy; //!< Clock Accuracy + uint8_t advHandle; //!< Used to identify an advertising set + uint16_t syncHandle; //!< Identifying the periodic advertising train } gapEstLinkReqEvent_t; /** @@ -2103,6 +2261,30 @@ typedef struct uint8_t connRxPHYS; //!< rx phy(GAP_PHY_VAL_TYPE) } gapPhyUpdateEvent_t; +/** + * GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT message format. This message is sent to the app(GAP_MSG_EVENT) + * when the periodic advertising sync transfer received. + */ +typedef struct +{ + tmos_event_hdr_t hdr; //!< GAP_MSG_EVENT and status + uint8_t opcode; //!< GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT + uint8_t status; //!< bStatus_t + uint16_t connectionHandle; //!< Connection handle of the update + uint16_t serviceData; //!< A value provided by the peer device + uint16_t syncHandle; //!< Identifying the periodic advertising train + uint8_t advertisingSID; //!< Value of the Advertising SID used to advertise the periodic advertising + uint8_t devAddrType; //!< Device address type: @ref GAP_ADDR_TYPE_DEFINES + uint8_t devAddr[B_ADDR_LEN]; //!< Device address of periodic advertising + uint8_t advertisingPHY; //!< the PHY used for the periodic advertising + uint16_t periodicInterval; //!< Periodic advertising interval + uint8_t clockAccuracy; //!< Clock Accuracy + uint8_t numSubevents; //!< Number of subevents + uint8_t subInterval; //!< Subevent interval + uint8_t rspSlotDelay; //!< Response slot delay + uint8_t rspSlotSpacing; //!< Response slot spacing +} gapPeriodicTranReceivec_t; + /** * GAP_PASSKEY_NEEDED_EVENT message format. This message is sent to the * app when a Passkey is needed from the app's user interface. @@ -2196,7 +2378,7 @@ typedef struct /** * gapRole_States_t defined */ -typedef unsigned long gapRole_States_t; +typedef uint32_t gapRole_States_t; // gapRole_States_t @ 4b'[3-0]-advertising states #define GAPROLE_STATE_ADV_MASK (0xF) //!< advertising states mask @@ -2231,7 +2413,19 @@ typedef unsigned long gapRole_States_t; // gapRole_States_t @ 8b'[31-24] - indicates which fields change #define GAPROLE_PERIODIC_STATE_VALID (1<<24) //!< indicates periodic advertising states change #define GAPROLE_CTE_T_STATE_VALID (1<<25) //!< indicates Connectionless CTE Transmit states change -#define GAPROLE_BIG_T_STATE_VALID (1<<26) //!< indicates BIG Transmit states change + +typedef union { + struct { + uint32_t advState : 4; + uint32_t periState : 4; + uint32_t cteState : 4; + uint32_t Reserved0 : 12; + uint32_t periValid : 1; + uint32_t cteValid : 1; + uint32_t Reserved1 : 6; + }; + uint32_t gapRoleStates; +} gapRoleStates_t; /** * gapRole Event Structure @@ -2254,6 +2448,7 @@ typedef union gapLinkUpdateEvent_t linkUpdate; //!< Link update event structure. gapTerminateLinkEvent_t linkTerminate; //!< Link terminated event structure. gapPhyUpdateEvent_t linkPhyUpdate; //!< Link phy update event structure. + gapPeriodicTranReceivec_t syncTran; } gapRoleEvent_t; /** @@ -2294,6 +2489,46 @@ typedef struct //!< (a value of 0 indicates that the presence or absence of a Constant Tone Extension is irrelevant). } gapCreateSync_t; +/** + * Type of GAPRole_SyncTransferParameters command parameters. + */ +typedef struct +{ + uint16_t connHandle; //!< Used to identify the Connection handle + uint8_t mode; //!< specifies the action to be taken when periodic advertising synchronization information is received +#define MODE_0 0 //!< No attempt is made to synchronize to the periodic advertising and no + //!< gapPeriodicTranReceivec_t event is sent to the APP. +#define MODE_1 1 //!< An gapPeriodicTranReceivec_t event is sent to the APP. + //!< gapPeriodicAdvDeviceInfoEvent_t events will be disabled. +#define MODE_2 2 //!< An gapPeriodicTranReceivec_t event is sent to the APP. + //!< gapPeriodicAdvDeviceInfoEvent_t events will be enabled with duplicate filtering disabled. +#define MODE_3 3 //!< An gapPeriodicTranReceivec_t event is sent to the APP. + //!< gapPeriodicAdvDeviceInfoEvent_t events will be enabled with duplicate filtering enabled. + uint16_t skip; //!< resv(The number of periodic advertising packets that can be skipped after a successful receive). + uint16_t syncTimeout; //!< Synchronization timeout for the periodic advertising train.Time = N*10 ms.Range: 0x000A to 0x4000 + uint8_t cteType; //!< Reserved for future use. +} gapSyncTransferParam_t; + +/** + * Type of GAPRole_SyncTransferSync command parameters. + */ +typedef struct +{ + uint16_t connHandle; //!< Used to identify the Connection handle + uint16_t serviceData; //!< A value provided by the Host for use by the Host of the peer device. + uint16_t syncHandle; //!< Identifier of the periodic advertising train to a connected device. +} gapSyncTransferSync_t; + +/** + * Type of GAPRole_SyncTransferAdvertising command parameters. + */ +typedef struct +{ + uint16_t connHandle; //!< Used to identify the Connection handle + uint16_t serviceData; //!< A value provided by the Host for use by the Host of the peer device. + uint8_t advHandle; //!< Identifier of the periodic advertising in an advertising set to a connected device. +} gapSyncTransferAdvertising_t; + /** * Type of GAPRole_SetPathLossReporting command parameters. */ @@ -2662,7 +2897,7 @@ typedef struct tag_rf_config * * @return SUCCESS if successful, FAILURE if failed. */ -#define TMOS_TimerInit (( bStatus_t (*) ( pfnGetSysClock fnGetClock )) BLE_LIB_JT(16)) +#define TMOS_TimerInit (( bStatus_t (*) ( bleClockConfig_t *pClockConfig )) BLE_LIB_JT(16)) /** * @brief interrupt handler. @@ -2671,7 +2906,7 @@ typedef struct tag_rf_config * * @return None */ -#define TMOS_TimerIRQHandler (( void (*) ( void )) BLE_LIB_JT(120) ) +#define TMOS_TimerIRQHandler (( bStatus_t (*) ( uint32_t *time )) BLE_LIB_JT(120) ) /** * @brief Process system @@ -4129,6 +4364,39 @@ typedef struct tag_rf_config */ #define GAPRole_TerminateSync (( bStatus_t (*) ( uint16_t syncHandle )) BLE_LIB_JT(125) ) +/** + * @brief used to instruct the Controller to send synchronization information about the periodic + * advertising in an advertising set to a connected device. + * + * @param pSync - sync parameters@ gapSyncTransferParam_t + * + * @return bStatus_t: HCI Error Code.
+ * + */ +#define GAPRole_SyncTransferParameters (( bStatus_t (*) ( gapSyncTransferParam_t *pSync )) BLE_LIB_JT(144) ) + +/** + * @brief used to instruct the Controller to send synchronization information about the periodic + * advertising train identified by the Sync_Handle parameter to a connected device. + * + * @param pSync - sync parameters@ gapSyncTransferSync_t + * + * @return bStatus_t: HCI Error Code.
+ * + */ +#define GAPRole_SyncTransferSync (( bStatus_t (*) ( gapSyncTransferSync_t *pSync )) BLE_LIB_JT(145) ) + +/** + * @brief used to instruct the Controller to send synchronization information about the periodic + * advertising in an advertising set to a connected device. + * + * @param pSync - sync parameters@ gapSyncTransferAdvertising_t + * + * @return bStatus_t: HCI Error Code.
+ * + */ +#define GAPRole_SyncTransferAdvertising (( bStatus_t (*) ( gapSyncTransferAdvertising_t *pSync )) BLE_LIB_JT(146) ) + /** * @brief Update the link connection parameters. * @@ -4199,6 +4467,50 @@ typedef struct tag_rf_config */ #define GAPRole_SetPowerlevel (( bStatus_t (*) ( gapRolePowerlevelManagement_t *pParm )) BLE_LIB_JT(136) ) +/** + * @brief used to set the parameters for pawr advertising.. + * + * @param pParm - set pawr parameters@ gapPawrSetParam_t + * + * @return Command Status. + * + */ +#define GAPPawr_SetParameters (( bStatus_t (*) ( gapPawrSetParam_t *pParm )) BLE_LIB_JT(141) ) + +/** + * @brief used to set the data for one or more subevents of PAwR in reply to an + * HCI_LE_Periodic_Advertising_Subevent_Data_Request event. + * + * @param advHandle - advertising handle + * @param numSubevents - the number of subevent data contained in the parameter arrays. + * @param pParm - The arrayed parameter @ gapPawrSetResponseData_t + * + * @return Command Status. + * + */ +#define GAPPawr_SetSubeventData (( bStatus_t (*) ( uint8_t advHandle, uint8_t numSubevents, gapPawrSetData_t *pParm )) BLE_LIB_JT(142) ) + +/** + * @brief used by the Host to set the data for a response slot in a specific subevent + * of the PAwR identified by the Sync_Handle. + * + * @param pParm - The parameter @ gapPawrSetResponseData_t + * + * @return Command Status. + * + */ +#define GAPPawr_SetResponseData (( bStatus_t (*) ( gapPawrSetResponseData_t *pParm )) BLE_LIB_JT(143) ) + +/** + * @brief used to create an ACL connection between a periodic advertiser and a synchronized device. + * + * @param pParm - The parameter @ gapPawrCreateConnection_t + * + * @return Command Status. + * + */ +#define GAPPawr_CreatConnection (( bStatus_t (*) ( gapPawrCreateConnection_t *pParm )) BLE_LIB_JT(147) ) + /*------------------------------------------------------------------- * FUNCTIONS - BROADCASTER_PROFILE_API Broadcaster Profile API */ @@ -4432,7 +4744,7 @@ typedef struct tag_rf_config * broadcast type(0xFF):received by all matching types; * others:only received by matching type * - * @return 0 - success. + * @return 0 - success. 1-access address error 2-busy */ #define RF_Rx (( bStatus_t (*) ( uint8_t *txBuf, uint8_t txLen, uint8_t pktRxType, uint8_t pktTxType ) ) BLE_LIB_JT(101) ) @@ -4448,7 +4760,7 @@ typedef struct tag_rf_config * broadcast type(0xFF):receive all matching types, * others:receive match type or broadcast type * - * @return 0 - success. + * @return 0 - success. 1-access address error 2-busy */ #define RF_Tx (( bStatus_t (*) ( uint8_t *txBuf, uint8_t txLen, uint8_t pktTxType, uint8_t pktRxType ) ) BLE_LIB_JT(102) ) diff --git a/EVT/EXAM/BLE/LIB/wchble_rom.hex b/EVT/EXAM/BLE/LIB/wchble_rom.hex index 26c7b70..cee2a81 100644 --- a/EVT/EXAM/BLE/LIB/wchble_rom.hex +++ b/EVT/EXAM/BLE/LIB/wchble_rom.hex @@ -1,10617 +1,11949 @@ :020000024000BC -:100000006F807215000000000018011800280128F8 +:100000006FD052500000000000180118002801288D :100010000228032800290129022903290429052986 :10002000062907290829002A012A022A032A042A64 -:10003000052AA62A809106004A270400DC03002036 -:100040002004002098030020860300205203002093 -:10005000B0280400D8280400A6290400962B040028 -:10006000402C0400D625040068250400020200206C -:1000700094250400AC3004001605002086280400F6 -:10008000D42D04007C3606005A380600C438060019 -:10009000FAF305000EF4050092570500DE4905004D -:1000A000BE300600042E040052FC0500FAD90400FC -:1000B0008ADA0400E4DA04001C3904005A39040026 -:1000C000DA370400869C0400AC9704005407002033 -:1000D000D6A804003CAC0400CA8A04006C8A040060 -:1000E000308E0400168B04004A8A0400C28A040081 -:1000F000008A0400908B0400E88B0400988B0400B5 -:100100009C8B0400328C0400F08B0400208C0400D3 -:10011000E4900400EC9004008C8B0400948B0400A9 -:10012000308C0400E8900400DE8C04004692040049 -:1001300088B90400FCB9040036BA0400D29E040059 -:10014000E89E0400209F0400A88404008685040023 -:10015000EA8504001E560400C0500400B87A04006A -:100160003C51040000760400406B0600486806001D -:10017000BA720600AA83060076820600D4860600BC -:1001800090860600CC8606007E8706002E58060064 -:100190000E870600007A0600267A0600467A0600D8 -:1001A000EE87060074800600128006005E88060056 -:1001B000785A06000C5B06002C5B0600DE5A06002F -:1001C000E4140600A4010600EC0406006C0206001C -:1001D0000C0B0600523106004C3006006258060037 -:1001E000783204001EF4050032FC05002AFD0500EB -:1001F000BC28060056290600B82A0600A8A204005A -:1002000098140600800B06005A110600040E060022 -:1002100054010600F4060020C2F40500FA86060028 -:1002200094860600C8860600C48606003C2B04009F -:1002300012A0040002870600DC1606002E18060035 -:100240009A18060018730600FE8606000687060048 -:100250006A4905000A870600AA1A0020061F002026 -:10026000F87206009677060000000000000000000B -:10027000000000000000000000000000000000007E +:10003000052AA62A24E506005832040042040020BE +:10004000BC040020CA0300209C03002032030020CF +:10005000FA3304003A340400D83504005838040058 +:100060003C390400B83004006A3004008C020020DF +:1000700036020020F63D0400D0070020D0330400F3 +:10008000FE3A0400D6810600B883060024840600E8 +:10009000323706006A37060076670500EA5A05001F +:1000A000347C06002E3B04007A3F060084EE0400F8 +:1000B00014EF04006EEF04000E4604004C460400EA +:1000C000CC440400ACB00400C8AB0400480A0020D3 +:1000D00000BD040066C00400EE9E0400909E040073 +:1000E00052A204003A9F04006E9E0400E69E0400A3 +:1000F000249E0400B49F04000CA00400BC9F0400D4 +:10010000C09F040056A0040014A0040044A00400F2 +:1001100004A5040008A50400B09F0400B89F0400D3 +:1001200054A0040006A5040002A1040062A6040075 +:10013000C4CD040038CE040072CE0400F8B204002E +:100140000EB3040046B3040096930400BC9504006B +:1001500098960400AE630400445E0400AA8904007B +:10016000C05E0400F28404005CC20600B4BA06005B +:10017000A0BF0600BAD6060086D50600E4D9060060 +:10018000A0D90600DCD906002CDB060090A90600E9 +:10019000BCDA060016CD06003CCD06005CCD06009C +:1001A0009CDB06008CD306002AD306000CDC06007C +:1001B00014AC0600A8AC0600C8AC06007AAC060079 +:1001C000F85E0600504A0600A64D06008E4B06005B +:1001D000685506008C7C0600CE7B0600C4A906008C +:1001E0006A3F04007A3706005A3F06005240060074 +:1001F0009E7206002A730600A4740600D2B604009C +:10020000365E0600FC5506002C480600BA5806006B +:10021000004A0600BA090020E63706000ADA06009E +:10022000A4D90600D8D90600D4D90600E2370400C4 +:100230003CB4040012DA0600E460060048620600DE +:10024000B4620600FEBF06000EDA060058DA0600A9 +:10025000765A05005CDA0600D2230020E42C002048 +:10026000DEBF06007CC1060060DA0600B4DA0600D4 +:10027000B8DA060016DA060050DA060054DA06008C :100280006373B60082801C419105110523AEF5FE13 -:10029000C5BFB7270020373700209387873513075E -:1002A000C78D6373F700828023A007009107D5BF35 -:1002B0005DC5AA870145D5C58D07C207C183F19BDE -:1002C000C207C18313074003636CF702372700207E -:1002D0000325474E372700208326C74D6397A60284 -:1002E0003727002003274757014525CF4111C20773 -:1002F00006C60545DD8D0297B24001454101828069 -:10030000372700200325074EF1B77A2139E75A2114 -:100310006365F704B72600203306F740214893862B -:10032000C64E6375C8028328050003D8660013868D -:1003300087001D8F2A9661175AA2232016012313C6 -:10034000060010C15EA1130788FFFAA26EA1EE227B -:100350002105B387F540FEA28280084141B70145DF -:100360008280828009CDB727002003A3474EB7279C -:10037000002083A8C74D81469A8763E317018280D6 -:1003800003A80700636BF5086369A8081387870053 -:10039000E367E5FEF223216705076319E6003726C8 -:1003A00000200347C63E05072306E63E3726002009 -:1003B0001305C64ECE237A21239307001306C64E9B -:1003C0002E97420741837AA1638367023725002075 -:1003D0000325054E630DF500EA2211E9DE2223A074 -:1003E00006012107BE95A105CEA27AA2B687984341 -:1003F000E30717F9B726002083A6064EE301D7F8D6 -:100400007623B5FED6234E231843A106AE96D6A377 -:1004100098C37E22A1077EA28280BE86C287B1BF1A -:10042000B7270020B726002083A7474E03A6C64D56 -:100430002A87B305B5406314F6003A8529A8938648 -:1004400087009C43E369D7FEE377F7FE2E85E3E45C -:10045000D5FEE3F2F5FE828023AC05FE1C4181E768 -:100460000CC18280BA8703A787FF6DFF23ACB7FE5C -:100470008280411126C2B724002083A7844E22C463 -:100480004AC006C60144014981EBA165973004E0EA -:10049000E780A0970DC819A803C7E7FF631CA70250 -:1004A0001DCCA165972004E0E780C06703A7844EB8 -:1004B000832784FF6317E40223A4F44EFD57232C03 -:1004C00004FE230FF4FE2285B240224492440249E6 -:1004D0004101828011E03E8983A787FF75B73E8482 -:1004E000E5BF232CF9FED9BFB727002083A7C75348 -:1004F00099E33E858280BA236315B7009823E30A07 -:10050000A7FEDC47F5B70111680006CE22CC975054 -:1005100005E0E7800039FD576307F508324741C31E -:10052000372400201304C44E1848630DF700B72782 -:10053000002083A78758829732471C486373F700CF -:10054000BA873E95373400209307C4819C4F13042B -:10055000C48199CBB737002083A647883707CDFFE2 -:100560007D179C46F98F9CC6B727002083A7875626 -:10057000829719E91C4C85C7970006E0E780A0B573 -:1005800097F005E0E78000121C4C91CBB7370020B4 -:1005900003A74788B70633001C47D58F1CC7F24016 -:1005A000624405618280372400201304C44E1C4835 -:1005B000E387A7FEB727002083A7875882971C48A8 -:1005C00049B709CD81CD19CA81473387F500142376 -:1005D0003307F500850714A3E319F6FE828019C9D5 -:1005E00091C909CA910583A7C5FF11057D16232E60 -:1005F000F5FEC5BF828001C919C62A960505A30F5D -:10060000B5FEE31DA6FE828081473307F500030790 -:10061000070019E33E8582808507C5BF01112E863C -:1006200026CAAA84131506019305F004418122CC41 -:1006300006CE32C6B5392A8401C53246A685513761 -:100640002285F2406244D24405618280854705C11B -:1006500099CD11CE8147B306F5003387F50094227A -:1006600018236398E6008507E317F6FE85473E8565 -:1006700082808147EDBF9307F6FFBE952A966313EC -:10068000C5008280FD159C310505A30FF5FEC5BF91 -:10069000AA87014581CF09CE3E96850703C7F7FF9C -:1006A0006317B700E39BC7FE054582808280014542 -:1006B000828079714AD03729002022D40324C9537B -:1006C00006D626D24ECE52CC56CA5AC85EC63DCCAD -:1006D00037CAC901B72A0020B72900208144372B27 -:1006E0000020130AFA37938A0A549389C94E3E2090 -:1006F00099EB5C44BDE4232EF952832BC400228580 -:1007000095315E840DA883278B5882971C4433074C -:10071000F540636AEA0423A809002E2008209720E8 -:1007200004E0E780204054405C44E9D61844A284A9 -:10073000369718C43E8445FCB72700209387C74EE0 -:10074000984B894663FEE602791798CBB250225443 -:1007500092540259F249624AD24A424BB24B456125 -:100760008280DCC459BF03A78A0201CB03A7090119 -:10077000898F63F4E70023A8F900A284404465BF91 -:1007800023A80700E1B701114AC8372900208327B1 -:10079000895106CE22CC26CA4EC652C456C25AC071 -:1007A00081C78297232C095093078951DC43372452 -:1007B00000201304845191C3829783278951639940 -:1007C0000714B73400209387C481DC339384C48139 -:1007D000858B99CFF830A3820400954763FAE70030 -:1007E000EF106060FC30F5178A07A2979C43829750 -:1007F000373A00209307CA85DC27130ACA85918BF4 -:1008000099C3EF1050401C4491C3829737240020B5 -:10081000B72900209307C44E03A789539033930A46 -:10082000C44E8347C44E93961700BA969622B5CA13 -:100830008347C44E63EFC706832789512306044EBE -:10084000E1EB9C3489CBFC3099E7A384040097F05A -:1008500005E0E780E035B727002083A78758CDCB98 -:10086000FD5723A8FA00B135B727002083A7875684 -:10087000C5C3F830954763EDE7088347CA00918BFD -:10088000C1EB83C61A0003A6895363CDD70862441F -:10089000F240D2444249B249224A924A024B05618F -:1008A0009DB1850793F7F70F2306F44EE3EBC7F6E8 -:1008B00041B786073E970E23231007000345C44E19 -:1008C000B727002083A7475113172500372B002097 -:1008D000BA979C43231A0B52829783574B53034773 -:1008E000C44E93C7F7FF7D8D9317170003A7895355 -:1008F0003E971E235D8D0AA38347C44E81C785079B -:100900002306F44E0347C44E83C71A00E376F7F27A -:10091000F2406244D2444249B249224A924A024BCE -:10092000056182801397170032971A2375F38507A4 -:10093000A9BFAD6737470240BD072326F720010056 -:100940000100B72700209387C74EC84F832787260B -:10095000BD66BD0693C7F7FF99836A052326D72096 -:100960005D8D82808280B727002003C6C76DB727C0 -:10097000002003A7C73B81476315F60081463685F3 -:100980008280BA8613078702835587FDE389A5FE17 -:10099000850793F7F70FCDB7B727002003C6D76DAC -:1009A000B727002083A7873D01476365C7008146BD -:1009B00036858280BE86990783D5A7FFE38AA5FE88 -:1009C0000507E5B7B727002003A7073D19E3014650 -:1009D00015A81C4703D8A700636B0501835847007F -:1009E000B38608016355D500814663941601184308 -:1009F000F1BF3E86C10703D3A7FF6317A30099C1C8 -:100A000023900501328582808506C206C182F1BF2E -:100A1000B727002003C6C76DB727002003A7876844 -:100A200081476315F600814636858280BA861307B2 -:100A3000C703835567FCE389A5FE850793F7F70F86 -:100A4000CDB7032785117DC7411122C406C65C2599 -:100A50008345C5042A8493F7C70F5CA51437522732 -:100A600013958601618563F6C50663500506082760 -:100A700093F6F60714B7054693E627006314C500FE -:100A800093E6170054A45C4389075CC34CB8032564 -:100A900004112E864C4309052D36832784115038C6 -:100AA000D443DA27B296118FD4C3DAA789473CBC66 -:100AB000B72700200347440383C727556371F70412 -:100AC0005C2493E707015CA41DA893E717005CA4CE -:100AD00075BF9376F60F635905020827854513E61F -:100AE00027006314B50013E6170050A454B8A304FC -:100AF000070085473CBC832784119C43D5FBB2404B -:100B0000224401454101828093E717005CA454B858 -:100B1000A3040700032504114C4309055D34832712 -:100B200084115038D443DA27B296118FD4C3DAA790 -:100B30008D47C9B705458280B737002083A7478016 -:100B4000411122C406C6858B2A84D5E3416513056D -:100B500025F5976005E0E78020BE51C93C253EA5FC -:100B600083270412ADE32320A4122322A412854775 -:100B70002310F404232005007C2854415EA558343A -:100B800018A5054718B53737002003274783138575 -:100B9000170215811C437D151375F50F9CC25C432C -:100BA000DCC21C479CC65C47DCC61C4B9CCA5C4B29 -:100BB000DCCA1C4F9CCE5C4FDCCE19CD938606025E -:100BC00013070702C1BF8327441288C38357040455 -:100BD0002322A412850769BFB72700209387876E59 -:100BE0009A2705079AA7B2402244410182805C24DB -:100BF00023090400054593C747005CA4EDB71C2DED -:100C000093F7E70FD5E71C3DC5E73029542509CAFE -:100C100037270020834545030347375563E7E50041 -:100C200013F7060159C7014709C6C18A0357251C96 -:100C300081C68356651C36972DCF411122C43724B7 -:100C40000020130404546A2C1307C71237460F0000 -:100C5000B335A70213060624814626C206C633050D -:100C6000A702978006E0E78000007C387D54B384BB -:100C7000A700B727002003A787778327070963F317 -:100C800087003E84184375FBB727002083A7875849 -:100C9000829781476364A400B307A440B240224412 -:100CA000B3B7970093C7170092443E8541018280F5 -:100CB00081473E858280B72600209387866E83A772 -:100CC000070963850744797126D29386866EB72417 -:100CD00000201387045403A586090353E70137470F -:100CE0000F0006D622D44AD04ECE52CC56CA5AC88D -:100CF0005EC662C40148FD5893840454130EF72362 -:100D00001306072403D7470883A50709330767029B -:100D100072973357C7023387E540637517013E85E5 -:100D2000BA8805489C43F9FF6304080023ACA60871 -:100D300003A48609B7490F00938BF92337290020B4 -:100D4000930A0032130B204E054A93890924832706 -:100D50008958032C04098297637B852DF62C035751 -:100D60004408FC38330CAC403307D7025E97335746 -:100D700037033E97636B87237E3CA30F04002285D5 -:100D800085077EBC83470414C5C72D212285975053 -:100D900005E0E780C0DD49E1EA2C83574408374786 -:100DA0000F009306F723B387A702130707248329AD -:100DB0000409230A0402B697B3D7E7020547B387AD -:100DC000F9402324F4088327C408BE993C3423281F -:100DD00034096391E7060357E407363C63ECE60405 -:100DE00014286399F60483278411A9E78327440A0A -:100DF000B1E374349D47639FF6021E3CB387E7025C -:100E00001307204EB387E70203274409B3D7E7024D -:100E1000F828BA972312F408B25022549254025977 -:100E2000F249624AD24A424BB24B224C456182801F -:100E3000F92CA9BF1E308DCF763C5A3037460F00B3 -:100E400056B03387E640B387E7023A3013060624EC -:100E500081468145BA97C207C1833385A7023EB058 -:100E6000978006E0E78020E001C5AA99232834098D -:100E7000832789588297AA89832789588297E30D07 -:100E800035FF832789588329840882973385A940B1 -:100E900075C18327C408637FF50C37490F00130918 -:100EA0000924B3352503F22C8146330525039780A9 -:100EB00006E0E78040DB3E3037370020832687831B -:100EC0003E95B567BD07DCC6010001008327878317 -:100ED00009678359240298C7E62C37370020130787 -:100EE000C781930600F854A30605E8D33385990219 -:100EF0003D673D0737460F00D8C7130606248146D5 -:100F00008145978006E0E78000D60DC1B337250301 -:100F100026868146B305B9023305A902BE9597809E -:100F200006E0E78040D43385A9402AB097F005E079 -:100F3000E780C0C597F005E0E78000D038348547EA -:100F40008145631EF70037E505001305A577972057 -:100F500004E0E78020FD930700FD7CA475BD378584 -:100F600005001305E511972004E0E780A0FB930737 -:100F700010FCE5B73834854703A344036317F70033 -:100F80009545E30B03E8154529A0E30703E89545DC -:100F900019452254B25092540259F249624AD24A37 -:100FA000424BB24B224C4561028363580C047E3C99 -:100FB00085077EBC8347041499E32285892A22850C -:100FC000975005E0E780A0BA832704090327C408E7 -:100FD000BA972328F4083C3463974701228597D0B9 -:100FE00005E0E78080447C3C854585077CBCDC5877 -:100FF000E38F07D41545829799BB5E3C13070032F7 -:101000008E07B387D70293870719B3D7E702E3F5B3 -:1010100087E1A1452285975005E0E78020AD2305B3 -:10102000A40203A344038945E31F03F4F5B35E3C24 -:10103000FA2C330C85418E07B387E7029387071993 -:10104000B3D757036374FC0A8327895882977E3C81 -:101050002A8C85077EBC8347041499E322854528A2 -:101060002285975005E0E78080B0E31705DA8327F3 -:1010700004090327C408BA972328F4087C3C13F713 -:10108000070F21CF2285974005E0E780C064A30FBA -:10109000040083270409E379FCFA8356E4071E3C25 -:1010A00003274409B387D702B3876703B3D7E7029F -:1010B000F8280607BA972312F4083C3463924703D2 -:1010C0003E3CE3F6D7C8228597D005E0E780E035BF -:1010D000DC58E38E07C68D4531BF85077CBC55BF04 -:1010E000DC58E38607C68D45194531B7E3460CD277 -:1010F000A1452285975005E0E780409F2305A40283 -:1011000003A34403E30A03D09145B5BD82807971FE -:1011100026D206D622D44AD04ECE52CC56CA5AC86F -:101120005EC68347350303447513AA843E94137443 -:10113000F40F9307400263F687001304B4FD1374A1 -:10114000F40F03AA841383AAC413A38B84122286E8 -:101150005285D685978006E0E78060AB058915E566 -:1011600003CBD41201498149337B6403930B5002B2 -:101170004A865285D685978006E0E78040A9058992 -:1011800015C5639169031374F90F238B8412B25050 -:10119000225492540259F249624AD24A424BB24B0B -:1011A000456182808509E20993D989410509E311E6 -:1011B00079FDE1BF83278509723D797193D60701D7 -:1011C000BD8EC206C182358E135776409357564066 -:1011D000898B058B5D8F93573640918B5D8F93572D -:1011E0001640A18B5D8F93171600C18B5D8F9317EF -:1011F000360093F707025D8F9317560093558600CC -:1012000093F707041E065D8F1376F60F518F93D761 -:10121000554013D63540118A898BD18F13D675402E -:10122000D18F13D61540218AD18F13961500418A8C -:10123000D18F1396350013760602D18F1396550081 -:10124000137606049E05D18F93F5F50FCD8FA20777 -:1012500045465D8F3307C70222D42A8426D252CC5A -:1012600056CA032A8413832AC4135AC806D636974B -:101270004207418393577740135557400989858B1F -:10128000C98F135537401189C98F135517402189CC -:10129000C98F131517004189C98F131537001375AE -:1012A0000502C98F13155700935587001375050460 -:1012B0001E07C98F1377F70FD98F13D5354013D772 -:1012C00055401189098B498F13D57540498F13D526 -:1012D00015402189498F139515004189498F139530 -:1012E000350013750502498F1395550013750504D4 -:1012F0009E05498F93F5F50F4D8F2207D98FB38740 -:10130000C7024AD04ECE5EC662C4B697C207C1833A -:1013100013D7774013D557400989058B498F13D5CB -:1013200037401189498F13D517402189498F13956B -:1013300017004189498F1395370013750502498FAE -:101340001395570093D58700137505049E07498FA1 -:1013500093F7F70FD98F13D5354013D7554011891F -:10136000098B498F13D57540498F13D515402189B5 -:10137000498F139515004189498F139535001375D1 -:101380000502498F13955500137505049E05498F75 -:1013900093F5F50F4D8F2207D98FB387C702130638 -:1013A00050025285D685B697BD8E93940601C180B2 -:1013B00033F6C402137BF60F978006E0E7802085A2 -:1013C00005890DED8347D41201498149B384970201 -:1013D000130C5002C1804A865285D685978006E05C -:1013E000E780E0820589937BF90F11C5638634039A -:1013F000850993F9F90F0509E31F89FD230B641390 -:10140000B250225492540259F249624AD24A424B93 -:10141000B24B224C456182805E8BCDB78327C508D5 -:1014200003568508797193D60701BD8EC206C18225 -:10143000358E1357764093575640898B058B5D8FB9 -:1014400093573640918B5D8F93571640A18B5D8FDC -:1014500093171600C18B5D8F9317360093F7070221 -:101460005D8F931756009355860093F707041E0669 -:101470005D8F1376F60F518F93D7554013D63540B5 -:10148000118A898BD18F13D67540D18F13D6154011 -:10149000218AD18F13961500418AD18F139635007A -:1014A00013760602D18F13965500137606049E0517 -:1014B000D18F93F5F50FCD8FA20745465D8F33078A -:1014C000C70222D42A8426D252CC56CA032A8409BF -:1014D000832AC4095AC806D63697420741839357D0 -:1014E0007740135557400989858BC98F135537406D -:1014F0001189C98F135517402189C98F13151700FA -:101500004189C98F1315370013750502C98F13154B -:10151000570093558700137505041E07C98F13776D -:10152000F70FD98F13D5354013D755401189098B43 -:10153000498F13D57540498F13D515402189498F9F -:10154000139515004189498F1395350013750502D0 -:10155000498F13955500137505049E05498F93F522 -:10156000F50F4D8F2207D98FB387C7024AD04ECED1 -:101570005EC662C4B697C207C18313D7774013D53E -:1015800057400989058B498F13D537401189498FF9 -:1015900013D517402189498F139517004189498F29 -:1015A0001395370013750502498F1395570093D58E -:1015B0008700137505049E07498F93F7F70FD98F9E -:1015C00013D5354013D755401189098B498F13D551 -:1015D0007540498F13D515402189498F1395150002 -:1015E0004189498F1395350013750502498F13956D -:1015F0005500137505049E05498F93F5F50F4D8F22 -:101600002207D98FB387C702130650025285D685A9 -:10161000B697BD8E93940601C18033F6C402137B46 -:10162000F60F977006E0E780805E05890DED834731 -:10163000140801498149B3849702130C5002C180F8 -:101640004A865285D685977006E0E780405C05891A -:10165000937BF90F11C563863403850993F9F90F5C -:101660000509E31F89FD230F6407B25022549254E9 -:101670000259F249624AD24A424BB24B224C45616E -:1016800082805E8BCDB78327450903568508797123 -:1016900093D60701BD8EC206C182358E13577640A0 -:1016A00093575640898B058B5D8F93573640918BAE -:1016B0005D8F93571640A18B5D8F93171600C18BDA -:1016C0005D8F9317360093F707025D8F93175600CF -:1016D0009355860093F707041E065D8F1376F60F69 -:1016E000518F93D7554013D63540118A898BD18FAE -:1016F00013D67540D18F13D61540218AD18F1396FA -:101700001500418AD18F1396350013760602D18FCA -:1017100013965500137606049E05D18F93F5F50FA9 -:10172000CD8FA20745465D8F3307C70222D42A8496 -:1017300026D252CC56CA032A840A832AC40A5AC81B -:1017400006D6369742074183935777401355574043 -:101750000989858BC98F135537401189C98F135556 -:1017600017402189C98F131517004189C98F131597 -:10177000370013750502C98F13155700935587005D -:10178000137505041E07C98F1377F70FD98F13D56B -:10179000354013D755401189098B498F13D57540B2 -:1017A000498F13D515402189498F1395150041891B -:1017B000498F1395350013750502498F1395550010 -:1017C000137505049E05498F93F5F50F4D8F22077C -:1017D000D98FB387C7024AD04ECE5EC662C4B697D1 -:1017E000C207C18313D7774013D557400989058BAA -:1017F000498F13D537401189498F13D51740218957 -:10180000498F139517004189498F13953700137538 -:101810000502498F1395570093D58700137505046A -:101820009E07498F93F7F70FD98F13D5354013D7FC -:1018300055401189098B498F13D57540498F13D5B0 -:1018400015402189498F139515004189498F1395BA -:10185000350013750502498F13955500137505045E -:101860009E05498F93F5F50F4D8F2207D98FB387CA -:10187000C702130650025285D685B697BD8E939443 -:101880000601C18033F6C402137BF60F977006E0A1 -:10189000E780E03705890DED8347F4080149814968 -:1018A000B3849702130C5002C1804A865285D685B4 -:1018B000977006E0E780A0350589937BF90F11C585 -:1018C00063863403850993F9F90F0509E31F89FD40 -:1018D000230F6407B250225492540259F249624ACB -:1018E000D24A424BB24B224C456182805E8BCDB7CF -:1018F0000111B727002022CC03A4477A26CA4AC880 -:101900004EC606CEAA8413092500854905C09C3021 -:101910003830858B6304F700405CCDBF19469305D2 -:1019200044004A85EFE09FD2E31835FF2285F2405C -:101930006244D2444249B249056182804111B727CD -:10194000002022C403A4477A26C24AC006C69304D4 -:101950002500054901E82285B2402244924402490B -:1019600041018280A6851305A40297A005E0E780C7 -:1019700040CDE30225FF405CF1BF4111B7270020B5 -:1019800022C403A4477A26C24AC006C6930425008F -:10199000054901E82285B2402244924402494101AE -:1019A0008280A6851305A40197A005E0E78060C9A1 -:1019B000E30225FF405CF1BF011122CC604126CA41 -:1019C0004AC84EC652C406CEAA841D4A13096505EC -:1019D0008549BC446364F400054591A0D8345C207B -:1019E0006317470503C784026304F7000040D5B7B7 -:1019F000583083C75405E31BF7FE1946CA85130503 -:101A00006400EFE0BFC4E31335FF582483C794029A -:101A1000E31EF7FC7A24BE34E31AF7FC0145F240DA -:101A20006244D2444249B249224A05618280E31F9E -:101A3000F7FA583083C75405E31AF7FA1946CA85EE -:101A400013056400EFE09FC0E31235FBC1BF011135 -:101A5000B727002022CC03A4C77926CA06CE2AC401 -:101A60002EC6854419E40145F2406244D244056122 -:101A700082809C841830858B6304F7000044DDB7B6 -:101A800019469305A10013052400EFE03FBCE317BE -:101A900095FE0545D1BFB737002003A78783011105 -:101AA0002AC62EC432C206CE3C4B93E707083CCB75 -:101AB00097E005E0E780800DB736002083A7C68059 -:101AC0003245A24523A0070018310348250022070C -:101AD00042084297034805004297034835006208D0 -:101AE000429798D758310348650022074208429729 -:101AF0000348450042970348750062084297D8D7CB -:101B000018350348A500220742084297034885007C -:101B100042970348B5006208429798DB583503485E -:101B2000E5002207420842970348C50068354297FE -:101B300062052A97D8DB9831A821220742052A9707 -:101B400088212A97A83162052A9798CFD831E821B1 -:101B5000220742052A97C8212A97E83162052A9769 -:101B6000D8CF9835A825220742052A9788252A9795 -:101B7000A83562052A9798D3D835E825220742056B -:101B80002A97C825EC352A97E2052E97D8D3D84353 -:101B9000759BD8C3D84313671700D8C398431367FE -:101BA000170098C3124603A7C6805C43858BADEB34 -:101BB0001C4F01451CA283A7C6809C4FA1831CB269 -:101BC00083A7C6809C4FC1833CA283A7C6809C4F3D -:101BD000E1833CB283A7C680D84F58A2D84F218357 -:101BE00058B2D84F418378A2D84F618378B29853C6 -:101BF00018A69853218318B69853418338A6985352 -:101C0000618338B6D85358A6D853218358B6D853D1 -:101C1000418378A6DC53E1837CB6F2400561828083 -:101C2000010051B7B737002003A787831605136556 -:101C300005083C4B93E707083CCBB737002083A748 -:101C4000C78003A7450E88C398CB03A7850E01451F -:101C5000D8CB03A7C50B98CF03A7050CD8CF03A7F4 -:101C6000450C98D303A7850CD8D303A7C50C98D7E8 -:101C700003A7050DD8D703A7450D98DB03A7850D4E -:101C8000D8DB03A7C50D98C703A7050ED8C798438F -:101C90001367070498C38280B737002003A78783A0 -:101CA0001605136505083C4B93E707083CCBB7378F -:101CB000002083A7C78003A7C50E88C398CB03A7BE -:101CC000050F0145D8CB03A7C50B98CF03A7050C7B -:101CD000D8CF03A7450C98D303A7850CD8D303A767 -:101CE000C50C98D703A7050DD8D703A7450D98DBDA -:101CF00003A7850DD8DB03A7C50D98C703A7050E5D -:101D0000D8C798431367070498C3B7370020938751 -:101D1000C781130700F8F8A3828037370020832695 -:101D20000781411126C29C5E06C622C499834AC01F -:101D3000858BBA84B1CB93070006373900209CDE2F -:101D40008347C9811304C98193F7070489CFB72753 -:101D5000002083A78758829708C88347C98193F7D3 -:101D6000F70B230EF9805C2093F7070491EF85476A -:101D70005CB0B737002083A78783096798C713072C -:101D800000FC58A05844F8D303A704811C5F91833A -:101D9000858B89CBC1471CDFB73700209387C7816C -:101DA0008546D4A31C5F9D83858B91CB9307000848 -:101DB0001CDFB73700209387C7810547D8A3B73703 -:101DC000002083A7C780D8430583058B19C7D84354 -:101DD000759BD8C3D843799BD8C3B2402244924460 -:101DE000024941018280B7370020B736002003A6A0 -:101DF00087839387C68103C7C681058B11C723825A -:101E00000700A382070082809833058B6DFB785210 -:101E10007DF3D833FDB737380020032708811C5FD6 -:101E20009583858BBDE701C61C5BBD831CA29DC647 -:101E300083270881985B460793576701635607001D -:101E400093E707C0C207C18303970600C207C18793 -:101E500009C7BA970947B3C7E7029EA285C11C31DB -:101E600091CF3E951C350547194593F6F7066393C8 -:101E7000E602E207E187394563CE07008327088140 -:101E80003737002001459C5FED838D8BA303F782DC -:101E9000828005458280411122C406C63734002065 -:101EA00026C2032784833DE5AE877453FDFEB73415 -:101EB00000209384C4813E85B2852381040097E08D -:101EC00005E0E780E0A3B737002083A70781B706C6 -:101ED00080009843558F98C3D857719BD8D78327D4 -:101EE0008483A3820400A3800400094798C3832647 -:101EF0008483B73700209387C781B823058B11E708 -:101F0000B833058B51C723820700B2402244924464 -:101F1000410182808D47631FF500B737002083A7FA -:101F20000781B70680009843558F98C3D857719B97 -:101F3000D8D775BF8547E31CF5FAB567BD075CC701 -:101F400001000100832784830967930600F898C77E -:101F5000373700201307C78154A337370020832663 -:101F600007810946984231830D8B6319C700130717 -:101F7000E043F8D33D673D07D8C795BF984231830A -:101F80000D8B01E713076019EDB71307E01BD5B7F9 -:101F9000F85225F79DBF5D7152DC373A00200327C8 -:101FA0000A8186C6A2C4A6C2CAC04EDE1C43B73987 -:101FB00000203739002093F7F7E793E707081CC3A1 -:101FC00083A649883707CEFF7D179C4613068002FB -:101FD0002A84F98F9CC6832789832800AE8423A88E -:101FE000070493051008EFE00FE197E005E0E780B4 -:101FF000E0B997E005E0E78020C483270A81937663 -:10200000F41F3706330023A40700984B370FFCFF5B -:102010004E881367F70398CBF84FCA88130510F85A -:10202000137707E0558FF8CF9843F576FD16758F37 -:1020300098C337370020832689831307C781A302FB -:102040000700A3000700054798C29843D285B7024E -:1020500004001377F7E798C398439303401F11498F -:102060001377F7E71367071098C303A749887D1F05 -:1020700085491C47930F8002D18F1CC79307900599 -:10208000BCCA01473400135337002693834703002B -:1020900013767700B3D7C740858BE1C383A705814B -:1020A000832E4888239C07042390070603AECE02A4 -:1020B000137EDEFF23A6CE0383AE0700137EF70751 -:1020C00093FE0EF833EECE0123A0C70103AE470204 -:1020D000336E5E0023A2C70383AE8883014E23A222 -:1020E0007E0603DA070663074E0303AE0703038A7F -:1020F0000600135EFE00620E135E8E416358CA0135 -:1021000003AE0703135EFE002380C60103DE07064D -:10211000137EFE0F03AA4E0663060A0003DA870544 -:10212000E37F49FB03AE4702337EEE0123A2C703E0 -:1021300083870600635CF400034E03003396C900F6 -:102140001346F6FF3376C6012300C3003E8663D3F1 -:10215000A7002A8613158601618505071377F70FF7 -:102160008506E312F7F3B640264496440649F25931 -:10217000625A616182803736002083278683D84780 -:102180009316170163D2060298479316170163DD71 -:1021900006007D57B8D7372700201307C74E544F86 -:1021A000850654CF116798C798470D83058B11CFCB -:1021B000373700201307C781342393E6160034A372 -:1021C000930600F854A3214798C79847058B19CB6D -:1021D000373700201307C781143393E6160014B372 -:1021E000054798C798470983058B09E798470583F2 -:1021F000058B31CB94473737002037350020898253 -:10220000858AE5CE832605819442B1828D8AFDE2DE -:10221000AC4B9306C781944E93F505029432CDC51D -:10222000F9E69306D005D4CF8346C78193E616001E -:10223000230ED780114798C7032705815C57F19B70 -:1022400093E717005CD7032786831C4793963701D3 -:1022500063D40602B72700209386876E03C646071D -:102260009387876E418A55C283C7460793E7070263 -:10227000238AF60685671CC71C479396270163DFF0 -:102280000600B73700209387C781D423E206E18692 -:1022900063D406008546D4A389671CC71C47939660 -:1022A000070163D20602B72700209387876E83C693 -:1022B0005707858ABDCA83C6570793E62600A38AB7 -:1022C000D706A1671CC78280A9DE85456395B60045 -:1022D0009306100689BF89456395B600930650069C -:1022E00099B78D456395B600930690062DBF93066A -:1022F000B00615BF9306C0063DB71307C781343338 -:1023000093E6160034B309473DB783C6470709462D -:10231000BD8A6388C60083C647070D46BD8AE39B16 -:10232000C6F49146238AD706B1B783C65707918A68 -:10233000C9DA83C6570793E6860051B737370020BE -:10234000B73600201386C6831307C7855C372C3E3B -:10235000484AAE97FD8BB355F5001CB25CB7858932 -:102360008DE9183B814613080002B3F7E7020147E5 -:10237000B355E50085899378F70F89C96395D70030 -:10238000A30016018280850693F6F60F0507E31178 -:1023900007FF8280B727002083A78758011122CC2E -:1023A00026CA4EC606CE4AC88297B7340020938705 -:1023B000C485804781496300A40437370020930710 -:1023C000C783BC2F018D135455009384C485937922 -:1023D000F5011309C783636DF4008D370347A90125 -:1023E000944493175700BE96198C94C4E377E4FE87 -:1023F0001604B3693401F24062444E85D244424926 -:10240000B24905618280B727002083A78758411110 -:1024100022C44AC006C626C28297373900209307D5 -:10242000C98580476307A404B73400209387C48319 -:10243000BC2F018D135455001309C9859384C4839F -:102440006369F402E53DBC2C03278900939657008D -:1024500036971D8C2324E900E376F4FE224488306D -:10246000B240924402498145410117E305E067000B -:1024700043CAB24022449244024941018280B737A4 -:10248000002003A74788B75702009387079F83263A -:10249000070913965600635806008326070913960A -:0C24A000660063440600FD17FDF3828017 -:1024AC00B72700203727002083A7474E0327C74DA7 -:1024BC0001456313F7008280F62399E2D623369503 -:1024CC009C43C5BFB727002083A50754372700209E -:1024DC0093870754138605222322C74EDA2393874A -:1024EC0085FFB72600204111BA97056523AEF64C3F -:1024FC0006C61D05935637006374E500930600204D -:10250C003307D600372500202320E54E23A0E522F3 -:10251C00E11656A2231306001CC3998FE1175EA384 -:10252C0023130700B53FB240B72700202399A74ECD -:10253C0041018280B72700203727002083A7474E10 -:10254C008326C74D01456393F6008280FA2309E781 -:10255C00DA236373E5003A859C43F5B71DC18346C6 -:10256C00E5FF1307F00F9147639EE600411106C685 -:10257C0097E0FB1FE78080B7B24081473E85410161 -:10258C00828095473E85828001E901458280014524 -:10259C00B24022444101828095654111938505D05A -:1025AC0022C4C98D2A842105C2054205C1814181FD -:1025BC0006C697E0FB1FE78020A871D9FD572320A2 -:1025CC00050042A17CA12105E1B7ADC1B7270020D0 -:1025DC0083C7D74E411122C406C62A842E85637543 -:1025EC00F400894763E88700953F0D45B2402244CB -:1025FC004101828083A785FF99E703C7E5FF930715 -:10260C00F00F6305F700993F1545CDB7372500202E -:10261C00238F85FE1305854E97E0FB1FE78040BC9A -:10262C0022852244B240A1654101ADAC15458280A2 -:10263C00B727002023A4074E8280BDCD797122D408 -:10264C0006D626D24AD04ECE01444147B3D7854058 -:10265C00858BB1CF1205314722953305E502B7279B -:10266C00002003A907588544B3948400C204C18098 -:10267C00BE892A990327090011C7032549002EC6D4 -:10268C000297B24531473304E40283A709583E94BC -:10269C001C4489E72320090023220900B25022544C -:1026AC00A58D02599254F2492E854561828005040C -:1026BC00E31EE4F88144DDB72E8582804111139727 -:1026CC00050122C406C626C24AC041872E84635126 -:1026DC00070297E0FB1FE78040B211C14135A167AB -:1026EC003D8C2285B24022449244024941018280B1 -:1026FC00EDD9AA8701474146B356E440858A9DCA65 -:10270C009207BA97B146B387D702B726002003A920 -:10271C0006588544B394E400C204C1803E998327D3 -:10272C000900032549008297232009002322090070 -:10273C00258C45BF0507E311C7FC8144D5BFB727DE -:10274C00002083A74756411122C406C63724002017 -:10275C001304843291C782971C403E9508C031A067 -:10276C00B727002083A78758FDF70840B747030019 -:10277C009387D73F3305F502B7A72600938737EC2D -:10278C00B2403E9508C022444101828065C537485D -:10279C0036FE1308F8C78947636FC80C7971B727E1 -:1027AC00002022D45AC803A807583E8B06D626D23E -:1027BC004AD04ECE52CC56CA5EC662C40144B14811 -:1027CC00C147B30B1403137CF40F330378010323B9 -:1027DC000300631C0308AE8AC165AA84938505F0C7 -:1027EC0041453A8AB689328997E0FB1FE780C0845D -:1027FC0005E9B727002083A7475799EF8147B250C7 -:10280C00225492540259F249624AD24A424BB24B78 -:10281C00224C3E8545618280814511458297F9BFE6 -:10282C00B726002003A7C6530DEF23AEA6522300F4 -:10283C00050083270B580547331487002326050012 -:10284C002324250122A123224501DE9784C323A240 -:10285C00570123A44701E38309FA2380890179BF37 -:10286C0036875447F5FE48C7D9B70504E31BF4F483 -:10287C00A14771B789473E858280B727002083A77F -:10288C004758411122C406C6372400201304C44EF5 -:10289C0089C782975C483E9548C84848B240224454 -:1028AC0041018280B727002083C7D74E637EF50095 -:1028BC003727002093171500032587533E951E21BB -:1028CC00DD8D0EA1014582800D458280B727002049 -:1028DC0083C7D74E6370F502372700209317150076 -:1028EC000325875393C5F5FF3E951E21FD8D0EA143 -:1028FC00014582800D45828001114AC806CE22CC4A -:10290C0026CA4EC652C49307F002094963EEA706C5 -:10291C00B146B306D502B727002003A707580949CB -:10292C0036971C43B5C3135A450005443D893315EE -:10293C00A400131405014180AE845285A28597E052 -:10294C00FB1FE780E092AA8901491DCDA285528523 -:10295C00B53FB727002083A787588297B727002059 -:10296C0083D7E7552A841306006433879702814680 -:10297C00B3B7970213050732B335E500BE95EF6088 -:10298C008206229523A4A900F24062444A85D244CF -:10299C004249B249224A05618280B727002083C789 -:1029AC00D74E6364F500014582800111B7270020E2 -:1029BC0052C403AA875806CE22CC26CA4AC84EC691 -:1029CC00630D0A083729002013090954AE89835571 -:1029DC00E9012A84B284B387C5028146B3B5C50226 -:1029EC0013850732B337F50013060064BE95EF501C -:1029FC00927FB74736FE9387F7C763E0A706029A24 -:102A0C008355E9012A8A13060064B387950281462F -:102A1C00B3B5950213850732B337F500BE95EF5069 -:102A2C00927C2A9ACE85228597E0FB1FE780408412 -:102A3C0009C523244501054515A0936504F0C2057D -:102A4C00C181414597D0FB1FE780005F05E18327DB -:102A5C00490381C7A285114582970145F240624422 -:102A6C00D2444249B249224A05618280372700206C -:102A7C008327C75385E3232EA752854723260500BA -:102A8C00232445012311350100A11CB1232205008B -:102A9C005DB7BA87D84775FFC8C7C5B741C9797143 -:102AAC0022D426D24AD04ECE52CC56CA5AC85EC672 -:102ABC0062C406D6B689B28A2E8A2A899304000C7F -:102ACC004144372B0020054C930B000383270B58F4 -:102ADC00A6979C43A1E79375F400B315BC00C205FF -:102AEC005686C181135544004D3D0DC983270B58A3 -:102AFC000145BE9423A0240123A244016384090050 -:102B0C0023808900B250225492540259F249624AED -:102B1C00D24A424BB24B224C45618280050413745D -:102B2C00F40FB104E31474FB2145E9BF094582801D -:102B3C00411122C426C24AC006C62A842E89B284F8 -:102B4C00A93DCA85228597D0FB1FE780607205CD11 -:102B5C00B727002083D5E7552A8413060064B38772 -:102B6C0095028146B3B5950213850732B337F5004C -:102B7C00BE95EF50526748C00145B2402244924482 -:102B8C000249410182802145CDBF411122C426C298 -:102B9C004AC006C62A892E8497D0FB1FE780406D59 -:102BAC00AA8419C123110500A2854A850533B727CC -:102BBC00002083C7C74E63992701B727002003D78E -:102BCC004753598C239A8752014591E01945B240DD -:102BDC00224492440249410182809307F00263E847 -:102BEC00A7044111B14722C43304F50226C2B7240D -:102BFC00002083A7045806C6A2979843894715C39B -:102C0C009377F5008545B395F500C205C181118117 -:102C1C00AD3F83A70458A29723A0070023A2070067 -:102C2C008147B240224492443E85410182808947CB -:102C3C003E858280411106C622C497D0FB1FE780D7 -:102C4C00206311E50145B240224441018280B7273F -:102C5C00002083A7875800458297B74736FE330577 -:102C6C00A4409387E7C7E3EFA7FC93070064B33551 -:102C7C00F502372700200356E75581463305F50248 -:102C8C00EF507256C9B74111B727002006C623A2D0 -:102C9C00A7580295B240B727002023A2A7500145A0 -:102CAC0041018280994763E9B700B72700208A0564 -:102CBC0093878751BE9588C18280B727002023AEA9 -:102CCC00075237250020B7270020411123A20758AF -:102CDC007146B727002081451305855106C623A4EC -:102CEC00075822C426C23724002097D0FB1FE78048 -:102CFC0000691305C44E13068002814597D0FB1F53 -:102D0C00E780E067EFF00FFCB727002083C757552B -:102D1C001304C44E854513D527008D8B3E958D47E6 -:102D2C003305F5029947B724002039051375F50FC3 -:102D3C0028A03305F5021305052497D0FB1FE78067 -:102D4C00A02F23A0A45825CD3020994781453306C8 -:102D5C00F6021306062497D0FB1FE780406283A778 -:102D6C0004583820B7240020938707240A0723AA85 -:102D7C00F450BA9737270020232CF75255387D2E64 -:102D8C001C3083A64451372604001397270036972E -:102D9C001306666410C3138717001377F70F0A071F -:102DAC003726040036971306866C10C3138737003A -:102DBC00890793F7F70F8A0718B0B69790C3B240FC -:102DCC002244924441018280372700201307C74ECA -:102DDC001C33342363FFD700B726002083A646514B -:102DEC001386170010B313972700369708C33E8538 -:102DFC0082809307F00FE5BF1C41E9CB41777D8FB3 -:102E0C00B706002089476314D70C5A2169C34111B6 -:102E1C0026C21946AA849305F00F610506C622C482 -:102E2C0097D0FB1FE780405F05478D47630AE50895 -:102E3C009C4491C7985C994741C7D85C51C33724CF -:102E4C0000201306000481451305045497D0FB1F82 -:102E5C00E780E05213060004A6851305045497D0AE -:102E6C00FB1FE780804E93070454DA2701E7130712 -:102E7C000010DAA7F82719E30547F8A79A2B19E3EE -:102E8C006D479AABF83719E31547F8B7B82B19E328 -:102E9C000547B8ABB83B19E3F837B8BBD82B19E3E7 -:102EAC002547D8ABF82801E71307C003F8ABDC576C -:102EBC0091C78297B7270020239AA74EFD3B8147E5 -:102ECC00B240224492443E854101828089473E852E -:102EDC008280B727002083A78758011106CE22CC09 -:102EEC0026CA4EC64AC88297B727002083D9E75511 -:102EFC0093070064B335F5024E8681463305F5021F -:102F0C00EF50722EB72700201387C74E004FAA84AC -:102F1C000145630494021389C74E33858440636C66 -:102F2C0094004E8681461305009C9305F063EF5088 -:102F3C00922B018D2695232C9900F2406244D244A9 -:102F4C004249B24905618280011122CC2E84B79589 -:102F5C0006000A854146938585E306CEEF50D26183 -:102F6C00180806043A94B7270020035504FF83D7AA -:102F7C000756F2406244AA9737450F001305052403 -:102F8C003355F50205618280B727002083D7075699 -:102F9C0051471D45637CF702794719456378F70261 -:102FAC001307200315456373F7021307B00411458B -:102FBC00637EF700130740060D456379F70013078E -:102FCC00600909456374F70013B5B70F82800111CE -:102FDC0022CC06CE2A842EC6EFF06FF6B245F24014 -:102FEC00818D33A5A502229562441375F50F0561F9 -:102FFC008280011122CC06CE2A842EC6EFF02FF44B -:10300C00B245F240818D33A5A5022295624442055A -:10301C00418105618280011122CC06CE2A842EC604 -:10302C00EFF0EFF1B245F240818D33B5A502229558 -:10303C00624405618280B7270020138707545857D4 -:10304C0039CF411122C426C24AC006C6138907547F -:10305C000297B72700201387C74E1A272A84938418 -:10306C00C74E05CBBA876373A700AA87C207C18373 -:10307C00BA866373E400A286C206C182958F51475B -:10308C006359F7008327090391C38297EFC0314935 -:10309C0082A4B2402244924402494101828082803F -:1030AC00011122CC37240020930704549C5B06CEDC -:1030BC001304045481C72AC68297324529C57A2C39 -:1030CC0085470DCF1A301DCBB727002023A4A75856 -:1030DC007C3899EF6A2C9307805737460F003305DD -:1030EC00F5021306062481468145EF50D20F68B8CD -:1030FC00373504001305E5ED79368147F24062441B -:10310C003E8505618280B72700209387C74E23AE8A -:10311C000700E17793C727A17EAC930720031EB06D -:10312C007D57B747024023A4E726B707002037276F -:10313C0000209387276C2324F75859BF011122CC08 -:10314C003724002093070454884706CE26CA4AC861 -:10315C0001E90545F2406244D2444249056182804E -:10316C00130404541C5CF5D7585C65D77000854576 -:10317C0082971844B247E30EF7FC4A249305E00407 -:10318C00B724002097D0FB1FE78000EB1387C44EB9 -:10319C0008D39384C44E55DD52249305F00F014996 -:1031AC0097D0FB1FE780A01D7C249050634DF90045 -:1031BC00328597D0FB1FE78060F3014523A0040202 -:1031CC0023A2040241BF4E240844585CB387250354 -:1031DC00898105093E9508C20297F9B7411122C4AD -:1031EC0037240020930704549C4726C206C6B724F4 -:1031FC0000204AC09384C44E91EB885039EDB24004 -:10320C002244924402490145410182801304045432 -:10321C005C5CE5D79C5089EB4A249305E00497D07D -:10322C00FB1FE78060E188D0885061D95224930558 -:10323C00F00F014997D0FB1FE78060147C2490505D -:10324C00E35DF9FA4E241C44338525038981050975 -:10325C003E955C5C08C28297D5B797D0FB1FE78080 -:10326C00E0E823A0040223A2040251BF01114EC6C0 -:10327C00B7290020938709549C4726CA4AC852C4D0 -:10328C0006CE22CC56C25AC02A8AAE8432896388B2 -:10329C00071E9389095403A78903630207121307B6 -:1032AC00F01F6360A712372400201307C44E832A33 -:1032BC0007021304C44E63980A0803D5C900956528 -:1032CC00938515E097D0FB1FE78000D708D02A869E -:1032DC007DC583D5C90083A7890303A5890089818E -:1032EC00829783A78900832A04025CD089476314E0 -:1032FC00FA08C1476395F40C83D5C90091479385AF -:10330C0005FCB3C5F5028A05D695B8219307A0052F -:10331C006313F70A9E216390470B4A852686910515 -:10332C0097D0FB1FE78060021C50568563915713A2 -:10333C000145F2406244D2444249B249224A924A7F -:10334C00024B056182805850E382E7FA03D5C9002D -:10335C009565938525E097D0FB1FE780E0CDAA8A81 -:10336C0039CD83D5C9002A8683A7890303A5890093 -:10337C0089818297A5BF8D47631BFA00C147639073 -:10338C00F40483D5C900938545FDF199B5BF9147E8 -:10339C006318FA006395440383D5C900A115F5B7EA -:1033AC0093070010631DFA00A14763EA970083D5C9 -:1033BC00C900C115D9BF1C505685639D570B2945B3 -:1033CC008DBF9D6A637A5509930A05E01947B3CA04 -:1033DC00EA0203D7C900372B0020B38AEA02BE9A4F -:1033EC009307CB4EDC53130BCB4E63955701032441 -:1033FC000B021DE003D5C9009305E00497D0FB1F19 -:10340C00E78080C32A8445DD83D5C90083A789035F -:10341C002A8689815685829791451307A005898153 -:10342C0093972500A297B4236391E6049623639C9B -:10343C00460385058A052686A2954A8597D0FB1FEB -:10344C00E780A0F083270B02E38487EE228597D0D8 -:10345C00FB1FE780A0C9E9BD21677917E361A7F6D7 -:10346C00B30A5541BDB7AC335DBF83270B02E3886C -:10347C0087F4228597D0FB1FE78040C789B7B72711 -:10348C00002083A5C75085DD91479306A00589834D -:10349C00139727002E973023E313D6F21223631CC5 -:1034AC00460185078A072686BE954A8597D0FB1F5D -:1034BC00E780A0E9B5BD3C33D9BFB727002093877F -:1034CC000754984721C3D85F15CF8546631CD50296 -:1034DC00411122C4372400201304C44E105006C6D8 -:1034EC0011CECE27485089810297085097D0FB1FE8 -:1034FC00E780C0BF2320040223220402B2402244EE -:10350C00410182808280011122CC37240020930754 -:10351C00045456C283AA870026CA4AC84EC606CE91 -:10352C0052C42A89AE84B28913040454638D0A1AD6 -:10353C005C5C99EB2945F2406244D2444249B24961 -:10354C00224A924A056182801C5CEDD79307F01FDA -:10355C0063E1A70C372A00209307CA4E9C53130A29 -:10356C00CA4EA9C7084483274A02639CA70489470B -:10357C006313F906C147E39FF4FA4A2491471305F4 -:10358C0005FC3345F5029317250003250A02268610 -:10359C00CE853E959307A0053CA12310250111056E -:1035AC0097D0FB1FE78060DA014571B74A24930579 -:1035BC00E00497D0FB1FE78020A82320AA025DF12E -:1035CC0095BF4E241C5C03260A02898182971C44F9 -:1035DC002322FA0269BF8D47631BF900C147E39BA5 -:1035EC00F4F44A24130545FD9377C5FF79BF914741 -:1035FC006317F900E39024F54A242115F5B79307D6 -:10360C000010E319F9F2A147E3E697F24A244115B9 -:10361C00E1BF9D676375F506930705E01947B3C7CE -:10362C00E7025A24372A0020B387E702BE9A930791 -:10363C00CA4E9C53130ACA4EB1CB83274A026392DB -:10364C00570703250A0291461308A0059305F00FAE -:10365C0093D72600139727002A9730236312060767 -:10366C0083580700303363992805B306D64063C4EA -:10367C00960485078A072686CE853E9515B7216761 -:10368C007917E369A7EAB307F54061BF4A249305AC -:10369C00E00497D0FB1FE780209A2320AA0251FD5B -:1036AC0051BD4E241C5C03260A02898156858297E3 -:1036BC0023225A0379B70EA393160601C18249BF80 -:1036CC005224B38596009105130606FCE3F4C5E677 -:1036DC0013863400719A1106B29623010701231048 -:1036EC00270134B379B7372A00209307CA4E9C536D -:1036FC00130ACA4E95CF03250A0291461308A0055A -:10370C009305F00F93D72600139727002A973023A1 -:10371C006310060583580700303363972801B306FE -:10372C00D640E3D896F40EA393160601C182D9BFF6 -:10373C0068245E249305E0043305F50242054181BB -:10374C0097D0FB1FE780408F2320AA024DF5DDB3F5 -:10375C0052246C24B385C502338696001106E3EB24 -:10376C00C5DCBDB7014582809C211CA1BE211CB1CA -:10377C00BE21A1833CA1DC213CB111458280B7273D -:10378C00002023AE0734B727002023AC07348280F7 -:10379C000DCD411126C206C622C4AA8401458DC195 -:1037AC002E84B795060022854146938585E497D0F3 -:1037BC00FB1FE78080B99C2005455CA49C305CB461 -:1037CC00B240224492444101828001458280011121 -:1037DC0022CC26CA06CE0947AA8432846381E5042A -:1037EC0041468147639BC500638FE6006397B60033 -:1037FC000DA841478147638EE600F2406244D244F3 -:10380C003E85056182808A852285593741468A85A5 -:10381C0019A88A85B53F41468A85228531A0E39A4D -:10382C00B6FC2E86A285268597D0FB1FE78080BA32 -:10383C00AA87E1B7B727002023ACA7348280B7272B -:10384C00002023AEA7348280011122CC622106CE47 -:10385C0026CA4AC84EC62DCC83298500AE842A8838 -:10386C0003C9090081471317890161876355070252 -:10387C00B147054563F787045114420403552800EA -:10388C00418033878900A2864E868545EFB0402C57 -:10389C00B337A00085077D141355690042040589D0 -:1038AC001379F90341809CA088B023812401C2A024 -:1038BC00014719C01387190098C409476383E700AF -:1038CC000145F2406244D2444249B24905618280CA -:1038DC000545C5BFC167F917630AF502D94763F7F8 -:1038EC00B702011122CC2EC606CE2A84EF80702C92 -:1038FC00B2456368B50022856244F24005616FA051 -:10390C00201BF2406244054505618280054582809A -:10391C00C167F9176314F5006F80B029411106C611 -:10392C00EFA0800711E15D45B240410182809147D3 -:10393C00639DF5001C211CA23C211831A207D98FD4 -:10394C003EA23C3101455CA282801145828041112E -:10395C00814522C426C206C6AA84BD232A8409E94D -:10396C00B727002083A7873581C7F945268582971D -:10397C002285B240224492444101828039714ED654 -:10398C0056D25AD006DE22DC26DA4AD852D4AA8A7B -:10399C002E8BB28951EB36C6A53F9145EF80103086 -:1039AC00AA844D493DC5B246054A238034010544DD -:1039BC00630A0B00B68513851400029B05051314CE -:1039CC0005014180E20993D9894163D30902C145BC -:1039DC005685EFA0C00A654915E533868400A2859B -:1039EC002685EFA0505E2A8911ED310442044180F6 -:1039FC0091472C085685FC8426CEE085EF909021CB -:103A0C002A8901C963070A00268597C0FB1FE78036 -:103A1C00E06DF25062544A85D2544259B259225A3E -:103A2C00925A025B21618280BA84014ABDBF0111A6 -:103A3C0022CC26CA4AC84EC606CE2A893284B689FA -:103A4C00353FAA840DE1B727002083A7C73581CF66 -:103A5C0005476317E40003C4090005041374F40F4D -:103A6C00A2854A858297F240624426854249D24417 -:103A7C00B24905618280AE86B73504000147054620 -:103A8C00938545776DB79E211CA19E21A1831CB106 -:103A9C00094582809E211CA19E21A1831CB1BE21BF -:103AAC003CA1BE21A1833CB1114582809E211CA169 -:103ABC009E21A1831CB1BE213CA1BE21A1833CB19E -:103ACC00DC315CA1FC215CB18A25190542054181E0 -:103ADC0082809E211CA19E21A1831CB1094582805C -:103AEC009E211CA19E21A1831CB1BE213CA1BE2103 -:103AFC00A1833CB111458280CA2106054205418152 -:103B0C0082809E211CA19E21A1831CB1AA210905A2 -:103B1C004205418182809E211CA19E21A1831CB162 -:103B2C00BE213CA1BE21A1833CB1CA211105420595 -:103B3C00418182809C211CA1054582809E214111DE -:103B4C0022C406C61CA19E212E841105A183A30E9E -:103B5C00F5FEBE219505230FF5FE83D7D5FFA18376 -:103B6C00A30FF5FE03C6F5FF97C0FB1FE780E07DB2 -:103B7C004820B24022441105410182808947639953 -:103B8C00F5001C3118210145A207D98F1EA2828095 -:103B9C00114582809A21D94763FDE702011122CC9D -:103BAC0006CE2EC62A84EF80D000B2469E22636DCC -:103BBC00F50022856244F240B745040001470946EE -:103BCC00938525A905615DBBF240624409450561F9 -:103BDC00828009458280914785C51421FD15C20557 -:103BEC008547C1816390F60213D725008D899147D3 -:103BFC0081E9914711C7050534A21AA248C2814731 -:103C0C003E85828009479147E39CE6FEC94733D73E -:103C1C00F502B3F5F502E1BFAE86B74504000147E6 -:103C2C001146938505AA99BB93F7350089EB8981D9 -:103C3C00914781C50EA248C281473E85828091473B -:103C4C00EDBFD8218947631CF702011122CC2A84CD -:103C5C00C84506CEAE86014709C92EC69D4597C0FC -:103C6C00FB1FE7806054B2462A8722856244F240EB -:103C7C00B74504001946938585AB056101B3094529 -:103C8C00828099E1114582801C2105473EA2E37B8D -:103C9C00F7FEFD1593F5F50F33D7F502B387E70261 -:103CAC00E392F5FE050548C21AA201458280DC218B -:103CBC000947AE866385E70041476399E700B7453E -:103CCC00040001472146938585B44DB9094582808E -:103CDC000EA291E1014548C201458280AE86B745EE -:103CEC000400014729469385E5AD49B90EA291E13F -:103CFC00014548C201458280AE86B74504000147A4 -:103D0C0031469385C5AE9DB90EA291E1014548C2DD -:103D1C0001458280DA21854763FFE702011122CC3D -:103D2C002A84884106CE1DC12EC6854597C0FB1F2F -:103D3C00E78080472A8722856244B246F240B74525 -:103D4C0004003946938545B005610DB9F2406244D3 -:103D5C0009450561828009458280914785C51821F6 -:103D6C008D46914763F0E602FD15C205C181B3C6CD -:103D7C00E5023308D70263970501050516A23AA29E -:103D8C0048C281473E858280DC210947AE86638527 -:103D9C00E70041476399E700B745040001474146F6 -:103DAC00938585B4E1BE09458280B335B000139587 -:103DBC0025008280011122CC26CA06CE9825854783 -:103DCC00AA842E844946631FF70099363E20491574 -:103DDC001306200963C8A700F2406244D244094587 -:103DEC0005618280183485476314F7001366060456 -:103DFC00484001C98D4532C697C0FB1FE780C03AC9 -:103E0C003246A2866244F2402A872685D244B745C0 -:103E1C0004009385E5B0056195B68D4763F8B7024C -:103E2C001C311821F115A207D98F1EA23C31382163 -:103E3C00C205A207C181D98F3EA24EA289C5110528 -:103E4C0008C60145828023240600E5BF1145828007 -:103E5C00011122CC2A84884506CEAE8601C92EC615 -:103E6C00954597C0FB1FE7802034B2462A872285F0 -:103E7C006244F240B74504005946938525B205616A -:103E8C00F5BCB335B000139525008280AE86B745DE -:103E9C00040001476146938505B4CDB485471145AF -:103EAC0063F0D7021C320C22A207CD8F1EA393877E -:103EBC00E6FF3EA389476386F600090650C3014519 -:103ECC00828023220700E5BF014781467946814560 -:103EDC0075B49E211CA19E21A1831CB10945828031 -:103EEC00BC2105471CA18A216397E7000A0505053B -:103EFC00420541818280C9473305F502CDBF8A2135 -:103F0C000A05420541818280BE211CA18A21BE2165 -:103F1C003305F50205054205418182808A218280A4 -:103F2C008A2182808A218280BE211CA18A21BE2105 -:103F3C003305F50205054205418182809E211CA1B5 -:103F4C009E21A1831CB1BE213CA1BE21A1833CB109 -:103F5C00CA2111054205418182809E211CA19E210E -:103F6C00A1831CB1AA2109054205418182808947A0 -:103F7C0011456398F6001C3214220145A207D58F17 -:103F8C001EA382809A21D947AE8663F9E700B74514 -:103F9C00040001470D469385E5ED51BC094582802F -:103FAC001145639DA6001C3214220145A207D58F32 -:103FBC001EA33C323422A207D58F3EA38280BC21A3 -:103FCC000547FD1793F7F70F6361F7049E2195CF13 -:103FDC00011122CC2A84C84106CE1DC12EC68945AA -:103FEC0097C0FB1FE780401C2A8722856244B2469B -:103FFC00F240B745040015469385C5EE056105BC36 -:10400C00F2406244094505618280094582809547EA -:10401C00114563F1D706411122C426C24AC006C617 -:10402C001C32BA841822A2073284D98F9EA03C324B -:10403C00382293054400A207D98FBEA08947DCA083 -:10404C00094613855400368997C0FB1FE780E02F83 -:10405C009307A9FF9EA49947631BF90023A60400AC -:10406C00B240224492440249014541018280190424 -:10407C00C0C4FDB782809E2195CF011122CC2A8429 -:10408C00C84106CE1DC12EC6854597C0FB1FE780D3 -:10409C00A0112A8722856244B246F240B74504003B -:1040AC001D469385A5F0056159B2F240624409455D -:1040BC0005618280094582809947639DF602894794 -:1040CC00411106C65CA31C321422B285A207D58FFF -:1040DC001EA33C3234225023A207D58F1305570060 -:1040EC003EA3910597C0FB1FE7802026B2400145F7 -:1040FC0041018280D14711456394F600C147C9B78D -:10410C0082809E219DCF011122CC2A84C84106CEEB -:10411C0005C52EC6894597C0FB1FE780E0082A8796 -:10412C0022856244B246F240B74504002546938589 -:10413C0045F105616FF0BF8FF2406244094505619E -:10414C00828009458280894711456398F6001C32AC -:10415C0014220145A207D58F1EA38280011122CC07 -:10416C002A84C84106CEAE86014709C92EC68545AC -:10417C0097C0FB1FE7804003B2462A872285624422 -:10418C00F240B74504002D46938585F205616FF02A -:10419C001F8A1145639DA6001C3214220145A207FB -:1041AC00D58F1EA33C323422A207D58F3EA382802A -:1041BC00011122CC2A84C84106CEAE8601C92EC676 -:1041CC00854597C0FB1FE78020FEB2462A872285D3 -:1041DC006244F240B745040035469385C5F205614B -:1041EC006FF0FF8493F71600114581EB89476386C6 -:1041FC00F600858256A310C301458280011122CCA2 -:10420C002A84C84106CE05C52EC6854597C0FB1F1E -:10421C00E78080F92A8722856244B246F240B7458E -:10422C0004003D46938505F305616FF05F80F24015 -:10423C0062440945056182809E219DCF011122CCEB -:10424C002A84C84106CE05C52EC6894597C0FB1FDA -:10425C00E78080F52A8722856244B246F240B74552 -:10426C0004004546938545F305616FF04FFCF24021 -:10427C00624409450561828009458280854763F661 -:10428C00D70208A70CB71C320C22A207CD8F1EA395 -:10429C009387E6FF3EA389476386F600090650C361 -:1042AC000145828023220700E5BF1145828001472A -:1042BC0081464D4681456FF08FF78D47114563F46C -:1042CC00D7021C320C22A207CD8F1EA33C322C220B -:1042DC00A207CD8F3EA39387C6FF5EA36386A6007D -:1042EC00110610C70145828023240700E5BF011188 -:1042FC0022CC2A84884506CEAE8601C92EC69545A9 -:10430C0097C0FB1FE78040EAB2462A8722856244A9 -:10431C00F240B74504005D46938585F405616FF066 -:10432C000FF1854711456395F6001C2201451CA32E -:10433C00828001478146654681456FF04FEF011140 -:10434C0022CC2A84C84106CEAE86014709C92EC6A6 -:10435C008D4597C0FB1FE78020E5B2462A87228552 -:10436C006244F240B74504006D46938565F60561DD -:10437C006FF0CFE0011122CC2A84C84106CEAE8664 -:10438C00014709C92EC68D4597C0FB1FE780C0E1C8 -:10439C00B2462A8722856244F240B745040075462E -:1043AC00938565F605616FF06FDD011106CE2EC6A3 -:1043BC00EF90A05A19C5B245F2402A2105616FD081 -:1043CC00A067F240494505618280B7270020A3848D -:1043DC000738B727002023840738B727002023A8E5 -:1043EC000736B727002023AA0736B727002023ACAF -:1043FC000736B727002023AE0736B727002023A6A1 -:10440C000736B727002023A40736B72700202396AA -:10441C00075A930640389387C75AB6B3F1761307F9 -:10442C00400B938606B8BAA3D6B311679D46130604 -:10443C0000059305000A1305007DDAA3F6B3414786 -:10444C008546130810F8BAA7DAA7BAABDAABFAAB01 -:10445C009AAF9AB723960703EEA38EA7F2A792AB57 -:10446C00AAAF239E0700239F070023900702B6B72D -:10447C00239707021308F007239807022392E704F7 -:10448C002393E704239FE7042390E7062391E70691 -:10449C002392E706239907031307C01CD6BBF6BB70 -:1044AC00239C0702239D0702239E0702239F0702DA -:1044BC00239007042391D70423940704239507041E -:1044CC002396D7042397C7042398C7042399A704DA -:1044DC00239A0704239B0704239C0704239DC704EA -:1044EC00239EC7042393A706239407062395070648 -:1044FC00239607062397B7062398B7062399070632 -:10450C00239AE7065147239DE7067D57239B070611 -:10451C00239C0706239ED706239F07062390E708B4 -:10452C008280011126CAAA84214522CC06CE2E8473 -:10453C0032C636C43AC2EFE02F850DC5A2461247EB -:10454C003246930700FD1CA1994704B13CA174A10C -:10455C0078B152A1AA8522856244F240D244056109 -:10456C006FE0AF86F2406244D24405618280B72787 -:10457C00002023A8A7368280B727002023AAA736BD -:10458C008280B727002023ACA7368280B727002073 -:10459C0023AEA7368280011122CC4AC806CE26CA89 -:1045AC002A890144B30489006368B400F240624470 -:1045BC00D2444249056182802EC6EFE04F98931792 -:1045CC000501C183A183B2459CA09307140093F706 -:1045DC00F70F850463F8B700CA97090488A313740E -:1045EC00F40FC9B73E84C9B7411122C43724002047 -:1045FC001304C4586A20C16706C6FD17630EF50084 -:10460C00B727002003C6476DB725002093850538D2 -:10461C00EF90C016FD577EA0B2402244410182802B -:10462C0009C925151375F50F1335850E134515009E -:10463C0082800145828023900500C1C6797122D405 -:10464C0026D24ECE52CC5AC806D64AD056CA5EC6D0 -:10465C003684328AAE892A8B814463F24407B307CD -:10466C0094009C23138914004209939A070193DA4E -:10467C000A011359090163840A04CA976341FA04B5 -:10468C00B307240183CB07005E85593F0DC993877F -:10469C00FAFF2390F90063906B0313051900229520 -:1046AC00B250225492540259F249624AD24A424BB5 -:1046BC00B24B45618280D694C204C18079BF01455A -:1046CC00C5B701458280011122CC3724002026CAAF -:1046DC004AC84EC69307C45806CE2E89D0CB8CCB75 -:1046EC00C8C7AA8441469305F00F4A8597C0FB1FA3 -:1046FC00E78080D285491304C458631935030848F0 -:10470C00C145513D41469305F00F268597C0FB1FCF -:10471C00E78080D005496315250348446244F24084 -:10472C00D2444249B249C1450561B5B541468145BE -:10473C004A8597C0FB1FE78020CEE31535FDC1B736 -:10474C0041468145268597C0FB1FE780E0CCE306F8 -:10475C0025FDF2406244D2444249B249056182804F -:10476C00411122C43724002026C24AC0AE842A89B3 -:10477C001306000281451305C45806C697C0FB1FDB -:10478C00E780E0BF9307C458A3812701B727002017 -:10479C00238C976CEFD0802C854719C181474945F4 -:1047AC002306F458B24022449244024941018280CB -:1047BC00814791C909C985476319F500DC3193E735 -:1047CC0007FCDCB185473E85828089476316F5007E -:1047DC00DC3193F7F703F5B70D478547E315E5FE95 -:1047EC00D8311377F70313670704D8B1E9BF8147B2 -:1047FC0085C119CDD8319306000C85471377070C6A -:10480C006308D700930600048D476303D7008947DC -:10481C003E858280411122C4005D06C626C21DC899 -:10482C00AA84085009C597C0FB1FE780208C48500C -:10483C0009C597C0FB1FE780608B085409C597C05A -:10484C00FB1FE780A08A228597C0FB1FE780008AA8 -:10485C0023AC0402B240224492444101828019E903 -:10486C00B727002083C7E75891C7372500201305C9 -:10487C0005368280372500201305455A8280B727DC -:10488C00002003C5E7588280B727002003A587596D -:10489C008280B727002003A5C7598280B727002044 -:1048AC0083A7075A88438280B72700209387C7586D -:1048BC00D44B9842050798C2A8339307F00F6305B1 -:1048CC00F50091656FD01FFE8280011122CC06CEBF -:1048DC002E8432C6EF9000199147B2456310F50251 -:1048EC00B727002083A7C73795C303A30700630F1F -:1048FC00030022856244F24005610283B727002041 -:10490C0083A7473781C703A34700D5B7F24062445A -:10491C00054505618280011122CC2A844A2106CEEC -:10492C0026CA4AC84EC697C0FB1FE780E0E62DC5D5 -:10493C002A8904218349C500F13D4A85EF90C05076 -:10494C004A20EF90600D37290020130989388347DE -:10495C000900B9C763969704B727002083C5973819 -:10496C002685A13419E1230009004A20EF90800F1D -:10497C009147631CF500B72700209387C758562032 -:10498C00FA236394E6007D57FAA3F2406244D244C2 -:10499C004249B2490561828081499304F00F65B7A1 -:1049AC009307F00FE383F4FC7420522028204E87E9 -:1049BC00A685853E5DBF79715EC6AA8B2E8552CCCD -:1049CC0056CA5AC806D622D426D24AD04ECEAE8A61 -:1049DC00328B368A97C0FB1FE78000DC6DC1045D0B -:1049EC002A89F1CC9C50614599C3130540039C5412 -:1049FC0081C751054205418163050A0071054205D5 -:104A0C004181DC5081C7590542054181EFD0DFB7A8 -:104A1C002A8455C56146814597C0FB1FE7802096C7 -:104A2C00B727002083C9C75D639409008349090037 -:104A3C00930700FD1CA0A947A30074013CA023030D -:104A4C0064018C50231254011305840191C908C4CC -:104A5C007146930A440397C0FB1FE780008F56856D -:104A6C008C5491C948C45146930A450197C0FB1F09 -:104A7C00E780A08D5685630C0A0008C87146D28564 -:104A8C00930AC50197C0FB1FE780208C5685CC503C -:104A9C0099C548C8594697C0FB1FE780008BA28573 -:104AAC004E85EFD09FB22254B2509254F249624AD2 -:104ABC00D24A424BB24B4A8502594561A1BBB25016 -:104ACC00225492540259F249624AD24A424BB24B96 -:104ADC004561828001114EC6AA892E854AC806CE30 -:104AEC0022CC26CA2E8997C0FB1FE780E0CA29C5B5 -:104AFC00B727002083C4C75D91E004211945EFD08E -:104B0C00BFA82A8415C98145194697C0FB1FE780A9 -:104B1C000087930700FD1CA0B947A30034013CA0FB -:104B2C0023122401A2856244F2404249B2492685EF -:104B3C00D24405616FD07FA9F2406244D24442490D -:104B4C00B2490561828039715ECEAA8B2E8526DA38 -:104B5C004ED652D456D25AD006DE22DC4AD8AE8477 -:104B6C00328BB68A3A8ABE8942C697C0FB1FE78051 -:104B7C00A0C229C92A894145EFD01FA12A8439C175 -:104B8C004146814597B0FB1FE780607FB727002027 -:104B9C0003C5C75D19E103450900930700FD1CA07F -:104BAC00BD473CA0B247A300740146A02304640196 -:104BBC00A304540123054401A30534015CC4A2855C -:104BCC00EFD0BFA0F2506254D2544259B259225A7B -:104BDC00925A025BF24B21618280797126D2AA84AF -:104BEC0039454AD04ECE06D622D42EC6B289368945 -:104BFC00EFD09F990DCDB2459307000D1EA1B14783 -:104C0C002A844EA13CA1CE851905194697B0FB1FED -:104C1C00E780A07323062401A2852254B2500259C6 -:104C2C00F24913F5F40F925445616FD01F9AB250AC -:104C3C00225492540259F24945618280411126C294 -:104C4C00B72400209384C458B83006C622C44AC086 -:104C5C009307F00F6306F7042A893945EFD0DF92EA -:104C6C002A841DCD930700FDB72500201CA1A300AD -:104C7C002501230105009385455A0D05194697B06A -:104C8C00FB1FE780806C9E24A285A8303EA49C303C -:104C9C005CA42244B2409244024941016FD0FF927D -:104CAC00B2402244924402494101828001115AC00F -:104CBC002A8B314526CA4EC652C456C206CE22CCC9 -:104CCC004AC8AE84B28A368ABA89EFD0FF8B2DCD12 -:104CDC002A84268597C0FB1FE78000AC09C55825A0 -:104CEC00A1476311F704B727002003C9F7589307AE -:104CFC0000FD1CA09D47A30064013CA046A023130B -:104D0C0054012314440123153401A2856244F2405A -:104D1C00D244B249224A924A024B4A854249056121 -:104D2C006FD0BF8AB727002003C9976DE3110BFC26 -:104D3C00B727002083A747449C47D5DBCE865286F5 -:104D4C00D6852685829765B7F2406244D2444249A3 -:104D5C00B249224A924A024B05618280011122CC4F -:104D6C002A84214506CE2EC6EFD01F8215C5B2452A -:104D7C00930700FD1CA1C5473CA1BC313CB1DE2111 -:104D8C005EA1FC217CA1FC31AA857CB12285624408 -:104D9C00F24005616FD07F83F240624405618280EE -:104DAC00397162CC2A8C594526DA4AD84ED652D45F -:104DBC0056D25AD05ECE06DE22DCAE8432C636C463 -:104DCC00BA8B3E8BC28A468A83590104034941043B -:104DDC00EFD08FFB2DC53246930700FDA2461CA1D8 -:104DEC00954730B1A30085013CA12A8419461105D1 -:104DFC00A9C2B68597B0FB1FE78020552306640136 -:104E0C00230A240123157401231754012318440188 -:104E1C0023193401A2856254F2504259B259225AD4 -:104E2C00925A025BF24B624C2685D25421616FD0B0 -:104E3C00CFF9814597B0FB1FE7806054C1B7F250A2 -:104E4C006254D2544259B259225A925A025BF24BD2 -:104E5C00624C21618280411122C43724002013044A -:104E6C00C4583C2006C626C285CBB7240020AA8590 -:104E7C0019461385043697B0FB1FE780004D282098 -:104E8C0093850436EFF0DF922244B240138504364A -:104E9C00924441016FC0503DB240224492440145BE -:104EAC0041018280411126C2B72400209387C45847 -:104EBC0006C622C44AC0B8339307F00F9384C45873 -:104ECC00630FF7022A892945EFD00FEC2A8405C914 -:104EDC00930700FD1CA1A147A30025013CA1BC2008 -:104EEC00B7250020938505363CB11946110597B0BE -:104EFC00FB1FE7808045A830A285EFD00FEDB820CE -:104F0C008D476311F702B727002083A7873799CB0A -:104F1C0003A38700630803002244B2409244024971 -:104F2C0041010283B24022449244024941018280F1 -:104F3C00797122D406D626D24AD04ECE52CC56CA3D -:104F4C0009444DCD2A890A21AE89514497C0FB1FD3 -:104F5C00E7808084AA845DC1372700209307476DC2 -:104F6C00DC238546BA8AFD1793F7F70F494463F79C -:104F7C00F6085825A1476314F700639109089C5C57 -:104F8C004544ADEF9165938545711305C00297B00B -:104F9C00FB1FE780600A88DC2A8A4D4425C1130672 -:104FAC00C002814597B0FB1FE780603D8357090025 -:104FBC0093064A0036852311FA0071469305490081 -:104FCC0036C697B0FB1FE780403889472300FA00AC -:104FDC00C824B2460356090083C54A6D61151335C2 -:104FEC001500EF90902A2A8463860900CE852685C9 -:104FFC00EF90601301C42685EFF0DF812285B2505B -:10500C00225492540259F249624AD24A4561828032 -:10501C00B727002083C7876D0547FD1793F7F70F58 -:10502C006377F708894749C6011122CC26CA4AC8BA -:10503C004EC652C406CEAA89368AB2842E8997B03F -:10504C00FB1FE78060752A84D14731C5485509C5D7 -:10505C0097B0FB1FE7808009F145268597B0FB1FB1 -:10506C00E780403448D4CD471DC55424214781479F -:10507C00639DE600630B0A00382D12299306250167 -:10508C00AA854E85EF908010AA875820630E0900E0 -:10509C001367670058A0F2406244D2444249B249B7 -:1050AC00224A3E850561828013674700E5B7C947F0 -:1050BC003E8582809307F00363EAA700B7270020A0 -:1050CC009387C75A06053E950A21828041657D1556 -:1050DC008280011122CC2A842E8526CA06CEAE846B -:1050EC0097B0FB1FE780406B0DCDB7470F00938740 -:1050FC00F723094563E2870281450A85414697B04B -:10510C00FB1FE780C027A68560800A85418040810F -:10511C00A3010100EF908079F2406244D244056112 -:10512C0082804945D5BFB7270020238BA76C82808E -:10513C006F901010797152CC2A8A328522D426D2E3 -:10514C004AD04ECE56CA5AC85EC606D662C4AE8B7C -:10515C00B28A368BBA843E89C289468497B0FB1FCB -:10516C00E78080630DC92A8C63130A0213774B0006 -:10517C005C2115CF93E727012302FC008DEC631C07 -:10518C000902639A090205E8ED9B2302FC00832BBC -:10519C008C0363910B08B250225492540259F24979 -:1051AC00624AD24A424BB24B224C45618280F59BFB -:1051BC0093E70701D1B793E747002302FC0001CC2A -:1051CC001C484146A2852324FC0213058C0197B090 -:1051DC00FB1FE780801763930B02D5D80325CC0205 -:1051EC0009C597B0FB1FE78060F0F145268597B0A5 -:1051FC00FB1FE780201B2326AC0251BFE30909F8F3 -:10520C000325CC0209C597B0FB1FE78020EEF145C2 -:10521C004A85F1BF9DC483A70B0299EB91659385D9 -:10522C003571714597B0FB1FE78000E123A0AB02FD -:10523C0003A50B0219C57146A68597B0FB1FE78025 -:10524C00C0106388090283A74B0299EB9165938583 -:10525C002571594597B0FB1FE78000DE23A2AB02F6 -:10526C0003A54B0219C55946CE8597B0FB1FE780A5 -:10527C00C00D1DC483A78B0299EB916593851571A5 -:10528C00514597B0FB1FE78020DB23A4AB0203A59D -:10529C008B0219C55146A28597B0FB1FE780E00A27 -:1052AC002254B2509254F249B24B224CCA865A86BE -:1052BC000259424BD6855285D24A624A45616FF0FB -:1052CC008FEF011126CA52C406CE22CC4AC84EC654 -:1052DC002A8AAE8497B0FB1FE780004C25C1AA89AF -:1052EC003945EFD06FAA2A8431C9B727002003C9EA -:1052FC00C75D6314090003C909009307000D1EA0C4 -:10530C00AD473CA09385690013053400194697B04E -:10531C00FB1FE780800393F71400858085885CA4CD -:10532C0044B423154401A2856244F240D244B249EC -:10533C00224A4A85424905616FD02FA9F240624446 -:10534C00D2444249B249224A0561828001114EC6BB -:10535C0052C456C206CE22CC26CA4AC8AA8A2E8A63 -:10536C00B28997B0FB1FE78020433DC92A891305FA -:10537C00C002EFD06FA12A8425C5B727002083C4B3 -:10538C00C75D99E0834409009307000D1EA0E9470F -:10539C003CA09305690013053400194697B0FB1F18 -:1053AC00E780A0FAD285231554011305C4004146A9 -:1053BC0097B0FB1FE78060F9CE851305C401414609 -:1053CC0097B0FB1FE78060F8A2856244F240424927 -:1053DC00B249224A924A2685D24405616FD0EF9E8B -:1053EC00F2406244D2444249B249224A924A05618F -:1053FC008280411122C437240020130484360840D3 -:10540C0006C619C597B0FB1FE78040CE23200400C9 -:10541C00B240224441018280011106CE22CC26CA20 -:10542C004AC82EC697B0FB1FE780003721CDB24586 -:10543C00B727002003C9C75D0CD5AA8463140900E3 -:10544C00034905004145EFD02F942A8405CD9307DD -:10545C00000D1EA1A5473CA1DC309385640011050D -:10546C00A30FF5FE194697B0FB1FE78000EE9C5486 -:10547C00A285F2405CC46244D2444A85424905612B -:10548C006FD0AF94F2406244D244424905618280AD -:10549C001D71A2CC86CE2A842EC697B0FB1FE78046 -:1054AC00A02F15C954251147AA8749456391E602D7 -:1054BC009C5FB24591C3EC2BB70605002308B100E5 -:1054CC009386E693100889452285EF80F03CF640E0 -:1054DC006644256182805145DDBFB727002083C714 -:1054EC00876D0547FD1793F7F70F637AF704894724 -:1054FC0021CA411122C426C24AC006C6B2842E89D2 -:10550C0097B0FB1FE78040292A84D14715C1630659 -:10551C0009005C2193E727005CA14146A685130591 -:10552C00840197B0FB1FE78040E29C481CD4814764 -:10553C00B2402244924402493E8541018280C947CF -:10554C003E858280797122D406D62A842EC697B0E5 -:10555C00FB1FE780602401CDB2452285230EB100EC -:10556C006C08EF80F038B25022544561828051456E -:10557C00DDBF6F800044C1671387E7FF6395E502C9 -:10558C00B727002083A7473791EB494582804945CF -:10559C00B2402244924402494101828003A3070095 -:1055AC00E30503FE0283411122C426C24AC006C68B -:1055BC00FD172A892E84B284639AF502B72700203E -:1055CC0083A7473791CF9C4381CF829711E9B727A7 -:1055DC00002023842739B7270020A38497384DBF98 -:1055EC00A6854A85EFE07FDC45F5D5B72E8597B0CB -:1055FC00FB1FE780601A41DD1C210D45E39A27F95A -:10560C0022852244B2400249A685924441016FC0D2 -:10561C00A0429307F00363E1A7064111C16722C4BE -:10562C0006C626C2FD172A8409456381F502C547C3 -:10563C00AE846312F4022E85EFC08047372500201C -:10564C001305C55A06042A9406A00145B24022440B -:10565C009244410182809307A0036316F4002E85C7 -:10566C00EFC0403EE1BF9307B003E319F4FC13F520 -:10567C00F50FEFC0603DD9B709458280011106CE08 -:10568C002AC6EFE09FD4EF20A057EF107001EF2057 -:10569C007235B72700209387C758130700F0BAA3B9 -:1056AC0023820700B727002032451387476DFD562C -:1056BC0034A3F240238AA76C954505616F60B058FE -:1056CC00597193970501CAD086D6A2D4A6D2CECE54 -:1056DC00D2CCD6CADAC8DEC6E2C4E6C2EAC06EDEF6 -:1056EC00C1872E8963D10750B724002003C5446DB0 -:1056FC00B7290020372B002097B0FB1FE780E0AFC5 -:10570C002A8426CEB72A0020372C00209384C9582F -:10571C00B72C00201DE021653345A900B650265456 -:10572C0096540659F649664AD64A464BB64B264C11 -:10573C00964C064DF25D656182801C201307200A91 -:10574C00639BE70003CA34002A20C1652286FD153D -:10575C00EFF0AF97A1AA72471307476D034A2700D2 -:10576C0013071009639FE7141C3015476391E70278 -:10577C002285EFF04F9A2285EFC05FDEF24703C51A -:10578C00476D97B0FB1FE78040A72A8461B7394764 -:10579C006391E7164A208567A5076315F5040C4449 -:1057AC0083CB0500639D0B00850591C9372500202F -:1057BC0019461305455A97B0FB1FE78000B903C77C -:1057CC00C9588547631FF70E63880B002386095859 -:1057DC005E85EFF0AFC645B789472386F958EFC011 -:1057EC00602851BF8967138727006318E504832B52 -:1057FC00840063880B0C83C70B0099EB83C72B00C9 -:10580C0003C71B00A207D98F9EA483C73B009CB083 -:10581C0003C7C95889476316F70A83C70B0091C79A -:10582C002386095803C50B006DB78C308A248D472D -:10583C002386F958EF60F043F5B795076317F50029 -:10584C001C448823EFF00FE63DB7F9771387A7FFC9 -:10585C002A9742074183914663F1E6049387A7FC9C -:10586C00AA97C207C18371476371F70289671387CF -:10587C00B7006310E50483A70A37E38E07EE9C4359 -:10588C00A285E38A07EE829715A037070018130745 -:10589C00F770B357F700858BB9C783278B37E38C29 -:1058AC0007EC9C43E38907EC22858297E31505EC12 -:1058BC0009A81387C700631FE5001C449C23E38CD5 -:1058CC0007EA9307F00FE308FAEAA2855285EFC0C6 -:1058DC00DFCF6DB5B9076318F50083A74C37E38CA0 -:1058EC0007E8DC4371BF896793871704E305F5F874 -:1058FC00C9BF3D476397E7044A2089671387D700E0 -:10590C00E30DE5FC13879701E309E5FCCD07E31AEA -:10591C00F5FAFA20C167FD17631DF70083A74C3712 -:10592C00E38B07E4DC43E38807E40965A2854D05B6 -:10593C0099BFB727002083A7C737E38E07E29C43A4 -:10594C00DDB71307E003E39EE7F63C200547639AB7 -:10595C00E70C7C2037270020930D8736DDE783A7E3 -:10596C000D00CDC383CB0700214A6830130D840092 -:10597C00EA85EFE0DFE75C2868B083580401035840 -:10598C00E4005A202A8628303EC23E28EA86DE856C -:10599C003EC0D287EFF0CFC03C3095E3DD47835853 -:1059AC0004010358E40074304E203EC23E283EC031 -:1059BC006A87D28705465E85EF80A02128B083A731 -:1059CC000D0081C71145EFF0DFA2930B8C3803C596 -:1059DC000B00E30205DAB727002083C59738EFE008 -:1059EC00DF9CE30A05D83430930710036389F60073 -:1059FC00522083C50B0052873685EFE09FB22304FB -:105A0C000C3895BB83CB340085B783278B3783CB7E -:105A1C003400114AB9DBDC43A9DB8145014582978F -:105A2C00A9B729476396E7087C2037270020930DF8 -:105A3C008736BDE383A70D00A9CF83CB0700214A8E -:105A4C006830130D8400937725001376150089E7D1 -:105A5C00EA85EFE0DFD92A868347040270B08358C9 -:105A6C00C4010358A4015A2028303EC27E2CEA8679 -:105A7C00DE853EC0D287EFF0AFB23C30A9F3DD47F4 -:105A8C008358C4010358A40174304E203EC27E2CAE -:105A9C0039BF83CB340065B783278B3783CB340076 -:105AAC00114AD9DFDC43C9DF81450145829749BFE3 -:105ABC000947639CE70083A70A37E38E07CADC43D8 -:105ACC00E38B07CA228582977DB12D476398E70047 -:105ADC0083A70A37E38107CA9C47DDB70D47639656 -:105AEC00E70022868D454A20A5B11947639CE7043F -:105AFC009305610213051031EF2022772C1013054A -:105B0C002031EF2082767220835781024A2063E78E -:105B1C00C70016240357610263F7E60093050002E1 -:105B2C00EFB0107889B96373E6007AA063F3D700FD -:105B3C001EA45A24362412246E2001488147EFB04B -:105B4C00F07515B91D47E38EE7D631476395E7002D -:105B5C002286B14549BF35476398E70083A70A37CA -:105B6C00E38B07C0DC47A9BF39476396E700228562 -:105B7C00EF00E07909B13D476398E70083A70A3746 -:105B8C00E38B07BE9C4B2DBF41476396E7002285F4 -:105B9C00EF001001CDB645476396E7000145EF00D5 -:105BAC00B00FD1BE4947639DE70083278B37E38A4B -:105BBC0007D0DC43E38707D081450545829711B3B5 -:105BCC004D47639CE70083278B37E38C07CEDC4380 -:105BDC00E38907CEA2850945D5B76147E393E7CEA4 -:105BEC002286E14509B793F7150089CFB727002026 -:105BFC0083A7073789C7DC4399C3014582971345AF -:105C0C00190029BE93F7250091CFB727002083A751 -:105C1C00873791C7DC4381C781450545829713457A -:105C2C002900EDBC93F745000145E38907AEB72782 -:105C3C00002083A7C736372400201304C45889CF0B -:105C4C0085475CA0B727002083A7873791C7DC4323 -:105C5C0081C781450545829748442C10EF80B031AF -:105C6C002810EFF04F9FB727002083D7E75C81CF38 -:105C7C00130600643386C702B727002003C5476D9F -:105C8C009145EFC09FD11345490049BC011122CC6D -:105C9C002A84554506CE26CAEFF0CFC1AA84130537 -:105CAC004002EFF02FC12AC613055002EFF08FC04F -:105CBC00AA86228562443246F240B3359000D24423 -:105CCC0005616FB05064797122D406D68D472E844D -:105CDC00631AF500BA259625F2212830CE21EFE083 -:105CEC00FFFC01A889671387D700631EE502A82172 -:105CFC0019E58547B25022543E8545618280B7270D -:105D0C00002083A68736F5D6B0328C22814802C299 -:105D1C0002C00148814701479106EFF06F880545A5 -:105D2C00EFF02FEDF9B71387E700E304E5FC1387D9 -:105D3C0037016319E500A8214DDD01478146014675 -:105D4C00814571BFE507E306F5FAB1476319F50024 -:105D5C00B727002003C5F758EFF04F8059BF4167B4 -:105D6C007D178147E318E5F8D831C947E313F7F8F5 -:105D7C00F625D2250A24AE25EFB0705E2DC15D4507 -:105D8C00EFF04FB33335A000E8844C202A203008C4 -:105D9C00EF703020BC84B1FF6C0813051031EF207C -:105DAC00C24C9305E10113052031EF20024CBC8657 -:105DBC001A246373F7001EA4BC873A2463F3E7002C -:105DCC003EA40E243E2463F3B7002EA47A2456245A -:105DDC0032242A2001488147EFB0504A19BF854729 -:105DEC00FC8465B7B72700201387476D74331307FE -:105DFC00F00F638DE6063DC9411122C426C24AC08C -:105E0C0006C6AA8428251389476D4105EFC0CFF734 -:105E1C002A8439C59307000D1EA1D9473CA1DE2069 -:105E2C005EA1FC207CA1FC307CB19C241CA59C3484 -:105E3C001CB5B02430A515C2CC44410548C497A06C -:105E4C00FB1FE7808050A285224403457900B240B5 -:105E5C009244024941016FC04FF723260500E5B774 -:105E6C00B240224492440249410182808280C1673F -:105E7C001387E7FF639DE500B727002083A78736CC -:105E8C0095C39C230D47639DA7006FB0703EFD1713 -:105E9C0049476397F500B727002083A78736F5F7A6 -:105EAC003A8582804947EDBF397122DC06DE26DA5D -:105EBC004AD84ED652D456D25AD05ECE62CC182185 -:105ECC0085472A846309F7041025930695009305EA -:105EDC00E1000545EFE02FF6814711C11C2114208C -:105EEC0011476382E604372700200327C7388D4605 -:105EFC001833630AD70285CB1DC70DE10145F2505B -:105F0C006254D2544259B259225A925A025BF24B01 -:105F1C00624C2161828081470145D1B78546631E61 -:105F2C00D7088D8BE1DF0830130A2400D285EFE00F -:105F3C001F8C3729002008B0832709392A8B1309B5 -:105F4C0009398149C1C3B72A00209304F00F83C7D4 -:105F5C00AA38138CAA3863FAF90203250900939B1B -:105F6C0049005E951C21638197061C31639E670571 -:105F7C001946D285090597A0FB1FE780A04529C5C6 -:105F8C00832409001820DE94B1E414209147E387A0 -:105F9C00F6F683270900BDD303460C000147930591 -:105FAC00F00FE30DE6F4BE84C10703C507FF6301E0 -:105FBC00B50C05071377F70FEDB78946E310D7F447 -:105FCC00858B8DB7054525BF850993F9F90F41B729 -:105FDC0088C4C9A891476312F706C8440DC11C2494 -:105FEC001021630EF604182091476318F706C84475 -:105FFC0019C597A0FB1FE780600F23A60400082497 -:10600C0091659385E571050597A0FB1FE780C0029C -:10601C000DC118209147631BF704C8C41C249305B9 -:10602C0094000505A30FF5FE102497A0FB1FE78035 -:10603C00C03108243335A000D9B5884445B7930541 -:10604C009400050597A0FB1FE780C0388547E31C2B -:10605C00F5F85545EFF00F86ADA088444DD197A0CB -:10606C00FB1FE780A00823A4040051BF88C47DB7A0 -:10607C0094A01C30D285138524009CB0194697A09F -:10608C00FB1FE780802C082491659385F57105052D -:10609C0097A0FB1FE78040FA0DC118209147E31928 -:1060AC00F7F2C8C41C24930594000505A30FF5FE54 -:1060BC00102497A0FB1FE78040291C2481F708209F -:1060CC007D151335150025BD397122DC26DA4ED627 -:1060DC0052D406DE4AD856D25AD05ECE2A849309C0 -:1060EC0025000831CE85B7240020EFE04FF008B032 -:1060FC009384C4389C400D472A8A9C336390E704F0 -:10610C003729002083270939814A1309093963810A -:10611C000714B72B002003C7AB3893970A01C18330 -:10612C0003250900138BAB3863E0E70C83460B00A7 -:10613C000327090081471306F00FBDAAF1D3144CB5 -:10614C0070389305E1000545EFE0EFCE15C9984096 -:10615C0085461C2118336310D7028D8BD5F301456E -:10616C00F2506254D2544259B259225A925A025B9A -:10617C00F24B216182808946858BE313D7F8F9BFF6 -:10618C001C2011476385E7002D47E39AE7FCB724F1 -:10619C00002083A7043993840439F1D3814A01493F -:1061AC00B72B002005A88840139B4A001C205A9549 -:1061BC0018216310F7021C31639D47011946CE85E7 -:1061CC00090597A0FB1FE780E02001C503A9040087 -:1061DC005A99850A03C7AB3893970A01C183E3E444 -:1061EC00E7FCE31F09F0A5BF93944A0026951821FC -:1061FC001C206318F70A1C316395470B1946CE8592 -:10620C00090597A0FB1FE780E01C41CD83270900FF -:10621C001147BE941C206385E7002D47639CE70261 -:10622C0003AAC4007C3803460A006308F6025285B0 -:10623C0097A0FB1FE78080EB683891659385E5712B -:10624C00050597A0FB1FE78020DF1DE5E38004EE2A -:10625C00054539B703AA8400F1B70C4C13051A0095 -:10626C0097A0FB1FE78000178547E312F5FC554507 -:10627C00EFE05FE461DDE5B51C2011476385E700C5 -:10628C002D47639EE700C8C47C380505A30FF5FEB7 -:10629C0070380C4C97A0FB1FE780200B45BF88C4BF -:1062AC00E5B7850A8DBDBA844107834507FF638A2C -:1062BC00C5008507C207C183E3E7D7FE51BF88C479 -:1062CC0025A81C20CE85138524009CA01C301946C3 -:1062DC009CB097A0FB1FE7804007683891659385B9 -:1062EC00F571050597A0FB1FE78000D535D1182067 -:1062FC009147E316F7FCC8C47C380505A30FF5FEDF -:10630C0070380C4C97A0FB1FE780200491B701114B -:10631C004AC8372900201309496D0347790006CE76 -:10632C0022CC26CA4EC69307F00F6304F70635C17C -:10633C00AA845145EFC04FA52A8421CD9307000DA7 -:10634C001EA1D5473CA1BC3093898400CE853CB1BD -:10635C00DE205EA1FC207CA1E830EFE04FC968B0E4 -:10636C00CE8513058400194697A0FB1FE780E0FD3E -:10637C00FC24A285034579007CA49E281EA8BC2879 -:10638C003CA86244F240D2444249B24905616FC014 -:10639C00CFA3F2406244D2444249B24905618280A3 -:1063AC00411122C4372400201304446D783006C6F2 -:1063BC0026C29307F00F6307F7020DC5AA8419458F -:1063CC00EFC08F9CAA8519CD9307000D1EA1DD4748 -:1063DC003CA1DE20B24092445EA1683022444101CF -:1063EC006FC0AF9EB24022449244410182800111A1 -:1063FC0022CC372400208327043906CE26CA4AC86B -:10640C004EC652C48DC3130404392E8AAA84014982 -:10641C00084063129902630C0A0497A0FB1FE780E3 -:10642C00E0CC23200400F2406244D2444249B249F9 -:10643C00224A0561828093194900B30735018847C8 -:10644C0009C997A0FB1FE78060CA1C40CE9723A404 -:10645C0007001C40CE97C84709C997A0FB1FE780CF -:10646C00E0C81C40BE9923A60900050955B745DDB7 -:10647C0013964400814597A0FB1FE78040F0144021 -:10648C0081477D5613F7F70FE37F97F81397470073 -:10649C00369710A38507FDB779714AD037290020AC -:1064AC008327C93806D622D426D24ECE52CC56CA11 -:1064BC005AC85EC6C5C3B72A0020AA891309C938B1 -:1064CC00938AAA38014405E1B727002083A607392F -:1064DC0099CA03C60A002A8481479305F00F13F763 -:1064EC00F70F6364C708131534002105EFC0CF897B -:1064FC00AA8401E92145EFC02F89AA8421C1014456 -:10650C00CD49930700FD9CA08547A3803401BCA016 -:10651C00A0B045C49389840023A23401014A372BCF -:10652C000020930BF00F83C70A006373FA0029E86D -:10653C0083270900A6858823EFC02F8903C50A008D -:10654C00814575350325090097A0FB1FE78000BA2C -:10655C0023200900B250225492540259F249624A43 -:10656C00D24A424BB24B4561828013974700369713 -:10657C0018236305B70005041374F40F850785B75A -:10658C0083270B3993154A00BE959C2163837703AF -:10659C002380F9009C31138529007D14A380F90018 -:1065AC00194689051374F40F97A0FB1FE780E0D9F7 -:1065BC00A109050A137AFA0FBDB723A204008DBFF7 -:1065CC00B727002083A7C738B1C7411122C406C61C -:1065DC002A841DE10945EFE0FFAD2A8601C9B727E2 -:1065EC00002003C5476D8545EFC02FBB0545EFF077 -:1065FC00EFE92A84054519C8B727002003C5476D64 -:10660C008545EFC08FD82285413D0545B2402244D7 -:10661C00410182800145828089679386B7006315AA -:10662C00D5009C45882369BF9386C7006317D500A6 -:10663C009C458546882319C9FDB793861704E30248 -:10664C00D5FE938727048146E304F5FE36858280C8 -:10665C00797106D622D426D24AD04ECE52CC56CA06 -:10666C005AC85EC662C469C53C31AA8985C7404117 -:10667C0015C05945EFE01FA4931A850193DA8A419E -:10668C000149372A0020130B000DB54B83C7390085 -:10669C00636EF900B250225492540259F249624A84 -:1066AC00D24A424BB24B224C456182808307840212 -:1066BC0063C757078327CA38130CCA38ADC3228562 -:1066CC00EFF08FFE29CD08245105EFB0FFEBAA8423 -:1066DC0039C523106501230175011C20194693054A -:1066EC0024003CB18307840215057CA11C30A30F48 -:1066FC00F5FE97A0FB1FE78040C51024D0A415C65B -:10670C001385440188C89305940097A0FB1FE7806C -:10671C00C0C383270C00A6858823EFB01FEB0509A7 -:10672C00130494021379F90F95B723A80400D5B775 -:10673C00B727002083A7C738B1DFB93B2254B2502A -:10674C0092540259F249624AD24A424BB24B224C01 -:10675C00014545616FF08FD3797106D622D426D2CC -:10676C004AD04ECE52CC56CA5AC85EC662C44DCD23 -:10677C003C31AA8985C7444195C05945EFE09F93A8 -:10678C00931A850193DA8A410149372B0020930B28 -:10679C0000FD414C83C73900636EF900B25022549E -:1067AC0092540259F249624AD24A424BB24B224CA1 -:1067BC00456182808387F40063C35707130ACB3883 -:1067CC0083270A00A9CF5145EFB01FDC2A8421C9C9 -:1067DC0023007501A3000500230185019C201946A7 -:1067EC00938524003CB18387F40015055CB59C307F -:1067FC00A30FF5FE97A0FB1FE78020B59C24938583 -:10680C0094001305C4003CB4194697A0FB1FE78005 -:10681C00C0B383270A00A2858823EFB01FDB0509CC -:10682C00C1041379F90FBDB7B727002083A7C73868 -:10683C00B5D79D312254B25092540259F249624A52 -:10684C00D24A424BB24B224C014545616FF00FC40A -:10685C005D7186C6A2C4A6C2CAC04EDE52DC56DA30 -:10686C005AD85ED662D466D26AD06ECE630D05203D -:10687C003C31AA8485CB832A450063850A0259459D -:10688C00EFE05F8393178501E1873EC6014437290A -:10689C0000209309000D354C9D4C294D994DB83075 -:1068AC006361E402B640264496440649F259625AA2 -:1068BC00D25A425BB25B225C925C025DF24D61612A -:1068CC0082800387CA00B247634CF7100327C9388C -:1068DC00130AC9386306071083CB0A0013F70B01A0 -:1068EC004DCB4D47639AEB0623800A005685EFF09B -:1068FC00AFFD7DC503C70A00914703C57A0163E666 -:10690C00E70E5105EFB05FC82A8B79C9231035010A -:10691C002301850183C60A00194693852A0034B1E8 -:10692C008386CA00150574A183C61A00A30FD5FE71 -:10693C0097A0FB1FE78060A103C67A012306CB005A -:10694C0041CA13054B012328AB0083A58A0197A0EC -:10695C00FB1FE780809FBDA855476398EB00054758 -:10696C002380EA00A38B0A0051B77547E389EBFE3D -:10697C0049476396EB0009472380EA0085BF4147EE -:10698C006394EB000D47CDBF6D47E391EBF61147D8 -:10699C00E5B713F78B0019C32D47F9BF13F61B008E -:1069AC0013F74B0011C619C315475DBF2147E9B753 -:1069BC0013F62B0019C619C325475DB72380BA01FE -:1069CC0035B701C72380AA0115B723809A0139BFB7 -:1069DC0023280B0083260A00DA858822EFB0FFBE3D -:1069EC000504F10A1374F40F5DBD13050502EFB035 -:1069FC00BFB92A8B75D5C9473CA12310350103C6F5 -:106A0C000A0093F60B0693852A00D18E34B183C607 -:106A1C001A0019461505A30FD5FE97A0FB1FE7809A -:106A2C00C09283C68A00194693851A01A305DB0020 -:106A3C0083C69A0013053B012306DB0083C6AA001C -:106A4C00A306DB0083C6BA002307DB008386CA00DB -:106A5C00A307DB0083D6EA002318DB0083C60A01F8 -:106A6C002309DB0097A0FB1FE780208E03C67A0169 -:106A7C00A30CCB0011C613050B02232EAB00F1B5F2 -:106A8C00232E0B0081BFB727002083A7C738E38BC9 -:106A9C0007E0EFF07FA02644B64096440649F25931 -:106AAC00625AD25A425BB25B225C925C025DF24D3E -:106ABC00014561616FF08F9DB727002083A7C73810 -:106ACC009DC798238D476315A702B727002003C5E0 -:106ADC00476D4111854506C6EFC02F8B130500038A -:106AEC00EFF09F9BB240014541016FF02F9AC947CF -:106AFC003E85828079714AD0372900201309C93824 -:106B0C008327090006D622D426D24ECE6393070ED5 -:106B1C00372400201304446D5820C947298B55C3D2 -:106B2C009165AA849385D57111459790FB1FE780D9 -:106B3C00A0502320A900CD4749C59C201146A6850D -:106B4C007CB097A0FB1FE7804080930531001305B4 -:106B5C00F041EFF0B14EB72700209387C758A02320 -:106B6C0098813334800011C3090413051002EFE03F -:106B7C006FD41379F50F9377190093794900B1CB42 -:106B8C001545EFE02FD3BC20688419455C82EFE0FB -:106B9C006FD26886638E0900BC2013052002DC824C -:106BAC00EFE04FD1688513053002EFE0AFD0688776 -:106BBC00AC307C00380054004A862285EFA07074FB -:106BCC00AA87B250225492540259F2493E8545612B -:106BDC008280E147E38709FEBC20130520025C821A -:106BEC00EFE04FCD688413053002EFE0AFCC688640 -:106BFC00C1B7C547F9B7757126C3B724002022C5A4 -:106C0C0006C74AC1CEDED2DC9384446DDC204944F5 -:106C1C00A18B63810724B727002083A7C738414481 -:106C2C00639A0722AA89EFE0DF949C24554463738E -:106C3C00F522B724002083A7843626894544639B1C -:106C4C00072091659385C57129459790FB1FE780B7 -:106C5C00A03E23A4A4364D44630E051E2946CE85C2 -:106C6C009790FB1FE780606E13056002EFE08FC406 -:106C7C00137AF50F93775A006144638D071C130642 -:106C8C000003814588009790FB1FE780406F937746 -:106C9C001A0093692A000144B9CF4145EFE08FC136 -:106CAC002316A1043D45EFE0EFC02319A10435459F -:106CBC00EFE04FC0231CA1043945EFE0AFBF231F09 -:106CCC00A1042145EFE00FBF2312A1061D45EFE003 -:106CDC006FBE83A784362315A1069C3363850718E2 -:106CEC002D45EFE02FBD2310A1043145EFE08FBC03 -:106CFC002313A10405441305C002EFE0AFBB9818A1 -:106D0C0093171400BA97239EA7FC1305B002EFE06B -:106D1C006FBA930484009C188604BE942399A4FC37 -:106D2C0013059002EFE00FB9239CA4FC1305A002FD -:106D3C00EFE04FB8239FA4FC13058002EFE08FB760 -:106D4C00930404019C188604BE94239AA4FC130596 -:106D5C007002EFE02FB6239DA4FC137A4A00630463 -:106D6C000A0813056003EFE0EFB405049C189314B4 -:106D7C001400BE94239EA4FC13055003EFE08FB3C4 -:106D8C00130A84009C18060A3E9A2319AAFC1305C0 -:106D9C003003EFE02FB2231CAAFC13054003EFE0F5 -:106DAC006FB1231FAAFC1305E002EFE0AFB0410462 -:106DBC009C1806043E94231AA4FC1305D002EFE0A1 -:106DCC006FAF83278936231DA4FC9C33C5C71305DD -:106DDC001003EFE02FAE2398A4FC13052003EFE083 -:106DEC006FAD239BA4FC83278936A833938547007A -:106DFC00EFD01F9C2AD69305F1031305F041EFF059 -:106E0C00F123B72700209387C758AC230347F1031E -:106E1C003256B335B00011C3890583268936FC0080 -:106E2C009308A106A8223EC8930721053EC6BC08BC -:106E3C003EC49307E1053EC2DC103EC0130861045A -:106E4C009C004E879106EFA0504C2A8401C50D453D -:106E5C00EFE02FDA2285BA402A449A440A49F659BF -:106E6C00665A496182802545EFE0CFA42310A10426 -:106E7C002945ADBD1305F002EFE0CFA32398A4FC88 -:106E8C0013050003A9BFB727002083C7876D0145F1 -:106E9C00A18B89C737250020130545646FD0CFED32 -:106EAC00B72700207D5723850738B7270020A38DEF -:106EBC00E76CB727002023A8073837670400B727EB -:106ECC0000201307476223A60738B727002023A802 -:106EDC00E76237670400938707631307C765D8C356 -:106EEC00376704001307477698C7377704001307F2 -:106EFC00C785D8C737670400130707DF98CB3767F8 -:106F0C000400B72700201307A7E723A2E76437671D -:106F1C00040093874764130727CDD8C3828041119F -:106F2C0022C4372400201304A43826C2AA840820C3 -:106F3C00854506C6EFF0AFCBB727002083C7876D1A -:106F4C00A98BBDC73725002004A013050563B72402 -:106F5C000020EFD0CFE1938404399C4099C74D4574 -:106F6C00B2402244924441018280082019E101453B -:106F7C00C5BF91659385B57112059790FB1FE7808E -:106F8C00A00B88C069DD1020814512069790FB1F6D -:106F9C00E780E03E142090408147FD5513F7F70F32 -:106FAC00E377D7FC1397470032970CA38507FDB7FF -:106FBC00014523000400EFD08FDB55BF411122C4E3 -:106FCC00372400200325C43606C619C59790FB1F2D -:106FDC00E780C01123260436B2402244410182804E -:106FEC0001111305700306CEEFE0CF8C2AC61305F2 -:106FFC008003EFE02F8C2AC413059003EFE08F8BF6 -:10700C002246B245F240AA86054505616FA0B02E16 -:10701C005D711305D00386C6A2C4A6C2CAC0EFE038 -:10702C006F892A841305C003EFE0CF88AA84130567 -:10703C00E003EFE02F882A891305F003EFE08F8738 -:10704C008A871377F50F9376F90F13F6F40F937570 -:10705C00F40F0545EFA0702CB64026449644064923 -:10706C00616182805971A2D4372400208327C436F1 -:10707C0086D6A6D2CAD0CECED2CCD6CADAC80545D0 -:10708C006389070C9305F1041305F041EFF0017BC4 -:10709C009305F1041305F041EFF0417AB727002076 -:1070AC009387C758BC230347F104B337F00011C3CF -:1070BC0089070327C4363EDE283393054700EFD0FB -:1070CC002FEF0327C4362ADC0D452C232EDAEFD004 -:1070DC007FFE2AD81145EFD0FFFD0324C4362AD6F3 -:1070EC0065453824034BB4003AD4EFD0BFFCAA84D6 -:1070FC006945EFD03FFC2A897145EFD0BFFBAA89C7 -:10710C006D45EFD03FFB2A8A7545EFD0BFFAAA8AAE -:10711C007945EFD03FFAE2046258F2572257B25643 -:10712C004256D2551375F50F93FAFA0F137AFA0FDC -:10713C0093F9F90F1379F90FE1842ACC56CA52C886 -:10714C004EC64AC426C25AC0930844000545EFA057 -:10715C00F016B650265496540659F649664AD64A45 -:10716C00464B65618280011122CC06CE26CA8D4722 -:10717C002E84631AF504B831B7240020E947CA21DC -:10718C009384C4586315F700FE206389A704979075 -:10719C00FB1FE780606019C17E207EA53A2416246F -:1071AC0072204E202830EFD07FB05A20FE20630989 -:1071BC00F7008547F2406244D2443E8505618280E7 -:1071CC00FD57FEA0FDB78967CD07631CF500BC21F8 -:1071DC0031476385E7004547E39DE7FCEFD0CFC01F -:1071EC00C9BFB1476319F500B727002003C5976DD8 -:1071FC00EFD0DFB67DBF41677D178147E31CE5FA11 -:10720C00D4314947E398E6FACC212A2030002314E4 -:10721C000100EF60005371BF411122C437240020DC -:10722C008347443926C24AC006C61307E00FAA8416 -:10723C002E896380E7041307F00F1304443963822B -:10724C00E7021145EFB04FB409CD930700FD1CA127 -:10725C008947A30025013CA124B1AA850820EFB0E1 -:10726C00CFB6F9571CA0B2402244924402494101C6 -:10727C0082801145EFB04FB17DD5930700FD1CA165 -:10728C0089473CA1A300250124B12244B727002043 -:10729C00B24092440249AA8503C5573941016FB0E7 -:1072AC00CFB279714AD0372900208327C93622D42E -:1072BC0006D626D24ECE52CC56CA4544C5EBB72480 -:1072CC0000209387446DDC234944958BC5C3B727B5 -:1072DC0000202E8A9165A38AA738AA899385757197 -:1072EC0031459790FB1FE78020D52326A9364D44C6 -:1072FC0035CD23003501A30005002946D2850905AB -:10730C009790FB1FE78060048327C9369146B8230A -:10731C0063E9E60835E74D47B8A3B82313670701BF -:10732C00B8A3930571001305F041EFF021519C8334 -:10733C00F1E7B727002003C7E7588D476310F70C18 -:10734C00EFD08FD42C00EF7000432800EFD0BFB0EB -:10735C004545EFD03FD6014411C9130600643306EE -:10736C00C50203C5446D9145EFB02FE32285B250A1 -:10737C00225492540259F249624AD24A456182809F -:10738C0085466314D700754741BF89466314D700FF -:10739C00494759B78D466314D7004147B5BF554788 -:1073AC00A5BF9546CA8A630DD70099466315D700C9 -:1073BC000947B8A331A01D466312C70223810700F9 -:1073CC006545EFD03FCF9307F007E30CF5F403A727 -:1073DC00CA363C2393E707043CA3A1B721466314A8 -:1073EC00C7000547F9B725466314C700B4A3C9BF46 -:1073FC00A9460544E31CD7F6114765BFEFF09FC6BD -:10740C002A842DD5EFF09FBB95B7011126CAB7245E -:10741C00002083A7C43622CC06CE4AC84944B9C33F -:10742C009C230D446390A704372900200345496D24 -:10743C008945EFB08FF50345496DB727002091457D -:10744C00239C0738EFB06FF483A7C43601478146FD -:10745C0080B31306F100854785450145DC87EFA015 -:10746C0040692A842285F2406244D2444249056133 -:10747C008280011106CE22CC26CA4AC88547631ADF -:10748C00F50637240020130484391E20B9C737278A -:10749C0000200347075931E31307B003636BF7026E -:1074AC00B724002003C5446D8945EFB00FEE1220C0 -:1074BC009307006403C5446D3306F6028945EFB0AB -:1074CC00CFCD23100400F2406244D24442490561FE -:1074DC008280938747FC1EA0FDB7B727002083A7A7 -:1074EC00C736F5D36244F240D24442498823056141 -:1074FC0029BFB724002083A7C436F1D73727002033 -:10750C001309476D83474900918BD5DF8947631E6B -:10751C00F5042D452EC6EFB02F872A844DD5B245E4 -:10752C00930700FD1CA1E547A30005003CA1BC315D -:10753C0015051946230FF5FEDC219505A30FF5FE65 -:10754C009790FB1FE78060E0034559009307F00F0D -:10755C006315F50083A7C4368823A2856244F240E4 -:10756C00D244424905616FB04F860345476D89454A -:10757C00EFB0AFE16244F240D2444249B727002059 -:10758C00239C073805616FF07FA3B727002083C7C2 -:10759C00876D958B89CFB727002083A7473A91CB6E -:1075AC00B72700200547238DE7386FF07FA34945A7 -:1075BC00828041458280B727002085450145238D77 -:1075CC0007386FA0C053B727002083C7876D958BF2 -:1075DC0081CBB72700200547238BE7386FF05FA3DB -:1075EC0049458280B727002081450545238B073804 -:1075FC006FA0E052B727002083C7876D958B638CF3 -:10760C0007129307C01C63FCC70009458280F24037 -:10761C006244D2444249B249094505618280B72788 -:10762C00002083A7C73663880710B72700209387ED -:10763C00473903C807001307E00F631EE80E01115A -:10764C0022CC4AC806CE26CA4EC688A3130586008D -:10765C004205368932844181A5C99165938565714E -:10766C009790FB1FE780409DAA8955D1B724002035 -:10767C0003A5043A9384043A09C59790FB1FE7804D -:10768C00E0A61385890023A0A9002286814523A0AA -:10769C0034019790FB1FE78080CE9C402286CA85E0 -:1076AC0088439790FB1FE78040CA9C40A286F2401B -:1076BC00C2A36244D2444249B249984305468D451F -:1076CC00054505616FA06042916593855571979052 -:1076DC00FB1FE7806096AA891DD9B724002003A55B -:1076EC00843A9384843A09C59790FB1FE78000A0E5 -:1076FC001385890023A0A9002286814523A034018B -:10770C009790FB1FE780A0C79C402286CA858843C0 -:10771C009790FB1FE78060C39C40A286F240C2A3F7 -:10772C006244D2444249B249984305468D450545C9 -:10773C0005616FA0C03B494582809307C01C63FC68 -:10774C00A700094582800945F2406244D24442496F -:10775C00B2490561828055C9011122CC2A842105C8 -:10776C004EC64205AE8991659385657141814AC8C3 -:10777C0006CE26CA9790FB1FE780008C2A8961D51C -:10778C00B724002003A5043A9384043A09C59790C2 -:10779C00FB1FE780A095130589002320A9002286F2 -:1077AC00814523A024019790FB1FE78040BD9C409E -:1077BC002286CE8588439790FB1FE78000B99C40BA -:1077CC00C2A3B727002083A7C73685CFB7270020D1 -:1077DC0083C7876D958B85CBB727002083A7073A86 -:1077EC0091CF9843D6236244F240D2444249B249E5 -:1077FC0005468D45054505616FA0202F0147814643 -:10780C00DDB7014591B7494581B7B727002083A75C -:10781C00C7368DC7B727002083C7876D958B8DC35F -:10782C00B727002083A7073A99C79843D623054664 -:10783C008D450545D1B701478146D5BF01458280AD -:10784C00494582809307C01C63FCA70009458280D0 -:10785C000945F2406244D2444249B24905618280F2 -:10786C0055C9011122CC2A8421054EC64205AE8988 -:10787C0091659385557141814AC806CE26CA978079 -:10788C00FB1FE780607B2A8961D5B724002003A504 -:10789C00843A9384843A09C59790FB1FE78000854E -:1078AC00130589002320A9002286814523A02401E9 -:1078BC009790FB1FE780A0AC9C402286CE85884326 -:1078CC009790FB1FE78060A89C40C2A3B7270020BD -:1078DC0083A7C73685CFB727002083C7876D958BC5 -:1078EC0085CBB727002083A7873A91CF9843D6231F -:1078FC006244F240D2444249B24905468D450545A1 -:10790C0005616FA0C01E01478146DDB7014591B7E7 -:10791C00494581B7B727002083A7C7368DC7B7273E -:10792C00002083C7876D958B8DC3B727002083A755 -:10793C00873A99C79843D62305468D450545D1B757 -:10794C0001478146D5BF0145828049458280930716 -:10795C00C01C63F4A70009458280797122D44ECEF5 -:10796C0006D626D24AD0AE892A8425C12105916536 -:10797C0042059385757141819780FB1FE780C06B31 -:10798C002A89094563040908B724002003A5443A51 -:10799C009384443A09C59780FB1FE7802075130533 -:1079AC0089002320A9002286814523A024019790D9 -:1079BC00FB1FE780C09C9C402286CE858843979015 -:1079CC00FB1FE78080989C40C2A3B727002083A7A9 -:1079DC00C736014585CFB727002083C7876D49453A -:1079EC00958B8DC76C001305D030EF001208B24791 -:1079FC00014593F7070F99CBB727002083A7473A88 -:107A0C008D4505459443D223EFA0200FB25022544C -:107A1C0092540259F24945618280B727002083A70E -:107A2C00073A89CFD2238C43411106C69790FB1F8E -:107A3C00E780A091B24001454101828009458280D6 -:107A4C00B727002083A7073A85C7B727002003A7CD -:107A5C00873A894719CF52230C43411106C6979098 -:107A6C00FB1FE780808EB24081473E8541018280BA -:107A7C0089473E858280B727002083A7073A85C7B0 -:107A8C00B727002003A7473A894719CF52230C4345 -:107A9C00411106C69790FB1FE780208BB2408147AF -:107AAC003E854101828089473E858280797106D668 -:107ABC0022D426D24AD04ECE52CC8D4763FCA7009E -:107ACC008944B2502254268502599254F249624A92 -:107ADC0045618280372900200347C958C144E3120D -:107AEC00F7FE9307F5FF9309C95893F7F70F8546EF -:107AFC00AE842A8403CA29001309C95863EAF6061E -:107B0C008DE199452800EFC01FA9B729002003C5B6 -:107B1C00496D914523018900EFB02F8735E48144ED -:107B2C004DB71946814528009790FB1FE7802085AB -:107B3C0019462C0026859790FB1FE780A08949F1F8 -:107B4C0019469305F00F28009790FB1FE7802083C0 -:107B5C0019462C0026859790FB1FE780A0872DF1F6 -:107B6C001946A68528009780FB1FE780007E71BF11 -:107B7C00E31DE5F803A5C9002C00EF60D03FAA84F3 -:107B8C0049D52381490135BF2800EFD0CFACAA8459 -:107B9C0005ED930571001305F041EFE0314A848344 -:107BAC00BDFC8D47E31DF4F64545EFD0AFD025D98C -:107BBC00B7771800938707A03306F50203C5496D04 -:107BCC009145EFA0FFF6F5BD23014901DDBDB727B7 -:107BDC00002083C7876D918B8DC337250020411101 -:107BEC001305C53906C6EFC07F9AB240B7270020EF -:107BFC007D572399E7584101828001456FC01F9939 -:107C0C00B72700207D57A38AE738B727002079577C -:107C1C00238AE738B7270020238D0738B7270020A1 -:107C2C00238B0738B7270020239C0738B727002061 -:107C3C0023A0073AB727002023A4073AB727002030 -:107C4C0023A2073A37870400B7270020938787457C -:107C5C001307C7E598C3377704001307E747D8C362 -:107C6C00377704001307070798C737770400130703 -:107C7C00C7FED8C7377704001307C70198CBB7776F -:107C8C0004003727002093872717232EF73882808C -:107C9C00411126C2B724002083A7C43606C622C4CD -:107CAC008DCB2A840D45EFA03F8EAA8501CD93077D -:107CBC0000FD1CA18D4700B13CA183A7C4368823CD -:107CCC00EFA0BF9019C42244B240924441016FF01E -:107CDC00EFAEB2402244924441018280797152CC81 -:107CEC00372A00208327CA364AD006D622D426D279 -:107CFC004ECE56CA0149B1C303C91700B7240020A0 -:107D0C008547AA899384C4586303F904DC20054988 -:107D1C008DE70D45EFA05F87AA8509CD930700FD80 -:107D2C001CA19147A30035013CA18327CA368823A7 -:107D3C00EFA0BF89EFF08FA80549B25022544A85B5 -:107D4C0092540259F249624AD24A45618280B7275D -:107D5C00002083A7073AD28A85E30145EFD08FB57F -:107D6C002A8601CAB727002003C5476D8945EFA0B5 -:107D7C00DFC283A7CA36B1A09443D2239305E10096 -:107D8C000545EFC05F8B71D91C21858BF9D7054553 -:107D9C00EFD04FB29307B0032A8463FEA702B72734 -:107DAC00002003C5476D5D66130606708945EFA07C -:107DBC003FD8B7270020130444FC239C8738832723 -:107DCC00CA36094798B3DC2081C723820400B5B7B3 -:107DDC004E857D3D9DB7130600643306C50251B731 -:107DEC00411122C42A840D4506C6EFA0EFF90DC13E -:107DFC00930700FD1CA1CD473CA100B12244B7273D -:107E0C000020B240AA8503C5573941016FA0EFFB92 -:107E1C00B240224441018280411122C42A840D4582 -:107E2C0006C6EFA06FF60DC1930700FD1CA1ED4730 -:107E3C003CA100B12244B7270020B240AA8503C55B -:107E4C00573941016FA06FF8B24022444101828042 -:107E5C005A210111896606CE22CC26CA13866600E9 -:107E6C00AA876316C7009C4701458C2301A813867B -:107E7C0086006319C7009C4705458C23EFF0CFB9EA -:107E8C0005451DA8138696006311C70237270020ED -:107E9C000327C73601450DC39C47882341E185471D -:107EAC001CB30545EF90903CE1BF1386A600631A06 -:107EBC00C7009C4788231D35F2406244D2440561BB -:107ECC00828013866603E300C7FA13867603E30405 -:107EDC00C7FA138686036316C704B724002003A7CA -:107EEC00C436014571DB9C4788230DE905447D456B -:107EFC004085EFD02F9C688613050002EFD08F9B36 -:107F0C0083A7C436C8851307B10080B37400130669 -:107F1C00A10085450545EF90D03D9DB7EFF05FD7AB -:107F2C0085B713869603E306C7F81386E603631634 -:107F3C00C7001C4509458C2391B79386F603631B38 -:107F4C00D7021C45882325E96C001305D030EF00BF -:107F5C00C231B247414793F7070FE383E7F293052A -:107F6C00B10013056031EF00423088858545EF90F4 -:107F7C00103939B78966138606046310C7041C458B -:107F8C008023B727002083C7A73922858DE70D45AD -:107F9C00EFA08FDFAA85E30505EE930700FD1CA17A -:107FAC00D1473CA100B1B727002083A7C73688234F -:107FBC00EFA0AFE1F1B52D35E1B513861605631AC7 -:107FCC00C7001C45882321E585450545EF903035D4 -:107FDC0045BD938626050145E310D7EE9C478023CB -:107FEC00B727002083C76739228595E30D45EFA09D -:107FFC00AFD9AA85E30605E8930700FD1CA1F1475C -:10800C003CA1B727002000B103C5573955B7293516 -:10801C0085BDB727002083C7876D411106C6958B98 -:10802C0099CB3725002013058545EFC08FD54D45DD -:10803C00B240410182800145EFC0AFD40145CDBFB4 -:10804C009821937625009377D70F99C293672700D1 -:10805C00131885011358884113F7F7076354080068 -:10806C0013E70708937685009377770F99C2936788 -:10807C0087001377050293F6F70D19C393E60702F1 -:10808C0094A1634508009377A50291C71C2293E73E -:10809C00C7001CA282807DFD1C22CD9BDDBF2D451F -:1080AC00631B071003C8050009476312E810C84199 -:1080BC00183108212207498F42070D654187930823 -:1080CC0025A06303170B011122CC26CA4AC84EC641 -:1080DC0006CEBE89B68432842E8963CEE80093071F -:1080EC0005A0630AF702130515A0630CA7042390DF -:1080FC0004000545B9A8930745A0630EF706634134 -:10810C00F706130565AAE314A7FE85479EA2DC4576 -:10811C009C231CA235A8C8459780FB1FE7804027ED -:10812C00420541814E86637335012A8692A0420630 -:10813C0041828325C90022859780FB1FE780E020C0 -:10814C0001A8DC459E23239006011CA2A1831CB22E -:10815C000145F2406244D2444249B24905618280F1 -:10816C0099479EA21946F1B785479EA2DC45014569 -:10817C009C231CA28280DC4585CB21479AA29A23A2 -:10818C0018A29A23218318B2BA2338A2BA232183C6 -:10819C0038B2DA2358A2DA23218358B2FA2378A210 -:1081AC00FE23A1837CB26DB72390060055B72390B4 -:1081BC00060005458280828083C805008947639547 -:1081CC00F814DC41797122D406D626D24AD04ECE90 -:1081DC0052CC03C817009C232E8422083368F80065 -:1081EC0042088D6713580841138327A06301681058 -:1081FC002A8A3A89B684B285634C0301138707A097 -:10820C00630AE802938717A06309F808854711A849 -:10821C00138737A06308E80A138767AA8D47E3170B -:10822C00E8FEB250225492540259F249624A3E85F9 -:10823C0045618280484432C69780FB1FE780401519 -:10824C00420541819D47E36E25FDB3099900D54751 -:10825C00B24563D43701B547E9B748442686C2090D -:10826C004A959780FB1FE780400E484493D909013B -:10827C0059463306364181454E959780FB1FE78062 -:10828C000010B727002083A7073B99E3814751BF14 -:10829C009C438145E5DF528525A0AD47E31309F8E2 -:1082AC00E39B16FB1C3214225844A207D58F1EA345 -:1082BC00B727002083A7073BF1DB9C438545F9D703 -:1082CC008297E9B7AD47E31E09F49947E395F6F8B1 -:1082DC00484419469780FB1FE7802007B7270020EA -:1082EC0083A7073BC5D79C43D5D38D456DB7AD4709 -:1082FC000DFB8547E391F6F6182293070008E3E29D -:10830C00E6F2DC4598A359B785473E858280B727AE -:10831C0000203727002023A8073AB72E00208947D2 -:10832C00A307F732130FF7328147938ECE46594786 -:10833C00B386FE00238006008507E39BE7FEB72586 -:10834C000020B707A00093854533938707059CC190 -:10835C00B707E803DCC1B72700202387073A379615 -:10836C000600B72700209387C72313068656D0C371 -:10837C00372E0020379606000947130ECE3213060F -:10838C00C6532300EE00D0C723AEE70123AEC703CC -:10839C0037230020B728002037280020372500205D -:1083AC0037960600379F0600379E06008546130653 -:1083BC00C654938808331303C33A1308E8321305E1 -:1083CC00D532130F4F55130E4E542380E80098A34B -:1083DC0098AB2380E7022388E7022380E70423007D -:1083EC00E80094A723950700D0CB94AF239D0700FA -:1083FC0023A2E7032384D7022395070223A6D703DE -:10840C00D0DB238CD702239D070223A2C70523842C -:10841C00D704239507042310030014A123A6670493 -:10842C002388E70423AE17052380E7062388E70695 -:10843C002380E708B7980600379706001307875480 -:10844C009388485623A2E708F0CB238CD704239DAE -:10845C00070423A217072384D70623950706ECD716 -:10846C00F0DB238CD706239D070623AE0707238456 -:10847C00D7082395070823A6A70837870400B72732 -:10848C0000209387C72C1307A70A98C337870400CB -:10849C001307471CD8C323A407008280A54763ECAD -:1084AC00A70CB7970600938787E50A053E951C41F4 -:1084BC00411122C426C206C64AC0B2842E848287C9 -:1084CC00D547614563E5B7023729002059468145F8 -:1084DC001305C9469780FB1FE78060EA2286A685B4 -:1084EC001305C9469780FB1FE78020E60145B24083 -:1084FC002244924402494101828089476145E398B4 -:10850C00F5FE1A22B72700202396E73AC5B7A147F4 -:10851C006145E39EF5FC372500202146A685130511 -:10852C004533EF007205D9B785476145E391F5FCFA -:10853C00B72500209385C523D04D938585028820CF -:10854C00EFF01FB065B785476145E392F5FAB725A3 -:10855C0000209385C523D05D93858504CDB78547D1 -:10856C006145E396F5F81822B7270020A386E73279 -:10857C00B5BF0945ADBF094582800547630CE502CF -:10858C004111AA8706C62E8599CB1147638BE7024A -:10859C0025476380E7040945B24041018280B72535 -:1085AC00002055469385C5469780FB1FE780E0D990 -:1085BC000145DDB7B727002083D7C73A01459EA1F7 -:1085CC008280B7250020214693854533EF00C27A7F -:1085DC00C5B7B727002083C7D7329CA1D1BFB72717 -:1085EC0000209387E73A98230DE3054798A3058964 -:1085FC0009CDB7260020372500209386C62C41468E -:10860C00A5451305C5236F306037014582800111E4 -:10861C001388F5FF06CE22CC26CA4AC84EC652C4D1 -:10862C001378F80FAD4563ED050BB79506000A08F6 -:10863C00938505E82E983E8A83270800BA893689E7 -:10864C00B28482878545EFC0AF912A8419E1EFF09F -:10865C005F9C2285F2406244D2444249B249224A8C -:10866C00056182808945EFC0AF8F2A847DF1268514 -:10867C00EFE0FF8AF9BF9145EFC08F8E2A8471F924 -:10868C005286CE854A85EFC00F84EFF09F98EFF0AD -:10869C000FD4EF60007575BFA145EFC06F8C2A84B5 -:1086AC004DF95286CE854A85EFC0EF812685EFE0E5 -:1086BC001F87EFE04FFDEF60C07061BFB145EFC0A9 -:1086CC002F8A2A8459F55286CE854A85EFB0BFFF92 -:1086DC002685EFE0DF84EFE00FFBEF60806E75B76F -:1086EC00094485BF79714ECEAE896C0022D426D256 -:1086FC004AD006D62A89B284EF0050692A840DE14B -:10870C00CE854A85EFB08FDD2A8419E93245B7460C -:10871C00040026879386C6CD2D468145EF10200197 -:10872C002285B250225492540259F24945618280FA -:10873C0079714ECEAE896C0022D426D24AD006D6A0 -:10874C002A89B284EF0090642A840DE1CE854A8593 -:10875C00EFB04FE62A8419E93245B7460400268764 -:10876C00938666DB4D468145EF00707C2285B250C6 -:10877C00225492540259F24945618280397126DAA9 -:10878C00AE844C0022DC4AD84ED652D406DEAA89DE -:10879C003289368AEF00905F2A8421E9A685630D21 -:1087AC0009009E202C007C84BE207C859307203001 -:1087BC007C86930780025C874E85EFB04FCF2A846E -:1087CC000DE55946A6851305A100230421019780C8 -:1087DC00FB1FE78080B71245B7460400528793868B -:1087EC00E6C825462C00EF0090742285F2506254A6 -:1087FC00D2544259B259225A21618280797126D2BF -:10880C00AE846C0022D44AD04ECE06D6AA893289C8 -:10881C00EF00D0572A840DE1A6854E85EFB0CFCD61 -:10882C002A8419E93245B74604004A87938686CFD5 -:10883C003546A685EF00B06F2285B2502254925473 -:10884C000259F24945618280BD47638CF50663E9A4 -:10885C00B702A5476387F50663EDB7009947638CAC -:10886C00F5049D47638FF5049547638CF50401452A -:10887C008280B5476387F50463E1B704AD47F5B76C -:10888C00DD47638EF50263EAB700C947638BF502D7 -:10889C00D9476386F502C547C9BFF5476383F5021F -:1088AC0063E4B700ED47D1B793072005638BF50060 -:1088BC009307200D5DBF48458280084182800845A2 -:1088CC008280484182809307F00F630DF5060111F9 -:1088DC0026CAAA841305000222CC4AC84EC652C42A -:1088EC0056C206CE3A89B689B28A2E8AEF90DFC973 -:1088FC002A844D450DC8930700FB1CA0A30054010E -:10890C0023114401230234011305840061466305DD -:10891C000902CA859780FB1FE78020A3A2852685C4 -:10892C00EF90BFCA0145F2406244D2444249B24979 -:10893C00224A924A0561828081459780FB1FE7801D -:10894C0000A4E9BF09458280011122CC06CE2A84FD -:10895C004C86D0869780FB1FE78000E405C1542528 -:10896C00B727002021479387476D639DE600E823D6 -:10897C0078009306E0070146A285B137F2406244C5 -:10898C000561828078009306E0070146A285C83312 -:10899C00EDB7930700643306F6026FA02F9015C550 -:1089AC00182185469307270093F7F70F63FFF6000E -:1089BC00411122C42A843A8506C6EFA00FA2FD57A6 -:1089CC001CA0B24022444101828082801A2193076C -:1089DC00000B6310F7025C214947639AE7001839D2 -:1089EC0085476398E7002A2185456F30301D6D4718 -:1089FC00CDBF828001116C846C0022CC26CA4AC87F -:108A0C0006CE2A89B6847085EF0050382A840DE191 -:108A1C002C004A85EFB04FA02A8419E93245B7469D -:108A2C0004002687938626BE15462C00EF00305096 -:108A3C002285F2406244D2444249056182807971B8 -:108A4C00930720306C8470857C862C009307800201 -:108A5C00014606D65C87EFF07FD2B250456182802A -:108A6C00C177797185073EC4894726D27C86AE844E -:108A7C00930780024C0022D44AD006D62A895C8700 -:108A8C00EF00D0302A840DE12C004A85EFB0CFAF37 -:108A9C002A8419E91245B74604002687938666D6C0 -:108AAC0045462C00EF00B0482285B2502254925417 -:108ABC00025945618280B28605466FF03FCC7971D0 -:108ACC0026D2AE846C0022D44AD04ECE06D6AA89C9 -:108ADC003289EF00B02B2A840DE1A6854E85EFB0CC -:108AEC006F8B2A8419E93245B74604004A8793866E -:108AFC0086B80D46A685EF0090432285B2502254CD -:108B0C0092540259F2494561828079719307202071 -:108B1C006C8470857C862C0093078002014606D6F7 -:108B2C005C87EFF0BFC5B25045618280011122CC49 -:108B3C0006CE2A842EC632C436C29780FB1FE7802D -:108B4C00A0C515C94825B7270020A1469387476DB6 -:108B5C0012472246B245631BD500E823B2862E8607 -:108B6C00A2856244F24005616FF0FFD5B286C8332E -:108B7C002E86A285FDB7F2406244054505618280D0 -:108B8C006FF05FB66FF01FB66FF05FC76FF01FC767 -:108B9C0079714ECEAE896C0022D426D24AD006D63C -:108BAC002A89B284EF00901E2A840DE1CE854A8575 -:108BBC00EFB04F962A8419E93245B7460400268750 -:108BCC00938646D13D468145EF0070362285B250E2 -:108BDC00225492540259F24945618280B286014670 -:108BEC006FF0DFB9011122CC2E846C0026CA06CEA0 -:108BFC00AA84EF00B019DD476309F5009307101044 -:108C0C001EA4A2852685EFB0EF9AF2406244D244AE -:108C1C0005618280239405009E2599E36FF05FB176 -:108C2C0009458280C5BFB727002003C7A73E8547EB -:108C3C0063F8E702011122CC2E846C0026CA06CE02 -:108C4C00AA84EF00B01401E9930700101EA4A285BA -:108C5C002685EFB02F96F2406244D24405618280A3 -:108C6C0059458280B727002023AAA73A8280B727CC -:108C7C00002023ACA73A8280011122CC26CA06CE52 -:108C8C002A84AE849780FB1FE78000B1A6852285DD -:108C9C00EFA05FC405E9228564869780FB1FE780FF -:108CAC00A0AF0DC15425B727002021479387476DEE -:108CBC00639FE600E82378009306F0070146A2853F -:108CCC00EFF07FC0F2406244D24405618280C83329 -:108CDC00DDB7011126CA06CEB68422CCDD4663E38D -:108CEC00B608D94663FFD50AA5466382D50A63EF59 -:108CFC00B6049546638DD50899466388D50A054414 -:108D0C0041687D18631706093AC6EFA07FC0330689 -:108D1C008540324742064182420441803305C400FB -:108D2C004205BA85418132C6EF304077AA8751C1DE -:108D3C0099C0324692A0B30580406244F240D244BE -:108D4C003E8505611773FB1F67000346C5466380AC -:108D5C00D504C9460D44E394D5FAC167FD17E31D4C -:108D6C00F6FA5DB7F5466380D50463E4B600ED46CC -:108D7C00D5B7930620056388D5029306200DE390A2 -:108D8C00D5F8C167FD170D446319F600B5BF09444A -:108D9C0085BF9306200DE391D5F83106420641823A -:108DAC00A5BF15445DBF0D444DBFC167FD171D44E4 -:108DBC007DB7F2406244D24405618280011122CC1D -:108DCC0026CA06CED0212E8413070002814699456F -:108DDC00AA84EFF01FF02AC621C51E20502093054F -:108DEC0054007C803E207C8189477C8293078002E2 -:108DFC005C839770FB1FE78040555C208A85268535 -:108E0C007C84EFA01FE42A8411C532459770FB1FA8 -:108E1C00E780C02D2285F2406244D24405618280F5 -:108E2C004D44CDBF5D7186C6A2C4A6C2CAC04EDE7B -:108E3C0089476306F600C14709446318F6040144E8 -:108E4C00A9C52E894C0832C6B689AA8481272A84E2 -:108E5C00324605EDC1778507CA851305D1013ECC95 -:108E6C00230EC1009770FB1FE780204E2C0826852F -:108E7C00B1372A8419E95245B74604004E879386C8 -:108E8C0046C31D462C08EF00900A2285B6402644A6 -:108E9C0096440649F25961618280797122D43684F4 -:108EAC004AD04ECE52CCB2892E8A3A8981461307CB -:108EBC0010022286D94526D206D6AA84EFF07FE18D -:108ECC002AC621C12286CA8560842312410123133C -:108EDC0031019770FB1FE78040474C002685EFA0BF -:108EEC003FF72A8411C532459770FB1FE78000209D -:108EFC002285B250225492540259F249624A456179 -:108F0C0082804D44F5B7011122CC26CA06CE4AC840 -:108F1C00DD472A84AE846389F50281470A206C0000 -:108F2C005C86EFA0BFF605456381A4080824B165F3 -:108F3C00938505B8EF905F9CE5473CA0B7470400CC -:108F4C009387E7E85CC08DA058393149B286330667 -:108F5C00270318499C4232971043E310F6FCDE229B -:108F6C005223E31CF6FA8C4608479770FB1FE780E8 -:108F7C00604645D55C385828850793F7F70F5CB8E1 -:108F8C0063FBE702B387270318480A20BA97984770 -:108F9C00D623B2238E23EFF05FF041F10824B165A4 -:108FAC00938505B8EF905F955945F2406244D244E1 -:108FBC004249056182807C2895B7011122CC26CAD2 -:108FCC0006CEDD472A84AE846394F5060A21EFA011 -:108FDC003F94522C36285A286D162A964206418206 -:108FEC00B307D640C20752ACC18363FAE7069305B8 -:108FFC00C5FF3308F7406359B802BA96918EC20682 -:10900C00184C0E280A20C1823E97EFF01FE90DE1A3 -:10901C000824B165938505B8EF901F8E5945F24031 -:10902C006244D244056182806D1593160501C9BF57 -:10903C0081470A206C005C86EFA05FE50545E38064 -:10904C00A4FE0824B165938505B8EF90FF8AE54727 -:10905C003CA0B74704009387E7E85CC0C1B78547DD -:10906C00C9BF397126DAAE842C0022DC4AD84ED620 -:10907C0006DE2A89B289192B2A8439E54A85EFA0A4 -:10908C003F89D6206D1563C5A60093160501C182D4 -:10909C009844B2208E204A85EFF03FE02A840DE5FB -:1090AC003146A6850808230601009770FB1FE78050 -:1090BC00C029BE202245B74604004E87938666E23F -:1090CC005D466C00FC86A5252285F2506254D25474 -:1090DC004259B259216182806FF0BFF86FF07FF86E -:1090EC00797126D206D622D44AD04ECE52CC56CA4C -:1090FC005AC88944D9C951CA2E842A89BA8A368B4E -:10910C00328AEFA0FF8093054400814771159A21A4 -:10911C00635EA708850793F7F70FB105E319FAFE0D -:10912C008A854A85A521AA842DE131453305AA02F9 -:10913C00916593851570CD449770FB1FE780C0EF48 -:10914C00AA8921C531463306CA02A2859770FB1F36 -:10915C00E780A01F1844562032200E204A85EFF0DD -:10916C00DFD3AA8415ED0245B74604008547568720 -:10917C00938666E25D464C005C824EC42306410138 -:10918C00A3060100230761015D23B25022542685FA -:10919C0002599254F249624AD24A424B456182804A -:1091AC004E859770FB1FE78060F4C5B7ED44F1BFA7 -:1091BC0079714ECE37960600AE89C16526D201472D -:1091CC00AA84894613060657FD15054522D406D6F2 -:1091DC004AD0EF10007A054429C92A8913073002B6 -:1091EC0081461146F5452685EFF0BFAE2AC655449B -:1091FC000DCD8357A900CE8601467C8491477C8592 -:10920C0085471CA1B2472C002685A3800700324756 -:10921C00FD573CA332473CB3EF10206B2A8411C599 -:10922C0032459770FB1FE78060EC2285B2502254C8 -:10923C0092540259F24945618280411106C6EFF001 -:10924C00AFE019C5B24041011773FB1F670003EA79 -:10925C00B24041018280011106CE2AC6EFA02FD266 -:10926C003245B727002023AA073AB727002023ACA2 -:10927C00073A9145B7270020A38AA76CEF30A01CB2 -:10928C00F24005616F20F00393970501C18763D409 -:10929C000712B727002003C5576D797122D44AD025 -:1092AC0006D626D22E899770FB1FE78000F52A84FC -:1092BC0049C918219307000A6312F70885474C081F -:1092CC00DC85EFA06FD8AA8405ED83476101714757 -:1092DC006372F708138717FE1377F70F93060002D4 -:1092EC0063F1E608858BCDC3B727002083A7473BE6 -:1092FC00994499C72A201306B1004C088297AA8476 -:10930C009C8599C7084409C59770FB1FE78000DE50 -:10931C0095E05247B7070001938707F07D8FB70799 -:10932C00120093870710630BF70003476101ED47A9 -:10933C006316F7002A208545EF3040082285EF9010 -:10934C00EFA1B250225421653345A9009254025921 -:10935C00456182803707301405073357F700058BBA -:10936C0051D3372700200327873B59DB0347510193 -:10937C0041FB5C8699472308F1002A206C002317D7 -:10938C000100EFA04FEFADBFB727002083A7873BAD -:10939C008DC32A201306B1004C08829735D1AA84BC -:1093AC0083475101B1FF83476101230891005C861B -:1093BC00E9B79944F5B701458280397122DC26DA88 -:1093CC0006DE4AD84ED652D456D25AD0A5472A8455 -:1093DC00B2846398F50E834745021A22835A2600FD -:1093EC0085072302F5029307F7FFB387FA0254426D -:1093FC00C207C183B69703C917009C2354252209C1 -:10940C003369F90085476390F6023307570323103D -:10941C0006008149014A130B3501931A070193DAAF -:10942C000A0163EA5905C167FD176303F90A1E288F -:10943C006370F90A050942095424135909012317C9 -:10944C00240105470A209305E400639CE6007C8513 -:10945C00930720307C8693078002231421015C87BC -:10946C002C00EFA0DF840824B165938505B8EF903C -:10947C00AFC85945B9A8B620DC402C28ED16138688 -:10948C005900C206C1823E965A85EFA04FB405C55D -:10949C00630B3A01C840B220B30535015295977061 -:1094AC00FB1FE78080EABE203E9A9E20420A135A98 -:1094BC000A0185079EA0BE20BE99C20993D9090155 -:1094CC008DB75822A9476310F7028347450281CF15 -:1094DC000145F2506254D2544259B259225A925A0E -:1094EC00025B216182803428130934013795060010 -:1094FC004A86894513058556EFA06FAD19C1054500 -:10950C00C9BF3428379506004A8689451305C556C8 -:10951C00EFA0EFAB6DF53428379506004A868945E8 -:10952C0013050556EFA0AFAA79F934283795060034 -:10953C004A8689451305C554EFA06FA969F1D82057 -:10954C00BD47E3EEE7FAA56793874712B3D7E70069 -:10955C00858BD5D78347440285072302F40203D9B0 -:10956C002400D1B5011106CE2EC69770FB1FE780E3 -:10957C00001811C93C25B245138717006395E50007 -:10958C0093F707F83CA5F24005618280011106CEE5 -:10959C002EC69770FB1FE78080151DC1B24591C187 -:1095AC0088C11C251307E00F5D456388E70013078E -:1095BC00F00F01456383E7005945F2400561828055 -:1095CC000945E5BF411122C42A84210506C626C2DD -:1095DC004AC0EFF0CFBC3C20A51793F7D70F89EB0F -:1095EC0058248547631EF7041C4881443149A1E384 -:1095FC00FD57230104001CB4230204021305C4000C -:10960C002244B2409244024961468145410117739C -:10961C00FB1F6700C3D6B38724033E95084509C5D5 -:10962C009770FB1FE78080AC850493F4F40F5C28E3 -:10963C000848E3E2F4FE9770FB1FE78020AB4DBFB8 -:10964C00084C75F975B7411122C4416406C626C28F -:10965C009307E4FF6301F502AA849DE19770FB1F59 -:10966C00E780E00809E91305F4FF9770FB1FE7801A -:10967C00000811C106A1B2402244924441018280EB -:10968C0085476392F5049770FB1FE78040062A8498 -:10969C007DD1FD571EA11C241307F00F6382E70236 -:1096AC001307E00F6389E700342008340147514663 -:1096BC00A685EFF04FA12285EFF0DFF0FD571CA43B -:1096CC00230504004DBF8947E397F5FA8545EF4024 -:1096DC00003B55F126859770FB1FE78040012A84DB -:1096EC005DF951BF21C518259307F00F6300F704EE -:1096FC00011122CC06CE2A8434210E2108350147D3 -:10970C005D46EFF04F9C3820E1476318F7000A20C4 -:10971C006C0023060100EFA06FF7F9571CA42285FB -:10972C00EFF05FEAF2406244056182808280930729 -:10973C00F00F6306F706011122CC26CA2A844EC606 -:10974C00AE84B689AA8593068500379504004AC86D -:10975C0052C43A89328A1305056F794606CEEFF06A -:10976C004FA3A3042401230144012322340185C007 -:10977C001305C4006244F2404249B249224AA6850C -:10978C00D244614605611773FB1F670003BCF240AE -:10979C006244D2444249B249224A056182808280A5 -:1097AC00B72700202380A73C828095476394F50659 -:1097BC0083474502854685072302F5021E2258423F -:1097CC003022FD17C207C1836312D6048A07BA97E9 -:1097DC0098339C232207D98F7A2563F5E70441112E -:1097EC0006C622C485075EA52A849305C5000A21F6 -:1097FC00EFA08FC20824B165938505B8EF90CF8F89 -:10980C00B2402244D9473E8541018280C946B38784 -:10981C00D70275BF5422294785476396E600034754 -:10982C00450211C381473E8582809D47639BF504A9 -:10983C0083474502762585072302F5021E225842EE -:10984C00FD178A073E971C331823A207D98F0147AF -:10985C0063F2D704411106C622C485072A845EA58B -:10986C009305C5000A21EFF06FD50824B1659385E7 -:10987C0005B8EF906F88B240224459473A854101B0 -:10988C0082805422A94705476396F6000347450298 -:10989C00133717003A858280411122C406C626C2AE -:1098AC00B5472A846395F50483474502B28485073E -:1098BC002302F5020A21EFA0AF859E201307F5FFC6 -:1098CC00014563C1E7027A240A209305C400BA97C4 -:1098DC007EA4EFA06FC20824B165938505B8EF9004 -:1098EC00AF815945B24022449244410182805822B2 -:1098FC009D470545E318F7FE034544021335150053 -:10990C00D5B7C5476396F5061E223A22FD17B387D5 -:10991C00E7020347450205072302E5025842C20746 -:10992C00C1833E973C333823A207D98F41677D17FB -:10993C006395E70081473E858280138717005AA5FF -:10994C007A25E3F9E7FE411122C49305C5002A8468 -:10995C000A2106C6EFA04FC30824B165938505B84C -:10996C00EF809FF9B2402244D9473E854101828065 -:10997C00542229478547E390E6FC034745025DFBEB -:10998C005DBF011122CC26CA4AC852C406CE4EC6AF -:10999C00BC2115472A8AAE8432843689639AE7043F -:1099AC003686A2852685EFF05FE0AA8955E58547C6 -:1099BC006314F40A03474900A9476300F70288348B -:1099CC004A8785460146D285EFE0FFEF19E58545CC -:1099DC004A85EFE07FE713341500B4208834014743 -:1099EC006946D285EFE03FEE2685EFF0BFBD49A07A -:1099FC001D476398E7003686A2852685EFF0FFE2C7 -:109A0C006DB725476398E7003686A2852685EFF06B -:109A1C00DF9A61BF35476398E7003686A2852685B5 -:109A2C00EFF09FE759B745476398E7003686A28564 -:109A3C002685EFF01FED95BF5D47639EE700D825A7 -:109A4C0085473686A2852685631DF702EFF0AFCBDE -:109A5C008547631AF5048549A5476317F4028357B4 -:109A6C0009009DE30544E38A09F6D947E39EF9F61C -:109A7C002285F2406244D2444249B249224A0561ED -:109A8C008280EFF08FD3E9B788344A87A2860146EB -:109A9C00D285EFE05FE379F5A2854A85EFE0DFDA66 -:109AAC0013341500C9B70544E1B7397122DC06DE61 -:109ABC0026DA4AD84ED652D456D29E211944B9E74A -:109ACC0083C925002A89328A938759FE93F7D70FC9 -:109ADC00AE84DDE3B727002083C6073C1307F00FE5 -:109AEC00938A073C19446383E602F5476395F904AE -:109AFC009770FB1FE780A0BFAA891DCD30250DCE26 -:109B0C0093178601E18763DD070001442285F2503B -:109B1C006254D2544259B259225A925A21618280CB -:109B2C00F5454A85EFE05FE283C7A90093E707F8A4 -:109B3C002385F900D9BF8149D62090448C308820E8 -:109B4C003800EFA0AFB52A8471F1B42003C50A0028 -:109B5C0038000146CA85EFE01FD72A8445F9B24781 -:109B6C0099C323000A00BC207547E390E7FAE38E03 -:109B7C0009F82385F90059BF9770FB1FE78020B7C0 -:109B8C00AA8A41D58547639AF908CE2088443000CB -:109B9C00EF90FFD92A843DF903C72A00C54763FA21 -:109BAC00E708DD476308F70AB727002003C59A00CA -:109BBC0083C7576D6393A70A014403C72A008D47D7 -:109BCC006319F7043C8403D7CA0063F4E7002396B7 -:109BDC00FA0083D5CA004A85EFF00F8AB727002018 -:109BEC0083D707556D476376F70283D6CA005D4766 -:109BFC006371D7021307B00FBE856374F70093052A -:109C0C00B00F1166C20513060629C1814A85EF7093 -:109C1C0030635685EFF01F9BD5BD3C211144E39773 -:109C2C0037EF5C41E38407EECE2088443000829706 -:109C3C0095B7B72702009387072AB3D7E700858B20 -:109C4C00A5D7B0203400D6854A85EFF09FD32300EA -:109C5C00AA006DBD83A70A01E5B7B4203800014600 -:109C6C00CA85EFE05FC62A8429F9AC202800EFE012 -:109C7C00BFBD39D123000A0089B7011122CC37248A -:109C8C00002006CE26CA4AC84EC652C49309446D5B -:109C9C0003C589009307800291653305F50293850E -:109CAC006570372900209304C93B9760FB1FE78040 -:109CBC00A03803C689009307800281453306F6025B -:109CCC0088C09760FB1FE780806B9C404D459DCF03 -:109CDC009304446D1309C93B0144130A8002FD59D6 -:109CEC009C24636DF40237A50400130565ABEFE00B -:109CFC007FF73795040013050557EF90BFB33795E1 -:109D0C00040013052565EF30904E0145F240624486 -:109D1C00D2444249B249224A05618280B3074403C6 -:109D2C00032509006146814505041374F40F3E9523 -:109D3C0023103501230105002314350123050500EB -:109D4C002302050231059760FB1FE780406349BF82 -:109D5C0001458280B727002083C6D76D814763E514 -:109D6C00D70001473A8582802E87910503D6C5FF1F -:109D7C00E30AA6FE8507E5B70DC93C21054789070F -:109D8C0093F7F70F6373F702411122C406C62A84B6 -:109D9C000E2128310147F9465D46EFE0DFB2F95755 -:109DAC003EA0B2402244410182808280B72700202D -:109DBC0003C7D76DFD56814763E3E700828016A188 -:109DCC002301050085071105C5BF01458280372693 -:109DDC0000201306B634930700021CA2372700207C -:109DEC00FD572305F73437270020A30EF73237270A -:109DFC000020230EF7328545B72700202394B73473 -:109E0C00B72700202391073CB727002023A6073C47 -:109E1C00B727002023AE073CB727002023A8073C18 -:109E2C00B7260020B7970600938606349387C7554C -:109E3C00DCC2B72700202382073CB727002093877A -:109E4C00872D094798A298A398AB2380E702238813 -:109E5C00E7023797060013070755D4C7D8DBB79628 -:109E6C0006000D47238CE7029386C6543727002043 -:109E7C00D4CB0327873C37950600B796060013050D -:109E8C00855693860657C8C38CA7239507008CAFBD -:109E9C00239D0700D0CFD4D3238407022395070238 -:109EAC0023A60702239D0702D8DFB727002037A778 -:109EBC000400938787311307C7F723A00700D8C383 -:109ECC0023A407008280411106C6EFF0BFE809C544 -:109EDC002821B240410182800145E5BF411122C4D5 -:109EEC0026C24AC006C6AA842E893284EFF09FE6A9 -:109EFC0009E94165CA857D15EFF0DFE5C54701C568 -:109F0C0006A120A18147B2402244924402493E85D9 -:109F1C004101828039E38948354763911605011167 -:109F2C0006CE22CC26CA1832102293C7F7FF22077E -:109F3C00598EF18F32C68DE7C4452A84A685EFF081 -:109F4C009FF832460147630FA60022856244F24017 -:109F5C00A685D24405616FF07FF82D473A85828043 -:109F6C0013070008F2406244D2443A8505618280AE -:109F7C0083C8050009486395080303A84500834777 -:109F8C00180003480800A207B3E70701C2070D68D1 -:109F9C00C187130828906395070189476FF09FF7D5 -:109FAC0005458280011122CC372400201304D433C0 -:109FBC00182006CE26CA4AC84EC69307F00F630D6A -:109FCC00F702AA892945B2842E89EF80EFDB0DC5F3 -:109FDC009307100B1EA12302050023113501231337 -:109FEC00250106A5AA8508206244F240D2444249C4 -:109FFC00B24905616F806FDDF2406244D244424940 -:10A00C00B249056182804111B727002026C2AE8477 -:10A01C0083A5873C22C406C62A84EFF0DFEA0989AF -:10A02C0009C922852244B240A685924441016FF0B1 -:10A03C002F98B2402244924405454101828041113F -:10A04C0022C426C24AC006C6AA84130445001309BA -:10A05C00850B1E209DC3084409C59760FB1FE78034 -:10A06C00E0082285314681459760FB1FE78020314F -:10A07C003104231A04FEE31E24FDB2402244FD5792 -:10A08C009EA00249924441018280B727002003C65A -:10A09C00D76DB727002003A7473D81476315F6000E -:10A0AC00814636858280BA861307870B835587F4E1 -:10A0BC00E389A5FE850793F7F70FCDB7B7270020E7 -:10A0CC0083A7C73D81CBDA236314A700884782801E -:10A0DC009C43CDBF01458280411106C6EFF01FFEA7 -:10A0EC0009C50845B240410182800145E5BF011117 -:10A0FC0026CA9384450022CC4EC606CE4AC852C40A -:10A10C0056C25AC0268781490144814681473D4544 -:10A11C00122345CABDEE42233E23B286A297C20744 -:10A12C00C18385093107E395A9FE35C42E89916554 -:10A13C009385457022859760FB1FE780E0EF2A8BA3 -:10A14C0039C9814A014A8C4495C1D22033054B014F -:10A15C009760FB1FE780601FDE2088443E9A420A0E -:10A16C00135A0A019760FB1FE78040F863890A00C5 -:10A17C003146814526859760FB1FE7804020850A84 -:10A18C00B104E3E23AFD2326690123148900054555 -:10A19C0021A0630DD6000145F2406244D2444249ED -:10A1AC00B249224A924A024B056182803223E3145F -:10A1BC00F6FE52233294B2974204C2074180C18307 -:10A1CC008DB70545E37A35FD8DB7B727002083A7FA -:10A1DC00073D99E30145828098473A276315A7000C -:10A1EC001385470082809C43EDB7411106C6EFF002 -:10A1FC00DFFD09C50A21B240410182800145E5BF5E -:10A20C00411106C6EFF07FFC09C52821B24041017F -:10A21C0082804145E5BF411122C42A842E8506C6A1 -:10A22C00EFF01FFEAA8505462285EF304065954765 -:10A23C006305F500BD476313F5002145B240224488 -:10A24C00410182804111B727002022C406C603A415 -:10A25C00073D81469387073D21C01844322718409B -:10A26C006317A60285CA98C22E8581C9214693051B -:10A27C0044009760FB1FE780400D22859760FB1F11 -:10A28C00E780C0E60145B240224441018280A286AB -:10A29C003A84D9B798C3C9BF0545F5B7372700200D -:10A2AC008327C73D01461307C73DA9C703D84700FD -:10A2BC009443631CA802011106CE22CC26CA0DCAF7 -:10A2CC0014C2AA843E852E849760FB1FE78000E2AF -:10A2DC002C002685EFF01FF701E519C0B2471CC012 -:10A2EC00F2406244D244056182803E86B68775BFD7 -:10A2FC0014C3C1BF05458280411122C42A840905BB -:10A30C0006C6EFE0CFE9FD573CB0B2402244410114 -:10A31C008280411122C4416406C626C29307E4FF21 -:10A32C006301F502AA849DE19760FB1FE780403F23 -:10A33C0009E91305F4FF9760FB1FE780603E11C12C -:10A34C0006A1B24022449244410182808547639227 -:10A35C00F5049760FB1FE780A03C2A847DD1FD5754 -:10A36C001EA13C201307F00F6382E7021307E00FD6 -:10A37C006389E70028300147F9465146A685EFE08E -:10A38C008FD42285EFF05FF7FD573CA02302040029 -:10A39C004DBF8947E397F5FA8545EF30406E55F18F -:10A3AC0026859760FB1FE780A0372A845DF951BF93 -:10A3BC001D71A6CACEC686CEA2CCCAC8D2C4D6C27D -:10A3CC00DAC05EDEAE84AC21F947AA896397F50446 -:10A3DC009760FB1FE780C0342A8411ED014422856D -:10A3EC00F6406644D6444649B649264A964A064B38 -:10A3FC00F25B256182803C210547890793F7F70FB3 -:10A40C00E37EF7FC28310147F9460146CE85EFE0A3 -:10A41C008FCB2285EFF05FEED1B703AB0400B7070B -:10A42C000001938707F037071200B377FB0013077F -:10A43C000710B28A0149638BE7022EC69760FB1F97 -:10A44C00E780002E2A89B24515C1502105C2931709 -:10A45C008601E187E3C407F84E85EFE0EFCE834732 -:10A46C00490093E707F82302F9008DBF372A002033 -:10A47C000347AA349307F00F130AAA341944E300D4 -:10A48C00F7F6E147E3EDB7F493D71500FD171397F3 -:10A49C003700B7970600938707EBBA9703A8070016 -:10A4AC00E30F08F283AB4700E38B0BF2420B135B19 -:10A4BC000B0163050B00C947E393F5F2D6209044DA -:10A4CC008C308820380802982A8411F92C084E8583 -:10A4DC00829B2A8431C19C30E39307F0BC20230A71 -:10A4EC00A10039472308F1006396E70262471C3349 -:10A4FC001823A207D98F0C084E85FC81EF90AFD79B -:10A50C00E30E05EC14080546D9454E85EFE00FE245 -:10A51C002A84F1B5BC84C5B7B4209147E380F6EC2E -:10A52C0003450A0038080146CE85EFE0CFB92A84EE -:10A53C00E31705EAAC202808EFE00FB119C123801E -:10A54C000A009840B7070001938707F07D8FB70783 -:10A55C00120093870710E303F7E8E30109E8BC2036 -:10A56C002302F900ADBD011106CE2EC69760FB1F6C -:10A57C00E780001B11C95C21B24513871700639556 -:10A58C00E50093F707F85CA1F24005618280397110 -:10A59C0052D42E8A4ED69305E101AA89528522DC2B -:10A5AC004AD856D206DE26DA328936C63AC4BE8A74 -:10A5BC009760FB1FE7808019054435C1AA84A887E2 -:10A5CC003944EFF0BFAF21CD0328450063090804DF -:10A5DC002247B246D6874A86A6854E8502982A849B -:10A5EC001DED9307E00F638CFA02982089476318DE -:10A5FC00F702D8401C331823A207D98FC2070D6766 -:10A60C00C18713072790639CE70083471900034613 -:10A61C000900D285A2075D8E4E85EFF0BF9822858A -:10A62C00F2506254D2544259B259225A925A216170 -:10A63C008280797122D422214ECEAA89228556CAD3 -:10A64C0006D626D24AD052CC5AC85EC662C4AE8A4E -:10A65C00EFF0BFA301E92285EF90BFCD594431E55E -:10A66C000144A1A003C789008547AA84014463174C -:10A67C00F702AA8513858900EFF07FA729C9FA2074 -:10A68C009624D044CE2003D52900E147EFF03FF0CB -:10A69C00D9472A846318F50223A604002685EFF017 -:10A6AC001F9A41C0D947E30DF4FA2285B2502254C7 -:10A6BC0092540259F249624AD24A424BB24B224C52 -:10A6CC004561828061DDDE202390FA00C1BF1389D1 -:10A6DC004400014AB94B594C3D4B83550900DDDD13 -:10A6EC00E14763067A010357C90011C3D9470357E1 -:10A6FC002900835649000326890003D52900EFF071 -:10A70C001FE92A846319850123240900050A3109EC -:10A71C00E3156AFD61B77DD9835709002390FA00D0 -:10A72C00F5B703D529000DBF011170879307E00F12 -:10A73C001306E1000147894606CEEFF05FE5F240D3 -:10A74C0005618280797122D42A840A2526D2AE84AE -:10A75C009305210106D64AD09760FB1FE78000FFC6 -:10A76C0079C51C252AC693F707029DC7A881EFF06F -:10A77C00BF96AA87B24511E91E2439459EA0B25056 -:10A78C00225492540259456182802A20494682976C -:10A79C0001C51E249EA0E5B7035924004A85EFF09D -:10A7AC00DF8E01ED41657D15EFF03F8E09E51E242E -:10A7BC0025459EA0E9B723102501130745008147C5 -:10A7CC00BD46122339EE3147B387E70213098400E3 -:10A7DC003146CA8591073E959760FB1FE780E0B62E -:10A7EC003146CA8548089760FB1FE78000B65224A3 -:10A7FC002A2041478146DD45EFE0AFCD2ACE09E561 -:10A80C001E2445459EA0A5BF0C4852249760FB1FF3 -:10A81C00E780A0B32A204C08EF907FAD2DD159458D -:10A82C00B9BF85073107E39ED7F825459DB7054588 -:10A83C008DB7797122D42A840A2526D2AE84930549 -:10A84C00E1014AD006D632899760FB1FE78000F001 -:10A85C002DC91C2593F7070295EF1838930720058F -:10A86C0011E35C20362450440E242A200147EFF0DB -:10A87C001FD2AA8729E11C3891E72A20EF903FA329 -:10A88C00D94711E18147B2502254925402593E8566 -:10A89C00456182802AC6A887EFF01F84AA8705C568 -:10A8AC00B2452A2049468297AA8745D91A249AA0EC -:10A8BC00183869FBC9BF5947E31AE5FE23000900A4 -:10A8CC00D1B78547E5B7B947D5B7397122DC4AD836 -:10A8DC004ED652D406DE26DAAA892E8A32C636899C -:10A8EC009760FB1FE780C0E309440DC53C211307AB -:10A8FC00E00FAA845D44638FE7001307F00F5944FF -:10A90C00639AE700324605E2D2854E85EF909FA60A -:10A91C002A841DCD2285F2506254D2544259B25928 -:10A92C00225A2161828003550A009305E101231FFD -:10A93C0001009760FB1FE78060E1A887EFF05F8C58 -:10A94C00AA8505464E85EF2090732A8455DDD9B72C -:10A95C009307F00FE300F9FC37A50400938624005D -:10A96C007946A685130545D8EFE0AF82A381240173 -:10A97C0055B73971B727002026DA83A4073D52D486 -:10A98C005AD05ECE62CC06DE22DC4AD84ED656D2E7 -:10A99C0066CA2A8BAE8B328C368A99E08149A9A083 -:10A9AC00804483DC44000149835AA4006314990158 -:10A9BC008440E5B73E24A28963F867010509420982 -:10A9CC00135909014104DDB7E3EAFBFE630B0A00EE -:10A9DC000C204840D28662863AC6EF805FDF324751 -:10A9EC0071DD19C323105701F25062544E85D254B5 -:10A9FC004259B259225A925A025BF24B624CD24CD7 -:10AA0C00216182809A21B621854763E5E60439C32A -:10AA1C004111D42126C2379506009384550022C4D7 -:10AA2C0026862E8413058556894506C6EF803FDAA7 -:10AA3C00C14719C954202E200A2001472686EFF061 -:10AA4C005FF3814711E1A947B240224492443E850D -:10AA5C00410182803E8582802E860A22AE21854766 -:10AA6C0063E1A50219CD542241110147150606C612 -:10AA7C00EFF03FF0814711E1A947B2403E8541011B -:10AA8C0082803E8582802E860A22AE21854763E134 -:10AA9C00A50219CD542241110147150606C6EFF047 -:10AAAC005FED814711E1A947B2403E8541018280AB -:10AABC003E85828039714ED6BE2183D9050006DED3 -:10AACC0022DC26DA4AD852D456D25AD05ECE62CC88 -:10AADC0066CA6AC863EA3715854763880912416BF1 -:10AAEC00AE8A2A8A2314010002C6014401497D1B47 -:10AAFC00894B054CC94C054D83D52A00014781462D -:10AB0C0001464E8523130100EFF0BFE6AA84630BC8 -:10AB1C00050E09EC13072002930661005A86954531 -:10AB2C005285EFE00F9B2A846302051038849C2029 -:10AB3C0041CB18856305A70741476385E7022C00C5 -:10AB4C005285EF90CFC709CD34001546D9455285B3 -:10AB5C00EFD0DFFD11C532459750FB1FE780005940 -:10AB6C00814765A0BE244146130524001CA0BE24C9 -:10AB7C00A1831CB0CC409750FB1FE780007D49049B -:10AB8C003C848507C207C1837C8463FD2707BE24F0 -:10AB9C00638A67078509C20993D90901B1BFE3909C -:10ABAC0077FBBE240946130524001CA0BE24A183F8 -:10ABBC001CB0CC409750FB1FE78020791104C9B71B -:10ABCC0022C603596100B82413052400638F770152 -:10ABDC00335999032305710118A0BE244146A18362 -:10ABEC001CB0CC401379F90F79B72305810118A05B -:10ABFC00BE24135929001379F90FA1831CB00946FF -:10AC0C00CC404DBF3C8485FFA947F2506254D254CE -:10AC1C004259B259225A925A025BF24B624CD24CB4 -:10AC2C00424D3E85216182808547C5B7C547F1BF3E -:10AC3C00B727002003C7A73E854763F4E706011139 -:10AC4C0022CC26CA4AC806CE2A843289AE849760A2 -:10AC5C00FB1FE780E0AC19C538219307E00F5D4579 -:10AC6C006308F700631C0900A6852285EF902FED81 -:10AC7C00F2406244D2444249056182808A209305A5 -:10AC8C00E100231701009760FB1FE78020AC2887A9 -:10AC9C00EFF00FD7AA8505462285EF20503E69D5E7 -:10ACAC00C1BF5945828013F7050201C7B2856FF009 -:10ACBC008FD6411126C24AC006C622C413F985009C -:10ACCC00AA8463170900139785016187635B0702E8 -:10ACDC0032853684EFF0CFD2AA850546631309007E -:10ACEC0001462685EF20B03901E90145B2402244E6 -:10ACFC0092440249410182801C34EDDB1C24F5F79F -:10AD0C00F5B793F72500F5F30D45CDB77971AE8600 -:10AD1C0022D42A848A229305E10106D636C697608E -:10AD2C00FB1FE780A0A219C90C25B246B08722856B -:10AD3C00EFF07FF7B2502254456182800545DDBFAC -:10AD4C0013F7050201C7B2856FF0EFCC411122C495 -:10AD5C0026C206C693F485002A8491E413978501D4 -:10AD6C006187635007023285EFF08FC9AA850546CB -:10AD7C0091E0014622852244B240924441016F2069 -:10AD8C00103093F72500014591E30D45B240224464 -:10AD9C009244410182807971AE8622D42A848A221F -:10ADAC009305E10136C606D69760FB1FE780009A33 -:10ADBC00B24611C90C25B0872285EFF07FF8B2504E -:10ADCC002254456182800545DDBF797126D2AA8463 -:10ADDC002A25C16722D44AD04ECE06D623170100AD -:10ADEC00FD173284B6890149630CF50005059420E2 -:10ADFC00D04042051307E1004181EFF09FB72A894B -:10AE0C009420D04037950600894513058556EF8070 -:10AE1C001F9C15C5A2242285EFF02FBD09C57D14FA -:10AE2C002A94420441806384090023908900B25023 -:10AE3C0022544A8592540259F249456182809420E9 -:10AE4C00D0403795060089451305C556EF803F98CD -:10AE5C0071F19420D0403795060089451305C554EF -:10AE6C00EF80FF9611C9E30809FA3C87E39587FA4E -:10AE7C000354A9007D1475B7A22475B7397122DC6F -:10AE8C0026DA4AD84ED652D456D25AD062CC06DEE6 -:10AE9C005ECEBE899C252A8AAE84C18B328C3684C8 -:10AEAC003A89C28A468B9DE783CB04008947638B22 -:10AEBC00FB046285EFF08FA01DC183280500638021 -:10AECC0008025A88D6874E87CA862286A68552855E -:10AEDC00829839A03285EFF02FA0AA8711ED394561 -:10AEEC00F2506254D2544259B259225A925A025BCD -:10AEFC00F24B624C216182802946A685528582974D -:10AF0C0045D5F9BFD8401C331823A207D98FC207E7 -:10AF1C000D67C187930607906383D71E63CCF60633 -:10AF2C0093062780638ED70A63C0F6021307078047 -:10AF3C00E3C1E7F82D45E39509FADC449023CC43B3 -:10AF4C002310C9002285B9A213073780E393E7F6D3 -:10AF5C002D45E39709F885472310F900DC4481451A -:10AF6C009C231CA0AA240505420541819750FB1F78 -:10AF7C00E780C07D835709006310051091072310EB -:10AF8C00F90011468145130514009750FB1FE7800B -:10AF9C00003FF1A8930627906386D71463C1D7109E -:10AFAC0093063790638DD71413074790E393E7F01C -:10AFBC002D45E39709F2DC441D472310E900982343 -:10AFCC0018A0983318B0BA2338A0BA23218338B00C -:10AFDC00D82358A0FA2358B0FE23A1837CA041A803 -:10AFEC002D45E39F09EEDC446C0083C917009823C0 -:10AFFC00A209B3E9E90011472310E9009C234E850F -:10B00C001CA0DC449C331CB09750FB1FE7800074E1 -:10B01C00AA8425C13086C1659306E100FD158329FC -:10B02C00C500EFF09FDA09ED9420D040379506006B -:10B03C0089451305C556EF808FF919E1FD577C87BB -:10B04C0003C7090089476310F70283A54900094625 -:10B05C00130544009750FB1FE780202F83570900EE -:10B06C0089072310F9003C873CA0A1833CB0014523 -:10B07C0085BD23173101C5BF18218907BA97231045 -:10B08C00F9003E251CB03E25A1833CA010214C416B -:10B09C00130534009750FB1FE780202BC9BFC84411 -:10B0AC009750FB1FE780C02E93170501C1832A8799 -:10B0BC001D45E3E737E36399F90023100900CC44FD -:10B0CC0003560900CE95BDBD4207B3863A014183B4 -:10B0DC0063C7E600B38737412310F900CDB72310BF -:10B0EC005901F1BF2D45E39D09DECC445285EFE0BB -:10B0FC009FDD2310790108A0218108B08DBF2D455B -:10B10C00E39009DEDC44231079019C231CA0DC4471 -:10B11C009C331CB0A9BF1D71CAC82A892A21A2CC94 -:10B12C00CEC6D2C4D6C2DAC05EDE62DC66DA6ED6B9 -:10B13C0086CEA6CA6AD8AE8AEF808FFD130CF5FFB7 -:10B14C0093170C01B72B0020C1832A8A81491384E1 -:10B15C004B483EC6372B0020B72C0020C16D8357BF -:10B16C00C90063F5F9001E2063CC87010355290043 -:10B17C0093854B48EF908F882A8D15CD594D25A876 -:10B18C0083278900139719009305E101BA9784333B -:10B19C009C23A204DD8C26859750FB1FE780005B67 -:10B1AC00AA8515E923909A004840054D09C597508A -:10B1BC00FB1FE780A0F3F64066446A85D6444649F7 -:10B1CC00B649264A964A064BF25B625CD25C425DFB -:10B1DC00B25D2561828032488348490083A6CC3C0D -:10B1EC00B08703552900814713072B3CEFF01FC98B -:10B1FC002A8D1388CC3C09C523909A0048407DB712 -:10B20C005C4085E703552900514781461386FDFFB5 -:10B21C00BD45EFD01FACB727002048C01388C73CF2 -:10B22C0009E523909A00454D79B71E2003572B3C16 -:10B23C0093042B3C3E976346470113C7F7FF529785 -:10B24C009AA048409220832508003E958509975086 -:10B25C00FB1FE780800F1E209A20C20993D9090199 -:10B26C00BA971EA0EDBD397122DC2A842A2106DE94 -:10B27C0026DA4AD84ED652D45AD05ECE62CC66CAA2 -:10B28C002E8B56D26AC8EF80AFE82A8A54242E241B -:10B29C000A2478001306D400130CBAFF651AEFF0D9 -:10B2AC004FED420A37290020AA898144135A0A011A -:10B2BC00B72B0020B72C00201309494863820904DE -:10B2CC0063D08405938ACC3C8348440083A60A004F -:10B2DC0030862A205288814713872B3CCE85138DCC -:10B2EC002B3CEFF0BFB91DC1814A30862E244E8510 -:10B2FC009306E100EFF07FADAA8963990A065DFD24 -:10B30C00F1E41E2429452310FB0035A883570D00BA -:10B31C001228E31BF6FC83A50A0048489750FB1F34 -:10B32C00E780400B71D18327490095EF2A204166B5 -:10B33C00454781467D169D45EFD0BF991DE11E24E2 -:10B34C0045452310FB00F2506254D2544259B25975 -:10B35C00225A925A025BF24B624CD24C424D216102 -:10B36C0082802322A90083DAA90041B783274900F0 -:10B37C00A6972380570193871400139707018327FF -:10B38C004900418393DA8A00BA97238057011387C7 -:10B39C00240083264900938734004207910441839B -:10B3AC00C207C204C183C180369711C9348714A364 -:10B3BC0003274900BA973887218398A301B7FD5614 -:10B3CC0014A303274900BA9794A31DBF2A20B725BD -:10B3DC00002089802392954893854548EF80BFC90A -:10B3EC003DD159458DB7411122C406C693F70501CD -:10B3FC002A84328585C3EFE0BFE0AA850546228505 -:10B40C00EF20E04795476305F500BD47631DF50246 -:10B41C00214515A893F7450099CBEFE07FDE054653 -:10B42C00AA8522852244B24041016F20404593F702 -:10B43C00050489C7EFE0DFDC0146DDB713F5150025 -:10B44C00133515000605B240224441018280797102 -:10B45C004AD04ECE52CC06D622D426D22A8AAE89D7 -:10B46C00014983D749006364F900014581A083A792 -:10B47C000900131419009304140033879700182340 -:10B48C00A297882322079305E100598D9750FB1F43 -:10B49C00E780C02B05E583A7090005453E941820DD -:10B4AC0098A383A70900BE94982098B3B250225455 -:10B4BC0092540259F249624A456182800C253087C8 -:10B4CC005285EFF05FF201CD83A709003E9418205E -:10B4DC0098A383A70900BE94982098B3C1BF05090F -:10B4EC00420913590901B5BF011122CC2A848A21C2 -:10B4FC009305E10006CE9750FB1FE780202511C96C -:10B50C000C2530872285EFF01FEEF2406244056176 -:10B51C0082800545DDBF1D71CAC82A892A2186CEC5 -:10B52C00A2CCA6CAD2C4D6C2DAC05EDE62DC66DAAF -:10B53C002E8ACEC66AD86ED6EF808FBD2AC68346B9 -:10B54C00C9008355A9000355890078081306D90052 -:10B55C00EFF02FC2B247B7240020416B938AA7FFAC -:10B56C00C20AAA8B014493DA0A01372C0020B72CAB -:10B57C000020938444487D1B63820B18B08683C5DE -:10B58C008B0003552900EFF01FE6AA8D63130516F7 -:10B59C008348490083A6CC3CB086035529005688C5 -:10B5AC00814713072C3CDE85EFF05F8DAA8D930944 -:10B5BC002C3C138DCC3C631E051215CC03D7090013 -:10B5CC00BE2011076397E7003247A2976D1763C738 -:10B5DC00E706B725002093874548BA230355290071 -:10B5EC00938545483354E40282A3EF80FFC4AA8DAF -:10B5FC0015C1D94D05A003552900494781465A86E6 -:10B60C00C545EFD00FEDC8C015E583D7AB00C54DD0 -:10B61C002310FA00F64066446E85D6444649B64976 -:10B62C00264A964A064BF25B625CD25C425DB25D86 -:10B63C002561828083D709009107BEA0DC4003D727 -:10B64C00AB009306E101A29798A3930714001397FC -:10B65C000701DC4041835E85BA9703D7AB00218399 -:10B66C0098A3B0868355A900EFF02FF6130724009A -:10B67C00D44093073400420711044183C2074204AB -:10B68C00AA8BC1834180369715EDFD5614A3D84083 -:10B69C0083250D00BA9794A3C84003D609002295C0 -:10B6AC009750FB1FE78060CA83D709003E94420481 -:10B6BC00418005F0835789002310FA00E39C0DF4B8 -:10B6CC00A94D89BFB48783250D0014A3D840BA9720 -:10B6DC00B887218398A3C84003D6090022959750B8 -:10B6EC00FB1FE78080C683D709003E94420441804B -:10B6FC0061B583D7AB002310FA0065BF814D55BFF0 -:10B70C005D71A6C2CAC0AA84035985002A21A2C4AD -:10B71C004EDE52DC5AD85ED662D466D286C656DA73 -:10B72C006AD06ECE2E8BEF80AF9E930BD5FF71152A -:10B73C00131A0501B72900200144135A0A01372CAA -:10B74C000020B72C002093894948635B7413D424E0 -:10B75C00AE241307E1001386D4004A85EFF06FA1E5 -:10B76C002A8D630F05100359A5000C253087AA20DC -:10B77C00EFF07FC7631B051083C8440083A6CC3C45 -:10B78C003087AA205288814713072C3CEA85EFF0BA -:10B79C00EFEE930D2C3C1388CC3C65E905C883D7A0 -:10B7AC000D0003D7290089076308F706B725002089 -:10B7BC00138745483E23AA20938545483354F40209 -:10B7CC0002A3EF801F940DC559451DA0AA20416608 -:10B7DC004D4781467D16A545EFD0AFCFB72700204A -:10B7EC0023A2A9001388C73C1DE123102B0145455A -:10B7FC00B640264496440649F259625AD25A425BE4 -:10B80C00B25B225C925C025DF24D6161828083D7F7 -:10B81C000D0089072391F90083D70D00A29763D1FE -:10B82C00770783A749000357AD00930A2400A2971A -:10B83C0098A305049317040103A44900C183C20A09 -:10B84C003E948357AD008325080093DA0A01A18347 -:10B85C001CA003A5490003D60D0056959750FB1F5D -:10B86C00E780A0AE03D40D00C167FD1756944204C7 -:10B87C004180E30CF9EC0509420913590901F1B5B2 -:10B88C0029450DF423102B01A5B76DDC05B71E213E -:10B89C0099E309458280411126C2444122C406C65F -:10B8AC004AC09420D0402A84379506008945130558 -:10B8BC008556EF70DFF141C53C2025476145E51702 -:10B8CC0093F7F70F6368F70837290020035789347B -:10B8DC000545130989343DCF1E20BA974167634B48 -:10B8EC00F70691659385257031459740FB1FE780DE -:10B8FC00A074AA844D45B9CC1E208355090001467D -:10B90C000147B386E500C206C182636BF704AE97AC -:10B91C00C207C18319C22310F90023A004002146D9 -:10B92C00A285138544009750FB1FE78000A2B72720 -:10B93C0000209387073D98430DEF84C335A89420CE -:10B94C00D0403795060089451305C556EF703FE882 -:10B95C0025F50945B24022449244024941018280B6 -:10B96C0050401315470005072A9636A6054651BFC9 -:10B97C003E871C43F5FF04C30145E9BF011106CE08 -:10B98C0022CC26CA4AC809E98944F2406244268579 -:10B99C004249D244056182802AC62A84280036890D -:10B9AC006C845085EFF0BFEEAA8465F1E30F09FCBF -:10B9BC003E24F9DB91659385557031459740FB1F0B -:10B9CC00E780806705C53E2423200500232425013C -:10B9DC005EA1B72700209387C73D984301E788C332 -:10B9EC006DB73E871C43F5FF08C345B7CD4471BF07 -:10B9FC00B72700209387473C98230DE3054798A36E -:10BA0C00058909CDB726002037250020938686317D -:10BA1C00414691451305852D6FF05FF601458280F7 -:10BA2C00B7270020A38EA7328280C167FD1763154C -:10BA3C00F5002E856FE08FB7411106C6EFE08FB190 -:10BA4C0009C5FD571EA123010500B24041018280AA -:10BA5C0001114AC806CE22CC26CA85472A89639290 -:10BA6C00F5044A85EFE06FE231E9C16437960600D0 -:10BA7C009385F4FF1307E100894613060655054527 -:10BA8C00EFE03FEF2A84FD1405C44C444A85EFF0E7 -:10BA9C00DFF9308722858146A685EFF00FB32A8423 -:10BAAC00E5B789476396F5008545EF10507D55D96C -:10BABC00F2406244D244424905618280EFE02FD8C3 -:10BACC006DB7011126CAB72400209384446D22CC93 -:10BADC008834372400201304443DB727002037272F -:10BAEC00002006CE4AC84EC62320040023AC073CD7 -:10BAFC002324073C59C11389873D9307200C330538 -:10BB0C00F5029165938515709309873C19054205DB -:10BB1C0041819740FB1FE780205290349307200C03 -:10BB2C0081453306F60208C019069750FB1FE780C3 -:10BB3C0000851C40983481459386870B7D5563E8BE -:10BB4C00E5069306800BB306D7020146FD550507A3 -:10BB5C00B6972320F900BE868EA2ACB2ACA223828B -:10BB6C00060005069906E369E6FEF95696A3994682 -:10BB7C003307D702BA9723A0F90037A504001305A1 -:10BB8C00C53BEFD0CF8E37A5040013052557EF70BA -:10BB9C001FCB37A504001305E531EF105065F240BB -:10BBAC006244D2444249B2490145056182802394E2 -:10BBBC00A6F41386C6F423100600232406003106CF -:10BBCC00E31BD6FE85059386860B95BF411106C6F1 -:10BBDC0022C42A84EFC0AFF3EFE06F9FB727002099 -:10BBEC00238E8732B727002003A5873CEFE00F9CFC -:10BBFC00B7270020238587342244B24037C5040080 -:10BC0C001305C5A541016F10905E93970501C1877F -:10BC1C0063D10730B727002003C5C733797122D40D -:10BC2C005AC806D626D24AD04ECE52CC56CA2E8BE5 -:10BC3C009740FB1FE780605C2A8429C51821930775 -:10BC4C00000B631EF702B724002085479384C43C85 -:10BC5C00DC849C4023150100B9E3EF0080759165ED -:10BC6C00938535709740FB1FE780003D88C005E940 -:10BC7C009C8491C74C2013058400EFD00FDC2285E7 -:10BC8C00EF60DF8DB250225421653345AB009254E6 -:10BC9C000259F249624AD24A424B45618280372AA4 -:10BCAC0000206146814513054A489740FB1FE780F9 -:10BCBC00006D03494400894793044A48D289930A8A -:10BCCC004A48631AF904F5258AA02A2093054A48A4 -:10BCDC00EF804FAB3A209E20162401ED63E3F60073 -:10BCEC001EA40E243A85EFC03FF92285EFC01FCE6B -:10BCFC0041B763E3F6001EA41E24D9459386494838 -:10BD0C000D463A852390FA00EFC05FE28D4571DD58 -:10BD1C001385494865A899476319F9029305A10051 -:10BD2C002285EFF04FD4AA8469D1D947639EF40CD5 -:10BD3C0005092A201379F90FD945938649484A8673 -:10BD4C00EFC0DFDECA8555D1E1B7A1476318F90012 -:10BD5C009305A1002285EFF0BF9AF1B7A947631AAA -:10BD6C00F9060A246C009750FB1FE780209E2A8955 -:10BD7C00630905122A2041669306E10055477D169A -:10BD8C00AD45EFC01FF5C8C0AA8625CD8348440039 -:10BD9C000358E10030862A20814713074A48CA8598 -:10BDAC00EFF0CF8DAA84631F050C2A2093054A4817 -:10BDBC00EF80CFBA1DD92A2093064A482D46D94583 -:10BDCC00EFC0DFD61DD1AD4513054A48EFD0EFC605 -:10BDDC0029BFB147631BF90C0A246C009750FB1F59 -:10BDEC00E780C096AA8455CD2A2041669306E100CF -:10BDFC0059477D16B545EFC0DFED23A2AA00AA86F0 -:10BE0C0031E11E24C5447C851830D147E30FF7EC93 -:10BE1C005C202A20938549482380FA003C852382A4 -:10BE2C009A002391FA00EF701FC5E30005EC2A205D -:10BE3C00938649480546D945EFC05FCFE30705EA2D -:10BE4C008545F9B5834844000358E1003E2430860B -:10BE5C002A20A68513074A48EFF04F82AA841DE1D9 -:10BE6C002A2093054A48EF80AFB4E30005E82A2066 -:10BE7C00D94593064A483546EFC05FCBB545E30636 -:10BE8C0005E679B5D9476393F400814403A54A00CC -:10BE9C009740FB1FE7808025E38904E41E247C8502 -:10BEAC00A5B71E2485447C8585B7B9476318F9006E -:10BEBC009305A1002285EFF00FA6B5B5C147631815 -:10BECC00F9009305A1002285EFF0EFE4A9BDC94765 -:10BEDC00631AF900130691009305A1002285EFE087 -:10BEEC005F9591B5D947631DF9009305A100228593 -:10BEFC00EFE05F85AA84E31A05E2A3040100F5B321 -:10BF0C00E147E314F9DE9305A1002285EFE06FF21F -:10BF1C0019BD01458280F9CE011152C42E8A854586 -:10BF2C0022CC4EC656C206CE26CA4AC8AA8AB689A2 -:10BF3C003284EF10D034D1471DC5B72700203727E6 -:10BF4C00002083C7873E8346973E814419E0B68420 -:10BF5C00BE86372700200327073E93974400BA97E5 -:10BF6C0063EDD400D547F2406244D2444249B24911 -:10BF7C00224A924A3E85056182803E89C10703D7D9 -:10BF8C0027FF09C7850493F4F40FD9BF31CC95650D -:10BF9C00938525C0130500029740FB1FE780C0095D -:10BFAC002326A90061D11306000281459384040461 -:10BFBC009740FB1FE780A03C231199002300090048 -:10BFCC00231359010DC4372700201C340326C764E2 -:10BFDC002304F900118C8327C90011841180C0AF90 -:10BFEC0023A02901814741B723260900C1BF23049F -:10BFFC004901FDB785473E858280B727002083C560 -:10C00C00873EB727002003A7073E81476395F500BD -:10C01C008146368582803223BA8619C2E30BA6FE8E -:10C02C00850793F7F70F4107D5B7B727002003C64D -:10C03C00873EB727002003A7073E81476315F6000C -:10C04C008146368582802E23BA8681C54C23E38AAD -:10C05C00A5FE850793F7F70F4107CDB7B72700204B -:10C06C0083C5B73EB727002003A7C76481476395F4 -:10C07C00F5008146368582801223BA8619C2E30BFD -:10C08C00A6FE850793F7F70F4107D5B7B727002012 -:10C09C0003C8973EB727002083A7073E01476315C7 -:10C0AC00E800814636858280B223BE8609CAF22317 -:10C0BC006317A600D04701C63222E305B6FE05077A -:10C0CC001377F70FC107E1BF411122C4404526C2C7 -:10C0DC0006C6AA8415C0484409C59740FB1FE780D3 -:10C0EC00E000484809C59740FB1FE78020002285E7 -:10C0FC009740FB1FE78080FF26854146814597408E -:10C10C00FB1FE780C027B2402244FD579CB49244E9 -:10C11C0041018280011122CC2A842A2106CE2EC60E -:10C12C00EF104063324622858145EF005052228544 -:10C13C006244F24005616FF03FF905C53A214111A7 -:10C14C0022C406C62A8411CBDD45EF00505322854C -:10C15C002244B24041016FF03FF7B240224441010A -:10C16C0082808280411126C2B1469304C5FFB386FA -:10C17C00D402B72700201387476506C622C436971A -:10C18C0036276397B602484305C513844765930762 -:10C19C00F00F6305F6001C21639CC7009740FB1F42 -:10C1AC00E780C0F4B147B387F402A29723A207003B -:10C1BC00B2402244924441018280411122C42E8417 -:10C1CC0026C24946AA848145228506C69740FB1F94 -:10C1DC00E780E01A95CCDC2C13974700B72700209A -:10C1EC0083A7C764BA979A231AA0BA23FE233AA04E -:10C1FC00372700200357673E5AA09A207AA0BA200E -:10C20C001AA4DA203AA4FA205AA49A241EA87AA4D2 -:10C21C00B2402244924441018280B727002083C55A -:10C22C00873EB727002003A8C764B727002003A6C2 -:10C23C00073E014781476394E5003E8582801422C6 -:10C24C0099CA544689CAD42E9206C2966315D50053 -:10C25C00850793F7F70F05071377F70F4106E1BF33 -:10C26C00130600643386C50293069500AA8537C56C -:10C27C000400130565146F607F82411122C406C649 -:10C28C002A840835EF607F95FD571CB4B2402244D8 -:10C29C0041018280011122CC4AC84EC652C456C2FA -:10C2AC005AC006CE26CA2A89AE890144372A0020F4 -:10C2BC00B72A00201D4B83479A3E6365F4046399AB -:10C2CC000902B7290020372A0020930AF00F83C7F0 -:10C2DC00893E6364F4061144A1442285050442049A -:10C2EC001306F00FCA854180EFF0DFE7E31794FEE9 -:10C2FC00F2406244D2444249B249224A924A024B29 -:10C30C000561828083A70A3E93144400BE949C204E -:10C31C008DC3FE20639F270163956901AA20EF104E -:10C32C00604326854E868145EF0070322685EFF0FE -:10C33C00BFD905041374F40FBDBF83270A3E9314B1 -:10C34C004400BE949C208DC39C34638F5701FE2007 -:10C35C00639C27012685EFF05FF22685D145EF001F -:10C36C0010322685EFF05FD605041374F40F85B7F1 -:10C37C0041677917630BE502411122C406C6854754 -:10C38C002A846399F50022852244B24081454101FB -:10C39C006FF05FF089476396F5008545EF10206ECE -:10C3AC007DD1B24022444101828082809D456FF054 -:10C3BC007FEEB727002003D5673E8280B727002089 -:10C3CC0003C7473E011106CE68876C868547631804 -:10C3DC00F70070009305E1000545EF502067F2402F -:10C3EC0005618280A947631DF6029C319821A20742 -:10C3FC00D98F1EA1BC31B821A207D98F3EA1DC3147 -:10C40C00D821A207D98F5EA1FC31F821A207D98FC0 -:10C41C007EA19C359825A207D98F1EA50145828047 -:10C42C00054582809147631EF6009C319821A20736 -:10C43C00D98F1EA1BC31B821A207D98F3EA10145CD -:10C44C008280054582809387C5FF93960701C18240 -:10C45C000D47636ED7003147B387E70237270020BB -:10C46C0013074765BA97A8A38EA301458280094597 -:10C47C0082809306402037270020AA8763F4A60009 -:10C48C0093074020F1172313F73EB727002023858D -:10C49C00B73EB72700202386B73E828019059565E5 -:10C4AC0042054111938535C0418106C69740FB1F5B -:10C4BC00E78080B801C9B240E95541011743FB1F21 -:10C4CC00670083CEB24041018280B72700202385CC -:10C4DC00073EB727002005472382073EB7270020D9 -:10C4EC00A388E764B7270020A386073EB727002060 -:10C4FC0001112393073EB72700202388A7644EC65B -:10C50C0037250020B72900201305456522CC26CA03 -:10C51C004AC837240020B7240020372900201306EE -:10C52C00000381459389B93E06CE52C42304043ED0 -:10C53C00A384043E2320093E23800900372A0020CF -:10C54C009740FB1FE780A0E3EF10602903454A6882 -:10C55C001304843E9384943E1309093E05CD9565DE -:10C56C00938545C012059740FB1FE780E0AC372749 -:10C57C0000202326A76419CD03464A6893074A680E -:10C58C009C332380C900814512069CA09740FB1F59 -:10C59C00E780E0DEB727002003C5C76D9C209565BA -:10C5AC00938555C03E951375F50F08A0120597405D -:10C5BC00FB1FE78060A82320A90039C1102081450A -:10C5CC0012069740FB1FE78080DB0327090014202D -:10C5DC00814725077D56639FF6006244F240D244A2 -:10C5EC004249B249224A37C504001305C5370561D3 -:10C5FC006F10E03F850710A393F7F70F4107E1BFDA -:10C60C002300040023800400C9BF41119397050146 -:10C61C0026C206C622C44AC0C187AE8463DE0708A0 -:10C62C0037290020034509659740FB1FE780E0BCD4 -:10C63C002A8429C91821930700096312F7041831B9 -:10C64C00CD476319F706B72600200348250003C51C -:10C65C00F654372700208347A73E13066400814514 -:10C66C0081461307A73EAA886316D80291C11CA362 -:10C67C001C2391C7034509658545EF60AFA2228550 -:10C68C00EF50DFED2165258DB240224492440249E2 -:10C69C00410182800C22AE9793F5F70F93F7F80FB8 -:10C6AC0063F4A50093F7F50F850693F6F60F0906CC -:10C6BC0085455DBF092BE1B793F715000145E9D717 -:10C6CC00EF00705109CDB727002083C7A73E81CB5F -:10C6DC00B727002003C507658545EF60AF9C13C5E0 -:10C6EC0014005DB785462A8763FFC6029C319021F2 -:10C6FC00A207D18F1EA16399D700BC31B421A20728 -:10C70C00D58F3EA10145828089460145639ED700A5 -:10C71C00BC31B421A207D58F3EA3DC31D421A207B2 -:10C72C00D58F5EA38280054582809147631EF600FB -:10C73C009C319821A207D98F1EA1BC31B821A20728 -:10C74C00D98F3EA101458280054582809147631EA9 -:10C75C00F6009C319821A207D98F1EA1BC31B821BB -:10C76C00A207D98F3EA10145828005458280A14751 -:10C77C006318F6029C319821A207D98F1EA1BC31F7 -:10C78C00B821A207D98F3EA1DC31D821A207D98FBD -:10C79C005EA1FC31F821A207D98F7EA101458280D0 -:10C7AC000545828089476319F6009C319821A207C0 -:10C7BC00D98F1EA101458280054582803E22797168 -:10C7CC004ECE06D622D426D24AD01307F007AE8915 -:10C7DC006371F70209473AC47C86300093F5F50F74 -:10C7EC00EF003076B250225492540259F24945610E -:10C7FC0082805A22D9462A89328463F7E6007E2247 -:10C80C0063F4F6006379F70023140100300093F50C -:10C81C00F90F4A85F1B70A2202C4EFF03F84AA84CB -:10C82C0035C5EFF09F9F9C246369F5001146A24625 -:10C83C00CE854A85EF00B06775B734002686930520 -:10C84C00F00F4A85EFF02FED75F1A2471A24DC4763 -:10C85C009AA33A20BAA35A20DAA37A20FAA3DA20B0 -:10C86C009AA7DC4495C793F4F90F2286A6854A85CE -:10C87C008297C167FD172A86E31BF5FA2245994773 -:10C88C00F9451CA144A1EFF0BF9DA9BF094645B7CE -:10C89C00014671BFA947631DF6029C319821A2077E -:10C8AC00D98F1EA1BC31B821A207D98F3EA1DC3192 -:10C8BC00D821A207D98F5EA1FC31F821A207D98F0C -:10C8CC007EA19C359825A207D98F1EA50145828093 -:10C8DC00054582809C211CA19C311CB1BC31B82126 -:10C8EC00A207D98F3EA1828023220500D821894737 -:10C8FC006304F70005458280F6210D47E37CD7FEE3 -:10C90C009C45011106CE22CC26CA4AC84EC6843399 -:10C91C009023A204D18C138644006311D604A03357 -:10C92C00BC23AE8922045D8C9307C4FFC207C1836C -:10C93C002A896361F70203A589002311990023104A -:10C94C008900F1559740FB1FE78000862322A90040 -:10C95C00014531A02285EFF04FEA71FD0545F2400B -:10C96C006244D2444249B24905618280397122DC69 -:10C97C002E841C204AD806DE26DA4ED619472A8980 -:10C98C00B2856392E70630202800EFF01FDAAA8404 -:10C99C0005E92884EFF06FE6AA890C3015C937D762 -:10C9AC0004002E861307276A34009D454A85EF0044 -:10C9BC00B02E4E850946814559294E85EFF0CFF0B2 -:10C9CC00F250625426854259D254B2592161828068 -:10C9DC0089477C803C840A867C813C857C824A85A4 -:10C9EC00EF003056F1BF49476398E7023220280028 -:10C9FC00EFF0FFD7AA8469F53725002013054565AC -:10CA0C005E2599E381446DBF1830142068253C00E5 -:10CA1C000146CA85FD246DB75147639EE70032205D -:10CA2C002800EFF03F9CAA8441FD0C3030004A8571 -:10CA3C00EFF0DFD871B75947639BE7043220280029 -:10CA4C00EFF05F9EAA842DFD2C844A85EFF00FE455 -:10CA5C0005C9584534851E23B697C207C1831EA34A -:10CA6C00D5D35C47C5D3B727002083C7A73ED9DBF6 -:10CA7C00B727002003C507658545EF50BFE289B78E -:10CA8C0089473EC03C840A860C307C8289BF0C30BE -:10CA9C000A8623100100EF00D04AADB75D71A6C223 -:10CAAC0056DA86C6A2C4CAC04EDE52DCAA8A8831C7 -:10CABC00AE8432C6EFF06FD7B24501ED8144B6407B -:10CACC002644268506499644F259625AD25A616127 -:10CADC008280230205002311050083C904008547C9 -:10CAEC002A846399F900B0202808EFF0BFBFAA840C -:10CAFC0005491DA09D476391F90418218D47E31F3B -:10CB0C00F7FAB02028080549EFF05FC4AA8409E5BC -:10CB1C00054681452285252E2285EFF00FF6082447 -:10CB2C003C080147CE862686D685E12AE30909F81A -:10CB3C002285EFF06FD961B7CD47639BF9001821BF -:10CB4C009147E31DF7F6B0202808EFF0BFC545B7B5 -:10CB5C00D547E395F9F6034A05008947E310FAF641 -:10CB6C00B02028080549EFF0FFD2AA8455F5835769 -:10CB7C000102A1EBB8841306F0035C44930607FC96 -:10CB8C00C206C182636AD600B085D94663F6C60078 -:10CB9C00B486D94563EDD5002A20BAA30549EF0028 -:10CBAC00703B03560102D2852285892CB5B7AC8720 -:10CBBC00BAA3D2A38EA3F6A385471CA0014A0149B0 -:10CBCC00CDB7014AF9BF7971AA8522D426D2222188 -:10CBDC00AA84280806D6EFF03FD1F24599E53DE14D -:10CBEC0085452285EFF08FFD75A0BC8415476395B4 -:10CBFC00E706B8858D4763F7E7046800EFF09FCD33 -:10CC0C003887DD4763FBE7008C86B707170085077D -:10CC1C00100822853EC8EF00D0323C87B8859107BA -:10CC2C006305F7002285EFF06FF81C8672466C00E6 -:10CC3C00858B1106228591CFEFF05FE601C5228529 -:10CC4C00EFF0CFF6884449DD9730FB1FE780004AB0 -:10CC5C0041BFEFF0BFD1DDB711476389E700138700 -:10CC6C00A7FF42074183854663EBE6023147F11784 -:10CC7C00B387E7023727002013074765BA979A2333 -:10CC8C0071D3A8233008A28505204DFDB8849147A7 -:10CC9C00E318F7F4B25022549254456182802C0868 -:10CCAC002285DD2445F1FDB701114AC82A89314599 -:10CCBC0026CA06CE22CC2EC6B284EF50FF8C21C1E0 -:10CCCC00B2459307000A1EA12EA12A842146110504 -:10CCDC008DC0A6859730FB1FE7802067A2854A850B -:10CCEC00EF50BF8E0145F2406244D2444249056187 -:10CCFC00828081459730FB1FE7806068C5B705458A -:10CD0C00DDB7797126D2AA841305000206D622D487 -:10CD1C002ECE32CC36CA3AC83EC6EF50FF8629C555 -:10CD2C006246F2454247D246B2472A84130520FA9E -:10CD3C0008A010B02EA058A054B013058400614672 -:10CD4C0091CFBE859730FB1FE7802060A2852254CF -:10CD5C00B2502685925445616F503F87814597307C -:10CD6C00FB1FE780C061DDB7B2502254925445617D -:10CD7C0082805845797122D406D62A84AE862DC776 -:10CD8C003E23FC85930720066397F504B727002004 -:10CD9C0003D6673E7E236373F600B28713F6F70F54 -:10CDAC002E2B1C2B8D8F93F7F70F81E5890793F7AB -:10CDBC00F70FB297FD17B3C7C702FC863E206E2053 -:10CDCC000824FC8401473C080146EFF09FF3B25065 -:10CDDC00225445618280582FB727002083A7C7644F -:10CDEC001207BA97FE23D1BF2EC6194681452808D3 -:10CDFC009730FB1FE780A058B246C9B7797122D48F -:10CE0C0006D626D22A8499CD81470147930600067F -:10CE1C002E866E200824EFF0DFEEB250225492548E -:10CE2C0045618280B284280059469730FB1FE78009 -:10CE3C000055648499E43E2048446C007C85EFF0F6 -:10CE4C00CFB73C000147930600060146D9B779716C -:10CE5C0006D6814791E93E21584570867C843C007A -:10CE6C0001C73E237C853C002E866E210825014798 -:10CE7C0093060006EFF0FFE8B25045618280411145 -:10CE8C0022C406C61C2111472A846392E7022E860F -:10CE9C006E21082581470147CD46EFF09FE64946B4 -:10CEAC006E202244B240154541016FF0AFAB13F731 -:10CEBC00B70F89466317D7000146EFF03FF4514690 -:10CECC00C5B70D476398E7002244B24001464101C3 -:10CEDC006FF0FFF7B2402244410182809A21B146A3 -:10CEEC00B727002071173307D70293874765BA9786 -:10CEFC00D84301EBD841AAA70145D8C3BA219AA7B8 -:10CF0C00828059458280797122D4404526D24AD0FC -:10CF1C0006D6AA842E8931C4484419C59730FB1F04 -:10CF2C00E780C01C232604001E20EE2088247C856C -:10CF3C003E200147930640067C861E244A867C8749 -:10CF4C001C483EC8BE207C843C00EFF09FDBA30E47 -:10CF5C00240123280400B2502254925402594561F2 -:10CF6C0082802800314681459730FB1FE7802041A5 -:10CF7C00BE20EE2088247C8401473C0093064006AA -:10CF8C004A86EFF01FD8C1BF797152CC2A8A8A2108 -:10CF9C0026D206D622D44AD04ECE56CAAE84EFF054 -:10CFAC00CF8519E1854795A84045AA8965DC7E2186 -:10CFBC00E39A47FF1E2463890710542CB72A0020DC -:10CFCC0003A7CA649206FD173697C2077A23C1835A -:10CFDC001EA46316F70093053006EFF09FD95C484A -:10CFEC00A5EFC840034915001C2122093369F9003B -:10CFFC00BE2013072900631CF702F9559730FB1F5D -:10D00C00E780801AC8C02391240103C589002686B5 -:10D01C00D285EFF07FC9814721E1B250225492545E -:10D02C000259F249624AD24A3E8545618280956531 -:10D03C00938515C04A859730FB1FE780E0FF48C8F1 -:10D04C00C840231C2401F9559730FB1FE780C015FD -:10D05C00BE20C8C0F917BEA0484825CDB220362C3A -:10D06C001E2C3308D60063C80707582C83A7CA6444 -:10D07C0095451207BA97BE2363C90705CC40369570 -:10D08C009730FB1FE780602C3A2CBE20BA97C20762 -:10D09C001A2CC1833EACE397E7F003D7290003C5F4 -:10D0AC008900300078845848D2857C853AC6EFF0E8 -:10D0BC00BFBF11C548489730FB1FE7802003232AC8 -:10D0CC000400232C0400F9BD99454E85EFF08F84A4 -:10D0DC00D1BDA545DDBF9145CDBFBA2161CBB727E9 -:10D0EC00002083D6673EED4763E3E60C011122CCAA -:10D0FC002E8426CAAA844840914506CE9730FB1F41 -:10D10C00E780800A3E20AA861CA13E20A1831CB188 -:10D11C001E203CA11E20A1833CB13220C167F9170F -:10D12C001106420641826392F4042AC4314532C688 -:10D13C00EF508FC5AA85CD471DC1930700F91CA1DF -:10D14C003246F957A2463EA189475CA1B727002079 -:10D15C0072A114C503C50765EF502FC78147F24074 -:10D16C006244D2443E850561828081452685EF402C -:10D17C00D01EAA8711E9B726002003C7A63E65D3A7 -:10D18C007D172385E63EE1BF09476304E5021D4791 -:10D19C006303E50249476302E5027D47E311E5FCC1 -:10D1AC00B726002003C7A63E8147D1BFED473E8579 -:10D1BC008280D1476DB791475DB789474DB7011153 -:10D1CC004AC831471309C5FF3307E902B7270020C6 -:10D1DC0026CA9384476506CE22CCBA94D84029C778 -:10D1EC0013844765B727002083C6A73E854795C69D -:10D1FC0068849E24AA242C003AC67C85EFF0FFEDAF -:10D20C0011C5C8409730FB1FE78040EEB147B3070C -:10D21C00F902A29723A207008547F2406244D24448 -:10D22C0042493E85056182808147C5BF797126D20E -:10D23C004445372700204AD0FE200359673E52CC84 -:10D24C0006D622D44ECE56CA2A8A63F327013E89CB -:10D25C00BA284209135909019E2835CF998F4A845F -:10D26C0063D5270113940701418089452285EFF08E -:10D27C00EFA2AA89CD4A31C5BE202AC660857C841E -:10D28C00BE2899EB9E28930925001CA19E28A183FA -:10D29C001CB1637424058228BE28CC4422864E859A -:10D2AC00BE959730FB1FE780400A03556A002C009F -:10D2BC00EFF0BFE2AA8A15C54E859730FB1FE780B9 -:10D2CC00E0E2B2502254568592540259F249624A15 -:10D2DC00D24A45618280890759B77914420441804A -:10D2EC0065BFBA289E203A94FD17C20742049A28BB -:10D2FC00C18341809EA0A2A86376E400F9F3FD5798 -:10D30C00DCBCC1B781455285EFF0FFBF5DBF7971C1 -:10D31C004AD03729002052CC034AD93E22D456CACF -:10D32C005AC85EC662C406D626D24ECE5284B72ADE -:10D33C000020054B930BF00F372C002083A70A3EDF -:10D34C0093144400BE9483C90400639B6907DC44B6 -:10D35C00A5CBD84735C79A2329CBB727002083C73D -:10D36C00A73E99CF2685EFF07FECAA8515E9B72764 -:10D37C00002083C7973E05046351F402A306893E3F -:10D38C00B25022544E8592540259F249624AD24A02 -:10D39C00424BB24B224C45618280A306093ECDB76D -:10D3AC002685EFF05FB68149E1BFDC3F639A7701D8 -:10D3BC00930520062685EFF0DF9BDC44A38E070047 -:10D3CC0083479C3E05041374F40F6363F40001441B -:10D3DC00E31644F7C9BF4111154506C6EFF03FDE11 -:10D3EC0009C50545B240410182801945EFF03FDD8A -:10D3FC006DF91145EFF0BFDC6DF51D45EFF03FDC2D -:10D40C006DF1B727002083C7973EE9DFB240410199 -:10D41C006FF0FFEF9E210D47F117C207C1836363C5 -:10D42C00F706DC41A5C3411122C42E84854526C2D2 -:10D43C0006C6AA84A92529C92685B92BC167F9175F -:10D44C00638FF40009ED3E2099CB162019476393A6 -:10D45C00E604372700200357673E63FDE702B72732 -:10D46C00002083C7A73EA285268599C72244B240D7 -:10D47C00924441016FF07FC62244B2409244410174 -:10D48C006FF0DFA5094582805145B2402244924499 -:10D49C00410182806D45D5BF397126DA4ED6AA84FA -:10D4AC00AE895D4589454AD806DE22DC328936C60E -:10D4BC003AC4EFE0BFFE35C122472A84014511C7AB -:10D4CC00B24613054400B685029793578500230096 -:10D4DC003401A30024013CB09547FC84B7270020FD -:10D4EC0083C7A73E28A01105E88522CE2C082685E7 -:10D4FC0095C3EFF09FBEAA8411C522859730FB1F00 -:10D50C00E780C0BEF250625426854259D254B259BB -:10D51C0021618280EFF09F9CF9BFCD44E5B7797112 -:10D52C0026D24AD052CC56CA06D6BA8A22D44ECE6D -:10D53C0019472E89B284368A6395E5062A22094456 -:10D54C00EFE0BFAB2AC635C55C4583596500BE23E9 -:10D55C009EA0B247B726002015472380570103C66B -:10D56C001665BAA3130716001377F70FA388E664A2 -:10D57C00D0A301E70547A388E66451476317E90088 -:10D58C001547BAA0DC479A249AA75287A686CA8563 -:10D59C004E85EFF07FF02A84324515C4EFE0DFB200 -:10D5AC0009A842867400BE85AA89EFE0DF962A841A -:10D5BC004DD12285B250225492540259F249624AFA -:10D5CC00D24A45618280F945EFE09FC9DDB79E21C3 -:10D5DC001CA19E21A1831CB1BE213CA1BE21A18313 -:10D5EC003CB1114582809E211CA19E21A1831CB1BE -:10D5FC00BE213CA1BE21A1833CB1DE215CA1DE2178 -:10D60C00A1835CB1FE217CA1FE21A1837CB12145CB -:10D61C0082809E211CA19E21A1831CB10945828080 -:10D62C009E211CA19E21A1831CB1BE213CA1BE2127 -:10D63C00A1833CB1DE215CA1DE21A1835CB1FE2182 -:10D64C007CA1FE21A1837CB19E251CA59E25A183D6 -:10D65C001CB5294582809A218546AA8718A19A2152 -:10D66C00218318B19A216319D700BA2138A1BA21A4 -:10D67C00218338B1114582800945631DA700BA2169 -:10D68C001945B8A3BA212183B8B3DA21D8A3DA217A -:10D69C002183D8B382809E211CA19E21A1831CB121 -:10D6AC00BE213CA1BE21A1833CB111458280797180 -:10D6BC0026D24AD04ECEB2842A89AE8929468145DB -:10D6CC00480022D406D636849730FB1FE78020CB47 -:10D6DC0064868DE43E207C82B727002083D7673E8A -:10D6EC007C845C4481CFD42F372700200327C76468 -:10D6FC0092069E2736973A237C85788337D7040089 -:10D70C004A851307C762540013F6F90FD545EFF09D -:10D71C00BFD82A8911C195E085471CA023020400BB -:10D72C00014681452285EFF06FEDB25022544A85B7 -:10D73C0092540259F249456182802285EFE0DF98CC -:10D74C00EDB737D70400B286130727662E868545BA -:10D75C006FF09FD401116887B7D604004165700043 -:10D76C0001489307F00F0D479386A65D99457D15EB -:10D77C0006CEEFF0DFDAF24005618280B7D6040006 -:10D78C00B28701482E8611479386265FC9456FF0F4 -:10D79C001FD937D70400B2861307E7612E86CD4513 -:10D7AC006FF09FCF011122CC372400201304C468E2 -:10D7BC0026CA4AC84EC606CE2A89AE8993040403EB -:10D7CC001C4081C7CE854A8582971104E31A94FECA -:10D7DC00F2406244D2444249B24905618280B72783 -:10D7EC00002003C55755411122C4372400209377DC -:10D7FC0035001304446D09811CB4AA9706C626C2D1 -:10D80C001CA4ADCB1305C0033385A702A565850504 -:10D81C00B72400209730FB1FE78000821024930769 -:10D82C00C00381453306F60223A4A4689730FB1F7E -:10D83C00E780E0B483A784681424014789077D56E8 -:10D84C006341D7022244B24092443725002013068C -:10D85C00000381451305C56841011733FB1F6700A1 -:10D86C0003B292A32381070023A507020507938720 -:10D87C00C703F9B7B240224492444101828001119E -:10D88C0022CC2EC632C406CE2A849730FB1FE780EA -:10D89C00A0F02246B24511E9C167F9176303F40001 -:10D8AC005145F24062440561828054555C218DC221 -:10D8BC0013F7270141456314A70015457DF2C18B71 -:10D8CC003D45E5D3BC2E0145E3FDB7FC3145D1BF49 -:10D8DC00C18B0145F9F71545E9B7797126D24AD0C4 -:10D8EC00B7240020416922D44ECE52CC56CA5AC815 -:10D8FC0006D6AA8901449384446D372A0020930AE2 -:10D90C00C0037D19054B9C246364F400014525A8D4 -:10D91C00B307540303278A68BA97BA2363162701FF -:10D92C0005041374F40FC5B7C83330009385670032 -:10D93C00EF90A1111946CE8528009730FB1FE78088 -:10D94C0060A9E31F65FDB250225492540259F2496A -:10D95C00624AD24A424B45618280B727002083C578 -:10D96C00C76DC166B727002003A78768FD168147DE -:10D97C006395F500014632858280035827003A866C -:10D98C006306D80003480700E307A8FE850793F752 -:10D99C00F70F1307C703E9BF411106C69730FB1FEA -:10D9AC00E78080DF09C54A29B240410182800145E8 -:10D9BC00E5BFB727002083C6C76DB727002003A794 -:10D9CC0087680145814711076393F6008280102315 -:10D9DC0001C605051375F50F850793F7F70F1307A8 -:10D9EC00C703DDB7B727002003C5C76D8280372773 -:10D9FC0000209306C76881471307C76831468C42DD -:10DA0C0091E58A07BA9788C30145828085079106FC -:10DA1C00E397C7FE4D458280411106C622C497305C -:10DA2C00FB1FE78060D70DCD2A842A218545EFF0B6 -:10DA3C007FD7485409C59720FB1FE780206B2285B0 -:10DA4C001306C00381459730FB1FE7804093FD57B9 -:10DA5C003EA0230204000145B240224441018280D1 -:10DA6C000945DDBF411106C69730FB1FE780C0D2C8 -:10DA7C0009C54825B240410182800145E5BFC16717 -:10DA8C00F9176305F502411122C406C62E8497309E -:10DA9C00FB1FE78060D0AA87014589C7C823698C22 -:10DAAC0033358000B240224441018280054582809A -:10DABC00011106CE2EC69730FB1FE780E0CD8547BF -:10DACC0001C95A29B24585476304B7004EA981475D -:10DADC00F2403E850561828029CD01114AC84EC6AF -:10DAEC0037290020C16922CC26CA52C456C206CEA0 -:10DAFC000144AA841309496D372A0020930AC003F4 -:10DB0C00FD1983478900634BF400F2406244D24410 -:10DB1C004249B249224A924A056182803305540334 -:10DB2C0083278A683E953E216383370182940504DE -:10DB3C00C9BF8280B727002003C6C76DB727002056 -:10DB4C0083A78768C166014589070147FD16914582 -:10DB5C006313E600828003D807006309D80003C86A -:10DB6C00A7006315B80005051375F50F05071377A6 -:10DB7C00F70F9387C703E9BFB727002003C6C76D0C -:10DB8C00B727002083A68768014781479106631059 -:10DB9C00E602858393C7F7FFC207C183054563621D -:10DBAC00E50285473395A7004205418182808C228E -:10DBBC0099C1CE36CD8F05071377F70F9386C60321 -:10DBCC00F9B793F61700F1FE050585831375F50F6C -:10DBDC00F9B7797156CAAA8A2E8526D24AD04ECE6A -:10DBEC0052CC5AC85EC662C406D622D4AE84328BDE -:10DBFC00368CBA8B3E8AC28946899730FB1FE780E8 -:10DC0C00A0B93DED41657D159730FB1FE780C0B88D -:10DC1C002A84554531C81946DE8513056400A302D4 -:10DC2C0084019720FB1FE78040728357010326A0D5 -:10DC3C00230264013EA88357410323005401232689 -:10DC4C0004025EA82306440123173401231824017F -:10DC5C00EFF09FF20AB8232A04022685232C040233 -:10DC6C008145EFF03FB40145B25022549254025911 -:10DC7C00F249624AD24A424BB24B224C45618280F5 -:10DC8C004545DDB7B727002083C6C76DB7270020F1 -:10DC9C0003A7876881476395F60041657D158280EF -:10DCAC003A861307C703835547FF6394A5002A22BE -:10DCBC008280850793F7F70FF9BFB727002003C8B9 -:10DCCC00C76DB727002083A68768416601477D167C -:10DCDC00954811436314E80001458280BE223685C5 -:10DCEC00638EC702CC5A9DC9BC31AC2189CD9385BA -:10DCFC0097FD93F5F50FE372B3FE9387D7FA93F77D -:10DD0C00D70F89EF82809385F7FD93F5F50FE3F636 -:10DD1C00B8FC9387D7FA93F7D70FE1D3050713779E -:10DD2C00F70F9386C6037DB7B727002083C5C76D51 -:10DD3C004166B727002003A787687D1681472548D1 -:10DD4C006394F5000145828036233A85638BC600C7 -:10DD5C00545B81CAB4329386E6FD93F6F60FE374F6 -:10DD6C00D8FE850793F7F70F1307C703D1BF01112F -:10DD7C0022CC2A84494506CEEF70CFB31DC12AC6EA -:10DD8C0022859730FB1FE78020A101CD6244B72785 -:10DD9C00002032460E39F24003C5776D05616F40A5 -:10DDAC00DFBFF24062440561828039714ED652D495 -:10DDBC00AE892A8A93053005414526DA4AD856D2CF -:10DDCC0006DE22DC32C63689BA8A9720FB1FE78032 -:10DDDC00A026CD4429C92A8489446381090432468A -:10DDEC008145F08241469720FB1FE78040595686BB -:10DDFC00CE8522859720FB1FE78020552146630E98 -:10DE0C000902CA8528089720FB1FE7800054A286C8 -:10DE1C0050082C085285EF303047AA842285972071 -:10DE2C00FB1FE780A02CF250625426854259D25435 -:10DE3C00B259225A925A2161828081452808972032 -:10DE4C00FB1FE780C053E1B7411122C4405926C2E1 -:10DE5C0006C6AA8429CC085409C59720FB1FE78065 -:10DE6C00E028285809C59720FB1FE7802028685810 -:10DE7C0009C59720FB1FE7806027285C09C5972000 -:10DE8C00FB1FE780A026685C09C59720FB1FE78075 -:10DE9C00E0250325040809C59720FB1FE780002512 -:10DEAC0022859720FB1FE780602423AA04022244CA -:10DEBC00B72700208E38B240924403C5776D4101DC -:10DECC006F40BFCC411126C206C622C4AE84973027 -:10DEDC00FB1FE780608C29C14C592A8495CD83A8FF -:10DEEC00C50703A88507FC59B859F4219221AC2128 -:10DEFC002685EF702FA42285EFF01FF5EFF0DFE2FF -:10DF0C0001CD2244B7270020B240924403C5776D5F -:10DF1C00854541016F401F99B24022449244410112 -:10DF2C008280011122CC06CE2A842EC69730FB1F8C -:10DF3C00E78080865C5989CF9E23B245639A87001F -:10DF4C0085476397F5006244F24005616FF0DFEF9F -:10DF5C00F240624405618280411106C622C426C289 -:10DF6C00EFF0BFD529C14059AA8415CC3C209DC7E0 -:10DF7C00B727002083A7473F89C7DC4399C3228575 -:10DF8C00829738309307F002631FF7002244AA20CF -:10DF9C00B2409244814541016FF0DFF2B727002077 -:10DFAC0083A7873FD1BFB240224492444101828073 -:10DFBC00411126C24AC006C622C4AA842E899720C3 -:10DFCC00FB1FE780607D05CD405955C41E2063942E -:10DFDC00970A3C30130710026395E7083C20ADCF3D -:10DFEC007C5403270408DE2B15E313F7170019CF15 -:10DFFC0018545A23058B19CB930720023CB0B2401E -:10E00C0022449244024905454101828013F72700BE -:10E01C0001CB18545A23098B01C793074002F9BF4F -:10E02C00918B81CB1C54DE23918B81C793076002AB -:10E03C00F1B7B727002083A7473FF1D3DC43E1D3E7 -:10E04C002285829738309307F0028145E319F7FA5D -:10E05C002685EFF03FE765B7B727002083A7873FFA -:10E06C00E9BF1307A0026398E700630409001309D2 -:10E07C002003CA85F1BF631C090026859720FB1F6E -:10E08C00E780807109C55C2193E707015CA1A68537 -:10E09C004A85EF603FA4A5B7797126D29947EC85E4 -:10E0AC00AA842E858D4522D406D632C636C4FC846D -:10E0BC00EFE0CFBE2ACE4D441DC13246A246AA8502 -:10E0CC00328582962A8419E52C082685EFF08FB4C8 -:10E0DC002A8411C572459720FB1FE78020012685F5 -:10E0EC00EFF0FFC82285B2502254925445618280D1 -:10E0FC004111B706050022C42E862E849386A69263 -:10E10C00894506C626C24AC02A89EFF0FFF80C20C2 -:10E11C00AA844A85EFF01FDBB240224426850249CF -:10E12C00924441018280B727002083A7873F85CB8B -:10E13C009C4395C71D71A2CC86CE984110082A84A9 -:10E14C003AC8D84185453ACA829711C548862A20D3 -:10E15C006C00EFF0FFF9F640664425618280828006 -:10E16C00AE8711CD785501CF142394A1143394B1FB -:10E17C00342BB4A1142F584BB4B1D8C18280414672 -:10E18C0081453E851723FB1F6700631FB7270020BF -:10E19C0083A7473F91C703A3870063030300028350 -:10E1AC0009458280373700200327C7881DC758438D -:10E1BC00AA8705450DC703A50708411106C6930696 -:10E1CC0005021306050C93050506130505040297B5 -:10E1DC00B2401375F50F4101828005458280828023 -:10E1EC004DC9357122CD2A840A2126CB4AC94EC786 -:10E1FC0056C306CF52C55AC1DEDEB68AB2892E8905 -:10E20C009720FB1FE7804059AA8431C50C18228542 -:10E21C00EFF01FF53C20138A6400A9CBEF602FE6CA -:10E22C002A8B014583CB5400EF606FE3AA840C105A -:10E23C000818EF10605208542C10EF108052D2883E -:10E24C00268A56C05E88D2875A8714103010CE8525 -:10E25C004A85EF200079FA406A44DA444A49BA49BF -:10E26C002A4A9A4A0A4BF65B0D618280EF602FE1D5 -:10E27C00AA8B014503CB5400EF606FDE2ACE085405 -:10E28C000C10EF10604D2C100818EF10804DF24858 -:10E29C004DBF8280C14719C91455C14781CA7855F1 -:10E2AC0011C7BC32BD4663F3F6001C2F3E8582803D -:10E2BC00894779C9F1C9411106C622C426C21C314D -:10E2CC002E849CA13C219CB13C31BCA15C21BCB1F5 -:10E2DC005C31858B93968700DE2193F7F7EFD58F12 -:10E2EC00DEA1543193F7F7DFA20693F60620DD8EFC -:10E2FC00D6A1583193F6F6BF220713770740558FF6 -:10E30C00DAA15C31FD769386F67F8D87858B758FD0 -:10E31C00AE07D98FDEA17421F99B858ADD8ED6A13B -:10E32C0078219377270013F7D6FF5D8FDAA17C2134 -:10E33C0093F647009377B7FFD58FDEA17821DD9B4D -:10E34C004D45218BD98FDEA1EF60DFD6AA845145D4 -:10E35C00EF605FD6383093F4F40FC94763609702CF -:10E36C001375F50F636CE50014201147E1476367E3 -:10E37C00D700143005476363D7008147B24022446D -:10E38C0092443E85410182803E85828015C1AA87D8 -:10E39C0009458DC141112E8541469385170006C64E -:10E3AC009720FB1FE78060FAB24001454101828053 -:10E3BC0009458280828089470DC585C5411106C6F5 -:10E3CC001831AE87194698A19305250013851700BF -:10E3DC009720FB1FE78060F7B24081473E854101E3 -:10E3EC0082803E85828015C1AA8709458DC1411165 -:10E3FC002E8541469385170006C69720FB1FE780A4 -:10E40C00C0F4B2400145410182800945828082807E -:10E41C00894705C99DC5411106C638211431AE87FF -:10E42C002207558F9AA121469305350013852700A5 -:10E43C009720FB1FE78060F1B24081473E85410188 -:10E44C0082803E85828015C1AA8709458DC1411104 -:10E45C002E8541469385170006C69720FB1FE78043 -:10E46C00C0EEB24001454101828009458280828024 -:10E47C00894709C981C91831BD46E14763E4E60003 -:10E48C0098A181473E85828015C1AA8709458DC117 -:10E49C0041112E8541469385170006C69720FB1F18 -:10E4AC00E780A0EAB24001454101828009458280A3 -:10E4BC00828015C1AA8709458DC141112E8541461F -:10E4CC009385170006C69720FB1FE78000E8B24033 -:10E4DC000145410182800945828082801DC1AA8745 -:10E4EC00094595C141112E8513060004938517002B -:10E4FC0006C69720FB1FE78040E5B240014541016D -:10E50C00828009458280828015C1AA8709458DC108 -:10E51C0041112E8541469385170006C69720FB1F97 -:10E52C00E780A0E2B240014541018280094582802A -:10E53C0082801D71A2CC2A84084586CEA6CA2306E9 -:10E54C000100042135479387F4FF93F7F70F6364B9 -:10E55C00F70C379706008A07130707F1BA979C4305 -:10E56C0082870C08EFF0DFD4C9476310F502994796 -:10E57C005C862A206C00EFF0BFB7F6406644D644A8 -:10E58C00256182800C08EFF01FEC31C51C86F5F379 -:10E59C002A20EFF0CFFDD5B70C08EFF0FFEEF5B762 -:10E5AC000C08EFF0FFECD5B70C08EFF03FDEF1BF35 -:10E5BC000C08EFF0FFE5D1BF0C08EFF0DFE2F1B78C -:10E5CC000C08EFF05FDFD1B70C08EFF09FEE75BFD2 -:10E5DC001C312308F1002A209720FB1FE780C01B69 -:10E5EC00A14705C15825631AF702B727002003A7D6 -:10E5FC00473F9D4719C7184309C71008A6850297BE -:10E60C00AA875C8661B70C08EFF05FEDBDBF0C0804 -:10E61C00EFF09FEF9DBF9D47A1BFB727002003A739 -:10E62C00873FC1BF011122CC06CE26CA4AC84EC6AE -:10E63C001821930720092A84631FF7101C313947CE -:10E64C00639FE7085621096761078147639DE60EC2 -:10E65C00B72400209389043F03A509009384043F49 -:10E66C007DC10C4403C90500631D09001C218505EF -:10E67C002146B9C729059720FB1FE78000CD9C4098 -:10E68C00A9CF4945EF305FF02A841DC1930710FCD8 -:10E69C001CA1A30025018C40090541468905972042 -:10E6AC00FB1FE78080CA9C40A2858833EF30FFF1C6 -:10E6BC0088409720FB1FE78060A323A0040031A8AB -:10E6CC0009059720FB1FE78040C8EF30A03B0549A8 -:10E6DC005DF583A70900238027018547ADA01307AB -:10E6EC00E0036398E70838219547631CF7024A2139 -:10E6FC00EFF04FB79147E312F5FEB727002083A741 -:10E70C00873FE1DF03A38700E30903FC72244A205F -:10E71C00930564006244F240D2444249B249056117 -:10E72C000283A147631CF7006C204A206244F2402C -:10E73C00D2444249B24905616FF09F8793060003AA -:10E74C008147E303D7FEF2406244D2444249B249C6 -:10E75C003E85056182809306000A8147E315D7FE4A -:10E76C00EFF03FDD084435D99720FB1FE780009878 -:10E77C00ADB78147C9BF011126CA06CE22CC894448 -:10E78C000DCD85CDAA842E8468008D45EF50BFE059 -:10E79C001C872685228693F7F70393E707046C0002 -:10E7AC005C87EF20001BAA8409E90D466C00130559 -:10E7BC0034009720FB1FE78040B9F2406244268565 -:10E7CC00D244056182805D714EDE86C6A2C4A6C2AB -:10E7DC00CAC052DC56DA5AD85ED6894945CD5DCAD4 -:10E7EC00138B4500420B135B0B01AE8A2A8A9305EF -:10E7FC0030055A85B2849720FB1FE780E0832A847A -:10E80C00CD4949C9EF608F892A895686D285935A9A -:10E81C008900135A0901937BF90F1305440093FAED -:10E82C00FA0F137AFA0F135989019720FB1FE7800F -:10E83C0000BDA301740123015401A3004401230072 -:10E84C002401EF600F85AA85414608089720FB1F1D -:10E85C00E780E0BA214734005A86A2850808EF20E9 -:10E86C00C035AA891DE121462C0023807401A380A8 -:10E87C00540123814401A381240113854400972072 -:10E88C00FB1FE780C0B7EF602F8222859720FB1F0C -:10E89C00E780C085B64026444E8596440649F25919 -:10E8AC00625AD25A425BB25B6161828001114AC8E2 -:10E8BC002A892E8506CE22CC26CA2EC69720FB1F6F -:10E8CC00E78080ED45C5405945C45C300947B245E9 -:10E8DC0093F6B70F6386E60011474945639CE7043E -:10E8EC001E2009456398B704930484004146CA85E9 -:10E8FC0026859720FB1FE78040A54146CA85130556 -:10E90C0084019720FB1FE78040A43C30454763916E -:10E91C00E7041306C4033285C14532C6EF50BFC7A6 -:10E92C0032469306C402A6852285EFF07F8B3C20ED -:10E93C0081EB0145F2406244D24442490561828038 -:10E94C0022856244F240D244424905616F10600551 -:10E95C0013071005E39FE7FC3C20E1DF22856244AE -:10E96C00F240D244424905616F10E0090945D9B71C -:10E97C004945C9B7397152D42A8A328526DA4ED61E -:10E98C0006DE22DC4AD8AE8932C69720FB1FE78010 -:10E99C00A0E0C94451C14059C9443DCC1E20324667 -:10E9AC00639CC7065C30A18BB1CB37390020832721 -:10E9BC00C9889304E00FADC39C47B9CF930484017D -:10E9CC0026854146D2859720FB1FE7800098832738 -:10E9DC00C9888325040826869C4793850504180856 -:10E9EC0081462E858297AA844146CE8508089720B9 -:10E9FC00FB1FE780209E93F4F40F11E1894438301B -:10EA0C009307B005631AF7002285EF00B07C3C2019 -:10EA1C0089CF9307C0053CB0F25062542685425909 -:10EA2C00D254B259225A216182809307E005E5B78E -:10EA3C0039C9011126CA06CE22CCAA8409459DCD1E -:10EA4C000D4628002E848D059720FB1FE780E08F54 -:10EA5C001C8570002C0093F7F70393E707042685B9 -:10EA6C005C85EF10106F19E90D46A28568009720A0 -:10EA7C00FB1FE78020967D153335A000F2406244E1 -:10EA8C00D2440561828009458280011152C42A8AD0 -:10EA9C0032854EC656C25AC006CE22CC26CA4AC8A9 -:10EAAC002E8BB28AB6899720FB1FE780E0CE09ED4A -:10EABC008944F240624426854249D244B249224AF2 -:10EACC00924A024B056182805C592A89C544F5F350 -:10EADC004D45EF602FDE1374F50F5145EF608FDD60 -:10EAEC00E38809FC83C78901E3E487FC1375F50F00 -:10EAFC00E360F5FC93053005130540089710FB1FE8 -:10EB0C00E7808053232AA9022A84CD445DD11306C1 -:10EB1C00400881459720FB1FE7806086A301040015 -:10EB2C0023014401230264012310540123263407DA -:10EB3C0023240402A30204008144E30C0AF6228578 -:10EB4C00EF007060AA8435D54A85EFF0EFAF95B72A -:10EB5C00397122DC06DE26DA4AD84ED652D456D289 -:10EB6C005AD05ECE62CC66CA0944630D0610630BA4 -:10EB7C000710AA8B3A89368BB28A2E8C9720FB1FF2 -:10EB8C00E78080C12A8A5144630E050E9305300537 -:10EB9C0041459710FB1FE780204AAA894D447DC14F -:10EBAC008344190083472900A204C207BE948347FB -:10EBBC000900BE9483473900E207BE9483278A027A -:10EBCC0063E697007D5709446399E70A63070C00D5 -:10EBDC0083474A000544898BCDC3930C4B002146D7 -:10EBEC0081450A85C20C9710FB1FE780407993DCA6 -:10EBFC000C019305300566859710FB1FE780C04319 -:10EC0C002A8C4D443DC95A86D68511059710FB1F99 -:10EC1C00E780E07E1146CA8562859710FB1FE7806E -:10EC2C00007E414693058A014E859710FB1FE780B5 -:10EC3C00007D21478A866686E2854E85EF10F07747 -:10EC4C002A841DE521468A8528009710FB1FE78042 -:10EC5C00007B21469305490028009710FB1FE78095 -:10EC6C0060778547631EF502A6855E85EF60CFFA57 -:10EC7C0062859710FB1FE78060474E859710FB1F3E -:10EC8C00E780C0462285F2506254D2544259B259A0 -:10EC9C00225A925A025BF24B624CD24C2161828016 -:10ECAC000544F9B779719397050122D406D626D27B -:10ECBC004AD04ECEC1872E8463D50704B7240020DA -:10ECCC009384446DA8309710FB1FE78000532AC62D -:10ECDC0009CDEFF03F95B24511E5A8209307F00F51 -:10ECEC00631EF5002E85EF307F872165218DB25094 -:10ECFC00225492540259F24945618280EF30FF8CC4 -:10ED0C00EDB793F7150091C7EFF00FA5134514005D -:10ED1C00F9BFA1E10145E1BF850493F4F40FEFE0E5 -:10ED2C007FCCE3F9A4FE339599001319050113590F -:10ED3C000901B3772401EDD34A85EFE0BFF4C16735 -:10ED4C00FD176305F500DD45EFF0CF973345240142 -:10ED5C0079BF85448549E1B7B727002023A8073E32 -:10ED6C00B727002023AA073E37F70400B727002057 -:10ED7C001307073123AC073EB727002023A4E76C09 -:10ED8C0037F704009387876C13074706D8C337E718 -:10ED9C000400130767DB98C737070500B727002067 -:10EDAC001307471923AEE76A370705009387C76B2C -:10EDBC001307E7D3D8C337070500130727FE98C7F7 -:10EDCC008280B727002083C7876DA18B89C7B7279F -:10EDDC0000209387876C37270020232AF73E0145B4 -:10EDEC008280B727002083C7876D918B89C7B7278F -:10EDFC0000209387C76B37270020232CF73E014553 -:10EE0C008280011106CE2AC6EFF01FF53245B727D6 -:10EE1C0000209945A38BA76CEFD0EFE2F24037E5C9 -:10EE2C0004001305E5F205616FE07FBC1C5581C73A -:10EE3C00A1473E858280011122CC26CA2A84AE8449 -:10EE4C00130500049305300506CE9710FB1FE780D1 -:10EE5C00A01E08D475C113060004A6859710FB1FCD -:10EE6C00E780A04E78543C2B93F68700F5CA1454D7 -:10EE7C00B422A18AF5C683270408DDEF930530057B -:10EE8C00130500109710FB1FE780001B2320A4081C -:10EE9C008D4745C5A302040078549C30143391EB84 -:10EEAC0091EABC20918BC5E33C2B918BC9EF854734 -:10EEBC0001A881C6214758B089C75C3093E7070188 -:10EECC005CB06C54BC29858B99CB1C540547BC2376 -:10EEDC008D8B6396E7007C2093E717007CA083273B -:10EEEC00040889C77C2093E787007CA05C30054729 -:10EEFC00639AE70A9304840041468145268597105E -:10EF0C00FB1FE780C04741468145130584019710DC -:10EF1C00FB1FE780C0461306C4033285C14532C6C9 -:10EF2C00EF506FE7832704083246B9CF2285EF00F4 -:10EF3C00902D9307000525C5A147F2406244D244A9 -:10EF4C003E85056182809C2014231547B387E70218 -:10EF5C0037970600130747F6BA97B6979C238DB7D9 -:10EF6C00943089C6143399C2E14799BFB420D58F28 -:10EF7C00918B95DF9C2014231547B387E7023797B5 -:10EF8C000600130787F4C9BF9306C402A685228521 -:10EF9C00EFF00FA52285EF00D020C14751FD3CB00A -:10EFAC00814761BF13F787012DCFC18B9304840078 -:10EFBC004146A9C7890526859710FB1FE780E038D5 -:10EFCC0041468145130584019710FB1FE780203BC8 -:10EFDC007C201306C403328593E747007CA0C1450F -:10EFEC0032C6EF504FDB83270408324699CF228577 -:10EFFC00EF007021930720055DD13DBF814526852B -:10F00C009710FB1FE780A03765BF9306C402A68547 -:10F01C002285EFF0EF9C2285EF00B018C94741D153 -:10F02C0021BF09478545638AE700114789456386F7 -:10F03C00E70019476396E7008D450A20EF606FA83B -:10F04C007C2093E747007CA08327040881C79307A3 -:10F05C001005B1B7C547A1B73C2163880722797168 -:10F06C0022D406D626D24AD03C31130750052A8426 -:10F07C00639DE706034975001306C503C145935705 -:10F08C003900AA973285842732C6EF50CFD0B737D4 -:10F09C00002083A7C788A1C79C47B1C303250408D8 -:10F0AC0093767900B3D6D4403246858A930505040D -:10F0BC00180893E606081305050882971375F50FD3 -:10F0CC0019ED41460C081305C4029710FB1FE7808D -:10F0DC00C0272285EF00F00C930760053CB0B250BE -:10F0EC002254925402594561828013071002639294 -:10F0FC00E7021C5503270508DE234DEF13F7071015 -:10F10C0055CB78555A2B137707104DC793077002C0 -:10F11C003CB03C30130770026394E70C3C5885E319 -:10F12C009305300571459710FB1FE780E0F028D858 -:10F13C0019C5714681459710FB1FE7804024245860 -:10F14C00B1C4BC2C89E72285EFF0CF94A8AC285829 -:10F15C00814541469710FB1FE780602228583D47A8 -:10F16C002C2D9387F5FF93F7F70F6364F700EF509F -:10F17C008FC2EF30CFDC3C58A1458AAB13852701F9 -:10F18C00EF506FC12C580A20EF00F030930780022B -:10F19C000A203CB09710FB1FE7800060414611C16C -:10F1AC007225B727002003C5776D06068545EF301D -:10F1BC00CFFE35B713F7072009CB78545A2B1377AA -:10F1CC00072001C793079002A1B793F70740B1D36B -:10F1DC007C54DE2B93F707408DDF9307B0020DBFF5 -:10F1EC00130780026397E7023C5899C78E2B0A20BD -:10F1FC0013862701EF00902F1C54DE2313F70720F2 -:10F20C0029CF78545A2B1377072021CB93079002E0 -:10F21C0041B713079002639BE700EF50EFE6AA8516 -:10F22C000A20EF00B02B9307A0029DB71307A00292 -:10F23C006390E704EF50AFE4AA85854701456384EA -:10F24C00F500814505452EC6EF506FE12A86B24583 -:10F25C000A20EF0050251C54DE2393F707409DC372 -:10F26C007C54DE2B93F7074091CF9307B0020DB778 -:10F27C001307B0026398E700EF50AFE1AA850A20AC -:10F28C00EF00302A9307F00291BD8280411122C415 -:10F29C00405926C206C67C54AA84DE2B13F70710ED -:10F2AC0011C718545A23137707100DE313F70720CF -:10F2BC0011C718545A231377072009EB93F707400B -:10F2CC008DCB1C54DE2393F7074085C793071002A0 -:10F2DC003CB02285EFF05FD838309307F002631E04 -:10F2EC00F7002244AA20B2409244814541016FE0CC -:10F2FC007FBD9307F0023CB0EDB7B240224492447C -:10F30C0041018280397122DC405926DA4AD84ED626 -:10F31C0006DEAA89AE843289630F04382A211E20A6 -:10F32C006384A700A14421A03C2091EB9D44F250A2 -:10F33C00625426854259D254B259216182809387F6 -:10F34C00E5FF93F7F70F2D47E362F7FE37970600BB -:10F35C008A07130707F8BA979C438287B2852285E0 -:10F36C00EFF0DFACAA84E1B74146CA851305C404AB -:10F37C009710FB1FE78060FD2285A92DAA8411C17F -:10F38C00A1443C30130740056396E70093079005B2 -:10F39C003CB071BF130760056395E7009307A005A8 -:10F3AC00C5BFCD47F5B79309C4054E854146CA85FF -:10F3BC009710FB1FE78060F90325040845C53C3016 -:10F3CC00130790056398E7002285712D9307E005DC -:10F3DC003CB079A01307A0056390E7087C3013D7E5 -:10F3EC003700229714279D8BB3D6F640B7370020F1 -:10F3FC0083A7C788858A93E606F893F6F60F9DD304 -:10F40C009C478DD39305050818084E8613050504F3 -:10F41C0082979374F50FE39704F041460C0813059B -:10F42C00C4049710FB1FE780E0FA7C304D4785073A -:10F43C0093F7F70F7CB06377F70022852D259307A0 -:10F44C00E005B9B7B727002003C5776D8545EF30C8 -:10F45C006FC5930750052DBF1307C005E386E7F66C -:10F46C008144F1B5130984004E86CA85228514089F -:10F47C00EFE01FD741469305C40408089710FB1F03 -:10F48C00E78040F5E30505EA8A861306C403CE85BA -:10F49C004A85EF10206905E12285EFE0BFDFB72731 -:10F4AC0000202A8783A7076D0A20814601468A859A -:10F4BC008297AA8411C1A14493072002D1BD0C22CA -:10F4CC00EFE05FA071BF383093072002E310F7E63E -:10F4DC007C5889EB9305300571459710FB1FE7802D -:10F4EC00A0B568D86858E30305E44146CA8597106F -:10F4FC00FB1FE78080E564582285EFE0BFD9A8ACFC -:10F50C0093073002F1B5383093073002E310F7E27D -:10F51C001E2268582146930529001EA949059710FB -:10F52C00FB1FE78080E27C54DE2B13F7270035C3EA -:10F53C0018545A23098B31CF9307400251BD3830F0 -:10F54C0093074002E314F7DE3C5C81EB854559459B -:10F55C009710FB1FE78040AE28DC285CE30205F027 -:10F56C004146CA859710FB1FE78020DE93075002A7 -:10F57C0085B5383093075002E31AF7DA285C194640 -:10F58C009305190041059710FB1FE78000DC7C54A4 -:10F59C00DE2B918B95CF1C54DE23918B95CB93074F -:10F5AC0060023DB57C5C89EB9305300551459710A5 -:10F5BC00FB1FE78060A868DC685CE30505D6414664 -:10F5CC00CA859710FB1FE78040D87C5C7D5798CB91 -:10F5DC004E85EFF0BFCB69B5032504081306000474 -:10F5EC00CA85130505049710FB1FE78000D62285FA -:10F5FC00EFE05FBB3C30130700056395E700930712 -:10F60C004005F9B313071005639CE700B7270020EA -:10F61C0003C5776D8545EF30EFA8930750054DBBBB -:10F62C0013072005E39EE7E2B737002083A7C788BE -:10F63C00E38A07CE9C47E38707CE8325040893040F -:10F64C008400180893850508814626862E858297A6 -:10F65C000A201008A685EF507FCF9307B0058DBB0D -:10F66C0038309307E005E313F7CC832504084146B3 -:10F67C004A859710FB1FE780E0D5AD44E30905CA26 -:10F68C00032504084146CA859710FB1FE780E0CB91 -:10F69C002285EFE03FC0B72700202A8783A7076D9C -:10F6AC002C580A20814601468297AA8411C1A14494 -:10F6BC0093071002F1B9AD47E394F5DA14222E2129 -:10F6CC00130665000821EF504FD159BB894759C229 -:10F6DC00D1C108A29C211CB29C313CA2BC213CB2E1 -:10F6EC00BC31A30206005CA2DE21A183858B5CB237 -:10F6FC00DA211377072001C793E727005CB2DE21DC -:10F70C0093F7074089C75C3293E747005CB2DE2170 -:10F71C0013974701635607005C3293E787005CB28E -:10F72C0023030600DC21858B7CA2DA21098B01C71F -:10F73C0093E727007CA2DE21918B89C77C2293E77B -:10F74C0047007CA2DA218147218B09C778221367F5 -:10F75C00870078A23E8582802E86AA8505456FF0AB -:10F76C00FFF62E86AA8509456FF05FF6894785C599 -:10F77C001DC1411106C6AE870D47AA8598A31385F6 -:10F78C00170041469710FB1FE78020BCB240814711 -:10F79C003E85410182803E858280894785C51DC199 -:10F7AC00411106C6AE871147AA8598A31385170089 -:10F7BC0041469710FB1FE78040B9B24081473E8518 -:10F7CC00410182803E858280894785C51DC14111DA -:10F7DC0006C6AE871947AA8598A31385170041461C -:10F7EC009710FB1FE78060B6B24081473E85410110 -:10F7FC0082803E858280894795C90DC9411106C614 -:10F80C001D4798A11A21AE87214698B11A21218350 -:10F81C00B8A193052500138537009710FB1FE780CF -:10F82C00C0B2B24081473E85410182803E858280D4 -:10F83C00894785C51DC1411106C6AE872147AA85DA -:10F84C0098A31385170041469710FB1FE780E0AF84 -:10F85C00B24081473E85410182803E858280894746 -:10F86C009DC515C5411106C6254798A11821AE871F -:10F87C00194698B193051500138527009710FB1FA7 -:10F88C00E780A0ACB24081473E85410182803E8535 -:10F89C008280894785C51DC1411106C6AE8729479F -:10F8AC00AA8598A31385170041469710FB1FE78084 -:10F8BC00C0A9B24081473E85410182803E8582804D -:10F8CC0089478DC505C5411106C6AE873147AA8546 -:10F8DC0098A313851700130600049710FB1FE780ED -:10F8EC00C0A6B24081473E85410182803E85828020 -:10F8FC00894785C51DC1411106C6AE873547AA8506 -:10F90C0098A31385170041469710FB1FE780E0A3CF -:10F91C00B24081473E85410182803E858280894785 -:10F92C0099C511C595479CA11C219CB181473E8569 -:10F93C008280894799C511C5AD479CA11C219CB1FA -:10F94C0081473E8582800DC55D718A8586C6A2C4BD -:10F95C002A84EFE0FF800A20B7F604000A8693861B -:10F96C0046769D45EFE04FF3B640264461618280B8 -:10F97C00054582800DC55D718A8586C6A2C42A8420 -:10F98C00EFE00FFE0A20B7F604000A869386E676AF -:10F99C009D45EFE06FF0B6402644616182800545DD -:10F9AC0082805D71A2C49305C5022A8441460A85F2 -:10F9BC0086C69710FB1FE78040990A20B7F6040013 -:10F9CC000A8693868677C545EFE00FEDB640264450 -:10F9DC00616182805D71A2C49305C5032A8441468E -:10F9EC000A8586C69710FB1FE78020960A20B7F67B -:10F9FC0004000A869386667AC545EFE0EFE9B640C7 -:10FA0C00264461618280B737002083A7C788A9CBC1 -:10FA1C009C435D71A2C486C62A841305E00F8DCF6A -:10FA2C00032504089305050C130505088297832507 -:10FA3C000408130600040A85938505089710FB1F1C -:10FA4C00E780A0900A20B70605009386C68C0A862C -:10FA5C0093051004EFE04FE4B640264461618280C8 -:10FA6C001305E00F8280317122DD2A840A2126DB06 -:10FA7C0006DF4AD94ED752D556D35AD15ECF62CD76 -:10FA8C009710FB1FE78040D13C58AA8489EB930563 -:10FA9C00300571459700FB1FE780005A28D828587D -:10FAAC00CD4705C9714681459710FB1FE780208D16 -:10FABC00032904072285EFE0EFFD230DA9003C206C -:10FACC0037390020638107128327C98885E39307A0 -:10FADC00E00FFA506A54DA544A59BA592A5A9A5AC7 -:10FAEC000A5BFA4B6A4C3E852961828083AB070125 -:10FAFC00E38F0BFC032B0408EF407FD82A8C0145C5 -:10FB0C00EF40FFD5DC303858130B0B029309C403BC -:10FB1C00130AC405938A64003AC0B337F0002A87ED -:10FB2C00930801045688B33680015286CE855A85D7 -:10FB3C00829B1C54B8232307E1029833A306E102ED -:10FB4C009C232306F1028327C988D1D303AB470139 -:10FB5C00E30F0BF6DC30B337F0003ECEEF403FD274 -:10FB6C00AA8B0145EF40BFCF03270408F2472AC0F8 -:10FB7C003AC2B338700156887810930684004E86CA -:10FB8C00D2858800029B7C54B82B2305E102983364 -:10FB9C00A304E1029C232304F1028327C98803A94F -:10FBAC004701EF40DFCD2A8B0145EF405FCB83C887 -:10FBBC0054009C082A883EC2B3381001B337600148 -:10FBCC003810930684015286CE8556C0880002995F -:10FBDC000A20B70605009386C68F9008C545EFE04E -:10FBEC00AFCBAA87FDB5D4308327C988032B040873 -:10FBFC00B336D00083AB070136CEEF405FC82A8CFA -:10FC0C000145EF40DFC53C58F246130B0B02130ABB -:10FC1C00C4059309C403938A64002A8893080104D9 -:10FC2C004E86D2853EC05687B33780015A85829B5B -:10FC3C001C54130B0103B8232307E1029833A306CA -:10FC4C00E1029C232306F1028327C98883AB470179 -:10FC5C00DC30B337F0003ECEEF407FC22A8C01453A -:10FC6C00EF40FFBFF2472AC0B338800156887810A6 -:10FC7C00930684004E86D2855AC28800829B8325C7 -:10FC8C00040841465A859700FB1FE780A074AD47D6 -:10FC9C00E31B05EE3DBDB7F604002E869386467D2C -:10FCAC00C5456FE06FBF5D71B287A2C44C802A84DA -:10FCBC00BE8513051100194686C69700FB1FE78009 -:10FCCC00C068B70605000A8622859386A686A145DC -:10FCDC00EFE08FBCB640264461618280B706050018 -:10FCEC002E869386C683C5456FE00FBB5D71B287C8 -:10FCFC00A2C46C802A84BE8513052100214686C6C9 -:10FD0C009700FB1FE7806064B70605000A86228512 -:10FD1C0093862680AD45EFE02FB8B640264461614E -:10FD2C008280B70605002E869386E689C5456FE06E -:10FD3C00AFB6797122D406D626D23C3113073005E2 -:10FD4C002A846381E708130750056392E708930739 -:10FD5C00A0053CB17C31C14513D737002A97142735 -:10FD6C009D8B1305C503B3D6F640858A93E606F83A -:10FD7C0093F6F60F36C6EF401F82B246B737002017 -:10FD8C0083A7C7889DCB9C478DCB032504081808F7 -:10FD9C001306C40393050504130505088297137510 -:10FDAC00F50F01ED1305C40241460C089700FB1F2B -:10FDBC00E780A0592285EFF0DFBEB2502254925456 -:10FDCC0045618280930790053CB1814645BF13077E -:10FDDC0010026391E7027C5503270508DE2B71EFB7 -:10FDEC0013F7170079CB18555A23058B79C793074E -:10FDFC0020023CB03C30130720026396E70E3C58BF -:10FE0C0089EB9305300571459700FB1FE780C022F5 -:10FE1C0028D82458ADCC2285EFE0CFC7A8AC285801 -:10FE2C00814541469700FB1FE780605528583D47A8 -:10FE3C002C2D9387F5FF93F7F70F636DF702B73708 -:10FE4C00002083C77789C9CF4146814508089700B0 -:10FE5C00FB1FE780C052B725002019469385455AF1 -:10FE6C0008089700FB1FE780404E30580C082E8581 -:10FE7C00EFF0E057EF20BF8C3C58A1458AAB1385BF -:10FE8C002701EF404FF12C580A20EFF0DFE09307E9 -:10FE9C0030020A203CB09710FB1FE780E08F4146F0 -:10FEAC0009C57E2513D617003E96B727002003C53B -:10FEBC00776D8545EF207FAE09B713F7270001CB8F -:10FECC0018545A23098B01C7930740021DB7918B15 -:10FEDC0095D31C54DE23918B91DF9307600211BFE5 -:10FEEC00EF406FEB41BF130730026396E7023C58BB -:10FEFC0099C78E2B0A2013862701EFF03FDF7C5425 -:10FF0C00DE2B13F7270021CB18545A23098B21C75A -:10FF1C0093074002BDBF13074002639BE700EF400D -:10FF2C00BF96AA850A20EFF07FDB9307500295B7A6 -:10FF3C0013075002639DE702EF407F9415E581455E -:10FF4C0005452EC6EF40BF912A86B2450A20EFF038 -:10FF5C009FD57C54DE2B918B8DC71C54DE23918B4B -:10FF6C008DC39307600235B785450145D9BF13078B -:10FF7C0060026398E700EF40DF91AA850A20EFF05A -:10FF8C005FDA7C5403270408DE2B09EF13F7071004 -:10FF9C0011CB18545A231377071009C79307700213 -:10FFAC003CB021BD13F7072009CB18545A23137703 -:10FFBC00072001C793079002E5B793F7074089CB59 -:10FFCC001C54DE2393F7074081C79307B002C9BFC7 -:10FFDC009307F002F1B7397122DC26DA4ED652D4EF -:10FFEC0006DE4AD8AE89328AAA849700FB1FE780C6 -:04FFFC00A07A40594E +:10029000C5BFB737002037370020938787DA1307A9 +:1002A000474C6373F700828023A007009107D5BFF6 +:1002B000411122C4B747024006C603A4C72023A6A3 +:1002C00007200F10000011C199E5B747024023A68F +:1002D0008720014545A093073500C207C183F19BE4 +:1002E000C207C183130740036366F7023737002054 +:1002F00003254704373700208326C7036391A602EE +:10030000373700200327070D69D3C207DD8D054568 +:10031000029765BF3737002003250704E1BF7A2124 +:1003200031EF5A21636CF704B73600203306F740EB +:1003300021489386C6046375C8028328050003D844 +:100340006600138687001D8F2A9661175AA2232004 +:1003500016012313060010C15EA1130788FFFAA23D +:100360006EA1EE222105B387F540FEA2B7470240F9 +:1003700023A68720B2402244410182800841BDBFAC +:10038000B747024003A8C72023A607200F1000008C +:1003900001E523A607218280B737002003AE47047A +:1003A000B737002003A3C7038146F28763FE6708BF +:1003B00083A80700636DF50863EBA808138787001F +:1003C0006364E508F223216705076319E600373601 +:1003D0000020034746E50507230AE6E437360020F8 +:1003E0001305C604CE237A21239307001306C604FF +:1003F0002E97420741837AA16383C70337350020D4 +:1004000003250504630DF500EA2211E9DE2223A08D +:1004100016012107BE95A105CEA27AA2B687984300 +:1004200063046702B736002083A60604630ED70074 +:10043000762399EAD6234E231843A106AE96D6A377 +:1004400098C37E22A1077EA2B747024099B7BE8615 +:10045000C687A9BFB7370020B736002083A7470457 +:1004600003A6C6032A87B305B5406314F6003A8590 +:1004700029A8938687009C43E369D7FEE377F7FEBC +:100480002E85E3E4D5FEE3F2F5FE828023AC05FE83 +:100490001C4181E70CC18280BA8703A787FF6DFFEB +:1004A00023ACB7FE8280411126C24AC0B744024045 +:1004B00006C622C403A9C42023A604200F100000EE +:1004C00009E923A62421B240224492440249410171 +:1004D00082802A842105BD654205C18D4181C93BC9 +:1004E00011C9FD572320050042A17CA123A6242188 +:1004F0002105D1BF23A624210145F1B701114AC826 +:100500004EC6B747024006CE22CC26CA83A9C720D2 +:100510002A8923A607200F10000037350020032466 +:1005200085048144014609E889ECA1654A85973034 +:1005300004E0E780A05925A08347E4FF639D2703DB +:10054000A1C0A68513058504973004E0E78040D755 +:1005500069DCA1654A85973004E0E7804011F240EC +:100560006244B747024023A6372126854249D24438 +:10057000B2490561828091E02286032484FF65B739 +:10058000A284E5BFB737002083A7870999E33E859A +:100590008280BA236315B7009823E30AA7FEDC47DD +:1005A000F5B7B747024003A7C72023A607200F10BF +:1005B000000001C599C1814711E6B747024023A653 +:1005C000E7208280B386F50003C80600B306F50075 +:1005D000850723800601E317F6FEC5B737470240BB +:1005E0008327C720232607200F10000019C191C1BF +:1005F00011E6374702402326F7208280910503A7A2 +:10060000C5FF11057D16232EE5FEDDB737470240F5 +:100610008327C720232607200F10000001C53307BA +:10062000C50011E6374702402326F72082800505E2 +:10063000A30FB5FEE31DE5FEF5B7B747024083A65D +:10064000C72023A607200F10000081473307F500BD +:100650000307070019E7374702402326D7203E85C6 +:1006600082808507E5B7011126CA4AC8B74702400C +:1006700006CE22CC83A4C7202A892E8623A6072053 +:100680000F100000131506019305F004418132C6D6 +:1006900005312A8401C53246CA8521372285F240B8 +:1006A0006244B747024023A697204249D2440561DD +:1006B0008280B747024003A7C72023A607200F1058 +:1006C000000001C599C1814711EAB747024023A63E +:1006D000E720054582808507E309F6FE3308F5002B +:1006E000B386F500034808009422E306D8FEB74716 +:1006F000024023A6E72001458280B747024003A7B6 +:10070000C72023A607200F1000009307F6FFBE9511 +:100710002A966317C500B747024023A6E7208280C8 +:10072000FD159C310505A30FF5FEE5B737470240DF +:100730008327C720232607200F10000001C5330799 +:10074000C50019E6374702402326F720014582807D +:1007500005058346F5FFE397B6FEE31BE5FE374745 +:1007600002402326F72005458280797126D2B734CE +:10077000002022D403A4840906D64AD04ECE52CCFF +:1007800056CA5AC85EC662C455C4373A00203739C3 +:100790000020B7390020814BB73A002037CBC90180 +:1007A000130ACA091309C9049389490E3E2099EF17 +:1007B0005C44639A0B0023ACF408032CC40022852C +:1007C000C1366284A9A823A6FB00C5BF83A70A0976 +:1007D00082971C443307F5406376F50003A7490070 +:1007E0001D8F2A979306FB3763EAE6062328090044 +:1007F0002E200820973004E0E78060E75C405844F2 +:10080000B1C70C4403A64900AE97BE8663E4B700A7 +:1008100063E4C700B386C74014C4A28B3A8459F47A +:10082000B73700209387C704984B854663FCE604DE +:100830007D1798CBB250225492540259F249624A21 +:10084000D24A424BB24B224C4561828063950B00E9 +:1008500023ACE4089DB723A6EB0085B703278A02E3 +:1008600019CB63EDA7003385A74083270901637483 +:10087000F5002328A900A28B404455B703A74900DF +:10088000BA97D5B723A8070075B701114EC6B74769 +:10089000024006CE22CC26CA4AC852C483A9C72029 +:1008A00023A607200F100000373400209307440EC2 +:1008B000C843DC271304440EB9CFB7370020938711 +:1008C000872603D7470B21CB83A4070B6385A4049A +:1008D000B73700201387C704184B138AC704630F68 +:1008E000A70E3739002083270909829763E5A40EF4 +:1008F00083270909898C829703270A0163F3E4009F +:100900002687B307A7003E85544063E4E70063E40D +:10091000D7003385D740B747024023A637215C4034 +:10092000639DA702B73400209384C4049848B73766 +:10093000002083A707096315A70A82975440B74789 +:1009400036FE938707C8B6973387A7003A85636456 +:10095000F7006364D7003305D740B734002093878E +:10096000443CDC539384443C99CBB737002083A6A6 +:1009700007443707CDFF7D179C46F98F9CC611E1D0 +:1009800048408547DCC4B737002083A7470C8297CF +:1009900005E1DC5089CFDC4499CB974006E0E78045 +:1009A00060A8973006E0E780A00523A60400753B09 +:1009B000DC5091CBB737002003A70744B7063300BC +:1009C0001C47D58F1CC7F2406244D2444249B24909 +:1009D000224A056182805C40BE9419BF268525BFEE +:1009E000829794485840B387A6003E8563E4D700B9 +:1009F000E3E5E7F63385E7408DB7B737002023A45A +:100A0000A7DA11C5B737002005472386E7DA8280C9 +:100A1000B737002003A787DA411122C406C6138422 +:100A200087DA11C30297B737002083C7C7DA93F775 +:100A3000F70F99E323200400B24022444101828051 +:100A4000011126CAB734002022CC4AC89387440E2D +:100A500006CE4EC652C456C2DC27373900209384D6 +:100A6000440E1304890795E3B73700209387473C6A +:100A7000D833058B19CBF8339946639BE60AA382DA +:100A80000700EF10504B5C4482971C4491C382973F +:100A900037340020B73900209307C40403A749095D +:100AA0009033130AC4048347C40493961700BA967C +:100AB0009622C9CA8347C40463EEC7082306040408 +:100AC000373400209307443C9C371304443C639123 +:100AD0000710B737002083A70709F5C3DC40232898 +:100AE000FA006131B737002083A7470CE9CB7C308F +:100AF00011476366F70CB737002093870741DC275F +:100B0000918BD5EFB737002083C7C7DA93F7F70F7C +:100B1000DDE783461A0003A6490963C7D70C624480 +:100B2000F240D2444249B249224A924A0561B1BBDD +:100B3000F8339D46E39BE6F4A3820700EF10B03F35 +:100B40001C4899B7850793F7F70F2306F404E3ECE5 +:100B5000C7F48DB786073E970E2323100700034581 +:100B6000C404B737002083A7470713172500B73AF7 +:100B70000020BA979C4323960A08829783D7CA0815 +:100B80000347C40493C7F7FF7D8D9317170003A78E +:100B900049093E971E235D8D0AA38347C40481C77C +:100BA00085072306F4048327890781C78297232CAE +:100BB00009060347C40483471A00E371F7F0F240C3 +:100BC0006244D2444249B249224A924A0561828033 +:100BD0007C3093F7F70FE39E07EEA30404009730F1 +:100BE00006E0E7804030F5B51397170032971A23D7 +:100BF00079F785071DB7374702408326C720F1776D +:100C0000FD17F58F2326F72001000100B7370020DC +:100C10009387C704C84F832787262326D7206A05D2 +:100C200093C7F7FF99835D8D8280B737002083C714 +:100C3000F70489CFB737002083C7070F91CBB737A9 +:100C4000002003A3470F630703000283054582804A +:100C5000094582801305F00F8280B737002003C654 +:100C60004726B737002003A747E281476315F60000 +:100C7000814636858280BA8613078702835587FDB1 +:100C8000E389A5FE850793F7F70FCDB7B7370020A7 +:100C900003C75726B737002083A707E42A8605072E +:100CA00081463E859E236388C700850693076500BD +:100CB000E3E9E6FE01458280B737002003A787E31A +:100CC00019E3014615A81C4703D8A700636B05016B +:100CD00083584700B38608016355D5008146639465 +:100CE00016011843F1BF3E86C10703D3A7FF631760 +:100CF000A30099C123900501328582808506C20632 +:100D0000C182F1BFB737002003C64726B73700209E +:100D100003A7472081476315F60081463685828008 +:100D2000BA861307C703835567FCE389A5FE8507C9 +:100D300093F7F70FCDB7032785116DCB411122C46F +:100D400006C65C258345E5042A8493F7C70F5CA596 +:100D50001437522713958601618563F7C5066351E1 +:100D60000506082793F6F60714B7054693E627000D +:100D70006314C50093E6170054A45C4389075CC361 +:100D80004CB8032504112E864C430905EFF07F81F2 +:100D9000832784115038D443DA27B296118FD4C3F5 +:100DA000DAA789473CBCB73700200347640383C7F1 +:100DB000E70A6371F7045C2493E707015CA41DA8AC +:100DC00093E717005CA46DBF9376F60F6359050295 +:100DD0000827854513E627006314B50013E61700BE +:100DE00050A454B8A304070085473CBC8327841152 +:100DF0009C43D5FBB240224401454101828093E7E8 +:100E000017005CA454B8A3040700032504114C4345 +:100E10000905EFF00FF9832784115038D443DA27FE +:100E2000B296118FD4C3DAA78D47C1B7054582802A +:100E3000B737002083A74739411122C406C6858BE6 +:100E40002A84D5E34165130525F5977005E0E78011 +:100E5000A0B251C93C253EA583270412ADE323204F +:100E6000A4122322A41285472311F4042320050091 +:100E70007C2854415EA5583418A5054718B5373766 +:100E800000200327873E1385170215811C437D151B +:100E90001375F50F9CC25C43DCC21C479CC65C47C3 +:100EA000DCC61C4B9CCA5C4BDCCA1C4F9CCE5C4F06 +:100EB000DCCE19CD9386060213070702C1BF832734 +:100EC000441288C3835724042322A412850769BFD0 +:100ED000B7370020938787269A2705079AA7B2403D +:100EE0002244410182805C2423090400054593C704 +:100EF00047005CA4EDB71C2D93F7E70FC5EB1C3D35 +:100F0000D5E73029542509CA3737002083456503C2 +:100F10000347F70A63E7E50013F7060149CB0147EA +:100F200009C6C18A0357251E81C68356651E36979A +:100F30003DCFB737002003D5C70E1307C71237467A +:100F40000F00B335A702411113060624814622C4BF +:100F500026C206C67D543305A70297D006E0E78077 +:100F6000600BB737002083C7370BB384A700B737B0 +:100F7000002003A747308327070963F387003E84D7 +:100F8000184375FBB737002083A70709829781476D +:100F90006364A400B307A440B2402244B3B79700EF +:100FA00093C7170092443E854101828081473E8568 +:100FB0008280B737002003A7C73E7C53FDFF8280A5 +:100FC000011126CAB73400209387842622CC03A4BB +:100FD000470A06CE4AC8835704044EC652C456C2B6 +:100FE0005AC085072310F40483470414A30F040098 +:100FF0009384842622856387071C612D2285976050 +:1010000005E0E78060A86315051A3739002013064C +:10101000490E0A2683576408B7460F009385F623C6 +:10102000B387A7029386062403270409230B04022F +:10103000032A46001309490EAE97B3D7D70263655A +:10104000F718B307F7408326C4082324F408814A1D +:10105000B387E600BE8963E4D70063E44701B38940 +:1010600047411E3023283409A1CB835604045A304B +:1010700037460F0056B03387E640B387E7023A3071 +:101080001306062481468145BA97C207C18333857A +:10109000A7023EB097D006E0E780C0F711CD4E958D +:1010A000B3393501AE99AA8763943A016364450167 +:1010B000B30745412328F408373A002083270A095B +:1010C0008297AA8983270A098297E30D35FF832730 +:1010D0000A0983298408829763EDA90E3385A94004 +:1010E000630B0510B737002083C7370B6375F51006 +:1010F000B7490F0093890924B3353503035B890091 +:10110000035A240281465A863305350397D006E0F8 +:10111000E78040F0B30AAA0033056A0337460F00A0 +:10112000130606248146814597D006E0E78080EECD +:101130000DC1B33735035A868146B385B90233856D +:10114000A902BE9597D006E0E780C0EC3305AA401F +:101150002AB03545973006E0E78080E923A2840A6B +:1011600038348547631BF706930700FD7CA4B73727 +:10117000002003A5C73A8347C900A5CBBD38B736C1 +:10118000002003A6C63EB73700209387473C15478B +:10119000F8B35846F977FD17F98F5CC60F100000B9 +:1011A00083A7C63E8966860A94C723A25707D8C775 +:1011B000F2406244D2444249B249224A924A024B26 +:1011C0000561828025211DBDB3064701B387F64026 +:1011D0009DBD83274900BE9911B7930710FC7CA4DD +:1011E000B737002003A5473A79B78145973004E027 +:1011F000E780C0A569B78347C90023A2040A85C355 +:10120000B737002003A5C739973004E0E780A0DE98 +:10121000B7E700E03707000223A2E72051BF83476A +:10122000940285456244F240D2444249B249224A7E +:10123000924A024BB395F500C205C1810145056193 +:10124000172304E06700A342011122CC4AC84EC60E +:1012500006CE26CA52C456C25AC0383585472A849B +:101260002E89832905096315F71E83570508035B3B +:10127000C503373A002093064A0E83DA8600130A24 +:101280004A0E63FF67191429639CE618032785112A +:10129000631807180327450A6314071874351D4798 +:1012A0006390E6182A3D330BFB409307204E33052D +:1012B00065038324440937460F001306062481463C +:1012C0003305F502B737002083C7270BB3549502C7 +:1012D000B3B5AA02BE94C204C18023139408338517 +:1012E000AA0297D006E0E780E0D2AA9933B5A90018 +:1012F0002E954E8783274A0019E163E4F90033876E +:10130000F940B3845403B7460F009387F6239386BE +:1013100006242320E900BE94B3D4D40293171B0003 +:10132000A6976369F70E1D8F2320E900B7390020C7 +:1013300083A7090983240900829763EEA4103385EB +:10134000A440635D050A83A70909373B0020130BFE +:101350004B0E8297032709006365E510198D7E3CCB +:1013600003578B008E07B387E7021307003293877A +:101370000719B3D7E70263EBA70E374A0F00930AAA +:10138000FA23130A0A248357040485072310F4045C +:101390008347041499E32285912C2285975005E018 +:1013A000E780806E6DE1832604098327C408032744 +:1013B0004B00B6973E8563E4D70063E4E7003385CE +:1013C000E7407C3C835464082328A40885077CBC40 +:1013D00083578B00B384F402D694B3D4440363637D +:1013E000950CB304954083A709092320990082979F +:1013F00063EEA40A3385A440E34705F8B73700201D +:1014000083C7370B63E2A708B737002023A68730CE +:1014100001459DA883264A00B387F6403E9729B729 +:101420008357640837470F00B38457039307F723A4 +:10143000A69793040724B3D4970263E79900B38473 +:10144000994023209900DDB583274A00BE99C5BF86 +:1014500023A03501E1BDB737002083A7870EBE94D6 +:10146000F9BD83274B00998F3E95D5BDA1452285B7 +:10147000975005E0E7808059A305A402B737002004 +:1014800083A7070D81EF7D55F2406244D244424963 +:10149000B249224A924A024B05618280894515452C +:1014A0008297D5B7B3049740AA9435BF83274B00E2 +:1014B000BE9489B721CD01116C0022CC06CE2A84BE +:1014C000613339C1FD576307F502B73600209386B3 +:1014D000C609FC3A9456324791C285836360F7028D +:1014E000B307F7403EC6B24503459402972004E097 +:1014F000E780C02DF240624405618280B73600204B +:1015000083A6860E3697E9BF653CEDB78280B73774 +:1015100000207971138787264AD00329C70906D688 +:1015200022D426D24ECE52CC56CA094763000906B1 +:10153000B7340020938A87269387443CFC33954632 +:101540009384443C0D476383F604DC442A8A99CB98 +:10155000973006E0E78000ED972006E0E780404AFC +:1015600023A60400FD596C004A85F93915E93715A1 +:101570000020130505D5EFF04FC8A147DCA0B73711 +:10158000002083A7C73E0947F8D30D47B250225425 +:1015900092540259F249624AD24A3A8545618280A0 +:1015A000637435013244AA8903290900E31D09FA4D +:1015B000FD571307F00FE38BF9FC914763F18702A6 +:1015C0009307B4FF2320FA0023A8FA0A0147DDFF9E +:1015D000B737002083A7870E2320FA0045BFB7370F +:1015E000002083A7870EED17A297E9BF797126D255 +:1015F00006D622D44AD04ECE52CC56CA5AC85EC65F +:101600008347550303447513AA843E941374F40F5F +:101610009307400263F687001304B4FD1374F40FBC +:1016200003AA841383AAC413A38B8412228652852F +:10163000D68597D006E0E7806098058915E503CB4D +:10164000D41201498149337B6403930B50024A86CB +:101650005285D68597D006E0E7804096058915C566 +:10166000639169031374F90F238B8412B2502254CF +:1016700092540259F249624AD24A424BB24B4561F6 +:1016800082808509E20993D989410509E31179FD31 +:10169000E1BF8327850903560504797193D60701B5 +:1016A000BD8EC206C182358E135776409357564081 +:1016B000898B058B5D8F93573640918B5D8F935748 +:1016C0001640A18B5D8F93171600C18B5D8F93170A +:1016D000360093F707025D8F9317560093558600E7 +:1016E00093F707041E065D8F1376F60F518F93D77D +:1016F000554013D63540118A898BD18F13D675404A +:10170000D18F13D61540218AD18F13961500418AA7 +:10171000D18F1396350013760602D18F139655009C +:10172000137606049E05D18F93F5F50FCD8FA20792 +:1017300045465D8F3307C70222D42A8426D252CC75 +:1017400056CA032A8413832AC4135AC806D6369766 +:101750004207418393577740135557400989858B3A +:10176000C98F135537401189C98F135517402189E7 +:10177000C98F131517004189C98F131537001375C9 +:101780000502C98F1315570093558700137505047B +:101790001E07C98F1377F70FD98F13D5354013D78D +:1017A00055401189098B498F13D57540498F13D541 +:1017B00015402189498F139515004189498F13954B +:1017C000350013750502498F1395550013750504EF +:1017D0009E05498F93F5F50F4D8F2207D98FB3875B +:1017E000C7024AD04ECE5EC662C4B697C207C18356 +:1017F00013D7774013D557400989058B498F13D5E7 +:1018000037401189498F13D517402189498F139586 +:1018100017004189498F1395370013750502498FC9 +:101820001395570093D58700137505049E07498FBC +:1018300093F7F70FD98F13D5354013D7554011893A +:10184000098B498F13D57540498F13D515402189D0 +:10185000498F139515004189498F139535001375EC +:101860000502498F13955500137505049E05498F90 +:1018700093F5F50F4D8F2207D98FB387C702130653 +:1018800050025285D685B697BD8E93940601C180CD +:1018900033F6C402137BF60F97C006E0E7800072B0 +:1018A00005890DED8347D41201498149B38497021C +:1018B000130C5002C1804A865285D68597C006E037 +:1018C000E780C06F0589937BF90F11C563863403E8 +:1018D000850993F9F90F0509E31F89FD230B6413AB +:1018E000B250225492540259F249624AD24A424BAF +:1018F000B24B224C456182805E8BCDB78327C508F1 +:1019000003568508797193D60701BD8EC206C18240 +:10191000358E1357764093575640898B058B5D8FD4 +:1019200093573640918B5D8F93571640A18B5D8FF7 +:1019300093171600C18B5D8F9317360093F707023C +:101940005D8F931756009355860093F707041E0684 +:101950005D8F1376F60F518F93D7554013D63540D0 +:10196000118A898BD18F13D67540D18F13D615402C +:10197000218AD18F13961500418AD18F1396350095 +:1019800013760602D18F13965500137606049E0532 +:10199000D18F93F5F50FCD8FA20745465D8F3307A5 +:1019A000C70222D42A8426D252CC56CA032A040A59 +:1019B000832A440A5AC806D636974207418393576A +:1019C0007740135557400989858BC98F1355374088 +:1019D0001189C98F135517402189C98F1315170015 +:1019E0004189C98F1315370013750502C98F131567 +:1019F000570093558700137505041E07C98F137789 +:101A0000F70FD98F13D5354013D755401189098B5E +:101A1000498F13D57540498F13D515402189498FBA +:101A2000139515004189498F1395350013750502EB +:101A3000498F13955500137505049E05498F93F53D +:101A4000F50F4D8F2207D98FB387C7024AD04ECEEC +:101A50005EC662C4B697C207C18313D7774013D559 +:101A600057400989058B498F13D537401189498F14 +:101A700013D517402189498F139517004189498F44 +:101A80001395370013750502498F1395570093D5A9 +:101A90008700137505049E07498F93F7F70FD98FB9 +:101AA00013D5354013D755401189098B498F13D56C +:101AB0007540498F13D515402189498F139515001D +:101AC0004189498F1395350013750502498F139588 +:101AD0005500137505049E05498F93F5F50F4D8F3D +:101AE0002207D98FB387C702130650025285D685C5 +:101AF000B697BD8E93940601C18033F6C402137B62 +:101B0000F60F97C006E0E780604B05890DED83472F +:101B1000140801498149B3849702130C5002C18013 +:101B20004A865285D68597C006E0E7802049058918 +:101B3000937BF90F11C563863403850993F9F90F77 +:101B40000509E31F89FD230F6407B2502254925404 +:101B50000259F249624AD24A424BB24B224C456189 +:101B600082805E8BCDB7832745090356850879713E +:101B700093D60701BD8EC206C182358E13577640BB +:101B800093575640898B058B5D8F93573640918BC9 +:101B90005D8F93571640A18B5D8F93171600C18BF5 +:101BA0005D8F9317360093F707025D8F93175600EA +:101BB0009355860093F707041E065D8F1376F60F84 +:101BC000518F93D7554013D63540118A898BD18FC9 +:101BD00013D67540D18F13D61540218AD18F139615 +:101BE0001500418AD18F1396350013760602D18FE6 +:101BF00013965500137606049E05D18F93F5F50FC5 +:101C0000CD8FA20745465D8F3307C70222D42A84B1 +:101C100026D252CC56CA032A040B832A440B5AC834 +:101C200006D636974207418393577740135557405E +:101C30000989858BC98F135537401189C98F135571 +:101C400017402189C98F131517004189C98F1315B2 +:101C5000370013750502C98F131557009355870078 +:101C6000137505041E07C98F1377F70FD98F13D586 +:101C7000354013D755401189098B498F13D57540CD +:101C8000498F13D515402189498F13951500418936 +:101C9000498F1395350013750502498F139555002B +:101CA000137505049E05498F93F5F50F4D8F220797 +:101CB000D98FB387C7024AD04ECE5EC662C4B697EC +:101CC000C207C18313D7774013D557400989058BC5 +:101CD000498F13D537401189498F13D51740218972 +:101CE000498F139517004189498F13953700137554 +:101CF0000502498F1395570093D587001375050486 +:101D00009E07498F93F7F70FD98F13D5354013D717 +:101D100055401189098B498F13D57540498F13D5CB +:101D200015402189498F139515004189498F1395D5 +:101D3000350013750502498F139555001375050479 +:101D40009E05498F93F5F50F4D8F2207D98FB387E5 +:101D5000C702130650025285D685B697BD8E93945E +:101D60000601C18033F6C402137BF60F97C006E06C +:101D7000E780C02405890DED8347F40801498149B6 +:101D8000B3849702130C5002C1804A865285D685CF +:101D900097C006E0E78080220589937BF90F11C583 +:101DA00063863403850993F9F90F0509E31F89FD5B +:101DB000230F6407B250225492540259F249624AE6 +:101DC000D24A424BB24B224C456182805E8BCDB7EA +:101DD0004111B737002026C283A4072C06C622C4AF +:101DE0004AC08547C1C403A4C40A854741C03C24F6 +:101DF0001307700A6393E70858301C34B736002085 +:101E00001386460EB387E7021A265042B387E702CD +:101E10001307003293870719B3D7E70203A74409D2 +:101E20009384460E3E973A896364F7006364C70063 +:101E30003309C740B737002083A7070923202501AE +:101E40008297B307A9406374A900D840BA9781E785 +:101E50009307F00F21A858309306204E3307D7027E +:101E6000E3F8E7FE930780FA3CA48147B24022449E +:101E7000924402493E85410182801307800AE3991A +:101E8000E7FCB737002083A7070982972A893545E1 +:101E9000972006E0E780C015B73700209387473CBE +:101EA0002D47F8B358301C34B73600209386460EC1 +:101EB000B387E7029A26D442B387E70213070032BA +:101EC00093870719B3D7E70203A744093E973A86D9 +:101ED0006364F7006364D7003306D740E31AC9F69A +:101EE00037D5050013056585EFE03FB1B737002012 +:101EF00083A7C73E0947F8D7A1BF397122DC373421 +:101F000000209307443C9C4F06DE26DA4AD84ED682 +:101F100052D456D25AD05ECE62CC66CA6AC86EC659 +:101F200013970701635D071EB737002083A4072CB2 +:101F300083A9C40A83C7990003A7C9009207330C79 +:101F4000F70003452C00314705053305E50203572B +:101F50004C003A9542054181EFE0EFD4AA8B630B28 +:101F6000051C130DC5002324A50103462C00B14513 +:101F7000F97A3306B6021304443C23130C000149DA +:101F8000373A0020373B0020B73C0020930D9005E6 +:101F9000FD1A6A962326CC0003C679009307D00762 +:101FA0000325CA3E3306F60285671CC5B707330012 +:101FB000060630D103268B3B0C4293F5F5E70CC2A5 +:101FC0000C4293F5F5E793E505100CC203A80C4409 +:101FD00083258800DD8D2324B80083A509002328EC +:101FE000B5050CC683556C000326CC002E96232421 +:101FF000CD0003461C00930550024A96A301CD0074 +:1020000003C504080146A3000400972006E0E7800A +:10201000C0D50326CA3E4846B37555014CC60F10BD +:1020200000000326CA3E896503288B3B0CC6930536 +:1020300000F84CA083250800B1818D89E1E193056A +:1020400060196CD248C6A30204008545A3000400B1 +:102050000CC2D525972006E0E78060F11030058A94 +:102060005DCAEA85268597C005E0E78080A50DED6D +:1020700003465D004DC283556C0003554C00B2957C +:1020800063DBA508AC28A848918D8905AA9503258E +:102090008D00EFE00FD123020D0083455D00035654 +:1020A0006C002E962313CC008325CA3E310DB0510F +:1020B0007DFE03462C0005091379F90FE36EC9EC88 +:1020C00098245E85A381EB0083470C00A3820B005C +:1020D0002383CB002382FB006254F250D254425936 +:1020E000B259225A925A025BF24B624CD24C424D88 +:1020F000B24D2161171305E06700C3DF8325080097 +:102100000948B1818D89639505019305E04315BFA9 +:102110009305E01B3DB77D562302CD0071B7B7375D +:10212000002083A7C73EFC5791C7B737002005475B +:102130002386E7DAF2506254D2544259B259225AF5 +:10214000925A025BF24B624CD24C424DB24D21612D +:1021500082800111B737002022CC03A4473326CA5E +:102160004AC84EC606CEAA8413092500854905C073 +:102170009C303830858B6304F700405CCDBF194636 +:10218000930544004A85EFE0CFD2E31835FF22855E +:10219000F2406244D2444249B24905618280411111 +:1021A000B737002022C403A4473326C24AC006C65C +:1021B00093042500054901E82285B2402244924457 +:1021C000024941018280A6851305A40297C005E05B +:1021D000E780603FE30225FF405CF1BF4111B73764 +:1021E000002022C403A4473326C24AC006C6930473 +:1021F0002500054901E82285B24022449244024963 +:1022000041018280A6851305A40197C005E0E780FF +:10221000803BE30225FF405CF1BF011122CC60410D +:1022200026CA4AC84EC652C406CEAA841D4A1309FD +:1022300065058549BC446364F400054591A0D83424 +:102240005C206317470503C784026304F70000405E +:10225000D5B7583083C75405E31BF7FE1946CA8526 +:1022600013056400EFE0EFC4E31335FF582483C780 +:102270009402E31EF7FC7A24BE34E31AF7FC01450E +:10228000F2406244D2444249B249224A0561828006 +:10229000E31FF7FA583083C75405E31AF7FA1946D3 +:1022A000CA8513056400EFE0CFC0E31235FBC1BF60 +:1022B0004111B737002022C403A4872E06C626C2C8 +:1022C0004AC079C88347840B1307700A6393E70AEF +:1022D0000347140E8347A40BB73600201386460E1F +:1022E000B387E7021A269384460E5042B387E7026B +:1022F0001307003293870719B3D7E7020327440A6D +:102300003E973A896364F7006364C7003309C740A6 +:10231000B737002083A70709232025018297B30739 +:10232000A9406374A900D840BA978DC70347140E1B +:102330009306204E3307D70263FEE700930780FA27 +:10234000230CF40A01442285B240224492440249FB +:1023500041018280372506001305657CEFE0EFE937 +:10236000B737002083A7C73E09471304F00FF8D7FB +:10237000D9BF1307800A1304F00FE396E7FC372553 +:1023800006001305657CEFE04FE7B737002083A711 +:10239000C73E0947F8D745BF054475B70111B737A0 +:1023A000002022CC03A4C73226CA06CE2AC42EC6D9 +:1023B000854419E40145F2406244D24405618280BB +:1023C0009C841830858B6304F7000044DDB7194600 +:1023D0009305A10013052400EFE0AFADE31795FED0 +:1023E0000545D1BFB736002083A7463B1307001031 +:1023F00098C323A00700183103482500220742088C +:102400004297034805004297034835006208429707 +:1024100098D758310348650022074208429703487D +:10242000450042970348750062084297D8D718358F +:102430000348A500220742084297034885004297B7 +:102440000348B5006208429798DB58350348E50019 +:102450002207420842970348C50068354297620543 +:102460002A97D8DB9831A821220742052A9788218C +:102470002A97A83162052A9798CFD831E8212207F8 +:1024800042052A97C8212A97E83162052A97D8CFB2 +:102490009835A825220742052A9788252A97A83526 +:1024A00062052A9798D3D835E825220742052A974E +:1024B000C825EC352A97E2052E97D8D3D843759BCB +:1024C000D8C3D84313671700D8C3984313671700BE +:1024D00098C303A7463B5C43858BBDE71C4F014572 +:1024E0001CA283A7463B9C4FA1831CB283A7463BFB +:1024F0009C4FC1833CA283A7463B9C4FE1833CB2E7 +:1025000083A7463BD84F58A2D84F218358B2D84F03 +:10251000418378A2D84F618378B2985318A6985314 +:10252000218318B69853418338A69853618338B6EF +:10253000D85358A6D853218358B6D853418378A688 +:10254000DC53E1837CB68280010061B7B73700209D +:1025500003A7C73E1605136505083C4B93E707081C +:102560003CCBB737002083A7473B03A7450E88C362 +:1025700098CB03A7850E0145D8CB03A7C50B98CFF1 +:1025800003A7050CD8CF03A7450C98D303A7850C48 +:10259000D8D303A7C50C98D703A7050DD8D703A791 +:1025A000450D98DB03A7850DD8DB03A7C50D98C79C +:1025B00003A7050ED8C798431367070498C3828002 +:1025C000B737002003A7C73E1605136505083C4B27 +:1025D00093E707083CCBB737002083A7473B03A707 +:1025E000C50E88C398CB03A7050F0145D8CB03A719 +:1025F000C50B98CF03A7050CD8CF03A7450C98D3DC +:1026000003A7850CD8D303A7C50C98D703A7050D3E +:10261000D8D703A7450D98DB03A7850DD8DB03A703 +:10262000C50D98C703A7050ED8C7984313670704BD +:1026300098C3B73700209387473C130700F8F8A3E7 +:102640008280B736002003A7863B41114AC01C5F39 +:1026500006C622C4998326C2858B3689B5CF9307D7 +:102660000006373400201CDF8347443C9304443C7D +:1026700093F7070489CFB737002083A7070982970C +:10268000C8CC8347443C93F7F70B2302F43C8347C1 +:10269000443C93F7070285C38347443C3737002007 +:1026A0000327C73E93F7F70D2302F43CDC48A166ED +:1026B00014C786077CD7DC2093F7070491EF854782 +:1026C000DCB0B737002083A7C73E096798C7130758 +:1026D00000FCD8A09848F8D30327893B1C5F91835E +:1026E000858B89CBC1471CDFB73700209387473CD8 +:1026F0008546D4A31C5F9D83858B91CB93070008EF +:102700001CDFB73700209387473C0547D8A3B7376E +:10271000002083A7473BD8430583058B19C7D843BF +:10272000759BD8C3D843799BD8C3B2402244924406 +:10273000024941018280B7370020B736002003A646 +:10274000C73E9387463C03C7463C058B19E7983341 +:10275000058B01E7785265FBD833A382070082809E +:10276000373800200327883B1C5F9583858BBDE7A6 +:1027700001C61C5BBD831CA29DC68327883B985B5A +:102780004607935767016356070093E707C0C207E0 +:10279000C18303970600C207C18709C7BA970947D3 +:1027A000B3C7E7029EA285C11C3191CF3E951C356F +:1027B0000547194593F6F7066393E602E207E187BA +:1027C000394563CE07008327883B37370020014512 +:1027D0009C5FED838D8BA307F73C8280054582804B +:1027E000411122C406C63734002026C20327C43E46 +:1027F0003DE5AE877453FDFEB73400209384443C1E +:102800003E85B28523810400971006E0E780804171 +:10281000B737002083A7873BB70680009843558FC2 +:1028200098C3D857719BD8D78327C43EA38204008E +:10283000A3800400094798C38326C43EB73700200D +:102840009387473CB823058B11E7B833058B19E311 +:10285000F8526DFBB24022449244410182808D4780 +:10286000631FF500B737002083A7873BB7068000BA +:102870009843558F98C3D857719BD8D775BF854754 +:10288000E31CF5FA5447F977FD17F58F5CC70F1075 +:1028900000008327C43E0967130600F898C737373E +:1028A00000201307473C50A3373700200326873BFF +:1028B000184231830D8B11E713076019F8D3D4C781 +:1028C000A5BF1842094631830D8B6315C700130756 +:1028D000E043EDB71307E01BD5B75D7152DC373A23 +:1028E000002003278A3B86C6A2C4A6C2CAC04EDE09 +:1028F0001C43B73900203739002093F7F7E793E7F7 +:1029000007081CC383A609443707CEFF7D179C46E2 +:10291000130680022A84F98F9CC68327C93E2800AB +:10292000AE8423A8070493051008EFD03FCE3545A9 +:10293000971006E0E780C06B83278A3B9376F41FED +:102940003706330023A40700984B370FFCFF4E884F +:102950001367F70398CBF84FCA88130510F813775D +:1029600007E0558FF8CF9843F576FD16758F98C31D +:10297000373700208326C93E1307473CA3020700D0 +:10298000A3000700054798C29843D285B702040008 +:102990001377F7E798C3984393038025114913777A +:1029A000F7E71367071098C303A709447D1F8549FC +:1029B0001C47930F8002D18F1CC793079005BCCA98 +:1029C00001473400135337002693834703001376DF +:1029D0007700B3D7C740858BE1C383A7853B832EA0 +:1029E0000844239C07042390070603AECE02137EFF +:1029F000DEFF23A6CE0383AE0700137EF70793FE08 +:102A00000EF833EECE0123A0C70103AE4702336EAA +:102A10005E0023A2C70383AEC83E014E23A27E06FA +:102A200003DA070663074E0303AE0703038A0600B3 +:102A3000135EFE00620E135E8E416358CA0103AE40 +:102A40000703135EFE002380C60103DE0706137E24 +:102A5000FE0F03AA4E0663060A0003DA8705E37F2A +:102A600049FB03AE4702337EEE0123A2C7038387EF +:102A70000600635CF400034E03003396C90013465E +:102A8000F6FF3376C6012300C3003E8663D3A7005A +:102A90002A8613158601618505071377F70F8506CA +:102AA000E312F7F3B640264496440649F259625AB7 +:102AB00061618280B737002083A7C73ED84793164D +:102AC000170163D2060298479316170163DD0600CB +:102AD0007D57B8D7373700201307C704544F8506F2 +:102AE00054CF116798C798470D83058B11CF37379F +:102AF00000201307473C342393E6160034A39306C3 +:102B000000F854A3214798C79847058B19CB37374E +:102B100000201307473C143393E6160014B305470F +:102B200098C798470983058B09E798470583058B64 +:102B300031CB373700201306473CA30206009447E9 +:102B4000B735002083A5853B8982858AE5C69441F7 +:102B5000B1828D8AE9EEA84B545213760502943265 +:102B60004DC2F9E29306D005D4CF8346473C93E6A5 +:102B700016002302D73C114798C7D855719B13679D +:102B80001700D8D598479316370163D40602373714 +:102B900000209306872603C6C60713078726418AA7 +:102BA00045C203C7C60713670702238EE6060567FB +:102BB00098C798479316270163DF06003737002030 +:102BC0001307473C5423E206E18663D4060085469A +:102BD00054A3096798C798479316070163D2060262 +:102BE00037370020130787268346D707858AADCA63 +:102BF0008346D70793E62600A30ED706216798C71A +:102C00008280ADD205466395C60093061006A9BF23 +:102C100009466395C60093065006B9B70D466395FD +:102C2000C6009306900689B79306B00635BF930693 +:102C3000C0061DBF38321367170038B209472DBFD1 +:102C40008346C7070946BD8A6388C6008346C7070F +:102C50000D46BD8AE39DC6F49146230ED70681BF7B +:102C60008346D707918AD9DA8346D70793E6860049 +:102C700061B7B737002083A7C73EB7360020138758 +:102C8000463C904710CF90470D82058A11CA3023E9 +:102C90001366160030A3130600F850A3214690C710 +:102CA0009047058A19C610331366160010B30546FF +:102CB00090C790470982058A09E690470582058AF0 +:102CC00031C6A30207009047B735002083A5853B96 +:102CD0000982058A59CA904131820D8A41E6A84B82 +:102CE000505313750502103221C935EA1306D00579 +:102CF000D0CF03C6463C136616002382C63C9146DD +:102D000094C7D455F19A93E61600D4D594471396F8 +:102D10002601635B06005423E206E18663D40600C5 +:102D2000854654A3096798C798479316070163D44B +:102D30000600216798C7828055DA05456315A6000D +:102D40001306100675B709456315A600130650064D +:102D500045B70D456315A6001306900651BF13062F +:102D6000B00679B71306C00661B7343393E6160090 +:102D700034B3894671B737370020B7360020138641 +:102D8000063F130707415C372C3E484AAE97FD8B40 +:102D9000B355F5001CB25CB785898DE9183B8146B7 +:102DA00013080002B3F7E7020147B355E500858930 +:102DB0009378F70F89C96395D700A3001601828025 +:102DC000850693F6F60F0507E31107FF8280B737F4 +:102DD00000209387473CDC3393F7F70FD9E7B737E9 +:102DE000002083A70709411122C44AC006C626C293 +:102DF0008297373900209307094180471309094119 +:102E0000630FA40463658504018DB73400209387A4 +:102E1000043FBC2F135455009384043F6361F404B2 +:102E2000993FBC2C032789009396570036971D8C39 +:102E30002324E900E376F4FE22448830B240924431 +:102E4000024981454101171306E067006361B73706 +:102E5000002083A7870E3384874022957DB7B24038 +:102E6000224492440249410182808280B737002087 +:102E700083A70709011122CC26CA52C406CE4AC82C +:102E80004EC68297B7340020938704418047014A99 +:102E90006300A4069384044163658506018D37377A +:102EA00000209307073FBC2F13545500137AF501F8 +:102EB0001309073F636BF402B73900209389490E69 +:102EC0005D3D8346A90103A8840083A549001397AB +:102ED00056004297158C3A86636407016364B70015 +:102EE0003306B74090C4E37DD4FC1604336A440132 +:102EF000F24062445285D2444249B249224A0561B5 +:102F00008280B737002083A7870E338487402295BD +:102F100079B7B737002003A7C73E85679387077740 +:102F20007CD3B737002083A7074483A607091396ED +:102F300056006358060083A607091396660063448B +:102F400006007453FDF28280EFD09FAC7300000046 +:102F500000000000970200009382820C03830200AD +:102F600023800200630F0300F32510342EC0970561 +:102F700000009385A5FD73901534EFF09FCF73008B +:102F8000203086DCEFF01FB3E650828000000000A6 +:102F9000B73700203737002083A747040327C7032C +:102FA00001456313F7008280F62399E2D623369514 +:102FB0009C43C5BFB737002083A5C709373700201A +:102FC0009387C709138605222322C704DA23938730 +:102FD00085FFB73600204111BA97056523AEF6028A +:102FE00006C61D05935637006374E500930600205E +:102FF0003307D600373500202320E50423A0E5223F +:10300000E11656A2231306001CC3998FE1175EA395 +:1030100023130700B53FB240B73700202399A70418 +:1030200041018280B73700203737002083A747044B +:103030008326C70301456393F6008280FA2309E7DC +:10304000DA236373E5003A859C43F5B7184183A7FB +:1030500085FF6319B7001CC1FD5723AC05FE238F04 +:10306000F5FE8280232CF6FEC5BF411122C426C284 +:103070003744024006C68324C420232604200F10B0 +:10308000000009E9232694201545B24022449244C9 +:10309000410182800347E5FF9307F00F6306F700C5 +:1030A000232694201145D5B797D0FB1FE7808006D3 +:1030B000014523269420D1BF411126C24AC0B744FE +:1030C000024006C622C403A9C42023A604200F1070 +:1030D000000089E523A62421154515A0B737002057 +:1030E00083C7D7042A842E856375F400894763EE6D +:1030F0008700A53FB747024023A627210D45B240D0 +:103100002244924402494101828083A785FF99E7C6 +:1031100003C7E5FF9307F00F6308F700B937B74718 +:10312000024023A627214DBF37350020238F85FE7F +:103130001305850497D0FB1FE780800EA1652285CB +:103140006D2C014523A624215DBFB737002023A4A1 +:1031500007048280BDCD797122D406D626D24AD00A +:103160004ECE01444147B3D78540858BB1CF120580 +:10317000314722953305E502B737002003A9C70D73 +:103180008544B3948400C204C180BE892A99032770 +:10319000090011C7032549002EC60297B2453147E1 +:1031A0003304E40283A7C90D3E941C4489E723201D +:1031B000090023220900B2502254A58D02599254CD +:1031C000F2492E85456182800504E31EE4F88144BE +:1031D000DDB72E85828041111397050122C406C6F2 +:1031E00026C24AC041872E846351070297D0FB1F35 +:1031F000E780000A11C1953DA1673D8C2285B24050 +:1032000022449244024941018280EDD9AA870147B4 +:103210004146B356E440858A9DCA9207BA97B146A3 +:10322000B387D702B736002003A9C60D8544B394EF +:10323000E400C204C1803E998327090003254900A8 +:1032400082972320090023220900258C45BF05070A +:10325000E311C7FC8144D5BF411126C2B7470240E4 +:1032600006C622C483A4C72023A607200F1000008F +:10327000B737002083A7070C37340020130484D706 +:1032800091C782971C403E9508C031A0B7370020F7 +:1032900083A70709FDF71C40374703001307D73FF3 +:1032A000B387E70237A72600130737ECB240BA9777 +:1032B0001CC0B747024023A69720084022449244EE +:1032C00041018280797126D2B747024006D622D4C6 +:1032D0004AD04ECE52CC56CA5AC85EC662C483A4E7 +:1032E000C72023A607200F10000005E123A6972082 +:1032F0000945B250225492540259F249624AD24AC4 +:10330000424BB24B224C45618280B737002083A7E5 +:103310000709BA8A368AB28B2E8BAA898297B73769 +:10332000002003A7C70D3E890144B146C147330CB5 +:10333000D40233068701104259E2C165938505F036 +:10334000414597D0FB1FE780E0CF19EDB73700204C +:1033500083A7070D81C7814511458297B747024072 +:1033600023A697202D4571B7B737002003A78709FB +:1033700039E323ACA708230005008327C90D0547BF +:103380003317870023260500232475013AA1232241 +:103390005501E29723A0370123A2670123A4570117 +:1033A00063040A0023008A00B747024023A697203F +:1033B000014581B73E875C47F5FF48C76DBF0504EF +:1033C000E317F4F6B747024023A69720214515B727 +:1033D000B737002083A7070E411122C406C6373431 +:1033E00000201304C40489C782975C483E9548C8EE +:1033F0004848B240224441018280B747024083A638 +:10340000C72023A607200F100000373700200347EE +:10341000D7046370E5023736002013171500032523 +:1034200046093A951A21D98D0EA123A6D720014528 +:10343000828023A6D7200D458280B747024083A60D +:10344000C72023A607200F100000373700200347AE +:10345000D7046372E50237360020131715000325E1 +:10346000460993C5F5FF3A951A21F98D0EA123A6B9 +:10347000D7200145828023A6D7200D4582800111E7 +:103480004AC83747024006CE22CC26CA4EC652C48E +:103490000329C720232607200F100000130705FF6C +:1034A0001377F70FFD4763E3E70AB146B306D5028A +:1034B000B737002003A7C70D36971C43C1CB9354E1 +:1034C000450005443D893315A400131405014180CE +:1034D000AE892685A28597D0FB1FE780E0E32A8A84 +:1034E00029C9A2852685913FB737002083A7070900 +:1034F000B73400209384440E82979E242A84814608 +:10350000B385370313060064B3B737031385053259 +:10351000B335B500BE95EFA0B208B30785003E876E +:10352000D44063E4A70063E4D7003387D740232463 +:10353000EA00B747024023A627210145F240624432 +:10354000D2444249B249224A05618280B7470240CB +:1035500023A627210945DDB701114AC8B747024014 +:1035600006CE22CC26CA4EC603A9C72023A6072012 +:103570000F100000BD4763EBA70431473307E50296 +:10358000B737002083A7C70DBA979C43A1C3054452 +:103590003314A40042044180AE840145A28597D033 +:1035A000FB1FE78060D7AA8911C5A2850145713547 +:1035B00023A49900B747024023A627210145F240E2 +:1035C0006244D2444249B24905618280B747024011 +:1035D00023A627210945E5B7797126D252CCB744F5 +:1035E000024006D622D44AD04ECE56CA5AC85EC62B +:1035F00003AAC42023A604200F100000B737002020 +:1036000083C7D7046378F500B737002083AB070979 +:1036100063970B00B747024023A6472199A037398B +:1036200000201309490EAE8A032B490083558900F7 +:10363000B74736FE938707C83E9BB387C5022A84E7 +:10364000B2898146B3B5C50213850732B337F50099 +:1036500013060064BE95EFA0A2746370AB0223A6AC +:1036600044210145B250225492540259F249624A0F +:10367000D24A424BB24B45618280829B835589007E +:10368000AA8413060064B38735038146B3B53503B6 +:1036900013850732B337F500BE95EFA06270B3070C +:1036A0009500BE840327490063E4A70063E4E700B4 +:1036B000B384E740D685228597D0FB1FE780C0C53D +:1036C00001C904C5B747024023A64721054559BF94 +:1036D000936504F0C205C181414597D0FB1FE78087 +:1036E000609611E9B737002083A7070D85D7A2851B +:1036F0001145829705B7373700208327870999EF4F +:10370000232CA70885472326050004C5231155014E +:1037100000A11CB12322050075B7BA87D84775FFF1 +:10372000C8C7CDB779714ECEB747024006D622D46E +:1037300026D24AD052CC56CA5AC85EC662C466C2A5 +:103740006AC083A9C72023A607200F10000025C147 +:1037500041443689B28A2E8AAA84B14C373B002074 +:10376000054D130C0003B30B94030327CB0D5E9799 +:103770001C43B9EF9375F400B315BD0013554440D5 +:10378000C2055686C1811375F50FB93531C183273E +:10379000CB0DDE9784C323A24701630409002300F5 +:1037A0008900B747024023A63721014521A023A65F +:1037B00037210945B250225492540259F249624AC3 +:1037C000D24A424BB24B224C924C024D4561828010 +:1037D0000504E31A84F9B747024023A6372121459F +:1037E000D1BF011122CC26CA4AC84EC6B7470240F3 +:1037F00006CE03A9C7202A84AE89B28423A6072057 +:103800000F100000D13B2285CE8597D0FB1FE780AB +:10381000A0B02A8405C5B737002083D5C70E13068C +:1038200000648146B3879502B3B5950213850732CC +:10383000B337F500BE95EFA0A25648C0133514006B +:10384000F2406244B747024023A62721D2444249AE +:10385000B2490E0505618280011122CC4AC84EC6CC +:10386000B747024006CE26CA83A9C7202A892E84DC +:1038700023A607200F10000097D0FB1FE780C0A9E8 +:10388000AA8419C123110500A2854A857D36B73760 +:10389000002083C7C70463992701B737002003D7E7 +:1038A000C708598C23968708B747024023A63721BB +:1038B000014591E01945F2406244D2444249B2497F +:1038C00005618280011126CA4AC8B744024006CE6B +:1038D00022CC4EC603A9C42023A604200F1000004A +:1038E0009307F00263E6A704B1473304F502B73942 +:1038F000002083A7C90DA2979C439DCB9377F50029 +:103900008545B395F500C205C1811181B13783A703 +:10391000C90D0145A29723A0070023A2070023A6F3 +:103920002421F2406244D2444249B2490561828076 +:10393000B747024023A627210945E5B7411126C212 +:1039400006C622C4B747024083A4C72023A6072087 +:103950000F10000097D0FB1FE780009C19E901457C +:10396000B2402244B747024023A697209244410127 +:103970008280B737002083A7070900458297B737B1 +:1039800000209387470E6367A402D843B74636FEEC +:10399000938606C83305A4403697E372E5FC130707 +:1039A0000064B335E502922781463305E502EFA0B6 +:1039B000223F7DB7D8433A94C9BF4111B7370020A1 +:1039C00006C623A0A70E0295B240B737002023A257 +:1039D000A706014541018280914763E9B700B737E7 +:1039E00000208A0593878707BE9588C18280B737F4 +:1039F000002023AC070837350020B73700204111DD +:103A000023A0070E5146B7370020814513058507CF +:103A100006C623A8070822C426C23734002097D040 +:103A2000FB1FE780E0971305C4041306800281455D +:103A300097D0FB1FE780C096EFF0CFD7B7370020B5 +:103A400083C7170B1304C404854513D527008D8B3A +:103A50003E958D473305F5029947B7340020390567 +:103A60001375F50F28A03305F5021305052497C03B +:103A7000FB1FE780205D23AEA40C2DCD302099479D +:103A800081453306F6021306062497D0FB1FE78014 +:103A9000209183A7C40D3820B734002093870724D2 +:103AA0000A0723AAF406BA9737370020232AF70813 +:103AB000EFF0AFE919291C3083A64407373604001C +:103AC0001397270036971306461510C31387170060 +:103AD0001377F70F0A073736040036971306661D6B +:103AE00010C313873700890793F7F70F8A0718B0B9 +:103AF000B69790C3B2402244924441018280373746 +:103B000000201307C7041C33342363FFD700B736E4 +:103B1000002083A646071386170010B313972700CB +:103B2000369708C33E8582809307F00FE5BF1C419E +:103B3000F1CF41777D8FB706002089476319D70CF5 +:103B40005A2171C7411126C21946AA849305F00F64 +:103B5000610506C622C497D0FB1FE7806096054723 +:103B60008D47630FE5089C4491C7985C994749CB02 +:103B7000D85C59C73734002013060004814513056B +:103B8000C40997D0FB1FE780A08113060004A68517 +:103B90001305C40997C0FB1FE780E0799307C409A8 +:103BA000DA2701E713070010DAA7F82719E305471A +:103BB000F8A79A2B19E36D479AABF83719E3154725 +:103BC000F8B7B82B19E30547B8ABB83B19E3F8379A +:103BD000B8BBD82B19E32547D8ABF82801E7130762 +:103BE000C003F8ABDC5791C78297B7370020239A00 +:103BF000A704B73700207D57A382E74ACD3B814712 +:103C0000B240224492443E854101828089473E85EC +:103C1000828001114AC8373900208327490E06CE19 +:103C200022CC26CA52C456C24EC68297130A0064DA +:103C3000B33545031309490E835A890081465686D8 +:103C400033054503EFA0C215B73700201387C7041B +:103C5000004FAA840145630694029389C704338503 +:103C60008440636E94000325490056868146B3352F +:103C7000AA023305AA02EFA0A212018D269523AC59 +:103C80009900F2406244D2444249B249224A924ADF +:103C900005618280011122CC2E84B7E506000A85D9 +:103CA00041469385451E06CEEFA0A248180806049B +:103CB0003A94B7370020035504FF83D7E70EF2404C +:103CC0006244AA9737450F00130505243355F502C2 +:103CD00005618280B737002083D7E70E51471D4525 +:103CE000637CF702794719456378F70213072003CD +:103CF00015456373F7021307B0041145637EF7009F +:103D0000130740060D456379F7001307600909455D +:103D10006374F70013B5B70F8280011122CC06CE71 +:103D20002A842EC6EFF04FD3B245F240818D33A5E1 +:103D3000A502229562441375F50F05618280011179 +:103D400022CC06CE2A842EC6EFF00FD1B245F24027 +:103D5000818D33A5A502229562444205418105610A +:103D60008280011122CC06CE2A842EC6EFF0CFCE5F +:103D7000B245F240818D33B5A502229562440561BA +:103D80008280B737002023AAA70E8280B737002091 +:103D90001387C709585739CF411122C426C24AC0D8 +:103DA00006C61389C7090297B73700201387C704CF +:103DB0001A272A849384C70405CBBA876373A700A4 +:103DC000AA87C207C183BA866373E400A286C206CB +:103DD000C182958F51476359F7008327090391C327 +:103DE0008297EF00022782A4B24022449244024903 +:103DF000410182808280011122CC37340020930758 +:103E0000C4099C5B06CE26CAAA851304C40981C7CF +:103E10002AC68297B245A5CD9C410545A5C7DC4180 +:103E2000B5C39E25A5C3BE25B1CFB73400201385E9 +:103E3000440E41469384440E97C0FB1FE780A04F79 +:103E400023860400B737002083A6470E37370020AB +:103E50002328D70878380DE39387470E8A279307DE +:103E6000805737460F003305F502130606248146B6 +:103E70008145EF90F27268B837450400130525C1FB +:103E80002D3E0145F2406244D24405618280B7373D +:103E900000209387C7043717002023AE07001307BD +:103EA0006798B737002023A2E70E37873200938741 +:103EB000470EFD56130727A1D4C398C723860700D2 +:103EC000B747024023A4D726B5BF011122CC37340F +:103ED00000209307C409884706CE26CA4AC801E9CC +:103EE0000545F2406244D244424905618280130490 +:103EF000C4091C5CF5D7585C65D77000854582976E +:103F00001844B247E30EF7FC4A249305E004B734A3 +:103F1000002097C0FB1FE780E0121387C40408D37A +:103F20009384C40455DD52249305F00F014997C0D2 +:103F3000FB1FE780E0467C249050634DF9003285FA +:103F400097C0FB1FE780001D014523A0040223A2A8 +:103F5000040241BF4E240844585CB387250389817D +:103F600005093E9508C20297F9B701114EC6B73947 +:103F700000209387C9099C4726CA4AC852C406CE66 +:103F800022CC56C25AC02A8AAE8432896388071E60 +:103F90009389C90903A78903630207121307F01F56 +:103FA0006360A712373400201307C404832A070272 +:103FB0001304C40463980A0803D5C9009565938562 +:103FC00015E097C0FB1FE780E00708D02A867DC573 +:103FD00083D5C90083A7890303A5890089818297B6 +:103FE00083A78900832A04025CD089476314FA08F6 +:103FF000C1476395F40C83D5C9009147938505FCAF +:10400000B3C5F5028A05D695B8219307A0056313B9 +:10401000F70A9E216390470B4A852686910597C033 +:10402000FB1FE78040311C505685639157130145B3 +:10403000F2406244D2444249B249224A924A024B77 +:10404000056182805850E382E7FA03D5C90095657F +:10405000938525E097C0FB1FE780C0FEAA8A39CD73 +:1040600083D5C9002A8683A7890303A5890089818E +:104070008297A5BF8D47631BFA00C1476390F40484 +:1040800083D5C900938545FDF199B5BF9147631864 +:10409000FA006395440383D5C900A115F5B79307CA +:1040A0000010631DFA00A14763EA970083D5C90099 +:1040B000C115D9BF1C505685639D570B29458DBF2F +:1040C0009D6A637A5509930A05E01947B3CAEA0263 +:1040D00003D7C900373B0020B38AEA02BE9A930790 +:1040E000CB04DC53130BCB046395570103240B0261 +:1040F0001DE003D5C9009305E00497C0FB1FE780CE +:1041000060F42A8445DD83D5C90083A789032A8604 +:1041100089815685829791451307A00589819397D8 +:104120002500A297B4236391E6049623639C46037B +:1041300085058A052686A2954A8597C0FB1FE780DC +:10414000801F83270B02E38487EE228597C0FB1F25 +:10415000E78040FCE9BD21677917E361A7F6B30A60 +:104160005541BDB7AC335DBF83270B02E38887F4AD +:10417000228597C0FB1FE780E0F989B7B737002099 +:1041800083A5C70685DD91479306A005898313970C +:1041900027002E973023E313D6F21223631C460127 +:1041A00085078A072686BE954A8597C0FB1FE7804C +:1041B0008018B5BD3C33D9BFB73700209387C709F6 +:1041C000984721C3D85F15CF8546631CD50241119E +:1041D00022C4373400201304C404105006C611CE84 +:1041E000CE27485089810297085097C0FB1FE7806F +:1041F00060F22320040223220402B240224441013F +:1042000082808280011122CC373400209307C409B8 +:1042100056C283AA870026CA4AC84EC606CE52C4D2 +:104220002A89AE84B2891304C409638D0A1A5C5CBE +:1042300099EB2945F2406244D2444249B249224AAC +:10424000924A056182801C5CEDD79307F01F63E101 +:10425000A70C373A00209307CA049C53130ACA04D8 +:10426000A9C7084483274A02639CA70489476313AC +:10427000F906C147E39FF4FA4A249147130505FC68 +:104280003345F5029317250003250A022686CE85BD +:104290003E959307A0053CA123102501110597C069 +:1042A000FB1FE7804009014571B74A249305E004EC +:1042B00097C0FB1FE78000D92320AA025DF195BFBC +:1042C0004E241C5C03260A02898182971C44232207 +:1042D000FA0269BF8D47631BF900C147E39BF4F401 +:1042E0004A24130545FD9377C5FF79BF91476317AE +:1042F000F900E39024F54A242115F5B7930700103F +:10430000E319F9F2A147E3E697F24A244115E1BF28 +:104310009D676375F506930705E01947B3C7E70284 +:104320005A24373A0020B387E702BE9A9307CA049B +:104330009C53130ACA04B1CB83274A0263925707DE +:1043400003250A0291461308A0059305F00F93D7A1 +:104350002600139727002A973023631206078358F5 +:104360000700303363992805B306D64063C496042A +:1043700085078A072686CE853E9515B7216779176A +:10438000E369A7EAB307F54061BF4A249305E00457 +:1043900097C0FB1FE78000CB2320AA0251FD51BD2F +:1043A0004E241C5C03260A028981568582972322AB +:1043B0005A0379B70EA393160601C18249BF52244E +:1043C000B38596009105130606FCE3F4C5E6138653 +:1043D0003400719A1106B2962301070123102701B8 +:1043E00034B379B7373A00209307CA049C53130AB1 +:1043F000CA0495CF03250A0291461308A005930528 +:10440000F00F93D72600139727002A9730236310C5 +:10441000060583580700303363972801B306D6405A +:10442000E3D896F40EA393160601C182D9BF68247F +:104430005E249305E0043305F5024205418197C0EF +:10444000FB1FE78020C02320AA024DF5DDB35224D4 +:104450006C24B385C502338696001106E3EBC5DCF8 +:10446000BDB7014582809C211CA1BE211CB1BE218B +:10447000A1833CA1DC213CB111458280B7370020EB +:1044800023AA07DAB737002023A807DA82800DCDE8 +:10449000411126C206C622C4AA8401458DC12E84BC +:1044A000B7E50600228541469385451F97C0FB1F4F +:1044B000E78060E89C2005455CA49C305CB4B24079 +:1044C000224492444101828001458280011122CC24 +:1044D00026CA06CE0947AA8432846381E504414690 +:1044E0008147639BC500638FE6006397B6000DA804 +:1044F00041478147638EE600F2406244D2443E85E4 +:10450000056182808A852285593741468A8519A8A6 +:104510008A85B53F41468A85228531A0E39AB6FC5B +:104520002E86A285268597C0FB1FE780C0F1AA874B +:10453000E1B7B737002023A8A7DA8280B737002079 +:1045400023AAA7DA8280011122CC622106CE26CAD4 +:104550004AC84EC62DCC83298500AE842A8803C95B +:104560000900814713178901618763550702B14725 +:10457000054563F787045114420403552800418020 +:1045800033878900A2864E868545EFB09027B337E2 +:10459000A00085077D14135569004204058913792D +:1045A000F90341809CA088B023812401C2A0014767 +:1045B00019C01387190098C409476383E7000145B0 +:1045C000F2406244D2444249B249056182800545C5 +:1045D000C5BFC167F917630AF502D94763F7B70288 +:1045E000011122CC2EC606CE2A84EF900021B245BE +:1045F0006368B50022856244F24005616FA0B01483 +:10460000F240624405450561828005458280C167AC +:10461000F9176314F5006F90401E411106C6EFA014 +:10462000100111E15D45B240410182809147639DD7 +:10463000F5001C211CA23C211831A207D98F3EA2F3 +:104640003C3101455CA28280114582804111814547 +:1046500022C426C206C6AA84BD232A8409E9B73724 +:10466000002083A707DB81C7F9452685829722852D +:10467000B240224492444101828039714ED656D2D2 +:104680005AD006DE22DC26DA4AD852D4AA8A2E8BE9 +:10469000B28951EB36C6A53F9145EF90A024AA847C +:1046A0004D493DC5B246054A238034010544630A9D +:1046B0000B00B68513851400029B05051314050134 +:1046C0004180E20993D9894163D30902C1455685E6 +:1046D000EFA05004654915E533868400A285268540 +:1046E000EFB040582A8911ED3104420441809147CE +:1046F0002C085685FC8426CEE085EFA0001B2A8975 +:1047000001C963070A00268597C0FB1FE78080A0C8 +:10471000F25062544A85D2544259B259225A925A9E +:10472000025B21618280BA84014ABDBF011122CCA3 +:1047300026CA4AC84EC606CE2A893284B689353F73 +:10474000AA840DE1B737002083A747DB81CF054757 +:104750006317E40003C4090005041374F40FA28571 +:104760004A858297F240624426854249D244B24942 +:1047700005618280AE86B7450400014705469385F2 +:1047800065466DB79E211CA19E21A1831CB10945E0 +:1047900082809E211CA19E21A1831CB1BE213CA12F +:1047A000BE21A1833CB1114582809E211CA19E2186 +:1047B000A1831CB1BE213CA1BE21A1833CB1DC314F +:1047C0005CA1FC215CB18A251905420541818280EA +:1047D0009E211CA19E21A1831CB1094582809E219E +:1047E0001CA19E21A1831CB1BE213CA1BE21A1839D +:1047F0003CB111458280CA21060542054181828073 +:104800009E211CA19E21A1831CB1AA21090542055C +:10481000418182809E211CA19E21A1831CB1BE21C9 +:104820003CA1BE21A1833CB1CA21110542054181B1 +:1048300082809C211CA1054582809E21411122C4B9 +:1048400006C61CA19E212E841105A183A30EF5FE90 +:10485000BE219505230FF5FE83D7D5FFA183A30FB6 +:10486000F5FE03C6F5FF97C0FB1FE780C0AC4820EC +:10487000B240224411054101828089476399F500C5 +:104880001C3118210145A207D98F1EA28280114533 +:1048900082809A21D94763FDE702011122CC06CE1E +:1048A0002EC62A84EF807075B2469E22636DF50095 +:1048B00022856244F240B7450400014709469385CA +:1048C000457805615DBBF24062440945056182801F +:1048D00009458280914785C51421FD15C20585478C +:1048E000C1816390F60213D725008D89914781E934 +:1048F000914711C7050534A21AA248C281473E85D7 +:10490000828009479147E39CE6FEC94733D7F50209 +:10491000B3F5F502E1BFAE86B74504000147114685 +:104920009385257999BB93F7350089EB8981914768 +:1049300081C50EA248C281473E8582809147EDBF66 +:10494000D8218947631CF702011122CC2A84C8456B +:1049500006CEAE86014709C92EC69D4597C0FB1FEE +:10496000E7808088B2462A8722856244F240B745B4 +:10497000040019469385A57A056101B30945828033 +:1049800099E1114582801C2105473EA2E37BF7FE99 +:10499000FD1593F5F50F33D7F502B387E702E392E0 +:1049A000F5FE050548C21AA201458280DC210947AF +:1049B000AE866385E70041476399E700B755040079 +:1049C000014721469385A5834DB9094582800EA2F2 +:1049D00091E1014548C201458280AE86B745040099 +:1049E000014729469385057D49B90EA291E101450C +:1049F00048C201458280AE86B74504000147314672 +:104A00009385E57D9DB90EA291E1014548C201451E +:104A10008280DA21854763FFE702011122CC2A84D4 +:104A2000884106CE1DC12EC6854597B0FB1FE78085 +:104A3000A07B2A8722856244B246F240B745040033 +:104A400039469385657F05610DB9F2406244094599 +:104A50000561828009458280914785C518218D4670 +:104A6000914763F0E602FD15C205C181B3C6E502B8 +:104A70003308D70263970501050516A23AA248C27A +:104A800081473E858280DC210947AE866385E70049 +:104A900041476399E700B7550400014741469385B4 +:104AA000A583E1BE09458280B335B000139525008A +:104AB0008280011122CC26CA06CE98258547AA8479 +:104AC0002E844946631FF70099363E204915130688 +:104AD000200963C8A700F2406244D2440945056139 +:104AE0008280183485476314F70013660604484033 +:104AF00001C98D4532C697B0FB1FE780E06E324694 +:104B0000A2866244F2402A872685D244B755040023 +:104B100093850580056195B68D4763F8B7021C3112 +:104B20001821F115A207D98F1EA23C313821C205E8 +:104B3000A207C181D98F3EA24EA289C5110508C620 +:104B40000145828023240600E5BF114582800111C2 +:104B500022CC2A84884506CEAE8601C92EC695454C +:104B600097B0FB1FE7804068B2462A8722856244DF +:104B7000F240B75504005946938545810561F5BC5F +:104B8000B335B000139525008280AE86B75504007A +:104B90000147614693852583CDB48547114563F070 +:104BA000D7021C320C22A207CD8F1EA39387E6FFEB +:104BB0003EA389476386F600090650C301458280FB +:104BC00023220700E5BF014781467946814575B438 +:104BD0009E211CA19E21A1831CB109458280BC217C +:104BE00005471CA18A216397E7000A0505054205D0 +:104BF00041818280C9473305F502CDBF8A210A056C +:104C0000420541818280BE211CA18A21BE2133053B +:104C1000F50205054205418182808A2182808A2130 +:104C200082808A218280BE211CA18A21BE21330577 +:104C3000F50205054205418182809E211CA19E212D +:104C4000A1831CB1BE213CA1BE21A1833CB1CA21DC +:104C500011054205418182809E211CA19E21A183D4 +:104C60001CB1AA210905420541818280894711456D +:104C70006398F6001C3214220145A207D58F1EA3AB +:104C800082809A21D947AE8663F9E700B7550400C0 +:104C900001470D46938505BD51BC094582801145EC +:104CA000639DA6001C3214220145A207D58F1EA3C6 +:104CB0003C323422A207D58F3EA38280BC21054717 +:104CC000FD1793F7F70F6361F7049E2195CF01114C +:104CD00022CC2A84C84106CE1DC12EC6894597B074 +:104CE000FB1FE78060502A8722856244B246F2406B +:104CF000B755040015469385E5BD056105BCF24036 +:104D000062440945056182800945828095471145C5 +:104D100063F1D706411122C426C24AC006C61C321E +:104D2000BA841822A2073284D98F9EA03C3238223E +:104D300093054400A207D98FBEA08947DCA009468D +:104D400013855400368997B0FB1FE780C05E930738 +:104D5000A9FF9EA49947631BF90023A60400B24053 +:104D60002244924402490145410182801904C0C491 +:104D7000FDB782809E2195CF011122CC2A84C841A3 +:104D800006CE1DC12EC6854597B0FB1FE780C045E6 +:104D90002A8722856244B246F240B75504001D4678 +:104DA0009385C5BF056159B2F2406244094505616A +:104DB0008280094582809947639DF60289474111A7 +:104DC00006C65CA31C321422B285A207D58F1EA38F +:104DD0003C3234225023A207D58F130557003EA33F +:104DE000910597B0FB1FE7800055B2400145410196 +:104DF0008280D14711456394F600C147C9B78280CC +:104E00009E219DCF011122CC2A84C84106CE05C522 +:104E10002EC6894597B0FB1FE780003D2A87228573 +:104E20006244B246F240B75504002546938565C0FA +:104E300005616FF0BF8FF2406244094505618280D1 +:104E400009458280894711456398F6001C32142277 +:104E50000145A207D58F1EA38280011122CC2A848E +:104E6000C84106CEAE86014709C92EC6854597B012 +:104E7000FB1FE7806037B2462A8722856244F240F2 +:104E8000B75504002D469385A5C105616FF01F8AB3 +:104E90001145639DA6001C3214220145A207D58F3F +:104EA0001EA33C323422A207D58F3EA3828001117B +:104EB00022CC2A84C84106CEAE8601C92EC68545BD +:104EC00097B0FB1FE7804032B2462A8722856244B2 +:104ED000F240B755040035469385E5C105616FF092 +:104EE000FF8493F71600114581EB89476386F6002E +:104EF000858256A310C301458280011122CC2A84E9 +:104F0000C84106CE05C52EC6854597B0FB1FE78074 +:104F1000A02D2A8722856244B246F240B75504008C +:104F20003D46938525C205616FF05F80F240624483 +:104F30000945056182809E219DCF011122CC2A84E2 +:104F4000C84106CE05C52EC6894597B0FB1FE78030 +:104F5000A0292A8722856244B246F240B755040050 +:104F60004546938565C205616FF04FFCF24062448F +:104F700009450561828009458280854763F6D7022D +:104F800008A70CB71C320C22A207CD8F1EA3938753 +:104F9000E6FF3EA389476386F600090650C3014534 +:104FA000828023220700E5BF1145828001478146A8 +:104FB0004D4681456FF08FF78D47114563F4D70259 +:104FC0001C320C22A207CD8F1EA33C322C22A2073A +:104FD000CD8F3EA39387C6FF5EA36386A60011060E +:104FE00010C70145828023240700E5BF011122CCB0 +:104FF0002A84884506CEAE8601C92EC6954597B04F +:10500000FB1FE780601EB2462A8722856244F24079 +:10501000B75504005D469385A5C305616FF00FF198 +:10502000854711456395F6001C2201451CA382802B +:1050300001478146654681456FF04FEF011122CC53 +:105040002A84C84106CEAE86014709C92EC68D45C1 +:1050500097B0FB1FE7804019B2462A872285624439 +:10506000F240B75504006D46938585C505616FF024 +:10507000CFE0011122CC2A84C84106CEAE8601477A +:1050800009C92EC68D4597B0FB1FE780E015B246D3 +:105090002A8722856244F240B755040075469385FD +:1050A00085C505616FF06FDD011106CE2EC6EF904C +:1050B000305419C5B245F2402A2105616FE0001352 +:1050C000F240494505618280B7370020A38007DEA2 +:1050D000B7370020238007DEB737002023A407DC82 +:1050E000B737002023A607DCB737002023A807DC4A +:1050F000B737002023AA07DCB737002023A207DC3C +:10510000B737002023A007DCB7370020239C071007 +:105110009306403893878711B6B3F1761307400B97 +:10512000938606B8BAA3D6B311679D461306000549 +:105130009305000A1305007DDAA3F6B341478546BF +:10514000130810F8BAA7DAA7BAABDAABFAAB9AAF82 +:105150009AB723960703EEA38EA7F2A792ABAAAF46 +:10516000239E0700239F070023900702B6B72397CB +:1051700007021308F007239807022392E7042393FA +:10518000E704239FE7042390E7062391E706239291 +:10519000E706239907031307C01CD6BBF6BB239C65 +:1051A0000702239D0702239E0702239F07022390E5 +:1051B00007042391D7042394070423950704239617 +:1051C000D7042397C7042398C7042399A704239AD5 +:1051D0000704239B0704239C0704239DC704239EE5 +:1051E000C7042393A706239407062395070623964F +:1051F00007062397B7062398B70623990706239A2D +:10520000E7065147239DE7067D57239B0706239C0E +:105210000706239ED706239F07062390070823919E +:1052200007082392E7088280011126CAAA84214533 +:1052300022CC06CE2E8432C636C43AC297B0FB1FAB +:10524000E780A0FF0DC5A24612473246930700FD36 +:105250001CA1994704B13CA174A178B152A1AA85BF +:1052600022856244F240D24405616FD0FFE4F240EF +:105270006244D24405618280B737002023A4A7DCB2 +:105280008280B737002023A6A7DC8280B7370020B2 +:1052900023A8A7DC8280B737002023AAA7DC82805E +:1052A000011122CC4AC806CE26CA2A890144B30479 +:1052B00089006368B400F2406244D2444249056107 +:1052C00082802EC6EFD05FF993170501C183A183B9 +:1052D000B2459CA09307140093F7F70F850463F879 +:1052E000B700CA97090488A31374F40FC9B73E84A2 +:1052F000C9B7411122C4373400201304840F6A2037 +:10530000C16706C6FD17630EF500B737002003C658 +:10531000C725B7350020938585DDEF90900FFD57A9 +:105320007EA0B24022444101828009C9251513752F +:10533000F50F1335850E13451500828001458280D7 +:1053400023900500C1C6797122D426D24ECE52CC0C +:105350005AC806D64AD056CA5EC63684328AAE8944 +:105360002A8B814463F24407B30794009C2313897A +:1053700014004209939A070193DA0A0113590901AB +:1053800063840A04CA976341FA04B307240183CBF8 +:1053900007005E85593F0DC99387FAFF2390F900F6 +:1053A00063906B03130519002295B2502254925456 +:1053B0000259F249624AD24A424BB24B456182805D +:1053C000D694C204C18079BF0145C5B7014582802A +:1053D000011122CC3734002026CA4AC84EC6930792 +:1053E000840F06CE2E89D0CB8CCBC8C7AA84414669 +:1053F0009305F00F4A8597B0FB1FE780600C854945 +:105400001304840F631935030848C145513D4146D3 +:105410009305F00F268597B0FB1FE780600A0549CA +:105420006315250348446244F240D2444249B249DC +:10543000C1450561B5B5414681454A8597B0FB1F19 +:10544000E7800008E31535FDC1B741468145268553 +:1054500097B0FB1FE780C006E30625FDF2406244DB +:10546000D2444249B24905618280411122C4373495 +:10547000002026C24AC0AE842A8913060002814554 +:105480001305840F06C697B0FB1FE78060F19307F2 +:10549000840FA3812701B737002023809726EFD000 +:1054A0003057854719C181474945230CF40EB24056 +:1054B00022449244024941018280814791C909C92D +:1054C00085476319F500DC3193E707FCDCB18547BC +:1054D0003E85828089476316F500DC3193F7F70338 +:1054E000F5B70D478547E315E5FED8311377F70388 +:1054F00013670704D8B1E9BF814785C119CDD831F9 +:105500009306000C85471377070C6308D7009306B2 +:1055100000048D476303D70089473E85828041118F +:1055200022C4005D06C626C21DC8AA84085009C54B +:1055300097B0FB1FE78000BE485009C597B0FB1F1E +:10554000E78040BD085409C597B0FB1FE78080BCC9 +:10555000228597B0FB1FE780E0BB23AC0402B2407A +:10556000224492444101828019E9B737002083C761 +:10557000A70F91C737350020130585DB82803735AB +:105580000020130505118280B737002003C5A70F3F +:105590008280B737002003A547108280B7370020EC +:1055A00003A587108280B737002083A7C7108843E0 +:1055B0008280B73700209387870FD44B9842050726 +:1055C00098C2A8339307F00F6305F50091656FD07B +:1055D000DFE28280011122CC06CE2E8432C6EF900B +:1055E000D0119147B2456310F502B737002083A769 +:1055F00047DD95C303A30700630F030022856244C0 +:10560000F24005610283B737002083A7C7DC81C75A +:1056100003A34700D5B7F240624405450561828087 +:10562000011122CC2A844A2106CE26CA4AC84EC677 +:1056300097B0FB1FE78040462DC52A890421834986 +:10564000C500F13D4A85EF9090494A20EF90300621 +:1056500037390020130909DE83470900B9C763966B +:105660009704B737002083C517DE2685353C19E13E +:10567000230009004A20EF9050089147631CF50071 +:10568000B73700209387870F5620FA236394E600EC +:105690007D57FAA3F2406244D2444249B2490561BF +:1056A000828081499304F00F65B79307F00FE3837D +:1056B000F4FC7420522028204E87A685B5365DBFA5 +:1056C00079715EC6AA8B2E8552CC56CA5AC806D6A8 +:1056D00022D426D24AD04ECEAE8A328B368A97B0AA +:1056E000FB1FE780603B7DC1045D2A89E5C09C50BB +:1056F000614599C3130540039C5481C75105420578 +:10570000418163050A00710542054181DC5081C772 +:105710005D054205418197B0FB1FE78000B22A84F6 +:1057200055C56146814597B0FB1FE78060C7B73715 +:10573000002083C9871463940900834909009307F3 +:1057400000FD1CA0A947A30074013CA02303640131 +:105750008C50231254011305840191C908C4714669 +:10576000930A440397B0FB1FE780E0BC56858C5436 +:1057700091C948C45146930A450197B0FB1FE78081 +:1057800080BB5685630C0A0008C87146D285930A0F +:10579000C50197B0FB1FE78000BA5685CC5099C56C +:1057A00048C85D4697B0FB1FE780E0B8A2854E85EC +:1057B000EFD09F902254B2509254F249624AD24A9A +:1057C000424BB24B4A850259456191BBB2502254BB +:1057D00092540259F249624AD24A424BB24B456155 +:1057E000828001114EC6AA892E854AC806CE22CCD7 +:1057F00026CA2E8997B0FB1FE780002A39C5B73724 +:10580000002083C4871491E00421194597B0FB1F41 +:10581000E780A0A22A8415C98145194697B0FB1FCD +:10582000E78000B8930700FD1CA0B947A30034012E +:105830003CA023122401A2856244F2404249B249AD +:105840002685D24405616FD03F87F2406244D2443E +:105850004249B2490561828039715ECEAA8B2E859C +:1058600026DA4ED652D456D25AD006DE22DC4AD898 +:10587000AE84328BB68A3A8ABE8942C697B0FB1F85 +:10588000E780802139C92A89414597B0FB1FE7800D +:10589000C09A2A8439C14146814597B0FB1FE780F1 +:1058A00020B0B737002003C5871419E1034509006C +:1058B000930700FD1CA0BD473CA0B247A3007401A4 +:1058C00046A023046401A304540123054401A30555 +:1058D00034015CC4A285EFD02FFEF2506254D25442 +:1058E0004259B259225A925A025BF24B216182808C +:1058F000797126D2AA8439454AD04ECE06D622D412 +:105900002EC6B289368997B0FB1FE78000930DCD74 +:10591000B2459307000D1EA1B1472A844EA13CA1B8 +:10592000CE851905194697B0FB1FE780C0A0230656 +:105930002401A2852254B2500259F24913F5F40F02 +:10594000925445616FD04FF7B2502254925402598D +:10595000F24945618280411126C2B7340020938408 +:10596000840FB83006C622C44AC09307F00F6308FC +:10597000F7042A89394597B0FB1FE780008C2A84F9 +:105980001DCD930700FDB73500201CA1A300250104 +:1059900023010500938505110D05194697B0FB1FDE +:1059A000E78060999E24A285A8303EA49C305CA428 +:1059B0002244B2409244024941016FD0EFEFB2401D +:1059C0002244924402494101828001115AC02A8B2B +:1059D000314526CA4EC652C456C206CE22CC4AC84B +:1059E000AE84B28A368ABA8997B0FB1FE780E0841A +:1059F0002DCD2A84268597B0FB1FE780E00909C5D5 +:105A00005825A1476311F704B737002003C9B70F22 +:105A1000930700FD1CA09D47A30064013CA046A085 +:105A2000231354012314440123153401A285624435 +:105A3000F240D244B249224A924A024B4A85424934 +:105A400005616FD06FE7B737002003C91726E31150 +:105A50000BFCB737002083A707EA9C47D5DBCE862F +:105A60005286D6852685829765B7F2406244D24435 +:105A70004249B249224A924A024B05618280011191 +:105A800022CC2A84214506CE2EC697A0FB1FE78094 +:105A9000C07A15C5B245930700FD1CA1C5473CA1BE +:105AA000BC313CB1DE215EA1FC217CA1FC31AA8588 +:105AB0007CB122856244F24005616FD0EFDFF24095 +:105AC00062440561828041114AC02A89714526C21B +:105AD00006C622C4AE8497A0FB1FE78000763DC5B2 +:105AE000930700FD1CA1F5473CA1BC302A84938597 +:105AF000C4003CB1DE2031051946231CF5FEFE2012 +:105B0000231DF5FE9E24231EF5FEBC24230FF5FE67 +:105B1000BC34A30FF5FE97B0FB1FE780C081BC2803 +:105B2000A2854A853CA8DE285EA8FC287CA8FC3813 +:105B30007CB89C2C1CAC9C3C1CBCBC2C3CAC2244BB +:105B4000B2409244024941016FD00FD7B240224483 +:105B5000924402494101828001114AC82A89614563 +:105B600026CA4EC606CE22CCAE89B28497A0FB1FB1 +:105B7000E780A06C25C1930700FD1CA1BC302A84DE +:105B8000938584001CB195473CA1FC301105194652 +:105B9000A30FF5FE97A0FB1FE780E079DE20230628 +:105BA0003401A2853EA4BE2C4A857EA4DE2C1EA80C +:105BB000FE2C3EA883C704025CA883C714025CB80D +:105BC000BE30F240D2447EA862444249B2490561E7 +:105BD0006FD08FCEF2406244D2444249B24905614F +:105BE0008280411122C4373400201304840F3C20EA +:105BF00006C626C285CBB7340020AA851946138570 +:105C000084DB97A0FB1FE78000732820938584DB4B +:105C1000EFF0BF8A2244B240138584DB92444101F5 +:105C20006FD0C05FB240224492440145410182805E +:105C3000411126C2B73400209387840F06C622C4C0 +:105C40004AC0B8339307F00F9384840F6301F704BD +:105C50002A89294597A0FB1FE780205E2A8405C971 +:105C6000930700FD1CA1A147A30025013CA1BC2076 +:105C7000B7350020938585DB3CB11946110597A007 +:105C8000FB1FE780406BA830A285EFD0EFC2B820A1 +:105C90008D476311F702B737002083A707DD99CB43 +:105CA00003A38700630803002244B24092440249E0 +:105CB00041010283B2402244924402494101828060 +:105CC000797122D406D626D24AD04ECE52CC56CAAC +:105CD00009444DCD2A890A21AE89514497B0FB1F52 +:105CE000E78080DBAA845DC1373700209307C72592 +:105CF000DC238546BA8AFD1793F7F70F494463F70B +:105D0000F6085825A1476314F700639109089C5CC5 +:105D10004544ADEF9165938545711305C00297A089 +:105D2000FB1FE780203288DC2A8A4D4425C11306F8 +:105D3000C002814597A0FB1FE7808066835709005A +:105D400093064A0036852311FA00714693054900EF +:105D500036C697A0FB1FE780005E89472300FA0044 +:105D6000C824B2460356090083C5CA2561151335F8 +:105D70001500EFA0A01C2A8463860900CE85268525 +:105D8000EF90D00301C42685EFF06FF92285B25061 +:105D9000225492540259F249624AD24A45618280A1 +:105DA000B737002083C707260547FD1793F7F70F7E +:105DB0006377F708894749C6011122CC26CA4AC829 +:105DC0004EC652C406CEAA89368AB2842E8997B0AE +:105DD000FB1FE78060CC2A84D14731C5485509C5EF +:105DE00097A0FB1FE7800033F145268597A0FB1F96 +:105DF000E780A06048D4CD471DC554242147814782 +:105E0000639DE600630B0A00382D122993062501D5 +:105E1000AA854E85EF90F000AA875820630E0900EE +:105E20001367670058A0F2406244D2444249B24925 +:105E3000224A3E850561828013674700E5B7C9475E +:105E40003E8582809307100463EAA700B7370020DD +:105E50009387871106053E950A21828041657D154D +:105E60008280011122CC2A842E8526CA06CEAE84D9 +:105E700097B0FB1FE78040C20DCDB7470F00938757 +:105E8000F723094563E2870281450A85414697A0C9 +:105E9000FB1FE780E050A68560800A854180408135 +:105EA000A3010100EF90706AF2406244D2440561A0 +:105EB00082804945D5BFB7370020238FA724828031 +:105EC0006FA02002797152CC2A8A328522D426D240 +:105ED0004AD04ECE56CA5AC85EC606D662C4AE8BEB +:105EE000B28A368BBA843E89C289468497B0FB1F3A +:105EF000E78080BA0DC92A8C63130A0213774B001E +:105F00005C2115CF93E727012302FC008DEC631C75 +:105F10000902639A090205E8ED9B2302FC00832B2A +:105F20008C0363910B08B250225492540259F249E7 +:105F3000624AD24A424BB24B224C45618280F59B69 +:105F400093E70701D1B793E747002302FC0001CC98 +:105F50001C484146A2852324FC0213058C0197A00E +:105F6000FB1FE780403D63930B02D5D80325CC028D +:105F700009C597A0FB1FE780E019F145268597A08A +:105F8000FB1FE78080472326AC0251BFE30909F8D5 +:105F90000325CC0209C597A0FB1FE780A017F14598 +:105FA0004A85F1BF9DC483A70B0299EB9165938548 +:105FB0003571714597A0FB1FE780C00823A0AB0295 +:105FC00003A50B0219C57146A68597A0FB1FE780A4 +:105FD00080366388090283A74B0299EB916593850C +:105FE00025715D4597A0FB1FE780C00523A2AB028A +:105FF00003A54B0219C55D46CE8597A0FB1FE78020 +:1060000080331DC483A78B0299EB9165938515712D +:10601000514597A0FB1FE780E00223A4AB0203A534 +:106020008B0219C55146A28597A0FB1FE780A030BF +:106030002254B2509254F249B24B224CCA865A862C +:106040000259424BD6855285D24A624A45616FF069 +:106050002FE7011126CA52C406CE22CC4AC84EC62A +:106060002A8AAE8497B0FB1FE78000A335C1AA89B6 +:10607000394597A0FB1FE780401C2A8431C9B737F8 +:10608000002003C987146314090003C9090093079A +:10609000000D1EA0AD473CA0938569001305340098 +:1060A000194697A0FB1FE780002993F7140085800D +:1060B00085885CA444B423154401A2856244F2405F +:1060C000D244B249224A4A85424905616FC0DFFE87 +:1060D000F2406244D2444249B249224A0561828078 +:1060E00001114EC652C456C206CE22CC26CA4AC898 +:1060F000AA8A2E8AB28997B0FB1FE780E0992DCD3E +:106100002A891305C00297A0FB1FE78000132A8489 +:1061100025C5B737002083C4871499E0834409005C +:106120009307000D1EA0E9473CA0930569001305E5 +:106130003400194697A0FB1FE780E01FD285231586 +:1061400054011305C400414697A0FB1FE780A01E21 +:10615000CE851305C401414697A0FB1FE780A01D13 +:10616000A2856244F2404249B249224A924A2685B7 +:10617000D24405616FC05FF4F2406244D2444249A8 +:10618000B249224A924A05618280411122C43734C1 +:106190000020130404DC084006C619C597A0FB1FA5 +:1061A000E78040F723200400B2402244410182806E +:1061B000011106CE22CC26CA4AC82EC697B0FB1FB4 +:1061C000E780808D31CDB245B737002003C98714F1 +:1061D0000CD5AA846314090003490500414597A022 +:1061E000FB1FE78080052A8405CD9307000D1EA1C3 +:1061F000A5473CA1DC30938564001105A30FF5FE93 +:10620000194697A0FB1FE78000139C54A285F2401B +:106210005CC46244D2444A85424905616FC0DFE9EB +:10622000F2406244D2444249056182801D71A2CC91 +:1062300086CE2A842EC697B0FB1FE780E08515C95D +:1062400054251147AA8749456391E6029C5FB245F0 +:1062500091C3EC2BB71605002308B100938606DF27 +:10626000100889452285EF90802CF6406644256110 +:1062700082805145DDBFB737002083C70726054719 +:10628000FD1793F7F70F637AF704894721CA411185 +:1062900022C426C24AC006C6B2842E8997A0FB1F1C +:1062A000E780807F2A84D14715C1630609005C21FD +:1062B00093E727005CA14146A6851305840197A0BA +:1062C000FB1FE78040079C481CD48147B240224412 +:1062D000924402493E8541018280C9473E858280C1 +:1062E000797122D406D62A842EC697A0FB1FE78098 +:1062F000A07A01CDB2452285230EB1006C08EF9043 +:106300008028B2502254456182805145DDBF6F80A4 +:10631000B033C1671387E7FF6395E502B737002005 +:1063200083A7C7DC91EB494582804945B2402244AE +:10633000924402494101828003A30700E30503FE62 +:106340000283411122C426C24AC006C6FD172A890B +:106350002E84B284639AF502B737002083A7C7DC86 +:1063600091CF9C4381CF829711E9B73700202380DA +:1063700027DFB7370020A38097DE4DBFA6854A856B +:10638000EFE09FD245F5D5B72E8597A0FB1FE7809C +:10639000A07041DD1C210D45E39A27F92285224496 +:1063A000B2400249A685924441016FC03064930710 +:1063B000100463E1A7064111C16722C406C626C2C4 +:1063C000FD172A8409456381F502C547AE8463122F +:1063D000F4022E85EFC010693735002013058511B2 +:1063E00006042A9406A00145B24022449244410189 +:1063F00082809307A0036316F4002E85EFC0D05F60 +:10640000E1BF9307B003E319F4FC13F5F50FEFC0F8 +:10641000F05ED9B709458280011106CE2AC6EFE0A9 +:10642000BFCAEF20C06DEF10F012EF70E20DB7376A +:1064300000209387870F130700F0BAA32382070079 +:10644000B737002032451387C725FD5634A3F240E5 +:10645000238EA724954505616F70604375719397EE +:1064600005014AC106C722C526C3CEDED2DCD6DA74 +:10647000DAD8DED6E2D4E6D2EAD0EECEC1872E89D3 +:1064800063D30754B734002003C5C425B7390020AF +:10649000373B002097A0FB1FE78080DF2A8426CCB3 +:1064A000B73A0020B73B0020373D00209384890F86 +:1064B000B73C00201DE021653345A900BA402A44BD +:1064C0009A440A49F659665AD65A465BB65B265C28 +:1064D000965C065DF64D496182801C201307200AF8 +:1064E000639BE70003CA34002A20C1652286FD159C +:1064F000EFF04F8EA1AA62471307C725034A270072 +:1065000013071009639FE7141C3015476391E702D6 +:106510002285EFF0EF902285EFC03FB5E24703C53B +:10652000C72597A0FB1FE780A0D62A8461B739470B +:106530006391E7164A208567A5076315F5040C44A7 +:1065400003CC0500631D0C00850591C9373500207B +:1065500019461305051197A0FB1FE780C0DD03C78F +:10656000890F8547631FF70E63080C00238C090E03 +:106570006285EFF04FBE45B78947238CF90EEFC017 +:10658000B04951BF8967138727006318E504032CBE +:10659000840063080C0C83470C0099EB83472C00A4 +:1065A00003471C00A207D98F9EA483473C009CB0E0 +:1065B00003C7890F89476316F70A83470C0091C701 +:1065C000238C090E03450C006DB78C308A248D474F +:1065D000238CF90EEF70602EF5B795076317F50061 +:1065E0001C448823EFF0CFE43DB7F9771387A7FF6A +:1065F0002A9742074183914663F1E6049387A7FCFB +:10660000AA97C207C18371476371F702896713872D +:10661000B7006310E50483A78ADCE38E07EE9C4392 +:10662000A285E38A07EE829715A0370700181307A3 +:10663000F770B357F700858BB9C783270BDDE38C61 +:1066400007EC9C43E38907EC22858297E31505EC70 +:1066500009A81387C700631FE5001C449C23E38C33 +:1066600007EA9307F00FE308FAEAA2855285EFC024 +:10667000BFA46DB5B9076318F50083A7CCDCE38C24 +:1066800007E8DC4371BF896793871704E305F5F8D2 +:10669000C9BF3D476397E7044A2089671387D7003E +:1066A000E30DE5FC13879701E309E5FCCD07E31A49 +:1066B000F5FAFA20C167FD17631DF70083A7CCDC4C +:1066C000E38B07E4DC43E38807E40965A2854D0515 +:1066D00099BFB737002083A747DDE38E07E29C43CD +:1066E000DDB71307E003E39EE7F63C200547639B15 +:1066F000E7107C2037370020930D07DC6397070EE7 +:1067000083A70D00E5C303CC0700214A68301307B7 +:106710008400BA853ACEEFE03FDE68B0130640024F +:106720008145681097A0FB1FE78080C73C30724707 +:106730001946A307F1027C30BA854818A309F10273 +:1067400097A0FB1FE78020BF5E207010D285231822 +:10675000F1027E2462852313F1041E282314F10420 +:106760003E282315F1045C282306F104FD57A306F7 +:10677000F104FD572317F104EFF00FBE3C307247D0 +:106780008DE3DD47835804010358E40074304E2044 +:106790003EC23E283EC00546D2876285EF80D00CBF +:1067A00028B083A70D0081C71145EFF01F9E03C5D8 +:1067B0000BDE138C0BDEE30005D683451DDEEFE018 +:1067C000BF8EE30A05D43430930710036389F600C3 +:1067D000522083450C0052873685EFE0FFA423004A +:1067E0000C0015BB03CC34000DB783270BDD03CCA5 +:1067F0003400114A81DFDC43E38A07F0814501451B +:10680000829729B7130790026390E7087C203737F7 +:106810000020930D07DCA9E783A70D009DCF03CCD3 +:106820000700214A683093772500B9C70589130707 +:10683000440168B02286D28562853ACEEFF0CFB1AE +:106840003C307247B9FFDD478358C4010358A401A7 +:1068500074304E203EC27E2C35BF03CC3400D1B7FD +:1068600083270BDD03CC3400114ACDDFDC43DDDBB5 +:106870008145014582977DB713078400BA853ACEDA +:10688000EFE09FC7724775B70947639CE70083A78E +:106890008ADCE38207C8DC43E38F07C62285829740 +:1068A0009DB92D476398E70083A78ADCE38507C677 +:1068B0009C47DDB70D476396E70022868D454A2049 +:1068C00005B91947639CE7049305A102130510312C +:1068D000EF60724B6C1013052031EF60D24A7220CA +:1068E0008357C1024A2063E7C70016240357A10259 +:1068F00063F7E60093050002EFC0D01529B9637372 +:10690000E6007AA063F3D7001EA45A24362412248A +:106910006E2001488147EFC0B013F5BE1D47E382EA +:10692000E7D431476395E7002286B14549BF354733 +:106930006398E70083A78ADCE38F07BCDC47A9BF25 +:10694000130740026396E7002285EF00407EE1B620 +:10695000130750026398E70083A78ADCE38D07BA28 +:106960009C4B1DBF41476396E7002285EF009006D0 +:106970005DB645476396E7000145EF00701561BEBF +:106980004947639DE70083270BDDE38C07CCDC439D +:10699000E38907CC814505458297E1B14D47639C6A +:1069A000E70083270BDDE38E07CADC43E38B07CACE +:1069B000A2850945D5B713076002E394E7CA22868A +:1069C00093056002EDBD93F7150089CFB73700201E +:1069D00083A787DC89C7DC4399C3014582971345A8 +:1069E0001900E9BC93F7250091CFB737002083A7A2 +:1069F00007DD91C7DC4381C7814505458297134573 +:106A000029006DBC93F745000145E38907AAB73714 +:106A1000002083A747DC373400201304840F89CF7C +:106A200085475CA0B737002083A707DD91C7DC430B +:106A300081C781450545829748446C10EF90801DC1 +:106A40006810EFF00F9AB737002083D7A71381CFD4 +:106A5000130600643386C702B737002003C5C72575 +:106A60009145EFC07FB71345490089BC011122CC85 +:106A70002A84554506CE26CAEFF0CFBCAA8413055A +:106A80004002EFF02FBC2AC613055002EFF08FBB77 +:106A9000AA86228562443246F240B3359000D24441 +:106AA00005616FC01003397122DC06DE8D472E842C +:106AB000631AF500BA259625F2212830CE21EFE0A1 +:106AC000DFF001A889671387D700631DE504BC21A7 +:106AD00099E78547F25062543E85216182803734C0 +:106AE0000020832504DCF5D5DC87BC314808194635 +:106AF0009105A309F10097A0FB1FE780C0839307CE +:106B000000F03ED6832704DC231801002313010282 +:106B100002D4882370008145EFF00F840545EFF023 +:106B2000CFE645BF1387E700E305E5FA1387370192 +:106B30006319E500A82151DD0147814601468145E1 +:106B4000BDBFE507E307F5F8B1476319F500B737AF +:106B5000002003C5B70FEFE09FF2A5BF93076002C7 +:106B60006319F500B737002003C5B70FEFE0BFF595 +:106B70008DB741677D178147E31EE5F4D831C947DA +:106B8000E319F7F4F625D2250A24AE25EFC0007CE0 +:106B90002DC55D45EFF00FAB3335A00068844C2068 +:106BA0002A203000EF8040083C8485F79305A1003F +:106BB00013051031EF60321D6C0013052031EF60BA +:106BC000921C3C851A246373F7001EA43C863A2469 +:106BD00063F3E7003EA41E243A246373F7003EA447 +:106BE0002A20EF30E10F7A24562432240E242A2062 +:106BF00001488147EFC0C063E9BD85477C8445B744 +:106C0000B73700201387C72574331307F00F638F3E +:106C1000E6062DCD411122C426C24AC006C6AA846A +:106C200068251389C72551059790FB1FE780E06011 +:106C30002A8439C59307000D1EA1D9473CA1DE2047 +:106C40005EA1FC207CA1FC307CB19C241CA5DC3422 +:106C50005CB5F02470A515C28C48510508C8979002 +:106C6000FB1FE780406DA285224403457900B240B6 +:106C70009244024941016FC02FC423280500E5B7A3 +:106C8000B240224492440249410182808280C1671D +:106C90001387E7FF639DE500B737002083A707DC74 +:106CA00095C39C230D47639DA7006FC0A057FD1798 +:106CB00049476397F500B737002083A707DCF5F74E +:106CC0003A8582804947EDBF397122DC06DE26DA3B +:106CD0004AD84ED652D456D25AD05ECE62CC182163 +:106CE00085472A846309F7041025930695009305C8 +:106CF000E1000545EFE0CFE4814711C11C211420DC +:106D000011476382E60437370020032747DE8D46AC +:106D10001833630AD70285CB1DC70DE10145F25038 +:106D20006254D2544259B259225A925A025BF24BDF +:106D3000624C2161828081470145D1B78546631E3F +:106D4000D7088D8BE1DF0830130A2400D285EFE0ED +:106D5000AFFA3739002008B0832789DE2A8B130960 +:106D600089DE8149C1C3B73A00209304F00F83C77D +:106D70002ADE138C2ADE63FAF90203250900939BAD +:106D800049005E951C21638197061C31639E67054F +:106D90001946D28509059790FB1FE780C06A29C56F +:106DA000832409001820DE94B1E414209147E3877E +:106DB000F6F683270900BDD303460C00014793056F +:106DC000F00FE30DE6F4BE84C10703C507FF6301BE +:106DD000B50C05071377F70FEDB78946E310D7F425 +:106DE000858B8DB7054525BF850993F9F90F41B707 +:106DF00088C4C9A891476312F706C8440DC11C2472 +:106E00001021630EF604182091476318F706C84452 +:106E100019C59790FB1FE780E02F23A604000824E4 +:106E200091659385E57105059790FB1FE7808021AB +:106E30000DC118209147631BF704C8C41C24930597 +:106E400094000505A30FF5FE10249790FB1FE78023 +:106E5000804E08243335A000D9B5884445B7930542 +:106E6000940005059790FB1FE780E05D8547E31CD4 +:106E7000F5F85545EFE01FFDADA088444DD1979042 +:106E8000FB1FE780202923A4040051BF88C47DB7DD +:106E900094A01C30D285138524009CB0194697908D +:106EA000FB1FE7804049082491659385F57105052E +:106EB0009790FB1FE78000190DC118209147E31937 +:106EC000F7F2C8C41C24930594000505A30FF5FE32 +:106ED00010249790FB1FE78000461C2481F70820B0 +:106EE0007D151335150025BD397122DC26DA4ED605 +:106EF00052D406DE4AD856D25AD05ECE2A8493099E +:106F000025000831CE85B7340020EFE0EFDE08B071 +:106F1000938444DE9C400D472A8A9C336390E704A7 +:106F200037390020832789DE814A130989DE63818E +:106F30000714B73B002003C72BDE93970A01C183D8 +:106F400003250900138B2BDE63E0E70C83460B005F +:106F50000327090081471306F00FBDAAF1D3144C93 +:106F600070389305E1000545EFE08FBD15C99840E5 +:106F700085461C2118336310D7028D8BD5F301454C +:106F8000F2506254D2544259B259225A925A025B78 +:106F9000F24B216182808946858BE313D7F8F9BFD4 +:106FA0001C2011476385E7002D47E39AE7FCB734BF +:106FB000002083A784DE938484DEF1D3814A0149D3 +:106FC000B73B002005A88840139B4A001C205A9517 +:106FD00018216310F7021C31639D47011946CE85C5 +:106FE00009059790FB1FE780004601C503A904002F +:106FF0005A99850A03C72BDE93970A01C183E3E4FC +:10700000E7FCE31F09F0A5BF93944A0026951821D9 +:107010001C206318F70A1C316395470B1946CE856F +:1070200009059790FB1FE780004241CD83270900A7 +:107030001147BE941C206385E7002D47639CE7023F +:1070400003AAC4007C3803460A006308F60252858E +:107050009790FB1FE780000C683891659385E57178 +:1070600005059790FB1FE780E0FD1DE5E38004EE3A +:10707000054539B703AA8400F1B70C4C13051A0073 +:107080009790FB1FE780203C8547E312F5FC5545B0 +:10709000EFE05FDB61DDE5B51C2011476385E700AC +:1070A0002D47639EE700C8C47C380505A30FF5FE95 +:1070B00070380C4C9790FB1FE780E02745BF88C4D1 +:1070C000E5B7850A8DBDBA844107834507FF638A0A +:1070D000C5008507C207C183E3E7D7FE51BF88C457 +:1070E00025A81C20CE85138524009CA01C301946A1 +:1070F0009CB09790FB1FE7800024683891659385CA +:10710000F57105059790FB1FE780C0F335D1182076 +:107110009147E316F7FCC8C47C380505A30FF5FEBC +:1071200070380C4C9790FB1FE780E02091B701115D +:107130004AC8373900201309C9250347790006CE0C +:1071400022CC26CA4EC69307F00F630EF70625CD54 +:10715000AA8461459790FB1FE780200E2A8425C5ED +:107160009307000D1EA1D5473CA1BC309389840034 +:10717000CE853CB1DE205EA1FC207CA1E830EFE0B2 +:10718000AFB768B0CE851305840019469790FB1FF2 +:10719000E780601AFC24A285034579007CA49E2820 +:1071A0001EA8BC283CA8BC383CB8DC285CA8DC384D +:1071B0005CB8FC287CA86244F240D2444249B249FF +:1071C00005616FB07FEFF2406244D2444249B24958 +:1071D00005618280411122C4373400201304C42584 +:1071E000783006C626C29307F00F6309F7021DC563 +:1071F000AA8419459790FB1FE7802004AA8519CD22 +:107200009307000D1EA1DD473CA1DE20B240924451 +:107210005EA16830224441016FB01FEAB2402244AF +:10722000924441018280011122CC3734002083270F +:1072300084DE06CE26CA4AC84EC652C48DC3130485 +:1072400084DE2E8AAA840149084063129902630CE5 +:107250000A049790FB1FE780E0EB23200400F24034 +:107260006244D2444249B249224A0561828093195C +:107270004900B3073501884709C99790FB1FE7808C +:1072800060E91C40CE9723A407001C40CE97C84756 +:1072900009C99790FB1FE780E0E71C40BE9923A631 +:1072A0000900050955B745DD1396440081459790BF +:1072B000FB1FE780E00E144081477D5613F7F70F60 +:1072C000E37F97F813974700369710A38507FDB71C +:1072D00079714AD037390020832749DE06D622D477 +:1072E00026D24ECE52CC56CA5AC85EC6C5C7B73A89 +:1072F0000020AA89130949DE938A2ADE014405E1A8 +:10730000B737002083A687DE99CA03C60A002A84FD +:1073100081479305F00F13F7F70F6368C70813153C +:10732000340021059790FB1FE78020F1AA8411E922 +:1073300021459790FB1FE78040F0AA8421C10144BA +:10734000CD49930700FD9CA08547A3803401BCA0D4 +:10735000A0B045C49389840023A23401014A373B7D +:107360000020930BF00F83C70A006373FA0029E82B +:1073700083270900A6858823EFB01FD403C50A0020 +:1073800081455535032509009790FB1FE78080D87C +:1073900023200900B250225492540259F249624A01 +:1073A000D24A424BB24B45618280139747003697D1 +:1073B00018236305B70005041374F40F8507A1BFF4 +:1073C00083278BDE93154A00BE959C216383770348 +:1073D0002380F9009C31138529007D14A380F900D6 +:1073E000194689051374F40F9790FB1FE780A0F4EA +:1073F000A109050A137AFA0FBDB723A204008DBFB5 +:10740000B737002083A747DEB1C7411122C406C6A3 +:107410002A841DE10945EFE0FFA22A8601C9B7379A +:10742000002003C5C7258545EFC00F9B0545EFF03C +:10743000EFE32A84054519C8B737002003C5C725DF +:107440008545EFC06FC1228561350545B2402244B4 +:10745000410182800145828089679386B700631568 +:10746000D5009C45882369BF9386C7006317D50064 +:107470009C458546882319C9FDB793861704E30206 +:10748000D5FE938727048146E304F5FE3685828086 +:10749000797106D622D426D24AD04ECE52CC56CAC4 +:1074A0005AC85EC662C479C53C31AA8985C74041C5 +:1074B00015C05945EFE01F99931A850193DA8A4167 +:1074C0000149373A0020130B000DB54B83C7390033 +:1074D000636EF900B250225492540259F249624A42 +:1074E000D24A424BB24B224C4561828083078402D0 +:1074F00063C9570783274ADE130C4ADEBDC32285C2 +:10750000EFF08FFC39CD082451059790FB1FE780E1 +:10751000C0D2AA8439C523106501230175011C203E +:107520001946930524003CB18307840215057CA10C +:107530001C30A30FF5FE9790FB1FE780C0DF1024DF +:10754000D0A415C61385440188C89305940097906C +:10755000FB1FE78040DE83270C00A6858823EFB061 +:10756000BFB50509130494021379F90F85B723A851 +:107570000400D5B7B737002083A747DEA1DF893BDA +:107580002254B25092540259F249624AD24A424BB2 +:10759000B24B224C014545616FF04FCD797106D653 +:1075A00022D426D24AD04ECE52CC56CA5AC85EC633 +:1075B00062C45DCD3C31AA8985C7444195C0594517 +:1075C000EFE05F88931A850193DA8A410149373BDE +:1075D0000020930B00FD414C83C73900636EF90016 +:1075E000B250225492540259F249624AD24A424B52 +:1075F000B24B224C456182808387F40063C55707F4 +:10760000130A4BDE83270A00B9CF51459790FB1F21 +:10761000E780A0C22A8421C923007501A3000500C8 +:10762000230185019C201946938524003CB1838762 +:10763000F40015055CB59C30A30FF5FE9790FB1F79 +:10764000E78060CF9C24938594001305C4003CB46C +:1076500019469790FB1FE78000CE83270A00A2857A +:107660008823EFB07FA50509C1041379F90FADB7E1 +:10767000B737002083A747DEA5D799392254B250E7 +:1076800092540259F249624AD24A424BB24B224CBE +:10769000014545616FF08FBD5D7186C6A2C4A6C26B +:1076A000CAC04EDE52DC56DA5AD85ED662D466D2F2 +:1076B0006AD06ECE630E05263C31AA848DCB832A18 +:1076C000450063860A025945EFE0CFF7931785011D +:1076D000E1873EC60144B7390020130A000D054C6E +:1076E000B54C130D00FDC14DB8306361E402B640E6 +:1076F000264496440649F259625AD25A425BB25B1A +:10770000225C925C025DF24D616182800387CA0057 +:10771000B2476348F71603A749DE138949DE6302BF +:10772000071683CB0A0013F70B014DCF4D47639E1D +:10773000EB0623800A005685EFF00FFB6303051468 +:1077400003C70A00914763E3E7146319870D5145A6 +:107750009790FB1FE78060AE2A8B6304051223001D +:10776000A501A30005002301B50183C60A0019463F +:1077700093852A0034B18386CA00150554B583C6A3 +:107780001A00A30FD5FE9790FB1FE780C0BA83C6EF +:107790000A01194693851A01A305DB001305CB00E6 +:1077A0009790FB1FE78020B9F9A055476398EB003D +:1077B00005472380EA00A38B0A00B5BF7547E3891C +:1077C000EBFE49476396EB0009472380EA00A5B723 +:1077D00041476394EB000D47CDBF6D47E39DEBF44C +:1077E0001147E5B713F78B0019C32D47F9BF13F6FF +:1077F0001B0013F74B0011C619C315475DBF214786 +:10780000E9B713F62B0011C619C325475DB7194711 +:107810006DBF19C3294755BF1D4745BF03C57A0131 +:1078200051059790FB1FE78040A12A8B39C923108F +:1078300045012301950183C60A00194693852A0054 +:1078400034B18386CA00150574A183C61A00A30F3C +:10785000D5FE9790FB1FE78000AE03C67A01230692 +:10786000CB0001CA13054B012328AB0083A58A0175 +:1078700005BF23280B0083260900DA858822EFB094 +:10788000BF830504F10A1374F40FB9BD03C57A016F +:10789000130505029790FB1FE780209A2A8B75D16C +:1078A000C9473CA12310450103C60A0093F60B0605 +:1078B00093852A00D18E34B183C61A001946150566 +:1078C000A30FD5FE9790FB1FE780E0A683C68A0032 +:1078D000194693851A01A305DB0083C69A00130598 +:1078E0003B012306DB0083C6AA00A306DB0083C698 +:1078F000BA002307DB008386CA00A307DB0083D618 +:10790000EA002318DB0083C60A012309DB009790F5 +:10791000FB1FE78040A203C67A01A30CCB0011C66F +:1079200013050B02232EAB0091B7232E0B00A1B73A +:10793000B737002083A747DEE38B07DAEFF05F99C4 +:107940002644B64096440649F259625AD25A425BDE +:10795000B25B225C925C025DF24D014561616FF0A9 +:10796000EF90B737002083A747DE9DC798238D4748 +:107970006315A702B737002003C5C7254111854508 +:1079800006C6EFB07FED13050003EFF07F94B24021 +:10799000014541016FF08F8DC9473E858280797125 +:1079A0004AD037390020130949DE8327090006D65B +:1079B00022D426D24ECE6398070E3734002013040B +:1079C000C4255820C947298B5DC79165AA84938532 +:1079D000D57111459780FB1FE780C0662320A90061 +:1079E000CD4751C978309307F00F6314F7009C20FE +:1079F0007CB01146A6859790FB1FE780C093930546 +:107A000031001305F041EF40E20AB73700209387B9 +:107A1000870FA02398813334800011C30904130514 +:107A20001002EFE02FC21379F50F937719009379C5 +:107A30004900B1CB1545EFE0EFC0BC206884194583 +:107A40005C82EFE02FC06886638E0900BC201305BE +:107A50002002DC82EFE00FBF688513053002EFE003 +:107A60006FBE6887AC307C00380054004A8622859F +:107A7000EFB0F005AA87B250225492540259F2494D +:107A80003E8545618280E147E38709FEBC201305FE +:107A900020025C82EFE00FBB688413053002EFE048 +:107AA0006FBA6886C1B7C547F9B7757126C3B734D1 +:107AB000002022C506C74AC1CEDED2DC9384C4258D +:107AC000DC204944A18B63810724B737002083A7BA +:107AD00047DE4144639A0722AA89EFE05F839C2432 +:107AE00055446373F522B734002083A704DC26894C +:107AF0004544639B072091659385C571294597800F +:107B0000FB1FE780205423A0A4DC4D44630E051E18 +:107B10002946CE859790FB1FE780E0811305600220 +:107B2000EFE04FB2137AF50F93775A006144638DFB +:107B3000071C13060003814588009790FB1FE78010 +:107B4000208693771A0093692A000144B9CF4145F2 +:107B5000EFE04FAF2316A1043D45EFE0AFAE231990 +:107B6000A1043545EFE00FAE231CA1043945EFE039 +:107B70006FAD231FA1042145EFE0CFAC2312A10676 +:107B80001D45EFE02FAC83A704DC2315A1069C3331 +:107B9000638507182D45EFE0EFAA2310A1043145B6 +:107BA000EFE04FAA2313A10405441305C002EFE040 +:107BB0006FA9981893171400BA97239EA7FC130572 +:107BC000B002EFE02FA8930484009C188604BE94B2 +:107BD0002399A4FC13059002EFE0CFA6239CA4FCFC +:107BE0001305A002EFE00FA6239FA4FC130580025B +:107BF000EFE04FA5930404019C188604BE94239AD9 +:107C0000A4FC13057002EFE0EFA3239DA4FC137AFC +:107C10004A0063040A0813056003EFE0AFA20504FD +:107C20009C1893141400BE94239EA4FC13055003C7 +:107C3000EFE04FA1130A84009C18060A3E9A23190C +:107C4000AAFC13053003EFE0EF9F231CAAFC1305E9 +:107C50004003EFE02F9F231FAAFC1305E002EFE093 +:107C60006F9E41049C1806043E94231AA4FC13053D +:107C7000D002EFE02F9D832709DC231DA4FC9C3359 +:107C8000C5C713051003EFE0EF9B2398A4FC130571 +:107C90002003EFE02F9B239BA4FC832709DCA83360 +:107CA00093854700EFD07F812AD69305F103130512 +:107CB000F041EF303260B73700209387870FAC2355 +:107CC0000347F1033256B335B00011C3890583264B +:107CD00009DCFC009308A106A8223EC893072105F1 +:107CE0003EC6BC083EC49307E1053EC2DC103EC060 +:107CF000130861049C004E879106EFB0C05D2A8492 +:107D000001C50D45EFE06FC82285BA402A449A4468 +:107D10000A49F659665A496182802545EFE08F92FB +:107D20002310A1042945ADBD1305F002EFE08F91AA +:107D30002398A4FC13050003A9BFB737002083C70D +:107D400007260145A18B89C7373500201305451B40 +:107D50006FD02FD3B73700207D57238107DEB73789 +:107D60000020A381E726B737002023A407DE37775A +:107D70000400B73700201307874523A207DEB73773 +:107D8000002023A0E71A377704009387071A130708 +:107D90000749D8C3377704001307C75998C73777FF +:107DA000040013078769D8C737770400130707C093 +:107DB00098CB37770400B73700201307E7C823AA0A +:107DC000E71A377704009387471B130767AAD8C3BE +:107DD0008280411122C437340020130424DE26C2DD +:107DE000AA840820854506C6EFF0EFC3B737002008 +:107DF00083C70726A98BBDC73735002004A013050C +:107E0000051AB7340020EFD02FC7938484DE9C403E +:107E100099C74D45B24022449244410182800820D6 +:107E200019E10145C5BF91659385B571120597802C +:107E3000FB1FE780202188C069DD102081451206E4 +:107E40009780FB1FE780C055142090408147FD5567 +:107E500013F7F70FE377D7FC1397470032970CA37C +:107E60008507FDB7014523000400EFD0EFC055BFE3 +:107E7000411122C437340020032544DC06C619C54D +:107E80009780FB1FE7800029232204DCB2402244B4 +:107E90004101828001111305700306CEEFD09FFAD5 +:107EA0002AC613058003EFD0FFF92AC413059003F7 +:107EB000EFD05FF92246B245F240AA86054505613A +:107EC0006FB020405D711305D00386C6A2C4A6C260 +:107ED000CAC0EFD03FF72A841305C003EFD09FF646 +:107EE000AA841305E003EFD0FFF52A891305F003F8 +:107EF000EFD05FF58A871377F50F9376F90F13F6B6 +:107F0000F40F9375F40F0545EFB0E03DB6402644FD +:107F10009644064961618280757122C5373400201C +:107F2000832744DC06C726C34AC1CEDED2DCD6DABC +:107F3000DAD8DED6E2D405456389070E9305F1054C +:107F40001305F041EF3012379305F1051305F041A9 +:107F5000EF305236B73700209387870FBC23034793 +:107F6000F105B337F00011C38907032744DCBEC60F +:107F7000283393054700EFD04FD4032744DCAAC42D +:107F80000D452C23AEC2EFD0FFEBAAC01145EFD0B8 +:107F90007FEB032444DC2ADE65453824034CB4001F +:107FA0003ADCEFD03FEAAA846945EFD0BFE92A89DD +:107FB0007145EFD03FE9AA896D45EFD0BFE82A8A25 +:107FC0007545EFD03FE8AA8A7945EFD0BFE72A8B05 +:107FD00013050004EFD01FE7AA8B13051004EFD0A0 +:107FE0007FE6E2042648B6476257F25606469645B3 +:107FF0001375F50F93FBFB0F137BFB0F93FAFA0F2F +:10800000137AFA0F93F9F90F1379F90FE1842AD053 +:108010005ECE5ACC56CA52C84EC64AC426C262C0A8 +:10802000930844000545EFB0A024BA402A449A447E +:108030000A49F659665AD65A465BB65B265C4961D0 +:108040008280011122CC06CE26CA8D472E84631A67 +:10805000F504B831B7340020E947CA219384840F6E +:108060006315F700FE206389A7049790FB1FE78044 +:10807000A0A219C17E207EA53A24162472204E208B +:108080002830EFD09F945A20FE206309F7008547DF +:10809000F2406244D2443E8505618280FD57FEA0D5 +:1080A000FDB78967CD07631CF500BC2131476385A7 +:1080B000E7004547E39DE7FCEFD0AFA3C9BFB14759 +:1080C0006319F500B737002003C51726EFD03F9B93 +:1080D0007DBF930760026319F500B737002003C521 +:1080E0001726EFD05F9E65B741677D178147E31183 +:1080F000E5FAD4314947E39DE6F8CC212A20300047 +:1081000023140100EF60502D59B7411122C43734B8 +:1081100000208347C4DE26C206C64AC01307E00F0C +:10812000AE846382E7041307F00F1304C4DE638494 +:10813000E70211459780FB1FE780201009CD9307C8 +:1081400000FD1CA189473CA1854704B13CB1AA852B +:108150000820EFA07FF6F9571CA0B24022449244B9 +:108160000249410182802A8911459780FB1FE780DF +:10817000C00C65D5930700FD1CA189473CA104B143 +:10818000A30125012244B7370020B240924402499E +:10819000AA8503C5D7DE41016FA01FF279714AD0CD +:1081A00037390020832749DC22D406D626D24ECE8A +:1081B00052CC56CA4544C5EBB73400209387C4253A +:1081C000DC234944958BC5C3B73700202E8A9165BF +:1081D000A386A7DEAA899385757131459780FB1F19 +:1081E000E78040E62322A9DC4D4435CD230035014C +:1081F000A30005002946D28509059780FB1FE7806B +:108200008013832749DC9146B82363E9E60835E704 +:108210004D47B8A3B82313670701B8A393057100AE +:108220001305F041EF3012099C83F1E7B7370020C6 +:1082300003C7A70F8D476310F70CEFD08FB52C0045 +:10824000EF70501D2800EFD0DF994545EFD09FBF5C +:10825000014411C9130600643306C50203C5C425D1 +:108260009145EFB06FB72285B25022549254025913 +:10827000F249624AD24A4561828085466314D7003A +:10828000754741BF89466314D700494759B78D46A2 +:108290006314D7004147B5BF5547A5BF9546CA8A65 +:1082A000630DD70099466315D7000947B8A331A0DD +:1082B0001D466312C702238107006545EFD09FB8B2 +:1082C0009307F007E30CF5F403A74ADC3C2393E79C +:1082D00007043CA3A1B721466314C7000547F9B7BB +:1082E00025466314C700B4A3C9BFA9460544E31CCF +:1082F000D7F6114765BFEFF03FC22A842DD5EFF0C6 +:108300003FB795B7011126CAB734002083A744DCD4 +:1083100022CC06CE4AC84944B9C39C230D4463907D +:10832000A704373900200345C9258945EFB0CFD2CE +:108330000345C925B73700209145239807DEEFB0E4 +:10834000AFD183A744DC0147814680B31306F10017 +:10835000854785450145DC87EFA070762A84228514 +:10836000F2406244D244424905618280011106CE46 +:1083700022CC26CA4AC88547631AF506373400203E +:10838000130404DF1E20B9C7373700200347C70F87 +:1083900031E31307B003636BF702B734002003C562 +:1083A000C4258945EFB04FCB12209307006403C565 +:1083B000C4253306F6028945EFB00FA2231004004E +:1083C000F2406244D244424905618280938747FC6F +:1083D0001EA0FDB7B737002083A747DCF5D3624462 +:1083E000F240D24442498823056129BFB7340020B6 +:1083F00083A744DCF1D7373700201309C72583470B +:108400004900918BD5DF89476310F5062D452EC6AF +:108410009780FB1FE78060E22A845DD1B245930715 +:1084200000FD1CA1E547A30005003CA1BC311505DA +:108430001946230FF5FEDC219505A30FF5FE978065 +:10844000FB1FE78040EF034559009307F00F6315CA +:10845000F50083A744DC8823A2856244F240D2441D +:10846000424905616FA05FC50345C7258945EFB047 +:10847000AFBE6244F240D2444249B737002023984D +:1084800007DE05616FF0DF9EB737002083C7072640 +:10849000958B89CFB737002083A7C7DF91CBB7373C +:1084A00000200547238EE71A6FF0DF9E4945828042 +:1084B00041458280B737002085450145238E071A44 +:1084C0006FA0B060B737002083C70726958B81CB9C +:1084D000B737002005472387E7DE6FF0BF9E494589 +:1084E0008280B737002081450545238707DE6FA0CE +:1084F000D05FB737002083C70726958B638C0712A0 +:108500009307C01C63FCC70009458280F2406244A7 +:10851000D2444249B249094505618280B7370020FB +:1085200083A747DC63880710B73700209387C7DE2F +:1085300003C807001307E00F631EE80E011122CCE9 +:108540004AC806CE26CA4EC688A313058600420531 +:10855000368932844181A5C991659385657197807B +:10856000FB1FE78020AEAA8955D1B734002003A5B0 +:1085700084DF938484DF09C59780FB1FE78080B97F +:108580001385890023A0A9002286814523A03401F8 +:108590009780FB1FE780C0E09C402286CA85884305 +:1085A0009780FB1FE78020D99C40A286F240C2A39F +:1085B0006244D2444249B249984305468D45054537 +:1085C00005616FA0504F9165938555719780FB1F92 +:1085D000E78040A7AA891DD9B734002003A504E08D +:1085E000938404E009C59780FB1FE780A0B2138540 +:1085F000890023A0A9002286814523A03401978009 +:10860000FB1FE780E0D99C402286CA85884397807B +:10861000FB1FE78040D29C40A286F240C2A3624486 +:10862000D2444249B249984305468D450545056106 +:108630006FA0B048494582809307C01C63FCA70027 +:10864000094582800945F2406244D2444249B24918 +:108650000561828055C9011122CC2A8421054EC6AC +:108660004205AE8991659385657141814AC806CE00 +:1086700026CA9780FB1FE780E09C2A8961D5B73422 +:10868000002003A584DF938484DF09C59780FB1F46 +:10869000E78040A8130589002320A9002286814590 +:1086A00023A024019780FB1FE78080CF9C40228677 +:1086B000CE8588439780FB1FE780E0C79C40C2A31C +:1086C000B737002083A747DC85CFB737002083C7A3 +:1086D0000726958B85CBB737002083A787DF91CFFF +:1086E0009843D6236244F240D2444249B2490546F7 +:1086F0008D45054505616FA0103C01478146DDB7FA +:10870000014591B7494581B7B737002083A747DCBA +:108710008DC7B737002083C70726958B8DC3B73722 +:10872000002083A787DF99C79843D62305468D4548 +:108730000545D1B701478146D5BF014582804945EE +:1087400082809307C01C63FCA7000945828009450D +:10875000F2406244D2444249B2490561828055C91F +:10876000011122CC2A8421054EC64205AE899165AD +:108770009385557141814AC806CE26CA9780FB1F52 +:10878000E780408C2A8961D5B734002003A504E036 +:10879000938404E009C59780FB1FE780A097130529 +:1087A00089002320A9002286814523A024019780E7 +:1087B000FB1FE780E0BE9C402286CE8588439780E1 +:1087C000FB1FE78040B79C40C2A3B737002083A7B8 +:1087D00047DC85CFB737002083C70726958B85CB2D +:1087E000B737002083A707E091CF9843D623624490 +:1087F000F240D2444249B24905468D4505450561DE +:108800006FA0B02B01478146DDB7014591B74945BF +:1088100081B7B737002083A747DC8DC7B737002063 +:1088200083C70726958B8DC3B737002083A707E042 +:1088300099C79843D62305468D450545D1B70147CD +:108840008146D5BF01458280494582809307C01C7F +:1088500063F4A70009458280797122D44ECE06D6F2 +:1088600026D24AD0AE892A8425C1210591654205C8 +:108870009385757141819770FB1FE780A07C2A89E1 +:10888000094563040908B734002003A5C4DF9384B5 +:10889000C4DF09C59780FB1FE780C08713058900E7 +:1088A0002320A9002286814523A024019780FB1F55 +:1088B000E78000AF9C402286CE8588439780FB1FCF +:1088C000E78060A79C40C2A3B737002083A747DC9E +:1088D000014585CFB737002083C707264945958BCB +:1088E0008DC76C001305D030EF40F249B247014507 +:1088F00093F7070F99CBB737002083A7C7DF8D45C4 +:1089000005459443D223EFA0101CB2502254925438 +:108910000259F24945618280B737002083A787DF7B +:1089200089CFD2238C43411106C69780FB1FE78075 +:1089300080A0B24001454101828009458280B7375D +:10894000002083A787DF85C7B737002003A707E08C +:10895000894719CF52230C43411106C69780FB1F4C +:10896000E780609DB24081473E8541018280894712 +:108970003E858280B737002083A787DF85C7B7375A +:10898000002003A7C7DF894719CF52230C434111A9 +:1089900006C69780FB1FE780009AB24081473E855C +:1089A0004101828089473E858280797106D622D432 +:1089B00026D24AD04ECE52CC8D4763FCA7008944C4 +:1089C000B2502254268502599254F249624A4561B6 +:1089D0008280373900200347890FC144E312F7FE34 +:1089E0009307F5FF9309890F93F7F70F8546AE8438 +:1089F0002A8403CA29001309890F63EAF6068DE168 +:108A000099452800EFC0DF89B739002003C5C92583 +:108A1000914523018900EFA03FE435E481444DB73F +:108A20001946814528009780FB1FE780609719460B +:108A30002C0026859780FB1FE780E0A049F11946AE +:108A40009305F00F28009780FB1FE780609519467B +:108A50002C0026859780FB1FE780E09E2DF11946AC +:108A6000A68528009780FB1FE780E08C71BFE31D7F +:108A7000E5F803A5C9002C00EF70C019AA8449D5F8 +:108A80002381490135BF2800EFD0AF95AA8405EDB9 +:108A9000930571001305F041EF30C2018483BDFCE2 +:108AA0008D47E31DF4F64545EFD0CFB925D9B7770B +:108AB0001800938707A03306F50203C5C925914521 +:108AC000EFA03FD2F5BD23014901DDBDB73700203E +:108AD00083C70726918B8DC33735002041111305BD +:108AE00045DF06C6EFC02FFBB240B73700207D57E9 +:108AF000239FE70E4101828001456FC0CFF9B73750 +:108B000000207D57A386E7DEB737002079572386FC +:108B1000E7DEB7370020238E071AB73700202387F8 +:108B200007DEB7370020239807DEB737002023ACD5 +:108B300007DEB737002023A007E0B737002023AEB9 +:108B400007DE37970400B7370020938787EA1307BB +:108B5000E7D598C3378704001307C736D8C33787CC +:108B60000400130787F198C737870400130747E904 +:108B7000D8C737870400130747EC98CBB7870400A2 +:108B80003737002093872704232AF7DE828041119C +:108B900026C2B734002083A744DC06C622C49DCB7E +:108BA0002A840D459770FB1FE7802069AA8501CDB7 +:108BB000930700FD1CA18D4700B13CA183A744DCB5 +:108BC0008823EFA06FCF19C42244B24092444101E0 +:108BD0006FF00FAAB2402244924441018280797121 +:108BE00052CC373A002083274ADC4AD006D622D41A +:108BF00026D24ECE56CA0149A1C703C91700B734C1 +:108C000000208547AA899384840F6305F904DC203A +:108C100005499DE70D459770FB1FE7800062AA8517 +:108C200009CD930700FD1CA19147A30035013CA18C +:108C300083274ADC8823EFA02FC8EFF06FA30549F4 +:108C4000B25022544A8592540259F249624AD24A99 +:108C500045618280B737002083A787DFD28A85E30A +:108C60000145EFD02F9E2A8601CAB737002003C5E1 +:108C7000C7258945EFA05F9683A74ADCB1A094433E +:108C8000D2239305E1000545EFC08FEB71D91C217C +:108C9000858BF9D70545EFD0EF9A9307B0032A8467 +:108CA00063FEA702B737002003C5C7255D6613061C +:108CB00006708945EFA0FFB2B7370020130444FCCB +:108CC000239887DE83274ADC094798B3DC2081C7D5 +:108CD00023820400B5B74E855D3D9DB71306006441 +:108CE0003306C50251B7411122C42A840D4506C678 +:108CF0009770FB1FE78060540DC1930700FD1CA116 +:108D0000CD473CA100B12244B7370020B240AA852C +:108D100003C5D7DE41016FA02FBAB2402244410102 +:108D20008280411122C42A840D4506C69770FB1F1C +:108D3000E780A0500DC1930700FD1CA1ED473CA1A9 +:108D400000B12244B7370020B240AA8503C5D7DE60 +:108D500041016FA06FB6B2402244410182805A2186 +:108D60000111896606CE22CC26CA13866600AA8720 +:108D70006316C7009C4701458C2301A81386860013 +:108D80006319C7009C4705458C23EFF00FB80545D4 +:108D90001DA8138696006311C702373700200327EA +:108DA00047DC01450DC39C47882369E585471CB313 +:108DB0000545EFA0E046E1BF1386A600631AC70091 +:108DC0009C478823293DF2406244D2440561828059 +:108DD00013866603E300C7FA13867603E304C7FA33 +:108DE00013868603631BC7081C453734002013070E +:108DF000E00F84238347C4DE1304C4DE638BE702E1 +:108E00001307F00F6384E70211459770FB1FE7809B +:108E1000C042AA8501CD930700FD1CA1894704B17A +:108E20003CA1A30105000820EFA00FA9F9571CA041 +:108E3000B9BFB737002003A747DC3E84014541D7BF +:108E40008DE885447D454485EFC0DFFF68861305C6 +:108E50000002EFC03FFF832744DCC8851307B10041 +:108E600084B374001306A10085450545EFA0204595 +:108E700039BF2685EFF0BFD119BF13869603E301F2 +:108E8000C7F41386E6036316C7001C4509458C2307 +:108E9000EDBD9386F603631BD7021C45882335E995 +:108EA0006C001305D030EF40026EB247414793F794 +:108EB000070FE38EE7EC9305B10013056031EF4037 +:108EC000826C88858545EFA04040D1B589661386C0 +:108ED00006046312C7041C458023B737002083C7EC +:108EE000C71B22859DE70D459770FB1FE780E03487 +:108EF000AA85E30E05E8930700FD1CA1D1473CA11C +:108F000000B1B737002083A747DC8823EFA0CF9AB2 +:108F1000BDBDD13BADBD13861605631AC7001C4508 +:108F2000882331E585450545EFA0203C8DB5938626 +:108F300026050145E319D7E89C478023B737002071 +:108F400083C7E7DE228585E70D459770FB1FE78025 +:108F5000C02EAA85E30D05E2930700FD1CA1F14791 +:108F60003CA1B737002000B103C5D7DE45B7553B5C +:108F700039BDB737002083C70726411106C6958B38 +:108F800099CB37350020130585EAEFC02FB04D454A +:108F9000B240410182800145EFC04FAF0145CDBFD6 +:108FA0009821937625009377D70F99C2936727006E +:108FB000131885011358884113F7F7076354080005 +:108FC00013E70708937685009377770F99C2936725 +:108FD00087001377050293F6F70D19C393E607028E +:108FE00094A1634508009377A50291C71C2293E7DB +:108FF000C7001CA282807DFD1C22CD9BDDBF2D45BC +:10900000631B0710882109476313E51001114EC641 +:10901000BE89DC4122CC26CA4AC806CE98339C239E +:10902000B68422075D8F42078D664187938736A0FD +:1090300032842E89630BF70A63C0E702938716A078 +:109040006307F70863CAE70A938606A0630BD70491 +:1090500023900400054559A0938766AA630EF7087C +:10906000938786B86301F70A938646A0E312D7FE7A +:10907000DC45C1C321479AA09A2318A29A232183D1 +:1090800018B2BA2338A2BA23218338B2DA2358A2FD +:10909000DA23218358B2FA2378A2FE23A1837CB27B +:1090A0002DA8C8459770FB1FE780603242054181BB +:1090B0004E86637335012A8692A04206418283253B +:1090C000C90022859770FB1FE780E02639A0DC45A8 +:1090D0009E238AA01CA2A1831CB20145F2406244D7 +:1090E000D2444249B2490561828099479EA01946FF +:1090F000F9B723900400D5B785479EA08327C90000 +:109100009C231CA0D9BFE1479EA061464DBF239080 +:10911000060005458280828083C805008947639BDD +:10912000F816DC41797122D406D626D24AD04ECE2A +:1091300052CC56CA03C817009C232E8422083368D9 +:10914000F80042088D6713580841138327A0630F66 +:1091500068102A8A3A89B684B285634C0301138762 +:1091600007A0630BE802938717A06301F80A8547FD +:1091700011A8138737A06300E80C138767AA8D47EF +:10918000E317E8FEB250225492540259F249624A5F +:10919000D24A3E8545618280484432C69770FB1FA3 +:1091A000E780E022420541819D47E36D25FDB73A06 +:1091B0000020938A7AE083C70A00B3099900B24578 +:1091C00063D43701B5477DBF48442686C2094A9516 +:1091D0009770FB1FE780201603C60A00484493D906 +:1091E000090105063306364181454E959770FB1FF0 +:1091F000E780001BB737002083A7C7E099E38147CA +:1092000051B79C438145E5DF528525A0AD47E31B5F +:1092100009F6E39916FB1C3214225844A207D58F95 +:109220001EA3B737002083A7C7E0F1DB9C43E1DB37 +:1092300085458297E9B7B737002003C707E18D4717 +:1092400031D3AD47E31009F49947E39DF6F648445E +:1092500019469770FB1FE780000EB737002083A7E1 +:10926000C7E0D1DF9C43C1DF8D4579BFB737002010 +:1092700083C5C7D88D47A18991D5AD4701F78547EB +:10928000E392F6F4182293070008E3EDE6EE5C445F +:1092900098A3B5B785473E858280B7370020411136 +:1092A00023A607E0B737002022C4238507E009443E +:1092B000B7370020A38F87D6B7370020A38307E0F6 +:1092C000B7370020238E87D6B7370020239207E0D8 +:1092D000B7370020238687D837350020B7370020DE +:1092E0002147238807E01946B73700208145130539 +:1092F00045E106C6A386E7D89770FB1FE780400AC2 +:10930000B7370020238187D83707A000B737002060 +:10931000938747D81307070598C33707E803D8C3CF +:10932000B7370020238F87D60547B7370020A38E95 +:10933000E7D6B7370020238787D837350020B737DF +:109340000020238D07E06146B737002081451305D3 +:10935000C5EB238087D89770FB1FE7806004B73781 +:109360000020A38087D8B7370020A38407E0379771 +:109370000400B7370020938707D21307E7FF98C38D +:10938000B24022443797040013078711D8C323A49F +:1093900007004101828095476302F51A797122D452 +:1093A00026D206D64AD04ECE52CCB2842E8463E466 +:1093B000A7048947630DF51463EFA7004DC5054762 +:1093C000630FE5120945B250225492540259F249F2 +:1093D000624A456182808D476304F5149147E31327 +:1093E000F5FEA1476395F508373500202146A6858F +:1093F000130545D83DAA930720046305F51663E1DC +:10940000A7029D476306F514A147E31DF5FA8547BA +:10941000639FF5041822B7370020A384E7E0F1A882 +:10942000930710086309F51493072008630DF514DA +:1094300093070008E318F5F88547639AF502B737F4 +:10944000002083C787E01387F7FFB7350020938597 +:1094500045ED12072E97920750478820A107BE9529 +:10946000EFF01FB459A89307800F63F4B70061456C +:1094700099BF373A002083468AE0B7370020138728 +:1094800047ED920636974847938947ED130A8AE0DD +:1094900009C99770FB1FE780E0C7B7370020A38397 +:1094A00007E0130614009165938505713285034921 +:1094B0000A0032C69770FB1FE780C0B883470A00D6 +:1094C00012094E9992072326A900CE97C84745D185 +:1094D000324681459770FB1FE78080EC83470A0086 +:1094E0002286A6859207CE97C8479770FB1FE78014 +:1094F00080E4B7370020A38387E00145E9B5E3980E +:10950000F5F61A22B73700202392E7E0FDB785472A +:10951000E39FF5F41822B73700202388E7E0F1BF76 +:109520009947E396F5F4373500201946A6851305CB +:1095300045E19770FB1FE78000E0C1B78547639D59 +:10954000F5061822B73700200145A38EE7D68280A2 +:10955000E147E39EF5F0373500206146A685130507 +:10956000C5EBC1BF8547E394F5F01822B73700205B +:109570002386E7D859B78547E39BF5EEB737002038 +:1095800083C767E0C9B58547E393F5EE0822937773 +:109590002500E39E07ECB737002083C717E1B735F6 +:1095A0000020938545ED1387F7FF120792072E974A +:1095B000A1075047BE956DB5614582804111AA87CC +:1095C00006C611472E856386E70A6361F7020547E1 +:1095D000638EE706A9C709476381E7080D476384DF +:1095E000E7088947B2403E85410182801D47638A72 +:1095F000E708636AF7001547E395E7FEB7370020F1 +:1096000083C7D7D7B9A821476383E7081307200486 +:10961000E399E7FCB737002083C7C7D899A0B737CD +:10962000002083C787E013974700B7370020938750 +:1096300047EDBA97CC478947D5D5B737002003C641 +:1096400077E09770FB1FE78000CF31A0B73700208D +:1096500083D747E09EA1814771B7B737002083C702 +:1096600007E11CA1CDBFB73500201946938545E120 +:10967000C9BFB73500202146938545D8EF40722BEE +:10968000D9BFB735002061469385C5EB5DBFB737BD +:10969000002083C797E0F1B7630F0538B737002084 +:1096A0009387A7E09823631807388546373800204A +:1096B00094A30947930748ED98A337F706001307CB +:1096C0004791D8C337F706001307078ED8C794A76A +:1096D000239507007D57630DE53413771500854505 +:1096E00039C3B7F606009386068FD4CBB736002071 +:1096F0009386F6D70947D4CFB736002098AB23849A +:10970000E6E02380E70237F7060005461307878F58 +:1097100090AF239D0700D8D32384C7022395070267 +:1097200023A607028D45137725002DC31397450007 +:10973000B7F606003E979386068F54C3B7360020CF +:10974000894805469386C6D754C72300170110A73A +:10975000231507001387150042074183B736002001 +:109760002383E6E01207B7F606003E979386868EBF +:1097700054C38905B7360020938646E0C20523000E +:10978000170110A72315070054C7C181137745009F +:109790002DC313974500B7F606003E979386068FB4 +:1097A00054C3B7360020894805469386C6D854C7A7 +:1097B0002300170110A72315070013871500420780 +:1097C0004183B7360020A388E6E01207B7F606000B +:1097D0003E979386069154C38905B7360020938639 +:1097E00006E1C2052300170110A72315070054C77F +:1097F000C1811377850021CF13974500B7F6060086 +:109800003E979386068F54C3854614A7B73600202B +:1098100009469386D6D854C710A32315070013878B +:109820001500420741831207B7F606003E9793865C +:10983000C69154C3A14614A78905B7360020938664 +:1098400046E1C20510A32315070054C7C181137751 +:10985000050129CF13974500B7F606003E9793867A +:10986000068F54C3B736002089480546938626D80C +:1098700054C72300170110A72315070013871500ED +:10988000420741831207B7F606003E979386C690BB +:1098900054C38905B7360020938646D8C2052300F5 +:1098A000170110A72315070054C7C18113770502BC +:1098B00029CF13974500B7F606003E979386068F8B +:1098C00054C3B7360020894805469386E6D754C767 +:1098D0002300170110A7231507001387150042075F +:1098E00041831207B7F606003E979386C68E54C38F +:1098F0008905B73600209386D6D7C2052300170105 +:1099000010A72315070054C7C1811377050429CF79 +:1099100013974500B7F606003E979386068F54C30B +:10992000B7360020894805469386E6D854C72300F9 +:10993000170110A72315070013871500420741835D +:109940001207B7F606003E979386869154C38905A1 +:10995000B73600209386A6E1C2052300170110A7A1 +:109960002315070054C7C1811377050821CF13972A +:109970004500B7F606003E979386068F54C3D1463E +:1099800014A7B73600200946938606D854C710A3FB +:109990002315070013871500420741831207B7F606 +:1099A00006003E979386C68F54C3854614A7890543 +:1099B000B73600209386C6EBC20510A32315070017 +:1099C00054C7C1811375051039C913974500B7F6FF +:1099D00006003E979386068F54C3B736002009458C +:1099E0000546938616D808A310A72315070054C769 +:1099F00013871500420741831207BA9737F706000D +:109A00001307C78FD8C3890537370020130797E09E +:109A1000C20588A390A723950700D8C7C181B73690 +:109A20000020938606D24146130548ED6F308039F9 +:109A3000130530037DB10145828001111388F5FFC4 +:109A400006CE22CC26CA4AC84EC652C41378F80F96 +:109A5000AD4563ED050BB7E506000A089385452083 +:109A60002E983E8A83270800BA893689B284828775 +:109A70008545EFB09F9F2A8419E1EFF08FCF2285B3 +:109A8000F2406244D2444249B249224A056182808E +:109A90008945EFB09F9D2A847DF12685EFE06FB365 +:109AA000F9BF9145EFB07F9C2A8471F95286CE852B +:109AB0004A85EFB0FF91EFF0CFCBEFF02F81EF6051 +:109AC000607D75BFA145EFB05F9A2A844DF952863B +:109AD000CE854A85EFB0DF8F2685EFE08FAFEFE0D0 +:109AE000CFA5EF60207961BFB145EFB01F982A8400 +:109AF00059F55286CE854A85EFB09F8D2685EFE0D9 +:109B00004FADEFE08FA3EF60E07675B7094485BFF6 +:109B100079714ECEAE896C0022D426D24AD006D6B8 +:109B20002A89B284EF0010692A840DE1CE854A8526 +:109B3000EFA0BFEA2A8419E93245B7560400268708 +:109B40009386E69C2D468145EF10E0002285B250B9 +:109B5000225492540259F2494561828079714ECE65 +:109B6000AE896C0022D426D24AD006D62A89B28485 +:109B7000EF0050642A840DE1CE854A85EFA07FF383 +:109B80002A8419E93245B75604002687938686AAA7 +:109B90004D468145EF00307C2285B25022549254CC +:109BA0000259F24945618280397126DAAE844C004F +:109BB00022DC4AD84ED652D406DEAA893289368AA9 +:109BC000EF00505F2A8421E9A685630D09009E20DD +:109BD0002C007C84BE207C85930720307C869307F4 +:109BE00080025C874E85EFA07FDC2A840DE5594614 +:109BF000A6851305A100230421019760FB1FE780C0 +:109C000080731245B75604005287938606982546FE +:109C10002C00EF0050742285F2506254D254425905 +:109C2000B259225A21618280797126D2AE846C00A9 +:109C300022D44AD04ECE06D6AA893289EF00905758 +:109C40002A840DE1A6854E85EFA0FFDA2A8419E962 +:109C50003245B75604004A879386A69E3546A685A8 +:109C6000EF00706F2285B250225492540259F2498B +:109C700045618280BD47638CF50663E9B702A5475D +:109C80006387F50663EDB7009947638CF5049D473C +:109C9000638FF5049547638CF50401458280B547D1 +:109CA0006387F50463E1B704AD47F5B7DD47638E1D +:109CB000F50263EAB700C947638BF502D9476386AB +:109CC000F502C547C9BFF5476383F50263E4B700F2 +:109CD000ED47D1B793072005638BF5009307200D5F +:109CE0005DBF4845828008418280084582804841A6 +:109CF00082809307F00F630FF506011126CAAA842C +:109D00001305000222CC4AC84EC652C456C206CE23 +:109D10003A89B689B28A2E8A9760FB1FE780E051A4 +:109D20002A844D450DC8930700FB1CA0A3005401D5 +:109D300023114401230234011305840061466305A5 +:109D40000902CA859760FB1FE780E05EA285268531 +:109D5000EF908FB60145F2406244D2444249B24985 +:109D6000224A924A0561828081459760FB1FE78005 +:109D70002063E9BF09458280011122CC06CE2A84E6 +:109D80004C86D0869770FB1FE78000D105C1542513 +:109D9000B737002021479387C725639DE600E82356 +:109DA00078009306E0070146A285A137F24062449D +:109DB0000561828078009306E0070146A285C833DA +:109DC000EDB7930700643306F6026F90BF9515C593 +:109DD000182185469307270093F7F70F63FFF600D6 +:109DE000411122C42A843A8506C6EF90BFADFD57C3 +:109DF0001CA0B24022444101828082801A21930734 +:109E0000000B6310F7025C214947639AE700183999 +:109E100085476398E7002A2185456F30B01E6D475E +:109E2000CDBF828001116C846C0022CC26CA4AC846 +:109E300006CE2A89B6847085EF00D0372A840DE1DA +:109E40002C004A85EFA03FAD2A8419E93245B75668 +:109E5000040026879386468D15462C00EF00B04FF0 +:109E60002285F2406244D244424905618280797180 +:109E7000930720306C8470857C862C0093078002C9 +:109E8000014606D65C87EFF03FD2B2504561828032 +:109E9000C177797185073EC4894726D27C86AE8416 +:109EA000930780024C0022D44AD006D62A895C87C8 +:109EB000EF0050302A840DE12C004A85EFA0BFBC92 +:109EC0002A8419E91245B75604002687938686A589 +:109ED00045462C00EF0030482285B250225492545F +:109EE000025945618280B28605466FF0FFCB7971D9 +:109EF00026D2AE846C0022D44AD04ECE06D6AA8991 +:109F00003289EF00302B2A840DE1A6854E85EFA023 +:109F10005F982A8419E93245B75604004A87938628 +:109F2000A6870D46A685EF0010432285B250225425 +:109F300092540259F2494561828079719307202039 +:109F40006C8470857C862C0093078002014606D6BF +:109F50005C87EFF07FC5B25045618280011122CC51 +:109F600006CE2A842EC632C436C29770FB1FE78005 +:109F7000A0B215C94825B7370020A1469387C72549 +:109F800012472246B245631BD500E823B2862E86CF +:109F9000A2856244F24005616FF0BFD5B286C83336 +:109FA0002E86A285FDB7F240624405450561828098 +:109FB0006FF01FB66FF0DFB56FF01FC76FF0DFC631 +:109FC00079714ECEAE896C0022D426D24AD006D604 +:109FD0002A89B284EF00101E2A840DE1CE854A85BD +:109FE000EFA03FA32A8419E93245B756040026871B +:109FF000938666A03D468145EF00F0352285B2503C +:10A00000225492540259F24945618280B286014637 +:10A010006FF09FB9011122CC2E846C0026CA06CEA7 +:10A02000AA84EF003019DD476309F500930710108B +:10A030001EA4A2852685EFA0DFA7F2406244D24489 +:10A0400005618280239405009E2599E36FF01FB17E +:10A0500009458280C5BFB737002003C727E585477C +:10A0600063F8E702011122CC2E846C0026CA06CECA +:10A07000AA84EF00301401E9930700101EA4A28502 +:10A080002685EFA01FA3F2406244D244056182807E +:10A0900059458280B737002023AEA7E08280B737CA +:10A0A000002023A0A7E28280011122CC26CA06CE7E +:10A0B0002A84AE849770FB1FE780009EA6852285C8 +:10A0C000EFA02FD105E9228564869770FB1FE780FA +:10A0D000A09C0DC15425B737002021479387C72581 +:10A0E000639FE600E82378009306F0070146A28507 +:10A0F000EFF03FC0F2406244D24405618280C83331 +:10A10000DDB7011126CA06CEB68422CCDD4663E354 +:10A11000B608D94663FFD50AA5466382D50A63EF20 +:10A12000B6049546638DD50899466388D50A0544DB +:10A1300041687D18631706093AC6EFA04FCD330674 +:10A140008540324742064182420441803305C400C3 +:10A150004205BA85418132C6EF30C078AA8751C125 +:10A1600099C0324692A0B30580406244F240D24486 +:10A170003E8505611763FB1F67000307C5466380C3 +:10A18000D504C9460D44E394D5FAC167FD17E31D14 +:10A19000F6FA5DB7F5466380D50463E4B600ED4694 +:10A1A000D5B7930620056388D5029306200DE3906A +:10A1B000D5F8C167FD170D446319F600B5BF094412 +:10A1C00085BF9306200DE391D5F831064206418202 +:10A1D000A5BF15445DBF0D444DBFC167FD171D44AC +:10A1E0007DB7F2406244D24405618280011122CCE5 +:10A1F00026CA06CED0212E84130700028146994537 +:10A20000AA8401372AC621C51E2050209305540078 +:10A210007C803E207C8189477C82930780025C831E +:10A220009760FB1FE78020115C208A8526857C844F +:10A23000EFA00FF12A8411C532459760FB1FE7801C +:10A2400060ED2285F2406244D244056182804D4433 +:10A25000CDBF5D7186C6A2C4A6C2CAC04EDE894704 +:10A260006306F600C14709446318F6040144A9C512 +:10A270002E894C0832C6B689AA842D2F2A843246EC +:10A2800005EDC1778507CA851305D1013ECC230EA4 +:10A29000C1009760FB1FE780000A2C082685B937AC +:10A2A0002A8419E95245B75604004E879386669270 +:10A2B0001D462C08EF00300A2285B64026449644FD +:10A2C0000649F25961618280797122D436844AD07C +:10A2D0004ECE52CCB2892E8A3A898146130710029B +:10A2E0002286D94526D206D6AA84EFF09FE12AC657 +:10A2F00021C12286CA8560842312410123133101C2 +:10A300009760FB1FE78020034C002685EFA03F8469 +:10A310002A8411C532459760FB1FE780A0DF2285A4 +:10A32000B250225492540259F249624A45618280E5 +:10A330004D44F5B7011122CC26CA06CE4AC8DD47E6 +:10A340002A84AE846389F50281470A206C005C860A +:10A35000EFA0BF8305456380A4080824B1659385F9 +:10A3600005B8EF90CF91E5473CA0B757040093871D +:10A3700007B85CC085A058393149B2863306270337 +:10A3800018499C4232971043E310F6FCDE22522318 +:10A39000E31CF6FA8C4608479760FB1FE780A00A8B +:10A3A00045D55C385828850793F7F70F5CB863FAF2 +:10A3B000E702B387270318480A20BA979847D6239D +:10A3C000B2238E23113749F10824B165938505B86E +:10A3D000EF90EF8A5945F2406244D2444249056108 +:10A3E00082807C289DB7011122CC26CA06CEDD478B +:10A3F0002A84AE846394F5060A21EFA04FA1522C63 +:10A4000036285A286D162A9642064182B307D6404E +:10A41000C20752ACC18363FAE7069305C5FF330850 +:10A42000F7406359B802BA96918EC206184C0E28AE +:10A430000A20C1823E97EFF03FE90DE10824B165A3 +:10A44000938505B8EF90AF835945F2406244D244FA +:10A45000056182806D1593160501C9BF81470A20E9 +:10A460006C005C86EFA06FF20545E380A4FE082433 +:10A47000B165938505B8EF908F80E5473CA0B7574D +:10A480000400938707B85CC0C1B78547C9BF39715D +:10A4900026DAAE842C0022DC4AD84ED606DE2A8983 +:10A4A000B289092B2A8439E54A85EFA04F96D62038 +:10A4B0006D1563C5A60093160501C1829844B220AC +:10A4C0008E204A85EFF05FE02A840DE53146A685AF +:10A4D0000808230601009760FB1FE780C0E5BE2047 +:10A4E0002245B75604004E87938686B15D466C00C0 +:10A4F000FC8695252285F2506254D2544259B259B5 +:10A500002161828069B761B7797126D206D622D4DB +:10A510004AD04ECE52CC56CA5AC88944D9C951CA1B +:10A520002E842A89BA8A368B328AEFA04F8E930501 +:10A530004400814771159A21635EA708850793F748 +:10A54000F70FB105E319FAFE8A854A85A521AA8489 +:10A550002DE131453305AA02916593851570CD44EF +:10A560009760FB1FE78000AEAA8921C531463306FC +:10A57000CA02A2859760FB1FE780E0DB18445620E3 +:10A5800032200E204A85EFF03FD4AA8415ED024513 +:10A59000B756040085475687938686B15D464C00C2 +:10A5A0005C824EC423064101A3060100230761011A +:10A5B0005D23B2502254268502599254F249624AD0 +:10A5C000D24A424B456182804E859760FB1FE780EF +:10A5D00060B4C5B7ED44F1BF79714ECE37F60600D1 +:10A5E000AE89C16526D20147AA84894613064692E0 +:10A5F000FD15054522D406D64AD0EF10E07A054471 +:10A6000029C92A891307300281461146F545268556 +:10A61000EFF03FAF2AC655440DCD8357A900CE8633 +:10A6200001467C8491477C8585471CA1B2472C005C +:10A630002685A38007003247FD573CA332473CB331 +:10A64000EF10006C2A8411C532459760FB1FE7802C +:10A6500060AC2285B250225492540259F2494561AD +:10A660008280411106C6EFF0EFE019C5B24041010A +:10A670001763FB1F670003AAB240410182800111EA +:10A6800006CE2AC6EF909FDF3245B737002023AEB3 +:10A6900007E0B737002023A007E29145B737002035 +:10A6A000A38EA724EF30A01EF24005616F20F005B5 +:10A6B00093970501C18763D40712B737002003C5FC +:10A6C000D725797122D44AD006D626D22E89976012 +:10A6D000FB1FE780E0BB2A8449C918219307000AC1 +:10A6E0006312F70885474C08DC85EF90DFE5AA8404 +:10A6F00005ED8347610171476372F708138717FE01 +:10A700001377F70F9306000263F1E608858BCDC33C +:10A71000B737002083A7C7E1994499C72A201306B9 +:10A72000B1004C088297AA849C8599C7084409C542 +:10A730009760FB1FE780009E95E05247B707000136 +:10A74000938707F07D8FB707120093870710630B7D +:10A75000F70003476101ED476316F7002A2085459E +:10A76000EF30400A2285EF805F90B250225421657D +:10A770003345A9009254025945618280370730144D +:10A7800005073357F700058B51D3373700200327D0 +:10A7900007E259DB0347510141FB5C8699472308D7 +:10A7A000F1002A206C0023170100EF90BFFCADBF21 +:10A7B000B737002083A707E28DC32A201306B10014 +:10A7C0004C08829735D1AA8483475101B1FF834752 +:10A7D0006101230891005C86E9B79944F5B701450A +:10A7E0008280397122DC26DA06DE4AD84ED652D46F +:10A7F00056D25AD0A5472A84B2846398F50E83476F +:10A8000045021A22835A260085072302F502930780 +:10A81000F7FFB387FA025442C207C183B69703C950 +:10A8200017009C23542522093369F900854763905A +:10A83000F60233075703231006008149014A130B20 +:10A840003501931A070193DA0A0163EA5905C167D2 +:10A85000FD176303F90A1E286370F90A0509420906 +:10A860005424135909012317240105470A2093058D +:10A87000E400639CE6007C85930720307C86930788 +:10A880008002231421015C872C00EFA02F92082462 +:10A89000B165938505B8EF809FBE5945B9A8B6202C +:10A8A000DC402C28ED1613865900C206C1823E9664 +:10A8B0005A85EF90BFC105C5630B3A01C840B2206D +:10A8C000B305350152959760FB1FE780C0A6BE20F7 +:10A8D0003E9A9E20420A135A0A0185079EA0BE2076 +:10A8E000BE99C20993D909018DB75822A9476310AF +:10A8F000F7028347450281CF0145F2506254D2549A +:10A900004259B259225A925A025B216182803428FC +:10A910001309340137F506004A8689451305459128 +:10A92000EF90DFBA19C10545C9BF342837F50600D5 +:10A930004A86894513050592EF905FB96DF5342875 +:10A9400037F506004A86894513058590EF901FB8B4 +:10A9500079F9342837F506004A8689451305058FAD +:10A96000EF90DFB669F1D820BD47E3EEE7FAA567BF +:10A9700093874712B3D7E700858BD5D78347440227 +:10A9800085072302F40203D92400D1B5011106CEB4 +:10A990002EC69760FB1FE780800511C93C25B24594 +:10A9A000138717006395E50093F707F83CA5F2407D +:10A9B00005618280011106CE2EC69760FB1FE780DD +:10A9C00000031DC1B24591C188C11C251307E00FCA +:10A9D0005D456388E7001307F00F01456383E700D7 +:10A9E0005945F240056182800945E5BF411122C405 +:10A9F0002A84210506C626C24AC0EFF04FBD3C207E +:10AA0000A51793F7D70F89EB58248547631EF704E2 +:10AA10001C4881443149A1E3FD57230104001CB4C3 +:10AA2000230204021305C4002244B24092440249A6 +:10AA30006146814541011763FB1F67006396B38739 +:10AA400024033E95084509C59750FB1FE780806C9D +:10AA5000850493F4F40F5C280848E3E2F4FE975071 +:10AA6000FB1FE780206B4DBF084C75F975B741118E +:10AA700022C4416406C626C29307E4FF6301F502BF +:10AA8000AA849DE19760FB1FE78060F609E9130542 +:10AA9000F4FF9760FB1FE78080F511C106A1B2406B +:10AAA000224492444101828085476392F504976075 +:10AAB000FB1FE780C0F32A847DD1FD571EA11C2413 +:10AAC0001307F00F6382E7021307E00F6389E700C3 +:10AAD0003420083401475146A685EFF08FA1228526 +:10AAE000EFF0DFF0FD571CA4230504004DBF89479C +:10AAF000E397F5FA8545EF40E04155F126859760EB +:10AB0000FB1FE780C0EE2A845DF951BF21C51825DF +:10AB10009307F00F6300F704011122CC06CE2A84BC +:10AB200034210E21083501475D46EFF08F9C382017 +:10AB3000E1476318F7000A206C0023060100EFA02C +:10AB4000CF84F9571CA42285EFF05FEAF2406244FB +:10AB50000561828082809307F00F6306F70601117A +:10AB600022CC26CA2A844EC6AE84B689AA8593060C +:10AB7000850037B504004AC852C43A89328A1305A1 +:10AB8000C5B0794606CEEFF0CFA3A304240123017C +:10AB900044012322340185C01305C4006244F240FD +:10ABA0004249B249224AA685D244614605611753FB +:10ABB000FB1F67004378F2406244D2444249B249E5 +:10ABC000224A056182808280B73700202384A7E271 +:10ABD000828095476394F50683474502854685073D +:10ABE0002302F5021E2258423022FD17C207C183FC +:10ABF0006312D6048A07BA9798339C232207D98F09 +:10AC00007A2563F5E704411106C622C485075EA5CF +:10AC10002A849305C5000A21EF90FFCF0824B1656F +:10AC2000938505B8EF80BF85B2402244D9473E8561 +:10AC300041018280C946B387D70275BF5422294794 +:10AC400085476396E6000347450211C381473E8569 +:10AC500082809D47639BF5048347450276258507DF +:10AC60002302F5021E225842FD178A073E971C3325 +:10AC70001823A207D98F014763F2D704411106C6F2 +:10AC800022C485072A845EA59305C5000A21EFF03A +:10AC9000EFD50824B165938505B8EF804FFEB2402B +:10ACA000224459473A85410182805422A9470547E9 +:10ACB0006396F60003474502133717003A858280F2 +:10ACC000411122C406C626C2B5472A846395F504FD +:10ACD00083474502B28485072302F5020A21EF90DB +:10ACE0001F939E201307F5FF014563C1E7027A24F5 +:10ACF0000A209305C400BA977EA4EF90DFCF082402 +:10AD0000B165938505B8EF808FF75945B24022446D +:10AD100092444101828058229D470545E318F7FE81 +:10AD20000345440213351500D5B7C5476396F506AC +:10AD30001E223A22FD17B387E702034745020507A3 +:10AD40002302E5025842C207C1833E973C333823B1 +:10AD5000A207D98F41677D176395E70081473E853C +:10AD60008280138717005AA57A25E3F9E7FE41117F +:10AD700022C49305C5002A840A2106C6EF90BFD0DD +:10AD80000824B165938505B8EF806FEFB240224487 +:10AD9000D9473E8541018280542229478547E39067 +:10ADA000E6FC034745025DFB5DBF011122CC26CACC +:10ADB0004AC852C406CE4EC6BC2115472A8AAE8464 +:10ADC00032843689639AE7043686A2852685EFF0B9 +:10ADD0005FE0AA8955E585476314F40A03474900F3 +:10ADE000A9476300F70288344A8785460146D28521 +:10ADF000EFE03FF019E585454A85EFE0BFE7133402 +:10AE00001500B420883401476946D285EFE07FEE13 +:10AE10002685EFF0BFBD49A01D476398E700368641 +:10AE2000A2852685EFF0FFE26DB725476398E7001E +:10AE30003686A2852685EFF0DF9A61BF3547639895 +:10AE4000E7003686A2852685EFF09FE759B745478C +:10AE50006398E7003686A2852685EFF01FED95BF43 +:10AE60005D47639EE700D82585473686A2852685FF +:10AE7000631DF702EFF00FCC8547631AF50485498F +:10AE8000A5476317F402835709009DE30544E38A4D +:10AE900009F6D947E39EF9F62285F2406244D2448E +:10AEA0004249B249224A05618280EFF0CFD3E9B727 +:10AEB00088344A87A2860146D285EFE09FE379F580 +:10AEC000A2854A85EFE01FDB13341500C9B705449E +:10AED000E1B7397122DC06DE26DA4AD84ED652D4E2 +:10AEE00056D29E211944B9E783C925002A89328A9E +:10AEF000938759FE93F7D70FAE84DDE3B737002071 +:10AF000083C687E21307F00F938A87E219446383AD +:10AF1000E602F5476395F9049760FB1FE78020ADD3 +:10AF2000AA891DCD30250DCE93178601E18763DDFB +:10AF3000070001442285F2506254D2544259B2595A +:10AF4000225A925A21618280F5454A85EFE0DFE27C +:10AF500083C7A90093E707F82385F900D9BF814982 +:10AF6000D62090448C3088203800EF901FC32A846C +:10AF700071F1B42003C50A0038000146CA85EFE02C +:10AF80005FD72A8445F9B24799C323000A00BC2041 +:10AF90007547E390E7FAE38E09F82385F90059BF76 +:10AFA0009760FB1FE780A0A4AA8A41D58547639FCD +:10AFB000F908CE2088443000EF904FE72A843DF90D +:10AFC00003C72A00C54763FFE708DD47630DF70A9B +:10AFD000B737002003C59A0083C7D7256398A70A0F +:10AFE000014403C72A008D47631EF7043C8403D73E +:10AFF000CA0063F4E7002396FA0083D5CA004A85A5 +:10B00000EFF08F8AB737002083D7C70A6D47637B7D +:10B01000F70283D5CA005D476376B7021387350010 +:10B0200091056349F7001307B00FBE856374F700FD +:10B030009305B00F1166C20513060629C1814A8522 +:10B04000EF80401B5685EFF07F9AEDB53C2111440F +:10B05000E39237EF5C41E38F07ECCE208844300069 +:10B060008297A9BFB72702009387072AB3D7E700C3 +:10B07000858BB9DFB0203400D6854A85EFF0FFD24A +:10B080002300AA0045BD83A70A01E5B7B420380014 +:10B090000146CA85EFE0FFC52A8421F5AC202800CF +:10B0A000EFE05FBD15DD23000A0025BF011122CCB2 +:10B0B0003734002006CE26CA4AC84EC652C4930969 +:10B0C000C42503C589009307800291653305F50205 +:10B0D0009385657037390020930449E29750FB1F30 +:10B0E000E78040F603C68900930780028145330656 +:10B0F000F60288C09750FB1FE780802A9C404D4590 +:10B100009DCF9304C425130949E20144130A800228 +:10B11000FD599C24636DF40237B50400130525ED39 +:10B12000EFE05FF737B504001305C598EF906FC0E7 +:10B1300037B504001305E5A6EF30D0540145F240C1 +:10B140006244D2444249B249224A05618280B3072F +:10B150004403032509006146814505041374F40F77 +:10B160003E952310350123010500231435012305E5 +:10B1700005002302050231059750FB1FE78040229E +:10B1800049BF01458280B737002083C657268147D3 +:10B1900063E5D70001473A8582802E87910503D663 +:10B1A000C5FFE30AA6FE8507E5B70DC93C210547A3 +:10B1B000890793F7F70F6373F702411122C406C69C +:10B1C0002A840E2128310147F9465D46EFE07FB21F +:10B1D000F9573EA0B2402244410182808280B737B5 +:10B1E000002003C75726FD56814763E3E7008280AE +:10B1F00016A12301050085071105C5BF0145828001 +:10B20000373600201306F6D9930700021CA2373701 +:10B210000020FD57230FF7D8373700202308F7D831 +:10B2200037370020A307F7D88545B7370020239E7E +:10B23000B7D8B7370020239507E2B737002023AAF5 +:10B2400007E2B737002023A207E4B737002023AC7A +:10B2500007E2B7360020B7F70600938646D99387F2 +:10B260004790DCC2B7370020238607E2B7370020BB +:10B270009387C7D2094798A298A398AB2380E70287 +:10B280002388E70237F706001307478FD4C7D8DBB8 +:10B29000B7F606000D47238CE7029386068F3737F3 +:10B2A0000020D4CB032707E337F50600B7F60600E6 +:10B2B0001305459193864692C8C38CA72395070032 +:10B2C0008CAF239D0700D0CFD4D3238407022395CE +:10B2D000070223A60702239D0702D8DFB737002005 +:10B2E00037B704009387C7D61307273A23A0070070 +:10B2F000D8C323A407008280411106C6EFF0BFE83F +:10B3000009C52821B240410182800145E5BF4111B4 +:10B3100022C426C24AC006C6AA842E893284EFF00F +:10B320009FE609E94165CA857D15EFF0DFE5C54770 +:10B3300001C506A120A18147B2402244924402499E +:10B340003E854101828039E389483547639116057E +:10B35000011106CE22CC26CA1832102293C7F7FF5D +:10B360002207598EF18F32C68DE7C4452A84A685FF +:10B37000EFF09FF832460147630FA6002285624432 +:10B38000F240A685D24405616FF07FF82D473A85DB +:10B39000828013070008F2406244D2443A85056176 +:10B3A000828083C8050009486395080303A8450007 +:10B3B0008347180003480800A207B3E70701C20744 +:10B3C0000D68C187130828906395070189476FF0BE +:10B3D0009FF705458280011122CC373400201304E9 +:10B3E00004D9182006CE26CA4AC84EC69307F00FC5 +:10B3F000630FF702AA892945B2842E899750FB1F53 +:10B40000E780A0E30DC59307100B1EA123020500E2 +:10B41000231135012313250106A5AA8508206244BE +:10B42000F240D2444249B24905616F70FFC8F24010 +:10B430006244D2444249B249056182804111B73722 +:10B44000002026C2AE8483A507E322C406C62A8450 +:10B45000EFF09FEA098909C922852244B240A685F6 +:10B46000924441016FF04F97B24022449244054507 +:10B4700041018280411122C426C24AC006C6AA8464 +:10B48000130445001309850B1E209DC3084409C5FC +:10B490009750FB1FE78000C82285314681459750B1 +:10B4A000FB1FE780E0EF3104231A04FEE31E24FDB6 +:10B4B000B2402244FD579EA002499244410182803D +:10B4C000B737002003C65726B737002003A7C7E3C6 +:10B4D00081476315F600814636858280BA86130758 +:10B4E000870B835587F4E389A5FE850793F7F70F4C +:10B4F000CDB7B737002083A747E481CBDA236314A5 +:10B50000A700884782809C43CDBF014582804111BE +:10B5100006C6EFF01FFE09C50845B2404101828012 +:10B520000145E5BF011126CA9384450022CC4EC6D1 +:10B5300006CE4AC852C456C25AC026878149014421 +:10B54000814681473D45122345CABDEE42233E2335 +:10B55000B286A297C207C18385093107E395A9FE88 +:10B5600035C42E8991659385457022859750FB1FC0 +:10B57000E78040AD2A8B39C9814A014A8C4495C184 +:10B58000D22033054B019750FB1FE780C0DADE2045 +:10B5900088443E9A420A135A0A019750FB1FE780DB +:10B5A00060B763890A003146814526859750FB1FA5 +:10B5B000E78000DF850AB104E3E23AFD2326690152 +:10B5C00023148900054521A0630DD6000145F240F2 +:10B5D0006244D2444249B249224A924A024B05612E +:10B5E00082803223E314F6FE52233294B29742044F +:10B5F000C2074180C1838DB70545E37A35FD8DB71C +:10B60000B737002083A787E399E3014582809847F5 +:10B610003A276315A7001385470082809C43EDB746 +:10B62000411106C6EFF0DFFD09C50A21B240410114 +:10B6300082800145E5BF411106C6EFF07FFC09C5D8 +:10B640002821B240410182804145E5BF411122C419 +:10B650002A842E8506C6EFF01FFEAA8505462285A0 +:10B66000EF30406B95476305F500BD476313F50068 +:10B670002145B2402244410182804111B737002068 +:10B6800022C406C603A487E38146938787E321C0CB +:10B690001844322718406317A60285CA98C22E851F +:10B6A00081C92146930544009750FB1FE780A0C83D +:10B6B00022859750FB1FE780E0A50145B240224458 +:10B6C00041018280A2863A84D9B798C3C9BF054593 +:10B6D000F5B737370020832747E40146130747E4CF +:10B6E000A9C703D847009443631CA802011106CEE2 +:10B6F00022CC26CA0DCA14C2AA843E852E84975035 +:10B70000FB1FE78020A12C002685EFF01FF701E545 +:10B7100019C0B2471CC0F2406244D2440561828025 +:10B720003E86B68775BF14C3C1BF054582804111EF +:10B7300022C42A84090506C6EFE06FE9FD573CB034 +:10B74000B240224441018280411122C4416406C6B4 +:10B7500026C29307E4FF6301F502AA849DE1975096 +:10B76000FB1FE780E02B09E91305F4FF9750FB1F4F +:10B77000E780002B11C106A1B2402244924441014E +:10B78000828085476392F5049750FB1FE78040292C +:10B790002A847DD1FD571EA13C201307F00F638240 +:10B7A000E7021307E00F6389E70028300147F946F5 +:10B7B0005146A685EFE0EFD32285EFF05FF7FD5706 +:10B7C0003CA0230204004DBF8947E397F5FA854565 +:10B7D000EF30407455F126859750FB1FE7804024D9 +:10B7E0002A845DF951BF1D71A6CACEC686CEA2CCF1 +:10B7F000CAC8D2C4D6C2DAC05EDEAE84AC21F94774 +:10B80000AA896397F5049750FB1FE78060212A847B +:10B8100011ED01442285F6406644D6444649B649B6 +:10B82000264A964A064BF25B256182803C210547F9 +:10B83000890793F7F70FE37EF7FC28310147F946B4 +:10B840000146CE85EFE0EFCA2285EFF05FEED1B77B +:10B8500003AB0400B7070001938707F03707120016 +:10B86000B377FB0013070710B28A0149638BE70225 +:10B870002EC69750FB1FE780A01A2A89B24515C132 +:10B88000502105C293178601E187E3C407F84E856E +:10B89000EFE08FCE8347490093E707F82302F900D2 +:10B8A0008DBF373A00200347EAD99307F00F130AF8 +:10B8B000EAD91944E300F7F6E147E3EDB7F493D78B +:10B8C0001500FD1713973700B7E706009387472346 +:10B8D000BA9703A80700E30F08F283AB4700E38B96 +:10B8E0000BF2420B135B0B0163050B00C947E3939B +:10B8F000F5F2D62090448C308820380802982A84AB +:10B9000011F92C084E85829B2A8431C19C30E39327 +:10B9100007F0BC20230AA10039472308F1006396F1 +:10B92000E70262471C331823A207D98F0C084E8503 +:10B93000FC81EF803FE4E30E05EC14080546D94591 +:10B940004E85EFE0AFE12A84F1B5BC84C5B7B420E1 +:10B950009147E380F6EC03450A0038080146CE859E +:10B96000EFE02FB92A84E31705EAAC202808EFE0BE +:10B970006FB019C123800A009840B7070001938770 +:10B9800007F07D8FB707120093870710E303F7E8EE +:10B99000E30109E8BC202302F900ADBD011106CE88 +:10B9A0002EC69750FB1FE780A00711C95C21B24546 +:10B9B000138717006395E50093F707F85CA1F24041 +:10B9C00005618280397152D42E8A4ED69305E101E9 +:10B9D000AA89528522DC4AD856D206DE26DA328976 +:10B9E00036C63AC4BE8A9750FB1FE780200605443E +:10B9F00035C1AA84A8873944EFF0BFAF21CD032811 +:10BA00004500630908042247B246D6874A86A685C0 +:10BA10004E8502982A841DED9307E00F638CFA028D +:10BA2000982089476318F702D8401C331823A207CF +:10BA3000D98FC2070D67C18713072790639CE70062 +:10BA40008347190003460900D285A2075D8E4E8503 +:10BA5000EFF07F982285F2506254D2544259B25985 +:10BA6000225A925A21618280797122D422214ECEAB +:10BA7000AA89228556CA06D626D24AD052CC5AC89E +:10BA80005EC662C4AE8AEFF0BFA301E92285EF90E3 +:10BA90002FDA594431E50144A1A003C78900854745 +:10BAA000AA8401446317F702AA8513858900EFF081 +:10BAB0007FA729C9FA209624D044CE2003D5290097 +:10BAC000E147EFF03FF0D9472A846318F50223A637 +:10BAD00004002685EFF01F9A41C0D947E30DF4FA20 +:10BAE0002285B250225492540259F249624AD24AF3 +:10BAF000424BB24B224C4561828061DDDE202390B7 +:10BB0000FA00C1BF13894400014AB94B594C3D4B5F +:10BB100083550900DDDDE14763067A010357C9005B +:10BB200011C3D947035729008356490003268900CA +:10BB300003D52900EFF01FE92A8463198501232426 +:10BB40000900050A3109E3156AFD61B77DD98357FC +:10BB500009002390FA00F5B703D529000DBF0111A4 +:10BB600070879307E00F1306E1000147894606CE70 +:10BB7000EFF05FE5F24005618280797122D42A847A +:10BB80000A2526D2AE849305210106D64AD09750C5 +:10BB9000FB1FE780A0EB79C51C252AC693F7070297 +:10BBA0009DC7A881EFF0BF96AA87B24511E91E2470 +:10BBB00039459EA0B2502254925402594561828068 +:10BBC0002A204946829701C51E249EA0E5B7035945 +:10BBD00024004A85EFF0DF8E01ED41657D15EFF021 +:10BBE0003F8E09E51E2425459EA0E9B723102501B7 +:10BBF000130745008147BD46122339EE3147B3870D +:10BC0000E702130984003146CA8591073E959740A3 +:10BC1000FB1FE78040723146CA8548089740FB1FEA +:10BC2000E780607152242A2041478146DD45EFE0DC +:10BC30004FCD2ACE09E51E2445459EA0A5BF0C4840 +:10BC400052249740FB1FE780006F2A204C08EF909A +:10BC5000EFB92DD15945B9BF85073107E39ED7F814 +:10BC600025459DB705458DB7797122D42A840A25CB +:10BC700026D2AE849305E1014AD006D63289975088 +:10BC8000FB1FE780A0DC2DC91C2593F7070295EF69 +:10BC900018389307200511E35C20362450440E2405 +:10BCA0002A200147EFF01FD2AA8729E11C3891E72B +:10BCB0002A20EF90AFAFD94711E18147B25022540B +:10BCC000925402593E85456182802AC6A887EFF0CA +:10BCD0001F84AA8705C5B2452A2049468297AA87AC +:10BCE00045D91A249AA0183869FBC9BF5947E31AE5 +:10BCF000E5FE23000900D1B78547E5B7B947D5B7B9 +:10BD0000397122DC4AD84ED652D406DE26DAAA8908 +:10BD10002E8A32C636899750FB1FE78060D00944CF +:10BD20000DC53C211307E00FAA845D44638FE70033 +:10BD30001307F00F5944639AE700324605E2D285B3 +:10BD40004E85EF900FB32A841DCD2285F2506254A8 +:10BD5000D2544259B259225A2161828003550A00B5 +:10BD60009305E101231F01009750FB1FE78000CEE0 +:10BD7000A887EFF05F8CAA8505464E85EF20907965 +:10BD80002A8455DDD9B79307F00FE300F9FC37B5E6 +:10BD90000400938624007946A6851305A51AEFE0D2 +:10BDA0004F82A381240155B73971B737002026DAB5 +:10BDB00083A487E352D45AD05ECE62CC06DE22DC66 +:10BDC0004AD84ED656D266CA2A8BAE8B328C368A69 +:10BDD00099E08149A9A0804483DC44000149835A49 +:10BDE000A400631499018440E5B73E24A28963F856 +:10BDF000670105094209135909014104DDB7E3EA66 +:10BE0000FBFE630B0A000C204840D28662863AC6CD +:10BE1000EF80CFEB324771DD19C323105701F25089 +:10BE200062544E85D2544259B259225A925A025BF8 +:10BE3000F24B624CD24C216182809A21B621854717 +:10BE400063E5E60439C34111D42126C237F5060063 +:10BE50009384550022C426862E8413054591894576 +:10BE600006C6EF80AFE6C14719C954202E200A202C +:10BE700001472686EFF05FF3814711E1A947B24001 +:10BE8000224492443E85410182803E8582802E86F6 +:10BE90000A22AE21854763E1A50219CD5422411142 +:10BEA0000147150606C6EFF03FF0814711E1A947AB +:10BEB000B2403E85410182803E8582802E860A22E4 +:10BEC000AE21854763E1A50219CD542241110147F6 +:10BED000150606C6EFF05FED814711E1A947B240B4 +:10BEE0003E85410182803E85828039714ED6BE21D9 +:10BEF00083D9050006DE22DC26DA4AD852D456D28F +:10BF00005AD05ECE62CC66CA6AC863EA37158547E6 +:10BF100063880912416BAE8A2A8A2314010002C683 +:10BF2000014401497D1B894B054CC94C054D83D506 +:10BF30002A000147814601464E8523130100EFF098 +:10BF4000BFE6AA84630B050E09EC130720029306D3 +:10BF500061005A8695455285EFE0AF9A2A846302C4 +:10BF6000051038849C2041CB18856305A7074147FD +:10BF70006385E7022C005285EF805FD409CD340041 +:10BF80001546D9455285EFD07FFD11C53245974002 +:10BF9000FB1FE7802018814765A0BE24414613059A +:10BFA00024001CA0BE24A1831CB0CC409740FB1FE2 +:10BFB000E780603849043C848507C207C1837C84DC +:10BFC00063FD2707BE24638A67078509C20993D9E1 +:10BFD0000901B1BFE39077FBBE2409461305240095 +:10BFE0001CA0BE24A1831CB0CC409740FB1FE7805F +:10BFF00080341104C9B722C603596100B82413055F +:10C000002400638F7701335999032305710118A028 +:10C01000BE244146A1831CB0CC401379F90F79B7F7 +:10C020002305810118A0BE24135929001379F90FA3 +:10C03000A1831CB00946CC404DBF3C8485FFA94775 +:10C04000F2506254D2544259B259225A925A025B67 +:10C05000F24B624CD24C424D3E8521618280854735 +:10C06000C5B7C547F1BFB737002003C727E58547E8 +:10C0700063F4E706011122CC26CA4AC806CE2A84F8 +:10C080003289AE849750FB1FE780809919C538210B +:10C090009307E00F5D456308F700631C0900A68560 +:10C0A0002285EF80BFF9F2406244D24442490561E3 +:10C0B00082808A209305E100231701009750FB1F1F +:10C0C000E780C0982887EFF00FD7AA85054622851C +:10C0D000EF20504469D5C1BF5945828013F705024E +:10C0E00001C7B2856FF08FD6411126C24AC006C67D +:10C0F00022C413F98500AA846317090013978501E8 +:10C100006187635B070232853684EFF0CFD2AA8560 +:10C1100005466313090001462685EF20B03F01E97B +:10C120000145B240224492440249410182801C34BC +:10C13000EDDB1C24F5F7F5B793F72500F5F30D4576 +:10C14000CDB77971AE8622D42A848A229305E10183 +:10C1500006D636C69750FB1FE780408F19C90C25BD +:10C16000B246B0872285EFF07FF7B2502254456186 +:10C1700082800545DDBF13F7050201C7B2856FF068 +:10C18000EFCC411122C426C206C693F485002A844E +:10C1900091E4139785016187635007023285EFF0C0 +:10C1A0008FC9AA85054691E0014622852244B24006 +:10C1B000924441016F20103693F72500014591E329 +:10C1C0000D45B24022449244410182807971AE868D +:10C1D00022D42A848A229305E10136C606D69750D6 +:10C1E000FB1FE780A086B24611C90C25B0872285C7 +:10C1F000EFF07FF8B2502254456182800545DDBFE3 +:10C20000797126D2AA842A25C16722D44AD04ECE7B +:10C2100006D623170100FD173284B6890149630C45 +:10C22000F50005059420D04042051307E100418147 +:10C23000EFF09FB72A899420D04037F50600894552 +:10C2400013054591EF808FA815C5A2242285EFF034 +:10C250002FBD09C57D142A944204418063840900DE +:10C2600023908900B25022544A8592540259F249CF +:10C27000456182809420D04037F50600894513053A +:10C280000592EF80AFA471F19420D04037F50600FD +:10C2900089451305058FEF806FA311C9E30809FADB +:10C2A0003C87E39587FA0354A9007D1475B7A2244F +:10C2B00075B7397122DC26DA4AD84ED652D456D216 +:10C2C0005AD062CC06DE5ECEBE899C252A8AAE8418 +:10C2D000C18B328C36843A89C28A468B9DE783CBE8 +:10C2E00004008947638BFB046285EFF08FA01DC1BA +:10C2F00083280500638008025A88D6874E87CA863D +:10C300002286A6855285829839A03285EFF02FA02B +:10C31000AA8711ED3945F2506254D2544259B259AC +:10C32000225A925A025BF24B624C2161828029466A +:10C33000A6855285829745D5F9BFD8401C3318236E +:10C34000A207D98FC2070D67C18793060790638341 +:10C35000D71E63CCF60693062780638ED70A63C088 +:10C36000F60213070780E3C1E7F82D45E39509FAC4 +:10C37000DC449023CC432310C9002285B9A21307C3 +:10C380003780E393E7F62D45E39709F885472310B7 +:10C39000F900DC4481459C231CA0AA240505420524 +:10C3A00041819740FB1FE780606A83570900631053 +:10C3B000051091072310F90011468145130514005B +:10C3C0009740FB1FE780C0FDF1A893062790638686 +:10C3D000D71463C1D71093063790638DD714130712 +:10C3E0004790E393E7F02D45E39709F2DC441D47BE +:10C3F0002310E900982318A0983318B0BA2338A066 +:10C40000BA23218338B0D82358A0FA2358B0FE238A +:10C41000A1837CA041A82D45E39F09EEDC446C007C +:10C4200083C917009823A209B3E9E9001147231033 +:10C43000E9009C234E851CA0DC449C331CB0974033 +:10C44000FB1FE780A060AA8425C13086C1659306E2 +:10C45000E100FD158329C500EFF09FDA09ED942076 +:10C46000D04037F50600894513050592EF800F8609 +:10C4700019E1FD577C8703C7090089476310F7025C +:10C4800083A549000946130544009740FB1FE78038 +:10C4900080EA8357090089072310F9003C873CA0F4 +:10C4A000A1833CB0014585BD23173101C5BF1821CB +:10C4B0008907BA972310F9003E251CB03E25A183B9 +:10C4C0003CA010214C41130534009740FB1FE7802E +:10C4D00080E6C9BFC8449740FB1FE78040EF931731 +:10C4E0000501C1832A871D45E3E737E36399F90016 +:10C4F00023100900CC4403560900CE95BDBD420768 +:10C50000B3863A01418363C7E600B38737412310FE +:10C51000F900CDB723105901F1BF2D45E39D09DE88 +:10C52000CC445285EFE05FDD2310790108A0218122 +:10C5300008B08DBF2D45E39009DEDC44231079015E +:10C540009C231CA0DC449C331CB0A9BF1D71CAC82D +:10C550002A892A21A2CCCEC6D2C4D6C2DAC05EDED7 +:10C5600062DC66DA6ED686CEA6CA6AD8AE8AEF805C +:10C570000F8A130CF5FF93170C01B73B0020C18302 +:10C580002A8A814913844B003EC6373B0020B73CC2 +:10C590000020C16D8357C90063F5F9001E2063CCEC +:10C5A00087010355290093854B00EF801F952A8D45 +:10C5B00015CD594D25A88327890013971900930598 +:10C5C000E101BA9784339C23A204DD8C2685974031 +:10C5D000FB1FE780A047AA8515E923909A004840F1 +:10C5E000054D09C59740FB1FE780C0B2F640664481 +:10C5F0006A85D6444649B649264A964A064BF25BB6 +:10C60000625CD25C425DB25D2561828032488348C3 +:10C61000490083A64CE3B0870355290081471307DF +:10C62000ABE2EFF01FC92A8D13884CE309C52390B4 +:10C630009A0048407DB75C4085E703552900514783 +:10C6400081461386FDFFBD45EFD0BFABB737002055 +:10C6500048C0138847E309E523909A00454D79B710 +:10C660001E200357ABE29304ABE23E9763464701BB +:10C6700013C7F7FF52979AA04840922083250800DD +:10C680003E9585099740FB1FE780E0CA1E209A204F +:10C69000C20993D90901BA971EA0EDBD397122DCF8 +:10C6A0002A842A2106DE26DA4AD84ED652D45AD017 +:10C6B0005ECE62CC66CA2E8B56D26AC8EF703FF54A +:10C6C0002A8A54242E240A2478001306D400130C3A +:10C6D000BAFF651AEFF04FED420A37390020AA89F8 +:10C6E0008144135A0A01B73B0020B73C00201309CC +:10C6F00049006382090463D08405938A4CE383482C +:10C70000440083A60A0030862A2052888147138776 +:10C71000ABE2CE85138DABE2EFF0BFB91DC1814A0C +:10C7200030862E244E859306E100EFF07FADAA8976 +:10C7300063990A065DFDF1E41E2429452310FB00E0 +:10C7400035A883570D001228E31BF6FC83A50A00C9 +:10C7500048489740FB1FE78000CF71D183274900ED +:10C7600095EF2A204166454781467D169D45EFD0CD +:10C770005F991DE11E2445452310FB00F2506254D1 +:10C78000D2544259B259225A925A025BF24B624C2D +:10C79000D24C424D216182802322A90083DAA90074 +:10C7A00041B783274900A697238057019387140038 +:10C7B0001397070183274900418393DA8A00BA97C8 +:10C7C0002380570113872400832649009387340070 +:10C7D000420791044183C207C204C183C1803697D6 +:10C7E00011C9348714A303274900BA9738872183D6 +:10C7F00098A301B7FD5614A303274900BA9794A341 +:10C800001DBF2A20B735002089802392950093858B +:10C810004500EF802FD63DD159458DB7411122C437 +:10C8200006C693F705012A84328585C3EFE0BFE091 +:10C83000AA8505462285EF20E04D95476305F50062 +:10C84000BD47631DF502214515A893F7450099CB17 +:10C85000EFE07FDE0546AA8522852244B2404101F1 +:10C860006F20404B93F7050489C7EFE0DFDC0146FA +:10C87000DDB713F51500133515000605B240224447 +:10C880004101828079714AD04ECE52CC06D622D454 +:10C8900026D22A8AAE89014983D749006364F90008 +:10C8A000014581A083A70900131419009304140003 +:10C8B000338797001823A297882322079305E10066 +:10C8C000598D9740FB1FE780601805E583A7090095 +:10C8D00005453E94182098A383A70900BE9498208C +:10C8E00098B3B250225492540259F249624A4561B7 +:10C8F00082800C2530875285EFF05FF201CD83A74F +:10C9000009003E94182098A383A70900BE9498209C +:10C9100098B3C1BF0509420913590901B5BF0111F7 +:10C9200022CC2A848A219305E10006CE9740FB1F82 +:10C93000E780C01111C90C2530872285EFF01FEE6A +:10C94000F2406244056182800545DDBF1D71CAC8A1 +:10C950002A892A2186CEA2CCA6CAD2C4D6C2DAC0DF +:10C960005EDE62DC66DA2E8ACEC66AD86ED6EF70DC +:10C970001FCA2AC68346C9008355A90003558900EA +:10C9800078081306D900EFF02FC2B247B734002061 +:10C99000416B938AA7FFC20AAA8B014493DA0A016A +:10C9A000373C0020B73C0020938444007D1B638209 +:10C9B0000B18B08683C58B0003552900EFF01FE6E6 +:10C9C000AA8D631305168348490083A64CE3B086FD +:10C9D00003552900568881471307ACE2DE85EFF046 +:10C9E0005F8DAA8D9309ACE2138D4CE3631E051293 +:10C9F00015CC03D70900BE2011076397E700324723 +:10CA0000A2976D1763C7E706B735002093874500E7 +:10CA1000BA2303552900938545003354E40282A3C9 +:10CA2000EF806FD1AA8D15C1D94D05A003552900FE +:10CA3000494781465A86C545EFD0AFECC8C015E5D9 +:10CA400083D7AB00C54D2310FA00F64066446E85CF +:10CA5000D6444649B649264A964A064BF25B625C82 +:10CA6000D25C425DB25D2561828083D70900910767 +:10CA7000BEA0DC4003D7AB009306E101A29798A3C8 +:10CA80009307140013970701DC4041835E85BA9732 +:10CA900003D7AB00218398A3B0868355A900EFF09C +:10CAA0002FF613072400D4409307340042071104E3 +:10CAB0004183C2074204AA8BC1834180369715ED9A +:10CAC000FD5614A3D84083250D00BA9794A3C840FF +:10CAD00003D6090022959740FB1FE780C08583D7C6 +:10CAE00009003E944204418005F0835789002310D9 +:10CAF000FA00E39C0DF4A94D89BFB48783250D008E +:10CB000014A3D840BA97B887218398A3C84003D606 +:10CB1000090022959740FB1FE780E08183D7090039 +:10CB20003E944204418061B583D7AB002310FA00E4 +:10CB300065BF814D55BF5D71A6C2CAC0AA840359A5 +:10CB400085002A21A2C44EDE52DC5AD85ED662D4B9 +:10CB500066D286C656DA6AD06ECE2E8BEF703FABA9 +:10CB6000930BD5FF7115131A0501B7390020014445 +:10CB7000135A0A01373C0020B73C00209389490032 +:10CB8000635B7413D424AE241307E1001386D4002E +:10CB90004A85EFF06FA12A8D630F05100359A50098 +:10CBA0000C253087AA20EFF07FC7631B051083C8D0 +:10CBB000440083A64CE33087AA205288814713079C +:10CBC000ACE2EA85EFF0EFEE930DACE213884CE3B4 +:10CBD00065E905C883D70D0003D7290089076308D5 +:10CBE000F706B7350020138745003E23AA2093851A +:10CBF00045003354F40202A3EF808FA00DC55945C0 +:10CC00001DA0AA2041664D4781467D16A545EFD05F +:10CC10004FCFB737002023A2A900138847E31DE1B7 +:10CC200023102B014545B640264496440649F25947 +:10CC3000625AD25A425BB25B225C925C025DF24D58 +:10CC40006161828083D70D0089072391F90083D722 +:10CC50000D00A29763D1770783A749000357AD0062 +:10CC6000930A2400A29798A305049317040103A430 +:10CC70004900C183C20A3E948357AD008325080052 +:10CC800093DA0A01A1831CA003A5490003D60D0075 +:10CC900056959730FB1FE780006A03D40D00C167EB +:10CCA000FD17569442044180E30CF9EC0509420952 +:10CCB00013590901F1B529450DF423102B01A5B72E +:10CCC0006DDC05B71E2181E789473E8582804111D1 +:10CCD00026C2444122C406C64AC09420D0402A84B9 +:10CCE00037F50600894513054591EF702FFE11C9F0 +:10CCF0003C202547E51793F7F70F6376F702E147E6 +:10CD000021A89420D04037F50600894513050592E7 +:10CD1000EF70CFFB71FD8947B24022449244024933 +:10CD20003E8541018280373900208356C9D9854725 +:10CD30001309C9D9F5D21A203697C166E3CEE6FCAD +:10CD400091659385257031459730FB1FE780802FD3 +:10CD5000AA84CD4771D1314681459730FB1FE780CA +:10CD600020641E208355090001460147B386E50073 +:10CD7000C206C182636BF702AE97C207C18319C2B4 +:10CD80002310F90023A004002146A2851385440046 +:10CD90009730FB1FE780205AB7370020938787E33F +:10CDA000984309EF84C3814785BF5040131547005E +:10CDB00005072A9636A6054655BF3E871C43F5FF54 +:10CDC00004C399BF011106CE22CC26CA4AC809E97C +:10CDD0008944F240624426854249D24405618280FA +:10CDE0002AC62A84280036896C845085EFF09FED8E +:10CDF000AA8465F1E30F09FC3E24F9DB9165938574 +:10CE0000557031459730FB1FE780C02305C53E2490 +:10CE100023200500232425015EA1B7370020938736 +:10CE200047E4984301E788C36DB73E871C43F5FF8D +:10CE300008C345B7CD4471BFB73700209387C7E219 +:10CE400098230DE3054798A3058909CDB73600203F +:10CE5000373500209386C6D6414691451305C5D285 +:10CE60006FF05FF601458280B73700202388A7D88E +:10CE70008280C167FD176315F5002E856FE02FB620 +:10CE8000411106C6EFE02FB009C5FD571EA12301D1 +:10CE90000500B2404101828001114AC806CE22CC71 +:10CEA00026CA85472A896392F5044A85EFE04FE157 +:10CEB00031E9C16437F606009385F4FF1307E100FA +:10CEC00089461306468F0545EFE01FEE2A84FD14C0 +:10CED00005C44C444A85EFF0DFF93087228581464E +:10CEE000A685EFF0EFB12A84E5B789476396F50090 +:10CEF0008545EF20200255D9F2406244D244424990 +:10CF000005618280EFE00FD76DB7011126CAB734F3 +:10CF100000209384C42522CC8834373400201304A5 +:10CF2000C4E3B73700203737002006CE4AC84EC6C4 +:10CF30002320040023A007E4232807E259C1138912 +:10CF400007E49307200C3305F5029165938515706E +:10CF5000930907E31905420541819730FB1FE780DC +:10CF6000600E90349307200C81453306F60208C00A +:10CF700019069730FB1FE780A0421C40983481457A +:10CF80009386870B7D5563E8E5069306800BB30611 +:10CF9000D7020146FD550507B6972320F900BE8646 +:10CFA0008EA2ACB2ACA22382060005069906E36904 +:10CFB000E6FEF95696A399463307D702BA9723A0FF +:10CFC000F90037B504001305657EEFD04F8D37C5E6 +:10CFD00004001305C599EF706FD637B5040013052B +:10CFE0008574EF10306AF2406244D2444249B2493B +:10CFF0000145056182802394A6F41386C6F42310AC +:10D000000600232406003106E31BD6FE8505938621 +:10D01000860B95BF411106C622C42A84EFC0EFA734 +:10D02000EFE00F9EB7370020A38787D8B7370020DF +:10D0300003A507E3EFE0AF9AB7370020238F87D827 +:10D040002244B24037D50400130585E941016F1031 +:10D05000706393970501C18763D10730B73700200C +:10D0600003C5F7D8797122D45AC806D626D24AD039 +:10D070004ECE52CC56CA2E8B9730FB1FE7804021F4 +:10D080002A8429C518219307000B631EF702B734C1 +:10D0900000208547938444E3DC849C4023150100F1 +:10D0A000B9E3EF0080759165938535709730FB1F6C +:10D0B000E78040F988C005E99C8491C74C2013059E +:10D0C0008400EFD00FDA2285EF503FFAB25022549D +:10D0D00021653345AB0092540259F249624AD24A63 +:10D0E000424B45618280373A0020614681451305F5 +:10D0F0004A009730FB1FE780A02A03494400894774 +:10D1000093044A00D289930A4A00631AF904F52568 +:10D110008AA02A2093054A00EF70BFB63A209E20CD +:10D12000162401ED63E3F6001EA40E243A85EFC039 +:10D13000BFF72285EFC09FCC41B763E3F6001EA482 +:10D140001E24D945938649000D463A852390FA005E +:10D15000EFC0DFE08D4571DD1385490065A8994773 +:10D160006319F9029305A1002285EFF02FD3AA8459 +:10D1700069D1D947639EF40C05092A201379F90F68 +:10D18000D945938649004A86EFC05FDDCA8555D1EF +:10D19000E1B7A1476318F9009305A1002285EFF0DC +:10D1A0009F99F1B7A947631AF9060A246C009740C2 +:10D1B000FB1FE780A0892A89630905122A2041669E +:10D1C0009306E10055477D16AD45EFC09FF3C8C0FB +:10D1D000AA8625CD834844000358E10030862A20E2 +:10D1E000814713074A00CA85EFF0AF8CAA84631FFA +:10D1F000050C2A2093054A00EF703FC61DD92A204E +:10D2000093064A002D46D945EFC05FD51DD1AD45E7 +:10D2100013054A00EFD0EFC429BFB147631BF90CD7 +:10D220000A246C009740FB1FE7804082AA8455CDFA +:10D230002A2041669306E10059477D16B545EFC0A7 +:10D240005FEC23A2AA00AA8631E11E24C5447C8596 +:10D250001830D147E30FF7EC5C202A209385490072 +:10D260002380FA003C8523829A002391FA00EF7014 +:10D270006FD0E30005EC2A20938649000546D94586 +:10D28000EFC0DFCDE30705EA8545F9B583484400E3 +:10D290000358E1003E2430862A20A68513074A0061 +:10D2A000EFF02F81AA841DE12A2093054A00EF7038 +:10D2B0001FC0E30005E82A20D94593064A003546F9 +:10D2C000EFC0DFC9B545E30605E679B5D9476393F5 +:10D2D000F400814403A54A009730FB1FE78080E3F8 +:10D2E000E38904E41E247C85A5B71E2485447C853F +:10D2F00085B7B9476318F9009305A1002285EFF0BF +:10D30000EFA4B5B5C1476318F9009305A1002285C4 +:10D31000EFF0CFE3A9BDC947631AF90013069100E6 +:10D320009305A1002285EFE03F9491B5D947631D95 +:10D33000F9009305A1002285EFE03F84AA84E31A57 +:10D3400005E2A3040100F5B3E147E314F9DE930518 +:10D35000A1002285EFE04FF119BD01458280F9CE91 +:10D36000011152C42E8A854522CC4EC656C206CE25 +:10D3700026CA4AC8AA8AB6893284EF10B039D14782 +:10D380001DC5B73700203737002083C707E5834620 +:10D3900017E5814419E0B684BE863737002003279D +:10D3A00087E493974400BA9763EDD400D547F240E1 +:10D3B0006244D2444249B249224A924A3E850561BA +:10D3C00082803E89C10703D727FF09C7850493F4EC +:10D3D000F40FD9BF31CC9565938525C013050002A4 +:10D3E0009730FB1FE78000C62326A90061D11306F2 +:10D3F00000028145938404049730FB1FE78040FAC4 +:10D400002311990023000900231359010DC4373754 +:10D4100000201C340326071C2304F900118C8327E9 +:10D42000C90011841180C0AF23A02901814741B7F1 +:10D4300023260900C1BF23044901FDB785473E8566 +:10D440008280B737002083C507E5B737002003A7E0 +:10D4500087E481476395F5008146368582803223D3 +:10D46000BA8619C2E30BA6FE850793F7F70F4107AB +:10D47000D5B7B737002003C607E5B737002003A7A5 +:10D4800087E481476315F6008146368582802E2326 +:10D49000BA8681C54C23E38AA5FE850793F7F70F6B +:10D4A0004107CDB7B737002083C537E5B737002030 +:10D4B00003A7071C81476395F50081463685828066 +:10D4C0001223BA8619C2E30BA6FE850793F7F70F5E +:10D4D0004107D5B7B737002003C817E5B737002095 +:10D4E00083A787E401476315E8008146368582807B +:10D4F000B223BE8609CAF2236317A600D04701C62D +:10D500003222E305B6FE05071377F70FC107E1BF27 +:10D51000411122C4404526C206C6AA8415C048440B +:10D5200009C59730FB1FE780E0BE484809C5973022 +:10D53000FB1FE78020BE22859730FB1FE78080BD60 +:10D540002685414681459730FB1FE78060E5B24064 +:10D550002244FD579CB4924441018280011122CCA7 +:10D560002A842A2106CE2EC6EF1020683246228554 +:10D570008145EF00F05622856244F24005616FF06C +:10D580003FF905C53A21411122C406C62A8411CBB0 +:10D59000DD45EF00F05722852244B24041016FF093 +:10D5A0003FF7B2402244410182808280411126C26D +:10D5B000B1469304C5FFB386D402B7370020138762 +:10D5C000071D06C622C4369736276397B60248431E +:10D5D00005C51384071D9307F00F6305F6001C2192 +:10D5E000639CC7009730FB1FE780C0B2B147B38789 +:10D5F000F402A29723A20700B240224492444101C0 +:10D600008280411122C42E8426C24946AA848145C3 +:10D61000228506C69730FB1FE78080D895CCDC2C8E +:10D6200013974700B737002083A7071CBA979A23A0 +:10D630001AA0BA23FE233AA0373700200357E7E4A5 +:10D640005AA09A207AA0BA201AA4DA203AA4FA2082 +:10D650005AA49A241EA87AA4B240224492444101BA +:10D660008280B737002083C507E5B737002003A8BD +:10D67000071CB737002003A687E40147814763945E +:10D68000E5003E858280142299CA544689CAD42E68 +:10D690009206C2966315D500850793F7F70F050725 +:10D6A0001377F70F4106E1BF130600643386C50206 +:10D6B00093069500AA8537D50400130525586F6099 +:10D6C0006F86411122C406C62A840835EF608F9FF9 +:10D6D000FD571CB4B240224441018280011122CC8A +:10D6E0004AC84EC652C456C25AC006CE26CA2A8955 +:10D6F000AE890144373A0020B73A00201D4B8347DA +:10D700001AE56365F40463990902B7390020373AD2 +:10D710000020930AF00F83C709E56364F4061144FF +:10D72000A1442285050442041306F00FCA854180F6 +:10D73000EFF0DFE7E31794FEF2406244D24442493F +:10D74000B249224A924A024B0561828083A78AE449 +:10D7500093144400BE949C208DC3FE20639F270138 +:10D7600063956901AA20EF10404826854E868145C1 +:10D77000EF0010372685EFF0BFD905041374F40FBE +:10D78000BDBF83278AE493144400BE949C208DC3BC +:10D790009C34638F5701FE20639C27012685EFF0A0 +:10D7A0005FF22685D145EF00B0362685EFF05FD6D3 +:10D7B00005041374F40F85B741677917630BE5020D +:10D7C000411122C406C685472A846399F500228543 +:10D7D0002244B240814541016FF05FF08947639672 +:10D7E000F5008545EF1000737DD1B2402244410120 +:10D7F000828082809D456FF07FEEB737002003D591 +:10D80000E7E48280B737002003C7C7E4011106CEE2 +:10D8100068876C8685476318F70070009305E10000 +:10D820000545EF50F01DF24005618280A947631D58 +:10D83000F6029C319821A207D98F1EA1BC31B821D4 +:10D84000A207D98F3EA1DC31D821A207D98F5EA1D2 +:10D85000FC31F821A207D98F7EA19C359825A2071B +:10D86000D98F1EA501458280054582809147631EA0 +:10D87000F6009C319821A207D98F1EA1BC31B82196 +:10D88000A207D98F3EA101458280054582809387FA +:10D89000C5FF93960701C1820D47636ED7003147DC +:10D8A000B387E702373700201307071DBA97A8A3ED +:10D8B0008EA3014582800945828093064020373738 +:10D8C0000020AA8763F4A60093074020F1172317CE +:10D8D000F7E4B73700202389B7E4B7370020238A5D +:10D8E000B7E482801905956542054111938535C0DD +:10D8F000418106C69720FB1FE780C07401C9B24072 +:10D90000E95541011733FB1F6700038EB240410107 +:10D910008280B7370020238907E4B7370020797168 +:10D920000547238607E4B73700202386E71C4ECE41 +:10D93000B7370020B739002022D426D24AD0373456 +:10D940000020B7340020A38A07E437390020B73716 +:10D950000020938939E506D652CC2AC6230804E470 +:10D96000A38804E4239707E4232409E4238009001F +:10D97000EF1040303245B7370020130600032382F2 +:10D98000A71C373500201305051D81459730FB1F67 +:10D99000E78000A1373A002003450A20130404E57C +:10D9A000938414E5130989E405CD9565938545C0F5 +:10D9B00012059720FB1FE780E068373700202320FF +:10D9C000A71C19CD03460A2093070A209C33238005 +:10D9D000C900814512069CA09730FB1FE780409C40 +:10D9E000B737002003C547269C209565938555C011 +:10D9F0003E951375F50F08A012059720FB1FE780D1 +:10DA000060642320A90051C110208145120697307F +:10DA1000FB1FE780E09803270900142081472507B2 +:10DA20007D56639EF604EF104045B1473305F5027D +:10DA30009565938565C0420541819720FB1FE7806E +:10DA40006060B737002023A4A71C2A8401CDEF1003 +:10DA5000C04231463306C502814522859730FB1FFF +:10DA6000E78000942254B25092540259F249624A1B +:10DA700037D504001305857B45616F10A0408507ED +:10DA800010A393F7F70F410769BF23000400238019 +:10DA9000040051BF41119397050126C206C622C456 +:10DAA0004AC0C187AE8463DE0708373900200345CA +:10DAB000491C9720FB1FE780A07D2A8429C91821D3 +:10DAC000930700096312F7041831CD476319F7066D +:10DAD000B73600200348250003C5B60A37370020B3 +:10DAE000834727E51306640081458146130727E530 +:10DAF000AA886316D80291C11CA31C2391C70345B1 +:10DB0000491C8545EF507F8F2285EF500FD6216548 +:10DB1000258DB240224492440249410182800C2268 +:10DB2000AE9793F5F70F93F7F80F63F4A50093F70B +:10DB3000F50F850693F6F60F090685455DBF092B9F +:10DB4000E1B793F715000145E9D7EF00305209CD51 +:10DB5000B737002083C727E581CBB737002003C53F +:10DB6000471C8545EF507F8913C514005DB7854676 +:10DB70002A8763FFC6029C319021A207D18F1EA184 +:10DB80006399D700BC31B421A207D58F3EA10145CE +:10DB9000828089460145639ED700BC31B421A2072B +:10DBA000D58F3EA3DC31D421A207D58F5EA382801E +:10DBB000054582809147631EF6009C319821A2079B +:10DBC000D98F1EA1BC31B821A207D98F3EA1014532 +:10DBD0008280054582809147631EF6009C31982122 +:10DBE000A207D98F1EA1BC31B821A207D98F3EA1AF +:10DBF0000145828005458280A1476318F6029C3169 +:10DC00009821A207D98F1EA1BC31B821A207D98FB4 +:10DC10003EA1DC31D821A207D98F5EA1FC31F821C9 +:10DC2000A207D98F7EA10145828005458280894760 +:10DC30006319F6009C319821A207D98F1EA10145D6 +:10DC40008280054582803E2279714ECE06D622D44E +:10DC500026D24AD01307F007AE896371F70209474D +:10DC60003AC47C86300093F5F50FEF00F076B250A1 +:10DC7000225492540259F249456182805A22D9466F +:10DC80002A89328463F7E6007E2263F4F600637922 +:10DC9000F70023140100300093F5F90F4A85F1B71E +:10DCA0000A2202C4EFF01F80AA8435C5EFF07F9BE3 +:10DCB0009C246369F5001146A246CE854A85EF0093 +:10DCC000706875B7340026869305F00F4A85EFF02B +:10DCD0000FE975F1A2471A24DC479AA33A20BAA3A8 +:10DCE0005A20DAA37A20FAA3DA209AA7DC4495C74F +:10DCF00093F4F90F2286A6854A858297C167FD179E +:10DD00002A86E31BF5FA22459947F9451CA144A14F +:10DD1000EFF09F99A9BF094645B7014671BFA947D2 +:10DD2000631DF6029C319821A207D98F1EA1BC3138 +:10DD3000B821A207D98F3EA1DC31D821A207D98F03 +:10DD40005EA1FC31F821A207D98F7EA19C359825D0 +:10DD5000A207D98F1EA501458280054582809C219E +:10DD60001CA19C311CB1BC31B821A207D98F3EA1A6 +:10DD7000828023220500D82189476304F7000545E6 +:10DD80008280F6210D47E37CD7FE9C45011106CE2B +:10DD900022CC26CA4AC84EC684339023A204D18C12 +:10DDA000138644006311D604A033BC23AE89220439 +:10DDB0005D8C9307C4FFC207C1832A896361F702A0 +:10DDC00003A589002311990023108900F15597209C +:10DDD000FB1FE78060412322A900014531A0228575 +:10DDE000EFF02FE671FD0545F2406244D24442490E +:10DDF000B24905618280397122DC2E841C204AD808 +:10DE000006DE26DA4ED619472A89B2856392E706DE +:10DE100030202800EFF01FDAAA8405E92884EFF00B +:10DE20004FE2AA890C3015C937F704002E86130774 +:10DE3000C7B234009D454A85EF00702F4E850946D4 +:10DE4000814579294E85EFF0AFECF250625426857A +:10DE50004259D254B2592161828089477C803C84E6 +:10DE60000A867C813C857C824A85EF00F056F1BFB2 +:10DE700049476398E70232202800EFF0FFD7AA84D1 +:10DE800069F5373500201305051D5E2599E38144AA +:10DE90006DBF1830142068253C000146CA85CD2C82 +:10DEA0006DB75147639EE70032202800EFF01F98BE +:10DEB000AA8441FD0C3030004A85EFF0DFD871B7FD +:10DEC0005947639BE70432202800EFF03F9AAA8469 +:10DED0002DFD2C844A85EFF0EFDF05C958453485C8 +:10DEE0001E23B697C207C1831EA3D5D35C47C5D3F3 +:10DEF000B737002083C727E5D9DBB737002003C534 +:10DF0000471C8545EF506FCF89B789473EC03C8499 +:10DF10000A860C307C8289BF0C300A8623100100EF +:10DF2000EF00904BADB75D71A6C256DA86C6A2C4AB +:10DF3000CAC04EDE52DCAA8A8831AE8432C6EFF007 +:10DF40004FD3B24501ED8144B640264426850649AB +:10DF50009644F259625AD25A6161828023020500C6 +:10DF60002311050083C9040085472A846399F900B9 +:10DF7000B0202808EFF0BFBFAA8405491DA09D4727 +:10DF80006391F90418218D47E31FF7FAB0202808A0 +:10DF90000549EFF05FC4AA8409E50546814522855D +:10DFA00081262285EFF0EFF108243C080147CE8658 +:10DFB0002686D685F12AE30909F82285EFF04FD5A8 +:10DFC00061B7CD47639BF90018219147E31DF7F630 +:10DFD000B0202808EFF0BFC545B7D547E395F9F65F +:10DFE000034A05008947E310FAF6B02028080549DE +:10DFF000EFF0FFD2AA8455F583570102A1EBB88454 +:10E000001306F0035C44930607FCC206C182636AF0 +:10E01000D600B085D94663F6C600B486D94563ED0F +:10E02000D5002A20BAA30549EF00303C035601026F +:10E03000D2852285A92CB5B7AC87BAA3D2A38EA36B +:10E04000F6A385471CA0014A0149CDB7014AF9BF93 +:10E050007971AA8522D426D22221AA84280806D63C +:10E06000EFF03FD1F24599E53DE185452285EFF09E +:10E070006FF975A0BC8415476395E706B8858D4791 +:10E0800063F7E7046800EFF09FCD3887DD4763FB57 +:10E09000E7008C86B70717008507100822853EC861 +:10E0A000EF0090333C87B88591076305F700228520 +:10E0B000EFF04FF41C8672466C00858B11062285AA +:10E0C00091CFEFF05FE601C52285EFF0AFF2884413 +:10E0D00049DD9720FB1FE780E00341BFEFF0BFD190 +:10E0E000DDB711476389E7001387A7FF4207418324 +:10E0F000854663EBE6023147F117B387E70237370E +:10E1000000201307071DBA979A2371D3A82330085C +:10E11000A28505204DFDB8849147E318F7F4B2506D +:10E1200022549254456182802C082285FD2445F1B9 +:10E13000FDB701114AC82A89314526CA06CE22CC2C +:10E140002EC6B2849720FB1FE780200F21C1B24565 +:10E150009307000A1EA12EA12A84214611058DC015 +:10E16000A6859720FB1FE780001DA2854A85EF400A +:10E17000BFF40145F2406244D244424905618280C5 +:10E1800081459720FB1FE780A021C5B70545DDB776 +:10E19000797126D2AA841305000206D622D42ECE87 +:10E1A00032CC36CA3AC83EC69720FB1FE780E0084B +:10E1B00029C56246F2454247D246B2472A84130532 +:10E1C00020FA08A010B02EA058A054B01305840067 +:10E1D000614691CFBE859720FB1FE780C015A285C1 +:10E1E0002254B2502685925445616F40FFEC814520 +:10E1F0009720FB1FE780C01ADDB7B250225492541B +:10E20000456182805845797122D406D62A84AE862B +:10E210002DC73E23FC85930720066397F504B73787 +:10E22000002003D6E7E47E236373F600B28713F67B +:10E23000F70F2E2B1C2B8D8F93F7F70F81E5890796 +:10E2400093F7F70FB297FD17B3C7C702FC863E20BE +:10E250006E200824FC8401473C080146EFF05FF380 +:10E26000B250225445618280582FB737002083A7CF +:10E27000071C1207BA97FE23D1BF2EC61946814547 +:10E2800028089720FB1FE780A011B246C9B7797113 +:10E2900022D406D626D22A8499CD814701479306F7 +:10E2A00000062E866E200824EFF09FEEB250225416 +:10E2B000925445618280B284280059469720FB1F02 +:10E2C000E780000E648499E43E2048446C007C851D +:10E2D000EFF02FB33C000147930600060146D9B783 +:10E2E000797106D6814791E93E21584570867C8434 +:10E2F0003C0001C73E237C853C002E866E2108250C +:10E30000014793060006EFF0BFE8B25045618280F6 +:10E31000411122C406C61C2111472A846392E702D8 +:10E320002E866E21082581470147CD46EFF05FE636 +:10E3300049466E202244B240154541016FF00FA7B7 +:10E3400013F7B70F89466317D7000146EFF03FF484 +:10E350005146C5B70D476398E7002244B2400146D5 +:10E3600041016FF0FFF7B2402244410182809A21BF +:10E37000B146B737002071173307D7029387071DBF +:10E38000BA97D84301EBD841AAA70145D8C3BA210F +:10E390009AA7828059458280797122D4404526D23D +:10E3A0004AD006D6AA842E8931C4484419C597207C +:10E3B000FB1FE78020D6232604001E20EE208824A1 +:10E3C0007C853E200147930640067C861E244A86B3 +:10E3D0007C871C483EC8BE207C843C00EFF05FDB9D +:10E3E000A30E240123280400B2502254925402594F +:10E3F000456182802800314681459720FB1FE780D8 +:10E4000020FABE20EE2088247C8401473C0093063D +:10E4100040064A86EFF0DFD7C1BF797152CC2A8A15 +:10E420008A2126D206D622D44AD04ECE56CAAE84EF +:10E43000EFF02F8119E1854795A84045AA8965DC51 +:10E440007E21E39A47FF1E2463890710542CB73AB4 +:10E45000002003A70A1C9206FD173697C2077A23ED +:10E46000C1831EA46316F70093053006EFF09FD911 +:10E470005C48A5EFC840034915001C2122093369F7 +:10E48000F900BE2013072900631CF702F9559720F5 +:10E49000FB1FE78060D5C8C02391240103C5890014 +:10E4A0002686D285EFF0FFC8814721E1B250225481 +:10E4B00092540259F249624AD24A3E8545618280AD +:10E4C0009565938515C04A859720FB1FE78080B727 +:10E4D00048C8C840231C2401F9559720FB1FE7803A +:10E4E000A0D0BE20C8C0F917BEA0484825CDB22094 +:10E4F000362C1E2C3308D60063C80707582C83A778 +:10E500000A1C95451207BA97BE2363C90705CC407C +:10E5100036959720FB1FE78000E23A2CBE20BA9781 +:10E52000C2071A2CC1833EACE397E7F003D729005A +:10E5300003C58900300078845848D2857C853AC666 +:10E54000EFF03FBF11C548489720FB1FE78080BC14 +:10E55000232A0400232C0400F9BD99454E85EFE0E1 +:10E56000FFFFD1BDA545DDBF9145CDBFBA2171CB20 +:10E57000B737002083D6E7E4ED4763E5E60C0111E9 +:10E5800022CC2E8426CAAA844840914506CE9720E4 +:10E59000FB1FE78060C53E20AA861CA13E20A18308 +:10E5A0001CB11E203CA11E20A1833CB13220C167BA +:10E5B000F9171106420641826394F4042AC43145D6 +:10E5C00032C69720FB1FE78040C7AA85CD471DC1F3 +:10E5D000930700F91CA13246F957A2463EA189478C +:10E5E0005CA1B737002072A114C503C5471CEF40DA +:10E5F000BFAC8147F2406244D2443E8505618280CF +:10E6000081452685EF405054AA8711E9B73600208E +:10E6100003C726E565D37D172389E6E4E1BF0947F3 +:10E620006304E5021D476303E50249476302E5020F +:10E630007D47E311E5FCB736002003C726E5814797 +:10E64000D1BFED473E858280D1476DB791475DB719 +:10E6500089474DB701114AC831471309C5FF330730 +:10E66000E902B737002026CA9384071D06CE22CCC4 +:10E67000BA94D84029C71384071DB737002083C632 +:10E6800027E5854795C668849E24AA242C003AC6AF +:10E690007C85EFF0BFED11C5C8409720FB1FE780D8 +:10E6A00060A7B147B307F902A29723A207008547E5 +:10E6B000F2406244D24442493E85056182808147EE +:10E6C000C5BF797126D24445373700204AD0FE2095 +:10E6D0000359E7E452CC06D622D44ECE56CA2A8A33 +:10E6E00063F327013E89BA284209135909019E287C +:10E6F00035CF998F4A8463D5270113940701418050 +:10E7000089452285EFF00F9EAA89CD4A31C5BE20EA +:10E710002AC660857C84BE2899EB9E289309250033 +:10E720001CA19E28A1831CB1637424058228BE28E5 +:10E73000CC4422864E85BE959720FB1FE780A0BF64 +:10E7400003556A002C00EFF07FE2AA8A15C54E85BA +:10E750009720FB1FE780009CB250225456859254AC +:10E760000259F249624AD24A45618280890759B703 +:10E7700079144204418065BFBA289E203A94FD175F +:10E78000C20742049A28C18341809EA0A2A8637652 +:10E79000E400F9F3FD57DCBCC1B781455285EFF0C9 +:10E7A000BFBF5DBF79714AD03739002052CC034AD0 +:10E7B00059E522D456CA5AC85EC662C406D626D2C5 +:10E7C0004ECE5284B73A0020054B930BF00F373CE6 +:10E7D000002083A78AE493144400BE9483C90400F4 +:10E7E000639B6907DC44A5CBD84735C79A2329CB5F +:10E7F000B737002083C727E599CF2685EFF07FEC58 +:10E80000AA8515E9B737002083C717E505046351CA +:10E81000F402A30A89E4B25022544E85925402595C +:10E82000F249624AD24A424BB24B224C4561828045 +:10E83000A30A09E4CDB72685EFF01FB68149E1BFF1 +:10E84000DC3F639A7701930520062685EFF09F9BB6 +:10E85000DC44A38E070083471CE505041374F40F02 +:10E860006363F4000144E31644F7C9BF4111154541 +:10E8700006C6EFF03FDE09C50545B2404101828082 +:10E880001945EFF03FDD6DF91145EFF0BFDC6DF597 +:10E890001D45EFF03FDC6DF1B737002083C717E56A +:10E8A000E9DFB24041016FF0FFEF9E210D47F11704 +:10E8B000C207C1836363F706DC41A5C3411122C4CB +:10E8C0002E84854526C206C6AA84A92529C926857F +:10E8D000B92BC167F917638FF40009ED3E2099CB7E +:10E8E000162019476393E604373700200357E7E4FF +:10E8F00063FDE702B737002083C727E5A285268599 +:10E9000099C72244B240924441016FF03FC622446D +:10E91000B240924441016FF09FA509458280514564 +:10E92000B24022449244410182806D45D5BF397185 +:10E9300026DA4ED6AA84AE895D4589454AD806DED8 +:10E9400022DC328936C63AC4EFE0DFF935C122470E +:10E950002A84014511C7B24613054400B6850297C3 +:10E960009357850023003401A30024013CB0954750 +:10E97000FC84B737002083C727E528A01105E88568 +:10E9800022CE2C08268595C3EFF05FBEAA8411C560 +:10E9900022859710FB1FE780E077F25062542685AE +:10E9A0004259D254B25921618280EFF05F9CF9BF85 +:10E9B000CD44E5B7797126D24AD052CC56CA06D694 +:10E9C000BA8A22D44ECE19472E89B284368A6395EC +:10E9D000E5062A220944EFE0DFA62AC635C55C45D4 +:10E9E00083596500BE239EA0B247B7360020154765 +:10E9F0002380570103C6C61CBAA31307160013775A +:10EA0000F70F2386E61CD0A301E705472386E61C03 +:10EA100051476317E9001547BAA0DC479A249AA723 +:10EA20005287A686CA854E85EFF07FF02A8432454C +:10EA300015C4EFE0FFAD09A842867400BE85AA891F +:10EA4000EFE0FF912A844DD12285B2502254925496 +:10EA50000259F249624AD24A45618280F945EFE0A3 +:10EA6000BFC4DDB79E211CA19E21A1831CB1BE2184 +:10EA70003CA1BE21A1833CB1114582809E211CA1F5 +:10EA80009E21A1831CB1BE213CA1BE21A1833CB12A +:10EA9000DE215CA1DE21A1835CB1FE217CA1FE21EF +:10EAA000A1837CB1214582809E211CA19E21A1834E +:10EAB0001CB1094582809E211CA19E21A1831CB10D +:10EAC000BE213CA1BE21A1833CB1DE215CA1DE219F +:10EAD000A1835CB1FE217CA1FE21A1837CB19E2596 +:10EAE0001CA59E25A1831CB5294582809A218546B7 +:10EAF000AA8718A19A21218318B19A216319D700F6 +:10EB0000BA2138A1BA21218338B111458280094543 +:10EB1000631DA700BA211945B8A3BA212183B8B350 +:10EB2000DA21D8A3DA212183D8B382809E211CA1C7 +:10EB30009E21A1831CB1BE213CA1BE21A1833CB179 +:10EB400011458280797126D24AD04ECEB2842A896C +:10EB5000AE8929468145480022D406D636849720BE +:10EB6000FB1FE780E08364868DE43E207C82B7371C +:10EB7000002083D7E7E47C845C4481CFD42F3737EF +:10EB800000200327071C92069E2736973A237C8590 +:10EB9000788337F704004A85130767AB540013F6F0 +:10EBA000F90FD545EFF0BFD82A8911C195E0854707 +:10EBB0001CA023020400014681452285EFF02FEDC1 +:10EBC000B25022544A8592540259F24945618280DA +:10EBD0002285EFE0FF93EDB737F70400B286130705 +:10EBE000C7AE2E8685456FF09FD401116887B7F6B2 +:10EBF00004004165700001489307F00F0D479386AC +:10EC000046A699457D1506CEEFF0DFDAF2400561A4 +:10EC10008280B7F60400B28701482E86114793869A +:10EC2000C6A7C9456FF01FD937F70400B28613078E +:10EC300087AA2E86CD456FF09FCF011122CC3734A5 +:10EC400000201304842026CA4AC84EC606CE2A894C +:10EC5000AE89930404031C4081C7CE854A85829700 +:10EC60001104E31A94FEF2406244D2444249B2498C +:10EC700005618280B737002003C5170B411122C4FC +:10EC800037340020937735001304C42509811CB460 +:10EC9000AA9706C626C21CA4ADCB1305C0033385B4 +:10ECA000A702A5658505B73400209710FB1FE780F4 +:10ECB000603910249307C00381453306F60223A26E +:10ECC000A4209710FB1FE780A06D83A74420142485 +:10ECD000014789077D566341D7022244B2409244DE +:10ECE00037350020130600038145130585204101B7 +:10ECF0001713FB1F6700C36A92A32381070023A594 +:10ED0000070205079387C703F9B7B240224492442C +:10ED100041018280011122CC2EC632C406CE2A8443 +:10ED20009720FB1FE78040D72246B24511E9C16713 +:10ED3000F9176303F4005145F24062440561828093 +:10ED400054555C218DC213F7270141456314A70078 +:10ED500015457DF2C18B3D45E5D3BC2E0145E3FD54 +:10ED6000B7FC3145D1BFC18B0145F9F71545E9B76E +:10ED7000797126D24AD0B7340020416922D44ECED0 +:10ED800052CC56CA5AC806D6AA8901449384C425CF +:10ED9000373A0020930AC0037D19054B9C24636415 +:10EDA000F400014525A8B307540303274A20BA9766 +:10EDB000BA236316270105041374F40FC5B7C833CB +:10EDC000300093856700EFC0D16F1946CE852800CB +:10EDD0009710FB1FE7802067E31F65FDB2502254A8 +:10EDE00092540259F249624AD24A424B45618280AA +:10EDF000B737002083C54726C166B737002003A771 +:10EE00004720FD1681476395F500014632858280D3 +:10EE1000035827003A866306D80003480700E30733 +:10EE2000A8FE850793F7F70F1307C703E9BF411142 +:10EE300006C69720FB1FE78020C609C54A29B240B5 +:10EE4000410182800145E5BFB737002083C64726D0 +:10EE5000B737002003A74720014581471107639377 +:10EE6000F6008280102301C605051375F50F85078E +:10EE700093F7F70F1307C703DDB7B737002003C5B4 +:10EE80004726828037370020930687208147130763 +:10EE9000872031468C4291E58A07BA9788C301459D +:10EEA000828085079106E397C7FE4D458280411118 +:10EEB00006C622C49720FB1FE78000BE0DCD2A8422 +:10EEC0002A218545EFF07FD7485409C59710FB1FCD +:10EED000E780402422851306C00381459710FB1F5D +:10EEE000E780004CFD573EA0230204000145B240DC +:10EEF0002244410182800945DDBF411106C69720A9 +:10EF0000FB1FE78060B909C54825B24041018280F6 +:10EF10000145E5BFC167F9176305F502411122C438 +:10EF200006C62E849720FB1FE78000B7AA870145FD +:10EF300089C7C823698C33358000B240224441011F +:10EF4000828005458280011106CE2EC69720FB1FC8 +:10EF5000E78080B4854701C95A29B24585476304D3 +:10EF6000B7004EA98147F2403E850561828029CDD8 +:10EF700001114AC84EC637390020C16922CC26CAC1 +:10EF800052C456C206CE0144AA841309C925373A91 +:10EF90000020930AC003FD1983478900634BF400E6 +:10EFA000F2406244D2444249B249224A924A05613F +:10EFB00082803305540383274A203E953E21638394 +:10EFC000370182940504C9BF8280B737002003C689 +:10EFD0004726B737002083A74720C1660145890728 +:10EFE0000147FD1691456313E600828003D80700B0 +:10EFF0006309D80003C8A7006315B8000505137599 +:10F00000F50F05071377F70F9387C703E9BFB737E6 +:10F01000002003C64726B737002083A647200147B4 +:10F02000814791066310E602858393C7F7FFC20705 +:10F03000C18305456362E50285473395A700420514 +:10F04000418182808C2299C1CE36CD8F05071377FE +:10F05000F70F9386C603F9B793F61700F1FE05057F +:10F0600085831375F50FF9B7797156CAAA8A2E856B +:10F0700026D24AD04ECE52CC5AC85EC662C406D6FC +:10F0800022D4AE84328B368CBA8B3E8AC2894689B2 +:10F090009720FB1FE78040A03DED41657D1597203F +:10F0A000FB1FE780609F2A84554531C81946DE85DD +:10F0B00013056400A30284019710FB1FE780A027BB +:10F0C0008357010326A0230264013EA8835741030E +:10F0D00023005401232604025EA8230644012317BB +:10F0E000340123182401EFF09FF20AB8232A040206 +:10F0F0002685232C04028145EFF03FB40145B25030 +:10F10000225492540259F249624AD24A424BB24BBB +:10F11000224C456182804545DDB7B737002083C664 +:10F120004726B737002003A7472081476395F6009D +:10F1300041657D1582803A861307C703835547FFD3 +:10F140006394A5002A228280850793F7F70FF9BF01 +:10F15000B737002003C84726B737002083A64720CB +:10F16000416601477D16954811436314E800014547 +:10F170008280BE223685638EC702CC5A9DC9BC31BF +:10F18000AC2189CD938597FD93F5F50FE372B3FE1E +:10F190009387D7FA93F7D70F89EF82809385F7FD8E +:10F1A00093F5F50FE3F6B8FC9387D7FA93F7D70FEB +:10F1B000E1D305071377F70F9386C6037DB7B737FB +:10F1C000002083C547264166B737002003A74720A4 +:10F1D0007D16814725486394F500014582803623DA +:10F1E0003A85638BC600545B81CAB4329386E6FDD0 +:10F1F00093F6F60FE374D8FE850793F7F70F13071E +:10F20000C703D1BF011122CC2A84494506CEEF6045 +:10F210007FC31DC12AC622859720FB1FE780C087B8 +:10F2200001CD6244B737002032460E39F24003C5A3 +:10F23000F72505616F404FBAF24062440561828054 +:10F2400039714ED652D4AE892A8A9305300541458C +:10F2500026DA4AD856D206DE22DC32C63689BA8A87 +:10F260009710FB1FE78000DECD4429C92A8489441A +:10F270006381090432468145F08241469710FB1FA5 +:10F28000E78000125686CE8522859710FB1FE78007 +:10F29000800A2146630E0902CA8528089710FB1FC1 +:10F2A000E7806009A28650082C085285EF3010795B +:10F2B000AA8422859710FB1FE780C0E5F2506254B4 +:10F2C00026854259D254B259225A925A21618280DB +:10F2D000814528089710FB1FE780800CE1B741119A +:10F2E00022C4405926C206C6AA8429CC085409C59E +:10F2F0009710FB1FE78000E2285809C59710FB1FF5 +:10F30000E78040E1685809C59710FB1FE78080E05F +:10F31000285C09C59710FB1FE780C0DF685C09C542 +:10F320009710FB1FE78000DF0325040809C597102D +:10F33000FB1FE78020DE22859710FB1FE78080DD22 +:10F3400023AA04022244B73700208E38B2409244E8 +:10F3500003C5F72541016F402FD0411126C206C6D3 +:10F3600022C4AE849710FB1FE780007329C14C595B +:10F370002A8495CD83A8C50703A88507FC59B859E9 +:10F38000F4219221AC212685EF60DFB32285EFF0D6 +:10F390001FF5EFF0DFE201CD2244B7370020B24085 +:10F3A000924403C5F725854541016F400F85B24062 +:10F3B0002244924441018280011122CC06CE2A844B +:10F3C0002EC69710FB1FE780206D5C5989CF9E23C6 +:10F3D000B245639A870085476397F5006244F2401F +:10F3E00005616FF0DFEFF2406244056182804111F8 +:10F3F00006C622C426C2EFF0BFD529C14059AA844F +:10F4000015CC3C209DC7B737002083A7C72389C7E9 +:10F41000DC4399C32285829738309307F002631F3B +:10F42000F7002244AA20B2409244814541016FF086 +:10F43000DFF2B737002083A78723D1BFB240224431 +:10F44000924441018280411126C24AC006C622C4AC +:10F45000AA842E899710FB1FE780006405CD4059D0 +:10F4600055C41E206394970A3C301307100263951D +:10F47000E7083C20ADCF7C5403270408DE2B15E3BE +:10F4800013F7170019CF18545A23058B19CB93077C +:10F4900020023CB0B2402244924402490545410159 +:10F4A000828013F7270001CB18545A23098B01C718 +:10F4B00093074002F9BF918B81CB1C54DE23918BC3 +:10F4C00081C793076002F1B7B737002083A7C7232E +:10F4D000F1D3DC43E1D32285829738309307F002E1 +:10F4E0008145E319F7FA2685EFF03FE765B7B737AF +:10F4F000002083A78723E9BF1307A0026398E700D2 +:10F500006304090013092003CA85F1BF631C0900C5 +:10F5100026859710FB1FE780205809C55C2193E7DB +:10F5200007015CA1A6854A85EF60AFABA5B77971ED +:10F5300026D29947EC85AA842E858D4522D406D6FD +:10F5400032C636C4FC84EFE0EFB92ACE4D441DC16B +:10F550003246A246AA85328582962A8419E52C086D +:10F560002685EFF08FB42A8411C572459710FB1FD2 +:10F57000E78040BA2685EFF0FFC82285B2502254BA +:10F580009254456182804111B716050022C42E862F +:10F590002E849386C6DD894506C626C24AC02A89BE +:10F5A000EFF0FFF80C20AA844A85EFF01FDBB24091 +:10F5B000224426850249924441018280B7370020C7 +:10F5C00083A7872385CB9C4395C71D71A2CC86CE8C +:10F5D000984110082A843AC8D84185453ACA82978A +:10F5E00011C548862A206C00EFF0FFF9F64066440A +:10F5F000256182808280AE8711CD785501CF14239A +:10F6000094A1143394B1342BB4A1142F584BB4B13A +:10F61000D8C18280414681453E851713FB1F670094 +:10F6200023D8B737002083A7C72391C703A3870038 +:10F6300063030300028309458280373700200327D4 +:10F6400087441DC75843AA8705450DC703A507086A +:10F65000411106C6930605021306050C930505061F +:10F66000130505040297B2401375F50F410182801E +:10F670000545828082804DC9357122CD2A840A21B8 +:10F6800026CB4AC94EC756C306CF52C55AC1DEDE85 +:10F69000B68AB2892E899710FB1FE780E03FAA84C3 +:10F6A00031C50C182285EFF01FF53C20138A640049 +:10F6B000A9CBEF507FED2A8B014583CB5400EF504F +:10F6C000BFEAAA840C100818EF10E05408542C105C +:10F6D000EF100055D288268A56C05E88D2875A8796 +:10F6E00014103010CE854A85EF20207CFA406A4401 +:10F6F000DA444A49BA492A4A9A4A0A4BF65B0D61EA +:10F700008280EF507FE8AA8B014503CB5400EF5075 +:10F71000BFE52ACE08540C10EF10E04F2C1008184B +:10F72000EF100050F2484DBF8280C14719C91455EF +:10F73000C14781CA785511C7BC32BD4663F3F60094 +:10F740001C2F3E858280894779C9F1C9411106C6BF +:10F7500022C426C21C312E849CA13C219CB13C3188 +:10F76000BCA15C21BCB15C31858B93968700DE2106 +:10F7700093F7F7EFD58FDEA1543193F7F7DFA206A9 +:10F7800093F60620DD8ED6A1583193F6F6BF2207F8 +:10F7900013770740558FDAA15C31FD769386F67FAB +:10F7A0008D87858B758FAE07D98FDEA17421F99B6C +:10F7B000858ADD8ED6A178219377270013F7D6FFAF +:10F7C0005D8FDAA17C2193F647009377B7FFD58F41 +:10F7D000DEA17821DD9B4D45218BD98FDEA1EF6025 +:10F7E0006FE6AA845145EF60EFE5383093F4F40FEB +:10F7F000C947636097021375F50F636CE500142029 +:10F800001147E1476367D700143005476363D700AA +:10F810008147B240224492443E85410182803E8528 +:10F82000828015C1AA8709458DC141112E854146A7 +:10F830009385170006C69710FB1FE780C0AFB24044 +:10F8400001454101828009458280828089470DC53A +:10F8500085C5411106C61831AE87194698A1930592 +:10F860002500138517009710FB1FE780C0ACB2403E +:10F8700081473E85410182803E85828015C1AA87ED +:10F8800009458DC141112E8541469385170006C655 +:10F890009710FB1FE78020AAB240014541018280FA +:10F8A000094582808280894705C99DC5411106C6E8 +:10F8B00038211431AE872207558F9AA1214693052E +:10F8C0003500138527009710FB1FE780C0A6B240C4 +:10F8D00081473E85410182803E85828015C1AA878D +:10F8E00009458DC141112E8541469385170006C6F5 +:10F8F0009710FB1FE78020A4B240014541018280A0 +:10F90000094582808280894709C981C91831BD466D +:10F91000E14763E4E60098A181473E85828015C1F6 +:10F92000AA8709458DC141112E854146938517004F +:10F9300006C69710FB1FE78000A0B24001454101B9 +:10F94000828009458280828015C1AA8709458DC1C0 +:10F9500041112E8541469385170006C69710FB1F5F +:10F96000E780609DB2400145410182800945828067 +:10F9700082801DC1AA87094595C141112E851306B4 +:10F9800000049385170006C69710FB1FE780A09A16 +:10F99000B24001454101828009458280828015C1C3 +:10F9A000AA8709458DC141112E85414693851700CF +:10F9B00006C69710FB1FE7800098B2400145410141 +:10F9C00082800945828082801D71A2CC2A840845EC +:10F9D00086CEA6CA23060100042135479387F4FF8B +:10F9E00093F7F70F6364F70C37E706008A071307EE +:10F9F0004729BA979C4382870C08EFF0DFD4C947A8 +:10FA00006310F50299475C862A206C00EFF0BFB7BF +:10FA1000F6406644D644256182800C08EFF01FEC66 +:10FA200031C51C86F5F32A20EFF0CFFDD5B70C08C1 +:10FA3000EFF0FFEEF5B70C08EFF0FFECD5B70C08D0 +:10FA4000EFF03FDEF1BF0C08EFF0FFE5D1BF0C088F +:10FA5000EFF0DFE2F1B70C08EFF05FDFD1B70C0891 +:10FA6000EFF09FEE75BF1C312308F1002A2097109C +:10FA7000FB1FE7806002A14705C15825631AF70202 +:10FA8000B737002003A7C7239D4719C7184309C7E5 +:10FA90001008A6850297AA875C8661B70C08EFF06C +:10FAA0005FEDBDBF0C08EFF09FEF9DBF9D47A1BF6D +:10FAB000B737002003A78723C1BF011122CC06CE90 +:10FAC00026CA4AC84EC61821930720092A84631300 +:10FAD000F7121C3139476393E70A5621096761071A +:10FAE00081476391E610B739002003A5C924CE846D +:10FAF000630A050E0C4403C90500631E09001C219E +:10FB000085052146A9CF29059710FB1FE780A08214 +:10FB100083A7C424B5C349459700FB1FE780E07164 +:10FB20002A840DC5930710FC1CA1A300250183A501 +:10FB3000C4240905414689059700FB1FE780A07F83 +:10FB400083A7C424A2858833EF300FD703A5C4242C +:10FB50009700FB1FE780005C23A6042431A8090559 +:10FB60009700FB1FE780207DEF30006D05494DF1C8 +:10FB700083A7C924238027018547ADA01307E0038D +:10FB80006398E70838219547631CF7024A21EFF094 +:10FB9000CFB69147E312F5FEB737002083A787233E +:10FBA000E1DF03A38700E30903FC72244A209305E5 +:10FBB00064006244F240D2444249B2490561028382 +:10FBC000A147631CF7006C204A206244F240D244F3 +:10FBD0004249B24905616FF01F87930600038147D0 +:10FBE000E303D7FEF2406244D2444249B2493E8523 +:10FBF000056182809306000A8147E315D7FEEFF086 +:10FC0000BFDC084435D99700FB1FE780A050ADB793 +:10FC10008147C9BF011126CA06CE22CC89440DCD29 +:10FC200085CDAA842E8468008D45EF506FE71C8730 +:10FC30002685228693F7F70393E707046C005C8719 +:10FC4000EF20A01DAA8409E90D466C0013053400BD +:10FC50009700FB1FE780206EF24062442685D24465 +:10FC6000056182805D714EDE86C6A2C4A6C2CAC08E +:10FC700052DC56DA5AD85ED6894945CD5DCA138B17 +:10FC80004500420B135B0B01AE8A2A8A93053005AF +:10FC90005A85B2849700FB1FE780C03A2A84CD4979 +:10FCA00049C9EF505F902A895686D285935A8900B8 +:10FCB000135A0901937BF90F1305440093FAFA0FC5 +:10FCC000137AFA0F135989019700FB1FE780207CF4 +:10FCD000A301740123015401A30044012300240162 +:10FCE000EF50DF8BAA85414608089700FB1FE7808D +:10FCF000007A214734005A86A2850808EF20603830 +:10FD0000AA891DE121462C0023807401A38054019F +:10FD100023814401A3812401138544009700FB1F24 +:10FD2000E780E076EF50FF8822859700FB1FE78091 +:10FD3000603EB64026444E8596440649F259625AC2 +:10FD4000D25A425BB25B6161828001114AC82A8942 +:10FD50002E8506CE22CC26CA2EC69710FB1FE78022 +:10FD6000A0D355CD405955CC5C300947B24593F6E8 +:10FD7000B70F6386E60011474945639DE7061E20DD +:10FD800009456399B706930484004146CA852685D0 +:10FD90009700FB1FE780205A4146CA85130584015E +:10FDA0009700FB1FE7802059383085469307F7FE00 +:10FDB00093F7F70F63E6F6041306C4033285C145D3 +:10FDC00032C6EF50EFCD32469306C402A685228597 +:10FDD000EFF07F8A3C2089CB22856244F240D244F6 +:10FDE000424905616F10C0073830C947E306F7FE86 +:10FDF0003CB00145F2406244D244424905618280F0 +:10FE0000930710050145E317F7FE3C20E5D722854F +:10FE10006244F240D244424905616F10A00A09458C +:10FE2000D1BF4945C1BF397152D42A8A328526DAF9 +:10FE30004ED606DE22DC4AD8AE8932C69710FB1FAA +:10FE4000E78080C5C94451C14059C9443DCC1E20FA +:10FE50003246639CC7065C30A18BB1CB373900209A +:10FE6000832789449304E00FADC39C47B9CF930423 +:10FE7000840126854146D2859700FB1FE780A04B71 +:10FE8000832789448325040826869C479385050497 +:10FE9000180881462E858297AA844146CE85080897 +:10FEA0009700FB1FE780205A93F4F40F11E1894477 +:10FEB00038309307B005631AF7002285EF00707D94 +:10FEC0003C2089CF9307C0053CB0F2506254268590 +:10FED0004259D254B259225A216182809307E005D7 +:10FEE000E5B739C9011126CA06CE22CCAA84094534 +:10FEF0009DCD0D4628002E848D059700FB1FE780C1 +:10FF000080431C8570002C0093F7F70393E70704E8 +:10FF100026855C85EF10707019E90D46A285680092 +:10FF20009700FB1FE78020527D153335A000F2407B +:10FF30006244D2440561828009458280011152C425 +:10FF40002A8A32854EC656C25AC006CE22CC26CA4E +:10FF50004AC82E8BB28AB6899710FB1FE780C0B3C0 +:10FF600009ED8944F240624426854249D244B249AF +:10FF7000224A924A024B056182805C592A89C54413 +:10FF8000F5F34D45EF501FEC1374F50F5145EF504D +:10FF90007FEBE38809FC83C78901E3E487FC1375E1 +:10FFA000F50FE360F5FC9305300513054008970055 +:10FFB000FB1FE7802009232AA9022A84CD445DD1B2 +:10FFC0001306400881459700FB1FE780603DA301B1 +:10FFD0000400230144012302640123105401232659 +:10FFE000340723240402A30204008144E30C0AF62C +:10FFF0002285EF003061AA8435D54A85EFF02FAE17 :020000025000AC -:10000000414681450A859700FB1FE780003835C4CB -:100010000359040063139906383093071002631FD5 -:10002000F7028327040899CF2C58A1C94A85EF10FD -:1000300030270545F2506254D2544259B259225ADF -:10004000216182808A861306C4059305C4031305C3 -:100050008400EF00F02D15E18A85C9BF2C5891CDA1 -:100060009E29639C47012146C9054E859700FB1FC9 -:10007000E780003719C12C5855BF26859700FB1F14 -:10008000E78040722A84054555D44C54B1C59E2959 -:10009000639447052146C9054E859700FB1FE780FD -:1000A00020348547631AF502B727002083C7373508 -:1000B00089C74C54BC3D639AA70CBD452685EF10FB -:1000C000B018B727002083A747570145A5D71D457E -:1000D000894582970145B9BFB737002003C7878993 -:1000E000B729002093890954058B3E8929C3B73766 -:1000F0000020583083C70789631BF702B7350020FB -:10010000194693851589130564009700FB1FE78046 -:10011000202D8547631DF50083A7490381C79145BD -:100120001D458297BD452685EF10101219B7373748 -:1001300000200347778983A7490331CB0347898987 -:10014000098B09CB81C795451D4582972685EF1000 -:100150007015C5B581C78D451D45829741468145BE -:1001600008089700FB1FE7804022B72500201946AA -:100170009385455A08089700FB1FE780C01D0C08AF -:100180002E850A86EFF060278A8526854DB5854540 -:10019000C5FF6DBF797122D440594AD04ECE52CCA2 -:1001A00006D626D2AA892E8A3289630F04602A21B4 -:1001B0001E20638CA700A144B25022542685025908 -:1001C0009254F249624A45618280242099C09D443C -:1001D000E5B79387F5FF93F7F70F3147E369F7FE2C -:1001E000379706008A07130707FBBA979C43828755 -:1001F0001C54F1F393053005130500049700FB1F11 -:10020000E78040E408D445D903470900914763F4E7 -:10021000E7008D4455B7034719008547E3EBE7FE38 -:1002200013060004CA859700FB1FE780C0120C5418 -:100230007054A3020400D4415C4A858AFD8E5E2A74 -:10024000F99BD58F5EAAD841544AF59B0583058B4F -:100250008582F98E8606DD8E56AADC41584AED9AD3 -:100260008983858B09837D8F0A07558F5AAAD441CC -:100270005C4A5D9B8D82858A8D83F58F8E07D98F31 -:100280005EAAD841544A93F7F7EF2183058BA182E8 -:10029000F98EA206DD8E56AADC41584AA583858BCD -:1002A00025837D8F9317970013F7F6DF5D8F5AAA8A -:1002B000D4415C4AA982858AA983F58F9396A700C9 -:1002C0009377F7BFD58F5EAAD441584AAD82858A0D -:1002D0002D83758FFD769386F67F2E07F58FD98F48 -:1002E0005EAA3C2A03250408A18BF1CFBC21A18B77 -:1002F000F9CBE31205EC93053005130500109700C8 -:10030000FB1FE78020D42320A40801D57C54A3023E -:10031000040003471900943399E63DCF5C3093E71E -:1003200007015CB021A0A1475CB06DFB2285EFF016 -:100330002FE56C54BC29858B89CB1C54BC238D8B39 -:1003400089C77C2093E717007CA08327040889C70E -:100350007C2093E787007CA05C3005476398E70A20 -:1003600041468145130584009700FB1FE780E001AB -:1003700041468145130584019700FB1FE780E0009B -:10038000C1451305C403EF40CFA183270408ADCFB7 -:10039000930700053CB00DB5B82B118B19E7034747 -:1003A0002900118B19E38547ADBF9C231547834670 -:1003B0000900B387E70237970600130747F6BA9795 -:1003C000B6979C23B9BF19C59700FB1FE780C0D221 -:1003D000232004087C54983311C70347190019C31C -:1003E000E14781B7B82B118B09E703472900118B2F -:1003F0005DDB9C23154783460900B387E7023797E7 -:100400000600130787F465BFC14769B713F7870173 -:1004100031CBC18B1305840041468DCF89059700F0 -:10042000FB1FE78040F34146814513058401970097 -:10043000FB1FE78080F57C20C1451305C40393E7CB -:1004400047007CA0EF40EF958327040891CB9307EA -:10045000200589B781459700FB1FE78000F3E1B7CE -:10046000C9470DBF09478945638AE700114785459C -:100470006386E70019476396E7008D450A20EF4041 -:100480001FE57C2093E747007CA08327040881C7F1 -:100490009307100501B7C547F5BD4146CA85130549 -:1004A000C4049700FB1FE78000EB3830930760051A -:1004B000631CF700B727002003C5776D8545EF2043 -:1004C0002FBF93075005F9B59306C4021306C40362 -:1004D000930584002285EFD07FD12285EFF02FCDC8 -:1004E000AA8411C1A144CD4775B59309C4054E85B1 -:1004F0004146CA859700FB1FE780E0E50325040815 -:1005000069C53C30130790056398E7002285EFF03A -:100510002FCD9307E005BDBD1307A0056399E7063E -:10052000B737002083A7C788E38307CA03A88700DB -:10053000E30F08C87C30930505084E8613D73700B3 -:10054000229714279D8B0A87B3D6F640858A93E6B7 -:10055000060813050504029841468A851305C4045C -:100560009700FB1FE780C0E711E1D2842285EFF0FE -:100570002FC77C30CD461307E005850793F7F70FAB -:100580007CB063E4F6001307600538B035B113079B -:10059000C005E393E7C2B737002083A7C788E38885 -:1005A00007C29C47E38507C2930505081309840029 -:1005B0000A8781464A862E8582970A200A86CA853E -:1005C000EF409FD99307B005F1B38A864E86930515 -:1005D00084002285EFD09FC141469305C4040A855B -:1005E0009700FB1FE780C0DF8547D284E316F5BC88 -:1005F0002285EFF0EFBEAA84E31F05BA930710022D -:1006000051BB383093077002E313F7BC7C5889EB79 -:100610009305300571459700FB1FE780A0A268D8BD -:100620006858E30605BACA8541469700FB1FE78074 -:1006300080D2032944072285EFD09FC6230DA9004D -:100640009307800281BB383093078002E311F7B82B -:100650001E2268582146930529001EA949059700C6 -:10066000FB1FE78040CF7C54DE2B13F7072025C704 -:1006700018545A231377072039CF9307900219BBD8 -:10068000383093079002E314F7B43C5C89EB930590 -:10069000300559459700FB1FE780C09A28DC285C8D -:1006A000E30705B24146CA859700FB1FE780A0CA51 -:1006B0009307A002C5B138309307A002E319F7B041 -:1006C000285C19469305190041059700FB1FE78038 -:1006D00080C87C54DE2B93F70740A1C71C54DE234F -:1006E00093F707409DCF9307B0026DB13830930761 -:1006F000B002E31EF7AC7C5C89EB930530055145F5 -:100700009700FB1FE780009468DC685CE30505AA9E -:100710004146CA859700FB1FE780E0C37C5C7D579C -:1007200098CB03D529008145EFD08FFA71B43830CA -:100730009307F004E3F1E7A803250408E30D05A6F9 -:1007400013060004CA85130505049700FB1FE78004 -:1007500080C02285EFF0EFABAA842285EFD05FA5A1 -:100760003C3013070005639FE700B727002003D63E -:10077000E90003C5776D85450606EF20CFA29307F4 -:10078000300509B9130710056395E7009307600565 -:1007900011B113072005E391E7A29307C005DDBE61 -:1007A00038309307E005E318F7A003250408414615 -:1007B000CA859700FB1FE78000BA2285EFF06FAB78 -:1007C000AA842DBD0C228DB785478144E396F59E02 -:1007D000032846003C32382214322E2110220145D3 -:1007E000EF402FB7D1BA8147C1463307F500B38830 -:1007F000F500182383C808003308F600850733473F -:1008000017012300E800E392D7FE82800147BD472D -:100810001308F00F3306F5001422B388F500FD1716 -:100820008606558F2380E800182293F7F70F1D8363 -:10083000E39207FF82808147930800F8414893F6CE -:10084000F70F3387F50063FAC600B306F50094226C -:1008500014A38507E39507FF82806395C6002300F4 -:100860001701C5BF23000700EDB701114AC856C2E2 -:100870002E89AA8A93053005414506CE22CC26CA88 -:100880004EC652C4328A97F0FA1FE780A07BAA8432 -:1008900093053005414597F0FA1FE780A07A2A8436 -:1008A000CD49A5C431CD414681459700FB1FE78066 -:1008B000C0AD2686A2855685EFE03034AA8929E1AD -:1008C0008387040063D30706A2852685EFF01FF413 -:1008D000B79506004A86938545FE2285EFF0BFF066 -:1008E0008307090063D80704A2854A85EFF01FF249 -:1008F000B79506005286938545FE2285EFF0BFEE40 -:10090000268597F0FA1FE780207F11C4228597F093 -:10091000FA1FE780607EF24062444E85D24442492D -:10092000B249224A924A05618280CA852685EFF043 -:10093000FFED7DB7D2854A85EFF05FEDD1B78147F6 -:100940004146B306F5003387F500182303C80600B7 -:1009500085073347070198A2E395C7FE82800111FE -:1009600026CA4EC6AE84AA89930530051305000336 -:100970004AC806CE22CC328997F0FA1FE780806CF5 -:100980002DC51306000381452A849700FB1FE780CD -:10099000C09F4146CE8522859700FB1FE780E0A6D9 -:1009A000A6850D461305D4019700FB1FE780E0A53F -:1009B00013060402930504012285EFE01024AA84A3 -:1009C0000D469305D4024A859700FB1FE780E0A3FC -:1009D000228597F0FA1FE7802072F2406244268554 -:1009E0004249D244B24905618280CD44FDB75D7170 -:1009F0004EDE62D4AE892A8C9305300513050003C0 -:100A0000A6C2CAC052DC56DA5AD85ED686C6A2C47E -:100A1000B28B368BBA84BE8A4289468A97F0FA1F17 -:100A2000E7804062630405101306000381452A84B1 -:100A30009700FB1FE78060954146E285228597007D -:100A4000FB1FE780809C414681450A859700FB1F7C -:100A5000E780A0931D46DE850A859700FB1FE7808F -:100A6000C09A1D46DA85130571009700FB1FE780C9 -:100A7000C09933392001B3349000414681450808BC -:100A800023072101C4879700FB1FE78000901946C8 -:100A9000D68548089700FB1FE78020971946D28526 -:100AA0001305A1019700FB1FE78020969304040122 -:100AB0004146CE8526859700FB1FE78000958A85F5 -:100AC0002685EFF0DFE7930904024E86A68522858E -:100AD000EFE0B0122A890DE94146CE8526859700C0 -:100AE000FB1FE78040870C082685EFF05FE54E8608 -:100AF000A6852285EFE070102A8946454146CE85BD -:100B00009700FB1FE7806090228597F0FA1FE7802F -:100B1000A05EB64026444A8596440649F259625A78 -:100B2000D25A425BB25B225C616182804D49D5B78B -:100B3000011126CA52C4AA842E8A13050003930504 -:100B400030054AC84EC606CE22CC3289B68997F007 -:100B5000FA1FE780204F35C52A84A68541469700B5 -:100B6000FB1FE780808A930404012146D2852685F5 -:100B70009700FB1FE7806089CA8521461305840121 -:100B80009700FB1FE780608813090402A6854A8648 -:100B90002285EFE09006AA844146CA854E859700DB -:100BA000FB1FE7808086228597F0FA1FE780C054FC -:100BB000F240624426854249D244B249224A056144 -:100BC0008280CD44F5B739715AD05ECE2A8BAE8B78 -:100BD00041459305300506DE26DA52D456D262CC62 -:100BE00066CA6AC8368C328DBA8C22DC4AD84ED698 -:100BF00097F0FA1FE7800045AA8A93053005414522 -:100C000097F0FA1FE78000442A8ACD44638E0A08D1 -:100C100059C52A86D6855A85EFF03FC5AA8441E199 -:100C200093053005414597F0FA1FE780A0412A89D6 -:100C300093053005414597F0FA1FE780A040AA8947 -:100C4000630A090E6306050E1304FD001184137672 -:100C5000FD0049C07D144204418035EE1315440067 -:100C60004E86D6855E95EFF01FB8414681454A8590 -:100C700097F0FA1FE7806071014D93170D01C18352 -:100C800063F48708BDC04A8597F0FA1FE780C04625 -:100C9000638709004E8597F0FA1FE780E045568587 -:100CA00097F0FA1FE780404563070A00528597F0E6 -:100CB000FA1FE7806044F250625426854259D254AC -:100CC000B259225A925A025BF24B624CD24C424DBC -:100CD000216182800144131544008A855E95EFF0FE -:100CE0009FB54E86D2850A85BDBF93154D000A86F5 -:100CF000DE954A85EFF03FAF4A868A855A85EFE058 -:100D0000C06FAA84050D95BFBDFC0A86CE854A85B5 -:100D1000EFF07FAD4A868A855A85EFE0006EAA849F -:100D20006686CA85628597F0FA1FE780C062A1BF18 -:100D3000CD4491BFCD44A9BF397162CC2A8C5945AD -:100D400026DA4AD84ED652D456D25AD05ECE06DED5 -:100D500022DCAE8B328BB68A3AC63E8AC28946897D -:100D600083440104EF101F832DCD9167938717E90A -:100D70001EA185473CA12A8432472105630A0C0441 -:100D8000930710033CB01946814597F0FA1FE7809E -:100D9000C05F23036401A303540144A82312740118 -:100DA000231744012318340123192401A285B727EE -:100DB00000206254F250D2544259B259225A925AE7 -:100DC000025BF24B624C03C5476D21616F10BF801F -:100DD000A30104001946BA8597F0FA1FE780A057CF -:100DE0004DBFF2506254D2544259B259225A925ACB -:100DF000025BF24B624C21618280797156CAAA8AE9 -:100E00001305100326D24AD04ECE52CC06D622D499 -:100E10002EC6328AB684BA893E89EF10AFF739CD33 -:100E2000B2453746020193078500130616E92A8466 -:100E30005CC110C1230455010CB51946D2852905A2 -:100E400097F0FA1FE7802051CE8504A813051401FE -:100E5000268697F0FA1FE780005023082403A28516 -:100E6000B72700202254B25092540259F249624AE4 -:100E7000D24A03C5476D45616F10EFF5B250225459 -:100E800092540259F249624AD24A45618280011164 -:100E900022CC2A84314506CE2EC632C436C23AC090 -:100EA000EF104FEF15C99167938717E91EA1B2455F -:100EB0002246924602478D473CA120B16244B727A3 -:100EC00000204EA172A116A53AA5F240AA8503C53D -:100ED000476D05616F102FF0F2406244056182801A -:100EE00001114AC82A89394526CA06CE22CC2EC607 -:100EF000B284EF102FEA1DCDB2459167938727E9A1 -:100F00001EA191473CA1A30125014EA12A84A685DB -:100F10001905214697F0FA1FE780E043A285B7271D -:100F200000206244F240D244424903C5476D056146 -:100F30006F106FEAF2406244D244424905618280F8 -:100F400001114AC82A89414526CA06CE22CC2EC69E -:100F5000B284EF102FE415CD9167B245938727E94E -:100F60001EA195472A843CA123122501214619057B -:100F700097F0FA1FE780203EA28566A4B7270020DD -:100F80006244F240D244424903C5776D05616F1057 -:100F90008FE4F2406244D2444249056182800111EB -:100FA00022CC2A84394506CE2EC632C436C23AC077 -:100FB000EF104FDE15C99167938717E91EA1B2455F -:100FC00022469246024799473CA142A1B7270020FA -:100FD00062446EA112A536A55AA5F240AA8503C5A2 -:100FE000476D05616F102FDFF2406244056182801A -:100FF000797122D406D62A842EC632C436C23AC0AB -:1010000097F0FA1FE780007A19CDB2452246924642 -:101010000247EC84F0852C081306F00F2285F48635 -:10102000F887EFC06FF6B2502254456182800111FB -:1010300022CC2A84394506CE2EC632C436C23AC0E6 -:10104000EF104FD515C99167938717E91EA1B245D7 -:101050002246924602479D473CA142A1B727002065 -:1010600062446EA112A536A55AA5F240AA8503C511 -:10107000476D05616F102FD6F24062440561828092 -:101080005D712AC613052002CAC04EDE52DC56DA54 -:101090005AD85ED662D466D26AD086C6A2C4A6C228 -:1010A0006ECE2E8CB28B368B3AC43E8DC28CC68AE5 -:1010B000035A01058359410503498105EF108FCD7E -:1010C00071C191663243938616E9A9472A8416A115 -:1010D0003CA1930DE4002105930444012247630CD5 -:1010E0000306930710033CB01946814597F0FA1F99 -:1010F000E780A029194681456E8597F0FA1FE780A1 -:10110000C02819468145268597F0FA1FE780E02719 -:1011100023037401A3036401230024032312840125 -:10112000231D5401231E4401231F3401A285B72728 -:1011300000202644B64096440649F259625AD25AD3 -:10114000425BB25B225C925C025DF24D03C5476D6F -:1011500061616F104FC8BA85A3010400194697F06A -:10116000FA1FE780401FEA856E85194697F0FA1F3F -:10117000E780601E1946E685268597F0FA1FE7800E -:10118000801D79B7B640264496440649F259625A02 -:10119000D25A425BB25B225C925C025DF24D6161AD -:1011A000828079715EC6AA8B61454ECE52CC56CAFA -:1011B0005AC862C406D622D426D24AD02E8BB28A0E -:1011C000368ABA893E8CEF10EFBC25CD37470B012C -:1011D000130717E913048500AA8418C140C1014907 -:1011E0001305240023007401A30064011946D68569 -:1011F00097F0FA1FE780201613059400230444019A -:101200001946CE8597F0FA1FE780E014A307840102 -:10121000B83005091379F90F4104E363E9FC22545E -:10122000B7270020B2500259F249624AD24A424BD3 -:10123000B24B224CA68503C5476D925445616F1091 -:101240008FB9B250225492540259F249624AD24A9A -:10125000424BB24B224C45618280011122CC2A8440 -:10126000214506CE2EC632C436C2EF10AFB205C934 -:10127000224692469167938717E91EA1B245B1476E -:101280003CA120B170A174B16244B72700204EA1E7 -:10129000F240AA8503C5476D05616F10CFB3F240D8 -:1012A0006244056182805D71A6C28344C1052AC67D -:1012B000CAC0138544024EDE52DC56DA5AD85ED6D6 -:1012C00062D466D26AD06ECE86C6A2C42EC4B28D57 -:1012D000368DBA8C3E8CC28B468B835A0105034AED -:1012E0004105E6490659EF10EFAA59C93243A24514 -:1012F00037460D0193078500130616E92A845CC161 -:101300002304650010C10CB51946EE85290597F038 -:10131000FA1FE7804004CE852308A401A3089401A6 -:1013200023098401A3097401230A6401231B5401C6 -:10133000230C440113059401194697F0FA1FE78026 -:1013400080011305440264BC08D0CA85268697F044 -:10135000FA1FE7804000A285B72700202644B64048 -:1013600096440649F259625AD25A425BB25B225CF9 -:10137000925C025DF24D03C5476D61616F10AFA5D0 -:10138000B640264496440649F259625AD25A425B04 -:10139000B25B225C925C025DF24D61618280411120 -:1013A00026C2AA84514506C622C4EF10AF9E35C19D -:1013B0009167938717E91EA1B9473CA19C302A8405 -:1013C000938564003CB1BC30B8202105A207D98FB9 -:1013D000231EF5FEDC201946230FF5FEDC30A30F9B -:1013E000F5FE97F0FA1FE78000F7DC24A2857CA4C5 -:1013F000FC24D834A207D98F1EA8FC343CA8224470 -:10140000B7270020B240924403C5476D41016F10D9 -:101410008F9CB240224492444101828079714AD02B -:10142000372900209308496D06D622D426D24ECE05 -:1014300052CC56CA5AC85EC662C403C37800930829 -:10144000F00F630D13072A8C13850701C289BE8430 -:101450003A8AB68A328BAE8BEF10CF932A8439CD7D -:101460009307000D1EA1D9473CA123128501230338 -:101470007501A303650123045501A304450124A5B7 -:101480001309496D8DC8410548C42686CE8597F05D -:10149000FA1FE78040ECA285225403457900B25040 -:1014A00092540259F249624AD24A424BB24B224C00 -:1014B00045616F104F9223260500F1BFB2502254B0 -:1014C00092540259F249624AD24A424BB24B224CE0 -:1014D00045618280411122C42A84194506C6EF1055 -:1014E0006F8B15C19167938717E91EA1C1473CA176 -:1014F00042A1B72700202244B240AA8503C5476D08 -:1015000041016F104F8DB240224441018280411150 -:101510000D4506C6EF100F8815C1930710F91CA1E1 -:101520009307E0031CB1C5473CA1B7270020B24098 -:10153000AA8503C5476D41016F10EF89B240410193 -:101540008280011122CC2A84294506CE2EC632C4BF -:1015500036C2EF102F8405C9B24592469167938732 -:1015600017E91EA12246C9473CA14CA120B114A5F0 -:101570006244B727002072A1F240AA8503C5476DD7 -:1015800005616F104F85F240624405618280011150 -:101590004AC82A892D4526CA06CE22CC2EC6B28438 -:1015A000EF005FFF29C1B245930710F91CA1930713 -:1015B000E0031CB1CD473CA1A30125014CA12A8425 -:1015C000A6851505194697F0FA1FE780C0D8A285B1 -:1015D000B72700206244F240D244424903C5476D18 -:1015E00005616F005FFFF2406244D24442490561E9 -:1015F0008280011122CC2A84214506CE2EC6EF001E -:101600007FF905C5B2459167938717E91EA1D147B8 -:101610003CA16CA142A1B72700206244F240AA85F8 -:1016200003C5476D05616F001FFBF2406244056111 -:101630008280011122CC2A84214506CE2EC632C4D6 -:10164000EF005FF51DC12246B245930710591EA158 -:1016500020A170A16244B72700204EA1F240AA85C4 -:1016600003C5476D05616F001FF7F24062440561D5 -:101670008280011122CC2A84214506CE2EC632C496 -:10168000EF005FF115C522469167938727E91EA1F8 -:10169000B245A1473CA160A170B16244B7270020C8 -:1016A0004EA1F240AA8503C5776D05616F00BFF2B8 -:1016B000F240624405618280011122CC2A843145C6 -:1016C00006CE2EC632C436C23AC0EF00BFEC05C902 -:1016D00022468567B24592460247938717C91EA1E5 -:1016E00020A170A16244B72700204EA116A53AA5FB -:1016F000F240AA8503C5476D05616F00DFEDF2403A -:10170000624405618280011126CAAE844AC82A89D2 -:101710001385C40006CE22CC32C6EF00BFE70DCD44 -:101720008567938717E9B2451EA124A123122501DD -:101730002A84310508C4268697F0FA1FE780A0C1E5 -:10174000A285B72700206244F240D244424903C533 -:10175000476D05616F003FE8F2406244D244424960 -:1017600005618280011122CC2A84194506CE2EC63D -:10177000EF005FE205C58567938717F91EA1B245A3 -:1017800085473CB120A16244B72700204EA1F2401A -:10179000AA8503C5476D05616F00FFE3F24062440F -:1017A00005618280411122C42A840D4506C6EF00DE -:1017B0007FDE0DC1930710F91CA1E9471CB120A1E0 -:1017C0002244B7270020B240AA8503C5476D4101D6 -:1017D0006F007FE0B240224441018280011122CC9F -:1017E0002A84214506CE2EC6EF00DFDA0DC59167AB -:1017F000938727E91EA1B245930700033CA160A18E -:101800006244B72700204EA1F240AA8503C5776D38 -:1018100005616F005FDCF240624405618280011166 -:10182000214506CE2EC632C4EF00DFD605C585673A -:10183000B2452246938707391EA185473CA1B727A9 -:1018400000204EA172A1F240AA8503C5076505617B -:101850006F007FD8F24005618280397122DC4ED65C -:1018600052D45AD006DE26DA4AD856D25ECE094B7A -:101870002A8A3284B6896394651337290020834706 -:10188000C93ECA8A8944C1C39C3298229306C6FFC6 -:10189000A207D98F372700202312F76EBA84639BE3 -:1018A000D70831452EC6EF00FFCEAA8435CDB2450C -:1018B000420441804CA162A1930700F91504A1657F -:1018C0001EA1231145018505228597E0FA1FE780B7 -:1018D000607788C429C58347C93E9385E9FF1356BD -:1018E0002400FD172306F93E97F0FA1FE78060A851 -:1018F0009C44A68589079CC4B727002003C50765BB -:10190000EF007FCD8144F250625426854259D25473 -:10191000B259225A925A025BF24B2161828026858B -:1019200097E0FA1FE780407DB72700202393076EDA -:101930008544D1BF1307D6FFE3C8E7FEB7270020D1 -:1019400003C7C73F138AC73F3729002001CB0325B0 -:10195000096E09C597E0FA1FE780007A03D5446E47 -:10196000A165850511054205418197E0FA1FE780D1 -:10197000606D2320A96E4DDD83C7CA3E2286CE85C9 -:10198000FD172386FA3E97F0FA1FE780C09CB72721 -:1019900000202393876E85472300FA00A5B73729D7 -:1019A00000208357696ECA8BC1D7B724002003D7A4 -:1019B000446EB72A0020B386C700110703A50A6E3C -:1019C0006346D7063E95CE8597F0FA1FE780A0982C -:1019D0000356696E83D7446E814432944204418039 -:1019E0002313896E9107E310F4F23145EF009FBA9B -:1019F000AA851DC9930700F91EA18357696E23119B -:101A00004501230265017EA183A70A6E1CC5B72785 -:101A1000002003C50765EF001FBCB7270020231374 -:101A2000096E238E073EC5B503A50A6E09C597E06A -:101A3000FA1FE780606CB727002023930B6E238E7C -:101A4000073EFDB56F0071426F00B1436F10A111E9 -:101A50006F10E1396F001146411106C6EF00B14227 -:101A6000B2400145410182806F0051476F0031490A -:101A70006F00F14B6F00D14D6F00914F6F005151CE -:101A80006F0011536F00D1546F0091566F003158A1 -:101A90006F00F1591C321022A2075D8E6F00515B5E -:101AA0006F00915C6F00F15E6F1061066F10E108CE -:101AB0006F10210E6F1001106F10E1116F10C11324 -:101AC0006F10A1156F10811703430100030E410031 -:101AD000834E8100034FC100834F010183424101C6 -:101AE000834381017EC816CA1ECC7AC676C472C2F0 -:101AF0001AC06F10A1166F10A11B6F10811D6F10FF -:101B0000611F6F1041216F1021236F1001256F108D -:101B1000E1266F10C1286F10A12A6F3061496F3024 -:101B200081596F30015C6F10412D6F10212F6F3084 -:101B30006163411122C406C62A847E215821543192 -:101B400030212C310A21EF30417501E90C240A20A3 -:101B50002244B24041016F305100B2402244410161 -:101B600082806F30017A6F3071051307A5FF42073D -:101B700085672A8841831385A7C7636CE5021387AD -:101B800007C801456368B70263E605031307301F02 -:101B90006362C702138766FF42074183938767C763 -:101BA00063EAE70005063306B6028E063325D60043 -:101BB000828001458280B79606008147938646FF62 -:101BC0001308F00F3387F600102313170601418323 -:101BD0006364E50063130601828092216364C70099 -:101BE0009AA18280850793F7F70FE9BF4111939778 -:101BF000050122C406C626C2C1872E8463D6070209 -:101C000097E0FA1FE7802060AA8401CD1C210547D8 -:101C100093C707086364F700EF9000582685EF002C -:101C2000BF942165218D21A893F7150091CFB72787 -:101C3000002083A7477591C3829713451400B240D3 -:101C4000224492444101828093F7250091CBB7272B -:101C5000002083A7877591C3829713452400C5B7D9 -:101C600093F7850099CBB727002083A70776BC5B45 -:101C700091C3829713458400D9B793F7450099CB58 -:101C8000B727002083A70776FC5791C38297134597 -:101C9000440075B793F7050281CFB727002083A7CB -:101CA000077783A7070991C382971345040241BFB1 -:101CB00093F7050181CFB727002083A7077783A774 -:101CC000C70891C382971345040195BF93972501D7 -:101CD0000145E3D607F6B72700209387876EF433D4 -:101CE000F023CC33C823EF100124096525BF41112F -:101CF00026C2B7240020B737002013068011814583 -:101D000022C42A841385846E06C623A207804AC093 -:101D100097E0FA1FE78060670145EF201045014515 -:101D2000EF20F04BB7270020A387874EB707D707D0 -:101D30001384846EB1075CC8B7B70C0C9387071285 -:101D40001CCCB7B7D707938707125CCCED77938786 -:101D500007127D471EB02328E40C81470327040C9B -:101D6000232AF40CB7872D049387F79F5D8F832771 -:101D7000440C372900201309095493E7E70923226B -:101D8000F40C2326F40C8347E9002320E40C2324DD -:101D9000E40CA308F40AA30CF40AF977FD17231B3B -:101DA000F40E231CF40EFD47230DF40E8567938774 -:101DB000F7F03EBC5EBCA30C0402EF10AF9D93078E -:101DC000C01C231BF4068547A30FF4028357490068 -:101DD00028B023220404A983A300F4088D4723110B -:101DE000F404B7170706938707443CC483570901D7 -:101DF0009306B00F1387846E63F4F6009307B00F59 -:101E0000139607013EB77EB78347C7034182918B84 -:101E1000D1C7931766009387073D8346D703C20750 -:101E2000C1835EB7918ABDCE931666009386063D48 -:101E3000C206C18216BB6D459385846EB2866373FC -:101E4000A600ED46B6B113068014BE8663F4C70043 -:101E500093068014139606018567418256B39387D3 -:101E600087849384846E63F3C700BE869307C01C87 -:101E70002310F704B707160093870790F6B012B740 -:101E80005CDBEFD0D077EF401007EFD0203D22444D -:101E9000B2409244024941016F90A07D9307E60051 -:101EA0008E07A5BF9306E6008E0659B7397122DC6E -:101EB0003704400026DA4ED6AE84AA899305E4FFA3 -:101EC000054506DE4AD8EF10CF95498C131704015B -:101ED000418321839317840013590401D98F23165A -:101EE00001001379F90F10088A854E857C87A306B7 -:101EF000210102C002C202C402C802CA02CC02CE40 -:101F0000EFD0A04F8347E1010347D101A0B0A20762 -:101F10004207BA970347F1012180C0A0BA97F25057 -:101F200062549CA013D78700C183A382240198B078 -:101F3000BCA04259D254B25921618280B7250020F9 -:101F40003725002001111946938585551305057C19 -:101F500006CE22CC26CA4AC891644EC697E0FA1F24 -:101F6000E780603F9385F4FF0145EF104F892A8495 -:101F7000FD550145EF10EF8AA287FD147D5933F717 -:101F80009700B366E500D5CA631425016307970A75 -:101F9000372400201307846E2304F70EA18393E7F0 -:101FA00007FC9169C1642322A70EA304F70E130452 -:101FB000846EFD19FD14CE850145EF104F842A89EA -:101FC000FD550145EF10EF85B3672501EDD7FD57AE -:101FD0006314F500E30139FF935705012306F40E5E -:101FE00093578501A306F40E8317840D2315A40EC1 -:101FF0002307240F4205135989001379F9034185FA -:10200000A307240F658DE58F6312F5020317C40E35 -:102010008317A40D658FE58F631AF7000317E40E8D -:102020008317C40D658FE58FE307F7F8F24062442C -:10203000D2444249B24905618280A6850145EF003C -:102040001FFC2A84FD550145EF00BFFDA28705BF97 -:10205000411126C2B724002006C622C44AC0938775 -:10206000846E03C7E70383C7F703636AF70001447D -:102070002285B240224492440249410182802A8949 -:10208000930510201305000B97E0FA1FE78080FBF3 -:102090002A8471DD1306000B81459384846E97E0DA -:1020A000FA1FE780802E63140900C1571CA4BC4CA2 -:1020B000A1EBE0C8A0CCE0CC232004008547238F0F -:1020C000F40285471CB4930700F93CB4B7370020ED -:1020D0009387C781D84B9C4F78C43CC8FD577CA8D8 -:1020E000A30EF40683C7A4042302F40AB727002032 -:1020F00003C547552304A406EFD0C03E48B88DBFA2 -:10210000FC4C80C3E0CC2320040083C7E403850794 -:102110007DB701114EC6B739002083A7898322CC31 -:102120001307000A06CE26CA4AC852C4F8D39843F9 -:102130002A840D8B05C3B84B619BB8CB98431367BA -:10214000870098C39C438D83858B89C7010001005C -:1021500001000100373A002083270A813706330047 -:1021600093053002D8570545719B13671700D8D7E0 -:1021700098431377F7E798C398431377F7E7136704 -:10218000071098C337370020032747881447D18E9C -:1021900014C783A689831306A005B0CA5457F59ABD -:1021A00054D70347E4079376F7079843137707F864 -:1021B000558F98C3EF007FE264449D471CA8230F0E -:1021C000A4069CA08547A3810400BCA07C4893F78B -:1021D0000720A9C30347740A85476307F70083579D -:1021E0008408B3E7E7029DE79147BCB08347640AE0 -:1021F0008346540A78449A07D58F5CA3BC20814655 -:102200008507BCA00346840A8345540A0345640A33 -:10221000EFD0A06A7C4893F7074095CBB8307C4458 -:10222000B42013678700B8B00357A408B697B8B3B3 -:10223000BC2078448346F4073E978357A40892064F -:10224000A183BD8BD58F5CA3BC208907BCA0AC202B -:10225000835644089307D00F372700208D8F13072C -:10226000876E63D0D7228346040889476387F620A8 -:102270000546930780426385C600856793878784F8 -:10228000F9469387771BB3C7D70203464707136600 -:102290000601230AC70603A78983056610C7B3860C -:1022A000D702860634D3B43093E60601B4B078443E -:1022B0008346E4072E9734B3B420784436975CA362 -:1022C000B8207444A187BA96034704081607D98F2B -:1022D000DCB2BC208D07BCA08347040693F707043B -:1022E00089CFB8307C44B42013670704B8B058389D -:1022F000B697B8B3BC208507BCA08347C407054781 -:10230000C11793F7F70F6364F70603C92400B725D5 -:1023100000201546930739000329C4049385E57D01 -:102320003E99A1472300F90093078002A300F9001A -:102330001305290097E0FA1FE780E0010347C4076F -:10234000C1476317F71483578408A1072311F408C2 -:10235000C547230EF40683472408A303F9008357D7 -:102360002408A1832304F900BC20A507BCA00356C0 -:102370004408014921C2B82068448325040A930710 -:1023800037003E95BC30C18B638E071079593309F5 -:10239000E9401379F90F4A8697E0FA1FE780A0FB1E -:1023A0008327040ACA973CDC83574408B387274134 -:1023B0002318F406B820B7060082FD169377F703BA -:1023C00085073E991379F90FA3082401B8A07C442E -:1023D000A380270103A78983930770F93CB45C436A -:1023E000F99B5CC38347840603260A8193F7F703AE -:1023F000139797015C56F58FD98F5CD6371700403D -:10240000930770052300F704930780FA2300F7046D -:1024100083068406A54763DED7083E3393E70701AA -:102420003EB30327C40883270A8198C703270409FA -:10243000D8C383A789837844B8DBEFD0E04D374514 -:10244000050081451305852BEF009F86B7370020D7 -:102450009387C781A3810700238207001038834533 -:1024600004086244F240D2444249B249224A01453A -:10247000056117F3FA1F6700437B9167938707296C -:1024800001B58347470793F7F70E230AF706A9B567 -:102490000357840883572408998F0947E34DF7EAC7 -:1024A000C94745BD97E0FA1FE780E0EA03494408C1 -:1024B00011B73E33C207C183BD9BC207C1838DB72D -:1024C000B736002083A58683411122C426C206C6E2 -:1024D0004AC09307000AFCD1B737002083A70781C1 -:1024E0002A8437053300D857719B13671700D8D754 -:1024F00098431377F7E798C398431377F7E7136781 -:10250000071098C337370020032747881047498EA4 -:1025100010C71306A005B0C95057759A50D7034786 -:10252000E4071376F7079843137707F8518F98C39A -:1025300064449D471CA89CA08547A3810400BCA0BF -:102540007C4893F7074095C7A147BCB07C4403572C -:10255000A408D8A3BC2078440346F4073E978357C9 -:10256000A4081206A183BD8BD18F5CA3BC20890770 -:10257000BCA0A820035704079307E00F898F63DFEF -:10258000E706034704088947630FF70E05469307DC -:1025900080426305C700856793878784794793875F -:1025A000771BB3C7E702372600201306866E8345E4 -:1025B000460783A6868393E50501230AB6060566CA -:1025C00090C63387E7020607B8D2B43093E6060117 -:1025D000B4B078448346E4072A9734B3B4207844EF -:1025E00036975CA3B8207444A187BA9603470408C1 -:1025F0001607D98FDCB2BC208D07BCA00356040798 -:1026000001490DCEB82068442C5C930737003E95F5 -:10261000BC30C18BADCF79593309E9401379F90F3B -:102620004A8697E0FA1FE78000D33C5CCA973CDCFF -:1026300083570407B38727412318F406B8200145C0 -:102640009377F70385073E991379F90FA3082401BF -:10265000B8A07C44A3802701930770F93CB4B73736 -:1026600000209387C781A3810700238207001038C9 -:10267000834504082244B24092440249410117F3C1 -:10268000FA1F6700835A91679387072901BF97E074 -:10269000FA1FE78040CC034904072318040679BFDA -:1026A000011122CC06CE2A8426CA4AC84EC697F00B -:1026B000FA1FE780E0AF835784080347C407850704 -:1026C0002314F40889476316F70A8D47230EF4068E -:1026D0007C4893E787007CC8B72700209387876EE4 -:1026E00003C75707098B6DDF03C757071377C70F5A -:1026F000A38AE706B727002083A787588297B727C2 -:10270000002093870754F62F03576408F03BA285F7 -:102710003307D70293060032130707193357D7023E -:102720009306D4073A95232AA4083306C5403735C3 -:10273000050013054585EF002F862285B72400206C -:10274000EFF03F9D9384846EEFD0C02783C744078A -:10275000C18BA5CF83C7440793F70702E5DF83C783 -:102760004407228593F7F70C238AF406EFF05FD530 -:10277000F1BF37290020832789588297AA848327AD -:1027800089588297E38DA4FE8327895883244409BE -:102790008297B727002093860754F03A3385A440E8 -:1027A000138707546363A60005E97A2F83576408EB -:1027B000B387E7021307003293870719B3D7E702FD -:1027C00003274409BA97232AF408F2406244D2440A -:1027D0004249B24905618280B72400201387846E84 -:1027E0008347570703D9E601814693E71700A30AF9 -:1027F000F706B737002083A98783A1674A8623A4F9 -:10280000F900B7470F0093870724B335F502330566 -:10281000F502EF60011E060523A6A9069387846EC4 -:1028200003C75707098B6DDF0356640803C75707B3 -:10283000330626031377C70FA38AE70693070032F0 -:10284000130606193356F602832744093E96232AB7 -:10285000C408E5B58347C507B1CB411122C406C6FC -:1028600026C249472A84639CE702035725088357F9 -:1028700085086316F70293048509B72500201546DD -:102880009385E57D268597E0FA1FE780C0AC268515 -:10289000EF30B0678D47A300A408230EF40622850D -:1028A0002244B240924441016FF09FDF82807C2D30 -:1028B000411122C406C699071CB97C45114718A9C5 -:1028C00098A37C4518392A8498B383475503858B90 -:1028D00091E70347450389476317F70078441C23B2 -:1028E00093E707041CA3684493056403194609058C -:1028F00097E0FA1FE78020A66844722C4C5421050B -:1029000097E0FA1FE78020A5930730F93CB4B24066 -:1029100022444101828041114AC037290020930797 -:10292000896E83A7870A06C622C426C299E3054595 -:1029300031AAAA841309896EEFD0C0088327890AB7 -:102940008297EF30B0362A847DD1DC50AC48232406 -:10295000F508B8349307A0096310F71085472300E2 -:10296000F51483C734062303F514A303F514FC35CB -:1029700098290148A2074207BA97F8251546F90594 -:10298000BA9703C735FF130584136207BA97232C40 -:10299000F40883C755FF03C765FFA2074207BA972C -:1029A00003C745FFBA97232EF40883C775FFA30A10 -:1029B000F40283C795FF03C785FFA207D98F7EB8AE -:1029C00083C7B5FF03C7A5FFA207D98F1EBC83C766 -:1029D000D5FF03C7C5FFA207D98F3EBC83C7F5FF4C -:1029E00003C7E5FF232E0413A207D98F5EBC8147DE -:1029F000232CF41297E0FA1FE780E095B84883474C -:102A00003702FD8BA309F40203473702ED1793F752 -:102A1000F70F1583A307E4022D476365F7021E3CF9 -:102A200005679306A7C7E917C207C18363ECF600E1 -:102A3000363C9307301F63E7D7005E3C130707C897 -:102A4000637BF7020A24EF3070430145B240224411 -:102A500092440249410182808327890C1397170110 -:102A6000E35707F0FC4498239C21F98F9583858BCD -:102A70002300F514EDBD8327C90A22858297832799 -:102A8000090D0A24294693F7072091E3054693058B -:102A90000008EF8030088327890C139717016358CB -:102AA00007000A24514693050008EF80B0068327EB -:102AB0004905FC4B13974700E35B07E68824A38B8B -:102AC0000400494693050008EF80D0048DB5B72770 -:102AD000002083C7976E411122C406C626C24AC091 -:102AE0002A8485EB182885476316F7108347D4039B -:102AF00003475404858B631DF70E19469305640440 -:102B00001305E40397E0FA1FE780808DB334A0003B -:102B100089A883475504E1C78347B5041307000418 -:102B200093F7070C639DE70A085939C11309640438 -:102B3000CA851305A502EF8090098547AA84631909 -:102B4000F502085889472302F4043C311946CA8526 -:102B500093E72700A302F404510597D0FA1FE780FA -:102B6000807FB240224426850249924441018280FE -:102B7000182885476305F70683470406918BA5E36C -:102B80008347C403A9EF1305440497F0FA1FE780B5 -:102B900020B408D829C58944230294043C3119463D -:102BA0009305640493E72700A302F404510597D02A -:102BB000FA1FE780407A83475403898B99E3854461 -:102BC0004DB70C58BC25E5DF230A94021946B10520 -:102BD0001305640397D0FA1FE780E077CDB78347EA -:102BE000C403898BE38007F01C589C33E39C07EEF9 -:102BF000814485BF83470406918BE39907EE5C34DB -:102C000013F7170005C334380D47639DE60068408D -:102C10002C442244B24092440249410117F3FA1F66 -:102C2000670023BC898BC1DF38389547E319F7F873 -:102C3000F9BF4111B727002022C406C69387876ECB -:102C4000238A0706930710F93CB5B737002003A481 -:102C500007800DC0B727002003C5F74E8545EFF06C -:102C60003EFE930710273305F50222832244B2402B -:102C700041010283B2402244410182803C2D91C730 -:102C800038256314F7006FF0DFFA183D01CF3425C3 -:102C9000638FE60038A5B727002003C5F74E8945A6 -:102CA0006FF01EC1EDD3382579FF3CA5EDB7E1DF0C -:102CB000EDBF2C4931479C3193F7F7033CA963865C -:102CC000E700930700083E8582809C210D47BD8B5D -:102CD0003CB9E398E7FE41114AC01309650322C4D9 -:102CE00019462A84A1054A8506C626C297D0FA1F2E -:102CF000E780006F9147630A051C2C4819461305AD -:102D000064049C2189059987858BA302F40497D0DC -:102D1000FA1FE78040642285EFF07FDBA14763065E -:102D2000051A64449D471CA89CA08547BCA0BCB064 -:102D3000CA8519461385440097D0FA1FE780A06121 -:102D4000BC20B8300149990793F7F70F1367870044 -:102D5000BCA0B8B07844BA970357A406B8B3BC2057 -:102D60007844834614063E978357A4069206A183AF -:102D7000BD8BD58F5CA3B82009071377F70FB8A0D8 -:102D8000762CC5CA83470406795993F7070491C383 -:102D900075593309E9401379F90F637CD9088346E3 -:102DA0003406751989471379F90F6387F6120546BA -:102DB000930780426385C600856793878784F946B9 -:102DC0009387771BB3C7D702372600201306866E7A -:102DD0008345460793E50501230AB60637360020EA -:102DE0000326868385650CC6B386D702860634D251 -:102DF000B43093E60601B4B0744403462406369713 -:102E000030B3B420784436975CA3B8207444A187CB -:102E1000BA96034734061607D98FDCB2BC208D075B -:102E2000BCA05C54CA973CDC7E2CB3872741231896 -:102E3000F4068347040693F7070489CFB8307C442F -:102E4000B42013670704B8B05838B697B8B3BC209D -:102E50008507BCA0A820722C4C5493073500684409 -:102E60003E953DCE636EC90697D0FA1FE780A04E0F -:102E70000349E401B8209377F70385073E99A30837 -:102E80002401B8A083475403858B91E7034744038B -:102E900089476317F70078441C2393E707041CA3B2 -:102EA0007C440C388CB303453406930790F93CB44A -:102EB000EFC0C07D1038834534060D4597F0FA1FEA -:102EC000E780A0D6EFC010308147B2402244924440 -:102ED00002493E8541018280916793870729C5B5E4 -:102EE0004A8697D0FA1FE780004769B72C49130735 -:102EF00020029C3193F7F7033CA9639AE710411134 -:102F000022C406C626C29C2115472A84BD8B3CB923 -:102F1000639AE7021946A1051305650397D0FA1FC6 -:102F2000E780004C914771CD2C4819461305640485 -:102F30009C2189059987858BA302F40497D0FA1FF9 -:102F4000E78060412285EFF09FB8A1475DC9B727B0 -:102F5000002083A7875882976444A14748D01CA8C3 -:102F60009CA08547BCA0BCB019469305640313859B -:102F7000440097D0FA1FE780003EBC209907BCA010 -:102F8000BC3093E72700BCB08347540491C7784412 -:102F90001C2393E707F81CA31946930564041385C3 -:102FA000A40097D0FA1FE780003BBC20990793F755 -:102FB000F70F13F7F703050718B8BCA083475403AE -:102FC000858B91E70347440389476317F7007844EB -:102FD0001C2393E707041CA37C440C388CB30345E3 -:102FE00034069307A0F93CB4EFC0406A103883451B -:102FF00034060D4597F0FA1FE78020C3EFC0901C00 -:103000008147B240224492443E8541018280930729 -:1030100000083E85828041114AC03739002083274D -:10302000898322C41307000A06C626C2F8D3984330 -:103030002A840D8B05C3B84B619BB8CB98431367AB -:10304000870098C39C438D83858B89C7010001004D -:1030500001000100B736002003A60681B7050082F3 -:10306000FD155C56F19B93E717005CD60327898317 -:103070005C4393E717005CC38347840693F7F70329 -:10308000139797015C56ED8FD98F5CD637170040A8 -:10309000930770052300F704930780FA2300F704D1 -:1030A00003068406A54763DFC7123E3393E7070193 -:1030B0003EB383A706813706330098431377F7E7BB -:1030C00098C398431377F7E71367071098C3373708 -:1030D0000020032747881447D18E14C7832689838D -:1030E0001306A005B0CA5457F59A54D703472406CF -:1030F0009376F7079843137707F8558F98C337C728 -:10310000898E130767ED98C7375755006444130736 -:103110005755D8C39D471CA89CA08547BCA0A14774 -:10312000BCB07C440357A406D8A3BC207844834693 -:1031300014063E978357A4069206A183BD8BD58FB4 -:103140005CA3A8209307E00F09051375F50FA8A04D -:1031500003560407898F63C7C7047C442C5C0D05A4 -:103160003E9597D0FA1FE780001FB82083470407D9 -:103170009376F7038507B6971CB8B8A08347540326 -:10318000858B91E70347440389476317F700784429 -:103190001C2393E707041CA37C44183898B39307B7 -:1031A00080F93CB4832789837844374505008145FD -:1031B000B8DB1305852BEFF0BEAFB7370020938740 -:1031C000C781A38107002382070010388345340696 -:1031D0002244B240924402490145410117F3FA1FCB -:1031E0006700A3A43E33C207C183BD9BC207C1834E -:1031F000C1B5397152D4373A002003268A8322DCC4 -:1032000026DA06DE4AD84ED69307000A7CD2B737B4 -:10321000002083A70781B70533002A84D857719B04 -:1032200013671700D8D798431377F7E798C39843E5 -:103230001377F7E71367071098C337370020032782 -:1032400047881447CD8E14C79306A00534CA545737 -:10325000F59A54D7034725069376F70798431377D3 -:1032600007F8558F98C364459D471CA985469CA0C7 -:10327000A3810400B4A08347F5050D476385E700EB -:1032800019476390E7408547BCB01946930564032E -:103290001385440097D0FA1FE780E00BBC20990704 -:1032A000BCA00347F4059947631FF702BC301385A0 -:1032B000A40093E72700BCB083475403898B638540 -:1032C000072C0C58BC296381072C1946D10597D0CF -:1032D000FA1FE780400878441C2393E707F81CA3F3 -:1032E000BC209907BCA0BC30B82093E78700BCB0D5 -:1032F0007C44BA970357A406B8B3BC2078448346ED -:1033000014063E978357A4069206A183BD8BD58FE2 -:103310005CA3B02009061376F60FB0A05A2C6309FF -:10332000072883470406795993F7070491C3755911 -:103330007C483309C9401379F90F918B81C739193A -:103340001379F90F8147637BE90803473406751940 -:1033500089471379F90F6309F7248546930780425B -:103360006305D70085679387878479479387771BA1 -:10337000B3C7E702B72600209386866E83C546074B -:1033800093E50501238AB60683268A8385658CC664 -:103390003387E7020607B8D2B83013670701B8B021 -:1033A0007844834624063A9634B2B420784413D63F -:1033B000874036975CA3B8207444BA960347340616 -:1033C0001607518FD8B2B8200D07B8A018544A97E5 -:1033D00038DC5A2C330727412318E4067848114675 -:1033E0009376C700638BC60031466391C60E0346D1 -:1033F00014068346F407631BD60C218B630D071A52 -:10340000B727002083A78758832944098297B747A5 -:103410000F00938707243385A940B335F50237277A -:1034200000200356E75581463305F502EF50615CF5 -:103430009307A01363DCA7083D05F949B349350399 -:1034400049468145680097D0FA1FE78000F4B247EB -:103450007977CE09F98F93D93901B3E937018357C9 -:103460006408C20993D90901C207B3E9F9008327A7 -:1034700084090327C4084EC63EC88327C40913160F -:103480008700618393F6F701B727002083C7B76EE3 -:1034900068446C009D8B9607D58FD18F3ECA8327D9 -:1034A00004094946A2075D8F835784083ACCFC86FD -:1034B000BC208D073E9597D0FA1FE780C0E9BC304D -:1034C00093E70702BCB0BC20C907BCA08347040631 -:1034D00093F7070489CFB8307C44B42013670704FE -:1034E000B8B05838B697B8B3BC208507BCA0522CEA -:1034F000631406160149B4208347E40513F7F60365 -:1035000005073A999A07D58FA3082401BCA08347E1 -:103510005403858B91E70347440389476317F700FA -:1035200078441C2393E707041CA37C4418383745D0 -:103530000500814598B3930760F93CB4784483272C -:103540008A831305852BB8DBEFF08EF6B7370020A2 -:1035500003278A839387C781A381070023820700FB -:103560005C43014593E717005CC31038834534067C -:1035700097E0FA1FE780606BF2506254D2544259D0 -:10358000B259225A216182808347D40391C778447B -:103590001C2393E707F81CA319469305E40397D06F -:1035A000FA1FE78040DB2DBB91679387072975BB26 -:1035B0008147014925B5B43003473406C18A85CE19 -:1035C000F9498946B387370383590407631CD70039 -:1035D0009A099389093DCE979387172BF949B3C967 -:1035E0003703B9BD85466315D700D9098A09E5B700 -:1035F000B9098E09CDB7BC208359C401BE9989474A -:103600006313F7049A099389097DF94793895954FB -:10361000B3C9F902B72600209386866E03C6560703 -:1036200013661600A38AC60683268A83216690C67F -:10363000B387F9028607FCD6834714062300E40803 -:10364000A30FF406F5BB85476315F700FD098A094A -:103650006DBFF9098E0955BFA8200C54930735009A -:1036600068443E956369C90097D0FA1FE780A0CEF1 -:103670000349C40149B54A8697D0FA1FE780A0CD17 -:103680009DBD1387E7FF1377D70F63170718B4B0F3 -:103690009305650319461385440097D0FA1FE78008 -:1036A00080CBBC20B830B7290020990793F7F70FDB -:1036B00013678700BCA0B8B078449389896E01492C -:1036C000BA970357A406B8B3BC20784483461406BF -:1036D0003E978357A4069206A183BD8BD58F5CA32A -:1036E000B820914709071377F70FB8A08346F40570 -:1036F0006394F60A83470406795993F7070491C344 -:1037000075595E2C3309E9401379F90F6376F9088E -:1037100083463406751989471379F90F6382F60ECB -:103720000546930780426385C60085679387878433 -:10373000F9469387771BB3C7D70203C64907856548 -:1037400013660601238AC90603268A830CC6B3863C -:10375000D702860634D2B43093E60601B4B074447E -:1037600003462406369730B3B420784436975CA3DA -:10377000B8207444A187BA96034734061607D98F38 -:10378000DCB2BC208D07BCA01C54CA973CDC5E2C6C -:10379000B38727412318F4068347040693F70704E9 -:1037A00089CFBC30B82093E70704BCB07C44BA97FB -:1037B0005838B8B3BC208507BCA00347F40591472F -:1037C000631AF704522C39C6A8200C54930735000D -:1037D00068443E95636AC90297D0FA1FE780A0B794 -:1037E0000349C4010347F4059147631CF72083C7CD -:1037F000490793F7070F93E75700238AF906E5B9BE -:103800009167938707292DB74A8697D0FA1FE780DB -:1038100080B4C9BF0149F9B793F7B70F0547E39BD8 -:10382000E7CCBCB09305650319461385440097D0D7 -:10383000FA1FE78040B2BC209907BCA0BC3093E7D8 -:103840002700BCB08347D40391C778441C2393E777 -:1038500007F81CA3834754031385A400898B638650 -:1038600007160C58BC29638207161946D10597D054 -:10387000FA1FE78040AE78441C2393E707F81CA3A7 -:10388000BC20B830B7290020990793F7F70F1367CA -:103890008700BCA0B8B078449389896E0149BA9773 -:1038A0000357A406B8B3BC207844834614063E9759 -:1038B0008357A4069206A183BD8BD58F5CA3B82045 -:1038C000854709071377F70FB8A08346F40563947B -:1038D000F60A83470406795993F7070491C375598B -:1038E0005E2C3309E9401379F90F6376F9088346B2 -:1038F0003406751989471379F90F6388F60E054662 -:10390000930780426385C600856793878784F9465D -:103910009387771BB3C7D70203C64907856513662C -:103920000601238AC90603268A830CC6B386D702FA -:10393000860634D2B43093E60601B4B0744403462C -:103940002406369730B3B420784436975CA3B82069 -:103950007444A187BA96034734061607D98FDCB2A0 -:10396000BC208D07BCA01C54CA973CDC5E2CB387DE -:1039700027412318F4068347040693F7070489CFE9 -:10398000BC30B82093E70704BCB07C44BA975838E1 -:10399000B8B3BC208507BCA00347F4058547631076 -:1039A000F706522C29CEA8200C5493073500684402 -:1039B0003E956360C90497D0FA1FE780C099034918 -:1039C000C4010347F40585470DB58347D40391C768 -:1039D00078441C2393E707F81CA319469305E403D6 -:1039E00097D0FA1FE780209761BD916793870729D9 -:1039F00039BF4A8697D0FA1FE780E095D9B70149C9 -:103A0000C9B783C7490793F7070F93E76700F5B373 -:103A1000011152C4372A002093078A6E83A7C70971 -:103A200006CE22CC26CA4AC84EC6639E074C3739FA -:103A3000002083278983130A8A6E98430D8B05C360 -:103A4000B84B619BB8CB98431367870098C39C43DE -:103A50008D83858B89C701000100010001000326C9 -:103A600089839307000AB73900207CD283A7098194 -:103A7000B70533002A84D857719B13671700D8D72E -:103A800098431377F7E798C398431377F7E71367DB -:103A9000071098C337370020032747881447CD8E77 -:103AA00014C79306A00534CA5457F59A54D738253D -:103AB0009376F7079843137707F8558F98C37C25BB -:103AC0007845BD8B1CA91CA31D4764456398E73846 -:103AD0008547A3810400BCA00347F5058D4663100C -:103AE000D7245E2D639B07147C491147B18B6386F5 -:103AF000E71431476398E700034715068347F50746 -:103B0000630DF7128547BCB019469305640313850E -:103B1000440097D0FA1FE7800084BC20990793F7F0 -:103B2000F70FBCA0034704061377070401CFB83092 -:103B300013670704B8B07844BA975838B8B3BC20B4 -:103B40008507BCA0230A0A06B4208347E40513F7BF -:103B5000F60305079A07D58F18B8BCA0930740F95C -:103B60003CB483475403858B91E70347440389475B -:103B70006317F70078441C2393E707041CA37C44D5 -:103B80001838B7060082FD1698B3032789835C4373 -:103B900093E717005CC38347840603A6098193F764 -:103BA000F703139797015C56F58FD98F5CD63717BB -:103BB0000040930770052300F704930780FA230061 -:103BC000F70483068406A54763D8D7323E3393E7CC -:103BD00007013EB303A70981B7C7898E938767EDB5 -:103BE0001CC7B7575500938757555CC383278983F4 -:103BF000784437450500834444068145B8DB130506 -:103C0000852BEFF0EE8AEFB03051B7370020938765 -:103C1000C781A38107000947F8B323820700103842 -:103C20006244F2404249B249224AA685D244014543 -:103C3000056117E3FA1F670043FFA147BCB0835734 -:103C4000A406DCA08357A406034714067444A1838A -:103C50001207BD8BD98FDCB2B02005470906137659 -:103C6000F60FB0A083474A07832689836318F708B5 -:103C7000034744068947631FF70693176600938737 -:103C8000073D182C2319F40693872708B387E7020A -:103C9000F9450945230AAA06056588C69387E7FC06 -:103CA000C207C18393877716B3C7B702139707017B -:103CB000B387B70241838607BCD2BC3093E70701C4 -:103CC000BCB07C443E968347240693E707043CB28D -:103CD000B4207C44B697D8A3B4207C4421837D8B48 -:103CE000B697834634069606558FD8B3BC208D0709 -:103CF000BCA099BD9307E6008E0761B7B852F9479B -:103D000005833357F702BC52EC528583FD8BAE9787 -:103D1000FCD28D47230AFA064207418379BF194630 -:103D20006319C7085A2D51E7BCB093056503138585 -:103D3000440097C0FA1FE7800062BC201385A400EE -:103D40009907BCA0BC3093E72700BCB0834754035D -:103D5000898BA1C30C58BC298DCF1946D10597C0BA -:103D6000FA1FE780405F78441C2393E707F81CA301 -:103D7000BC20990793F7F70FBCA0034704061377FD -:103D80000704E30107DCB430784493E60604B4B0DA -:103D900065B38347D40391C778441C2393E707F89E -:103DA0001CA319469305E40397C0FA1FE780A05AA5 -:103DB000C1B7A147BCB08357A406DCA08357A406B3 -:103DC000034714067044A1831207BD8BD98F5CB2E0 -:103DD000B020054709061376F60FB0A083474A07BF -:103DE00083258983631CF7040347440689476313CB -:103DF000F704931766009387073D182C2319F406E0 -:103E00009387C708B387E702F9460945230AAA063C -:103E1000056588C5938747FCC207C18393877716DA -:103E2000B3C7D70213970701B387D7024183860729 -:103E3000BCD161B59307F6008E07C1B7B851F947F9 -:103E400005833357F702BC51E8518583FD8BAA9750 -:103E5000FCD1230ADA064207418385B505476393FF -:103E6000E708B1471CB983475503898BB9CB0C5977 -:103E7000BC29A1CB1946D1051385840097C0FA1F30 -:103E8000E780604D78441C2393E707F81CA368443F -:103E9000194693056403090597C0FA1FE780A04BF4 -:103EA00083278A0C13971701635A07007C24B98B68 -:103EB00091E778441C2393E707021CA3930720F99A -:103EC00045B18347D40389C79C2093E707F89CA09A -:103ED000684419469305E403210597C0FA1FE7805B -:103EE000804775B7522D0C559307660093F7F7037B -:103EF0001CB913858400D5B73E33C207C183BD9B6F -:103F0000C207C183F9B1F2406244D2444249B24986 -:103F1000224A05618280B727002041119387876E6E -:103F200022C4A05306C6054754246390E60283C703 -:103F3000470711476315F7002285EFE09FCF2285E1 -:103F40002244B24041016FF0BFACB2402244410173 -:103F50008280B727002083A7077499E33E8582807B -:103F60009827E30DA7FE9C43CDBF411106C622C48E -:103F700026C24AC0EFF0FFFD6306051A83475503CA -:103F8000372900202A849304896E89EFB725002001 -:103F900019469385057C1305640397C0FA1FE780D3 -:103FA000803B9DA80547639CE700BC204945638C86 -:103FB0000716B725002019469385657CE9BF1C5973 -:103FC000B9E78347C503230A050291EB034754036E -:103FD0008547230AF4028947E319F7FC45BF130517 -:103FE000C50397D0FA1FE780E06908D80DC1EF70CC -:103FF000A0430C58BC2581CF8947230AF4021946F7 -:10400000B1051305640397C0FA1FE780C034034766 -:1040100044038947E31CF7FA9C3095CB8347C403DC -:104020009DC783473404130700041305C40393F7A3 -:10403000070C6390E71097D0FA1FE780606908D8F3 -:104040001C5891C7BC2B81C78947230EF4028547B2 -:104050005CA41CB4B727002013870754743B642466 -:104060002304096E13970601231AD40693F5F4006E -:10407000994641831386075463F5B6068346440682 -:104080008947130947006394F6001309C703562CA8 -:1040900083453406B73700201305A00F03C7678296 -:1040A000231A240793973600B3D6A6026A2E094630 -:1040B0009387B7026394C5088E07130767233E975B -:1040C0009397A600BA9737460F0013060624814639 -:1040D000B3A5A7023305F502EF40B1114A95231AA3 -:1040E000A4068357C40623170406B9CF682893078C -:1040F000F00F6306F500EFE01EAFFD577CA80356F6 -:10410000C40693066401120637550500A2851305FF -:10411000E58DEFE07E99B727002003C5F74E854572 -:10412000EFE00EF90145B2402244924402494101B8 -:10413000828097D0FA1FE780E05411B71307E70B8E -:104140003E9793979600BDBF8547E396F4FC682899 -:104150009307F00F6306F500EFE0FEA8FD577CA87B -:104160000566930664011306068079BF411106C6F1 -:1041700022C426C22A84EFB0F0042285230604005C -:10418000A3050400A3040400B7240020EFE07FAAE5 -:104190009384C44EA8308545EFE0FE9FA830894542 -:1041A000EFE07E9F68289307F00F6306F500EFE0CD -:1041B0009EA3FD577CA8B2402244924441018280D4 -:1041C0002C49411106C622C426C24AC09C317D47F3 -:1041D00093F7F7033CA9E91793F7F70F637BF70011 -:1041E00093040008B24022442685024992444101CA -:1041F00082809C21BD8B3CB9F51793F7D70FEDF367 -:104200002A841946A1051305650397C0FA1FE780A4 -:10421000201D914461D92C4885472302F4049C2138 -:10422000194689059987858BA302F4041305640454 -:1042300097C0FA1FE78020122285EFE05F8985474B -:104240002A89E31FF5F838389547631EF702EF0017 -:10425000104EB727002083C757558D8B6375F50225 -:104260001C28E36FF9F6B727002083A787588144FD -:10427000829748D02285EFE00FEAE31525F72285E3 -:10428000EFF0DFEE85B71C2881C71947E39AE7F402 -:104290002285EFE0CFE10C38034544068144EFB0BE -:1042A000E03E1038834544060D4597E0FA1FE7804D -:1042B000C097EFB020713DB779714AD037290020FF -:1042C0009307896E22D4A05326D252CC56CA379A6D -:1042D0000600B7340020B72A00204ECE5AC806D6B2 -:1042E0001309896E130ACA009384C481B739002068 -:1042F000938A0A54130B44013C3431479387E706F1 -:1043000093F7F70F636EF7148A07D2979C4382875F -:10431000114783474907E31EF7FE2285EFE07FED53 -:10432000E1BF0146930550020145EFB0E047130697 -:1043300050028145054597E0FA1FE780008FBC30A9 -:10434000858BB9C3284881465A868145A3810400DC -:1043500097E0FA1FE780608501E52285EFF05FE6D0 -:10436000383493073009E309F7F8EFB0A0652285E8 -:10437000EFE0DF90B250225492540259F249624A5F -:10438000D24A424B4561828023820400F9BFBC209F -:10439000858BFDDB1C282381040005476375F7002E -:1043A0001947E394E7FC9307B0F93CB4B1B7BC20DC -:1043B000858B638A072E23810400EFB0A0602285DD -:1043C000EFE03F87B724002083A7044085CBDC4380 -:1043D00095C789475C8283475404130561001946D9 -:1043E000DC825C28930564045C8697C0FA1FE78032 -:1043F00080F683A704404800DC4382978347740615 -:10440000B5DB83455404082413066404EF10010F40 -:1044100095B703453406014693055002EFB0C03806 -:104420008345340613065002054597D0FA1FE780EE -:10443000C07FBC30858B638D0726284881465A860D -:104440008145A381040097D0FA1FE780007601E53B -:104450002285EFE0BFA938349307A009E30EF7E8FF -:10446000EFB040567DA8034534060146930550023F -:10447000EFB080338345340613065002054597D0CC -:10448000FA1FE780807ABC30858B63830722284837 -:1044900081465A868145A381040097D0FA1FE780A0 -:1044A000C07001E52285EFE0DF8038349307900982 -:1044B00075B7BC20858B6388071E23810400EFB08D -:1044C00060508347490709476307F7008347490757 -:1044D0000D47631FF70083A7898303572407BC5345 -:1044E0001307C712858363F5E700930750F975BD7D -:1044F000183C3C2C1DCB34246304D71E6386F60085 -:1045000038A42285EFF0CFD0FC30E39707DE834755 -:1045100049070947E30BF7FC834749070D47E306C3 -:10452000F7FC2285EFE0EFF0B1B5F9DF382469FF41 -:104530003CA4C1BFBC20858B638707162381040080 -:1045400083474907C18B95C3EFB0C04783474907ED -:1045500093F70702E5DF83474907228593F7F70CB6 -:10456000230AF906EFE03FAB41BB83475907858B30 -:1045700091C7EFB020459307E0F905BD8347490790 -:104580001547BD8B639CE700EF00701A83C75A0183 -:104590008D8BE377F5EC9307D0F901BD834749078D -:1045A0001947BD8BE39EE7EA9307C0F9FDBBBC202A -:1045B000858BE38307D42381040083474907C18B9C -:1045C00089CBEFB020408347490793F70702E5DF27 -:1045D00059B783475907858BC9FF83474907154753 -:1045E000BD8BE38AE7FA834749071947BD8BE38D03 -:1045F000E7FAEFB0203DBDBB8947230EF4062285C4 -:10460000EFE00F8A383493077009E307F7CE9DB3C4 -:10461000BC30858B8DC7EFB0E03AB737002003A7D9 -:1046200007817C53ED9B7CD3238504003727024010 -:104630008347870493F7D70F2304F704DDB583A7D7 -:104640008983FC53E39A07CAEFB0C037B73700201D -:1046500003A707817C53ED9B7CD323850400372778 -:1046600002408347870493F7D70F2304F70423827C -:10467000040045BDBC20858B9DC723810400834772 -:104680004907C18BE38D07D28347490793F7070298 -:10469000E5DF2285EFE03F988347490793F7F70C62 -:1046A000230AF90619BB83A78983FC53E39607C441 -:1046B0002382040075B3B73700209387C781B823DE -:1046C000058B01CF23810700EFB0C02F2285EFE0DB -:1046D0008FA42285EFF09FA971B92382070049B307 -:1046E000E38407E2B1B5411126C2B72400209387C5 -:1046F000846E22C4E04B06C64AC0630C041C5824D6 -:1047000085476318F71C16301307006483C7846E4F -:104710003347D7021389846E850793F7F70F232059 -:1047200089062384F46E63C6E700EFE09E9123843C -:10473000046E78249D47631FF702834794069DCB40 -:104740008356E40663E5F6020C24930730047CB834 -:104750001305300493F6F60F0146EF00F159228558 -:104760002244B2409244024941016FF03FA08506C5 -:104770002317D4068547930530020545230AF90619 -:10478000EFE0BE85182C2301A4068D47631EF708B1 -:10479000EFD0BEFB0D8911E9930770023CA493078B -:1047A00050021CBC9307600221A885476318F506D8 -:1047B000930760023CA4930750021CBC930770024D -:1047C0003CAC7824B727002083C4F74E8547631A92 -:1047D000F70C123085452685EFE0EE9C83475403A5 -:1047E000898BF9C70C58E9C5BC25F9C38947230A49 -:1047F000F4021946B1051305640397C0FA1FE78058 -:1048000080B50347C407854763E8E70A2285224449 -:10481000B2409244024941016FF08F9F93075002CA -:104820003CA493077002B5BF89467C346316D70257 -:1048300013F7170001CF1307500238A4898B91CBCF -:10484000930760021CBC230D0400A5BF9307600200 -:104850003CA493077002FDB795C313F7170019C75F -:10486000930750023CA4A30C0400F1BF898B81C7BD -:1048700093076002C5BF93077002EDB71C3C130796 -:1048800040026365F7009307500201A8850793F77C -:10489000F70F13077002E368F7FE1CBC1C3C3CA436 -:1048A0005DB7B9450545EFE04EF312302A961DB7C6 -:1048B0008547230AF402B1B7B727002083A787589A -:1048C000832444098297835744073385A440E37FB8 -:1048D000F5F2B24022449244024941018280011122 -:1048E00022CCFD5706CE7CA98357C5062A8495C3E2 -:1048F0008346E5060C259307C0037CB901461305E2 -:10490000C003EF00713F22856244F24005616FF001 -:10491000FF857C250547BD8B6386E7008347050639 -:10492000918BF5D3B727002083A7877B93F70720C8 -:1049300085C302C402C202C08148014881470147C1 -:104940008146054681451305C003EF00313665BF3A -:1049500002C081480148814701478146054681459B -:104960001305C003EF00313279BFB737002023A011 -:10497000A7808280B727002083C7F74E411106C663 -:1049800089EB372505001305C5BEEFE0AEC4EFD0B7 -:104990000FB6B7270020372705009387876E1307C8 -:1049A0000705F8D3374705001307A7F6B8D73747E9 -:1049B00005001307676EF8D7B240374705001307A5 -:1049C00067F1B8DB4101828011C98327050A93E7AB -:1049D00007082320F50AFD572303F5028280B73725 -:1049E000002023A4A7808280B727002083A7877395 -:1049F0009C5799E33E8582809A2FE30DA7FE93870B -:104A00008705C5BF011122CC06CE2A840345650265 -:104A10009307F00F2E866309F5002EC6EFE0AE9CDB -:104A20003246FD572303F40283479402035764047C -:104A30009306640293E70706A304F4027E3CA28572 -:104A4000F240BA972312F404624437550500130567 -:104A5000859C05616FE04E85011122CC06CE2A842B -:104A6000034575029307F00F2E866309F5002EC6E5 -:104A7000EFE06E973246FD57A303F40293067402EB -:104A8000A2856244F240376505001305A5C00561A3 -:104A90006FE08E81011122CC06CE2A840345850267 -:104AA0009307F00F2E866309F5002EC6EFE0AE9354 -:104AB0003246FD572304F40293068402A285624421 -:104AC000F24037650500130545C305616FD0DEFD73 -:104AD000372700209307876EED46AE33F237231E4B -:104AE000D51A231CD51A963B03487514231AB51AF8 -:104AF0002318C51A2319D51A89471307876E630629 -:104B0000F8069307801483486514231FF51A094893 -:104B1000639108071A37231BE51A0567130707A9CE -:104B2000231DE51A6D482E876373B8006D479315F2 -:104B300007012312E51C6D48C18132876373C800E9 -:104B40006D472310E51C0356651B0357A51B6373B4 -:104B5000E60032872313E51C368763F3D7003E87D0 -:104B60002311E51C2306B50482808567938707A976 -:104B700059BF7A33231BE51A1307801455B703472F -:104B8000651489468357651C631ED70283568514B6 -:104B9000938787E899C6B3C7E702938757FD2147F4 -:104BA00031A02147B3C7E702938757FDB3C7E70298 -:104BB0000357451CC207C18363F3E7003E87230602 -:104BC000E504828085466316D7009387C7FB1147AB -:104BD000F1BF938707FBE1B78357051B0357C51B3D -:104BE000411106C663F3E7003E8793180701835718 -:104BF000E51B0357251B93D808016373F700BA8799 -:104C0000139807018356851B8357451B13580801CA -:104C100063F3D700BE860357651B8357A51B139309 -:104C20000601135303016373F700BA8783467514B3 -:104C3000C2070947C183639AE6000566130606A901 -:104C400042876370C802328729A80327051093168C -:104C5000470163CC06000566130686844287E36439 -:104C600006FF131807011358080183466514094706 -:104C7000639DE6061A3D9306204E3307D70293F64E -:104C8000F80F9A061386F63C9386C64F63440601D6 -:104C90009306C812158F63D3E7003E874207056667 -:104CA0004183130606A9BA876373C700B287C20798 -:104CB000C1830356051C13F7F80F9376F30F6316A1 -:104CC000E6040356251C631206050356451C631EA5 -:104CD000D6020356651C631AF602230D0506EFF093 -:104CE0001FEA0945B240410182800327051093164F -:104CF0004701E3C006FC056613068684BE85637320 -:104D0000F600B2859397050165B70546230DC506E4 -:104D10002310E51C2311051D2312D51C2313F51C9C -:104D2000EFF0FFE501457DBF0357651B8357A51BCA -:104D3000411106C66373F700BA87034665141397DB -:104D4000070189464183631BD6068566938606A9BB -:104D50006373D700B6871397070141838357651C98 -:104D60006387E70085472313E51C230DF5060357EA -:104D7000251B8357E51B6373F700BA870346751439 -:104D800013970701894641836317D6048566938686 -:104D900006A96373D700B68713970701418383572A -:104DA000251C6387E70085472311E51C230DF506C5 -:104DB000EFF0FFDCB2400145410182808567138638 -:104DC0008784E37DE6F88326051093870780F58FB7 -:104DD000D1F7328761B7856713868784E371E6FC74 -:104DE0008326051093870780F58FD5FB328745BF53 -:104DF000035785049547523DB307F702163D93D5F7 -:104E000037406355B600118F93173700B3C7D702E9 -:104E1000C207C1832313F5048280832745110D4601 -:104E20009306F00F98230D8B58B56313C700B42376 -:104E300074B99823418B38A99C337CA982805C2566 -:104E4000CD9B5CA582808327451158259C239356D2 -:104E500037408987B58F858B91C71347870058A541 -:104E600001458280054582808327451158259C2372 -:104E7000935627408D87B58F858B91E71347470061 -:104E800058A501458280054582808327450E850708 -:104E90002322F50E91E78327850E85072324F50E3F -:104EA0008327850E93F7070891C785472322F50EC0 -:104EB0002324050E8347950293F7070489CF7E3D8F -:104EC00003576504BA972312F5048327450A93F71D -:104ED000F7BF2322F50A82808327C50E8507232684 -:104EE000F50E91E78327050F85072328F50E832705 -:104EF000050F93F7070891C785472326F50E23284A -:104F0000050E8347950213F7070409C793E70702C5 -:104F1000A304F5028280B727002083A78777014585 -:104F200091E38280B83711E305059C43D5BFB727CD -:104F3000002083A787770145054791E38280B43736 -:104F40006393E60005059C43CDBF411122C426C2F0 -:104F50002A8491450145B724002006C69384846EB7 -:104F6000EFE0AE8703D7440A231AA404854763FC05 -:104F7000E7040355641C8357241C37270020374659 -:104F80000F00AA970355E7559387172713060624A2 -:104F9000B3A5A70281463305F502EF3091257E3C8B -:104FA0000357C4058355640583A804091D8F33077F -:104FB000B7028327040905461383F5FF130E800209 -:104FC0003E9763676600B24022449244410182806A -:104FD0003308C603C687FD563A9881E7231AC404EE -:104FE000DDB76314F4001C40F5DB83AEC70863989B -:104FF000BE0083A60709B306D840B3F6B60263E441 -:10500000A6009C43D9BF09066DBF411126C2B72433 -:1050100000209384846E03D7440A06C622C48547C1 -:1050200063F3E7042A848357251C0355651C37273F -:10503000002037460F00AA970355E7559387172797 -:1050400013060624B3A5A70281463305F502EF3007 -:10505000511A0346340583A8040985467D161303B7 -:10506000800263E7C600B24022449244410182803C -:105070003387660283270409FD553E97C68781E77B -:10508000231AD404CDB76314F4001C40F5DB03AE3F -:10509000C7080328C408631A0E0103A80709B3054B -:1050A000E84063640701B305074163E4A5009C433E -:1050B000F9B785067DB701114AC8372900201309C1 -:1050C000896E22CC0356490A6239B72600204EC6A3 -:1050D00006CE83D9E65526CA52C456C28546032752 -:1050E00085089307140063F7C60CAA843385370339 -:1050F0001304003283D7641C37460F0013060624BE -:10510000814613050519335585023304E50003D59F -:10511000241C23A884083E9513051527B3253503C1 -:105120003385A902EF30F10C2A8A832A0909014943 -:10513000B3872903130600648146B3B52903138599 -:105140000732B337F500BE95EF30B10A2295D68706 -:105150007D579DEBB385290313060064814633B95F -:10516000290313850532B335B500CA95EF307108B0 -:10517000229523A8A408F2406244D2444249B2498D -:10518000224A924A05618280639497009C43F9D336 -:1051900003A6C70883A6C408631AD60083A6070916 -:1051A0003387A6406364D5003307D5406367470360 -:1051B0009C4345B70344550313342400134414009F -:1051C0003E94330434039307003213040419335418 -:1051D000F4023A942328850879BF83C7540305094C -:1051E0008607FD17E366F9F4B5B7B7270020938764 -:1051F000876E83D6470A05476372D70C411122C4D4 -:1052000003A4070906C626C2A28789EB01EC230E78 -:105210000500B2402244924441018280D83F75FB90 -:105220009C43E5B76314A400004075D03C34C9E743 -:105230000327C4088327C5086300F708582D930780 -:105240000008AA846316F7041E3C1946930500085B -:105250002319F506231AF5063E3C231CF5045E3C93 -:10526000231DF5040A25EF60E00A8547DCBCDC2C31 -:1052700093F7F707DCAC130564062244B24092446E -:1052800031469305F00F410117B3FA1F6700E30F92 -:105290001E3D1946930500082319F406231AF40647 -:1052A0003E3D231CF4045E3D0A24231DF404EF60FC -:1052B000600689475CBCC1B7004089BF230E05006A -:1052C0008280B72700209387876E83D6470A4111D3 -:1052D00026C206C622C40547AA846371D7180327CD -:1052E0008510098B630C071683A70709BE85B5E5F2 -:1052F00003D6441C01447D581306260205862D065C -:105300007D55A5E3630104103C341A3CC5E7894789 -:10531000231BE404A309F4040357E4057E3C22851F -:10532000BA97C1071D8B998F231EF4043E3C231CA2 -:10533000F4045E3C231DF404EFF03FC18327440ACC -:1053400093E717002322F40A85475CA88D475CBCCD -:10535000B2402244924441018280D83D75FB8C4189 -:1053600079B798436394970051DFBA8783A60709FA -:1053700003A7040963E2E6023387E64083A6C40874 -:1053800063F4E6003377D7026376A7003A85637348 -:10539000C700BE859C43B5B7158F83A6C70863F4C5 -:1053A000E6003377D702E37707FF3A88E374C7FE56 -:1053B0003E84CDB79E3CB3F7E702D9FB9D469947A3 -:1053C00063F5E600935717008D0705672319F40668 -:1053D000130707C88A076353F700BA87231AF4062E -:1053E0003E3C0A2413065002231CF4045E3C930541 -:1053F0000008231DF404C9475CBC2244B240924417 -:1054000041016F503071B9C99A3C9E3DB3F7E70234 -:10541000B1E78387C40163D307049D46994763F5C9 -:10542000E600935717008D0705672399F4061307C5 -:1054300007C88A076353F700BA87239AF406BE3C6D -:105440008A2413065002239CF404DE3C93050008D2 -:10545000239DF404CD47DCBCEF50D06B238E0400B9 -:10546000C5BDB72700209387876E83D6470A0547B7 -:10547000637ED71A5D71A2C46AD003A407092A8D7E -:105480008357251C0355651C4EDEB7290020138762 -:105490000954AA976A2F9387172737460F00B3A599 -:1054A000A702130606248146A6C2CAC0930400645C -:1054B00052DC56DA5AD85ED63305F50262D466D28B -:1054C00086C66ECE056993890954130909C8130C61 -:1054D0000032930A0064EF30C151B385B4022A8AC6 -:1054E000054B9D4CB38BA402B3B4A402AE9405E06B -:1054F000B640264496440649F259625AD25A425B53 -:10550000B25B225C925C025DF24D61618280631548 -:105510008D0003240D0069DC5C3CCDE38327C408C7 -:105520000327CD08636CF70803250D090327040939 -:105530006366E50803D8E901198D330728031307CB -:10554000071933578703637BE50663F4A7003375B8 -:10555000F5026375450785836373FA00D2873E952C -:105560004286814642C6B335550333055503EF30B5 -:1055700041480505630465053C34835D8403324876 -:10558000A1E33E3C0581231BB405231CF4045E3CCF -:10559000231AA404231DF4048947A309F4048357A0 -:1055A000ED03230A6401A907231EF4048327440A98 -:1055B00093E717002322F40A91475CBC004005BF23 -:1055C00083578D0363F4B703B3F7B703428681466D -:1055D0005E85A6853EC6EF30C141B247050505810F -:1055E00063E6A7003385AD40E37AF5FC994763F69F -:1055F000BC0193DD1D0093873D002319F406939DA4 -:1056000027006353B901CA8D3E3C0A24231AB4070C -:10561000231CF4045E3C1306500293050008231D6E -:10562000F404D1475CBCEF50F04E49BF8280B727ED -:10563000002083C7F74E638C07145D7152DC86C669 -:105640002A8AA2C4A6C2CAC04EDE56DA5AD85ED68C -:1056500062D466D26AD06ECE7D5563040A0EB72737 -:10566000002003A4877771CCB727002093870754C5 -:10567000B74B0F0037490F0003DCE70183CD67010B -:10568000138DFB237D5B854C938B0B249D47130768 -:10569000204E130909248149343403280409639BEB -:1056A00096070355E407835AA403637B550B14281C -:1056B0006398960B83268411C5E68326440ACDE2BF -:1056C0007434639FF608B38AAA400A3C83244409D1 -:1056D0004A8633055503CE8642C63305E502B354E8 -:1056E0009502EE94C204C18023129408B38484030B -:1056F000EA94B3D47403B335AC023305AC02EF3093 -:10570000412F32481307204E9D47B30A5841AA9AA9 -:1057100033889A4063736801428B004035FCB72799 -:10572000002083A7875882976366AB04B307AB401A -:105730002320FA0083270A0029476364F704232003 -:105740000A00B640264496440649F259625AD25A93 -:10575000425BB25B225C925C025DF24D61618280D1 -:1057600083564408B3868603EA96B3D67603330895 -:10577000D8404DB7B3076541E3CA07FA23200A00B2 -:1057800055BFD9172320FA0013056BFF5DBF7D5568 -:105790008280411106C6EF00705119C98327851117 -:1057A000014581E7B240410182809C430505D5BF98 -:1057B0007D55CDBFB737002003A7878001114AC8A8 -:1057C00006CE22CC26CA4EC652C456C22A8949C326 -:1057D000BE8AB727002003D7C7788547631AF70624 -:1057E000B729002013870954622F8357450837478C -:1057F0000F00032A0509B38787021304F723130751 -:10580000072493890954A29733D4E702B7270020CD -:1058100083A787588297B3048A4063E8A40433843B -:10582000A44083C4790103AA8A800145858063F07E -:10583000840237450F00058C13050524B335A402F7 -:1058400003D6E90181463305A402EF30811A029A9A -:10585000F2406244930700FB2307F900D244424917 -:10586000B249224A924A05618280330444412A9413 -:105870007D84898C658C75B7411126C2B7240020C0 -:105880009387846E83A7C70922C44AC006C62A84A8 -:105890002E899384846E6394A70023AE0408832723 -:1058A000041299C70A24014693050008EF50902678 -:1058B0008357240499C70A244D4693051008EF50D6 -:1058C00070250A24154693051008EF50B0242305CF -:1058D0000400230804002309240503D7440A85474C -:1058E00063E6E70085450145EFD08EBCB240224417 -:1058F000924402490145410182803C25638507307D -:105900008357E507411122C406C626C28507231F17 -:10591000F5067C35230C05002A8413F727001DE3C8 -:105920007A3D954763E4E700014501A89305E0034C -:10593000EFF09FF42305A4020945B24022449244AB -:105940004101828013F7070221CF93F7F7FD7CB561 -:105950008327050A38352305050293E747002320EE -:10596000F50A8547631EF7021E3D1306204E0327E6 -:105970004509B387C702B3D7E7023727002083461C -:10598000675503475503938606053307C702B69745 -:10599000C207C1832311F5088607BA972310F508BB -:1059A0001C38858BDDCB8357C4057A3C6390E72296 -:1059B0003E3C8355A40503458402231FF40483471A -:1059C00034054EBC9205A30AF40283574405F91529 -:1059D000B72400207EB883578405938404543EBCCA -:1059E000EFC05EF23834231F04067E38631D0718AB -:1059F000FA2CB387E7021307003293870719B3D74E -:105A0000E702032704095107BA972328F4088357AC -:105A100064051EBC5C3C81C72285EFF00FDFFA2CC9 -:105A20001E3C9306003223110402B387E70233D6EB -:105A3000D702B3F7D7029306204E2326C408B387B4 -:105A4000D702B3C7E7021EB07E3C5EB07C3493E75A -:105A500007027CB41C38F99B1CB81C38898BA1C781 -:105A60000357E4127E3CB306F740139606016344E5 -:105A70000616631AF7028147014893048413232C06 -:105A8000F412232E0413154693058412268597B02D -:105A9000FA1FE780408C2685EF0030471C38A306AC -:105AA000A412F59B1CB81C3813F7070135C78356A1 -:105AB000C4147A3C3386E6409315060163CD051085 -:105AC000639CE604BD9B1CB88347A41481CB13F7E9 -:105AD0002700630C071085472303F4148347B4148D -:105AE00081CB13F72700630907108547A303F4143C -:105AF0002285EFF06FA38347A40799C78327040A81 -:105B000093E707102320F40A8327040A23050402DD -:105B100093E707202320F40A1C3813F707021DCB54 -:105B2000372700200327877313068005542318574F -:105B3000B386C6023697562F7A3C3387E640131653 -:105B40000701634906000357C4146315D70093F790 -:105B5000F7FD1CB88347940293F70704E38607DC3C -:105B6000035744047E3CE311F7DC18289307A00494 -:105B70006314F70085471CA88327440A93E707406E -:105B80002322F40A55B30347441703566405218BB7 -:105B900009CF763C035764170E3C158F3307B702C5 -:105BA0003347C7023697231BE41699CFFA2CB30765 -:105BB000F7021307003293870719B3D7E7020327C9 -:105BC0000409BA972328F40812BC91BD998F139742 -:105BD0000701E35407E8930580022285EFF0DFC94F -:105BE0002305A4021305800289BB918B99C38947C1 -:105BF000E5B523030414DDB5918B99C38947FDB541 -:105C0000A3030414F5B50545828005C5411193052C -:105C1000200222C406C62A84EFF01FC6FD572305C2 -:105C2000A40223080400A303F402B2402244410169 -:105C30008280828005C9411122C406C67C352A842F -:105C40009305E003898B91C3A145EFF0FFC2FD5797 -:105C50002305A402230804002304F402B2402244D2 -:105C60004101828082808327050A797122D406D679 -:105C700026D24AD04ECE52CC56CA2A84638F0732DF -:105C800013F7270011CBF59B2320F50A0A251946A7 -:105C900093050008EF5000688327040A13F74700B4 -:105CA00041CFED9B2320F40A8347940293F7070426 -:105CB00091CB8327440A228593E707402322F40AE5 -:105CC000EFF00F9338348547502883560406631944 -:105CD000F7661E3C1307204EB387E70203274409EB -:105CE000B3D7E70237270020034767551307070597 -:105CF000BA97C207C1830347A4022311F408860799 -:105D00002310F4089307000819C3930700045CAC40 -:105D100019E68347940293E71700A304F40299E677 -:105D20000A240D4693050008EF50C05E23100406B8 -:105D3000230A0400A30E04008327040A13F7870034 -:105D400005C30A24DD9B2320F40A154693050008A9 -:105D5000EF50405C8347940293E74700A304F402AA -:105D60008327040A13F7070131C7BD9B2320F40AD8 -:105D70008347B4040A24214689C7A30504041306F3 -:105D8000000393051008EF50E0588347A40489CF1F -:105D900083278410C18B89CB835584042285920587 -:105DA000C205C181EFE01FC68347940293E7170045 -:105DB000A304F4028327040A13F7070405CB03475F -:105DC000D40493F7F7FB2320F40AA14763FAE70012 -:105DD0003C3499E78327440A93E707012322F40A16 -:105DE0000A24314693051008EF50C0528327040A55 -:105DF00013F7070251CF343493F7F7FD2320F40A49 -:105E00000327C4108327841099EA1377070801CB6E -:105E10000327440A37064000518F2322E40A93F7F0 -:105E2000070263880754A9EA834674148947035715 -:105E3000241B639AF6528567938707A963FAE700E4 -:105E40008327440A056713070780D98F2322F40AA2 -:105E50008346641489470357641B6399F65085672A -:105E6000938707A963FAE7008327440A05671307A6 -:105E70000780D98F2322F40A0A24114693050008CB -:105E8000EF5040498347940293E71700A304F402BC -:105E90008327040A13F707101DC30A2493F7F7EFAB -:105EA0002320F40A230D04061D4693050008EF5035 -:105EB00060468347940293E71700A304F402832704 -:105EC000040A13F7070801CF0A2493F7F7F72320F2 -:105ED000F40A1306700593051008EF50A0438327BA -:105EE000040A13F7072029C393F7F7DF2320F40AE6 -:105EF00083476414230F0400A29703856716A30148 -:105F0000A414EF9060642301A4142285EFE03FC73E -:105F10000A24314693050008EF50C03F834794029E -:105F200093E71700A304F4028327040A13972701B9 -:105F30006357070079777D17F98F2320F40A8327A9 -:105F4000040A1397070163590704B727002003C504 -:105F5000B76E8345F402EFC0FEFF1E3C1307204ED0 -:105F6000232AA408B387E70237270020B3D7A70264 -:105F70000345675561777D1713050505AA9723111A -:105F8000F4088347940293E71700A304F4028327DD -:105F9000040AF98F2320F40A8327040A858B91CF02 -:105FA0008347940283452405228593E71700A304C1 -:105FB000F402EFF07F8C2305A4028307141685C733 -:105FC0000307240399463306F74063DBC63A832769 -:105FD000440AB7061000D58F2322F40AED57A30216 -:105FE000F416A300E4168347A41613F7270059CF2D -:105FF000830624030307241663DCE6000327440A10 -:1060000037061000518F2322E40A1147A302E41639 -:1060100003073416635CD7000327440A37061000D1 -:10602000518F2322E40A7157A302E41603070416D2 -:106030001306F007630CC7020346D4160345E416A3 -:10604000158F62076187B306A6406357D73493F66E -:1060500007016393063493F7F7F893E707012305E5 -:10606000F4168357041785072319F416835724174A -:1060700091CFFD17C207C1832319F41681EB0A24BF -:106080001306000293050008EF50C0283C2485CB7E -:106090008327041281CF3C2C91EB0A2401469305FF -:1060A0000008EF50202719E185473CAC83572404B2 -:1060B00099C70A244D4693051008EF50A025834741 -:1060C000441713F7070171C7BD9B230AF4168327F2 -:1060D000440A898BDDEF1828D547630CF70A1C3872 -:1060E000898BC5EB8144814901498D4A130A5002CD -:1060F00013978401618793773700098722970347B5 -:10610000D7178607B397FA007D8F638BE700268643 -:1061100005458145EF20310BB3E9A9003369B9008A -:106120008504E39744FD032584138325C413337545 -:1061300035012AC4B3F5250128002EC6F92383476B -:10614000541363E0A702034524037D57854759157F -:1061500062052C0061853AC43EC697C0FA1FE780ED -:10616000C0BC03278413A2476317F7000327C41397 -:10617000B2476300F70215462C001305841297A05E -:10618000FA1FE780401D8327440A93E72700232254 -:10619000F40A83464417A54713F796006314F704DF -:1061A0007A3C83576417636FF702B307F74013967F -:1061B000070163490602834754171306000A0507BF -:1061C000B387C702123CDD9A230AD416B3C7C702AD -:1061D000BA97231BF4168327440A37078000D98F08 -:1061E0002322F40A83479402E9C7918B89CF1028B0 -:1061F000C165938505A02285EFE01F868347940241 -:10620000ED9BA304F40283479402858B8DC3034561 -:1062100074029307F00F6307F500EFC0DE9CFD5793 -:10622000A303F40283479402F99BA304F402834777 -:106230009402898B89CF4E3C034584029205F9155F -:10624000EFC04EEC83479402F59BA304F40283470E -:106250009402A18B99CF4E3C0D4622859205F915EB -:10626000C205C181EFE04FFF83479402DD9BA30489 -:10627000F4028347940213F7070101CF0345640238 -:1062800093F7F7F8A304F402EFC0FE95FD5723033C -:10629000F4028347940213F7070201CF8355840465 -:1062A0000345640293F7F7FDA304F4029205EFC0DF -:1062B0006EE55C2C93F7070C81CB3834854722853B -:1062C000631CF710EFE0FFFF7E3CB5C313074006E9 -:1062D000B3F7E702A9EFB737002083A74780B724B9 -:1062E00000209384846E898B9DCF37290020130969 -:1062F00009540327490305CB9E28AE282545C2072C -:10630000DD8D029783274903EE2429458297832751 -:106310004903831504032D45829783274903830589 -:106320002403314582972397040023A80400B25028 -:10633000225492540259F249624AD24A45618280FB -:10634000930700045CAC19E68347940293E71700B7 -:10635000A304F402E39E069C0A240D46930500085C -:10636000EF40507BF1B293078014C9BC93078014AF -:10637000D5BC8327440A7D771307F77FF98FDDBCEF -:10638000998FE3D2F6C68327440AB7061000D58F4B -:106390002322F40A9547A1B18346B4168345C41657 -:1063A0003388B600635BE80013F80704631708003E -:1063B00093F7F7F893E707045DB12A96E348C7CA55 -:1063C0008D8EE3C5E6CA13F70702E31107CA93F7F8 -:1063D000F7F893E7070261B1EFE03FE1F5B541114E -:1063E00022C406C62A8483278411C9E383270412A2 -:1063F000D1EF0325041109C597A0FA1FE780C0CF8C -:10640000034574029307F00F6304F500EFC0AEFD7F -:10641000034564029307F00F6304F500EFC0AEFC80 -:10642000034584029307F00F6304F500EFC0AEFB51 -:106430000A24A924B727002083A7875485C7B72734 -:10644000002083D7C77899EF372400201304C44E67 -:10645000085009C997A0FA1FE78000CA2320040248 -:1064600023220402B240224441018280C84309C56C -:1064700097A0FA1FE78040C883278411BA271367C3 -:1064800007F0BAA79C43232CF410B1BFBA27C84326 -:10649000136707F0BAA709C597A0FA1FE780C0C520 -:1064A000832704129C432320F41289B7B7270020C6 -:1064B00083A7877799E33E8582809A27E30DA7FE1D -:1064C0009C43CDBFB727002083A7877837270020BC -:1064D000C1668345F754FD160147B227630BA6003A -:1064E0006309D60005071377F70FC107E3F7E5FE49 -:1064F00081473E858280411122C437240020130445 -:10650000846E8327040A06C626C2A1EBB7240020A6 -:106510006A3493840454FC341305150215858507E9 -:10652000160592073E95420541819305B02097A03C -:10653000FA1FE78020B115C1F4342320A40A814753 -:10654000138716001207939506012A97C181130835 -:1065500040F5930820F563D7F600B24022449244F8 -:10656000410182808DE32315150158C1A304050064 -:1065700041052A8663E3B70001468507C207232841 -:10658000C5FEC183C9BF2315050123220500F9BF3C -:1065900041119305A0201305801C06C622C426C203 -:1065A00097A0FA1FE78000AA1306801C81452A8461 -:1065B00097A0FA1FE78060DD014549C0B72400209D -:1065C0009387846E03A607099384846E1DCE83A6E9 -:1065D00044099E2613871700931707019315070197 -:1065E000C18363D30500854732870E27E384F5FE18 -:1065F000184365FF1EA48DCF83D7440A80C223AA07 -:10660000840885072392F40A19A885471EA423A8A5 -:10661000840823AA84082392F40AEFF0DFED83A70D -:10662000440923A00700230504002307040031A028 -:10663000228597A0FA1FE78020AC0A24B2402244AA -:10664000924441018280B727002041111387876E51 -:1066500026C28324070A22C406C61384876E81E8F3 -:106660002320040AB24022449244410182802685BC -:1066700097A0FA1FE78040A88440D5B7411122C4F3 -:10668000372400209307846E83A6070906C60147B6 -:10669000B6871304846EA9CB9227631BA60405EB6F -:1066A00098422328E4083E8597A0FA1FE780C0A4FB -:1066B0008327440923A007008357440A9DE3EFF092 -:1066C0009FF823280408B240224441018280832697 -:1066D00044096395F600232AE408F1B7944314C3F0 -:1066E000D9B7FD172312F40A8357440AE9FFC1BF43 -:1066F0003E879C434DB737250020614681451305F1 -:10670000857717A3FA1F670043C81C31382154212D -:10671000A2074207BA971821FD8A0548BA9738316F -:106720009305000201456207BA9701473316E80056 -:106730007D8E01C605051375F50F0507E318B7FE35 -:106740008147214633D7F640058B01C705051375F0 -:10675000F50F8507E398C7FE8280011152C656C423 -:10676000032A8513832AC51322CC26CA4AC806CE1B -:106770002A84A30B0512A3060512814413095002B3 -:1067800026865285D685EF204121058911C583478C -:10679000D4128507A306F4128504E39324FFF24084 -:1067A0006244D2444249324AA24A05618280411180 -:1067B000930520201305000A22C406C697A0FA1FDD -:1067C000E78040882A843DC581451306000A97A0CA -:1067D000FA1FE78080BBB727002023A88776B7374A -:1067E00000209387C781D84B9C4F37850500232A0B -:1067F000E408232CF408FD572300F404930710FB4E -:106800007CA0B77705009387E7832324F408B77744 -:1068100005009387E7C52326F408B777050093871B -:1068200027B1230204002328F40891451305658C41 -:10683000EFC00EC82285B24022444101828041113E -:1068400026C2B72400201387846E22C4032487083D -:1068500006C64AC0834754062302040685E38547DB -:10686000B72500202302F40619469385057C1305FD -:10687000640697A0FA1FE78000AE51A08546639B8F -:10688000D70038230DEB4945B240224492440249D7 -:1068900041018280832544081389846EDDED83479E -:1068A000C40695E3034754068947E30AF7FA83478A -:1068B0002900F1DB8547B72500202302F40619469D -:1068C0009385657C6DB71305C40697B0FA1FE78002 -:1068D00060DB2322A40819CD3C2589CF89472302F8 -:1068E000F40619469305C5001305640697A0FA1F20 -:1068F000E78060A6034744068947E315F7FAB70522 -:106900000001FD150145EFC0CEF168CCEF90603479 -:1069100028CCC1451545EFC04EEC85477CB08D476E -:106920005CA0834784033729002048A40D4713093E -:10693000C94E639CE702523883576404034539000B -:10694000C1453E96EFC08E9F03453900C145EFB06B -:106950003EF601452384046E05BFBC25A1D78947B7 -:106960002302F4061946B10541B70947034539002A -:106970006396E70003566404C145E9B75238EDBF9A -:10698000411106C622C426C2AA84EF90A003930731 -:1069900000FBFCA0B727002003C5F74E93050002BB -:1069A00037240020EFC02E9FD6381307006483479A -:1069B000846E3347D702850793F7F70F2304F46EED -:1069C00063C6E700EFC0EEE72304046EB240224442 -:1069D0009244410182800111B72700204AC837390B -:1069E000002026CA83A407778327898306CE22CC7A -:1069F00098434EC60D8B05C3B84B619BB8CB9843EB -:106A00001367870098C39C438D83858B89C70100DA -:106A10000100010001003737002083260781B7C736 -:106A2000898E938767ED9CC6B75755009387575556 -:106A3000DCC283C7A4039306F00FBA896387D7002B -:106A4000A38CF402FD57238DF40203C594038947F8 -:106A50006306F5008547A38CF4020145032789836B -:106A60005C4393E717005CC3930720FBFCA0B73798 -:106A700000201387C78118371384C78119C71424CE -:106A80000D476394E600A304040074302147639526 -:106A9000E600130780101AA41D47238E07800146C5 -:106AA0009305500278B023020400EF80F04F0326D4 -:106AB0008983A3020400A300040085471CC283A7A6 -:106AC0000981B705330098431377F7E798C39843D4 -:106AD0001377F7E71367071098C3373700200327AA -:106AE00047881447CD8E14C79306900534CA54576F -:106AF000F59A54D7D8309376F7079843137707F869 -:106B0000558F98C3F2406244D2444249B24905616C -:106B100082804111B727002022C403A4077706C64C -:106B200026C28347940321476388E70A8944543087 -:106B30006399970A93077002638CF61093075002CB -:106B4000130660026384F60013067002B737002054 -:106B500083A7078150B0373700209443B705CEFF95 -:106B6000FD1593F6F6E793E6060894C303274788D6 -:106B7000370533001447ED8E14C7B736002083A5C0 -:106B80008683B736002023A80504238E06809386CB -:106B9000C68123820600A3820600A38006008546E4 -:106BA00094C1944393F6F6E794C3944393F6F6E7BF -:106BB00093E6061094C31447C98E14C79306900534 -:106BC000B4C95457F59A54D79843137707F8518F9F -:106BD00098C3930720FB7CA0B24022449244410119 -:106BE000828093077002638CF602930750021307AA -:106BF00060026384F60013077002B737002083A693 -:106C0000478858B0DC56F59BDCD6B737002083A602 -:106C100007819C4293F707F8D98F9CC25DBF8347D9 -:106C20008403898B95C7B72700200356A40403C5A6 -:106C3000F74E93050002EFB07EF093075002A30CCD -:106C400094025CB02244B240924441016FF0BFD83C -:106C500022852244B240924441016FF07FD2B7278F -:106C600000209387876E03A7C70925E3411122C43B -:106C700003A4870806C69307000B78206304F70077 -:106C8000EF80505483478403372700200345F74E95 -:106C900013F7170011C78547A30CF402323801A877 -:106CA000898BF5DB0356A4048947A30CF4029305F2 -:106CB0000002EFB0BEE893075002230F04025CB05D -:106CC0002244B24041016FF01FD18280011122CCD9 -:106CD00037340020832784834AC806CE984326CAC7 -:106CE0004EC60D8B2A8905C3B84B619BB8CB984320 -:106CF0001367870098C39C438D83858B89C70100E8 -:106D000001000100010083278483B7390020014678 -:106D1000D8439305F00F13671700D8C383A60981E2 -:106D200037C7898E130767ED98C637575500130785 -:106D30005755D8C2D84313671700D8C30345C903B2 -:106D4000930730FB2303F900B73700209384C781F2 -:106D50001D47238E0780F8B023820400EF80D024E3 -:106D600003268483A3820400A380040085471CC2F9 -:106D700083A70981B705330098431377F7E798C3D2 -:106D800098431377F7E71367071098C33737002046 -:106D9000032747881447CD8E14C79306900534CA3D -:106DA0005457F59A54D70347B9039376F707984396 -:106DB000137707F8558F98C3F2406244D244424992 -:106DC000B249056182807D572300E504034795039E -:106DD000411106C6230DE5022147A30CE502034736 -:106DE000B50358B1EFF09FEE373700208326878335 -:106DF000B567BD07DCC601000100832787830967EB -:106E0000930600F898C7373700201307C78154A3AB -:106E10000567130727D1F8D3B2403D673D07D8C7B0 -:106E200041018280011126CA06CE22CC4AC84EC634 -:106E300052C403479503A147AA846311F72293071D -:106E400050FB7CA10345C50393052002EF8010048D -:106E500003C9C403894763F3270109491379F90F6B -:106E600003A44409930720029CA495471CA0F82082 -:106E7000B72900209307400B9389896E631BF700A5 -:106E800083A7890C139717016355070093075002D6 -:106E90001CA0930720021CB003C744068947138A2D -:106EA0006406631BF70083A5440819465285B105A3 -:106EB0009790FA1FE780204A83C75406858B91E795 -:106EC00003C7440689476316F7001C2093E70704AD -:106ED0001CA01946D285130524009790FA1FE7805D -:106EE000804783C7540789C71C2093E707F81CA075 -:106EF000194693856407130584009790FA1FE7806D -:106F0000804583C784057CA483C794057CB483C76C -:106F1000A4051CA883C7B4051CB8FC4C13D7870074 -:106F20003CA8C1835CA838B889476313F9008D4732 -:106F30005CB893171900A69703C7070537260020EA -:106F400003A5440918AC03D707051306065421838B -:106F500018BCB82F38ACBA2F218338BC03C707023E -:106F60009E3358ACA1835CBC83D7490A638C07125B -:106F7000835EE6018D472397F40493850E199307EA -:106F80000032B3D5F50283D6A902BC5083AF0909FC -:106F9000938626028586AD0693020032154FBE9574 -:106FA0007E887D5383D7E4046314080C63E966008C -:106FB0008507C207C1832397F404E373FFFE83C7E9 -:106FC000E404B7060082FD167CA883D7E404A183FD -:106FD0007CB883C7690F7CAC83C7790F7CBC83C73F -:106FE000890F2300F40283C7990FA300F40283C71B -:106FF000A90F2301F402DC24FD8BA301F40283C753 -:107000003900034735029607D98FA301F502B73738 -:10701000002083A507815C2A93F7F7031397970154 -:10702000DC55F58FD98FDCD53717004093077005F5 -:107030002300F704930780FA2300F704542AA54796 -:1070400063F0D7083E3393E70701F24062443EB352 -:10705000D2444249B249224A05618280930740FBEB -:107060007CA1930520020145EF8040620149CDBB20 -:107070003387D703032E080913070719335757021D -:107080002E97B308C7416369EE00B308EE4063F57D -:10709000D80085072397F40463F368004683032828 -:1070A000080009B71C3D182D9946A207D98F8D837A -:1070B0008D073E8763F3F60019472397E40401B771 -:1070C0003E33C207C183BD9BC207C183BDBF41110F -:1070D00022C4372400201304C44E26C2AA842830B8 -:1070E000C14506C6EFB03EAB283093050002EFB0B5 -:1070F0009EAAB2402244B7370020A3810782238290 -:10710000040023930400924441018280411106C689 -:1071100026C222C44AC0AA84EF103008EFF00FB98B -:1071200063010510B85083A7440901482324E508EA -:10713000B84CB72500202A84232CE508F84C1546C6 -:107140009385E57D232EE508D83B13058513372964 -:107150000020A30EE5EEF83BF42B1309896E2207FD -:10716000558F231FE5EE983F942F2207558F23104C -:10717000E5F0B83FB42F2207558F2311E5F0D82F43 -:10718000DC3FA207D98F2312F5F0DC24232205016E -:10719000A30DF5EE81471CC19790FA1FE780A01B55 -:1071A000F8209307600B6312F70285472300F4145D -:1071B00083C7C4030D47639EE7069307202023136C -:1071C000F41485472314F41415A08327890C13970E -:1071D0001701635D070083A74409982383A78409E7 -:1071E0009C23F98F9583858B2300F4142285EF105F -:1071F000206B8327090D0A24294693F7072091E382 -:10720000054693050008EF40E0108327890C13978B -:107210001701635807000A24514693050008EF4000 -:10722000600F2244B24002492685924441016FF02A -:107230001FEA2303F414A303F4144DBF011122CC5D -:1072400006CE26CA4AC84EC68347C5072A8499EB8C -:107250000325440855E158348547631DF7126858E3 -:107260002C5C11A20325450821C53C25B1C38347E9 -:10727000D407C1C3834734081307000493F7070CEE -:107280006399E7069304E407A6856905EF40201497 -:10729000054783274408631DE5020947230EE406DA -:1072A0001946A6851385C7009790FA1FE780A00AA4 -:1072B0000347C4078947E30DF7F819469305E40728 -:1072C000130564069790FA1FE780801151F119A009 -:1072D0009C3391EB8144F240624426854249D2447A -:1072E000B24905618280B727002083C7976EE9D332 -:1072F000D5B71C31D5FFF9BF3C29B1DF834754070F -:10730000D1C78347B4071307000493F7070C639FA3 -:10731000E70693096407CE851305A502EF40200B0D -:107320002A898547AA84032544086318F904194665 -:10733000CE8551059790FA1FE780E001B72700201E -:1073400083C7976E89DB8947230AF4065C34E3948C -:1073500027F983274408AA23DA23EE239E2742072E -:10736000598DC207DD8D6244F240D2444249B24990 -:10737000056117A3FA1F6700C3461C31A1DFB727B9 -:10738000002083C7976EE38807ECA9B71C31E3940C -:1073900007EC89B70347D40683475407E31CF7F289 -:1073A0001946930564071305E4069790FA1FE780D2 -:1073B0002003B334A00005B7411106C622C42A84B5 -:1073C000EFF05FA6B73700200327440983A7878320 -:1073D000B7068000B8DBB737002083A70781984342 -:1073E000558F98C3D857719BD8D797A0FA1FE780BD -:1073F000C078B2402244014541018280411122C43B -:107400002A840325850981460146814506C626C290 -:107410004AC097A0FA1FE7804079631D050E8324B8 -:1074200084099D469C20BD8B1CB4983038A463957C -:10743000D70EBC200346D40393D667006310D60E44 -:1074400093F7F7031389440063FCE70C230A04064F -:10745000BC30858B9DC38547230AF4069C20CA85D2 -:1074600019469987858BA30AF4061305640797903C -:10747000FA1FE78040EE1389A400230E0406BC30F7 -:10748000898B9DC38547230EF40683278409CA850B -:1074900019469C231305E40719099D83A30EF406DE -:1074A0009790FA1FE78020EBBC30A18B81CB8347FC -:1074B00019000347F40391836316F7062285EFF062 -:1074C000FFD785479304F007631AF5008347E40369 -:1074D00089CFFD17230FF402EF80C04EB240224443 -:1074E000268502499244410182800347C4038947AB -:1074F000631AF700B737002083C7778281C78D47AB -:10750000230EF40222852244B240924402494101F2 -:107510006FF09FEA8544D9B79D44C9B795447DBFB4 -:107520008D446DBFD1445DBF011126CAAA840325D5 -:10753000850981460146814522CC06CE4AC84EC601 -:1075400097A0FA1FE7806066054459E503A98409FE -:107550002147034409003D8880B483471900BCA437 -:107560006314E4088349290013D7690041E31387B2 -:107570001900639FE706034739008D47631CF70630 -:10758000834709001946930549009987858BA38A8B -:10759000F406138564079790FA1FE780C0DB8547E0 -:1075A000238EF40683A7840919469305A9009C231A -:1075B0001385E4079D83A38EF4069790FA1FE78056 -:1075C00080D9B547639AF9022685EFF03FC709C510 -:1075D0002685EFF0BFB301442285F2406244D244D5 -:1075E0004249B249056182801D44FDB71544EDB79B -:1075F0006544DDB74544CDB76144F9BF011122CCE4 -:107600002A840325850981460146814506CE26CA7E -:107610004AC84EC652C497A0FA1FE78000596314A7 -:107620000528832484091D4698209376F70014B416 -:107630009C3093F7F7033CA46395C61E7D57230D3A -:10764000E402B820054693566700A30ED402639E59 -:10765000C6241377F7030507639BE724B830E14797 -:107660009376F7FB6397F624937787002A899389AB -:1076700044008DC3DC308566938606F0A207F58F43 -:10768000D42093896400D58F2312F404DC309183D5 -:10769000A30FF402418B014641C7EF80A03283C79C -:1076A000090093F7F703A30DF40203C629008967C5 -:1076B000938707F022067D8E83C719005D8E4206F0 -:1076C00041862311C40483C729009583230EF40245 -:1076D0008387090063DF07009307C0128346940382 -:1076E00005473306F6023C246397E600A9078E0798 -:1076F00029A8F947E5B7373700200347778289077C -:107700008E076DC39387770D86071D8EB7070080A0 -:10771000130746ED93C737ED63EFE718230DD40247 -:10772000BC3093F7070491C7034794038947630765 -:10773000F7180347A4039307F00F630BF70C130725 -:1077400000506364C70AB737002083A68783356774 -:107750003D07D8C60100010003A787838966B734B7 -:10776000002014C7930500F89386C481130656EDD4 -:10777000CCA20606BD6670D3BD0654C7138AC48169 -:10778000BE897C53FDFFA147A30CF4022285EFF0D4 -:10779000EFD303A78983B567BD075CC7010001006C -:1077A00083A78983096798C7130700F82302EA00B3 -:1077B00013072059F8D33D673D07D8C797A0FA1F94 -:1077C000E780A03B83C7C481858BB9C3228562440F -:1077D000238E0480F240D2444249B249224A0561D4 -:1077E0006FF0DFC19387A70419B70347040463113F -:1077F000F7021306F6D8930710273356F6023775AB -:10780000050093060404A285130565DCEFB0CEA93C -:10781000F24062444A85D2444249B249224A056153 -:107820008280398B51EFE91793F7F70F7D471309E2 -:107830000008E36FF7FC8547230AF4069C201946ED -:10784000938524009987858BA30AF40613056407A2 -:107850009790FA1FE78020B01C34230E04060547DA -:107860006392E70283258409230EF40619469C21BE -:107870001305E407A1059D83A30EF4069790FA1F54 -:10788000E78060AD2285EFF07F9B85472149E311BA -:10789000F5F822856244F240D2444249B249224A74 -:1078A00005616FF07FB10549A5B7154995B70D4939 -:1078B00085B70949B1BF1309100299BF5D4989BF56 -:1078C00013090008B1B77971B727002022D403A4A7 -:1078D000077726D2B73400204AD04ECE52CC56CAB3 -:1078E0005AC85EC662C406D69309200B130A400B21 -:1078F000930A600B130B300B930B500B1389C4814D -:10790000372C00207C206392370383C7C481858B8A -:1079100081CB2285238E0480EFF05FCE65D52DA824 -:107920009384C4812382040005A863974705B73474 -:1079300000209384C4819C30858BEDD7B72700202D -:1079400083A78758A38004008297210528D0228529 -:10795000EFF0CFFBA38304005C20638E070E22545C -:10796000B25092540259F249624AD24A424BB24B47 -:10797000224C45616FF02F866396570937370020F8 -:1079800083268783B567BD07DCC601000100832716 -:107990008783B7340020096798C7930600F81387D8 -:1079A000C48154A3373700208326078109469842B3 -:1079B00031830D8B631EC7021307E043F8D33D6785 -:1079C0003D07D8C797A0FA1FE780201B83C7C48153 -:1079D000858B89CB238E0480EF70D07E2285EFF0DB -:1079E000BFB43DD98347E4038507230FF402ADB745 -:1079F000984231830D8B01E713076019C1B7130754 -:107A0000E01B6DBF639C670183C7C481858BA9D7C9 -:107A10002285238E0480EFF07F9E09B7E39E77F3E3 -:107A200083471900858B8DC78346C403A3000900D3 -:107A3000054783278C58637AD70082971305850200 -:107A4000930760FB28D07CA075BD82972105CDBF30 -:107A50002302090011B7B250225492540259F2493C -:107A6000624AD24A424BB24B224C4561828041115C -:107A7000B727002022C403A40777B7370020138755 -:107A8000C78106C618379387C78119C794270D4742 -:107A90006394E600A3840700F4331387A6FF1377EB -:107AA000D70F01E7054794A798B7EF70B07122850B -:107AB000EFF0EFE113063002930500080145EF30C7 -:107AC0007005034504049307F00F6307F500EFB05A -:107AD0008E91FD572300F404B2402244410182807C -:107AE000B7670500372700209387E77A232AF776C0 -:107AF00082808347651393D63700AA9683C5061301 -:107B000013F7770033D6E540058A630306101C3966 -:107B1000898B639607108327450A898B6391071029 -:107B2000011122CC2A841305851306CEEFE0FFBD98 -:107B300003475413834724036360A70A138567FF31 -:107B400062057D56FD462C00618532C436C697A07D -:107B5000FA1FE780801D0326841322478326C4135F -:107B6000B247718FF58F6314E600638AF600280030 -:107B7000EFE0BFB9A54763EFA702A30AA4128347AA -:107B800044178DE7034664132245B245EF00F160C8 -:107B9000058909CD8327C41093F7070881CB832774 -:107BA000440A37074000D98F2322F40AF240624486 -:107BB000056182806D15A30AA41215462C001305D9 -:107BC00084129780FA1FE78000798327440A93E79D -:107BD00027002322F40A65B7138547FF8345641302 -:107BE00062056185EF70701C59F903466413054501 -:107BF0008145EF00515D032784138327C413134588 -:107C0000F5FF93C5F5FF698FED8F3AC43EC675B792 -:107C10008547B397E700CD8F2388F6128280828054 -:107C2000411122C426C206C64AC0834745032A849E -:107C3000B73400208507230AF5023C396399074CC5 -:107C40005C251307000438B9B19B93E737005CA5A6 -:107C50001C39A30D0500139787016187635807003E -:107C600093F7F7071CB9EF20707239A88327850AAC -:107C700013F7270039C7F59B2324F50A832705103E -:107C8000918B8DCFEF10E01B383C85476319F70CC3 -:107C9000832784115824DC4398A383278411583800 -:107CA000DC4398B30327841183A784835843B240ED -:107CB0002244B8DB9244024941018280EF106016F1 -:107CC000E1B713F7170019C7F99B2324F50AEF1042 -:107CD000C0085DBF182985466316D720D1CF13F79A -:107CE000070119C7BD9B2324F50AEF10206369BF64 -:107CF00013F7070401CB93F7F7FB2324F50AEF10E2 -:107D0000E01859B713F7070801CB93F7F7F72324C7 -:107D1000F50AEF20206C8DBF13F7072001CB93F7F6 -:107D2000F7DF2324F50AEF10F01BB9BF13F7074064 -:107D300009CB93F7F7BF2324F50A2285EF106036AD -:107D4000A1B713973701635A07007D777D17F98F25 -:107D50002324F50AEF10C04405BF2324050A832716 -:107D60000411582498A383270411583898B383A783 -:107D700084830327041125BF8327450A63850726CB -:107D800013F7070119C7BD9B2322F50AEF106054B2 -:107D9000E5BD13F7070401CB93F7F7FB2322F50AA0 -:107DA000EF10E001D5B513F7072001CB93F7F7DF0C -:107DB0002322F50AEF10C05FC1BD13F7170001CBF6 -:107DC000F99B2322F50A2285EF00B06775BD13F7F2 -:107DD000270019C7F59B2322F50AEF10C0446DB5A3 -:107DE00013F7074001CB93F7F7BF2322F50AEF10F3 -:107DF000600759BD13974701635B07007D77130741 -:107E0000F77FF98F2322F50AEF208051B5BD13F7D4 -:107E100007020DC39790FA1FE780E09BE30605E693 -:107E20008327440A228593F7F7FD2322F40AEF0003 -:107E3000D07499BD13F7870001CBDD9B2322F50A8F -:107E40002285EF10C07889B563DD0700860785833A -:107E50002322F50A8327050A93E727002320F50A42 -:107E6000FDBD13973701635A07007D777D17F98FA2 -:107E70002322F50AEF10E00201BD13972701635A90 -:107E8000070079777D17F98F2322F50AEF10E011AB -:107E9000E5BB1397E700635A070001777D17F98F59 -:107EA0002322F50AEF10E01DC5B31397B700635BFB -:107EB00007003707F0FF7D17F98F2322F50AEF102F -:107EC0000027D9B313979700635B07003707C0FFFC -:107ED0007D17F98F2322F50AEF10203275B3232284 -:107EE000050AB5BD630707109307600463E3E70A5B -:107EF000930750046374F7189307C002630FF71ACF -:107F000063E1E704930730026305F70E63E4E702D9 -:107F1000E947630EF716F547631DF70C2285EF203E -:107F2000F0468327040A2308040093E71700232060 -:107F3000F40A99BB93076002630FF7189307700266 -:107F4000E1BF93077003630DF71463EBE70093073A -:107F5000E0026302F71893071003E308F7D851A86B -:107F600093078003630BF712930710046313F7085A -:107F70008347A50279476391E70C83270510918B0E -:107F8000CDCBBD47A305F502EF00B06B85471CA81C -:107F9000E5B99307700563E0E70693076005E377AB -:107FA000F7EE9307B0046305F71463E6E70293075F -:107FB00070046310F7040347A502F9476315F70A35 -:107FC000EF00306685471CA88347940293E71700AB -:107FD000A304F40255B993071005E30CF7D29307F5 -:107FE00050056318F7009780FA1FE780C07EE30D05 -:107FF00005C822858DB99307B00663E1E7029307B0 -:10800000A006637DF70E930710066306F70E93072D -:108010006006E310F7FEEF10E06C8DBF930760077A -:10802000E30DF7D093076008E315F7FCEF10401756 -:10803000B1BFEF00105F99BF0549639B27018357CC -:10804000250703574507BA978587231BF504A5BB6A -:10805000EF20D0338327040A2308240193E7270065 -:108060002320F40A15B18357250703574507BA970C -:108070008587231BF504EF00D03CB9B7835725074C -:1080800003574507BA978587231BF504EDB7EF0023 -:10809000B046D9472309F404C5BEEF009050EDB6B1 -:1080A0008547A305F5049305C50A41461305C50C8C -:1080B0009780FA1FE780202A61B38D472305F504D6 -:1080C0002322050E2324050E2326050E2328050E44 -:1080D000EF00F04655BE2285EF20502B1C38DD9B6B -:1080E0001CB88327040A93E707012320F40A79BD0B -:1080F000EF00D05961BDEF20702949BDEF20102954 -:108100008327040A056713070780D98FF9BFB727AC -:1081100000209387876E9A2B05079AABB5B67971C5 -:108120004AD0372900209307896E22D403A48709F7 -:1081300026D25AC8B7340020379B06004ECE52CC08 -:1081400056CA5EC606D61309896E9384C481373A2F -:108150000020B7390020B73A0020930B0403130B1B -:108160000B047C241307100C6392E71883278A837F -:1081700098430D8B05C3B84B619BB8CB98431367ED -:10818000870098C39C438D83858B89C701000100BC -:10819000010001002285EFF0BFA8930700F8BCB0F2 -:1081A0008347241403A609812383040093F7F7036C -:1081B000139797015C56B7060082FD16F58FD98F8D -:1081C0005CD637170040930770052300F704930728 -:1081D00080FA2300F70483462414A54763FED704DE -:1081E0003E3393E707013EB30327840983A7098140 -:1081F00098C70327C409D8C303278A83544393E647 -:10820000160054C37453FDFE9306000A74D3D4576A -:10821000F19A93E61600D4D75438C5C68346A40411 -:10822000898AC5C2A28505459790FA1FE780C07864 -:1082300019C9EF7020791DA33E33C207C183BD9BCE -:10824000C207C1834DB703A70981B70633001C439A -:1082500093F7F7E71CC31C4393F7F7E793E707107F -:108260001CC303A74A881C47D58F1CC783278A8352 -:108270001307A007B8CB03A74A885C57F59B5CD7C8 -:108280008347641383A6098113F7F7079C4293F78A -:1082900007F8D98F9CC25038930730FC834564148B -:1082A0007CA49547FCB0894711066396F500834589 -:1082B000841493E52500014597A0FA1FE780E09616 -:1082C0004DB594433706330093F6F6E794C39443D1 -:1082D00093F6F6E793E6061094C383A64A889C4675 -:1082E000D18F9CC69307A0053CCB71B71307400CF8 -:1082F0006391E74CBC30858B638F0746BC30E20747 -:10830000E18763D307028347641313D7370093F6DB -:10831000770022978547B397D7008346071393C703 -:10832000F7FFF58F2308F7127C3413F7270009EBCA -:10833000130700F893E7270058AC7CB4232E0908F4 -:108340008345A40403254411DE861306240385898E -:1083500097A0FA1FE78060858347240303476904D9 -:10836000E8A0998F2309F402FC20858B63980732DB -:1083700083479402A30C0400231F040693E72700FD -:10838000A304F4022285EFC01FAC39E583278411D2 -:10839000A30904008DCB383C1DC79837058B05E732 -:1083A000BA27C843136707F0BAA79780FA1FE78078 -:1083B000A0D48357240485072311F4048327841150 -:1083C0009C43232CF4105C3881CB8347A404898B15 -:1083D00081C72285EFC07FABFC20898B638D070EA0 -:1083E0008347A404858BE5CB1C3C85071CBC2285F8 -:1083F000A38104009780FA1FE780A0598547631086 -:10840000F52E2285EFF0DF818347A404898B6380FA -:10841000072A5C38638D0728A28505459790FA1FC7 -:10842000E7808059E31705E003A70981B706330009 -:108430001C4393F7F7E71CC31C4393F7F7E793E755 -:1084400007101CC303A74A881C47D58F1CC7832766 -:108450008A831307A007B8CB4C38034564148947B7 -:1084600091056316F5000345841413652500EF702C -:10847000E02183A70981B70680009843558F98C3F0 -:10848000D857719BD8D7930730FC7CA4832704125C -:108490008DCF7834058B15CBD443D0278C270A2475 -:1084A0008906EFC0107E15E183270412BA27A38442 -:1084B0000700136707F0BAA79C432320F4128357E1 -:1084C000040481C7FD172310F40450388345641455 -:1084D00009451106D5B32285EFC01F9909F92285F8 -:1084E000EFC0BF931C3813F787001DC778280DC74E -:1084F00074384547636AD7003727020013074706D9 -:108500003357D700058B09EB9307D0032309F404F5 -:10851000930770021CA831A854340D476397E604F2 -:108520007C38130790026372F7027C381D4763950D -:10853000E7028347A404858BE38B07EA7C28E38862 -:1085400007EA2285EFC05F995DB58A07DA979C43F9 -:108550002285829779F9F1BF2306F4028327840AE2 -:1085600093E717002324F40AE9B7782801CB228582 -:108570009780FA1FE78080354DDD95BD383855FB73 -:108580001828C1466317D70093E717001CB8854722 -:1085900051B7D5466315D70093E72700C5BFF1460D -:1085A000631BD7008327040A2308040093E71700FE -:1085B0002320F40ABDBF93069005631ED708034726 -:1085C000A41401CB034664148546B396C600631C0D -:1085D000D7000346B4140DCE834574148546B39674 -:1085E000B6006307D60293E707011CB84DD3937614 -:1085F00047008357641CB9C603578414938787E8E0 -:108600000DC30947B3C7E702938757FD214739A830 -:108610007C2CE9DF8327040A93E707202320F40A50 -:10862000F1B72147B3C7E702938757FDB3C7E70206 -:108630000357441CC207C18363F3E7003E87230648 -:10864000E404B1B7058B01C7938707FBC1B79387D4 -:10865000C7FB1147E1BF930770066316F70203A734 -:1086600009817C53ED9B7CD323850400372702408E -:108670008347870493F7D70F2304F7045C2493F709 -:10868000F7FD5CA429B793075009E314F7EA834781 -:10869000441793E74700230AF416D5BD1C2C850721 -:1086A0001CAC8357E90085072317F90089B303A79A -:1086B0000981B70633001C4393F7F7E71CC31C433B -:1086C00093F7F7E793E707101CC303A74A881C47F3 -:1086D000D58F1CC783278A831307A005ADBBEF7016 -:1086E000602E832704129DCB7834058B05CBD443B1 -:1086F000D0278C270A248906EFC0B05805E18327CC -:108700000412BA27136707F0BAA79C432320F41278 -:108710008357040481C7FD172310F4042285EFD08A -:108720008FD41C3C85C793F7070F81CB9305D003EB -:108730002285EFD06F942305A402B727002083A7DA -:10874000475789C795451305600882971C2C99C720 -:108750008347C90481C72285EFF0AFB9228522542F -:10876000B25092540259F249624AD24A424BB24B39 -:1087700045616FD02F8483278A83FC53E393079E40 -:1087800023820400EF700024BC30E207E18763D746 -:1087900007008357290185072319F9002285EFD0A7 -:1087A0008FCCBC30E207E187E3DA07FAEFA07E89DD -:1087B00045B71307300CE39EE7A6BC20858BE9CBB9 -:1087C0008327040A23810400858B95C3EF70801FE3 -:1087D00003457402EFA02EC183452405FD57A30372 -:1087E000F4022285EFD04F892305A40285BF83556B -:1087F000041C0356241C034574149105C205C18151 -:10880000EF60907A8347A404858BB9CBA28501459C -:108810009790FA1FE780802103A70981B7063300EC -:108820001C4393F7F7E71CC31C4393F7F7E793E761 -:1088300007101CC303A74A881C47D58F1CC7832772 -:108840008A83130790070356041CB8CB930740FC98 -:10885000110642067CA44182834574140545A9BCD7 -:1088600003A70981B70633001C4393F7F7E71CC33E -:108870001C4393F7F7E793E707101CC303A74A8845 -:108880001C47D58F1CC783278A831307900565BFB4 -:1088900083278A83FC53E396078C2382040051BA12 -:1088A00001114AC8372900204EC69309896E83C733 -:1088B000390026CAB724002006CE22CC52C49384A5 -:1088C00004541A3D2307F502FE2C130A00322A84B1 -:1088D0003307F70237460F00130606248146814509 -:1088E0001309896E335747032326E5081305C01281 -:1088F0003385A702EF00E10F2311A4082285EFC002 -:108900008FFBFA2C1E3C9306204E2285B387E7028C -:10891000B3F74703B387D702B3C7E7021EB0835745 -:10892000240886072310F408EFC08F9A2285EFC031 -:108930002FCC4E3C22859205F915C205C181EFC0AE -:108940006F952285EFD07FE1E14737150020A30A1C -:10895000F4128545130565A423AE8908EFA04EB532 -:10896000B737002083A74780898B81CFDC5891CB14 -:108970008325840935458297DC588325C409394508 -:108980008297F24062442317090023280900D24449 -:108990004249B249224A0561828001114EC606CE83 -:1089A00022CC26CA4AC8EFD0BFBEAA892DC5EFD0B7 -:1089B000FFAF2A8463000518C1473EA5930700FB5B -:1089C0007CA53729002085471CA9930709549E2BB5 -:1089D000130740101309095495073E85C207C18348 -:1089E0006374F700130540101317050141839307C3 -:1089F00000046374F700130500044205930530205A -:108A000041819770FA1FE780E0632328A41001EDED -:108A10000A24EFD0BFC6F24062444E85D244424998 -:108A2000B24905618280B737002083A74783B72406 -:108A300000201387846E8326C70C232AF410832713 -:108A4000870C1833232ED40E232CF40E9384846EBB -:108A500009E793F7F7F3232CF40E8327C40F0327BA -:108A6000840F231304142326F410BE3C2324E410A3 -:108A70000347D4022312F41483C7A404136717FC1A -:108A8000A306E402A307F4148327440A03A7040CF3 -:108A900093E607042322D40A9316670063D60600E0 -:108AA00093E707052322F40A83C7C40481CB8327F5 -:108AB000440A37074000D98F2322F40AFD577EBCB1 -:108AC0007EB02304F4028567938787BB2314F404E4 -:108AD0002285EFC0CFB6034549012301A414EF60FE -:108AE0007020D147A306F41693078002A305F4165D -:108AF0009307006F231FF4149307F0072300F41665 -:108B0000F5779387A7EB2311F4168327C40FA301EE -:108B1000A4142303A416A303A4162304A416A304D5 -:108B2000A41693F7070881C78547230AF4162394F0 -:108B30000400D5B58549C5B5411106C6EF50603C66 -:108B4000B24041016FE0DFF974290D47AA876384C1 -:108B5000E600054582800327451150232305C50201 -:108B600038336313D70238356DF71829930600029E -:108B70006307D7009306300201456316D700130739 -:108B8000600298AB01458280BD46631ED70018295C -:108B90009306000401451377B70FE316D7FE1307BA -:108BA000500498AB8280B9466319D7001429130783 -:108BB0000003E390E6FA0547E9B7D1466316D7000C -:108BC000142913070005F5B7D9466314D7021429F1 -:108BD00013075005E39FE6F60327050A13670720EE -:108BE0002320E50A054718A9983B136707F898BBA7 -:108BF00051BFE946631AD700142913075006E39AB8 -:108C0000E6F41307A006B5BFFD46631AD700142982 -:108C10001307A007E39FE6F2130710F89DB793062A -:108C20003002E318D7F2142913075008E393E6F251 -:108C3000054718A90347950213671700A304E50227 -:108C400065B7B1475CB983270511CDC70947A309AB -:108C5000E5048356C5057A3D8355E50563E7E600DF -:108C600013865500998E6343D602B726002083D61B -:108C7000C6780D4811466365D800850613F6F60FD1 -:108C80002E972107A309C504231EE50423810700AD -:108C900003473505B8B303474505035665058356B5 -:108CA0008505D8A303475505F0A394A7D8B3135758 -:108CB0008600F8B313D7860098B70357A5059355D8 -:108CC0008700B8A7ACB78345C505CCA78345D505B4 -:108CD000CCB70E3D81476399C500323D6316D6007F -:108CE0005E3D998F93B717002310F506C1471CA965 -:108CF000014582800545828083270511094758B9BF -:108D000099CFB8A303472505B8B38347950293E7E6 -:108D10008700A304F502F1471CA9014582801D4587 -:108D2000828085475CB98327051181CB1547B8A39D -:108D30009307B0021CA901458280054582808547C2 -:108D40005CB98327051181CB1947B8A39307D002DB -:108D50001CA9014582800545828089475CB983272B -:108D6000051191CB1D47B8A3832705110347C50201 -:108D70000145B8B382800545828085475CB9832769 -:108D8000051191CF2947B8A38347950293E7470080 -:108D9000A304F502930750031CA9014582800545F1 -:108DA000828085475CB98327051181CB2D47B8A305 -:108DB000930770031CA90145828005458280032723 -:108DC000051199475CB9B1473CA3B72700209387A9 -:108DD000876ED62B34B3F42B54A3F62BA18254B355 -:108DE000942F74A39C3F7CB38347D50213F70704E9 -:108DF00001CF9307A0031CA98347D50293F7F70778 -:108E0000A306F50201458280858BFDD78327050ADD -:108E100023050502A306050293E707042320F50AAC -:108E2000E1BF89475CB98327051191CB3547B8A3CA -:108E3000832705110347A5020145B8B38280054584 -:108E400082808D475CB98327051199CB4547B8A32C -:108E50000347B502B8B30347A5020145D8A38280F2 -:108E60000545828085475CB98327051191CF494725 -:108E7000B8A39307A0041CA98347950293E7470072 -:108E8000A304F502014582800545828085475CB9CF -:108E90008327051189C74D47B8A301458280054541 -:108EA0008280032705118D475CB9D9473CA38346CF -:108EB000451434B383475514918A5CA30357651C4A -:108EC000A9C69306F034814763FDE600930787E85F -:108ED000035785140DCB8587938757FD8D87C20770 -:108EE000C1830357451C63F3E7003E878347950220 -:108EF0002306E50493E74700A304F5029307500512 -:108F00001CA9014582808D87C1BF858B99C79307B6 -:108F100007FB2147B3C7E702D9B79307C7FB114740 -:108F2000D5BF032705118D475CB9DD473CA38347B7 -:108F300045143CB38346551454A30347B514F98F25 -:108F400093F647000357651CA9C69306F034814782 -:108F500063FDE600930787E8035785140DCB8587EB -:108F6000938757FD8D87C207C1830357451C63F361 -:108F7000E7003E87930780051CA9834795022306D7 -:108F8000E50493E74700A304F502014582808D873D -:108F9000C1BF858B99C7930707FB2147B3C7E7027A -:108FA000D9B79307C7FB1147D5BF95475CB97E3D3D -:108FB00003270511E146A107C207C1832316F51453 -:108FC00034A38346A51434B30346B514A3020700A3 -:108FD0002303070050A38325851441766D8E01C6B7 -:108FE0005CB3A1837CA393F746000357651C9DCF18 -:108FF0009306F034814763FDE600930787E8035743 -:1090000085141DC38587938757FD8D87C207C1834C -:109010000357451C63F3E7003E879307900523063B -:10902000E5041CA9014582808D87F1BF858A99C618 -:10903000930707FB2147B3C7E702C9BF9307C7FBE5 -:109040001147D5BF832605118D475CB9E547BCA202 -:1090500083477514034665140547B317F7003317A4 -:10906000C700D98FBCB283471514DCA28347950291 -:1090700093E74700A304F502930700061CA90145E6 -:10908000828089475CB9832705117547B8A33727C4 -:1090900000200347B76EB8B3930750071CA90145DA -:1090A000828089475CB9832705117947B8A30347B4 -:1090B000E502B8B38327050A2167D98F2320F50A73 -:1090C00085471CA901458280B727002003A7877325 -:1090D000930780055423B387F6021457032705111D -:1090E000BE96A5475CB9930700023CA30356651CD6 -:1090F0008357251CB297D05A9387C71263F3C700D2 -:10910000B2873CB313D68700C18350A35CB39C5E87 -:109110007CA313D68700C18370B31CA7DC2E1CB7B9 -:10912000DC3E3CA79307C0071CA90145828083272A -:10913000051111461307300250B9B8A3034785152E -:10914000118B0DCB0347A515238207009306F7FF6C -:1091500005473317D700B8B303473514D8B383474F -:10916000950293E74700A304F502930750F81CA962 -:1091700001458280834675140947639FE6003737AF -:1091800000200347778201C72147B8B311A0B0B3CD -:1091900003475516D8A3C9B705473317D700F5B706 -:1091A00095475CB98327051113074002B8A3A38133 -:1091B0000700030735148306F5156394E600894616 -:1091C000B4B38306E5156396E600B43393E6160060 -:1091D000B4B38306D515D4A30346C515D8B3F0A3FD -:1091E00083478515858B81CB99C68327050A4167FF -:1091F000D98F2320F50A0145828091475CB98327E6 -:10920000051113078002B8A33727002003474773CF -:10921000B8B32947D8A313072003D8B3930750F94D -:109220001CA901458280411126C28324051106C66E -:1092300022C4A1475CB9B9C07E3D0357E5052A8425 -:1092400093058512BA97A9072317F5128547BCA085 -:109250001385340015469770FA1FE780C00F8347C7 -:10926000E41201459CA48357E412A1839CB4D54722 -:109270001CA8B24022449244410182800545D5BFDA -:10928000411126C28324051106C622C4B5475CB924 -:109290009DCC91472A84BCA09305351A214613859D -:1092A00034009770FA1FE780000B1385B400114655 -:1092B0009305B41A9770FA1FE780E009930720021C -:1092C0001CA80145B24022449244410182800545D8 -:1092D000D5BFA5475CB9832705119DCF411122C495 -:1092E00006C62147B8A32A84032505119305840FD8 -:1092F00021460D059770FA1FE780E0058347940229 -:10930000014593E74700A304F402930700031CA858 -:10931000B2402244410182800545828083270511A5 -:10932000A9C3411122C406C6254758B9B8A32A8447 -:10933000032505119305840F21460D059770FA1F2B -:10934000E78060018327040A23050402014593E7AF -:1093500007022320F40A85471CA8B2402244410199 -:10936000828005458280A5475CB9832705119DCF82 -:10937000411122C406C63947B8A32A840325051122 -:109380009305840F21460D059770FA1FE780A0FC16 -:1093900083479402014593E74700A304F40293072F -:1093A00000031CA8B240224441018280054582800E -:1093B000E1475CB983270511C9C3411122C406C620 -:1093C0003D47B8A3034725072A8493056506B8B32C -:1093D0000357250731462183D8A303474507D8B350 -:1093E00003475507F8A303478505F8B303479505D9 -:1093F00098A70347A50598B70357A5052183B8A7E4 -:1094000003572506B8B703474506D8A703475506AF -:109410001385E700D8B79770FA1FE780C0F383473A -:109420009402014593E74700A304F4029307000464 -:109430001CA8B24022444101828005458280E14758 -:109440005CB983270511BDCB411122C406C6414733 -:10945000B8A3034725072A8493056506B8B30357C5 -:10946000250731462183D8A303474507D8B30347CF -:109470005507F8A303478505F8B30347950598A753 -:109480000347A50598B70357A5052183B8A7035738 -:109490002506B8B703474506D8A7034755061385E1 -:1094A000E700D8B79770FA1FE780E0EA9307400417 -:1094B0001CA8B240224401454101828005458280BA -:1094C000411106C6AD475CB9832705111307900209 -:1094D0009305D517B8A31385370029469770FA1F4F -:1094E000E78060E7B2400145410182808325451154 -:1094F000411126C206C622C4DC21B8310568A20784 -:10950000D98F1387A7FF420741839306A8C7F94461 -:1095100063E9E60AF821D431130808C82207558FF9 -:10952000F9446360E80A636EF7089025F431220677 -:10953000558E9306301F63E6C608B42583C8950090 -:10954000A206B3E61601636ED806130816003308A8 -:10955000F802939836006356180783C8B50013982D -:1095600008011358080163840800636C07058358D9 -:1095700085038144639C1701631AF7008358A50390 -:109580006396C800463D958C93B41400231CC50413 -:109590002319F506231AE506231DD5042311050713 -:1095A000DC35D8252A84A207D98F2312F506314647 -:1095B000B905130565069770FA1FE780C0D9914772 -:1095C0005CBCB2402244268592444101828079717C -:1095D00026D28324051106D622D44AD04ECEDD47AA -:1095E0005CB9638F040E8D47BCA02A84EF90EE9582 -:1095F000130944192AC4EF904E9521462C002AC61F -:109600004A859770FA1FE78000D58347641903479E -:1096100054199309C419A2074207BA97034774194A -:10962000BA97034744196207BA972324F40C0347F7 -:1096300094198347A4194207A207BA970347B4199C -:10964000BA97034784196207BA972322F40CEF9064 -:10965000CE8F2AC411462C004E859770FA1FE780E2 -:1096600080CF8347D4190347E4192146A207420754 -:10967000BA970347C4199305A41813853400BA9701 -:109680000347F4196207BA97232EF40C9770FA1F58 -:10969000E78060CC835724192146CA85BCB4A183D6 -:1096A000DCA41385D4009770FA1FE780C0CA138525 -:1096B00054011146CE859770FA1FE780C0C98347D1 -:1096C0009402014593E74700A304F40293070002C4 -:1096D0001CA8B250225492540259F249456182802A -:1096E0000545C5BF411122C406C685475CB92A8419 -:1096F0008345351503270511034545158546931701 -:109700006500CD8F3CA3ED473CB35C240346241594 -:1097100093E707025CA4EF60401A930770061CA849 -:10972000B240224401454101828083274511130341 -:10973000000ED023B8332206598E130756FE420777 -:1097400041836363E306F423D8331168A206D98EFC -:10975000138786EB42074183130888146366E80485 -:10976000982783C87700220733671701930857FEAD -:10977000C20893D808016369130383C89700BC2704 -:10978000A207B3E71701938887EBC20893D80801B3 -:10979000636C1801231CC51A231DD51A231EE51A54 -:1097A000231FF51A6FB04FC3054582803435054736 -:1097B000AA8705456391E60AF42B31470545639C6A -:1097C000E60803A747113433A389D7045433502341 -:1097D000A206D18E239AD7046C337423A205D58DAB -:1097E000239BB704103714272206558E239CC704E9 -:1097F00034372827A206C98E239DD7044827583717 -:109800002207498F8A3F239EE70401476319B50069 -:10981000AE3F6396C500DA3F158F133717002390CC -:10982000E706982B930600046300D70293064004D2 -:109830006314D700054798AB983B9546D4BF136790 -:1098400017F898BB0145828003C79702136717007A -:10985000A384E702C5B7828078298947631BF70094 -:1098600083274511BC332309F504F5471CA901459D -:1098700082801D4582803C352A87B5EB7429B54727 -:1098800005456397F606142B930700026392F606CC -:10989000832747110145D433D023A2064206B2964E -:1098A000F023B296B0336206B2962320D70C9437D9 -:1098B0009027A2064206B296B027B296F03362060F -:1098C000B296232ED70AD427D037A2064206B296E4 -:1098D000B037FC27B296E207B6972320F70E1C3B61 -:1098E00093E787001CBB930730021CAB82800545C1 -:1098F00082803C3585E378298547631BF70014296E -:10990000130730026396E6009307C0021CA9814743 -:109910003E8582808547EDBF74290547AA870545A6 -:109920006399E602982B9306B0026319D7001307D8 -:10993000E00298AB23850702014582809306D0029E -:1099400005456318D7001307E0022385070298AB8B -:10995000E5B78280782989476319F704E947230529 -:10996000F502832745113947BC336390E702182974 -:1099700093070003631BF7028327050A93E7070297 -:109980002320F50A85471CA999A03D476391E7026A -:10999000832785101829F59B2324F51093070004CD -:1099A0006315F700930760041CA9014582804947AD -:1099B0006394E70218299307A004E318F7FE85478C -:1099C0001CA98347950293E71700A304F5021C39ED -:1099D00093E707F81CB9D1BF51476390E7021829F4 -:1099E00093070005E313F7FC85471CA98327050AA5 -:1099F00093E707102320F50AD9BF5947639CE70076 -:109A0000182993075005E312F7FA8327050A93E70D -:109A10000720BDB76947639EE700182993075006E2 -:109A2000E315F7F88327050A056713070780D98F21 -:109A300081BF7147E38BE7F67547639BE700182901 -:109A400093075007E313F7F68327050A2167C5B785 -:109A500013073002E39BE7F4182993075008B1BFBE -:109A600038358547631EF70078296319F7001829F0 -:109A70006316F700930760031CA981473E85828027 -:109A80008547EDBF74290547AA8705456390E6061B -:109A9000982B930670036314D70203C7970223859C -:109AA00007049376070499C61377F7FB136707013A -:109AB000A384E7021307800398AB014582809306D5 -:109AC000500305456314D7021307800398AB03C7FF -:109AD00097022385070401459376070481CA13770B -:109AE000F7FB13670701A384E7028280828078294D -:109AF00099476315F708032745113C33A306F5047E -:109B00005C335423A207D58F2317F5047C337423C9 -:109B10001307A003A207D58F14292318F504834740 -:109B2000D5026392E604858B99CB8327050A23052A -:109B30000502A306050293E707042320F50A8347DD -:109B4000950293E71700A304F50285471CA91C3969 -:109B500093E707F81CB98347D50293F7F7FBA306F1 -:109B6000F50201458280E207E187E3D207FE832701 -:109B7000450A93E707042322F50AD1BF05458280F1 -:109B8000782989476304F7000545828083274511BA -:109B900013070004BC332305F5021C2993F6B70F05 -:109BA0006396E600930750041CA90DA01307500507 -:109BB0006390E7028327050A93E707202320F50A2D -:109BC00085471CA91C3993E707F81CB90145828019 -:109BD000130750066395E7009307A006F1B7130734 -:109BE0005008639BE70085471CA98347950293E7CC -:109BF0001700A304F502F9B7383559F71307000227 -:109C00006386E700130730026395E700930760025D -:109C100061BF1307A007E399E7F6930710F869B748 -:109C200074290547AA8705456391E60403A78710B1 -:109C30000545418B1DCB982B6317A7001307B00474 -:109C400098AB014582801306A0046319C70003C7BF -:109C5000970294AB13671700A384E70203A7870A50 -:109C60001367070423A4E70AE9BF82807429054724 -:109C7000AA8705456391E602942B1307A0040545C6 -:109C8000639BE60003C7970288AB01451367170083 -:109C9000A384E7028280828078298D476315F718B4 -:109CA0001C398D8B89EB14292147938706FC93F788 -:109CB000F70F636EF70085679387A7623EB583272A -:109CC000850A93E727002324F50A014582803C3565 -:109CD00003264511639D0712930750056396F6000E -:109CE000856793873762D9BFB72700209387876E30 -:109CF0004C2203C7A70383C7B703834865146D8F3E -:109D00002305E5143032F18F0546A305F51433160B -:109D100016016314C700230505140348751485450F -:109D2000B39505016394B700A30505140347A51473 -:109D30008347B51455CFD1CB93752700A9C113F62E -:109D4000270015CE930720202315F5140347A514EB -:109D50008547B39717016314F700230505140347DC -:109D6000B5148547B39707016314F700A3050514DD -:109D700085476397F608930760051CA9B9B7137662 -:109D8000470001CA13F347006305030093074040EF -:109D900065BF058B19C713F7170001C7930710108C -:109DA00065B7094781E5114711E205472305E51429 -:109DB00013F7270009C78947A305F51441BF918B05 -:109DC00099C39147D5BF8547C5BFB3570741858B19 -:109DD00081C72305B5149DBF9377270089C789479D -:109DE0002305F514A5B7118B91477DFB8547CDBFA2 -:109DF000B1DF33D71741058B45DFA305C514B9B7CC -:109E00008327450A0967D98F2322F50A7DBD854737 -:109E10006396F6005C22A305F514B1BF8327850A7B -:109E200093E707104DB50545828074290D47AA8731 -:109E30000545639EE612942B13075005054563986C -:109E4000E612B8376315071283C6471403C75714C1 -:109E500003A6471133F5E6004C2209ED6395B600E1 -:109E600028326309E500239507141307700598ABA2 -:109E700001458280ED8E2385D714303203C86714E4 -:109E8000718F0546A385E714331606016394C60057 -:109E90002385071403C577148545B395A50063147E -:109EA000B700A385071483C6A71403C7B714C5CA90 -:109EB00041C793F526009DC91376270005CA1307ED -:109EC00020202395E71483C6A714054733170701FD -:109ED0006394E6002385071483C6B7140547331738 -:109EE000A700E394E6F8A385071441B713F64600EC -:109EF00001CA937847006385080013074040D1B733 -:109F0000858A99C69376170081C61307101055BF2E -:109F1000894681E5914611E285462385D7149376DB -:109F2000270089C60947A385E71471BF118B19C3A0 -:109F30001147D5BF0547C5BF33D7A640058B01C71D -:109F40002385B71449B713F7260009C709472385A6 -:109F5000E71495BF918A1147FDFA0547CDBF25D774 -:109F6000B3560741858AC5DEA385C714A9BF828081 -:109F700034350547AA8705456398E606F42B15474F -:109F800005456393E606982B930650056306D700B4 -:109F900093068005631AD70403C7970283A5471168 -:109FA00013671700A384E702D0211147636DC70030 -:109FB000B431636AD7001307F6FF1385F6FF718F7C -:109FC000758D498F09C7054798AB01458280F821F7 -:109FD000C8312385C7142207498F2396E714A38528 -:109FE000D7141307A005CDB782803C3599EF7429AB -:109FF0000D4785476399E60018296316F700930714 -:10A0000010061CA981473E8582808547EDBF7829CF -:10A010008947631FF70483274511B72600209386DD -:10A02000866EBC3383C5A60413F6F70113D7670009 -:10A0300083C7960463EAC7008346E514A18A89C6EC -:10A04000B3D6E540858A9DE6E947A305F502854735 -:10A05000B397E700ED8F8D8B794799C31307000203 -:10A060008327850A2305E50293E727002324F50AC1 -:10A0700005458280230AE5141829A309C5148547DC -:10A080006317F700930760061CA9014582808327A8 -:10A09000850A93E707202324F50AC5BF7829894755 -:10A0A0006317F702832745111829BC33A307F5026C -:10A0B00085476317F700930760071CA90145828055 -:10A0C0008327850A93E707402324F50AC5BF054582 -:10A0D000828074290947AA870545639AE602942B72 -:10A0E0001307500701456394E60203A74711A166D1 -:10A0F0003833A387E70203A7070A558F23A0E70A8F -:10A10000054798AB983B136707F898BB828082801D -:10A1100074291547AA8705456391E60C942B13070C -:10A1200050080545639BE60A03A747113433A38D06 -:10A13000D71483064700A382D7160306570023804F -:10A14000C71678232382E71603C787159375470040 -:10A15000ADC98946A38CD71483A6070AC1656D9B38 -:10A16000CD8E23A0D70A238CE71403C7A7169376B6 -:10A17000170085C29306F0076306D6001367270011 -:10A180002385E71603A7070AB7060200558F23A009 -:10A19000E70A372700200347B76E01452387E70208 -:10A1A00003C72703A380E716054798AB03C79702A9 -:10A1B00013671700A384E702983B136707F898BB5F -:10A1C0008280098B5DD3D5D203A7070AC166A38C11 -:10A1D000A714558F23A0E70A49BF82807429154729 -:10A1E000AA870545639DE60883A647110145B0325D -:10A1F0001377060F49E73727002003475772718FFF -:10A200003DCFF82211482380E71683855600014789 -:10A21000A382B716130517003357E640058B9378D2 -:10A22000F50F0DCF238D1715D822A38DE71403C783 -:10A230008715937647009DC68946A38CD71483A6BD -:10A24000070A41666D9BD18E23A0D70A238CE714A1 -:10A2500003C727030145A380E71682802A87E31BF3 -:10A2600005FBD9B7098B6DD7E5D50547A38CE71456 -:10A2700003A7070AC166558F23A0E70AD1BF8280D2 -:10A2800074291147AA870545639BE608AC37054545 -:10A290006397A50883A6471103C8360063640503C6 -:10A2A000D822130510091306B7FF1376F60F636B58 -:10A2B000C500D0329306B6FF93F6F60F6364D5005F -:10A2C000637EE6000D671307E781BAB703A7870A25 -:10A2D00001451367270023A4E70A828083A6C710DD -:10A2E000014593F6060885CE83C647176315B80265 -:10A2F00093E61600238AD7169306000AA38AE71668 -:10A300003307D702963F3347D702F63F8506369785 -:10A31000239BE7168280D99A238AD716828082806F -:10A3200083270511D5C7254758B95147B8A3034717 -:10A33000051B8355251B0356651BB8B30347151B27 -:10A34000CCB3D8A313D78500F8A30347451BF8B3B4 -:10A350000347551B90B798A713578600B8A78346A5 -:10A36000751409476384E602032705109316470115 -:10A3700063CE06008566938686842E8763F3B600D7 -:10A38000368742074183D8B32183F8A383466514F7 -:10A3900009476384E602032705109316470163CE3D -:10A3A0000600856693868684328763F3C600368707 -:10A3B0004207418398B72183B8A78347950293E763 -:10A3C0004700A304F502930700051CA901458280FC -:10A3D0000545828083270511D1CF254758B95547B8 -:10A3E000B8A30347051B8355251B0356651BB8B34C -:10A3F0000347151BCCB3D8A313D78500F8A3034795 -:10A40000451BF8B30347551B90B798A71357860011 -:10A41000B8A7834675140947638EE6008566938660 -:10A4200086842E8763F3B600368742074183D8B30C -:10A430002183F8A3834665140947638EE600856689 -:10A4400093868684328763F3C6003687420741834A -:10A4500098B72183B8A78347A5072305050299C7A5 -:10A460008327050A93E707102320F50A85471CA9CF -:10A4700001458280054582807829AD476318F7023F -:10A48000411106C68347451783254511294693E7A1 -:10A490000701230AF5168D051305D5179760FA1FD6 -:10A4A000E78060EBB2400145410182800545828032 -:10A4B0003C35E9EB411122C406C67829E1472A84DC -:10A4C0000545631DF70A1828930700046318F70A67 -:10A4D0008325441105659306A5C7D821BC31220701 -:10A4E0005D8F9307A7FFC207C18363E5F608FC21D0 -:10A4F000D431130505C8A207D58F636DF50663EB4C -:10A50000E7069025F4312206558E9306301F63E34B -:10A51000C606B42503C89500A206B3E60601636B20 -:10A52000D504130516003305E5021398360063437E -:10A53000A80403C8B500131508014181630408008D -:10A5400063EAA702231CC4042311A4062319E4060A -:10A55000231AF406231DD404DC35D8253146A2077E -:10A56000D98F2312F406B905130564069760FA1F04 -:10A57000E78060DE930770041CA80145B2402244C6 -:10A580004101828005458280411126C206C622C44F -:10A590007829E14785446314F704832785102A84CA -:10A5A0008544898B8DCF3C35639C9704EFE01FF485 -:10A5B0001C282305A40263969700930710041CA887 -:10A5C00031A8130700046392E702930710041CA844 -:10A5D0008347940293E71700A304F4028144B24036 -:10A5E000224426859244410182808327040A93E70E -:10A5F00027002320F40A1C3893E707F81CB8F9BF9A -:10A600001C398D8B81CF85679387A7F23EB4832752 -:10A61000840A93E727002324F40AC9B71C29639707 -:10A620009700EFE0BFEC2305A40241BF130700022F -:10A630006390E702EFE09FEB2305A402814445F11C -:10A640008327440A37070080D98F2322F40A41BFA9 -:10A6500013070004E395E7F88567938737F27DB722 -:10A66000411126C206C622C43C358544ADE3782993 -:10A67000A5478544631DF7048327850FA18BA1CBD4 -:10A68000832545112A8421468D0513050510976001 -:10A69000FA1FE78040CC83270410B73678089386EA -:10A6A000060DDD8E8327441013E707018327840FEF -:10A6B000F58F2324F4108327C40FF98F2326F41079 -:10A6C0001C28639C9700930710031CA88144B24088 -:10A6D000224426859244410182808327840A93E79D -:10A6E00007012324F40ADDB7411126C206C622C49D -:10A6F0007829A54785446316F706182993070003B0 -:10A7000085446310F706832545112A8421468D056B -:10A71000130505109760FA1FE780E0C38327041034 -:10A72000B73678089386060DDD8E8327441004A87B -:10A730002305040213E707018327840F8144F58F63 -:10A740002324F4108327C40FF98F2326F4108327C2 -:10A75000040A93E707022320F40A1C3893E707F85A -:10A760001CB8B2402244268592444101828038358B -:10A770008547631CF706411122C406C67829A54700 -:10A780002A8405456318F7041C286399A7048325C8 -:10A7900044112146130504108D059760FA1FE780C8 -:10A7A00080BB83270410B73678089386060DDD8EAC -:10A7B0008327441013E707018327840FF58F232491 -:10A7C000F4108327C40FF98F2326F4109307100386 -:10A7D0001CA80145B2402244410182808327840A9B -:10A7E00093E707012324F40AEDB705458280383545 -:10A7F00085476317F704411122C406C626C278298B -:10A80000A1472A8405456318F702832444111305E0 -:10A8100084121546938534009760FA1FE780A0B331 -:10A820009C3498240145A207D98F2317F4121C38B1 -:10A8300093E727F81CB8B240224492444101828039 -:10A840000545828038358547631DF71274295D47B9 -:10A85000639AE612011126CA8324451122CC2146AF -:10A860002A84938534001305A51806CE9760FA1F35 -:10A87000E78060AEDC24B834A207D98F2319F4181E -:10A88000EF70BEEC2AC4EF705EEC2AC62C001305F4 -:10A89000341A21469760FA1FE780E0ABFC34F824B5 -:10A8A0001305B41AA2074207BA9798282C0011463C -:10A8B000BA97D8346207BA972324F40CBC38B82866 -:10A8C000A2074207BA97D828BA9798386207BA976A -:10A8D0002322F40C0347441A8347541A4207A20761 -:10A8E000BA970347641ABA970347341A6207BA97AC -:10A8F0002320F40C0347841A8347941A4207A207C3 -:10A90000BA970347A41ABA970347741A6207BA970B -:10A91000232EF40AA247374703001307D73FB38714 -:10A92000E70237A72600130737ECBA973EC49760B3 -:10A93000FA1FE78040A2FC28F838A2074207BA971E -:10A94000D838BA97982C6207BA97232EF40C03478D -:10A95000D41A8347C41A4207A207BA970347B41A06 -:10A96000BA970347E41A6207BA972320F40E9307B5 -:10A9700010021CA8F24062448147D2443E85056122 -:10A98000828085473E858280782991476317F71238 -:10A99000411126C28324451106C622C4B83001CB1A -:10A9A0009307F7FFF98F81E79377070F8DC38967C7 -:10A9B000938707323EB58327850A93E72700232430 -:10A9C000F50AB24022449244014541018280CC30D4 -:10A9D0009306E007814711466399D50089679387FD -:10A9E000E731C9BFB687638CC60093861700B3579B -:10A9F000F740858B93F5F60FF5D7230DB5148387B4 -:10AA000044002A84ADC7A30EF5140305351433871B -:10AA1000A7001375F50F635AF0008307F41563DA86 -:10AA2000E700898FA30EF41429A08307E415E34AF5 -:10AA3000F7FE8347D4153E9562056185EF40D0301F -:10AA40002301A414EF40102A83473414A301A41453 -:10AA5000B307F540A30EF414EF40102F8347A4155D -:10AA6000034734142301A414A297A382E716830793 -:10AA7000240383062416014763D5F600958F13F748 -:10AA8000F70F230EE414DC3005472300F4161C28CE -:10AA90006396E700930760F81CA825B713075008D2 -:10AAA0006396E700FD57230EF414EDB78327840A5D -:10AAB0000567D98F2324F40A29B7054582807829B0 -:10AAC000A547631AF704411122C406C614291307C7 -:10AAD00000052A8485476394E602EFE01FC50DE573 -:10AAE0008327040A2305040293E707102320F40AAE -:10AAF0001C3893E707F81CB885471CA88147B2406B -:10AB000022443E85410182808347940293E71700E7 -:10AB1000A304F402F1BF85473E8582807829A547CA -:10AB20006309F700054582800545B2402244410192 -:10AB3000828083278510411122C406C693F707023D -:10AB40002A84FDD3EFE07FBE8547E30FF5FC18288C -:10AB50006317F700930710051CA80145F9B7832771 -:10AB6000840A93E707082324F40AC5BF05458280B9 -:10AB700005458280054582800545828005458280A5 -:10AB80000545828005458280054582805C25A30AB3 -:10AB90000500F19B93E717005CA50325051113350C -:10ABA0001500828001458280411106C6EFB01F90DA -:10ABB000B240133515000605410182806FF0DFFEBB -:10ABC000411106C6EFB09F8E05C10357A5058356F8 -:10ABD000850503564507835525070A25EFA0900CE8 -:10ABE0000145B240410182800945E5BF011106CE11 -:10ABF00022CCEFB0BF8B25CD3035B72700200547DD -:10AC00002A849387876E6312E604B853094515CBEF -:10AC10000346F402834657048358C4030358A4032D -:10AC20001E3C0E240345A4021307670432C00546E8 -:10AC3000EFA070057C3423050402014593E717005B -:10AC40007CB4F24062440561828003A7870809450D -:10AC50006DDB834657078358C4030358A4031E3C87 -:10AC60000E240345A4021307670702C0D1B70945A4 -:10AC7000C9BF011122CC06CE2A84EFB03F833DC16B -:10AC80008347A5020347A5156083DC82834795159A -:10AC9000D8845C8495EF8347D5150307F5155C864A -:10ACA000830735145C85631CF7008947DC85480001 -:10ACB000EFA070050145F240624405618280030700 -:10ACC000E5156314F7008547D5B7A3050100C5B79F -:10ACD000834705165C858347B515DC858347551684 -:10ACE0005C86F1B70945C1BF011122CC06CE2A848A -:10ACF000EFB0CFFB21C983070516C08421804085B2 -:10AD00001307F007638DE70203472503998FDC855E -:10AD10008347A51613F7070101C72306010031A0D9 -:10AD200093F7070299CB85475C862800EFA0807DCA -:10AD30000145F2406244056182808947F5B7FD57BD -:10AD4000DC85E1BF0945F5B7411106C6EFB00FF646 -:10AD500011C9834505140A25EFA0807A0145B24048 -:10AD6000410182800945E5BF9375F50F01112E85DC -:10AD700006CE22CC2EC6EF90CF9D05C12A848346F5 -:10AD8000E506B24568390546EFA000770145A30BFB -:10AD90000400F2406244056182800945DDBF411133 -:10ADA00006C6EFA02075B2400145410182804111E5 -:10ADB000B727002022C403A4077606C6094511C898 -:10ADC0000355240BEFA0C0729307F00F2319F40A68 -:10ADD0000145B240224441018280B727002083A769 -:10ADE000077699CB41111385070B06C6EFA0C06FFC -:10ADF000B24001454101828009458280411106C669 -:10AE000022C4EFB0AFEA05C9834675140346651442 -:10AE10002A840E250345A5028506050693F6F60F3E -:10AE20001376F60FEFA0206A014523050402B24015 -:10AE30002244410182800945DDBF397106DE22DCF2 -:10AE400026DA4AD8EFB08FE6630D05143435B727FC -:10AE5000002005472A849387876E6398E60AA453E7 -:10AE60000945B5CC83C744031946898BBDCF93856B -:10AE7000640328089750FA1FE780E04D83C7540405 -:10AE8000138964041946898BA5CBCA85081097508D -:10AE9000FA1FE780404C8C581946910528109750AE -:10AEA000FA1FE780404B8347F4028358840383C62C -:10AEB000540430340E240345A4023EC45E3C1308FF -:10AEC000010238103EC23E3C3EC03C08EFA0005E8E -:10AED0007C3423050402014593E717007CB4F2504B -:10AEE0006254D2544259216182808145280897508A -:10AEF000FA1FE780804959B7814508109750FA1F1B -:10AF0000E780A0481946CA8551BF83A48708094530 -:10AF1000F9D483C744061946898BB9CF9385640653 -:10AF200028089750FA1FE780004383C74407138916 -:10AF300064071946898BA1CBCA8508109750FA1F60 -:10AF4000E780604183A54408194628109105975071 -:10AF5000FA1FE780404083A74408BC3393E72700EB -:10AF6000A38AF4068358840383C6540730340E241E -:10AF70000345A40202C499B7814528089750FA1FD7 -:10AF8000E780A0405DB7081081459750FA1FE78021 -:10AF9000C03F1946CA8528109750FA1FE780A03B8A -:10AFA000D1B709452DBF411106C6EFB02FD005C15D -:10AFB0000357251C8356051C0356651C8355451CE9 -:10AFC0000A25EFA0604E0145B2404101828009454B -:10AFD000E5BF411106C622C4EFB04FCD15C52A8486 -:10AFE0000357A50583568505035645078355250751 -:10AFF0000A25EFA0E04A1C38014593E747001CB83A -:10B00000B2402244410182800945DDBF411106C69C -:10B01000EFB0CFC901CD035625199305A5180A2510 -:10B02000EFA0C0470145B240410182800945E5BF1C -:10B03000411106C622C4EFB06FC705C12A841306AA -:10B0400005100E250345A502EFA000450145230587 -:10B050000402B2402244410182800945DDBF411112 -:10B0600006C622C4EFB08FC405C52A840357A505C0 -:10B0700083568505035665050E250345A502EFA0F9 -:10B080006041014523050402B2402244410182800F -:10B090000945DDBF01111375F50F06CEEF807FEB7B -:10B0A00029C9B727002083A7877B93F707209DC373 -:10B0B00002C402C202C0814801488147014781465B -:10B0C000054681451305C003EFA0403E0145F2400F -:10B0D000056182808346D5031307E50302C08148DA -:10B0E00001488147054681451305C003EFA0A039FB -:10B0F000F1BF0945E9BFB72700209387876E03A7F3 -:10B100008708094529CB83A7070D011106CE93F7C0 -:10B1100007208DC302C402C202C081480148814792 -:10B120000147814601468145EFA04038F240014584 -:10B1300005618280835807020358A70183570705DA -:10B1400083465707014602C0130767078145094533 -:10B15000EFA06033E1BF828001458280014582809B -:10B1600001458280014582800145828001458280BF -:10B1700001458280014582800145828001458280AF -:10B18000014582800145828001458280014582809F -:10B190000145828001458280411106C622C426C233 -:10B1A0001C21130700086394E7021C3113075002A7 -:10B1B00005446362F70613972700B7970600938745 -:10B1C000870EBA979C432A2182970144A9A01307AE -:10B1D000100805446391E7041C314D476382E70E74 -:10B1E0006362F7022147638BE70831476389E70A07 -:10B1F00015476392E7022A21EFB04FAB2A841DE97D -:10B20000094411A8130700036386E70E636BF70078 -:10B2100069476387E70C2285B2402244924441018A -:10B220008280130770056383E70E138417F03334AD -:10B230008000D5B7832785118DC7035625040506E1 -:10B24000420641829C4313071600420741838DE763 -:10B250002311C40419C60E240545EFA0A021231113 -:10B2600004040345A402034624050E24EFA0401F56 -:10B270002285EFB0CF9691BF3A86E9B72A21EFB089 -:10B28000EFA22A8435DD0346A5040E250345A50259 -:10B290003336C000EFA0001D230504023DB72A216C -:10B2A000EFB0CFA02A8429DD035705058356E504B6 -:10B2B0000346D5040E250345A502EFA0E01AE9BF19 -:10B2C0002A21EFB0AF9EAA8405DD03562504014470 -:10B2D00039D20E250545EFA0E0192391040425BFBE -:10B2E0002A21EFB0AF9CE30D05F00345A502EFA0C6 -:10B2F000A018E1BD2A21EFB06F9B2A84E30205F07C -:10B300000E250345A502EFA0601779B72A21EFA00B -:10B31000201765BD011122CC2A84114506CE2EC608 -:10B3200032C4EF702EA705C1B245224622A10CA15E -:10B3300010B16244B7270020F240AA8503C5F74E3A -:10B3400005616F704EA9F24062441145056182802B -:10B35000411106C622C4EFB06F9525C98327051297 -:10B36000230D05002A84A9CB7835058B11EB0A241F -:10B37000014693050008EFF0FFF931C1014591A0A6 -:10B38000D443D0278C270A258906EFA0800F15E12A -:10B3900083270412BA27A3840700136707F0BAA70C -:10B3A0009C432320F4128357040481C7FD17231004 -:10B3B000F40483270412C5FF23100404C1B7854792 -:10B3C0003CACB2402244410182800945DDBF797125 -:10B3D00022D406D6BC312E8423160100DC87DC2162 -:10B3E000100802C05C87DC318A8502C2DC8602C498 -:10B3F00002C802CA02CC02CEEF4020000347F1018E -:10B400001C200145631EF7000347E1011C30014584 -:10B410006318F7000345D1013C201D8D133515003D -:10B42000B250225445618280B727002083A7477A13 -:10B4300091E382806384A700DC5FDDBF411122C4F9 -:10B4400006C63C252A8491C79305C5006905EF60AF -:10B45000FFA53C2891CB930544011305A402224487 -:10B46000B24041016F609FA4B240224441018280FA -:10B47000AA862E86AA8537B50500130525486F7064 -:10B48000AEE2B72700201387876E0327C70B411151 -:10B4900026C206C622C49384876E11E7B2402244B6 -:10B4A0009244410182806304A700585FFDB73C25A8 -:10B4B0002A8491C79305C5006905EF603F9F3C282A -:10B4C00099C7930544011305A402EF603F9E2285AE -:10B4D0002244CC58B240924441016FF07FF90111EF -:10B4E0004AC8372900209307896E22CC03A4C70BD2 -:10B4F00026CA4EC652C456C206CEAA84014A1309B1 -:10B50000896E93094500854A65E09305402013053F -:10B5100000049750FA1FE780E0B22A841D4545CC0D -:10B52000BC30194693854400130544003CB0975045 -:10B53000FA1FE78040E2938AA4014146814556857F -:10B540009750FA1FE78000EE79E19309A401D685B0 -:10B5500041464E859750FA1FE78020EB85473CA473 -:10B560003C309305C4004E8593E727003CB4EF6060 -:10B57000FF939384A4024146814526859750FA1F84 -:10B58000E78040EA41E99307A402A6853E8541464B -:10B59000BE849750FA1FE78040E785473CA83C30BF -:10B5A00093054401268593E727003CB8EF601F9080 -:10B5B000A3000400832549032285EFF07FEB631E7F -:10B5C0000A04232E890A232E04028347890B01458E -:10B5D0008507230CF90AF2406244D2444249B24939 -:10B5E000224A924A056182803830BC306305F700F8 -:10B5F000228A405C11BF4146CE8513054400975016 -:10B60000FA1FE780E0DDE31555FF4945E9B723055B -:10B61000040085B72309040061BF232E8A0265B7A1 -:10B62000011126CAB72400209387846E22CC03A47C -:10B63000C70B4AC806CE4EC69384846E7D5901EC72 -:10B64000F240624423AE040A238C040A4249D244E5 -:10B65000B249056182800820EF70EED88329C403C7 -:10B660002300240122859750FA1FE780E0A84E842A -:10B67000F9B7B72700209387876E238C070A23AE7C -:10B68000070A6F60BF8B411122C406C62A84034596 -:10B69000D5079307F00F6307F500EF70CED4FD5781 -:10B6A000A30EF406FD57A300F408414693050008D5 -:10B6B0000145EFF03FC65C4CB240C59B5CCC2244D8 -:10B6C0004101828001114AC8372900209307896E01 -:10B6D00022CCA05F4EC606CE26CA8347D404930967 -:10B6E000896E858BB1CB83C7290049459DCFB7258E -:10B6F000002019469385657C1305E4049750FA1FD2 -:10B70000E78060C585473CB41CB83CB83C28094775 -:10B7100018A4D1CBEF609ED983A74905AA848DC711 -:10B720009307004063E0A7021D45F2406244D24403 -:10B730004249B24905618280B725002019469385A8 -:10B74000057C5DBF930405C083D7490A81CF3727A5 -:10B750000020130707541E2B7837B387E702E3F561 -:10B7600097FC9D8CEF60DEDD93D714006373F508C2 -:10B770001181420541812311A4045DD503552404A0 -:10B78000930550201205420541819750FA1FE7802A -:10B79000608B0356240468C02A871308F6FF81478C -:10B7A00063CDC70428C4B72700200347040293864B -:10B7B000C74EA8328D469384C74E631CD7047228A7 -:10B7C0003E383E969145EF706EB7A8309145EF70C8 -:10B7D0002E8E123C19CA37E5050093061403120693 -:10B7E000A285130545EEEF702EAC2304096E0145CA -:10B7F0002DBF95802311940451B763D90701930697 -:10B800000701B6850CC38507368759BFBA868145BF -:10B81000D5BF89476314F70032386DB772285DB71A -:10B820004111930560201305000C22C406C69750F1 -:10B83000FA1FE78020812A8425C181451306000C68 -:10B840009750FA1FE78060B4B727002023A08776BF -:10B85000B737002023050400230404009387C78121 -:10B86000D84B9C4F37E5050078D83CDCFD571EB817 -:10B87000B7B705009387476C3CD4B7E705009387BB -:10B88000C7BB7CD4B7E70500938747A73CD88D4555 -:10B89000130525C1EF70CEC12285B240224441017B -:10B8A0008280411122C406C626C28347C5052A8468 -:10B8B000A5C79305E50519461305E5049750FA1F3A -:10B8C000E78000B2AA8429E91C28898BA5E3B72761 -:10B8D000002083C7976E85CF8347D4058DCB8347E0 -:10B8E00034061307000493F7070C6392E70213056D -:10B8F000C4059760FA1FE78080E168D009C98947CD -:10B90000230EF4048347D40493E7270089A8034750 -:10B91000C40589476316F70083474405A1E78544BA -:10B92000B240224426859244410182808347D40557 -:10B93000E5DB834734061307000493F7070CE39114 -:10B94000E7FEB727002083C7976EF9D71305C40514 -:10B950009760FA1FE780A0DB68D0F9574DF1A30E7E -:10B96000F4045DBFB727002083C7976ECDDB834704 -:10B97000540513054405A9CB8347B40513070004F8 -:10B9800093F7070C6392E7049760FA1FE78040D4AF -:10B9900068D051D593046405A68519465105975082 -:10B9A000FA1FE780409B6C508D47230AF404BC319A -:10B9B0001946910593E72700A30AF40426859750BA -:10B9C000FA1FE7804099A1BF9760FA1FE78080CBFC -:10B9D00068D031D58947230AF4043C29A9D38D477F -:10B9E000230AF4040431B33490001DBF0347450516 -:10B9F0001DC31829AA870545058B05C3E84BAC4F25 -:10BA0000411106C69760FA1FE780A0DDB2403335CA -:10BA1000A00041018280054582808280797122D414 -:10BA200006D63C292A84BDC3035705048357250441 -:10BA3000637EF7049760FA1FE78040D1854763076C -:10BA4000F5000145B2502254456182805C341D47A7 -:10BA500028446394E700834784025CA1834754052C -:10BA60001946930564055CB18347940219057CA1CE -:10BA70003E341EA59750FA1FE780E08D83570404DB -:10BA800085072310F4043C449C433CC45C4C48347C -:10BA900013970701635B070C19476367A7027C24B0 -:10BAA00093065002E3EFF6F859E54D472304E4020C -:10BAB0007D57A304E402231F0402A30604020547E2 -:10BAC000631EE50823070402034EE4020143630BEF -:10BAD0000E000343E4003303C34193072300032311 -:10BAE00084073E93834E84028346C4021AC813958A -:10BAF0000E01850693FE4E0072C613066405418151 -:10BB000093F6F60F0347D4028347940203083402E6 -:10BB1000035FE403834554058308540163840E04E2 -:10BB20001303E4051AC40343D4051AC27AC0EF9084 -:10BB3000D019054501BF85466314D5005547BDB7EB -:10BB400089466314D500414795B791466314D500E3 -:10BB50006D47A9BFE31EE5F4494789BFE9172307ED -:10BB6000F4029DB702C402C2D1B785476316F5043B -:10BB700037270020032707761306640583455405FD -:10BB8000182B83075401098B15C38346D40599CE1E -:10BB900003473406130500041377070C6318A70046 -:10BBA0001307E4050545EF90D01161B701478146C1 -:10BBB0000545EF90F00DB5BF742493075002E3E202 -:10BBC000D7E889476307F50099476315F5000945EC -:10BBD00011A00D45E91693F6F60F2307D40201478D -:10BBE00099C2385C21078307540113066405834515 -:10BBF0005405C1B7411106C622C426C2AA84EF303B -:10BC0000705C930700FABCA4B727002003C5F74E69 -:10BC1000A14537240020EF601EF8F62813070064C2 -:10BC20008347846E3347D702850793F7F70F2304C2 -:10BC3000F46E63C6E700EF70CEC02304046EB2401A -:10BC40002244924441018280411122C406C6B14778 -:10BC50005CA57C590D472A8498A35C25785993F7F5 -:10BC6000F7031CB38347D50423060504898BA1C3BE -:10BC700083474505898BA1C76C5189ED6C50BC2960 -:10BC80009DCB68581946D10521059740FA1FE780DA -:10BC9000806C15A0BC25FDD389472306F50468599F -:10BCA0001946B10509059740FA1FE780C06A834726 -:10BCB0004405898BE1F78347C404898B91EB68586D -:10BCC00019469305E40409059740FA1FE780A06828 -:10BCD000034744058D47630BF700685819469305E1 -:10BCE000640521059740FA1FE780E0668347D40486 -:10BCF000858B91E70347C40489476317F700785899 -:10BD00001C2393E707041CA383475405858B91E705 -:10BD1000034744058D476317F70078581C2393E7C2 -:10BD200007F81CA358349D474C24631CF7000345B7 -:10BD30005402930760FA3CA42244B24041016F30A0 -:10BD4000F01403471402930720FA3CA489470945DD -:10BD5000E304F7FE0145CDB7411122C406C62A848B -:10BD6000EFF09FEE37260020130606545C2AB73604 -:10BD7000002003A5068193F7F703139797015C55FD -:10BD8000B7050082FD15ED8FD98F5CD537170040C0 -:10BD9000930770052300F704930780FA2300F70444 -:10BDA000502AA54763FAC7043E3393E707013EB321 -:10BDB000B737002083A7878378582285B8DB83A70D -:10BDC0000681B70680009843558F98C3D857719B5A -:10BDD000D8D7EFF0BFC49760FA1FE78000DAB73713 -:10BDE00000209387C7819833058B11CFA38007006C -:10BDF000B2402244410182803E33C207C183BD9BD1 -:10BE0000C207C1836DB723820700930700FA3CA4E1 -:10BE1000C5B7797122D4130655012A84285D81465D -:10BE2000814506D69760FA1FE78020D8631B05205E -:10BE3000032884079D461D45034708003D8B58B4E1 -:10BE4000834718007CA46318D71A034728000D45C0 -:10BE5000935667001377F703637FF7181545639CC4 -:10BE600006189388F7FFB388E84093F8F80F230784 -:10BE7000140383453800454593F63500639D061647 -:10BE800093F6450063990612130648007D179376D2 -:10BE9000F70F13F7850015CB1832034E9402514566 -:10BEA0001353470063196E140565130505F0220747 -:10BEB000698F08220353A402498F5145631DE31281 -:10BEC0001387E6FF09069376F70FC189BDCD1822C7 -:10BED0001377F7032302E4022C220967130707F004 -:10BEE000A205F98D1832D98DC205C18513970501B8 -:10BEF00041837AB0B1C58305060063D2050C930572 -:10BF0000C0123307B702834554020945639FA50A4F -:10BF1000B735002083C5758289078E07DDC19387F9 -:10BF2000770D8607B307F740938547ED130540511A -:10BF3000034784026373B50A136707042304E4020A -:10BF40001387D6FF0D069376F70F834738005945C0 -:10BF500013F707024DE393F7070481CB1C221387E5 -:10BF6000F6FF9376F70FA301F4026145C9E6034695 -:10BF7000E4027C24385C8346C402918F8907BA9717 -:10BF80003EC87E3C03458402830854013EC003083A -:10BF90003402834794020347D4028345540585063F -:10BFA00032C602C402C293F6F60F13066405EF9080 -:10BFB000C051014589A0130658007917C9BDF9453C -:10BFC00089B79387A7048E07B1BF05456395A50080 -:10BFD000AD078A0781BFA907FDB74E3CAE98B725CC -:10BFE000002083D5857263DC1501136707042304E1 -:10BFF000E40213050002B250225445618280B73535 -:10C0000000201367070203A585832304E402356734 -:10C01000231E14033D0758C50100010003A78583B3 -:10C020008965130500F80CC7B73500209385C581D5 -:10C03000938757EDC8A186077CD3BD67BD075CC752 -:10C0400001B705454DBF5D71B7270020A2C403A409 -:10C050000776A6C2CAC05ED6B564B73B00203D696C -:10C060004EDE52DC56DA5AD862D486C6B739002082 -:10C07000BD04096A138CCB813D09B73A0020373BD8 -:10C08000002083A78983F8537DFFC4C70100010006 -:10C0900003A78983930700F8B705330023244701DA -:10C0A0002302FC00930720597CD3232627018347D2 -:10C0B0008402238E0B80A3020C0093F7F7F923046C -:10C0C000F402A3000C0085471CC383A70A81944394 -:10C0D00093F6F6E794C3944393F6F6E793E60610D7 -:10C0E00094C383264B8890464D8E90C613069005C8 -:10C0F00030CBD856759BD8D6034744029376F707C2 -:10C100009843137707F8558F98C39760FA1FE78015 -:10C11000C0A6EF30300B83C7CB81858B99C72285B2 -:10C12000238E0B80EFF0FFCE31C5930700FA3CA4BD -:10C13000034584028346C402830854011375F5F94C -:10C14000136505042304A402030834028347940200 -:10C150000347D4028345540502C802C602C402C282 -:10C16000723C850693F6F60F32C013066405EF9015 -:10C17000C03509A8834784021307000293F7070616 -:10C18000638EE700B640264496440649F259625A47 -:10C19000D25A425BB25B225C616182803824930791 -:10C1A000500AE300F7EE69B7411122C413065501A6 -:10C1B0002A84285D8146814506C69760FA1FE7807C -:10C1C000C09E631A051A2C5C9D461D4598213D8B27 -:10C1D00058B49C317CA4631ED710B8210D459356EA -:10C1E00067001377F7036376F7101545639306101E -:10C1F0009388F7FFB388E84093F8F80F23071403F8 -:10C20000B031454593763600EDE693764600F5E687 -:10C21000138845007D179376F70F1377860005CFB7 -:10C2200003471800034E940251451353470063120D -:10C230006E0C0565130505F02207698F034508009C -:10C240000353A402498F51456315E30A1387E6FFA0 -:10C2500009089376F70F418A35CE03470800137714 -:10C26000F7032302E402034628000967130707F0D7 -:10C270002206798E03471800598E4206418613170D -:10C28000060141837AB039C203060800635B0606E3 -:10C290001306C0123307C7020346C40B0D456318CB -:10C2A000A606373600200346768289078E0721CE00 -:10C2B0009387770D8607B307F740138747ED13067B -:10C2C0004051637EE60489472304F4021387D6FFB6 -:10C2D0009376F70FBC31594513F7070219EB93F723 -:10C2E000070489C71387F6FF9376F70F014591C2BC -:10C2F0006145B2402244410182801388550079177C -:10C3000019BF794641BF9387A7048E076DB70945CA -:10C310006315A600AD078A0779BFA907FDB75A3C88 -:10C32000BA983727002003578772635517012307F0 -:10C33000040251BF373600200547032586832304B6 -:10C34000E4023567231E14033D0758C501000100B0 -:10C35000032786830966130500F810C737360020C7 -:10C360001306C681938757ED48A286077CD3BD6725 -:10C37000BD075CC7A1BF0545ADBF797122D41306C7 -:10C3800055012A84285D8146814506D626D24AD0A9 -:10C390004ECE52CC56CA5AC85EC69760FA1FE78086 -:10C3A000C0806311053A305C9D46130500081822D1 -:10C3B0003D8B58B41C32230A0404230E04047CA4CD -:10C3C0006313D71A2422230404020D4513D76400F3 -:10C3D00093F4F40363F9F41815456316071893856D -:10C3E000F7FF858D93F5F50F2307B40234324545E9 -:10C3F00013F716006319071613F72600494563144F -:10C40000071613F74600631B071613094600FD14B1 -:10C4100013F7860093F4F40F854915CF584C218B00 -:10C420001DC7034719000565130505F02207698F2D -:10C4300003450900498F035524096315E514834911 -:10C44000240893D9290093C9190093F91900F91404 -:10C45000090993F4F40FC18AB5CE03470900137795 -:10C46000F7032302E402834629000967130707F054 -:10C47000A206F98E03471900D98EC206C18613970A -:10C48000060141837AB0B9C28306090063DF060E54 -:10C490009306C0123307D7028346C40B0D45639C35 -:10C4A000A60EB736002083C6768289078E07E5C2BE -:10C4B0009387770D8607B307F740138747ED9306F9 -:10C4C000405163F2E60E89472304F402F5140D0986 -:10C4D00093F4F40F3C32594513F7070249E793F7F9 -:10C4E000070489CB83470900FD140509A301F40261 -:10C4F00093F4F40FB1CC130A8002A14A494B930B79 -:10C50000A40883471900639847038347090063948D -:10C510005703230E640783478900034779001546B4 -:10C52000A207D98F2318F408930529005E85974048 -:10C53000FA1FE78040E28347090063FB97001387F7 -:10C54000170093C7F7FFBE9493F4F40F3A99D5F808 -:10C55000639B09080347C4078547014563E5E70076 -:10C560008947230EF406B250225492540259F249DC -:10C57000624AD24A424BB24B45618280130956004F -:10C58000F91479B52319E408D9B5F94621B7938789 -:10C59000A7048E070DB709456395A600AD078A0766 -:10C5A00019BFA907FDB7B73600204EBC054783A5C4 -:10C5B00086832304E40235673D07D8C501000100E6 -:10C5C00003A786838966930500F814C7B736002051 -:10C5D0009386C681938757EDCCA286077CD3BD672F -:10C5E000BD075CC7E5B55C4CA18BADD7834724087C -:10C5F000898BADF38347E40278240328840703067C -:10C6000054011D8F09073A988305340203478402B9 -:10C610000355240B9306F00F3569B73A0020BD6926 -:10C62000EF80D06C373A00203D099384CA81BD0960 -:10C63000373B0020034784028547E31DF7F083273B -:10C640008A83F8537DFF23A62701010001000327F9 -:10C650008A838967B70533001CC7930700F8DCA0FD -:10C66000930720597CD323263701238E0A80A38287 -:10C67000040023040402A380040085471CC383270D -:10C680000B81944393F6F6E794C3944393F6F6E74D -:10C6900093E6061094C3B736002083A646889046DA -:10C6A0004D8E90C61306900530CBD856759BD8D6C4 -:10C6B000034744029376F7079843137707F8558F9B -:10C6C00098C39750FA1FE780404BEF30A02F9C3063 -:10C6D000858BA9CF2285A3800400EFF0FFAC83589F -:10C6E000240B11E5034784028947631FF7000148C3 -:10C6F000814709479306F00F1306F0079305F007EB -:10C700004685EF80B05EB9B58347E4027424032800 -:10C710008407030654019D8E8305340289063698EA -:10C7200046859306F00FEF80705C29B7014881477A -:10C7300009479306F00F1306F0079305F00703551A -:10C74000240BC1B7054505B5011122CC37340020B3 -:10C75000832784834AC806CE984326CA4EC60D8BCB -:10C760002A8905C3B84B619BB8CB984313678700F0 -:10C7700098C39C438D83858B89C70100010001000C -:10C780000100B739002083A7098103274909B7347D -:10C79000002098C703278909D8C3032784835C43F3 -:10C7A000F99B5CC393070004238EF480EF30C0161E -:10C7B0000345C90B01469305F00F7D151375F50F61 -:10C7C000EF20907E032684839384C481A382040097 -:10C7D000A380040085471CC283A70981B7053300E5 -:10C7E00098431377F7E798C398431377F7E71367EE -:10C7F000071098C337370020032747881447CD8E8A -:10C8000014C79306900534CA5457F59A54D7034772 -:10C81000E9079376F7079843137707F8558F98C37E -:10C82000F2406244D2444249B24905618280FD57D8 -:10C83000A30EF5065C4D6382072CB727002083A763 -:10C840008758411122C426C206C64AC02A8482974C -:10C850008325040AB72400209384045463FFA506AB -:10C86000635605009307800263F9B7068327C40B5C -:10C87000FA2CA183C207C183B387E70213070032F2 -:10C8800093870719B3D7E7020357840805074207C0 -:10C890004183BE9593061700C2063386A540C18228 -:10C8A000637BF602FC382314E4082320B40A13D671 -:10C8B00027003E9601479306D4073386C540A285DC -:10C8C0002244B2409244024937D505001305E5825F -:10C8D00041016F507EEC36876DBF0347C407C947DF -:10C8E000631AF70203570409835784086314F70295 -:10C8F0001309840A15469305A4084A859740FA1F30 -:10C90000E78060A54A85EF905FE08D47A307A40804 -:10C91000230EF40622859750FA1FE78000B0FC38FA -:10C92000F22C814613D517003E95B7470F00938729 -:10C9300007243305F5028145EFC0A00B37370020EF -:10C9400083268783B567BD071305F521DCC6010083 -:10C9500001008327878337390020096798C71309A7 -:10C96000C981130700F82302E90006053D67E8D3F3 -:10C970003D07D8C72285EFF03FDD9750FA1FE780CB -:10C98000C01FEF30200483471900858B6388070E92 -:10C99000A30009008327C40BF62C0347C40BA18313 -:10C9A000C207C183B387D702930600329387071962 -:10C9B000B3D7D7028946631FD70803270901411758 -:10C9C000BA972320F40A0326040AFC3837D5050059 -:10C9D00001471D8E9306D407A2851305E582EF500B -:10C9E000BEDB83578408228585072314F408930748 -:10C9F000F007A301F402EFF05F988347C4070947EB -:10CA00006395E7063946930500080145EFE09F90DE -:10CA10005C4C0356640837B50500ED9B5CCC93066F -:10CA200014081206A28513056568EF60EE875C4C5A -:10CA300093E787005CCC8D47230EF406835564088A -:10CA4000034514082244B240924402499205410130 -:10CA50006F505EEB85466316D700032709017117F7 -:10CA600085B7032709016D17A1BF0547E368F7FCE8 -:10CA7000B24022449244024941018280584C93774B -:10CA80008700A9C38327C40BF22C03578408A18312 -:10CA9000C207C183B387C7021306003205072314F8 -:10CAA000E4089306D407014793870719B3D7C70251 -:10CAB0000326040AB297F0382320F40A09063386C5 -:10CAC000C740F5BB834704089546850793F7F70FE2 -:10CAD0002300F408E3F8F6FA9307E003A308F40A46 -:10CAE000459B58CC2244B2409244024939469305B2 -:10CAF0000008014541016FE0FF8182805D71A2C4A1 -:10CB0000130655012A84285D8146814586C6A6C242 -:10CB1000CAC04EDE52DC56DA5AD85ED662D497507E -:10CB2000FA1FE780800805472DE9032984071D4681 -:10CB30001307000883460900BD8A54B483471900CF -:10CB40007CA4639CC604834629000D4793D96600E4 -:10CB50002304340393F6F60363F1F60413871600F7 -:10CB60006356F700094615476389C902FD17958F7B -:10CB70002307F4028347390093044900858BA1CF32 -:10CB8000834744051305640595C71946A685974054 -:10CB9000FA1FE780E08445470DEDB64026449644F1 -:10CBA0000649F259625AD25A425BB25B225C3A851C -:10CBB000616182808547230AF4048347090019468E -:10CBC000A6859987858BA30AF4049730FA1FE7801E -:10CBD00080789304A90083473900898BA9C703474C -:10CBE000C4053C5C630E071289469C236318D7007A -:10CBF000E207E18763C90700494745B70347D40502 -:10CC00009D83E31BF7FE1946A6851305E4059730BF -:10CC1000FA1FE780E07C6DD183478402990493E793 -:10CC200047002304F4022285EFE0BFC7214735D532 -:10CC30008346390093F7460091C3850493F7860035 -:10CC40008DC79C3083459402514713D64700E39625 -:10CC5000C5F40567130707F0A207F98F9820D98F4D -:10CC60003A346303F7003EB4890493F70601B1C375 -:10CC70005547E39409F29C200967130707F093F7DF -:10CC8000F7032302F402BC20A207F98F9830D98F52 -:10CC90007EB003870400635507006177D98F7EB0AB -:10CCA0007E308D0499C78347840293E707022304EB -:10CCB000F40293F60602638D062A5947E39F09ECB6 -:10CCC0004946A68568009730FA1FE780C0683C8710 -:10CCD00009477EBC5C4CB98B6393E7028347240809 -:10CCE000858B63880712B727002003AAC776930AAB -:10CCF0006405054B63160A048347C407C5E3C904EA -:10CD00008347390093F7070481C79C20A301F402ED -:10CD10002285EFE0BFCD8547630FF5240147B5BD00 -:10CD20000547230EE4049C231946A6859D83A30E84 -:10CD3000F4041305E4059730FA1FE780C061E9BDEC -:10CD400003474A00834794026312F70C8347540554 -:10CD500003475A00858B631BF70A1946D6851305CE -:10CD60006A009730FA1FE780A0676311650B83475D -:10CD70009402A308040A2319640B230AF40A8347C4 -:10CD800054051946D685A30AF40A1305640B973097 -:10CD9000FA1FE780405C8547230EF406D24713054F -:10CDA000840A13D757001D8BA30FE40A03475402CC -:10CDB00013D68700FD8B0507230EE40A7A3C232651 -:10CDC000F40AA30EE40A2183230FE40A62479316B0 -:10CDD00087012183232CE408B886D18E232AD40826 -:10CDE0002314E40842472324E40AEF901F928C8620 -:10CDF0000966A307A40893F70502324A7D16A1EB42 -:10CE0000337ACA007946330ACA02B1A8032A0A0053 -:10CE1000D5B50347440B83479402E31FF7EC8347E0 -:10CE200054050347540B858BE318F7EC194693051B -:10CE300064051305640B9730FA1FE780605A854735 -:10CE4000E31CF5EAA308040A2319A40AB1B7337A4C -:10CE5000CA0093F505041306C012330ACA0281C53D -:10CE6000B78725003E9A0347540289467C24631500 -:10CE7000D70C373700200347778289078E0755C7BD -:10CE80009387770D13961700330ACA40B7074B00F4 -:10CE900013074AED938777DAE3E3E7E6B72A002042 -:10CEA00093870A54EA2F37460F0013060624B3353A -:10CEB0004503814623000408372B0020938A0A5437 -:10CEC000130CD40733054503EFB0B03283278B58DA -:10CED000AA8B82975E952320A40A930700500345EE -:10CEE000D407B7DB050063C747079307F00F630458 -:10CEF000F500EF505ECF83278B5882970147E2867B -:10CF000013061500A2851385EB82EF50FE880347B8 -:10CF1000D4079307F00FE304F7DEFD572319F40855 -:10CF20005C4C93E747005CCCD9BB9387A7049396EE -:10CF30003700330ADA4099BF85466318D700AD073A -:10CF400013972700330AEA4091B7A9078E07330ADF -:10CF5000FA402DBF9307F00F6304F500EF50BEC8F1 -:10CF600083C77A010326040A0147E2861D8E59BF52 -:10CF7000231F040271B38947639CF9007C34858BBD -:10CF800081CB8347440589C71C38D5CFFD171CB812 -:10CF9000EF2050232285EFE07FA88347840293F798 -:10CFA0000702E38D07D67E30F945139707014187C5 -:10CFB00063560700CE07CD839305C0120347540282 -:10CFC0008946B385B7027C24631AD7083737002017 -:10CFD0000347778289078E073DCB9387770D13969A -:10CFE0001700B387C540B7064B00138647ED9386FD -:10CFF00086DA13071002E3E2C6BA13070064E36F90 -:10D00000F7D0B736002003A6868335673D0758C69C -:10D010000100010003A786838966130600F814C780 -:10D02000B73600209386C681938757EDD0A2860736 -:10D030007CD3BD67BD075CC7930750FA3CA4834708 -:10D04000E4025EBCE1B92285EFE01FD1C1B993874C -:10D05000A70493963700B387D54071B78546631808 -:10D06000D700AD0713972700B387E540ADBFA907E9 -:10D070008E07B387F54085BFB727002083A70776C3 -:10D08000394693050008D84F0145459BD8CF130773 -:10D090004004A388E70A6FE0EFA7411122C41306FA -:10D0A00055012A84285D8146814506C626C29750CF -:10D0B000FA1FE78080AF85472DE1245C1D4693076A -:10D0C00000089420BD8A54B4983078A46397C604AD -:10D0D0008347840293E787002304F402BC2093D69D -:10D0E000670013F6F70395478DEA930616008D4700 -:10D0F00063D5E6027D17118F2307E402BC309385C8 -:10D100004400858B9DCB834644050D479C20639747 -:10D11000E61293F7070481EBC547B24022449244DC -:10D120003E85410182806850194651059730FA1FAB -:10D13000E780002B9385A40065D1B830C94793766A -:10D140002700E1FE230E040493764700CD47F1F655 -:10D1500093760702D947F1F29377870085C39C3114 -:10D160008566938606F0A207F58F94218905D58FF1 -:10D170003EB483C7F5FF9183A304F402418B3DC7FE -:10D180009C210967130707F093F7F7032302F402C2 -:10D19000BC21A207F98F9831D98FC207C1877EB011 -:10D1A000038705006356070A1307C012834654021B -:10D1B0000946B387E70278246392C60AB73600208F -:10D1C00083C6768209070E07D1C61307770D0607B7 -:10D1D000998F138747ED9306405163F9E60883471B -:10D1E000840293E707042304F4028D05BC3093F70F -:10D1F000070481C79C21A301F4028307440163470C -:10D20000F00A85475CA82C380545EF501EDD08B8AC -:10D210002285EFE0BF8005478147E310E5F0034733 -:10D2200084029306000213770706E318D7EE13076C -:10D2300050FA38A40347E4025ABCC5B50347540565 -:10D240009987858BE31AF7EC194613056405F9BD38 -:10D250007947A9BF1307A7040E079DBF054663952D -:10D26000C6002D070A07ADB72907FDB7B73600205E -:10D2700003A6868335673D0758C60100010003A752 -:10D2800086838966130600F814C7B7360020938694 -:10D29000C681938757EDD0A286077CD3BD67BD07B3 -:10D2A0005CC78347840293E7070235BF3C38858318 -:10D2B00099C33CB889BF8547EDBF011126CAB73471 -:10D2C000002083A784834AC806CE984322CC4EC64A -:10D2D0000D8B2A8905C3B84B619BB8CB9843136764 -:10D2E000870098C39C438D83858B89C7010001000B -:10D2F00001000100B739002003A70981B7C7898E53 -:10D30000938767ED1CC7B7575500938757555CC384 -:10D3100003A784833734002001465C439305F00F54 -:10D3200093E717005CC303455902930710FA2305DE -:10D33000F900230E04801304C48123020400EF20AB -:10D34000A04603A68483A3020400A300040085472B -:10D350001CC283A70981B705330098431377F7E709 -:10D3600098C398431377F7E71367071098C33737C5 -:10D370000020032747881447CD8E14C793069005D5 -:10D3800034CA5457F59A54D7034749029376F7079E -:10D390009843137707F8558F98C3F2406244D244FC -:10D3A0004249B24905618280411106C622C4FD5737 -:10D3B0002308F502834715022A842301F502A147B9 -:10D3C000A300F502EF2040552285EFF01FEF37371D -:10D3D000002083268783B567BD07DCC601000100F6 -:10D3E000832787830967930600F898C7373700209B -:10D3F0001307C78154A30567130727D1F8D33D67E7 -:10D400003D07D8C7930740FA3CA4B24022444101EB -:10D410008280011122CC130655012A84285D8146A1 -:10D42000814506CE26CA4AC84EC652C49740FA1F46 -:10D43000E780A07763160542032A84079306F00766 -:10D4400003470A003D8B58B483471A00A301D40256 -:10D45000230A040493F7F7037CA4230E04049D46D7 -:10D46000631ED732584C9316170163CD063E03490D -:10D470002A009374F90313871400638CE7008D442A -:10D48000F240624426854249D244B249224A0561AB -:10D490008280135969002304240383473A009309C7 -:10D4A0004A0013F717004DE3FD1483473A0093F445 -:10D4B000F40F13F7270021C7E31309FCC18B91C7B1 -:10D4C000034714028947E30CF7FA8547230EF40457 -:10D4D0003C5CCE8519469C231305E405E9149D8325 -:10D4E000A30EF4049730FA1FE780E0E68347840236 -:10D4F000990993F4F40F93E747002304F4020347D8 -:10D500003A009377470063930736137687003DCA46 -:10D5100083C719008566938606F0A207F58F83C638 -:10D520000900F9148909D58F3EB483C7F9FF93F434 -:10D53000F40F9183A304F402FD572301F402418BFD -:10D540006DC729E6D5442DBF63100932C18B91C741 -:10D550000347140289476309F7308547230AF40417 -:10D5600083470A00CE8519469987858BA30AF40460 -:10D57000130564059730FA1FE780E0DD9309AA00E0 -:10D58000E51425B7FD57A304F4027DB7EF208043CF -:10D5900083C709000967130707F093F7F70323020E -:10D5A000F40283C72900A207F98F03C71900D98F96 -:10D5B0007EB003870900635507006177D98F7EB07D -:10D5C00083C7290009479583A302F402E36CF7F6A9 -:10D5D000F5148D0993F4F40F83473A0013F707020B -:10D5E0006318072813F7070419CFC18B91C70347A6 -:10D5F000140289476300F72883C70900FD1493F4D8 -:10D60000F40FA301F402639904266303090283471C -:10D610003A00C18B8DEBEF20E03AE31509F22307C6 -:10D6200004022285EFE08FBF31BFA30604026DB76D -:10D630002285EFE00FA719E1A14499B52285EFE01B -:10D64000EFBA71F5D5BF0347140289476313F7009A -:10D650008944834754027230230694028507A30647 -:10D66000F40293170601C18763DF07004E064D825F -:10D670009307C01285463306F6027C246317D70051 -:10D68000A1078E0721A8F947F5B7373700200347D0 -:10D6900077828E0779C79387770D86071D8EB70728 -:10D6A0004B00130746ED938787DA63E9E71C93077E -:10D6B000005063EBC70AB737002083A6878335671E -:10D6C0003D07D8C60100010003A787838966373963 -:10D6D000002014C7930500F89306C981130656ED80 -:10D6E000CCA20606BD6670D3BD0654C79309C98196 -:10D6F000BE847C53FDFF8347140222852301F4027C -:10D70000A147A300F402EFF05FBB03A78483B567D2 -:10D71000BD075CC70100010083A7848309679304E8 -:10D72000000298C7130700F82382E9001307A05BE3 -:10D73000F8D33D673D07D8C79740FA1FE780E0431D -:10D740008347C981858BE38D07D222856244230EEE -:10D750000980F240D2444249B249224A05616FF041 -:10D76000EFB99387A70431BF034704039307F00F72 -:10D7700093041002E316F7D0930710271306F6D888 -:10D780003356F60237D5050093060403A285130528 -:10D79000853A9304F007EF502EB1DDB1894663F767 -:10D7A000E600994693040008E31CD7CCE91793F7E9 -:10D7B000F70F7D4793040008E364F7CC8547230AFD -:10D7C000F40483470A00194693052A009987858B3C -:10D7D000A30AF404130564059730FA1FE780A0B785 -:10D7E0005C34230E040405476391E7022C5C230E8E -:10D7F000F40419469C211305E405A1059D83A30E9D -:10D80000F4049730FA1FE78000B52285EFE06F89B6 -:10D810008547AA84E312F5E22285EFE02F9DE31D00 -:10D8200095E05C3481C71947639CE7007C34858BA5 -:10D8300081CB8347440589C71C3891CFFD171CB89D -:10D84000EF204018583491479944E30BF7C22285E2 -:10D85000EFE0CF9C35B12285EFE00FD081440DB1D0 -:10D86000854439B99D4429B9C54419B9CD4409B98C -:10D87000D94439B1DD4429B1E14419B1930410020E -:10D8800001B1411122C4130655012A84285D814645 -:10D89000814506C69740FA1FE780203159ED2C5C80 -:10D8A0007D470D459C31230E040493F7F7037CA4B8 -:10D8B000E91793F7F70F6363F7029C2111471D45A2 -:10D8C000BD8B5CB4639CE700834644050D479C21F7 -:10D8D0006393E60493F7070491E74545B240224479 -:10D8E0004101828068501946890551059730FA1F19 -:10D8F000E78000AF7DD1830744016349F00285478B -:10D900005CA82C380545EF504EED08B82285EFE0B5 -:10D91000EF900145E1B7034754059987858BE31ED6 -:10D92000F7FA1946890513056405C9B73C3885839C -:10D9300099C33CB8F9B78547EDBF054545B7011117 -:10D94000B72700204AC83739002026CA83A40776A3 -:10D950008327898306CE22CC98434EC60D8B05C300 -:10D96000B84B619BB8CB98431367870098C39C431F -:10D970008D83858B89C701000100010001003737C5 -:10D98000002083260781B7C7898E938767ED9CC6E1 -:10D99000B757550093875755DCC283C724029306B7 -:10D9A000F00FBA896387D700A380F402FD57238163 -:10D9B000F40203C5140289476303F50001450327F8 -:10D9C00089835C4393E717005CC3930710FABCA4F8 -:10D9D000B73700201387C78118371384C78119C749 -:10D9E000142419476394E600A3040400743021470B -:10D9F0006395E600130780101AA41947238E078049 -:10DA000001469305F00F78B023020400EF10D059BF -:10DA100003268983A3020400A300040085471CC2D7 -:10DA200083A70981B705330098431377F7E798C3B5 -:10DA300098431377F7E71367071098C33737002029 -:10DA4000032747881447CD8E14C79306900534CA20 -:10DA50005457F59A54D798349376F7079843137729 -:10DA600007F8558F98C3F2406244D2444249B24904 -:10DA7000056182804111B727002022C403A40776E4 -:10DA800006C626C28347140221476388E70A8944F1 -:10DA900014346399970A93077002638AF610930708 -:10DAA0005002130660026384F60013067002B73753 -:10DAB000002083A7078110B4373700209443B705AF -:10DAC000CEFFFD1593F6F6E793E6060894C3032709 -:10DAD0004788370533001447ED8E14C7B73600204A -:10DAE00083A58683B736002023A80504238E0680ED -:10DAF0009386C68123820600A3820600A3800600C7 -:10DB0000854694C1944393F6F6E794C3944393F601 -:10DB1000F6E793E6061094C31447C98E14C793061C -:10DB20009005B4C95457F59A54D79843137707F81A -:10DB3000518F98C3930710FA3CA4B24022449244F8 -:10DB40004101828093077002638CF60293075002B2 -:10DB5000130760026384F60013077002B7370020D2 -:10DB600083A6478818B4DC56F59BDCD6B73700206F -:10DB700083A607819C4293F707F8D98F9CC25DBFAB -:10DB800083470402898B85C7B7270020723803C5F5 -:10DB9000F74EA145EF409EFA93075002A30094026E -:10DBA0001CB42244B240924441016FF05FD92285F7 -:10DBB0002244B240924441016FE0CF83B727002056 -:10DBC0009387876E03A7C70921E7411122C4A05F8D -:10DBD00006C637270020834704020345F74E13F794 -:10DBE000170011C78547A300F402322C39A0898B96 -:10DBF000F5DB72388947A300F402A145EF401EF41B -:10DC0000930750021CB42244B24041016FF03FD34D -:10DC100082800111B727002022CC03A4077626CAF0 -:10DC20004AC84EC652C456C25AC006CE930A200AEB -:10DC30009309100A1309600A130B400A130A500AC9 -:10DC4000B73400203C246392570D373700208326D9 -:10DC50008783B567BD07DCC6010001008327878382 -:10DC6000B7340020096798C7930600F81387C4816A -:10DC700054A3373700208326078109469842318311 -:10DC80000D8B6311C7061307E043F8D33D673D07CB -:10DC9000D8C79740FA1FE78040EE83C7C481858BC1 -:10DCA00085C7238E0480EF10F0512285EFF07FBDF1 -:10DCB00001CD8307440163C10704FD575CA82C38DC -:10DCC0000545EF508EB108B81C24638B07146244DD -:10DCD000F240D2444249B249224A924A024B05617B -:10DCE0006FF0FFC5984231830D8B01E71307601970 -:10DCF00069BF1307E01B51BF3C38860793F7F70F46 -:10DD000099C33CB86DBFFD57EDBF6394370383C71C -:10DD1000C481858B91CB2285238E0480EFF06FEF39 -:10DD20003C24E39137F34DB79384C48123820400EC -:10DD300061BF639C270B3737002083268783B56735 -:10DD4000BD07DCC60100010083278783B7340020AC -:10DD5000096798C7930600F81387C48154A337371F -:10DD60000020832607810946984231830D8B631B6F -:10DD7000C7041307E043F8D33D673D07D8C7974072 -:10DD8000FA1FE78080DF83C7C481858B89CB238E10 -:10DD90000480EF1030432285EFF02FB001CD8307D0 -:10DDA000440163CB0702FD575CA82C380545EF50B2 -:10DDB000CEA208B838249307500AE317F7F0EFE033 -:10DDC0008FA819B7984231830D8B01E713076019AB -:10DDD0005DB71307E01B45B73C38860793F7F70F8D -:10DDE00099C33CB8D9B7FD57EDBF63986703974017 -:10DDF000FA1FE78080D883C7C481858B91C72285AD -:10DE0000238E0480EFE09FCF3C2463944701EFE032 -:10DE10008FA33C24E38827E345BDE38A47FF6DB524 -:10DE2000F2406244D2444249B249224A924A024BE9 -:10DE3000056182804111B727002022C403A4077620 -:10DE4000B73700201387C78106C626C218379387C5 -:10DE5000C78119C7942709476394E600A384070084 -:10DE6000F0338546130796FF1377F70F63E4E60058 -:10DE700090A794B7EF1010356840231504002304D1 -:10DE80000400B72400209720FA1FE780E02693843F -:10DE9000C44EA830914523100404232204042324F3 -:10DEA0000404EF405ECFA830A145EF40DECE03452D -:10DEB00014039307F00F6307F500EF40DED2FD5720 -:10DEC000A308F402034504039307F00F6307F5006A -:10DED000EF407ED1FD572308F402B2402244924421 -:10DEE00041018280411106C6FD57A308F50245464F -:10DEF000930500080145EFD0EFC1B24041016FF03A -:10DF00007FF3B727002083C7F74E95E73725050035 -:10DF100041111305C5BE06C6EF40DEEBEF303FDD15 -:10DF2000B240B7C705003727002093870782232216 -:10DF3000F77641018280B7C7050037270020938715 -:10DF400007822322F776828001114EC606CE22CCAC -:10DF500026CA4AC8EF80CFE3AA8935C5EF800FD51E -:10DF60002A8463030512930710113EA5930700FB53 -:10DF70007CA53729002085471CA9930709549E2BAF -:10DF80001307401013090954A5073E85C207C18332 -:10DF90006374F700130540101317050141839307BD -:10DFA00000046374F7001305000442059305702014 -:10DFB00041819720FA1FE780E0082328A41001ED93 -:10DFC0000A24EF80AFEBF24062444E85D2444249CE -:10DFD000B24905618280B737002083A74783B72401 -:10DFE00000209384846E232AF41083A7C40C03A713 -:10DFF000840C2285232EF40E2326F410BE3C232C01 -:10E00000E40E2324E4102312F41483C7A40423137E -:10E010000414A307F414FD577EBC7EB02304F4025D -:10E020008347D40293E707FCA306F402856793872E -:10E0300087BB2314F404EF609FE0034549012301EB -:10E04000A414EF10204AD147A306F41693078002C8 -:10E05000A305F4169307006F231FF4149307F0072A -:10E060002300F416F5779387A7EBA301A4142303E9 -:10E07000A416A303A4162304A416A304A416231110 -:10E08000F4162394040081B7854935BF01114EC6AB -:10E09000B729002052C4138A896E22CC2A840345F2 -:10E0A0003A008345F4024AC82307A4023729002016 -:10E0B00006CE26CA56C213090954EF40BEE90358DA -:10E0C000E9011E3C93060032930A204E3307F80202 -:10E0D00083446901232AA4089389896E3356D702A1 -:10E0E0003377D7022326C40837460F0013060624C9 -:10E0F0008146B3875703B3D7A70233075703BE94AC -:10E100007E389384C417C2048507C1802311940804 -:10E1100033470703B38757031AB0858FB3B5070397 -:10E12000860433850703EFA0D00C832784083E952F -:10E13000834754032328A4082285B3875703BE943A -:10E1400023109408EF60DF982285EF607FCA4E3C71 -:10E1500022859205F915C205C181EF60BF93228522 -:10E16000EF80AFDF371500208545130565A4232E0A -:10E170008A08EF40FEB3B737002083A74780898B1A -:10E1800091CF8327490399CB83258409354582970D -:10E19000832749038325C40939458297F2406244A5 -:10E1A0002397090023A80900D2444249B249224AD0 -:10E1B000924A056182800357E507894683572508FF -:10E1C00063F3E6000947B397E7002312F5086F40B1 -:10E1D0005EE7011122CC26CA4AC806CE4EC652C4FA -:10E1E000834745032A84373900208507230AF5022F -:10E1F0003C39B7340020639A07565C2513070004A6 -:10E2000038B91839BD9B93E737005CA59317870190 -:10E21000A30D0500E18763D807001377F70718B946 -:10E22000EFC0DF9639A88327850A93F62700BDC281 -:10E23000F59B2324F50A83270510918BA9CBEFA02A -:10E240005FC0383C8547631DF70483278411582439 -:10E25000DC4398A3832784115838DC4398B3032701 -:10E260008411832789835843B8DB83A70481B706C9 -:10E2700080009843558F98C3D857719BD8D7F240E8 -:10E280006244D2444249B249224A05618280EFA0E9 -:10E290005FB945BF93F617008DC2F99B2324F50A99 -:10E2A00083270411582498A383270411583898B35E -:10E2B000832789830327041145BF83490501054A44 -:10E2C0006391491DE9C713F7070119C7BD9B2324B3 -:10E2D000F50AEFB0AF84B5B713F7070201CB93F798 -:10E2E000F7FD2324F50AEFB08F95A1BF13F70704BC -:10E2F00001CB93F7F7FB2324F50AEFA03FB991B7C1 -:10E3000013F7070809CB93F7F7F72324F50A2285BB -:10E31000EFC04F8C3DB713F7071009CB93F7F7EF1A -:10E320002324F50A2285EFA0DFBF21BF13F70720C2 -:10E3300001CB93F7F7DF2324F50AEFB0AFBA11B79B -:10E3400013F7074009CB93F7F7BF2324F50A22857B -:10E35000EFA03FD5FDB513974701635B07007D77BD -:10E360001307F77FF98F2324F50AEFA0FFD5D1BD5E -:10E3700013973701635A07007D777D17F98F2324A0 -:10E38000F50AEFA0FFE175BD2324050A11BF83271D -:10E39000450A6383071C13F7070401CB93F7F7FBC8 -:10E3A0002322F50AEFA0BFA169BD13F7071001CB27 -:10E3B00093F7F7EF2322F50AEFA0FFFA59B513F709 -:10E3C000072001CB93F7F7DF2322F50AEFA05FFECA -:10E3D0008DBD13F7074001CB93F7F7BF2322F50A52 -:10E3E000EFA05FA8B9BD13974701635B07007D7776 -:10E3F0001307F77FF98F2322F50AEFB07FF291B56B -:10E4000013973701635A07007D777D17F98F232211 -:10E41000F50AEFA01FA935B513971701635A070036 -:10E4200071777D17F98F2322F50AEFA0BFC111BDC7 -:10E430001397E700635A070001777D17F98F2322AE -:10E44000F50AEFA01FC4F5BB1397B700635B070085 -:10E450003707F0FF7D17F98F2322F50AEFA03FCD94 -:10E46000CDB313978700635B0700370780FF7D17E5 -:10E47000F98F2322F50AEFB0AF84E1B32322050A16 -:10E4800005B56381090E9306600463E93609130735 -:10E49000500463F0E9161307A0026385E91C636169 -:10E4A000370593071002638BF91863E43703ED47D0 -:10E4B000638EF914F5476397F90A2285EFC00FEDD3 -:10E4C0008327040A93E717002320F40A2308040093 -:10E4D0008DBB930750026380F91C93077002E1BF64 -:10E4E00013076003638AE912636B37019307E00245 -:10E4F0006383F91C93071003E38DF9DCA5A01307D0 -:10E500000004638DE908930710046385F90A9307F3 -:10E5100080036399F904EFC06FE74DBF9307A0052F -:10E520006384F91C63E23705930750056385F9029C -:10E5300063EB37019307B0046385F91A930710055D -:10E54000E387F9DC05A093076005E38DF9DC930709 -:10E5500080056399F90022859720FA1FE780A0279C -:10E56000E30105CE22856DB99307B00663ED37014F -:10E570009307A00663F2F91E93076006E394F9FE81 -:10E58000EFB04F9681A093076007E382F9DC930711 -:10E590006008E399F9FCEFA0BFC02DA013F7074076 -:10E5A00071D393F7F7BF2324F50AEFA09FAF230899 -:10E5B000340141B98347A50285C705476397E70042 -:10E5C000EFA0FFE785471CA8ADB983270510918B05 -:10E5D000D1C7BD47A305F4022285EFA09F86DDB712 -:10E5E000EFC0CFDA8327040A93E727002320F40A39 -:10E5F000D1BFEFC0AFD98327040A230844012310F9 -:10E60000040693E747002320F40A25B9EFA0CFEED4 -:10E61000D9472309F40435B19720FA1FE780A01BDE -:10E62000E30105C28547A305F4042285EFA06FF737 -:10E630008347A404F99B2305F40421B183278510A3 -:10E64000858B81C7EFA0DFC3EDBEE9472305F50247 -:10E6500083270510918B99C38D47ADBF2285EFA00D -:10E660004FFC8DB7EFA0EFEB8347B40491CB41464D -:10E670009305C40A1305C40C9720FA1FE780A0CDA8 -:10E680008347A4042326040E2328040E93E71700CF -:10E690002305F4047DB683270510918B91CB8D471C -:10E6A000A305F502EFA0EFF91C38DD9B1CB819BFDC -:10E6B000EFA02FF7D5BF8347A5042322050E2324FF -:10E6C000050E93E727002305F504EFA04FE71C385C -:10E6D00023050402DD9B1CB88327040A93E7070186 -:10E6E00031B7EFA0AFFAF9BD8347A51491CB8346AC -:10E6F0006514331ADA006305FA001367070118B9C5 -:10E700000347B41401CF834674148547B397D700E9 -:10E710006386E7001C3893E707011CB87C2C91CF77 -:10E720001C38C18B99EB8327040A93E70720232029 -:10E73000F40A2285EFC08FC571B583071416F5DB87 -:10E7400083274410898BF5D78327440A37071000A5 -:10E75000D98F2322F40AF1BFEFC04FC38327040AE5 -:10E76000056713070780D98F51B5B7270020938716 -:10E77000876E9A2B05079AABE9B439714ED6B72943 -:10E7800000209387896E22DC03A4870956D25AD0D1 -:10E790005ECEB73A0020372B0020B79B060026DA62 -:10E7A0004AD852D406DE62CC66CA6AC89389896E9A -:10E7B0009384CA8137390020373A0020130B0B5459 -:10E7C000938B0B047C241307000D639BE71E8327A8 -:10E7D000898398430D8B05C3B84B619BB8CB984395 -:10E7E0001367870098C39C438D83858B89C701007D -:10E7F0000100010001008347A404858B99C7A2850D -:10E8000005459730FA1FE7806022834724140326CA -:10E810000A81B706008293F7F703139797015C56B6 -:10E82000FD16F58FD98F5CD637170040930770051A -:10E830002300F704930780FA2300F7048346241487 -:10E84000A54763FFD70E3E3393E707013EB3832707 -:10E850000A810327840998C70327C409D8C38327DB -:10E860008983D84313671700D8C31547F8B0130737 -:10E8700010FD78A4130700FC238EEA80F8537DFF77 -:10E880008355041C0356241C034574149105C205CA -:10E89000C181EF0070718345741489468357040861 -:10E8A000035744086395D50A06078326898393870F -:10E8B0009718BA9735673D07D8C6010001000327AE -:10E8C00089838966860714C7930600F8D4A07CD391 -:10E8D000BD67BD075CC703268983A3820400854703 -:10E8E000A38004001CC28346A4043737002083277A -:10E8F0000A81858A03274788D5C29443B705330028 -:10E9000093F6F6E794C3944393F6F6E793E606107E -:10E9100094C31447CD8E14C79306900734CA545736 -:10E92000F59A54D7034764139376F7079843137700 -:10E9300007F8558F98C39730FA1FE780002459B520 -:10E940003E33C207C183BD9BC207C18301B7032603 -:10E950008983B566BD06054554C606076394A502BE -:10E96000010001008326898309669387570390C6B7 -:10E97000130600F8D0A0BA978607FCD2BD67BD0782 -:10E98000DCC691BF01000100832689830966938755 -:10E99000970490C6130600F8D0A0F1BF9443B705C2 -:10E9A000330093F6F6E794C3944393F6F6E793E6C1 -:10E9B000061094C31447CD8E14C793069005B9BFB3 -:10E9C0001307100D639AE75883C7CA81858B63824A -:10E9D000074083C7CA81E207E18763DF07067C340B -:10E9E00093F707028DC31E3C1307204EB387E7023F -:10E9F00003274409B3D7E70203476B011307070551 -:10EA0000BA972311F40883270A818326C40809468C -:10EA1000984303AC04018357240831830D8B0355BD -:10EA2000EB01369C6316C71293879718B3A5A7020C -:10EA300037460F001306062481463305F502EF9092 -:10EA4000507B835744083305AC402328A4088583B2 -:10EA50002312F408231F04068345A404032544114C -:10EA6000930604031306240385899730FA1FE78071 -:10EA7000C0138347240303C76904E8A0998F2309BF -:10EA8000F402FC20858B639807268347940293E762 -:10EA90002700A304F40283C7CA81E207E18763D396 -:10EAA00007028347641313D7370093F67700229742 -:10EAB0008547B397D7008346071393C7F7FFF58FB2 -:10EAC0002308F7127C34898BDDC32285EF60AFB752 -:10EAD00059ED7C34A309040093E747007CB48327F5 -:10EAE00084118DCB383C1DC79837058B05E7BA27B5 -:10EAF000C843136707F0BAA79710FA1FE780C05FF3 -:10EB00008357240485072311F404832784119C432D -:10EB1000232CF4105C3881CB8347A404898B81C7F4 -:10EB20002285EF608FB61C28130720026395E70249 -:10EB30008327040A2305040293E787002320F40AAD -:10EB40001C3893E787001CB8930740021CA805A057 -:10EB500093879704E1BD13070006639AE70A854788 -:10EB60001CA88347940293E71700A304F402FC2037 -:10EB7000898BEDC38347A404858BE9CF1C3C8507B3 -:10EB80001CBC7C3413F7270015EF93E727007CB4F7 -:10EB9000930700F85CAC1E3C1307204EB387E702D6 -:10EBA00003274409B3D7E70203476B01130707059F -:10EBB000BA97C207C1832311F40886072310F4080B -:10EBC00023AE09082285238E0A80EFF08FE00345EB -:10EBD000641489474C386319F51203458414910570 -:10EBE00013652500EF00902A5C38638A071A834773 -:10EBF000A404898B6385071AA28501459730FA1F03 -:10EC0000E78080DB63040510EF00D05B19AE1307CB -:10EC100070066397E70203270A817C53ED9B7CD340 -:10EC200023850400372702408347870493F7D70FD3 -:10EC30002304F7045C2493F7F7FD5CA4854739B7F8 -:10EC40007147E396E7F28327040A93E7170023202E -:10EC5000F40A31BF2285EF602FA105F5A30C040053 -:10EC60002285EF608F9B1C38A18B8DCB7C289DC7A4 -:10EC70007C38094793F7B70F6382E7029307D00305 -:10EC80002309F404930770021CA88347A404858B0E -:10EC9000E38907EE2285EF602FA4E5B558348D4750 -:10ECA0006310F7047C38130780026372F7027C3824 -:10ECB0001D476384E7022306F4028327840A228522 -:10ECC00093E717002324F40AEFA02F8939A08A07BD -:10ECD000DE979C432285829779F97C28DDF755B52C -:10ECE0007C28E38007EA22859720FA1FE78000BE90 -:10ECF000E31905E8DDB71C2C85071CAC83D7E900B8 -:10ED000085072397F900B5BD9105E9BD03270A8161 -:10ED1000B70633001C4393F7F7E71CC31C4393F774 -:10ED2000F7E793E707101CC3B737002003A747880E -:10ED30001C47D58F1CC7832789831307A007B8CB2F -:10ED400083270A81B70680009843558F98C3D85708 -:10ED5000719BD8D7930720FD7CA483270412E38CF2 -:10ED600007BC7834058BE30807BCD443D0278C2735 -:10ED70000A248906EF60E070E31F05BA83270412B6 -:10ED8000BA27136707F0BAA79C432320F4128357CE -:10ED90000404E38207BAFD172310F40469BE0327B5 -:10EDA0000A81B70633001C4393F7F7E71CC31C43E3 -:10EDB00093F7F7E793E707101CC3B737002003A7C3 -:10EDC00047881C47D58F1CC7832789831307A00555 -:10EDD000BDB783278983FC53E396079E9387CA8137 -:10EDE00023820700EF00103E83C7CA812285E20715 -:10EDF000E18763D4072AEFF00FBC83D72901850789 -:10EE00002399F90083474417858BD5CF8347641333 -:10EE100093D63700A29683C5061313F7770033D62F -:10EE2000E540058A63030612034524037D57FD4729 -:10EE3000591562052C0061853AC43EC69730FA1F09 -:10EE4000E780A0EE0326841322478326C413B2472B -:10EE5000718FF58F6314E6006387F6062800EF7064 -:10EE6000DF8A894763F1A706294681451305D41730 -:10EE70009710FA1FE7806051224AB24A014B8D4C2D -:10EE8000054D130C500293148B01E1845A86528570 -:10EE9000D68593DB2440EF9050308D88A29B058966 -:10EEA00086040389DB1759CDB3149D00B364990020 -:10EEB000A38E9B16050BE3188BFD8347441793E73E -:10EEC0008700230AF4167E3CA9CF13074006B3F748 -:10EED000E702A1EBB737002083A74780898B95CF46 -:10EEE000B724002093840454D85805CB83D7090154 -:10EEF00083D529012545C207DD8D0297DC5883D5CE -:10EF0000E90029458297DC58831504032D45829733 -:10EF1000DC5883052403314582972397090023A8F1 -:10EF200009002285EF601F89F2506254D254425981 -:10EF3000B259225A925A025BF24B624CD24C424D69 -:10EF400021618280B3949C0095B78547B397E70011 -:10EF5000CD8F2388F61285BF1307200DE396E7CAED -:10EF60009C30858B638E07128327040AA3800400DC -:10EF700013972701634B070E22859720FA1FE7801E -:10EF800040A185476313F50E8355041C0356241CCA -:10EF9000034574149105C205C181EF00F000834759 -:10EFA000A404373C0020858BBDCFA2850545973052 -:10EFB000FA1FE780A0A703270A81B70633001C4386 -:10EFC00093F7F7E71CC31C4393F7F7E793E70710A2 -:10EFD0001CC303274C881C47D58F1CC783278983F4 -:10EFE00013079007B8CB930710FD032789837CA4F0 -:10EFF000B567BD075CC701000100832789830967E6 -:10F0000083260A8198C7130700F8D8A098420946BA -:10F0100031830D8B6311C7041307E043F8D33D67B9 -:10F020003D07D8C709BA03270A81B70633001C4336 -:10F0300093F7F7E71CC31C4393F7F7E793E7071031 -:10F040001CC303274C881C47D58F1CC78327898383 -:10F050001307900541BF984231830D8B01E71307D9 -:10F0600060196DBF1307E01B55BFEF00B0151C3CC6 -:10F0700085C793F7070F81CB9305D0032285EF60F7 -:10F08000AFFF2305A402B727002083A7475789C7EE -:10F0900095451305500882972285EF60DFBC51B576 -:10F0A00083278983FC53639F07F023820400EF00CA -:10F0B0007011DDB7411106C6EF50DF8BB727002076 -:10F0C00037E705009387876E130787F423A4E70AC1 -:10F0D000B24037E705001307C70823A6E70A410136 -:10F0E0008280011122CC372400209307846E26CA27 -:10F0F00083A4470B4AC84EC652C456C206CE2A89BC -:10F1000081491304846E130A2500854AA1E49305FE -:10F11000802031459710FA1FE780C0F2AA8401458C -:10F12000A9CC834719001946930529009CB0138583 -:10F1300024009710FA1FE78000228327440BB9E7C9 -:10F14000232A940A23A404008347040B8507230879 -:10F15000F40A1DA09830834719006305F700A689BB -:10F1600084446DB71946D285138524009710FA1F81 -:10F17000E7800027E31555FF0545F2406244D2447D -:10F180004249B249224A924A05618280E38C09FAD7 -:10F1900023A4990045BF011126CAB72400209387F4 -:10F1A000846E22CC03A4470B4AC84EC652C456C232 -:10F1B00006CEAA8901499384846E130A2500854AE4 -:10F1C00019E80145F2406244D2444249B249224A18 -:10F1D000924A05618280183083C719006305F700E1 -:10F1E00022890044F1BF1946D285130524009710E7 -:10F1F000FA1FE780E01EE31555FF1C446315090064 -:10F2000023AAF40A19A02324F90022859710FA1FD3 -:10F21000E78080EE83C7040B0545FD172388F40AB9 -:10F2200055B7411122C4372400209307846E03A5EB -:10F23000470B06C626C21304846E11E9232A040A6A -:10F240002308040AB24022449244410182800445CA -:10F250009710FA1FE78040EA2685C5B7B727002038 -:10F260009387876E23AA070A2388070A8280B73705 -:10F27000002003A7878301112AC62EC432C206CEFE -:10F280003C4B93E707083CCB412DB736002083A7C2 -:10F29000C6803245094798C3183103482500A24566 -:10F2A0002207420842970348050042970348350069 -:10F2B0006208429798D758310348650022074208F0 -:10F2C00042970348450042970348750062084297F9 -:10F2D000D8D718350348A5002207420842970348AB -:10F2E000850042970348B5006208429798DB58357D -:10F2F0000348E5002207420842970348C5006835E5 -:10F30000429762052A97D8DB9831A8212207420547 -:10F310002A9788212A97A83162052A9798CFD83151 -:10F32000E821220742052A97C8212A97E831620579 -:10F330002A97D8CF9835A825220742052A978825ED -:10F340002A97A83562052A9798D3D835E825220749 -:10F3500042052A97C825EC352A97E2052E97D8D37F -:10F36000D843759BD8C3D84313671700D8C39843B5 -:10F370001367170098C3124683A7C680D843058B2E -:10F380003DEB23A007009C4F01451CA283A7C6802C -:10F390009C4FA1831CB283A7C6809C4FC1833CA213 -:10F3A00083A7C6809C4FE1833CB283A7C680D84F19 -:10F3B00058A2D84F218358B2D84F418378A2D84F52 -:10F3C000618378B2985318A69853218318B698533E -:10F3D000418338A69853618338B6D85358A6D8537A -:10F3E000218358B6D853418378A6DC53E1837CB699 -:10F3F000F24005618280010041B7411106C69720A5 -:10F40000FA1FE7808042B2400145410182804111EC -:10F4100006C6EFF0DFE5B240014541018280B73713 -:10F42000002083A70781885B3D816205618582801A -:10F430003736002083270681B7068000B7250020D5 -:10F4400098439385055437150180558F98C3984389 -:10F45000B7060010130585EC558F98C31307001DE0 -:10F46000D8DBD82993169701C98ED4D7D45737053E -:10F4700000821377F7037D15E98E6607558FD8D77D -:10F4800037170040930770052300F704930780FAAD -:10F490002300F704D429A54763FED7003E3393E742 -:10F4A00007013EB303270681B70709009387370892 -:10F4B0001CD382803E33C207C183BD9BC207C18378 -:10F4C000CDB7B737002083A707819C5BC60713D54C -:10F4D000670163D60700136505C0420541814205F7 -:10F4E000418582809307E00363EEA704130740027F -:10F4F00099476367A704694795476363A704514722 -:10F500009147636FA70241478D47636BA70231475D -:10F5100089476367A702294785476363A702214795 -:10F520008147636FA7001947F557636BA700114721 -:10F53000ED576367A7000947B9576373A700D95709 -:10F540003E8582809D47EDBFBD57634EF5045D57F4 -:10F550008D476348E504715795476344E50479573F -:10F560009D476340E504A547635DA0020547AD479D -:10F570006309E5020947B5476305E5020D47C5473D -:10F580006301E5021147D547630DE5001547ED47D7 -:10F590006309E50019479307F0036314E500930737 -:10F5A00050023E8582808547EDBFB737002083A794 -:10F5B00007813706CEFF7D16984375787D1813773F -:10F5C000F7E71367070898C33737002003274788F2 -:10F5D0001375F51F93F5F5071447F18E14C7B73669 -:10F5E000002083A6868323A8060423A40700904B4B -:10F5F0001366F60390CB90433376060190C3F04F29 -:10F60000137606E0498EF0CF239C0704239007066B -:10F610005057759A50D79043137606F84D8E90C385 -:10F620001306401FF0D2373600201306C681A3020E -:10F630000600A3000600054690C29043B7053300BC -:10F640001376F6E790C390431376F6E71366061039 -:10F6500090C310474D8E10C713079005B8CAD853F2 -:10F6600037060400518FD8D32546F85209C703D76F -:10F670008705E37CE6FED853B706FCFFFD16758FC1 -:10F68000D8D303D50706133545008280B73700204D -:10F6900083A7878199CB944BD04B9842518F98C2C6 -:10F6A00094439C479842D98F9CC237360020B73785 -:10F6B00000201306C681373800209376250003A763 -:10F6C0000781832888833C26D9C2144375737D1330 -:10F6D000B3F66600096EB3E6C60114C3D176138390 -:10F6E000F6FF144389058D4E8E059387E70BB3F61D -:10F6F0006600631CD5031165C98E14C335673D07C9 -:10F7000023A6E8000100010003278883930600F880 -:10F710009385750D2324C70154A28605BE958605E1 -:10F72000BD676CD3BD075CC7828014C335673D07D6 -:10F7300023A6E8000100010003278883930600F850 -:10F740009385A5042324C70154A28E05C1BFF57675 -:10F750001383F6FF144305899387E709B3F6660020 -:10F7600015C114C335673D0723A6E8000100010059 -:10F77000032788838966AD0514C7930600F854A251 -:10F780008A0569BF0565C98E14C335673D0723A681 -:10F79000E80001000100032788838966A90514C7D2 -:10F7A000930600F854A255B7B737002083A7878186 -:10F7B00089CFD44303A8870098423367070198C2D2 -:10F7C000D447DC4B9842D98F9CC23737002003487E -:10F7D0004781B7370020373700209376250083A76D -:10F7E0000781137818001307C781A5C29443757564 -:10F7F0007D15E98E0965C98E94C3B7060900938605 -:10F80000660894D3B7263008C516D4CBB7160300C4 -:10F810009386966194CF8D669386E68D94D7B7666E -:10F82000000193860631D4D3B7A63F0063140800C5 -:10F83000B7A634009386F64D9E0594CB9385453646 -:10F840004CC719C2060650C78280B70609009386C6 -:10F85000360894D3B726100893861690D4CBB716E3 -:10F8600003009386466294CF8D669386E68B94D789 -:10F87000B766000193860631D4D363060802B7A6A3 -:10F880003F009386E62C94CBF5761388F6FF9443DD -:10F8900085489505B3F60601631C150194C38E05D2 -:10F8A0009385C50371BFB72632009386062DE1BF4D -:10F8B0000565C98E94C39205E5B709C9372702408B -:10F8C0008347870493E727002304F7048E05B7379F -:10F8D00000202383B782B737002083A70781220641 -:10F8E000D18DC98DECD3F853370688FF7D16718F03 -:10F8F00037062800518FF8D3F85313674700F8D321 -:10F90000984391C6B7060020558F98C38280B706EA -:10F9100000E0FD16758FD5BFB73700209387C781EC -:10F92000983701EFF43309461387A6FF1377F70FD3 -:10F930006365E600054794A798B78280411122C409 -:10F94000373400209307C48106C69827A1471304C3 -:10F95000C4816317F702373700200347C783B737DF -:10F9600000209387C785058BB033B42329C7C843CC -:10F9700039C10C310905EF00703719C185471CB436 -:10F9800018249947631AF700B727002083A7077642 -:10F99000BC378DC7EFD0BFFA18249D476310F7021C -:10F9A000B727002083A70777FC3389CB2244B240D6 -:10F9B00041016F704F828145014575BFB2402244BD -:10F9C00041018280373700208327878394438D8AC3 -:10F9D00085C2B44BE19AB4CB944393E6860094C3BA -:10F9E0009C438D83858B89C70100010001000100C4 -:10F9F000B737002083A607819C4293F7F7E793E788 -:10FA000007089CC2B737002003A64788B706CEFF79 -:10FA1000FD161C46F58F1CC68327878323A8070481 -:10FA2000B737002083A7878199CBD443904798426A -:10FA3000518F98C2944BDC4B9842D98F9CC2B737F8 -:10FA40000020A38107828280411122C401462A84BA -:10FA50002E859305F00F06C6EFF01FD5B7370020AF -:10FA600003A64788136404041374F4075C563747ED -:10FA7000767113079712F59B5CD6B737002083A7E2 -:10FA80000781B73600208843137505F8418D88C378 -:10FA900098C73757550013075755D8C383A6868391 -:10FAA00037370020230E07801307C7812302070082 -:10FAB000CC42F999CCC2A3020700A545A3000700D8 -:10FAC0006CB3054798C298431377F7E798C39843F8 -:10FAD0001377F7E71367071098C31C4637073300FF -:10FAE000B240D98F22441CC693079005BCCA41017D -:10FAF00082803737002083278783411106C683A879 -:10FB0000070022C43A8893F8380063810802B84B92 -:10FB1000619BB8CB98431367870098C39C438D8340 -:10FB2000858B89C70100010001000100B737002063 -:10FB300083A707813734002037033300D857719BE0 -:10FB400013671700D8D71307C48103288883584B3D -:10FB50001304C4812328E80698431377F7E798C372 -:10FB600098431377F7E71367071098C337370020D8 -:10FB70000327478883288700B3E8680023241701F8 -:10FB80009308A005232818059308000A23221807C4 -:10FB9000D1C14C5713650504F5994CD71377F50778 -:10FBA0008843137505F8598D3747767188C3130755 -:10FBB000971298C73757550013075755D8C32301D5 -:10FBC0000400A30104002302040083274800B68533 -:10FBD0000145F99B2322F80091477CB09720FA1F3A -:10FBE000E780A004B737002003A7878111C75443DB -:10FBF00018479C42D98F9CC23C30858B81CBB7275C -:10FC000000209387876E9A2705079AA7B24022445F -:10FC1000410182804C57F5994CD71377F5078843FB -:10FC2000137505F8598D37C7898E88C3130767ED9B -:10FC300049B7B737002023ACA78019C958415449A8 -:10FC40001C43D58F1CC3184914451C43D58F1CC3B6 -:10FC50008280011126CA4AC84EC6C1643709006AAB -:10FC6000B70900AC22CC52C406CE0544FD141309DA -:10FC7000690E9389E90C130A000205E49305000F4D -:10FC80004145EF308EB5B7B7006A4205938767CE1E -:10FC90005D8DF2406244D2444249B249224A056134 -:10FCA0008280A6850145EF308EB59317850013F746 -:10FCB000071033E5270119C333E5370181470147B1 -:10FCC000E145B356F50085073356F500858A058A68 -:10FCD0006307D60005071377F70F63E4E504E392A3 -:10FCE00047FF81471306F003ED463357F5001377BE -:10FCF000F70305CB6307C7028507E398D7FE1357C1 -:10FD000085009377F50F1377F70FE394E7F8135710 -:10FD100005011377F70FE39EE7F613578501E39A82 -:10FD2000E7F605041374F40F89BF011122CC3734B0 -:10FD300000201304C4817C3006CE26CA4AC84EC6B1 -:10FD400025476387E70A11476384E70AB73700202E -:10FD500003A7C780B747024093870730631AF708A5 -:10FD60000922B7390020EF103000EFF06FEC83A7C5 -:10FD70000981F576FD16984337390020B734002005 -:10FD8000758F98C39843B70633001377F7E798C386 -:10FD900098431377F7E71367071098C30327498839 -:10FDA0001C47D58F1CC783A784831307D005B8CB06 -:10FDB000EF105033EF20D006EF10D01BEF10B02320 -:10FDC00003A709811C4393F7F7E793E707081CC3D0 -:10FDD000832649883707CEFF7D179C46F98F9CC63E -:10FDE00083A7848323A80704EFF01FB3A3030400B1 -:10FDF000F2406244D2444249B24905618280B73739 -:10FE00000020238A0780B737002023AC0780B7473C -:10FE1000024093860730373700202326D780938609 -:10FE2000072037370020232CD78237370020B756DA -:10FE30000240938707102322D788373700202328D2 -:10FE4000F780B73700209387C7810547F8B3372776 -:10FE500000200327075498CF13070711D8CB6FF062 -:10FE6000DFECB737002083A787831307C00893060A -:10FE7000C006D8CBD4CFD8D31306C003D0D7D8DB95 -:10FE8000D0DFF8C33737002003274783F4C7F8DBF8 -:10FE900041677D1798C73D673D07D8C78280B73750 -:10FEA000002083A64788B737002083A70781638790 -:10FEB000051037B724001307F7E96366A7089843CE -:10FEC000137707F81367570298C313F7150001CB90 -:10FED00093F5050341476390E50E13050583D85656 -:10FEE000370810FE7D1813672700D8D6416713071F -:10FEF00007A03356E5023375E5021307A00F7D8A8C -:10FF000093154601F042337606014D8EF0C2370656 -:10FF1000FCFF2A053355E502F842718F3A05398115 -:10FF2000598DE8C2373700200347C783098B19CBA7 -:10FF300098431377F707936607049843137707F8F6 -:10FF4000558F98C38280370725001306F7486363EF -:10FF5000A6023767DBFF130707932A971306007D76 -:10FF60003357C7027D1790431377F707137606F8C8 -:10FF7000518F99BF130707496318E500984313771A -:10FF800007F81367670289B737D725001307F77794 -:10FF9000636DA7003767DBFF130707932A971306E4 -:10FFA000007D3357C70279177DBF9843137707F851 -:10FFB0001367770211BF130585C115B7D85613759E -:10FFC000F507759BD8D69843137707F8598D88C3E2 -:10FFD00091BF4111B737002006C623850786EFF091 -:10FFE0007F9E01458145EF20BECCB24001454101D5 -:10FFF0008280797126D2B7340020B737002003C53C +:1000000095B7397122DC06DE26DA4AD84ED652D4AC +:1000100056D25AD05ECE62CC66CA0944630D061031 +:10002000630B0710AA8B3A89368BB28A2E8C9710F5 +:10003000FB1FE78060A62A8A5144630E050E9305D4 +:10004000300541459700FB1FE780C0FFAA894D445A +:100050007DC18344190083472900A204C207BE94CE +:1000600083470900BE9483473900E207BE94832783 +:100070008A0263E697007D5709446399E70A63079C +:100080000C0083474A000544898BCDC3930C4B0079 +:10009000214681450A85C20C9700FB1FE78040304E +:1000A00093DC0C019305300566859700FB1FE78004 +:1000B00060F92A8C4D443DC95A86D68511059700B2 +:1000C000FB1FE780C03C1146CA8562859700FB1F75 +:1000D000E780E03B414693058A014E859700FB1F70 +:1000E000E780E03A21478A866686E2854E85EF10F2 +:1000F00050792A841DE521468A8528009700FB1F38 +:10010000E780E03821469305490028009700FB1F4F +:10011000E78060338547631EF502A6855E85EF6044 +:100120002F8962859700FB1FE780C0FE4E859700F0 +:10013000FB1FE78020FE2285F2506254D2544259C0 +:10014000B259225A925A025BF24B624CD24C216154 +:1001500082800544F9B779719397050122D406D6B8 +:1001600026D24AD04ECEC1872E8463D50704B73439 +:1001700000209384C425A8309700FB1FE78040111E +:100180002AC609CDEFF07F93B24511E5A820930769 +:10019000F00F631EF5002E85EF203FED2165218DC8 +:1001A000B250225492540259F24945618280EF20A4 +:1001B000BFF0EDB793F7150091C7EFF04FA31345CC +:1001C0001400F9BFA1E10145E1BF850493F4F40FE8 +:1001D000EFE0BFCAE3F9A4FE3395990013190501B6 +:1001E00013590901B3772401EDD34A85EFE0FFF2FB +:1001F000C167FD176305F500DD45EFF00F96334548 +:10020000240179BF85448549E1B7B737002023A68B +:100210000724B737002023AE072237070500B7377A +:1002200000201307C77B23AC0722B737002023A881 +:10023000E72437070500938707251307A750D8C37E +:1002400037F704001307072498C737170500B73797 +:1002500000201307276423A0E7243717050093879E +:1002600007241307071FD8C33717050013070749CB +:1002700098C78280B737002083C70726A18B89C71C +:10028000B73700209387072537370020232EF72222 +:1002900001458280B737002083C70726918B89C725 +:1002A000B73700209387072437370020232CF72205 +:1002B00001458280011106CE2AC6EFF01FF53245B6 +:1002C000B73700209945A38FA724EFD04FDCF24029 +:1002D00037F504001305853B05616FE0BFBA1C5577 +:1002E00081C7A1473E858280011122CC26CA2A847B +:1002F000AE84130500049305300506CE9700FB1F5E +:10030000E78040D408D475C113060004A685970081 +:10031000FB1FE780400278543C2B93F68700F5CA18 +:100320001454B422A18AF5C683270408DDEF93058F +:100330003005130500109700FB1FE780A0D0232095 +:10034000A4088D4745C5A302040078549C3014339B +:1003500091EB91EABC20918BC5E33C2B918BC9EFCB +:10036000854701A881C6214758B089C75C3093E70B +:1003700007015CB06C54BC29858B99CB1C54054794 +:10038000BC238D8B6396E7007C2093E717007CA04D +:100390008327040889C77C2093E787007CA05C3012 +:1003A0000547639AE70A9304840041468145268500 +:1003B0009700FB1FE780C0FE41468145130584017D +:1003C0009700FB1FE780C0FD1306C4033285C145BB +:1003D00032C6EF40FFEC832704083246B9CF2285AE +:1003E000EF00502E9307000525C5A147F240624457 +:1003F000D2443E85056182809C2014231547B38733 +:10040000E70237E706001307872EBA97B6979C23B3 +:100410008DB7943089C6143399C2E14799BFB4208F +:10042000D58F918B95DF9C2014231547B387E70266 +:1004300037E706001307C72CC9BF9306C402A68579 +:100440002285EFF04FA32285EF009021C14751FD97 +:100450003CB0814761BF13F787012DCFC18B930457 +:1004600084004146A9C7890526859700FB1FE780C0 +:1004700080EC41468145130584019700FB1FE7800E +:1004800020F27C201306C403328593E747007CA04A +:10049000C14532C6EF40DFE083270408324699CFDA +:1004A0002285EF003022930720055DD13DBF8145B5 +:1004B00026859700FB1FE780A0EE65BF9306C40268 +:1004C000A6852285EFF02F9B2285EF007019CD477E +:1004D00041D121BF09478545638AE7001147894516 +:1004E0006386E70019476396E7008D450A20EF50C1 +:1004F0005FB67C2093E747007CA08327040881C770 +:1005000093071005B1B7C547A1B73C21638B0722FC +:10051000797122D406D626D24AD03C311307500531 +:100520002A84639DE706034975001306C503C14588 +:1005300093573900AA973285842732C6EF405FD699 +:10054000B737002083A78744A1C79C47B1C30325C1 +:10055000040893767900B3D6D4403246858A930551 +:100560000504180893E60608130505088297137515 +:10057000F50F19ED41460C081305C4029700FB1F47 +:10058000E78060DB2285EF00B00D930760053CB08B +:10059000B2502254925402594561828013071002CE +:1005A0006392E7021C5503270508DE2361E313F776 +:1005B00007104DCF78555A2B1377071045CB93076B +:1005C00070023CB03C30130770026397E70C3C5854 +:1005D00085E39305300571459700FB1FE78080A6F2 +:1005E00028D819C5714681459700FB1FE78040DB7D +:1005F0002458B1C4BC2C89E72285EFF00F93A8AC36 +:100600002858814541469700FB1FE78060D928584C +:100610003D472C2D9387F5FF93F7F70F6364F700A1 +:10062000EF401FC8EF205FC33C58A1458AAB13853C +:100630002701EF40FFC62C580A20EF00B031930786 +:1006400080020A203CB09700FB1FE780E04441464F +:1006500009C57E2513D617003E96B737002003C57F +:10066000F72506068545EF203FF71DB713F707204E +:1006700009CB78545A2B1377072001C793079002B0 +:1006800089B793F707409DDF7C54DE2B93F7074033 +:1006900095DB9307B00235B7130780026397E70233 +:1006A0003C5899C78E2B0A2013862701EF00F02FA4 +:1006B0001C54DE2313F7072029CF78545A2B1377C5 +:1006C000072021CB93079002ADBF13079002639BD5 +:1006D000E700EF401FECAA850A20EF00102C9307DB +:1006E000A00285B71307A0026390E704EF40DFE99B +:1006F000AA85854701456384F500814505452EC6D9 +:10070000EF409FE62A86B2450A20EF00B0251C5430 +:10071000DE2393F707409DC37C54DE2B93F70740FD +:1007200091CF9307B00231BF1307B0026398E7007F +:10073000EF40DFE6AA850A20EF00902A9307F00237 +:10074000B9B58280411122C4405926C206C67C54E4 +:10075000AA84DE2B13F7071011C718545A231377F6 +:1007600007100DE313F7072011C718545A23137706 +:10077000072009EB93F707408DCB1C54DE2393F73A +:10078000074085C7930710023CB02285EFF0FFD7E2 +:1007900038309307F002631EF7002244AA20B240CB +:1007A0009244814541016FE05FBB9307F0023CB08A +:1007B000EDB7B2402244924441018280397122DC7B +:1007C000405926DA4AD84ED606DEAA89AE84328946 +:1007D0006302043A2A211E206384A700A14421A0B9 +:1007E0003C2091EB9D44F250625426854259D254EC +:1007F000B259216182809387E5FF93F7F70F2D4768 +:10080000E362F7FE37E706008A0713074730BA9717 +:100810009C438287B2852285EFF07FACAA84E1B742 +:100820004146CA851305C4049700FB1FE780A0B0AA +:1008300022858525AA8411C1A1443C3013074005B7 +:100840006396E700930790053CB071BF13076005FE +:100850006395E7009307A005C5BFD147F5B7930996 +:10086000C4054E854146CA859700FB1FE780A0ACB2 +:100870000325040845C53C30130790056398E7003D +:1008800022854D259307E0053CB079A01307A0050C +:100890006390E7087C3013D73700229714279D8B8D +:1008A000B3D6F640B737002083A78744858A93E6FE +:1008B00006F893F6F60F9DD39C478DD39305050854 +:1008C00018084E861305050482979374F50FE39775 +:1008D00004F041460C081305C4049700FB1FE78091 +:1008E00080B67C304D47850793F7F70F7CB0637770 +:1008F000F7002285052D9307E005B9B7B73700202B +:1009000003C5F7258545EF205FAF930750052DBF41 +:100910001307C005E386E7F68144F1B513098400A7 +:100920004E86CA8522851408EFE0FFD44146930520 +:10093000C40408089700FB1FE780E0B0E30505EA60 +:100940008A861306C403CE854A85EF10206A05E126 +:100950002285EFE09FDDB73700202A8783A7872510 +:100960000A20814601468A858297AA8411C1A14442 +:1009700093072002D1BD0C22EFE03F9E71BF3830BB +:1009800093072002E310F7E67C5889EB93053005C6 +:10099000714597F0FA1FE780E06A68D86858E3036A +:1009A00005E44146CA859700FB1FE780C09864585C +:1009B0002285EFE09FD7A8AC93073002F1B538301D +:1009C00093073002E310F7E21E2268582146930590 +:1009D00029001EA949059700FB1FE780C0957C549C +:1009E000DE2B13F727002DC718545A23098B2DC36C +:1009F0009307400251BD383093074002E314F7DEFD +:100A00003C5C81EB85455D4597F0FA1FE78080638C +:100A100028DC285CE30205F0834709004146CA85CB +:100A20007CA99700FB1FE780009193075002A9BDA6 +:100A3000383093075002E317F7DA285C194693051C +:100A4000190041059700FB1FE780E08E7C54DE2BE8 +:100A5000918B95CF1C54DE23918B95CB930760022D +:100A600025B57C5C89EB93053005514597F0FA1F5D +:100A7000E780405D68DC685CE30205D64146CA85D4 +:100A80009700FB1FE780208B7C5C7D5798CB4E85C1 +:100A9000EFF05FCB51B50325040813060004CA85A7 +:100AA000130505049700FB1FE780E0882285EFE02F +:100AB000DFB83C30130700056395E7009307400556 +:100AC000E1B313071005639CE700B737002003C5A7 +:100AD000F7258545EF207F929307500575B31307DF +:100AE0002005E39BE7E2B737002083A78744E3872D +:100AF00007CE9C47E38407CE832504089304840033 +:100B0000180893850508814626862E8582970A2037 +:100B10001008A685EF50CFDC9307B005B5B3383089 +:100B20009307E005E310F7CC8325040841464A8586 +:100B30009700FB1FE7802091AD44E30605CA03251B +:100B400004084146CA8597F0FA1FE780C07E2285D7 +:100B5000EFE0BFBDB73700202A8783A787252C5831 +:100B60000A20814601468297AA8411C1A1449307B5 +:100B70001002D9B9AD47E391F5DA14222E211306FC +:100B800065000821EF40DFD641BB894759C2D1C17A +:100B900008A29C211CB29C313CA2BC213CB2BC31BD +:100BA000A30206005CA2DE21A183858B5CB2DA2160 +:100BB0001377072001C793E727005CB2DE2193F784 +:100BC000074089C75C3293E747005CB2DE21139788 +:100BD0004701635607005C3293E787005CB223034A +:100BE0000600DC21858B7CA2DA21098B01C793E703 +:100BF00027007CA2DE21918B89C77C2293E74700E6 +:100C00007CA2DA218147218B09C7782213678700EC +:100C100078A23E8582802E86AA8505456FF0FFF674 +:100C20002E86AA8509456FF05FF6894785C51DC1E7 +:100C3000411106C6AE870D47AA8598A313851700F4 +:100C4000414697F0FA1FE780006FB24081473E852A +:100C5000410182803E858280894785C51DC1411141 +:100C600006C6AE871147AA8598A31385170041468B +:100C700097F0FA1FE780206CB24081473E85410122 +:100C800082803E858280894785C51DC1411106C687 +:100C9000AE871947AA8598A313851700414697F098 +:100CA000FA1FE7804069B24081473E85410182805A +:100CB0003E858280894795C90DC9411106C61D47E9 +:100CC00098A11A21AE87214698B11A212183B8A193 +:100CD000930525001385370097F0FA1FE780A0657C +:100CE000B24081473E85410182803E8582808947AE +:100CF00085C51DC1411106C6AE872147AA8598A3A7 +:100D000013851700414697F0FA1FE780C062B24092 +:100D100081473E85410182803E85828089479DC50D +:100D200015C5411106C6254798A11821AE87194659 +:100D300098B1930515001385270097F0FA1FE780F7 +:100D4000805FB24081473E85410182803E8582803E +:100D5000894785C51DC1411106C6AE872947AA85A9 +:100D600098A313851700414697F0FA1FE780A05C0F +:100D7000B24081473E85410182803E85828089471D +:100D80008DC505C5411106C6AE873147AA8598A312 +:100D9000138517001306000497F0FA1FE780A05987 +:100DA000B24081473E85410182803E8582808947ED +:100DB00085C51DC1411106C6AE873547AA8598A3D2 +:100DC00013851700414697F0FA1FE780C056B240DE +:100DD00081473E85410182803E858280894799C551 +:100DE00011C595479CA11C219CB181473E858280FD +:100DF000894799C511C5AD479CA11C219CB181476C +:100E00003E8582800DC55D718A8586C6A2C42A840E +:100E1000EFE06FFE0A20B71605000A86938666C1CA +:100E20009D45EFE0CFF0B6402644616182800545E4 +:100E300082800DC55D718A8586C6A2C42A84EFE0D2 +:100E40008FFB0A20B71605000A86938606C29D45C9 +:100E5000EFE0EFEDB6402644616182800545828077 +:100E60005D71A2C49305C5022A8441460A8586C6DF +:100E700097F0FA1FE780204C0A20B71605000A8673 +:100E80009386A6C2C545EFE08FEAB640264461616D +:100E900082805D71A2C49305C5032A8441460A85F8 +:100EA00086C697F0FA1FE78000490A20B7160500AA +:100EB0000A86938686C5C545EFE06FE7B6402644AF +:100EC00061618280B737002083A78744A9CB9C4308 +:100ED0005D71A2C486C62A841305E00F8DCF032559 +:100EE00004089305050C130505088297832504085B +:100EF000130600040A859385050897F0FA1FE7801A +:100F000080430A20B71605009386E6D70A86930524 +:100F10001004EFE0CFE1B640264461618280130502 +:100F2000E00F8280317122DD2A840A2126DB06DF70 +:100F30004AD94ED752D556D35AD15ECF62CD9700FB +:100F4000FB1FE78060B53C58AA8489EB9305300508 +:100F5000714597F0FA1FE780E00E28D82858CD4752 +:100F600005C97146814597F0FA1FE7806043032960 +:100F700004072285EFE06FFB230DA9003C203739E1 +:100F80000020638107128327894485E39307E00FDC +:100F9000FA506A54DA544A59BA592A5A9A5A0A5B88 +:100FA000FA4B6A4C3E852961828083AB0701E38F4F +:100FB0000BFC032B0408EF402FDD2A8C0145EF408A +:100FC000AFDADC303858130B0B029309C403130A51 +:100FD000C405938A64003AC0B337F0002A879308A7 +:100FE00001045688B33680015286CE855A85829B8D +:100FF0001C54B8232307E1029833A306E1029C2383 +:101000002306F10283278944D1D303AB4701E30FC1 +:101010000BF6DC30B337F0003ECEEF40EFD6AA8BB4 +:101020000145EF406FD403270408F2472AC03AC2B3 +:10103000B338700156887810930684004E86D285A6 +:101040008800029B7C54B82B2305E1029833A3044B +:10105000E1029C232304F1028327894403A9470169 +:10106000EF408FD22A8B0145EF400FD083C8540048 +:101070009C082A883EC2B3381001B337600138108B +:10108000930684015286CE8556C0880002990A20B4 +:10109000B71605009386E6DA9008C545EFE02FC93C +:1010A000AA87FDB5D43083278944032B0408B336BF +:1010B000D00083AB070136CEEF400FCD2A8C01451F +:1010C000EF408FCA3C58F246130B0B02130AC405BB +:1010D0009309C403938A64002A88930801044E8606 +:1010E000D2853EC05687B33780015A85829B1C54F7 +:1010F000130B0103B8232307E1029833A306E1028F +:101100009C232306F1028327894483AB4701DC300B +:10111000B337F0003ECEEF402FC72A8C0145EF4099 +:10112000AFC4F2472AC0B3388001568878109306BE +:1011300084004E86D2855AC28800829B832504088B +:1011400041465A8597F0FA1FE780E02FAD47E31B31 +:1011500005EE3DBDB71605002E86938666C8C545CB +:101160006FE0EFBC5D71B287A2C44C802A84BE855B +:1011700013051100194686C697F0FA1FE780A01BD9 +:10118000B71605000A8622859386C6D1A145EFE0F1 +:101190000FBAB640264461618280B71605002E86DC +:1011A0009386E6CEC5456FE08FB85D71B287A2C465 +:1011B0006C802A84BE8513052100214686C697F0DF +:1011C000FA1FE7804017B71605000A862285938626 +:1011D00046CBAD45EFE0AFB5B640264461618280B5 +:1011E000B71605002E86938606D5C5456FE02FB449 +:1011F000797122D406D626D23C31130730052A84D1 +:101200006381E708130750056392E7089307A00579 +:101210003CB17C31C14513D737002A9714279D8BE9 +:101220001305C503B3D6F640858A93E606F893F610 +:10123000F60F36C6EF40CF86B246B737002083A7F9 +:1012400087449DCB9C478DCB0325040818081306C3 +:10125000C403930505041305050882971375F50F5C +:1012600001ED1305C40241460C0897F0FA1FE78010 +:10127000800C2285EFF0DFBEB250225492544561BB +:101280008280930790053CB1814645BF1307100249 +:101290006391E7027C5503270508DE2B61EF13F706 +:1012A000170069CB18555A23058B69C7930720028D +:1012B0003CB03C30130720026394E70E3C5889EBA6 +:1012C00093053005714597F0FA1FE780A0D728D81D +:1012D0002458ADCC2285EFE04FC5A8AC28588145F5 +:1012E000414697F0FA1FE780A00B28583D472C2D68 +:1012F0009387F5FF93F7F70F636DF702B737002079 +:1013000083C73745D9CB41468145080897F0FA1F76 +:10131000E7800009B73500201946938505110808B4 +:1013200097F0FA1FE780200130580C082E85EF2037 +:101330004140EF107FF23C58A1458AAB138527014D +:10134000EF301FF62C580A20EFF0DFE09307300251 +:101350000A203CB097F0FA1FE7800074414611C1A3 +:101360007225B737002003C5F72506068545EF200F +:10137000AFA619B713F7270001CB18545A23098BCE +:1013800001C7930740022DB7918B85D71C54DE23EC +:10139000918B85D39307600221BFEF307FF051BF5F +:1013A000130730026396E7023C5899C78E2B0A2038 +:1013B00013862701EFF07FDF7C54DE2B13F7270025 +:1013C00021CB18545A23098B21C79307400249B7F0 +:1013D00013074002639BE700EF40AF9BAA850A20FA +:1013E000EFF0BFDB93075002A5B713075002639DD0 +:1013F000E702EF406F9915E5814505452EC6EF40A0 +:10140000AF962A86B2450A20EFF0DFD57C54DE2B5A +:10141000918B8DC71C54DE23918B8DC39307600283 +:1014200005BF85450145D9BF130760026398E700F2 +:10143000EF40CF96AA850A20EFF09FDA7C5403276D +:101440000408DE2B09EF13F7071011CB18545A23A9 +:101450001377071009C7930770023CB031BD13F72B +:10146000072009CB18545A231377072001C7930785 +:101470009002E5B793F7074089CB1C54DE2393F71E +:10148000074081C79307B002C9BF9307F002F1B7C5 +:10149000397122DC26DA4ED652D406DE4AD8AE891D +:1014A000328AAA8497F0FA1FE780005F40594146CC +:1014B00081450A8597F0FA1FE78080EE35C403590D +:1014C000040063139906383093071002631FF70274 +:1014D0008327040899CF2C58A1C94A85EF10D0560C +:1014E0000545F2506254D2544259B259225A2161F0 +:1014F00082808A861306C4059305C40313058400FD +:10150000EF00D02E15E18A85C9BF2C5891CD9E29B8 +:10151000639C47012146C9054E8597F0FA1FE78075 +:1015200080F219C12C5855BF268597F0FA1FE78025 +:10153000A0562A84054555D44C54B1C59E296394C0 +:1015400047052146C9054E8597F0FA1FE780A0EFB1 +:101550008547631AF502B737002083C777DA89C752 +:101560004C54BC3D639AA70CBD452685EF105048EE +:10157000B737002083A7070D0145A5D71D4589452D +:1015800082970145B9BFB737002003C74745B73930 +:1015900000209389C909058B3E8929C3B7370020EC +:1015A000583083C7C744631BF702B735002019467C +:1015B0009385D5441305640097F0FA1FE780A0E8EF +:1015C0008547631DF50083A7490381C791451D45E4 +:1015D0008297BD452685EF10B04119B737370020F7 +:1015E0000347374583A7490331CB03474945098B57 +:1015F00009CB81C795451D4582972685EF1010457B +:10160000C5B581C78D451D4582974146814508086E +:1016100097F0FA1FE780C0D8B735002019469385A8 +:101620000511080897F0FA1FE780E0D00C082E8516 +:101630000A86EF2001108A8526854DB58545C5FFB0 +:101640006DBF797122D440594AD04ECE52CC06D6C5 +:1016500026D2AA892E8A3289630604622A211E2094 +:10166000638CA700A144B25022542685025992549B +:10167000F249624A45618280242099C09D44E5B7C1 +:101680009387F5FF93F7F70F3147E369F7FE37E7E5 +:1016900006008A0713074733BA979C4382871C5476 +:1016A000F1F3930530051305000497F0FA1FE78066 +:1016B000609908D445D903470900914763F4E700CE +:1016C0008D4455B7034719008547E3EBE7FE130642 +:1016D0000004CA8597F0FA1FE780E0C50C547054E7 +:1016E000A3020400D4415C4A858AFD8E5E2AF99BE0 +:1016F000D58F5EAAD841544AF59B0583058B858218 +:10170000F98E8606DD8E56AADC41584AED9A898309 +:10171000858B09837D8F0A07558F5AAAD4415C4A6D +:101720005D9B8D82858A8D83F58F8E07D98F5EAA0A +:10173000D841544A93F7F7EF2183058BA182F98EA4 +:10174000A206DD8E56AADC41584AA583858B2583E7 +:101750007D8F9317970013F7F6DF5D8F5AAAD44158 +:101760005C4AA982858AA983F58F9396A70093770F +:10177000F7BFD58F5EAAD441584AAD82858A2D83A2 +:10178000758FFD769386F67F2E07F58FD98F5EAA2B +:101790003C2A03250408A18BF1CFBC21A18BF9CBF6 +:1017A000E31205EC930530051305001097F0FA1FBE +:1017B000E78040892320A40801D57C54A3020400BB +:1017C00003471900943399E63DCF5C3093E7070156 +:1017D0005CB021A0A1475CB06DFB2285EFF06FE506 +:1017E0006C54BC29858B89CB1C54BC238D8B89C739 +:1017F0007C2093E717007CA08327040889C77C20FE +:1018000093E787007CA05C3005476398E70A414670 +:1018100081451305840097F0FA1FE78060B84146C0 +:1018200081451305840197F0FA1FE78060B7C14531 +:101830001305C403EF30DFA683270408ADCF930759 +:1018400000053CB00DB5B82B118B19E703472900F3 +:10185000118B19E38547ADBF9C23154783460900CB +:10186000B387E70237E706001307872EBA97B697C4 +:101870009C23B9BF19C597F0FA1FE780A0892320E0 +:1018800004087C54983311C70347190019C3E14772 +:1018900081B7B82B118B09E703472900118B5DDB5A +:1018A0009C23154783460900B387E70237E7060004 +:1018B0001307C72C65BFC14769B713F7870131CB41 +:1018C000C18B1305840041468DCF890597F0FA1F1F +:1018D000E78060A6414681451305840197F0FA1F11 +:1018E000E78000AC7C20C1451305C40393E74700A3 +:1018F0007CA0EF30FF9A8327040891CB9307200543 +:1019000089B7814597F0FA1FE78080A9E1B7CD47F5 +:101910000DBF09478945638AE700114785456386FE +:10192000E70019476396E7008D450A20EF406FF204 +:101930007C2093E747007CA08327040881C7930796 +:10194000100501B7C547F5BD4146CA851305C40456 +:1019500097F0FA1FE780209E3C3013076005639CD8 +:10196000E700B737002003C5F7258545EF10FFA82E +:1019700093075005F9B545476383E7029306C40210 +:101980001306C403930584002285EFD0DFCE2285A1 +:10199000EFF00FCDAA8411C1A144D1475DB5C9476D +:1019A0004DB59309C4054E854146CA8597F0FA1F87 +:1019B000E78060980325040869C53C30130790054B +:1019C0006398E7002285EFF0CFCC9307E00595BD43 +:1019D0001307A0056399E706B737002083A787445C +:1019E000E38E07C803A88700E30A08C87C30930584 +:1019F00005084E8613D73700229714279D8B0A8738 +:101A0000B3D6F640858A93E60608130505040298C6 +:101A100041468A851305C40497F0FA1FE780A0A207 +:101A200011E1D2842285EFF0CFC67C30CD4613077A +:101A3000E005850793F7F70F7CB063E4F600130722 +:101A4000600538B00DB11307C005E39EE7C0B73796 +:101A5000002083A78744E38307C29C47E38007C233 +:101A600093050508130984000A8781464A862E8556 +:101A700082970A200A86CA85EF408FE69307B00551 +:101A8000C9B38A864E86930584002285EFD0BFBEF7 +:101A900041469305C4040A8597F0FA1FE780A09A8F +:101AA0008547D284E311F5BC2285EFF08FBEAA846E +:101AB000E31A05BA9307100269B33830930770022E +:101AC000E31EF7BA7C5889EB93053005714597E022 +:101AD000FA1FE780205768D86858E30105BACA851D +:101AE000414697F0FA1FE7800085032944072285C5 +:101AF000EFD0BFC3230DA9009307800299B33830FC +:101B000093078002E31CF7B61E226858214693050E +:101B100029001EA9490597F0FA1FE780C0817C546F +:101B2000DE2B13F7072035C718545A2313770720E5 +:101B30002DC39307900231B3383093079002E31F0F +:101B4000F7B23C5C89EB930530055D4597E0FA1FE1 +:101B5000E780404F28DC285CE30205B24146CA8595 +:101B600097E0FA1FE780207D9307A002D9B93830AB +:101B70009307A002E314F7B01C22285C19469305D2 +:101B800019007CA9410597E0FA1FE780C07A7C54D0 +:101B9000DE2B93F70740A1C71C54DE2393F70740C1 +:101BA0009DCF9307B00271B938309307B002E317A5 +:101BB000F7AC7C5C89EB93053005514597E0FA1F43 +:101BC000E780404868DC685CE30E05A84146CA85AA +:101BD00097E0FA1FE78020767C5C7D5798CB03D591 +:101BE00029008145EFD06FF7BDBC38309307F00472 +:101BF000E3FAE7A603250408E30605A61306000496 +:101C0000CA851305050497E0FA1FE780C072228594 +:101C1000EFF04FABAA842285EFD03FA23C301307F0 +:101C20000005639FE700B737002003D6E90003C52E +:101C3000F72585450606EF103F9A9307300511B149 +:101C4000130710056395E70093076005DDBE1307D2 +:101C50002005E39AE7A09307C005E5B6383093075F +:101C6000E005E311F7A0032504084146CA8597E083 +:101C7000FA1FE780406C2285EFF0CFAAAA841DBD31 +:101C80000C228DB785478144E39FF59C03284600CD +:101C90003C32382214322E2110220145EF30DFBBB6 +:101CA000D9B28147C1463307F500B388F500182340 +:101CB00083C808003308F60085073347170123005F +:101CC000E800E392D7FE82800147BD471308F00F7A +:101CD0003306F5001422B388F500FD178606558FEC +:101CE0002380E800182293F7F70F1D83E39207FF84 +:101CF00082808147930800F8414893F6F70F3387B5 +:101D0000F50063FAC600B306F500942214A3850714 +:101D1000E39507FF82806395C60023001701C5BFC6 +:101D200023000700EDB701114AC856C22E89AA8ABE +:101D300093053005414506CE22CC26CA4EC652C474 +:101D4000328A97E0FA1FE780E02FAA8493053005D6 +:101D5000414597E0FA1FE780E02E2A84CD49A5C4CB +:101D600031CD4146814597E0FA1FE78060632686C2 +:101D7000A2855685EF10F11BAA8929E1838704000B +:101D800063D30706A2852685EFF01FF4B7E50600AA +:101D90004A86938585362285EFF0BFF083070900D8 +:101DA00063D80704A2854A85EFF01FF2B7E5060065 +:101DB0005286938585362285EFF0BFEE268597E023 +:101DC000FA1FE780203511C4228597E0FA1FE780CB +:101DD0006034F24062444E85D2444249B249224ABC +:101DE000924A05618280CA852685EFF0FFED7DB7B6 +:101DF000D2854A85EFF05FEDD1B781474146B30602 +:101E0000F5003387F500182303C80600850733471C +:101E1000070198A2E395C7FE8280011126CA4EC62B +:101E2000AE84AA8993053005130500034AC806CE7F +:101E300022CC328997E0FA1FE780C0202DC5130617 +:101E4000000381452A8497E0FA1FE78060554146E8 +:101E5000CE85228597E0FA1FE7806063A6850D4650 +:101E60001305D40197E0FA1FE780606213060402AD +:101E7000930504012285EF10D10BAA840D4693052A +:101E8000D4024A8597E0FA1FE7806060228597E0D8 +:101E9000FA1FE7802028F240624426854249D24456 +:101EA000B24905618280CD44FDB75D714EDE62D4DA +:101EB000AE892A8C9305300513050003A6C2CAC05B +:101EC00052DC56DA5AD85ED686C6A2C4B28B368B9E +:101ED000BA84BE8A4289468A97E0FA1FE780801654 +:101EE000630405101306000381452A8497E0FA1F56 +:101EF000E780004B4146E285228597E0FA1FE780A4 +:101F00000059414681450A8597E0FA1FE78040491C +:101F10001D46DE850A8597E0FA1FE78040571D467B +:101F2000DA851305710097E0FA1FE78040563339D0 +:101F30002001B33490004146814508082307210160 +:101F4000C48797E0FA1FE780A0451946D685480860 +:101F500097E0FA1FE780A0531946D2851305A10127 +:101F600097E0FA1FE780A052930404014146CE8512 +:101F7000268597E0FA1FE78080518A852685EFF055 +:101F8000DFE7930904024E86A6852285EF10617A69 +:101F90002A890DE94146CE85268597E0FA1FE7801C +:101FA00080390C082685EFF05FE54E86A6852285F0 +:101FB000EF1021782A8946454146CE8597E0FA1FE1 +:101FC000E780E04C228597E0FA1FE780A014B64036 +:101FD00026444A8596440649F259625AD25A425BCF +:101FE000B25B225C616182804D49D5B7011126CA7E +:101FF00052C4AA842E8A13050003930530054AC8EB +:102000004EC606CE22CC3289B68997E0FA1FE78009 +:10201000600335C52A84A685414697E0FA1FE7800C +:102020000047930404012146D285268597E0FA1FD4 +:10203000E780E045CA8521461305840197E0FA1F31 +:10204000E780E04413090402A6854A862285EF1042 +:10205000416EAA844146CA854E8597E0FA1FE78003 +:102060000043228597E0FA1FE780C00AF2406244ED +:1020700026854249D244B249224A05618280CD4434 +:10208000F5B739715AD05ECE2A8BAE8B4145930598 +:10209000300506DE26DA52D456D262CC66CA6AC849 +:1020A000368C328DBA8C22DC4AD84ED697E0FA1F95 +:1020B000E78040F9AA8A93053005414597E0FA1F69 +:1020C000E78040F82A8ACD44638E0A0859C52A86DB +:1020D000D6855A85EFF03FC5AA8441E193053005C6 +:1020E000414597E0FA1FE780E0F52A89930530051E +:1020F000414597E0FA1FE780E0F4AA89630A090ED8 +:102100006306050E1304FD0011841376FD0049C01B +:102110007D144204418035EE131544004E86D68569 +:102120005E95EFF01FB8414681454A8597E0FA1F5A +:10213000E7800027014D93170D01C18363F48708E1 +:10214000BDC04A8597E0FA1FE780C0FC638709009D +:102150004E8597E0FA1FE780E0FB568597E0FA1F6F +:10216000E78040FB63070A00528597E0FA1FE7808B +:1021700060FAF250625426854259D254B259225A1A +:10218000925A025BF24B624CD24C424D21618280EA +:102190000144131544008A855E95EFF09FB54E8685 +:1021A000D2850A85BDBF93154D000A86DE954A8506 +:1021B000EFF03FAF4A868A855A85EF108157AA848F +:1021C000050D95BFBDFC0A86CE854A85EFF07FAD33 +:1021D0004A868A855A85EF10C155AA846686CA85C3 +:1021E000628597E0FA1FE7800015A1BFCD4491BF3B +:1021F000CD44A9BF397162CC2A8C594526DA4AD818 +:102200004ED652D456D25AD05ECE06DE22DCAE8BEB +:10221000328BB68A3AC63E8AC28946898344010413 +:1022200097E0FA1FE78060012DCD9167938717E94A +:102230001EA185473CA12A8432472105630A0C046C +:10224000930710033CB01946814597E0FA1FE780D9 +:10225000201523036401A303540144A8231274012D +:10226000231744012318340123192401A285B73709 +:1022700000206254F250D2544259B259225A925A12 +:10228000025BF24B624C03C5C72521616F00DFE2A0 +:10229000A30104001946BA8597E0FA1FE780A00958 +:1022A0004DBFF2506254D2544259B259225A925AF6 +:1022B000025BF24B624C21618280797156CAAA8A14 +:1022C0001305100326D24AD04ECE52CC06D622D4C5 +:1022D0002EC6328AB684BA893E8997E0FA1FE78013 +:1022E000C0F539CDB2453746020193078500130684 +:1022F00016E92A845CC110C1230455010CB51946A6 +:10230000D285290597E0FA1FE780E002CE8504A870 +:1023100013051401268697E0FA1FE780C001230801 +:102320002403A285B73700202254B2509254025998 +:10233000F249624AD24A03C5C72545616F00DFD71B +:10234000B250225492540259F249624AD24A45612B +:102350008280011122CC2A84314506CE2EC632C499 +:1023600036C23AC097E0FA1FE78020ED15C99167A1 +:10237000938717E91EA1B2452246924602478D4730 +:102380003CA120B16244B73700204EA172A116A52E +:102390003AA5F240AA8503C5C72505616F00DFD1C4 +:1023A000F24062440561828001114AC82A89394598 +:1023B00026CA06CE22CC2EC6B28497E0FA1FE7804A +:1023C000C0E71DCDB2459167938727E91EA19147CC +:1023D0003CA1A30125014EA12A84A6851905214609 +:1023E00097E0FA1FE78020F5A285B7370020624406 +:1023F000F240D244424903C5C72505616F00DFCBD7 +:10240000F2406244D24442490561828001114AC8C7 +:102410002A89414526CA06CE22CC2EC6B28497E030 +:10242000FA1FE78080E115CD9167B245938727E9D0 +:102430001EA195472A843CA1231225012146190596 +:1024400097E0FA1FE78020EFA28566A4B737002047 +:102450006244F240D244424903C5F72505616F004A +:10246000BFC5F2406244D2444249056182800111F5 +:1024700022CC2A84394506CE2EC632C436C23AC092 +:1024800097E0FA1FE78060DB15C99167938717E92A +:102490001EA1B24522469246024799473CA142A15D +:1024A000B737002062446EA112A536A55AA5F240A6 +:1024B000AA8503C5C72505616F001FC0F2406244AD +:1024C00005618280797122D406D62A842EC632C450 +:1024D00036C23AC097E0FA1FE780005C19CDB245DA +:1024E000224692460247EC84F0852C081306F00F32 +:1024F0002285F486F887EFC0CFF1B25022544561AF +:102500008280011122CC2A84394506CE2EC632C4DF +:1025100036C23AC097E0FA1FE78020D215C991670A +:10252000938717E91EA1B2452246924602479D476E +:102530003CA142A1B737002062446EA112A536A586 +:102540005AA5F240AA8503C5C72505616F00DFB60D +:10255000F2406244056182805D713EC2835701068C +:102560002AC6130540024EDE52DC56DA5AD85ED631 +:1025700062D466D26AD06ECE86C6A2C4A6C2CAC0D3 +:102580002E8DB28C368C3AC4C28DC68B035B01058E +:10259000835A4105034A81058349C1053EC097E03E +:1025A000FA1FE78080C961CD1166130616E9324330 +:1025B00012A1130690022A8930A19304E900210593 +:1025C000130449019247224763020308930710034B +:1025D000A301F9001946814597E0FA1FE78040DC26 +:1025E00019468145268597E0FA1FE78060DB19468A +:1025F0008145228597E0FA1FE78080DA824723032E +:102600009901A303890123004903A300390323117E +:10261000F9022644B73700202312A901231D7901AE +:10262000231E6901231F5901B6409644F259625A8C +:10263000D25A425BB25B225C925C025DF24DCA856B +:1026400003C5C725064961616F001FA7BA85A301AD +:10265000090019463EC297E0FA1FE780C0CD9247B5 +:1026600026851946BE8597E0FA1FE780C0CC19463B +:10267000EE85228597E0FA1FE780E0CB41B7B640B0 +:10268000264496440649F259625AD25A425BB25BDA +:10269000225C925C025DF24D6161828079715EC65E +:1026A000AA8B61454ECE52CC56CA5AC862C406D6D1 +:1026B00022D426D24AD02E8BB28A368ABA893E8C50 +:1026C00097E0FA1FE78060B725CD37470B01130766 +:1026D00017E913048500AA8418C140C101491305F4 +:1026E000240023007401A30064011946D68597E0F5 +:1026F000FA1FE78040C413059400230444011946DF +:10270000CE8597E0FA1FE78000C3A3078401B830A5 +:1027100005091379F90F4104E363E9FC2254B73743 +:102720000020B2500259F249624AD24A424BB24B9F +:10273000224CA68503C5C725925445616F00DF97DB +:10274000B250225492540259F249624AD24A424B40 +:10275000B24B224C45618280011122CC2A84214552 +:1027600006CE2EC632C436C297E0FA1FE780E0AC30 +:1027700005C9224692469167938717E91EA1B24583 +:10278000B1473CA120B170A174B16244B7370020B9 +:102790004EA1F240AA8503C5C72505616F00DF91F0 +:1027A000F2406244056182805D71A6C28344C10526 +:1027B0002AC6CAC0138544024EDE52DC56DA5AD805 +:1027C0005ED662D466D26AD06ECE86C6A2C42EC44D +:1027D000B28D368DBA8C3E8CC28B468B835A0105E6 +:1027E000034A4105E649065997E0FA1FE780E0A44D +:1027F00059C93243A24537460D0193078500130698 +:1028000016E92A845CC12304650010C10CB5194681 +:10281000EE85290597E0FA1FE780E0B1CE85230811 +:10282000A401A308940123098401A3097401230AC4 +:102830006401231B5401230C440113059401194620 +:1028400097E0FA1FE78020AF1305440264BC08D06C +:10285000CA85268697E0FA1FE780E0ADA285B737E4 +:1028600000202644B64096440649F259625AD25A8C +:10287000425BB25B225C925C025DF24D03C5C725F0 +:1028800061616F007F83B640264496440649F25941 +:10289000625AD25A425BB25B225C925C025DF24D9C +:1028A00061618280411126C2AA84614506C622C4A4 +:1028B00097E0FA1FE78060983DC99167938717E911 +:1028C0001EA1930740023CA19C302A84938564009A +:1028D0003CB1BC30B8202105A207D98F231EF5FEDC +:1028E000DC201946230FF5FEDC30A30FF5FE97E040 +:1028F000FA1FE78040A4DC24A2857CA4FC24D83401 +:10290000A207D98F1EA8FC343CA89C283CB89C3850 +:102910005CA8BC285CB8BC387CA82244B73700202F +:10292000B240924403C5C72541016F00EFF8B240A1 +:10293000224492444101828079714AD03739002083 +:102940006AC01303C92506D622D426D24ECE52CC55 +:1029500056CA5AC85EC662C466C2034E73001303E9 +:10296000F00F425D63066E08AA8C13854801C68489 +:10297000C2893E8ABA8A368BB28B2E8C97E0FA1FB8 +:10298000E780A08B2A842DC59307000D1EA1D9478F +:102990003CA12312950123038501A30375012304A0 +:1029A00065012315550123064501A306350164A5DC +:1029B0001309C9259DC8510508C82686EA8597E0F0 +:1029C000FA1FE7804097A285225403457900B25050 +:1029D00092540259F249624AD24A424BB24B224CBB +:1029E000924C024D45616F002FED23280500E1BF99 +:1029F000B250225492540259F249624AD24A424B8E +:102A0000B24B224C924C024D45618280411122C44E +:102A10002A84194506C697E0FA1FE780008215C18F +:102A20009167938717E91EA1C1473CA142A1B7371F +:102A300000202244B240AA8503C5C72541016F008A +:102A4000AFE7B24022444101828041110D4506C6E4 +:102A500097D0FA1FE780607E15C1930710F91CA17B +:102A60009307E0031CB1C5473CA1B7370020B24033 +:102A7000AA8503C5C72541016F000FE4B24041019B +:102A80008280011122CC2A84294506CE2EC632C46A +:102A900036C297D0FA1FE780407A05C9B245924600 +:102AA0009167938717E91EA12246C9473CA14CA113 +:102AB00020B114A56244B737002072A1F240AA8564 +:102AC00003C5C72505616F002FDFF2406244056131 +:102AD000828001114AC82A892D4526CA06CE22CCF9 +:102AE0002EC6B28497D0FA1FE780207529C1B2455F +:102AF000930710F91CA19307E0031CB1CD473CA13B +:102B0000A30125014CA12A84A6851505194697E045 +:102B1000FA1FE7804082A285B73700206244F24066 +:102B2000D244424903C5C72505616F00EFD8F24082 +:102B30006244D244424905618280011122CC2A8438 +:102B4000214506CE2EC697D0FA1FE780006F05C537 +:102B5000B2459167938717E91EA1D1473CA16CA1AB +:102B600042A1B73700206244F240AA8503C5C725B9 +:102B700005616F006FD4F2406244056182804111AB +:102B800026C2AA84714506C622C497D0FA1FE780E0 +:102B9000C06A59C19167938717E91EA19307600224 +:102BA0003CA19C302A849385A4003CB1BC30B82061 +:102BB0003105A207D98F231CF5FEDC30D820194639 +:102BC000A207D98F231DF5FEFC30F820A207D98F6C +:102BD000231EF5FE9C24230FF5FE9C34A30FF5FE67 +:102BE00097D0FA1FE78020759C28A2853CA8BC28B6 +:102BF0009838A207D98F5EA8BC38A30B0400230C19 +:102C000004007CA82244B7370020B240924403C598 +:102C1000C72541016F004FCAB2402244924441018E +:102C20008280411126C2B73400209384C425F83035 +:102C300006C622C49307F00F630FF7022A841945D2 +:102C400097D0FA1FE780605FAA8515C5930700FD3E +:102C50001CA193077002A30005003CA11C303CB1ED +:102C60003C205CA13C305CB12244E830B24092444C +:102C700041016F006FC4B2402244924441018280FE +:102C8000B737002083C737261307F00FAA8563964E +:102C9000E70017D3FA1F6700E3471307000D1AA1D7 +:102CA0001307800238A13E856F000FC1411126C273 +:102CB000AA84714506C622C497D0FA1FE780E05760 +:102CC00059C59167938717E91EA1930760023CA13C +:102CD0009C302A849385A4003CB1BC30B8203105D7 +:102CE000A207D98F231CF5FEDC30D8201946A20795 +:102CF000D98F231DF5FEFC30F820A207D98F231EA3 +:102D0000F5FE9C24230FF5FE9C34A30FF5FE97D00F +:102D1000FA1FE78040629C28A2853CA8BC2898380E +:102D2000A207D98F5EA8BC387CA8DC287CB8DC3828 +:102D30001CACFC281CBCFC383CAC2244B73700203F +:102D4000B240924403C5C72541016F00EFB6B240BF +:102D50002244924441018280011122CC2A842145DF +:102D600006CE2EC632C497D0FA1FE780004D1DC193 +:102D70002246B245930710591EA120A170A16244BA +:102D8000B73700204EA1F240AA8503C5C7250561CB +:102D90006F008FB2F240624405618280011122CC43 +:102DA0002A84214506CE2EC632C497D0FA1FE7806A +:102DB000C04815C522469167938727E91EA1B245F1 +:102DC000A1473CA160A170B16244B73700204EA179 +:102DD000F240AA8503C5F72505616F00EFADF2400B +:102DE000624405618280011122CC2A84314506CEDD +:102DF0002EC632C436C23AC097D0FA1FE780E043ED +:102E000005C922468567B24592460247938717C98E +:102E10001EA120A170A16244B73700204EA116A5C3 +:102E20003AA5F240AA8503C5C72505616F00CFA862 +:102E3000F240624405618280011126CAAE844AC80C +:102E40002A891385C40006CE22CC32C697D0FA1F39 +:102E5000E780A03E0DCD8567938717E9B2451EA197 +:102E600024A1231225012A84310508C4268697D07F +:102E7000FA1FE780404CA285B73700206244F24039 +:102E8000D244424903C5C72505616F00EFA2F24055 +:102E90006244D244424905618280011122CC2A84D5 +:102EA000194506CE2EC697D0FA1FE780003905C512 +:102EB0008567938717F91EA1B24585473CB120A1CC +:102EC0006244B73700204EA1F240AA8503C5C7254A +:102ED00005616F006F9EF24062440561828041117E +:102EE00022C42A840D4506C697D0FA1FE780E03435 +:102EF0000DC1930710F91CA1E9471CB120A1224480 +:102F0000B7370020B240AA8503C5C72541016F002D +:102F1000AF9AB240224441018280011122CC2A841E +:102F2000214506CE2EC697D0FA1FE78000310DC589 +:102F30009167938727E91EA1B245930700033CA13F +:102F400060A16244B73700204EA1F240AA8503C5B4 +:102F5000F72505616F004F96F2406244056182805B +:102F60000111214506CE2EC632C497D0FA1FE78044 +:102F7000C02C05C58567B2452246938707391EA137 +:102F800085473CA1B73700204EA172A1F240AA8527 +:102F900003C5471C05616F002F92F24005618280D6 +:102FA000397122DC1304F5FF4AD852D456D25ECED2 +:102FB000420406DE26DA4ED65AD0894B2A8A328956 +:102FC000B68A418063937515B73B002083C74BE5F4 +:102FD0005E8B894495CF83C916009C229144A20937 +:102FE000B3E9F900B737002083D7C70AF51763D1D3 +:102FF000F9029307C6FF639DF90831452EC697D0A5 +:10300000FA1FE78080232A84B24519ED9304F00F5C +:10301000F250625426854259D254B259225A925AD9 +:10302000025BF24B216182804209135909014CA1D4 +:1030300023132501930700F91509A1651EA123118A +:10304000450185054A8597D0FA1FE780A0FF08C48F +:1030500015C983C74BE59385EAFF13562900FD1771 +:10306000238AFBE497D0FA1FE78080301C44A285B6 +:1030700089071CC4B737002003C5471CEF00CF8366 +:10308000814479B7228597D0FA1FE780A008BDBF99 +:103090009307D6FFE3CCF9F6B1473304F402B73413 +:1030A000002083A7841CA297B82719C7884309C5A5 +:1030B00097D0FA1FE780000613854900A1654205F5 +:1030C0008505418103AA841C97D0FA1FE78080F709 +:1030D00083A7841C229A2320AA00A29788431DD587 +:1030E0000547B8A783474BE54A86D685FD17230ACF +:1030F000FBE497D0FA1FE780002483A7841C3E944A +:103100002313240123123401A5BFB1473304F40271 +:10311000373B002083278B1CDA89A297FA23884348 +:103120005DC3DE23B306C700910763CED7083A9587 +:10313000D68597D0FA1FE780002003278B1C814497 +:1031400022977E23CA97C207C1837EA35A23110701 +:10315000E390E7EC314597D0FA1FE780000EAA858F +:103160000DCD930700F91EA183278B1C2302750147 +:1031700023114501A297FA239C437AA11CC5B737B6 +:10318000002003C5471CEFF03EF383278B1C3E94C1 +:103190002313040023050400A5BD83278B1CA297DD +:1031A000884311C997D0FA1FE780C0F683278B1C8C +:1031B000A29723A0070083A7891C3E942313040031 +:1031C0002305040075BD11C997D0FA1FE78080F46C +:1031D00083A7891CA29723A0070083A7891C854485 +:1031E0003E9423130400230504001DB56F301166BF +:1031F0006F3051676F40E1356F40C1596F30B16931 +:10320000411106C6EF305166B2400145410182804E +:103210006F30F16A6F30D16C6F30916F6F307171B8 +:103220006F3031736F30F1746F30B1766F30717809 +:103230006F30317A6F30D17B6F30917D1C3210222C +:10324000A2075D8E6F30F17E6F4021006F408102DA +:103250006F40A12A6F40212D6F4061326F40413491 +:103260006F4021366F4001386F40E1396F40C13BFC +:10327000411122C60344C10226C48344010303430F +:103280000101030E4101834E8101034FC101834FB0 +:103290000102834241028343810222D6324426D86E +:1032A000A2441ED416D27ED07ACE76CC72CA1AC868 +:1032B00041016F40615B6F4021396F40013B6F40BE +:1032C000E13C6F40C13E6F4081416F4061436F40C0 +:1032D00041456F4021476F4001496F60112A6F607F +:1032E000913A6F60113D6F40A14B6F40814D52216B +:1032F0002E210A216F40014F50212E210A216F40BB +:1033000021511825762152212C210A216F40015389 +:103310006F605142411122C406C62A847E21582181 +:10332000543130212C310A21EF60916F01E90C24D6 +:103330000A202244B24041016F60917AB240224497 +:10334000410182806F6051746F7081171307A5FF70 +:10335000420785672A8841831385A7C7636CE50206 +:10336000138707C801456368B70263E605031307BF +:10337000301F6362C702138766FF4207418393874A +:1033800067C763EAE70005063306B6028E063325F3 +:10339000D600828001458280B7E606008147938689 +:1033A00086371308F00F3387F60010231317060132 +:1033B00041836364E50063130601828092216364A4 +:1033C000C7009AA18280850793F7F70FE9BF4111E3 +:1033D0009397050122C406C626C2C1872E8463D6F0 +:1033E000070297D0FA1FE780A0EAAA8401CD1C212A +:1033F000054793C707086364F700EFA0904D268543 +:10340000EFF0BEC62165218D21A893F7150091CF5D +:10341000B737002083A7872D91C3829713451400E7 +:10342000B240224492444101828093F7250091CB1F +:10343000B737002083A7C72D91C382971345240077 +:10344000C5B793F7850099CBB737002083A7872EA0 +:10345000BC5B91C3829713458400D9B793F74500AD +:1034600099CBB737002083A7872EFC5791C382974B +:103470001345440075B793F7050281CFB737002095 +:1034800083A7C72F83A7070991C382971345040217 +:1034900041BF93F7050181CFB737002083A7C72F1E +:1034A00083A7C70891C382971345040195BF9397DB +:1034B00025010145E3D607F6B73700209387872615 +:1034C000F433F023CC33C823EF40015E096525BFF8 +:1034D000411126C2B7340020B737002013068012EE +:1034E000814522C42A841385842606C623AA073868 +:1034F0004AC097D0FA1FE780A0EA0145EF20A05705 +:103500000145EF20805EB7370020A3878704B70707 +:10351000D70713848426B5075CC8B7B70D0D93870A +:1035200007131CCCB7B7D707938707135CCCED778D +:10353000938707137D471EB02320E40E814703279E +:10354000040D2322F40EB7872D079387F79F5D8F15 +:103550008327440D89669386E6B937390020D58FD5 +:103560001309C909232AF40C232EF40C8347E9001C +:103570002328E40C232CE40CA300F40CA304F40C87 +:10358000F977FD172313F4102314F410FD472305D6 +:10359000F41085679387F7F03EBC5EBCA30C040271 +:1035A000EF004FF39307C01C231FF4068547A30FBA +:1035B000F402835749000357090128B0A983A304E3 +:1035C000F4088D472311F404B717070693870744BF +:1035D0003CC4232204049306B00F9387842663F42B +:1035E000E6001307B00F93150701BAB7FAB703C780 +:1035F000C703C1811386E500118B35CB1387A5085E +:103600000E0783C6D70342074183DAB7918ABDC24A +:103610009386A5088E06C206C18296BB6D4593842B +:103620008426AE8663F3A500ED46B6B093058014FC +:10363000BA866374B700930680141307C01C2390E6 +:10364000E704370716000E0613070790D6B3F2B348 +:1036500096B7D8DBEF00712EEF40E030EFF0B0749A +:103660002244B2409244024941016FA010791317DD +:10367000360041BF9316360079BF397122DC37041A +:10368000400026DA4ED6AE84AA899305E4FF0545AC +:1036900006DE4AD8EF00EFEC498C13170401418392 +:1036A00021839317840013590401D98F2316010035 +:1036B0001379F90F10088A854E857C87A3062101AE +:1036C00002C002C202C402C802CA02CC02CEEF008B +:1036D00041068347E1010347D101A0B0A207420799 +:1036E000BA970347F1012180C0A0BA97F250625403 +:1036F0009CA013D78700C183A382240198B0BCA0EB +:103700004259D254B25921618280B73500203735F1 +:103710000020011119469385450B1305053506CE8A +:1037200022CC26CA4AC891644EC697D0FA1FE780B9 +:1037300080C09385F4FF0145EF006FE02A84FD55BA +:103740000145EF000FE2A287FD147D5933F7970082 +:10375000B366E500D5CA631425016307970A3734B9 +:10376000002013078426230CF70EA18393E707FCA0 +:103770009169C164232AA70EA30CF70E13048426B3 +:10378000FD19FD14CE850145EF006FDB2A89FD553B +:103790000145EF000FDDB3672501EDD7FD57631439 +:1037A000F500E30139FF93570501230EF40E9357FB +:1037B0008501A30EF40E8317840E231DA40E230F80 +:1037C000240F4205135989001379F9034185A30F8A +:1037D000240F658DE58F6312F5020317C40F83175D +:1037E000A40E658FE58F631AF7000317E40F8317A4 +:1037F000C40E658FE58FE307F7F8F2406244D244C8 +:103800004249B24905618280A6850145EF002FD368 +:103810002A84FD550145EF00CFD4A28705BF411191 +:1038200026C2B734002006C622C44AC09387842625 +:1038300003C7E70383C7F703636AF70001442285E0 +:10384000B240224492440249410182802A89930570 +:1038500010241305000C97C0FA1FE780A07E2A846D +:1038600071DD1306000C81459384842697D0FA1FDE +:10387000E78000B363140900C1571CA4FC4CA1EB02 +:10388000A0CCE0CCA0D0232004008547238FF402F5 +:1038900085471CB4930700F93CB4B73700209387E1 +:1038A000473C9853DC5378C43CC8FD577CA8A30E12 +:1038B000F40683C7A404230AF40AB737002003C51B +:1038C000070B2304A406EFF0307448B88DBFBC503A +:1038D00080C3A0D02320040083C7E40385077DB7FD +:1038E0007C2D411122C406C699071CB97C4511479D +:1038F00018A998A37C4518392A8498B3834755039F +:10390000858B91E70347450389476317F7007844A0 +:103910001C2393E707041CA368449305640319461A +:10392000090597D0FA1FE78000A16844722C4C5417 +:10393000210597D0FA1FE78000A0930730F93CB427 +:10394000B24022444101828041114AC037390020EF +:103950009307892683A7870B06C622C426C299E34C +:10396000054531AAAA8413098926EF000139832766 +:10397000890B8297EF3090572A847DD1DC50AC4878 +:103980002324F508B8349307A0096310F71085477E +:103990002300F51483C734062303F514A303F51499 +:1039A000FC3598290148A2074207BA97F825154621 +:1039B000F905BA9703C735FF130584136207BA9751 +:1039C000232CF40883C755FF03C765FFA2074207EE +:1039D000BA9703C745FFBA97232EF40883C775FF2C +:1039E000A30BF40283C795FF03C785FFA207D98FF6 +:1039F0001EBC83C7B5FF03C7A5FFA207D98F3EBC76 +:103A000083C7D5FF03C7C5FFA207D98F5EBC83C795 +:103A1000F5FF03C7E5FF232E0413A207D98F7EBC51 +:103A20008147232CF41297D0FA1FE780C090B84842 +:103A300083473702FD8BA30AF40203473702ED17D1 +:103A400093F7F70F15832308E4022D476365F70208 +:103A50003E3C05679306A7C7E917C207C18363EC1D +:103A6000F600563C9307301F63E7D7007E3C1307F0 +:103A700007C8637BF7020A24EF3050670145B24064 +:103A8000224492440249410182808327890D139781 +:103A90001701E35707F0FC4498239C21F98F958385 +:103AA000858B2300F514EDBD8327C90B22858297F2 +:103AB0008327090E0A24294693F7072091E3054638 +:103AC00093050008EFA060788327890D13971701ED +:103AD000635807000A24514693050008EFA0E076DA +:103AE00083278905FC4B13974700E35B07E688248F +:103AF000A38B0400494693050008EFA000758DB51F +:103B0000B737002083C79726411122C406C626C2B4 +:103B10004AC02A8485EB182885476312F70E83472D +:103B2000D40303475404858B6319F70C1946930596 +:103B300064041305E40397D0FA1FE780C090B33400 +:103B4000A00089A883475504D5C38347B50413074C +:103B5000000493F7070C639BE708085939C1130960 +:103B60006404CA851305A502EFA0A07E8547AA8438 +:103B70006319F502085889472302F4043C311946B9 +:103B8000CA8593E72700A302F404510597C0FA1FE2 +:103B9000E780607AB240224426850249924441017E +:103BA0008280182885476303F70483470406918BB6 +:103BB00095EF8347C4039DEB1305440497E0FA1F78 +:103BC000E780203708D81DC189472302F4043C311F +:103BD00019469305640493E72700A302F4045105F2 +:103BE00097C0FA1FE780207585446DB78347C403EB +:103BF000898B95D31C589C3399FF814461BF8347BF +:103C00000406918B89FF5C3413F7170005C3343821 +:103C10000D47639DE60068402C442244B240924424 +:103C20000249410117E3FA1F67008350898BCDDFFA +:103C300038389547E31AF7FAF9BF4111B737002032 +:103C400022C406C693878726238E0706930710F99A +:103C50003CB5B737002003A407390DC0B7370020A3 +:103C600003C5F7048545EFF07ECD93071027330594 +:103C7000F50222832244B24041010283B240224431 +:103C8000410182803C2D91C738256314F7006FF005 +:103C9000DFFA183D01CF3425638FE60038A5B7372A +:103CA000002003C5F70489456FF02EF5EDD33825C4 +:103CB00079FF3CA5EDB7E1DFEDBF2C4931479C31E1 +:103CC00093F7F7033CA96386E700930700083E8556 +:103CD00082809C210D47BD8B3CB9E398E7FE4111E2 +:103CE0004AC01309650322C419462A84A1054A85DE +:103CF00006C626C297C0FA1FE780E0749147630B9F +:103D0000051C2C481946130564049C2189059987D4 +:103D1000858BA302F40497C0FA1FE780C061228557 +:103D2000EFF01FDEA1476307051A64449D471CA8F6 +:103D30009CA08547BCA0BCB0CA8519461385440029 +:103D400097C0FA1FE780205FBC20B830014999076F +:103D500093F7F70F13678700BCA0B8B07844BA9701 +:103D60000357C406B8B3BC207844834614063E9774 +:103D70008357C4069206A183BD8BD58F5CA3B82060 +:103D800009071377F70FB8A0762CDDC68347040622 +:103D9000795993F7070491C375593309E9401379A9 +:103DA000F90F637BD908834634067519894713795F +:103DB000F90F6398F6128347B406639D0712916763 +:103DC00093870729F9469387771BB3C7D7023736FE +:103DD0000020130686268345C60793E50501230EBA +:103DE000B606373600200326C63E85650CC6B38668 +:103DF000D702860634D2B43093E60601B4B07444D8 +:103E000003462406369730B3B420784436975CA333 +:103E1000B8207444A187BA96034734061607D98F91 +:103E2000DCB2BC208D07BCA05C54CA973CDC7E2C65 +:103E3000B38727412319F4068347040693F7070441 +:103E400089CFB8307C44B42013670704B8B0583821 +:103E5000B697B8B3BC208507BCA0A820722C4C54E0 +:103E60009307350068443E9551CA6369C90897C0F5 +:103E7000FA1FE780404C0349E401B8209377F70329 +:103E800085073E99A3082401B8A083475403858B76 +:103E900091E70347440389476317F70078441C23DD +:103EA00093E707041CA37C440C388CB3930790F968 +:103EB0003CB4034534068347B4065D8DEFF0502FC4 +:103EC000014681450D4597E0FA1FE780A06AEFF0B3 +:103ED000D0628147B2402244924402493E8541016A +:103EE0008280054693078042E38EC6EC8567938700 +:103EF0008784C9BD85679387E71BE9B54A8697C064 +:103F0000FA1FE780404395BF2C49130720029C31DC +:103F100093F7F7033CA9639CE710411122C406C63E +:103F200026C29C2115472A84BD8B3CB9639AE702BF +:103F30001946A1051305650397C0FA1FE780A05035 +:103F4000914765C12C481946130564049C218905D5 +:103F50009987858BA302F40497C0FA1FE780A03DE0 +:103F60002285EFF0FFB9A1474DCDB737002083A7D9 +:103F7000070982976444A14748D01CA89CA08547A4 +:103F8000BCA0BCB01946930564031385440097C0D8 +:103F9000FA1FE780403ABC209907BCA0BC3093E7E9 +:103FA0002700BCB08347540491C778441C2393E78F +:103FB00007F81CA31946930564041385A40097C051 +:103FC000FA1FE7804037BC20990793F7F70F13F7E4 +:103FD000F703050718B8BCA083475403858B91E706 +:103FE0000347440389476317F70078441C2393E78A +:103FF00007041CA37C440C388CB39307A0F93CB491 +:10400000034534068347B4065D8DEFF0701A014610 +:1040100081450D4597E0FA1FE780C055EFF0F04D60 +:104020008147B240224492443E85410182809307F9 +:1040300000083E85828041114AC03739002083271D +:10404000C93E22C426C21307000A06C62A84F8D332 +:104050000945EFF0B052B737002083A7873BB7057B +:104060000082FD15D857719B13671700D8D7032618 +:10407000C93E58421367170058C203478406137796 +:10408000F70393169701D8576D8F558FD8D798435C +:10409000B70533001377F7E798C398431377F7E72B +:1040A0001367071098C337370020032707441447C6 +:1040B000CD8E14C79306A00534CA5457F59A54D729 +:1040C000034724069376F7079843137707F8558F2D +:1040D00098C337C7898E130767ED98C737575500C0 +:1040E000644413075755D8C39D471CA89CA0854717 +:1040F000BCA0A147BCB00357C4067C44D8A3BC20D5 +:104100007844834614063E978357C4069206A183DB +:10411000BD8BD58F5CA3A8209307E00F090513750D +:10412000F50FA8A003562407898F63C7C7047C44F2 +:104130002C5C0D053E9597C0FA1FE780C01FB82084 +:10414000834724079376F7038507B6971CB8B8A072 +:1041500083475403858B91E70347440389476317DB +:10416000F70078441C2393E707041CA37C44183809 +:1041700098B3930780F93CB48327C93E7844B8DBF1 +:10418000B737002083C7070F81EB375505008145FE +:1041900013052532EFF05E84B73700209387473C44 +:1041A000A3810700834534068347B40610382244B0 +:1041B000B24092440249DD8D0145410117E3FA1FE7 +:1041C0006700433B397152D4373A00208326CA3EF8 +:1041D00022DC26DA56D206DE4AD84ED69307000AEB +:1041E000FCD2B737002083A7873BB7053300B73A27 +:1041F0000020D8572A84938A4A0E719B13671700B0 +:10420000D8D798431377F7E798C398431377F7E71E +:104210001367071098C33737002003270744104758 +:104220004D8E10C71306A005B0CA5057759A50D7C7 +:10423000034725061376F7079843137707F8518F3E +:1042400098C3DC420D4793E71700DCC264459D47E5 +:104250001CA985469CA0A3810400B4A08347F50552 +:104260006385E7001947639DE7488547BCB0194659 +:10427000930564031385440097C0FA1FE780A00BE1 +:10428000BC209907BCA00347F4059947631FF702B8 +:10429000BC301385A40093E72700BCB083475403C8 +:1042A000898B638107320C58BC29638D073019460E +:1042B000D10597C0FA1FE780000878441C2393E7D4 +:1042C00007F81CA3BC209907BCA0BC30B82093E71A +:1042D0008700BCB07C44BA970357C406B8B3BC206F +:1042E0007844834614063E978357C4069206A183FA +:1042F000BD8BD58F5CA3B420890693F6F60FB4A0CE +:104300005A2C630E072E83470406795993F7070446 +:1043100091C375597C483309D9401379F90F918BB2 +:1043200081C739191379F90F8149637BE9088347FC +:104330003406751909471379F90F6395E72A8347FE +:10434000B406639A072A916993890929F9479389E1 +:10435000791BB3C9F90237370020130787260346B4 +:10436000C70713660601230EC7060327CA3E056664 +:1043700010C7B387F90286073CD3BC3093E7070127 +:10438000BCB07C4403472406BE96B8B2B8207C4437 +:1043900093D68940BA9723823701BC2078443E9750 +:1043A000834734069607D58F5CB3BC208D07BCA02D +:1043B0001C54CA973CDC5E2CB38727412319F406B2 +:1043C0007C48914613F7C700630BD700B146631BC7 +:1043D000D70E834614060347F4076395E60EA18BB8 +:1043E00063860722B737002083A70709832984093A +:1043F000829763E9A920B7470F0093870724338585 +:10440000A940B335F50203D68A0081463305F5028B +:10441000EF9011199307B012AA8963D5A70A4946EC +:104420008145680097C0FA1FE78080F7B7C703008F +:10443000938747FC63DA3729938969099306C01289 +:10444000B3C9D902B2470967D98F7D17B3F9E9001B +:104450007977F98FB3E93701835764084EC668440A +:10446000139707013C866C00D98F3EC68327040A48 +:104470000327C4083EC88327440A131687006183B4 +:1044800093F6F701B737002083C7B7269D8B9607B1 +:10449000D58FD18F3ECA832704094946A2075D8F75 +:1044A000835784083ACCFC86BC208D073E9597C084 +:1044B000FA1FE78040E8BC3093E70702BCB0BC209D +:1044C000C907BCA08347040693F7070489CFB83017 +:1044D0007C44B42013670704B8B05838B697B8B313 +:1044E000BC208507BCA0BC30684493F707029DCF71 +:1044F0000327C40A05CFB420254693873600AA9720 +:1045000090A31306200390B31023A906B0A3103381 +:10451000B0B33023D0A33033D0B35023F0A3503303 +:10452000F0B3702390A7783398B7B4A0522C6316D9 +:10453000061A0149B4208347E40513F7F60305077B +:104540003A999A07D58FA3082401BCA08347540346 +:10455000858B91E70347440389476317F700784445 +:104560001C2393E707041CA37C44183898B39307D3 +:1045700060F93CB478448327CA3EB8DB83C7CA00DD +:1045800081EB37550500814513052532EFF0CEC488 +:10459000B73700209387473C83453406A381070043 +:1045A0008347B40610380145DD8D97E0FA1FE78098 +:1045B00060FCF2506254D2544259B259225A925A73 +:1045C000216182808347D40391C778441C2393E7F9 +:1045D00007F81CA319469305E40397C0FA1FE78068 +:1045E00080D5CDB1054793098042E381E7D685693F +:1045F00093898984A1BB85699389E91B81BB814922 +:1046000001497DBB83A74A00BE99F5B3BC30834600 +:104610003406C18BA9C3F9470947B389F902835707 +:1046200024076390E6020347B40601CB9387771013 +:104630008607BE9993894929DDB39387A7078E071B +:10464000CDBF05476396E600938787078587D5B773 +:1046500093870707F9BFBC205A2C3E978947639C74 +:10466000F6048347B406A1C7930777188607373740 +:104670000020130787260346D7079389875293871D +:10468000575413661600A30EC7060327CA3E2166B9 +:1046900010C77946B3C7C702B387C70286077CD75E +:1046A000834714062300D408A30FF4068DBB930799 +:1046B000A70F8E076DBF05469307070FE399C6FA4C +:1046C0009307870F858765B7F947BD09B3C9F90215 +:1046D000B247CE0993D93901A5BBBC200C548D0734 +:1046E0003E956369C90097C0FA1FE780C0C40349BB +:1046F000C40189B54A8697C0FA1FE780C0C31DBDB3 +:104700001387E7FF1377D70F631E0718B4B093051D +:10471000650319461385440097C0FA1FE780A0C1BE +:10472000BC20B830B7390020990793F7F70F13670B +:104730008700BCA0B8B07844938989260149BA970C +:104740000357C406B8B3BC207844834614063E978A +:104750008357C4069206A183BD8BD58F5CA3B82076 +:10476000914709071377F70FB8A08346F4056392C2 +:10477000F60A83470406795993F7070491C37559DC +:104780005E2C3309E9401379F90F6374F908834605 +:104790003406751989471379F90F6390F60E83472C +:1047A000B406EDE7916793870729F9469387771B4E +:1047B000B3C7D70203C6C907856513660601238EF2 +:1047C000C9060326CA3E0CC6B386D702860634D273 +:1047D000B43093E60601B4B0744403462406369719 +:1047E00030B3B420784436975CA3B8207444A187D2 +:1047F000BA96034734061607D98FDCB2BC208D0762 +:10480000BCA01C54CA973CDC5E2CB38727412319FB +:10481000F4068347040693F7070489CFBC30B82019 +:1048200093E70704BCB07C44BA975838B8B3BC20AF +:104830008507BCA00347F40591476313F706522C84 +:1048400025C2A8200C549307350068443E95636345 +:10485000C90497C0FA1FE78000AE0349C4010347AB +:10486000F4059147631CF72283C7C90793F7070F25 +:1048700093E75700238EF90675B9054693078042E2 +:10488000E385C6F285679387878405B78567938735 +:10489000E71B21BF4A8697C0FA1FE780C0A9C1B7AE +:1048A000014975BF93F7B70F0547E394E7C8BCB05C +:1048B0009305650319461385440097C0FA1FE780E6 +:1048C00080A7BC209907BCA0BC3093E72700BCB0F0 +:1048D0008347D40391C778441C2393E707F81CA3AC +:1048E000834754031385A400898B638407160C58EF +:1048F000BC29638007161946D10597C0FA1FE780C7 +:1049000080A378441C2393E707F81CA3BC20B8308D +:10491000B7390020990793F7F70F13678700BCA0FA +:10492000B8B07844938989260149BA970357C406D9 +:10493000B8B3BC207844834614063E978357C40618 +:104940009206A183BD8BD58F5CA3B820854709074C +:104950001377F70FB8A08346F4056392F60A8347EE +:104960000406795993F7070491C375595E2C3309EE +:10497000E9401379F90F6374F90883463406751911 +:1049800089471379F90F6396F60E8347B406FDEB5A +:10499000916793870729F9469387771BB3C7D70297 +:1049A00003C6C907856513660601238EC90603265B +:1049B000CA3E0CC6B386D702860634D2B43093E61C +:1049C0000601B4B0744403462406369730B3B420CD +:1049D000784436975CA3B8207444A187BA960347FD +:1049E00034061607D98FDCB2BC208D07BCA01C543E +:1049F000CA973CDC5E2CB38727412319F406834712 +:104A0000040693F7070489CFBC30B82093E7070466 +:104A1000BCB07C44BA975838B8B3BC208507BCA05A +:104A20000347F40585476319F706522C35C6A820BD +:104A30000C549307350068443E956369C90497C0D8 +:104A4000FA1FE780408F0349C4010347F4058547F7 +:104A500011BD8347D40391C778441C2393E707F81B +:104A60001CA319469305E40397C0FA1FE780A08CA6 +:104A700071BD054693078042E38FC6F08567938733 +:104A8000878411BF85679387E71B31B74A8697C034 +:104A9000FA1FE780408A55BF014945BF83C7C90750 +:104AA00093F7070F93E76700F1B3011152C4373A48 +:104AB000002056C2930A8A2683A78A0A06CE22CCF1 +:104AC00026CA4AC84EC66394071E2A840945EFF0D9 +:104AD000E02A373900200326C93E9307000AB73978 +:104AE00000207CD283A7893BB7053300130A8A26AE +:104AF000D857719B13671700D8D798431377F7E7F8 +:104B000098C398431377F7E71367071098C33737AD +:104B10000020032707441447CD8E14C79306A00531 +:104B200034CA5457F59A54D738249376F7079843E4 +:104B3000137707F8558F98C37C247844BD8B1CA845 +:104B40001CA31D4764446390E7368547A381040096 +:104B5000BCA00347F4058D45631AB7245E2C63910E +:104B600007167C481147B18B638CE7143147639873 +:104B7000E700034714068347F4076303F7148547E8 +:104B8000BCB01946930564031385440097B0FA1F1F +:104B9000E780607ABC20990793F7F70FBCA0034722 +:104BA00004061377070401CFB83013670704B8B0C1 +:104BB0007844BA975838B8B3BC208507BCA0230EF8 +:104BC0000A06B4208347E40513F7F60305079A079E +:104BD000D58F18B8BCA0930740F93CB48347540361 +:104BE000858B91E70347440389476317F7007844AF +:104BF0001C2393E707041CA37C440C383705008270 +:104C00007D158CB38326C93EB7340020DC4293E780 +:104C10001700DCC28347840603A6893B93F7F7039A +:104C2000139797015C56E98FD98F5CD6B7C7898EE9 +:104C3000938767ED1CC6B7575500938757555CC2DD +:104C40008347A406034A44060947336AFA00938758 +:104C5000443CF8B3A38107007C449384443CBCDA11 +:104C6000B737002083C7070F638D072CFC52FDFF69 +:104C7000528523810400EFE0B0533755050013053A +:104C8000253297C0FA1FE78080B083A7893BB7061B +:104C900080009843558F98C3D857719BD8D78327E6 +:104CA000C93EA3820400A3800400094798C3F240D0 +:104CB0006244D2444249B249224A924A0561828002 +:104CC000A147BCB08357C406DCA08357C406034782 +:104CD00014067444A1831207BD8BD98FDCB2B420B3 +:104CE0000547890693F6F60FB4A08347CA07032643 +:104CF000C93E6310F7060347440689476312F71A53 +:104D00000347A406938766008E07630707189387F7 +:104D1000770D8607231AF40683574407182CF945A4 +:104D20009387070AB387E7020945230EAA0605659C +:104D300008C6938707FBC207C18393877716B3C75B +:104D4000B70213970701B387B702418386073CD2A6 +:104D50000DA03852F94705833357F7023C526C5285 +:104D60008583FD8BAE977CD28D47230EFA064207D2 +:104D70004183BC3093E70701BCB07C44BE968347B7 +:104D8000240693E70704BCB2B4207C44B697D8A3AA +:104D9000B4207C4421837D8BB697834634069606E7 +:104DA000558FD8B3BC208D07BCA021BD9946631A8E +:104DB000D7085A2C59E7BCB013854400194693050F +:104DC000640397B0FA1FE7800057BC201385A40046 +:104DD0009907BCA0BC3093E72700BCB083475403BD +:104DE000898BA1C30C58BC298DCF1946D10597B02A +:104DF000FA1FE780405478441C2393E707F81CA36C +:104E0000BC20990793F7F70FBCA00347040613775C +:104E10000704E30607DAB430784493E60604B4B036 +:104E200049BB8347D40391C778441C2393E707F811 +:104E30001CA319469305E40397B0FA1FE780A04F1F +:104E4000C1B7A147BCB08357C406DCA08357C406D2 +:104E5000034714067444A1831207BD8BD98FDCB2BB +:104E6000B4200547890693F6F60FB4A08347CA0716 +:104E70000326C93EE301F7E83852F9470583335763 +:104E8000F7023C5268528583FD8BAA977CD2238E11 +:104E9000BA0642074183F1BD9387A7048E079DBDE3 +:104EA0009387E600E5BF05476393E708B1471CB861 +:104EB00083475403898BB9CB0C58BC29A1CB194625 +:104EC000D1051385840097B0FA1FE780C046784467 +:104ED0001C2393E707F81CA3684419469305640351 +:104EE000090597B0FA1FE780004583278A0D1397BD +:104EF0001701635A07007C24B98B91E778441C237F +:104F000093E707021CA3930720F9C1B98347D40391 +:104F100089C79C2093E707F89CA06844194693052D +:104F2000E403210597B0FA1FE780E04075B7522CE3 +:104F30000C54138584009307660093F7F7031CB89D +:104F4000D5B737550500814513052532EFE0DEA8BA +:104F500010386244F240D2444249B249924AD28562 +:104F6000224A0145056117D3FA1F6700A360B737CE +:104F7000002041119387872622C4E05306C60547C7 +:104F800054246390E60283C7C70711476315F700EF +:104F90002285EFE09FCA22852244B24041016FF092 +:104FA000DFB0B240224441018280B737002083A79E +:104FB000472C99E33E8582809827E30DA7FE9C430A +:104FC000CDBF011106CE22CC26CA4AC84EC6EFF08C +:104FD000DFFD11E98144F240624426854249D24412 +:104FE000B2490561828083475503373900202A84FE +:104FF0009304892689EFB735002019469385053536 +:105000001305640397B0FA1FE780E032B5A00547A7 +:105010006397E700BC20639C0716C9446DBF1C5909 +:10502000B9E78347C503230A050291EB03475403FD +:105030008547230AF4028947E31EF7FC6DBF130579 +:10504000C50397D0FA1FE78000EA08D80DC1EF909A +:1050500020360C58BC2581CF8947230AF402194613 +:10506000B1051305640397B0FA1FE780C02C03470E +:1050700044038947E31CF7FA9C3095CB8347C4036C +:105080009DC783473404130700041305C40393F733 +:10509000070C6394E71097D0FA1FE78080E908D8DF +:1050A0001C5891C7BC2B81C78947230EF4024424A6 +:1050B00095F085475CA41CB4B737002003C7370BB5 +:1050C000230409260349E40093170701231BE40680 +:1050D0009376F9001947C1836379D706834644065E +:1050E0000947938947006394E6009389C703B7375C +:1050F000002003C7E73C562C834534061305A00F58 +:10510000373600209307E70B231B3407138726004D +:10511000B3D6A6020355C60E09460E076394C5080A +:105120001307A7040E073E979397A600BA97374632 +:105130000F00130606248146B3A5A7023305F50226 +:10514000EF8011464E95231BA4068357E4062318CF +:105150000406B1CF68289307F00F6306F500EFE06F +:105160006EF6FD577CA80356E4069306640112060A +:1051700037650500A2851305459EEFE0AEDAB73727 +:10518000002003C5F7048545EFE02EA7A9B5B73584 +:105190000020194693856535A5B597D0FA1FE7809D +:1051A00080D4F5BD6D073E979397960041B785472C +:1051B000E317F9FC68289307F00F6306F500EFE0AA +:1051C0006EF0FD577CA80566930664011306068001 +:1051D00045B7411106C622C426C22A84EFE0F03149 +:1051E000228523060400A3050400A3040400B734A9 +:1051F0000020EFE09FA49384C404A8308545EFE02D +:10520000AEE5A8308945EFE02EE568289307F00F5A +:105210006306F500EFE00EEBFD577CA8B240224498 +:105220009244410182802C49411106C622C426C203 +:105230004AC09C317D4793F7F7033CA9E91793F7E0 +:10524000F70F637BF70093040008B24022442685E1 +:1052500002499244410182809C21BD8B3CB9F517E3 +:1052600093F7D70FEDF32A841946A10513056503BB +:1052700097B0FA1FE780201D914461D92C488547DB +:105280002302F4049C21194689059987858BA30282 +:10529000F4041305640497B0FA1FE780C00922855F +:1052A000EFE01F8685472A89E31FF5F838389547D0 +:1052B000631EF702EF00B058B737002083C7170B03 +:1052C0008D8B6375F5021C28E36FF9F6B737002064 +:1052D00083A707098144829748D02285EFE0CFE673 +:1052E000E31525F72285EFF0DFEE85B71C2881C78F +:1052F0001947E39AE7F42285EFE08FDE8347A4069F +:10530000034544060C3881445D8DEFE0606A014638 +:1053100081450D4597D0FA1FE780C025EFE0F01DCD +:105320002DB7797126D2B73400209387842622D4F2 +:10533000E0534AD052CC56CA37EA0600373900202B +:10534000B73A00204ECE5AC806D693848426130A54 +:105350000A391309493CB7390020938ACA09130B4B +:1053600044013C3431479387E70693F7F70F6364B2 +:10537000F7168A07D2979C438287114783C7C407D1 +:10538000E31EF7FE2285EFE0FFE3E1BF0146930550 +:1053900050020145EFE02076130650028145054595 +:1053A00097D0FA1FE780001D83473900858B85C79A +:1053B000284881465A868145A301090097D0FA1FE3 +:1053C000E780401301E52285EFF0FFE538349307CD +:1053D0003009E308F7F8EFE050122285EFE09F8AEA +:1053E000B250225492540259F249624AD24A424B74 +:1053F0004561828083472900858B91CF1C2823013A +:10540000090005476375F7001947E396E7FC930722 +:10541000B0F93CB4B9B783A7C93EFC53B9F365BF33 +:1054200083472900858B6386072E23010900EFE05F +:10543000D00C2285EFE07F80B734002083A7C4E53D +:1054400085CBDC4395C789475C82834754041305A9 +:1054500061001946DC825C28930564045C8697B081 +:10546000FA1FE78040ED83A7C4E54800DC4382973C +:1054700083477406B5D7834554040824130664048F +:10548000EF50611DB1BF8347B406034534060146A2 +:10549000930550025D8DEFE00066014681450545AC +:1054A00097D0FA1FE780000D83473900858B85C7A9 +:1054B000284881465A868145A301090097D0FA1FE2 +:1054C000E780400301E52285EFE01FA4383493070D +:1054D000A009E308F7E8EFE0500261A88347B406AB +:1054E000034534060146930550025D8DEFE0A06050 +:1054F00001468145054597D0FA1FE780A0078347FD +:105500003900858BE9DB284881465A868145A3010D +:10551000090097D0FA1FE780E0FD01E52285EFE062 +:10552000CFF93834930790096DB783472900858BED +:105530006381071E23010900EFE0207C83C7C407B5 +:1055400009476307F70083C7C4070D476317F702CE +:1055500083A6C93E03574407BC521307C71285836D +:1055600063FDE700930750F93CB4BC528583E39A8E +:1055700007DE2285EFE06FECA5B5183C3C2C0DCF83 +:1055800034246301D71C6386F60038A42285EFF02B +:10559000CFD18347790093F7F70FE39407DC83C7F4 +:1055A000C40709476307F70083C7C4070D47E31221 +:1055B000F7FC930750F9B1BDE9DF382479FB3CA42F +:1055C000F1B783472900858B638507142301090000 +:1055D00083C7C407C18B95C3EFE0207283C7C4079C +:1055E00093F70702E5DF83C7C407228593F7F70C1B +:1055F000238EF406EFE03FA4ADB383C7D407858BB9 +:1056000091C7EFE0806F9307E0F921B583C7C40726 +:105610001547BD8B639CE700EF00702283C75A01DA +:105620008D8BE37AF5EA9307D0F9E5B383C7C40716 +:105630001947BD8BE391E7EA9307C0F9D9BB8347CC +:105640002900858BE38F07D02301090083C7C40796 +:10565000C18B89CBEFE0606A83C7C40793F7070269 +:10566000E5DF51B783C7D407858BC1FF83C7C40764 +:105670001547BD8BE389E7FA83C7C4071947BD8B7C +:10568000E38CE7FAEFE06067A1BB8D47230EF406D9 +:10569000BC5C22858297383493077009E303F7CC0A +:1056A00081B383473900858B8DC7EFE00065B7373D +:1056B000002003A7873B7C53ED9B7CD32305090087 +:1056C000372702408347870493F7D70F2304F70453 +:1056D0004DB583A7C93EFC53E39507C8F9B7834787 +:1056E0002900858B9DC72301090083C7C407C18B8F +:1056F000E38107D483C7C40793F70702E5DF228558 +:10570000EFE07F9383C7C40793F7F70C238EF4066B +:1057100039BB83A7C93EFC53E39507C46DBBB737BC +:1057200000209387473CB823058BE30607DA2381E3 +:105730000700EFE0805C2285EFE00FA12285EFF00B +:105740005FA979B9E38707E49DBD411126C2B7344B +:1057500000209387842622C4A04F06C64AC0630B4C +:105760000424582485476317F724B737002093870C +:10577000473CF8339546638AE600F8338D466386E6 +:10578000E600FC332D47631EF7002244B7370020A4 +:10579000B2409244024903C5F704854541016FD0E8 +:1057A000DEC516301307006483C784263347D7024B +:1057B00013898426850793F7F70F2322890623840C +:1057C000F42663C6E700EFE06EDC23840426782429 +:1057D0009D476312F704834794069DCB83560407C5 +:1057E00063E5F6020C24930730047CB813053004FB +:1057F00093F6F60F0146EF40D16522852244B24070 +:105800009244024941016FF0DF9C85062318D406BB +:1058100095472301F4068547230EF906182C8D477A +:105820006311F70AEFD05EA30D8911E993077002A7 +:105830003CA4930750021CBC9307600221A8854733 +:10584000631BF506930760023CA4930750021CBC3F +:10585000930770023CAC7824B737002083C4F70468 +:105860008547631DF70C123085452685EFD0DED6BF +:1058700083475403898BF1CB8347C403F9C70C5882 +:10588000E9C5BC25F9C38947230AF4021946B105C5 +:105890001305640397B0FA1FE780E0A90347C40724 +:1058A000894763E8E70A22852244B24092440249CC +:1058B00041016FF08F9F930750023CA49307700241 +:1058C0009DBF89467C346316D70213F7170001CFBA +:1058D0001307500238A4898B91CB930760021CBC3C +:1058E000230D04008DBF930760023CA49307700250 +:1058F000FDB795C313F7170019C7930750023CA4CF +:10590000A30C0400F1BF898B81C793076002C5BF58 +:1059100093077002EDB71C3C130740026365F70064 +:105920009307500201A8850793F7F70F130770023A +:10593000E368F7FE1CBC1C3C3CA45DB7B9450545BB +:10594000EFE0AEBD12302A9605B78547230AF40270 +:10595000B1B70327C40AB737002003A607093C27BD +:10596000A5C31C375833B73600209385460EB3873E +:10597000E7029A259384460ECC41B387E7021307CA +:10598000003293870719B3D7E702032744093E97EC +:105990003A896364F7006364B7003309B74002963D +:1059A000B307A9406374A900D840BA9703576407A6 +:1059B000E3FBE7EEB2402244924402494101828077 +:1059C00083248409029663E9A4008357640733851E +:1059D000A440E37AF5ECF9BFB737002083A7870E20 +:1059E000BE94E5B7011122CCFD5706CE7CA98357A2 +:1059F000E5062A848DC7834605070C259307C00357 +:105A00007CB901461305C003EF40B1440945EFE0FE +:105A1000E03622856244F24005616FF08FFB7C2501 +:105A20000547BD8B6386E70083470506918BF9DF49 +:105A3000B737002083A7873493F7072085C302C4B4 +:105A400002C202C08148014881470147814605469C +:105A500081451305C003EF40D1374DBF02C08148D7 +:105A60000148814701478146054681451305C0032A +:105A7000EF40D13361BFB737002023A8A738828019 +:105A8000B737002083C7F704411106C689EB3735C5 +:105A900005001305E53CEFE08E86EFD07FA3B73716 +:105AA000002037470500938787261307E781B8D77B +:105AB00037570500130727FCF8D73757050013079A +:105AC000A774B8DBB240375705001307E7F6F8DBD9 +:105AD0004101828011C98327050A93E70708232023 +:105AE000F50AFD572303F5028280B737002023AC67 +:105AF000A7388280B737002083A7C72B9C5799E32C +:105B00003E8582809A2FE30DA7FE93878705C5BF48 +:105B1000011122CC06CE2A84034565029307F00FBB +:105B20002E866309F5002EC6EFD0DED93246FD572A +:105B30002303F4028347A4020357840493066402F8 +:105B400093E707062305F40283570404A285F24075 +:105B5000BA972313F404624437650500130545AD75 +:105B600005616FD03EBC011122CC06CE2A840345CC +:105B700075029307F00F2E866309F5002EC6EFD04D +:105B80007ED43246FD57A303F40293067402A28525 +:105B90006244F24037750500130545B505616FD0C5 +:105BA0007EB8011122CC06CE2A84034585029307D4 +:105BB000F00F2E866309F5002EC6EFD0BED0324618 +:105BC000FD572304F40293068402A2856244F24046 +:105BD000377505001305E5B705616FD0BEB43737DB +:105BE000002093078726ED46AE33F237231ED51CDF +:105BF000231CD51C963B03487514231AB51C231887 +:105C0000C51C2319D51C8947130787266306F80688 +:105C10009307801483486514231FF51C094863917A +:105C200008071A37231BE51C0567130707A9231D5F +:105C3000E51C6D482E876373B8006D479315070107 +:105C40002312E51E6D48C18132876373C8006D471A +:105C50002310E51E0356651D0357A51D6373E6005B +:105C600032872313E51E368763F3D7003E8723115F +:105C7000E51E2307B50482808567938707A959BF6E +:105C80007A33231BE51C1307801455B703476514AB +:105C900089468357651E631ED702835685149387F2 +:105CA00087E899C6B3C7E702938757FD214731A01C +:105CB0002147B3C7E702938757FDB3C7E7020357EE +:105CC000451EC207C18363F3E7003E872307E5044F +:105CD000828085466316D7009387C7FB1147F1BFC3 +:105CE000938707FBE1B78357051D0357C51D411176 +:105CF00006C663F3E7003E87931807018357E51D47 +:105D00000357251D93D808016373F700BA871398CA +:105D100007018356851D8357451D1358080163F3FA +:105D2000D700BE860357651D8357A51D1393060133 +:105D3000135303016373F700BA8783467514C207D0 +:105D40000947C183639AE6000566130606A94287E0 +:105D50006370C802328729A80327051093164701EC +:105D600063CC06000566130686844287E36406FF5B +:105D70001318070113580801834665140947639DEA +:105D8000E6063A3D9306204E3307D70293F6F80F06 +:105D90009A061386F63C9386C64F63440601930623 +:105DA000C812158F63D3E7003E874207056641831B +:105DB000130606A9BA876373C700B287C207C183F7 +:105DC0000356051E13F7F80F9376F30F6316E604D8 +:105DD0000356251E631206050356451E631ED60292 +:105DE0000356651E631AF602230E0506EFF01FEA3E +:105DF0000945B240410182800327051093164701EF +:105E0000E3C006FC056613068684BE856373F60050 +:105E1000B2859397050165B70546230EC506231085 +:105E2000E51E2311051F2312D51E2313F51EEFF0C7 +:105E3000FFE501457DBF0357651D8357A51D411132 +:105E400006C66373F700BA87034665141397070104 +:105E500089464183631BD6068566938606A96373CC +:105E6000D700B6871397070141838357651E638761 +:105E7000E70085472313E51E230EF5060357251D6E +:105E80008357E51D6373F700BA87034675141397AC +:105E90000701894641836317D6048566938606A960 +:105EA0006373D700B6871397070141838357251E75 +:105EB0006387E70085472311E51E230EF506EFF003 +:105EC000FFDCB240014541018280856713868784EB +:105ED000E37DE6F88326051093870780F58FD1F7D9 +:105EE000328761B7856713868784E371E6FC832672 +:105EF000051093870780F58FD5FB328745BF035781 +:105F0000A5049547723DB307F702363D93D5374058 +:105F10006355B600118F93173700B3C7D702C20776 +:105F2000C1832314F5048280832745110D4693060F +:105F3000F00F98230D8B58B56313C700B42374B9C1 +:105F40009823418B38A99C337CA982805C25CD9B0A +:105F50005CA582808327451158259C2393563740A2 +:105F60008987B58F858B91C71347870058A5014551 +:105F70008280054582808327451158259C239356AE +:105F800027408D87B58F858B91E71347470058A52C +:105F900001458280054582808327450E850723229F +:105FA000F50E91E78327850E85072324F50E8327B9 +:105FB000850E93F7070891C785472322F50E232402 +:105FC000050E8347A50293F7070491CF8357050475 +:105FD00003578504BA972313F5048327450A93F7DB +:105FE000F7BF2322F50A82808327C50E8507232663 +:105FF000F50E91E78327050F85072328F50E8327E4 +:10600000050F93F7070891C785472326F50E232828 +:10601000050E8347A50213F7070409C793E7070294 +:106020002305F5028280B737002083A7473001455A +:1060300091E38280B83711E305059C43D5BFB7379C +:10604000002083A747300145054791E38280B4379C +:106050006393E60005059C43CDBF411122C426C2CF +:106060002A8491450145B734002006C693848426CE +:10607000EFD0BECA03D7440B231BA404854763FD9E +:10608000E7040355641E8357241E37370020374624 +:106090000F00AA970355C70E9387172713060624E8 +:1060A000B3A5A70281463305F502EF70714F835700 +:1060B00004040357E4058355840583A8C4091D8F90 +:1060C0003307B7028327040905461383F5FF130E30 +:1060D00080023E9763676600B240224492444101C9 +:1060E00082803308C603C687FD563A9881E7231B92 +:1060F000C404DDB76314F4001C40F5DB83AEC708AD +:106100006398BE0083A60709B306D840B3F6B6026B +:1061100063E4A6009C43D9BF09066DBF411126C2A6 +:10612000B73400209384842603D7440B06C622C4C8 +:10613000854763F3E7042A848357251E0355651EAC +:106140003737002037460F00AA970355C70E9387AD +:10615000172713060624B3A5A70281463305F502C7 +:10616000EF7011440346540583A8C40985467D1683 +:106170001303800263E7C600B24022449244410107 +:1061800082803387660283270409FD553E97C687C0 +:1061900081E7231BD404CDB76314F4001C40F5DB66 +:1061A00003AEC7080328C408631A0E0103A8070931 +:1061B000B305E84063640701B305074163E4A50044 +:1061C0009C43F9B785067DB71E3D79714ECE938607 +:1061D0001700B73700209387470E56CA83D9870028 +:1061E00083AA4700B7370020138687268355460BBE +:1061F00006D622D426D24AD052CC5AC85EC605460C +:1062000003278508637BB60EB386360393848726FF +:1062100093070032014A93860619B3D6F6023697E1 +:106220003A896364D70063645701330957412A846C +:10623000232825098357641E0355251E37460F0062 +:10624000130606243E9513051527B325350381460D +:106250003385A902EF70D134AA8B03ABC409814402 +:10626000B3879902130600648146B3B5990213857A +:106270000732B337F500BE95EF7091324A955A87D1 +:10628000FD5731E733879902130600648146B3B5A1 +:106290009902130507323337E500BA95EF70513094 +:1062A0002A993335A900CA876314AA006364590187 +:1062B000B30759412328F408B2502254925402598A +:1062C000F249624AD24A424BB24B45618280631422 +:1062D0008700184345DB0326C7088326C408631AD2 +:1062E000D60083260709B387A6406364D500B307A9 +:1062F000D54063EE7703184369B78347750393B7B7 +:10630000270093C71700B697B38737039306003269 +:1063100093870719B3D7D7023E97BA866364F7000D +:1063200063645701B30657412328D50871B78347E3 +:10633000740385048607FD17E3E4F4F2A1B7B737C9 +:1063400000209387872683D6470B05476372D70CB7 +:10635000411122C403A4C70906C626C2A28789EB3D +:1063600001EC230E0500B240224492444101828098 +:10637000D83F75FB9C43E5B76314A400004075D07B +:106380003C34C9E70327C4088327C5086300F7081E +:10639000582D93070008AA846316F7043E3C19465B +:1063A00093050008231AF506231BF5065E3C231D02 +:1063B000F5047E3C231EF5040A25EF70106985471D +:1063C000DCBCDC2C93F7F707DCAC13058406224415 +:1063D000B240924431469305F00F410117A3FA1FD2 +:1063E000670003FC3E3D194693050008231AF40696 +:1063F000231BF4065E3D231DF4047E3D0A24231E68 +:10640000F404EF70906489475CBCC1B7004089BF59 +:10641000230E05008280B73700209387872683D616 +:10642000470B411126C206C622C40547AA846372DF +:10643000D71803278510098B630D071683A7C70993 +:10644000BE85BDE503D6441E01447D5813062602D1 +:1064500005862D067D55ADE3630204103C343A3CBD +:10646000CDE78947231CE404A30AF4040357040678 +:10647000835704042285BA97C1071D8B998F231F68 +:10648000F4045E3C231DF4047E3C231EF404EFF070 +:10649000DFBC8327440A93E717002322F40A8547C9 +:1064A0005CA88D475CBCB24022449244410182808A +:1064B000D83D75FB8C4171B798436394970049DFD1 +:1064C000BA8783A6070903A7040963E2E6023387B4 +:1064D000E64083A6C40863F4E6003377D702637608 +:1064E000A7003A856373C700BE859C43ADB7158F7F +:1064F00083A6C70863F4E6003377D702E37707FF84 +:106500003A88E374C7FE3E84CDB7BE3CB3F7E702DA +:10651000D9FB9D46994763F5E600935717008D0711 +:106520000567231AF406130707C88A076353F700A1 +:10653000BA87231BF4065E3C0A241306C002231DFF +:10654000F4047E3C93050008231EF404C9475CBC98 +:106550002244B240924441016F70304FB9C9BA3CF5 +:10656000BE3DB3F7E702B1E78387C40163D30704F5 +:106570009D46994763F5E600935717008D07056719 +:10658000239AF406130707C88A076353F700BA87EC +:10659000239BF406DE3C8A241306C002239DF404E8 +:1065A000FE3C93050008239EF404CD47DCBCEF704D +:1065B000D049238E0400C5BD373700201307470E8E +:1065C0005027B7370020B73600209387872615CE8F +:1065D00003A6C639411106C611EA584323A8E70AA3 +:1065E000371700201307E72923AEE63803A5C6397D +:1065F00023A2070AEFD0EEF8B240B7E700E0370772 +:10660000000223A2E72041018280122723A2070A69 +:1066100083576508AA8523AE0638B387C702374675 +:106620000F00832605091305F62313060624AA97EF +:10663000B3D7C702373600200346360B3E9663EECB +:10664000C60003A7C508371500203386C6401305CA +:106650004524938695026FC0FEC65C43BE96D5B7AF +:10666000B737002003A78739011126CA4AC8B734B3 +:10667000002006CE22CC4EC62A899384440E3DCFFC +:10668000BE89B737002003D7C73185476318F7069F +:106690009E2403546908032505093304F402B7470F +:1066A0000F001387F723938707243A943354F40297 +:1066B00063688508B737002083A70709330485403E +:1066C00082976362A408B307A440373700200344CD +:1066D000370B83A98939014505806370F40237457A +:1066E0000F003384874013050524B335A402922498 +:1066F00081463305A402EF70A16A8299930700FBDB +:106700002307F900DC24A1CB014597A0FA1FE780FD +:106710000008B737002023A60730B737002003A5AD +:10672000C739EFD00EE6F2406244B7E700E0370722 +:10673000000223A2E720D2444249B2490561828087 +:10674000DC403E9585BF330785408147E35F07F610 +:10675000DC403E948DBF8347990262448545F240F8 +:10676000D2444249B249B395F500C205C181014501 +:1067700005616FC09EC8411106C6EF00307719C988 +:1067800083278511014581E7B240410182809C4306 +:106790000505D5BF7D55CDBFB73700209387872628 +:1067A00003A7870A411122C426C206C62A84AE84E2 +:1067B0006314A70023A4070A8327041299C70A2495 +:1067C000014693050008EF7050288357440499C789 +:1067D0000A244D4693051008EF7030270A24154609 +:1067E00093051008EF707026B73700209387473C59 +:1067F000F8332305040023080400230A9404954673 +:106800006394E600A3830700B2402244924401450A +:10681000410182803C25638D073283570508411171 +:1068200022C406C626C285072310F5087C35230C32 +:1068300005002A8413F7270005E703570504954749 +:1068400063E4E700014501A89305E003EFF0DFF4FE +:10685000A305A4020945B24022449244410182802A +:1068600013F7070221CF93F7F7FD7CB58327050ABD +:106870003835A305050293E747002320F50A85472D +:10688000631EF7023E3D1306204E03274509B387DA +:10689000C702B3D7E702373700208346270B0347E9 +:1068A0007503938606053307C702B697C207C183EF +:1068B0002312F5088607BA972311F5081C38858B33 +:1068C000E9C78357E405035704046396E7245E3C55 +:1068D0008355C405034584022310F40683475405F9 +:1068E0006EBC9205A30BF40283576405F915B73407 +:1068F00000201EBC8357A4059384440E5EBCEFC0E9 +:106900001EB83834231004081E3C631A071A9A2450 +:10691000D040B387E7021307003293870719B3D734 +:10692000E70203270409D1073E97BA866364F7009C +:106930006364C700B306C740835784052328D4087F +:106940003EBC5C3C81C72285EFF04FFD9A243E3C63 +:106950009306003223110402B387E70233D6D7022D +:10696000B3F7D7029306204E2326C408B387D70275 +:10697000B3C7E7021EB0835704045EB07C3493E7CC +:1069800007027CB41C38F99B1CB81C38898BA9C73A +:106990000357E41283570404B306F7401396060125 +:1069A00063400618631AF702814701489304841371 +:1069B000232CF412232E04131546930584122685E6 +:1069C00097A0FA1FE78020972685EF00107B1C38E0 +:1069D000A306A412F59B1CB81C3813F707013DC78A +:1069E0008356C414035704043386E6409315060106 +:1069F00063C80512639CE604BD9B1CB88347A414BE +:106A000081CB13F727006307071285472303F4148C +:106A10008347B41481CB13F727006304071285471B +:106A2000A303F4142285EFF00FC18347C40799C76D +:106A30008327040A93E707102320F40A8327040A14 +:106A4000A305040293E707202320F40A1C3813F758 +:106A5000070205CF373700200327C72B1306800511 +:106A600054231857B386C6023697562F035704048B +:106A70003387E64013160701634906000357C41421 +:106A80006315D70093F7F7FD1CB88347A40293F76B +:106A90000704E38907DA0357640483570404E31304 +:106AA000F7DA18289307A0046314F70085471CA899 +:106AB0008327440A93E707402322F40A61B303477C +:106AC000E41803568405218B11CF83560404035721 +:106AD00004192E3C158F3307B7023347C702369788 +:106AE0002318E4189DC79A24CC40B307F702130774 +:106AF000003293870719B3D7E702032704093E97AB +:106B0000BA866364F7006364B700B306B74023280E +:106B1000D40832BC25BD998F13970701E35707E6C8 +:106B2000930580022285EFF03FC7A305A402130559 +:106B3000800215B3918B99C38947C9BD23030414FF +:106B4000C1BD918B99C38947E1BDA3030414D9BD8D +:106B50000545828005C541119305200222C406C661 +:106B60002A84EFF07FC3FD57A305A4022308040085 +:106B7000A303F402B240224441018280828005C90D +:106B8000411122C406C67C352A849305E003898B13 +:106B900091C3A145EFF05FC0FD57A305A4022308F0 +:106BA00004002304F402B240224441018280828026 +:106BB0008327050A797122D406D626D24AD04ECE32 +:106BC00052CC56CA2A846380074A13F7270011CB98 +:106BD000F59B2320F50A0A25194693050008EF7056 +:106BE000C0668327040A13F7470041CFED9B23209B +:106BF000F40A8347A40293F7070491CB8327440A3E +:106C0000228593E707402322F40AEFF04FAF383490 +:106C100085475028835624066314F77E3E3C1307AD +:106C2000204EB387E70203274409B3D7E70237377B +:106C300000200347270B13070705BA97C207C18334 +:106C40000347B4022312F40886072311F4089307BC +:106C5000000819C3930700045CAC19E68347A4023B +:106C600093E717002305F40299E60A240D469305DD +:106C70000008EF70805D23110406230A0400A30EB0 +:106C800004008327040A13F7870005C30A24DD9B49 +:106C90002320F40A154693050008EF70005B834734 +:106CA000A40293E747002305F4028327040A13F79D +:106CB000070131C7BD9B2320F40A8347D4040A246B +:106CC000214689C7A3060404130600039305100890 +:106CD000EF70A0578347C40489CF83278410C18BEA +:106CE00089CB8355A40422859205C205C181EFE0BA +:106CF0003FE28347A40293E717002305F4028327AA +:106D0000040A13F7070405CB0347F40493F7F7FBD2 +:106D10002320F40AA14763FAE7003C3499E783276C +:106D2000440A93E707012322F40A0A243146930513 +:106D30001008EF7080518327040A13F7070255C724 +:106D4000343493F7F7FD2320F40A0327C410832774 +:106D5000841099EA1377070801CB0327440A370602 +:106D60004000518F2322E40A93F707026384076CE3 +:106D7000ADE28357241D0357241E6304F7028346A4 +:106D8000741409476392E66A0567130707A9637AD3 +:106D9000F7008327440A056713070780D98F23224A +:106DA000F40A8357641D0357641E6304F702834685 +:106DB00064140947639DE6660567130707A9637AAC +:106DC000F7008327440A056713070780D98F23221A +:106DD000F40A0A24114693050008EF700047834720 +:106DE000A40293E717002305F4028327040A13F78C +:106DF00007101DC30A2493F7F7EF2320F40A230E8C +:106E000004061D4693050008EF7020448347A40242 +:106E100093E717002305F4028327040A13F70708F2 +:106E200001CF0A2493F7F7F72320F40A130670051D +:106E300093051008EF7060418327040A13F70720B9 +:106E400029C393F7F7DF2320F40A83476414230F41 +:106E50000400A29703850718A301A414EFC0102112 +:106E60002301A4142285EFE07FE20A243146930532 +:106E70000008EF70803D8347A40293E717002305C5 +:106E8000F4028327040A13971701635D07127177D1 +:106E90007D17F98F2320F40AB737002003AA872E25 +:106EA00063070A5483574415139537011397170145 +:106EB0004D8163580758C2079305C012C187B305B7 +:106EC000B50263D50700B7872500BE9503580404B3 +:106ED00003578415373900209306490E8327040988 +:106EE0000326C40883AA460081491309490E0355A5 +:106EF0004408631EE85463EAC754B384C740835709 +:106F000089002E9537460F00B335F5021306062487 +:106F100081463305F502EF60B168B307950033B5DC +:106F2000A7002E95BE846394A90063E45701B3843F +:106F30005741B739002083A709098297CE8763E3B9 +:106F4000A4543385A440B73900209389C90903C7E5 +:106F500079010607637EE5520327CA0D835689002F +:106F6000835764152183420741833307D702930671 +:106F700000328507C207C18303264900130707199A +:106F80003357D702B3069700B68463ECE65663FA2C +:106F9000C6562314FA0823209A0A0347E4148546A8 +:106FA00083472A08631ED75C93E727002301FA086A +:106FB0005285EFC0A0290A24130660029305000839 +:106FC000EF70A0288327040A13972701635707004F +:106FD00079777D17F98F2320F40A8327040A139702 +:106FE000070163590704B737002003C5B726834557 +:106FF0000403EFC03ECA3E3C1307204E232AA408D8 +:10700000B387E70237370020B3D7A7020345270B22 +:1070100061777D1713050505AA972312F4088347A6 +:10702000A40293E717002305F4028327040AF98FCB +:107030002320F40A8327040A858B91CF8347A40277 +:1070400083454405228593E717002305F402EFF0FA +:10705000AFF4A305A4028327040A63D607008607BA +:1070600085832320F40A8307B41785C703074403E5 +:1070700099463306F74063DEC6508327440AB706B5 +:107080001000D58F2322F40AED57A30FF416A30D99 +:10709000E4168347441813F7270059CF83064403A7 +:1070A0000307C41763DCE6000327440A3706100011 +:1070B000518F2322E40A1147A30FE4160307D417C4 +:1070C000635CD7000327440A37061000518F232240 +:1070D000E40A7157A30FE4160307A4171306F00779 +:1070E000630CC7020346741803458418158F6207A2 +:1070F0006187B306A640635AD74A93F607016396A1 +:10710000064A93F7F7F893E707012302F418835729 +:10711000A41885072316F4188357C41891CFFD17B8 +:10712000C207C1832316F41881EB0A241306000258 +:1071300093050008EF7060113C249DCF8327041253 +:1071400081CF3C2C91EB0A24014693050008EF7097 +:10715000C00F19E185473CAC8357440491CF834766 +:10716000140399EB0A244D4693051008EF70E00DC7 +:1071700001E58547A308F4028347E41813F70701E4 +:1071800079C7BD9B2307F4188327440A898BE1E361 +:107190001828D547630DF70A1C38898BCDEB81443D +:1071A000814901498D4A130A50021397840161876E +:1071B0009377370009872297034777198607B39794 +:1071C000FA007D8F638BE700268605458145EF60D9 +:1071D000713AB3E9A9003369B9008504E39744FD26 +:1071E000032584138325C413337535012AC4B3F5ED +:1071F000250128002EC6EF0040788347541363E032 +:10720000A702034544037D578547591562052C00A5 +:1072100061853AC43EC697B0FA1FE7804045032710 +:107220008413A2476317F7000327C413B247630010 +:10723000F70215462C00130584129790FA1FE78079 +:10724000800F8327440A93E727002322F40A83460A +:10725000E418A54713F796006315F70403570404D1 +:1072600083570419636FF702B307F74013960701BA +:10727000634906028347F4181306000A0507B3871B +:10728000C702323CDD9A2307D418B3C7C702BA97A6 +:107290002318F4188327440A37078000D98F232244 +:1072A000F40A8347A402E9C7918B89CF1028C165EE +:1072B000938505A02285EFE01F8B8347A402ED9BF9 +:1072C0002305F4028347A402858B8DC30345740212 +:1072D0009307F00F6307F500EFC0CEDEFD57A30361 +:1072E000F4028347A402F99B2305F4028347A40216 +:1072F000898B89CF6E3C034584029205F915EFC056 +:107300000E988347A402F59B2305F4028347A40249 +:10731000A18B99CF6E3C0D4622859205F915C205C9 +:10732000C181EFE05F848347A402DD9B2305F40263 +:107330008347A40213F7070101CF0345640293F7C3 +:10734000F7F82305F402EFC0EED7FD572303F4024C +:107350008347A40213F7070201CF8355A404034512 +:10736000640293F7F7FD2305F4029205EFC02E9116 +:107370005C2C93F7070C81CB383485472285631644 +:10738000F726EFF04F8983570404B5C3130740066F +:10739000B3F7E702A9EFB737002083A74739B7341F +:1073A000002093848426898B9DCF373900201309D0 +:1073B000C9090327490305CB9E28AE282545C207E6 +:1073C000DD8D029783274903EE2429458297832781 +:1073D0004903831524032D45829783274903830599 +:1073E0004403314582972397040023A80400B25038 +:1073F000225492540259F249624AD24A456182802B +:10740000930700045CAC19E68347A40293E71700D6 +:107410002305F402E39306860A240D46930500082B +:10742000EF60B0626FF07F85130780148DB2130791 +:10743000801471B28327440A7D771307F77FF98F91 +:1074400079B2F945B305B50251B4D6977DB4930628 +:107450001800637D07013387E6403307C70263E501 +:10746000E700B384E74061BCD697E5BF158F3307CB +:10747000C702BA97BE8463E4E700E3E257A9B38486 +:107480005741B5BC0327490026973305A74065BC83 +:1074900083A70709635E0506829703C77901032660 +:1074A0004900814506073A95AA876364E50063644D +:1074B000C500B307C54063E99704858F0327CA0D4C +:1074C000035589008356641521834207418333079E +:1074D000A70213050032130707193357A7021385B4 +:1074E0001600B3D7E702AA97C207C183B386D74075 +:1074F0003387E602B306970033B7E600B684E38825 +:10750000E5A8B384C64071B433079640BA977DB7F7 +:10751000829703C779018325490006073A95AA8710 +:107520006364E5006364B500B307B54063E3F40446 +:10753000B387F4400327CA0D0356890083566415A8 +:107540002183420741833307C70213060032130722 +:1075500007193356C702B3D7C702B387F640C2072D +:10756000C1833387F6403307C70263E9E400998C8F +:107570000DB43387B400B307F7406DBFAE94C5BFF9 +:1075800089466314D700E59B15B4F59B93E7470044 +:1075900031BC998FE3DFF6AE8327440AB7061000AB +:1075A000D58F2322F40A9547CDB4834654188345DA +:1075B00064183388B600635BE80013F807046317A8 +:1075C000080093F7F7F893E7070481B62A96E34596 +:1075D000C7B48D8EE3C2E6B413F70702E31E07B209 +:1075E00093F7F7F893E707020DB6EFE05FD561BBBD +:1075F000411122C406C62A8483278411C5EB832740 +:107600000412E9E70325041109C59790FA1FE780E2 +:1076100060B0034574029307F00F6304F500EFC0F8 +:107620006EAA034564029307F00F6304F500EFC0F0 +:107630006EA9034584029307F00F6304F500EFC0C1 +:107640006EA8034594029307F00F6307F500EFC09F +:107650006EA7FD57A304F4020A24492CB737002073 +:107660009387872603D7470B15EF37370020232E44 +:107670000738373700200327870E23A8E70AB737D4 +:10768000002083A7470A99CF373400201304C4048D +:10769000085009C99790FA1FE780C0A72320040269 +:1076A00023220402B240224441018280C84309C51A +:1076B0009790FA1FE78000A683278411BA271367E3 +:1076C00007F0BAA79C43232CF4103DB7C84309C563 +:1076D0009790FA1FE78000A483270412BA27136744 +:1076E00007F0BAA79C432320F41211BFB73700203C +:1076F00083A7473099E33E8582809A27E30DA7FE52 +:107700009C43CDBF373700208346B70A3737002068 +:107710000346070FB737002083A7473113871600AA +:1077200019C2139716001207C1663E97FD1663151E +:10773000F70081473E858280B227E30DA6FEE30B6A +:10774000D6FEC107EDB701114EC6B73900209387A9 +:10775000892683A7C70A06CE22CC26CA4AC852C4A5 +:10776000B5EB373700209307C709B7360020FC3741 +:1077700083C6060F93898926130AC7091389170040 +:1077800099C21399170003D4E9023305F940931401 +:107790004900130414021584160442044180330581 +:1077A000A402930540242695420541819790FA1F33 +:1077B000E780408905C18346FA0023A6A90A33075A +:1077C0009500B306D9408147130640F5930520F58F +:1077D00063EA2701F2406244D2444249B249224A54 +:1077E0000561828063FCD70058C12EA522978507CA +:1077F000C207A3040500C1834105D9BF32A52322D6 +:107800000500F5B74111930530261305801E06C605 +:1078100022C426C29790FA1FE780C0821306801EFA +:1078200081452A849790FA1FE78080B701450DC8EB +:10783000B73400209387842683A6C70993848426BF +:107840009DC63687854712276301F606184365FFF4 +:107850001EA4A9E322859790FA1FE780A08B0A2433 +:10786000B24022449244410182803687E9BF854775 +:107870001EA423AE840823A0840A239AF40AEFF0FE +:107880009FEC83A7040A23A0070023050400230715 +:107890000400F1B783A7040A80C383D7440B23A055 +:1078A000840A8507239AF40AE9BF13871700931700 +:1078B000070113160701C183E35906FA814749BF3F +:1078C000B7370020138787260325C70A411122C432 +:1078D00006C61384872609C59790FA1FE780808320 +:1078E0002326040AB240224441018280411122C46D +:1078F000373400209307842683A6C70906C60147AC +:10790000B68713048426A9CB9227631BA60405EB34 +:107910009842232EE4083E859780FA1FE780807FF7 +:107920008327040A23A007008357440B9DE3EFF04D +:107930003FF9232E0408B24022444101828083266D +:10794000040A6395F6002320E40AF1B7944314C3B4 +:10795000D9B7FD17231AF40A8357440BE9FFC1BFB7 +:107960003E879C434DB7373500207146814513054E +:1079700045301793FA1F6700A3A21C313821542108 +:10798000A2074207BA971821FD8A0548BA973831ED +:107990009305000201456207BA9701473316E800D4 +:1079A0007D8E01C605051375F50F0507E318B7FEB3 +:1079B0008147214633D7F640058B01C7050513756E +:1079C000F50F8507E398C7FE8280011152C656C4A1 +:1079D000032A8513832AC51322CC26CA4AC806CE99 +:1079E0002A84A30B0512A306051281441309500231 +:1079F00026865285D685EF602135058911C58347D6 +:107A0000D4128507A306F4128504E39324FFF24001 +:107A10006244D2444249324AA24A056182804111FD +:107A200026C2B73400201387842622C403244709C2 +:107A300006C64AC0834754062302040685E38547E9 +:107A4000B73500202302F406194693850535130542 +:107A500064069790FA1FE780008E51A08546639BCD +:107A6000D70038230DEB4945B240224492440249E5 +:107A7000410182808325440813898426DDED8347F4 +:107A8000C40695E3034754068947E30AF7FA834798 +:107A90002900F1DB8547B73500202302F40619469B +:107AA000938565356DB71305C40697A0FA1FE78067 +:107AB00080432322A40819CD3C2589CF894723027E +:107AC000F40619469305C500130564069790FA1F3E +:107AD000E7806086034744068947E315F7FAB70550 +:107AE0000001FD150145EFC0CEA768CCEFC0E0480E +:107AF00028CCC1451545EFC04EA285477CB08D47C7 +:107B00005CA0834784033739002048A40D4713093C +:107B1000C904639CE7025238835764040345390063 +:107B2000C1453E96EFB0FECB03453900C145EFB0ED +:107B3000DE8C01452384042605BFBC25A1D78947D7 +:107B40002302F4061946B10541B709470345390038 +:107B50006396E70003566404C145E9B75238EDBFA8 +:107B60004111930590241305000A22C406C697808C +:107B7000FA1FE780204D2A8425CD1306000A81458F +:107B80009790FA1FE780C081B737002023AE872E79 +:107B9000B73700209387473C9853DC5323020400F7 +:107BA000232AE408232CF408FD572300F404930748 +:107BB00010FB7CA0B78705009387E7A12324F40876 +:107BC000B7870500938787ED2326F408B78705005C +:107BD0009387C7D82328F408B737002083C7070F37 +:107BE00081EBB737002003A5073A9145EFB0DEDE01 +:107BF0002285B240224441018280411106C622C43E +:107C000026C2AA84EFC0600F930700FBFCA0B73721 +:107C1000002003C5F7049305000237340020EFB0BD +:107C2000BEC3D63813070064834784263347D70280 +:107C3000850793F7F70F2304F42663C6E700EFC028 +:107C4000EE9423040426B2402244924441018280EF +:107C500001114EC6B739002026CA06CE22CC4AC82A +:107C600052C49387493CFC3315479384493C6306CF +:107C7000F700FC300D47631FF7009C3481E7930742 +:107C800070109EA4F2406244D2444249B249224A52 +:107C900005618280B73700200D4503A4C72F37390F +:107CA0000020EFC0A00D0327893BB7C7898E9387BB +:107CB00067ED1CC7B7575500938757555CC383477B +:107CC000A4031307F00F6387E700A30CF402FD572A +:107CD000230DF4020345940389476306F5008547A5 +:107CE000A30CF4020145373A00200327CA3E01469F +:107CF000930550025C4393E717005CC3930720FB96 +:107D00007CA09D47FCB02382093CEFB0D05E3737A2 +:107D1000002083260744BA890145DC56F59BDCD652 +:107D20005C300326893B93F6F7071C4293F707F86C +:107D3000D58F1CC2B737002083C7070F89C7B73755 +:107D4000002003A5073A9790FA1FE78040A4032775 +:107D5000893BB70633001C4393F7F7E71CC31C436A +:107D600093F7F7E793E707101CC303A709441C47E1 +:107D7000D58F1CC78327CA3E13079005B8CBA382B3 +:107D80000400A3800400054798C3EDBD4111B73737 +:107D9000002022C403A4C72F06C626C2834794032B +:107DA00021476388E70A894458306399970A930703 +:107DB0007002630CF710930750021305600263040E +:107DC000F70013057002B737002083A7873B48B040 +:107DD0003706CEFF98437D161377F7E7136707083A +:107DE00098C337370020032707441447F18E14C780 +:107DF000B736002083A5C63EB736002023A8050469 +:107E00002382063C9386463C238206005057759A8F +:107E100050D79043137606F8498E90C3A38206008C +:107E2000A3800600854694C1944393F6F6E794C375 +:107E3000944393F6F6E793E6061094C31C47B706FF +:107E40003300D58F1CC793079005BCC9930720FB4F +:107E50007CA0B24022449244410182809307700288 +:107E6000630CF70293075002930660026304F70065 +:107E700093067002B737002003A7074454B05C573D +:107E8000F59B5CD7B737002003A7873B1C4393F7CC +:107E900007F8D58F1CC35DBF83478403898B95C7C3 +:107EA000B73700200356A40403C5F7049305000266 +:107EB000EFB03E9393075002A30C94025CB02244AF +:107EC000B240924441016FF0BFD822852244B240B3 +:107ED000924441016FF07FD2B73700209387872605 +:107EE00003A7870A25E3411122C403A4470906C654 +:107EF0009307000B78206304F700EFB0106083470E +:107F00008403373700200345F70413F7170011C720 +:107F10008547A30CF402323801A8898BF5DB0356A0 +:107F2000A4048947A30CF40293050002EFB07E8BF2 +:107F300093075002230F04025CB02244B240410177 +:107F40006FF01FD1828001114EC6B739002083A780 +:107F5000C93E22CC26CA4AC806CED84337390020AB +:107F60002A8413671700D8C38326893B37C7898EB5 +:107F7000130767ED98C63757550013075755D8C2F2 +:107F8000D84301469305F00F13671700D8C3930732 +:107F900030FB7CA1B73700200345C5039384473CE1 +:107FA0001D47F8B02382073CEFB0F03403A6C93E6A +:107FB000A3820400A380040085471CC28327893B59 +:107FC000B705330098431377F7E798C398431377BF +:107FD000F7E71367071098C33737002003270744D4 +:107FE0001447CD8E14C79306900534CA5457F59A9A +:107FF00054D70347B4039376F7079843137707F8EA +:10800000558F98C3F2406244D2444249B249056157 +:1080100082807D572300E50403479503411106C67E +:10802000230DE5022147A30CE5020347B50358B130 +:10803000EFF07FF1373700200326C73EF977FD17B1 +:108040005446F58F5CC6010001008327C73E0967CF +:10805000130600F898C7373700201307473C50A392 +:108060000567B240130727D1F8D3D4C741018280F6 +:10807000011126CA06CE22CC4AC84EC652C40347B6 +:108080009503A147AA846314F720930750FB7CA1B2 +:108090000345C50393052002EFB0901103C9C40343 +:1080A000894763F3270109491379F90F03A44409A8 +:1080B000930720029CA495471CA0F820B739002004 +:1080C0009307400B93898926631BF70083A7890DCB +:1080D0001397170163550700930750021CA09307DD +:1080E00020021CB003C744068947138A6406631B39 +:1080F000F70083A5440819465285B1059780FA1FF9 +:10810000E780602383C75406858B91E703C7440645 +:1081100089476316F7001C2093E707041CA0194643 +:10812000D285130524009780FA1FE780C02083C7FB +:10813000540789C71C2093E707F81CA019469385AC +:108140006407130584009780FA1FE780C01E83C769 +:1081500084057CA483C794057CB483C7A4051CA8AC +:1081600083C7B4051CB8FC4C13D787003CA8C18357 +:108170005CA838B889476313F9008D475CB893173A +:108180001900A69703C7070583A5440918AC03D7B0 +:108190000705218318BCB82F38ACBA2F218338BC0F +:1081A00003C707029E3358ACA1835CBC83D7490B3D +:1081B000638C07128D472397F404B7370020938709 +:1081C000470E83DE87009306003203D7A902138689 +:1081D0000E193356D602B4501307270283A2C909D9 +:1081E00003AF470005872D07814313090032954FE0 +:1081F000369616857D5383D7E40445E563696700A9 +:108200008507C207C1832397F404E3F4FFFE83C705 +:10821000E404B7060082FD167CA883D7E404A1839A +:108220007CB883C769107CAC83C779107CBC83C7DA +:1082300089102300F40283C79910A300F40283C7B6 +:10824000A9102301F402DC24FD8BA301F40283C7EF +:10825000390003C735029607D98FA381F502B737D6 +:10826000002003A6873BB737002083C7070B93F78F +:10827000F703139797015C56F58FD98F5CD6F240C0 +:108280006244D2444249B249224A0561828093073E +:1082900040FB7CA1930520020145EFB060710149CC +:1082A00031B5B386D703032E050993860619B3D6D5 +:1082B0002603B388C600B3B6D80046886394D300BB +:1082C00063E4E8013388E841B306C84163690E01FD +:1082D000B3060E4163F5E60085072397F40463F3C4 +:1082E00066003683084101BF9C3D982D9946A20740 +:1082F000D98F8D838D073E8763F3F6001947239747 +:10830000E40431B7411122C4373400201304C404FB +:1083100026C2AA842830C14506C6EFB0EED3283065 +:1083200093050002EFB04ED3B240224423820400F2 +:1083300023930400924441018280411106C626C263 +:1083400022C44AC0AA84EF10101CEFF02FBA6301B8 +:108350000510B85083A7440901482324E508B84C08 +:10836000B73500202A84232CE508F84C1546938560 +:10837000E536232EE508D83B130585133739002051 +:10838000A30FE5EEF83BF42B130989262207558F3E +:108390002310E5F0983F942F2207558F2311E5F025 +:1083A000B83FB42F2207558F2312E5F0D82FDC3FBA +:1083B000A207D98F2313F5F0DC2423220501A30E95 +:1083C000F5EE81471CC19780FA1FE780C0F6F820C0 +:1083D0009307600B6312F70285472300F41483C7E9 +:1083E000C4030D47639EE706930720202313F4146C +:1083F00085472314F41415A08327890D13971701BB +:10840000635D070083A74409982383A784099C23FD +:10841000F98F9583858B2300F4142285EF10407C1F +:108420008327090E0A24294693F7072091E305467E +:1084300093050008EF5070618327890D139717018A +:10844000635807000A24514693050008EF50F05F77 +:108450002244B24002492685924441016FF09FEACE +:108460002303F414A303F4144DBF011122CC06CE50 +:1084700026CA4AC84EC68347C5072A8499EB0325F6 +:10848000440855E158348547631DF71268582C5C41 +:1084900011A20325450821C53C25B1C38347D40754 +:1084A000C1C3834734081307000493F7070C63998B +:1084B000E7069304E407A6856905EF509069054730 +:1084C00083274408631DE5020947230EE406194685 +:1084D000A6851385C7009780FA1FE780C0E503478C +:1084E000C4078947E30DF7F819469305E407130518 +:1084F00064069780FA1FE78000F551F119A09C33BC +:1085000091EB8144F240624426854249D244B2490B +:1085100005618280B737002083C79726E9D3D5B796 +:108520001C31D5FFF9BF3C29B1DF83475407D1C7C0 +:108530008347B4071307000493F7070C639FE7060C +:1085400093096407CE851305A502EF5090602A8930 +:108550008547AA84032544086318F9041946CE8583 +:1085600051059780FA1FE78000DDB737002083C7E9 +:10857000972689DB8947230AF4065C34E39427F9BC +:1085800083274408AA23DA23EE239E274207598D26 +:10859000C207DD8D6244F240D2444249B2490561CE +:1085A00017A3FA1F6700C3B81C31A1DFB73700203B +:1085B00083C79726E38807ECA9B71C31E39407EC3F +:1085C00089B70347D40683475407E31CF7F21946DB +:1085D000930564071305E4069780FA1FE780A0E679 +:1085E000B334A00005B7411106C622C42A84EFF0B7 +:1085F0003FA8B73700200327440983A7C73EB70623 +:108600008000B8DBB737002083A7873B9843558F9E +:1086100098C3D857719BD8D797A0FA1FE780E0EA94 +:10862000B2402244014541018280411122C42A8482 +:108630000325850981460146814506C626C24AC0F2 +:1086400097A0FA1FE78000EB631D050E83248409C1 +:108650009D469C20BD8B1CB4983038A46395D70EE2 +:10866000BC200346D40393D667006310D60E93F75D +:10867000F7031389440063FCE70C230A0406BC30AB +:10868000858B9DC38547230AF4069C20CA8519461D +:108690009987858BA30AF406130564079780FA1F50 +:1086A000E78060C91389A400230E0406BC30898BBF +:1086B0009DC38547230EF40683278409CA8519467E +:1086C0009C231305E40719099D83A30EF4069780E4 +:1086D000FA1FE78040C6BC30A18B81CB83471900CD +:1086E0000347F40391836316F7062285EFF0FFD763 +:1086F00085479304F007631AF5008347E40389CFA5 +:10870000FD17230FF402EFB0405FB24022442685EC +:1087100002499244410182800347C4038947631A96 +:10872000F700B737002083C7F73C81C78D47230E7A +:10873000F40222852244B2409244024941016FF082 +:108740009FEA8544D9B79D44C9B795447DBF8D4400 +:108750006DBFD1445DBF011126CAAA8403258509D6 +:1087600081460146814522CC06CE4AC84EC697A016 +:10877000FA1FE78020D8054459E503A98409214759 +:10878000034409003D8880B483471900BCA46314E6 +:10879000E4088349290013D7690041E313871900CE +:1087A000639FE706034739008D47631CF70683473D +:1087B00009001946930549009987858BA38AF40619 +:1087C000138564079780FA1FE780E0B68547238EFC +:1087D000F40683A7840919469305A9009C231385F1 +:1087E000E4079D83A38EF4069780FA1FE780A0B468 +:1087F000B547639AF9022685EFF03FC709C526857C +:10880000EFF0BFB301442285F2406244D2444249B2 +:10881000B249056182801D44FDB71544EDB765443A +:10882000DDB74544CDB76144F9BF011122CC2A849C +:108830000325850981460146814506CE26CA4AC8D8 +:108840004EC652C497A0FA1FE780C0CA6314052819 +:10885000832484091D4698209376F70014B49C3035 +:1088600093F7F7033CA46395C61E7D57230DE402DE +:10887000B820054693566700A30ED402639EC62413 +:108880001377F7030507639BE724B830E147937636 +:10889000F7FB6397F624937787002A89938944002E +:1088A0008DC3DC308566938606F0A207F58FD42051 +:1088B00093896400D58F2312F404DC309183A30FD5 +:1088C000F402418B014641C7EFB0204383C7090042 +:1088D00093F7F703A30DF40203C629008967938772 +:1088E00007F022067D8E83C719005D8E4206418601 +:1088F0002311C40483C729009583230EF4028387C0 +:10890000090063DF07009307C012834694030547FD +:108910003306F6023C246397E600A9078E0729A8D0 +:10892000F947E5B7373700200347F73C89078E073B +:108930006DC39387770D86071D8EB70700801307D9 +:1089400046ED93C737ED63EFE718230DD402BC3033 +:1089500093F7070491C70347940389476307F71800 +:108960000347A4039307F00F630BF70C13070050A2 +:108970006364C70AB737002083A5C73E79777D17A0 +:10898000D445758FD8C50100010003A7C73E89658E +:10899000B73400200CC7130500F89385443C130638 +:1089A00056EDC8A1060670D354C7138A443CBE894D +:1089B0007C53FDFFA147A30CF4022285EFF0AFD852 +:1089C00083A6C93EF977FD17D846F98FDCC60100AA +:1089D000010083A7C93E896694C7930600F8230265 +:1089E000DA0093062059F4D3D8C797A0FA1FE7807E +:1089F000C0AD83C7443C858BB9C3228562442382C2 +:108A0000043CF240D2444249B249224A05616FF027 +:108A1000DFC19387A70419B7034704046311F70262 +:108A20001306F6D8930710273356F602378505004C +:108A300093060404A28513052501EFA0BECEF240E3 +:108A400062444A85D2444249B249224A0561828041 +:108A5000398B51EFE91793F7F70F7D47130900089A +:108A6000E36FF7FC8547230AF4069C20194693859B +:108A700024009987858BA30AF40613056407978061 +:108A8000FA1FE780408B1C34230E040605476392CF +:108A9000E70283258409230EF40619469C21130559 +:108AA000E407A1059D83A30EF4069780FA1FE780D3 +:108AB00080882285EFF07F9B85472149E311F5F8F7 +:108AC00022856244F240D2444249B249224A0561B9 +:108AD0006FF07FB10549A5B7154995B70D4985B721 +:108AE0000949B1BF1309100299BF5D4989BF130934 +:108AF0000008B1B73971B737002022DC03A4C72FB3 +:108B00004AD856D237390020B73A00204ED652D430 +:108B10005AD05ECE62CC66CA06DE26DA6AC8130B6D +:108B2000200B930B400B130C600B930C300B130AB0 +:108B3000493C93894A0E7C20639D67018347493CE9 +:108B4000858BB5CF22852302093CEFF01FCE65D57A +:108B5000BDA063987709B73700209387473C9833C7 +:108B6000058B31CFB73900201389490E0355890091 +:108B7000A38007009307800F3305F50237460F00E7 +:108B80008146130606248145EF50812183A7490EB3 +:108B9000AA842EC68297B245B307950033B5A700C5 +:108BA0002E953E878326490019E163E4D700338779 +:108BB000D74038D0EFB060142285EFF00FF85C207A +:108BC000638007146254F250D2544259B259225A67 +:108BD000925A025BF24B624CD24C424D21616FF0D3 +:108BE0002F8763968709373700200326C73EF9771A +:108BF000FD175446F58F5CC60F1000008327C73E53 +:108C0000B7340020096798C7130600F81387443C5F +:108C100050A3373700200326873B184231830D8B42 +:108C20001DEB13076019F8D3D4C797A0FA1FE7808C +:108C3000C08983C7443C858B89CB2382043CEFB039 +:108C4000C00B2285EFF03FB13DD98347E403850790 +:108C5000230FF402ADB71842094631830D8B63151B +:108C6000C7001307E043C1B71307E01B6DBF639C48 +:108C700097018347493C858BB9D322852302093C60 +:108C8000EFF0BF9AE9B51307500BE39AE7F2834779 +:108C90001A00858B8DD78346C403A3000A000547BD +:108CA00083A74A0E03DD89006372D7048297374693 +:108CB0000F00AA841306062481461305804D330550 +:108CC000AD028145EF50C10DB307950033B5A70044 +:108CD0002E953E8783A6490019E163E4D7003387C8 +:108CE000D740930760FB38D07CA0B1B58297374658 +:108CF0000F00AA841306062481461305800FC1B70E +:108D0000F2506254D2544259B259225A925A025BDA +:108D1000F24B624CD24C424D216182804111B737F7 +:108D2000002022C403A4C72FB73700201387473C75 +:108D300006C618379387473C19C794270D47639495 +:108D4000E600A3840700F833A1466386E600F83303 +:108D500099466396E600F83398A7054798B7EFA0C1 +:108D6000D0792285EFF00FDA1306A00293050008F0 +:108D70000145EF50804D034504049307F00F63074E +:108D8000F500EFA03EB4FD572300F404B2402244A6 +:108D900041018280B787050037370020938707B6E7 +:108DA0002320F730B797050037370020938747AF68 +:108DB0002320F73A82808347651393D63700AA961B +:108DC00083C5061313F7770033D6E540058A63039E +:108DD00006101C39898B639607108327450A898BF7 +:108DE00063910710011122CC2A841305851306CE46 +:108DF000EFE0BFB803475413834744036360A70AF7 +:108E0000138567FF62057D56FD462C00618532C4DF +:108E100036C697A0FA1FE780808503268413224771 +:108E20008326C413B247718FF58F6314E600638AFB +:108E3000F6002800EFE07FB4A54763EFA702A30A7E +:108E4000A4128347E4188DE7034664132245B24514 +:108E5000EF40916F058909CD8327C41093F7070868 +:108E600081CB8327440A37074000D98F2322F40A95 +:108E7000F2406244056182806D15A30AA412154672 +:108E80002C00130584129770FA1FE780C04A8327CD +:108E9000440A93E727002322F40A65B7138547FFA6 +:108EA0008345641362056185EFA0702259F903467A +:108EB000641305458145EF40F16B03278413832735 +:108EC000C4131345F5FF93C5F5FF698FED8F3AC4C1 +:108ED0003EC675B78547B397E700CD8F2388F61256 +:108EE00082808280411122C426C206C64AC08347BE +:108EF00065032A84B73400208507230BF5023C392B +:108F0000639507545C251307000438B91839B19BE1 +:108F100093E737005CA593178701A30D0500E18750 +:108F200063D807001377F70718B9EF30007939A82D +:108F30008327850A93F62700B9C6F59B2324F50AF3 +:108F400083270510918B8DCFEF100028383C854783 +:108F50006317F70E832784115824DC4398A38327D3 +:108F600084115838DC4398B30327841183A7C43E87 +:108F70005843B2402244B8DB924402494101828006 +:108F8000EF108022E1B793F6170099C6F99B2324CE +:108F9000F50AEF10E0145DBF1429054963972627F1 +:108FA000C5CF13F7070119C7BD9B2324F50AEF109E +:108FB000806F69BF13F7070401CB93F7F7FB2324F6 +:108FC000F50AEF10002559B713F7070801CB93F7FF +:108FD000F7F72324F50AEF2030348DBF13F707107D +:108FE00009CB93F7F7EF2324F50A2285EF104034DD +:108FF000B1BF13F7074001CB93F7F7BF2324F50A5E +:10900000EF107061A1B713974701635C07007D778C +:109010001307F77FF98F2324F50A2285EF10E0402C +:1090200035B713972701635A070079777D17F98FB2 +:109030002324F50AEF10404F11BF2324050A83278C +:109040000411582498A383270411583898B383A790 +:10905000C43E0327041131BF8327450A638B073CB5 +:1090600093F6070199C6BD9B2322F50AEF10005F16 +:10907000F1BD93F6070481CA93F7F7FB2322F50AA3 +:10908000EF10400CE1B593F607208DCA4D8B6317A6 +:10909000071A8327451A89EF8327440A2322041AD3 +:1090A000228593F7F7DF2322F40AEF10006979BDD8 +:1090B0009780FA1FE78060A165F149BD93F617001C +:1090C00099CA4D8B631C0716F99B2322F50A22854A +:1090D000EF00306FA5BD93F6270091CA4D8B631F3B +:1090E0000714F59B2322F50AEF10604C85B593F623 +:1090F000074081CA93F7F7BF2322F50AEF10E00E6D +:10910000B1B59396470163DB06007D771307F77FC0 +:10911000F98F2322F50AEF20F0140DBD93F6070214 +:109120008DC29780FA1FE780409AE30105E283270A +:10913000440A228593F7F7FD2322F40AEF00507CBE +:1091400031B593F6870081CADD9B2322F50A22857B +:10915000EF10903AE5BB63DD070086078583232285 +:10916000F50A8327050A93E727002320F50AC1BDE6 +:109170009396370163DC06004D8B69E37D777D179D +:10918000F98F2322F50AEF10200AC9B3139727019C +:109190006358070079777D17F98F2322F50AB1B557 +:1091A0001397F700635A070041777D17F98F232241 +:1091B000F50AEF10C06959BB1397E700635A07001F +:1091C00001777D17F98F2322F50AEF100024BDBB2C +:1091D0001397B700635B07003707F0FF7D17F98F20 +:1091E0002322F50AEF10202D95B313979700635BA8 +:1091F00007003707C0FF7D17F98F2322F50AEF100C +:109200004038A9B32322050A1DBD8DCA93077004F7 +:109210006380F61A63EDD70A9307E002638EF602C5 +:1092200063E9D70493073002638AF60063EAD70044 +:10923000E947638AF61AF547638DF61A2285F5B178 +:10924000930770026387F61A9307C0026382F61CC5 +:1092500093076002E394F6FE2285EF3000461C3847 +:10926000DD9B1CB88327040A93E707012320F40A37 +:1092700019A293078003638AF61863E7D70293075E +:109280001003E386F6D293077003E399F6FA854755 +:10929000A306F5049305C50A41461305C50C97704E +:1092A000FA1FE780400965B5930710046387F60A43 +:1092B000E3E6F6F893075004E3E2F6F88357450730 +:1092C00003576507BA978587231CF50411AA9307EE +:1092D00060066387F61663EDD70293075005638A2D +:1092E000F61463EBD7009307B0046381F614930779 +:1092F0001005E382F6CE99B793077005E3F7D7CE52 +:1093000093071006E39CF6F22285EF30003BA5A000 +:109310009307200763E8D70293071007E3F6F6FEEA +:10932000938766F993F7F70F0549E369F9F0EF3092 +:10933000C0388327040A056713070780D98F2320C5 +:10934000F40A09A293076007E389F6CC9307600843 +:10935000E396F6EEEF10401D39A88347B502794732 +:109360006391E70283270510918B89CBBD472306C4 +:10937000F502EF00706585471CA8C9BEEF00D062FA +:10938000DDBF0549639B27018357450703576507E1 +:10939000BA978587231CF5041DBBEF300032832765 +:1093A000040A2308240193E727002320F40A79BE46 +:1093B0000347B502F947631DF700EF00F05E23088D +:1093C00024018347A40293E717002305F402BDBEDE +:1093D0008357450703576507BA978587231CF5040C +:1093E000EF00303EF9BFEF009049D947230AF4045B +:1093F000B1BE2285EF30602C8327040A23080400C5 +:1094000093E717002320F40A91B6EF00F0513DBE18 +:109410008D472306F5042322050E2324050E23265B +:10942000050E2328050EEF00F0490DB6EF00705E23 +:1094300099B79770FA1FE7804069E30905B0FDBB53 +:10944000EF10701D2308240111B6B7370020938751 +:1094500087269A2B05079AABD5BC79714AD0373944 +:1094600000209307892622D403A4470A26D256CA8D +:109470005AC8B7340020B73A002037EB06004ECE6A +:1094800052CC06D65EC6130989269384443CB7396C +:109490000020373A0020938A4A0E130B4B3C7C2461 +:1094A0001307100C6391E71683A7C93E98430D8BF1 +:1094B00005C737370020230607DAB84B619BB8CBC6 +:1094C00098431367870098C39C438D83858B89C716 +:1094D000010001000100010083C7CA0089E79780ED +:1094E000FA1FE780408603A6C93E9307000AB70526 +:1094F00000827CD283278A3BFD15B73B0020D857DA +:109500002285719B13671700D8D70347241413775C +:10951000F70393169701D8576D8F558FD8D7032728 +:10952000840998C70327C409D8C358421367170092 +:1095300058C283A60B44D856759BD8D603476413EC +:109540009376F7079843137707F8558F98C3EFF092 +:109550007F995C38DE86C1C38347C404898BA5CF5D +:10956000A28505459790FA1FE78080D701C5EFA037 +:10957000C0783DA303278A3BB70633001C4393F70B +:10958000F7E71CC31C4393F7F7E793E707101CC3E7 +:1095900003A70B441C47D58F1CC783A7C93E1307DD +:1095A000A007B8CB5038930700F883456414BCB0CB +:1095B000930730FC7CA4238304008947110663963B +:1095C000F5008345841493E5250001459790FA1F23 +:1095D000E78040FAE9B503278A3B1C4393F7F7E796 +:1095E0001CC31C4393F7F7E793E707101CC303A7BB +:1095F0000644B70633001C47D58F1CC783A7C93E56 +:109600001307A00579BF1307400C6394E74EBC30E5 +:10961000858B6384074ABC30E207E18763D3070286 +:109620008347641313D7370093F677002297854753 +:10963000B397D7008346071393C7F7FFF58F230827 +:10964000F7127C3413F7270009EB130700F893E7B0 +:10965000270058AC7CB42324090A8345C40403259D +:109660004411930624031306440385899790FA1F37 +:10967000E78040E88347440303476904E8A0998FE3 +:10968000230AF402FC20858B639507348347A402E8 +:10969000A30C04002310040893E727002305F40219 +:1096A0002285EFC03F8B29ED83278411A309040095 +:1096B0009DCF383C0DCF9837058B15EBBA27C843A3 +:1096C000136707F0BAA79770FA1FE780A0A4835723 +:1096D000440485072312F404832784119C43232C1C +:1096E000F4108327441A81C7FD172322F41A5C382B +:1096F00081CB8347C404898B81C72285EFC0DF8972 +:10970000FC20898B638307108347C404858B638E99 +:10971000070E1C3C85071CBC2285A38104009770A2 +:10972000FA1FE780805685476318F52E2285EFF0F3 +:109730006FFB8347C404898B6386072A5C38638385 +:10974000072AA28505459790FA1FE78060B9E310C4 +:1097500005E203278A3BB70633001C4393F7F7E77C +:109760001CC31C4393F7F7E793E707101CC3B737F5 +:10977000002003A707441C47D58F1CC783A7C93EF9 +:109780001307A007B8CB4C380345641489479105EB +:109790006316F5000345841413652500EFA04021EE +:1097A00083278A3BB70680009843558F98C3D857C4 +:1097B000719BD8D7930730FC7CA483C7CA00A1E370 +:1097C000832704128DCF7834058B15CBD443D02753 +:1097D0008C270A248906EF00315D15E183270412E6 +:1097E000BA27A3840700136707F0BAA79C43232076 +:1097F000F4128357240481C7FD172311F404503851 +:109800008345641409451106D1B32285EFC0AFF634 +:10981000E31405F02285EFC02FF11C3813F7870001 +:1098200031C3782821C374384547636AD700372786 +:109830000200130747063357D700058B05E7930748 +:10984000D003230AF404930770021CA88347C404BE +:10985000858BE38307EC7C28E38007EC2285EFC04F +:10986000AFF85DBD54340D47639BE6027C381307A7 +:10987000A002637FF7007C381D47E389E7FCA3065D +:10988000F4028327840A93E717002324F40A7DBF98 +:109890008A07DA979C432285829771FD45BF383845 +:1098A00005EF1828C1466318D70093E717001CB8C6 +:1098B00085471CA815A0D5466315D70093E7270058 +:1098C000FDB7F1466314D7028327040A2308040076 +:1098D00093E717002320F40A7C28ADDB22859770DC +:1098E000FA1FE780202EE31905E28DB79306900555 +:1098F000631ED7080347A41401CB034664148546AE +:10990000B396C600631CD7000346B4140DCE83453E +:1099100074148546B396B6006307D60293E7070131 +:109920001CB859D7937647008357641EB9C60357AE +:109930008414938787E80DC30947B3C7E702938769 +:1099400057FD214739A87C2CE9DF8327040A93E7D8 +:1099500007202320F40AF1B72147B3C7E702938712 +:1099600057FDB3C7E7020357441EC207C18363F321 +:10997000E7003E872307E40425BF058B01C79387D3 +:1099800007FBC1B79387C7FB1147E1BF9307700679 +:109990006316F70203278A3B238504007C53ED9B63 +:1099A0007CD3372702408347870493F7D70F2304DC +:1099B000F7045C2493F7F7FD5CA4DDBD9307500921 +:1099C000E31CF7F08347E41893E747002307F418F4 +:1099D000C5B51C2C85071CAC8357E90085072317E8 +:1099E000F9001DBB03278A3BB70633001C4393F7DE +:1099F000F7E71CC31C4393F7F7E793E707101CC373 +:109A0000B737002003A707441C47D58F1CC783A77F +:109A1000C93E1307A005BDB3EFA0202EB737002025 +:109A200083C7070F95EF832704129DCB7834058BEE +:109A300005CBD443D0278C270A248906EF00D136E2 +:109A400005E183270412BA27136707F0BAA79C43DE +:109A50002320F4128357240481C7FD172311F40433 +:109A60002285EFD0EF941C3C85C793F7070F81CB7D +:109A70009305D0032285EFC03FD2A305A402B737D8 +:109A8000002083A7070D89C79545130560088297B5 +:109A90001C2C99C78347290581C72285EFF0AFB1F8 +:109AA00022852254B25092540259F249624AD24A53 +:109AB000424BB24B45616FC0BFBA83A7C93EFC534E +:109AC000E39F079CEFA06023BC30E207E18763D7E8 +:109AD00007008357290185072319F9002285EFD054 +:109AE0002F8DBC30E207E187E3DC07FAEFA00EAA76 +:109AF00055B71307300CE39CE7A6BC20858BF9CB48 +:109B00008327040A23810400858B95C3EFA0E01E00 +:109B100003457402EF901EDB83454405FD57A30304 +:109B2000F4022285EFC05FC7A305A40295BF835549 +:109B3000041E0356241E034574149105C205C181F9 +:109B4000EF90707B8347C404B73B0020858BB9CB73 +:109B5000A28501459780FA1FE780C07F03278A3BD3 +:109B6000B70633001C4393F7F7E71CC31C4393F776 +:109B7000F7E793E707101CC303A70B441C47D58FD7 +:109B80001CC783A7C93E130790070356041EB8CB12 +:109B9000930740FC110642067CA44182834574145D +:109BA00005452DB403278A3BB70633001C4393F7C2 +:109BB000F7E71CC31C4393F7F7E793E707101CC3B1 +:109BC00003A70B441C47D58F1CC783A7C93E1307A7 +:109BD000900565BF83A7C93EFC53E392078C41BA49 +:109BE000011126CAB73400204EC69389842683C744 +:109BF00039004AC83739002006CE22CC52C4130996 +:109C0000490E3A3DA307F50283578900130A003233 +:109C10002A843307F70237460F00130606248146CD +:109C2000814593848426335747032326E50813058B +:109C3000C0123385A702EF40A1162312A408228583 +:109C4000EFC08FD8035789003E3C9306204E2285F3 +:109C5000B387E702B3F74703B387D702B3C7E70277 +:109C60001EB08357440886072311F408EFB03FF76E +:109C70002285EFC0CFA86E3C22859205F915C2055A +:109C8000C181EFB01FF22285EFD03FD4E147A30A94 +:109C9000F412B737002083A7473923A4890A898B98 +:109CA00095C3373900201309C9098327490399CB84 +:109CB0008325840935458297832749038325C40971 +:109CC00039458297228562442397040023A8040023 +:109CD000F240D2444249B249224A05616FC0DF8D49 +:109CE000411126C206C622C4AA84EFD03FA019C5DE +:109CF0002A842685EFC03FA82322A41AB24022441A +:109D000092444101828001114EC606CE22CC26CA61 +:109D10004AC8EFD03FAFAA892DC5EFD03F9D2A8416 +:109D200063010518C1473EA5930700FB7CA53739A1 +:109D3000002085471CA99307C9099E2B13074010D3 +:109D40001309C90995073E85C207C1836374F700EB +:109D50001305401013170501418393070004637432 +:109D6000F7001305000442059305D0244181976054 +:109D7000FA1FE780202D2328A41001ED0A24EFD03C +:109D8000FFB6F24062444E85D2444249B249056171 +:109D90008280B737002083A7873EB734002013871F +:109DA00084268326C70D232AF4108327870D1833B2 +:109DB000232ED40E232CF40E9384842609E793F7E4 +:109DC000F7F3232CF40E8327C40F0327840F2313E8 +:109DD00004142326F410BE3C2324E4100347E402B9 +:109DE0002312F41483C7A404136717FC2307E402A7 +:109DF000A304F4168327440A03A7040D93E607047B +:109E00002322D40A9316670063D6060093E707055A +:109E10002322F40A83C7240581CB8327440A37070A +:109E20004000D98F2322F40AFD572310F4047EB09A +:109E30002304F4028567938787BB2315F4042285E6 +:109E4000EFC0CF90034549012301A414EF90D01B2C +:109E5000D147A303F41893078002A302F4189307D1 +:109E6000006F231CF4169307F007230DF416F57703 +:109E70009387A7EB231EF4168327C40FA301A41412 +:109E80002300A418A300A4182301A418A301A41854 +:109E900093F7070881C785472307F4182394040024 +:109EA000CDB58549F9BD411106C6EF60F004EFE07C +:109EB0007FEEB240B7970500373700209387A7455C +:109EC0002322F73A4101828074290D47AA876384CF +:109ED000E60005458280032745115023A305C502EE +:109EE00038336313D70238356DF71829930600020B +:109EF0006307D7009306300201456316D7001307A6 +:109F0000600298AB01458280BD46631ED7001829C8 +:109F10009306000401451377B70FE316D7FE130726 +:109F2000500498AB8280B9466319D70014291307EF +:109F30000003E390E6FA0547E9B7D1466316D70078 +:109F4000142913070005F5B7D9466314D70214295D +:109F500013075005E39FE6F60327050A136707205A +:109F60002320E50A054718A9983B136707F898BB13 +:109F700051BFE946631AD700142913075006E39A24 +:109F8000E6F41307A006B5BFFD46631AD7001429EF +:109F90001307A007E39FE6F2130710F89DB7930697 +:109FA0003002E318D7F2142913075008E393E6F2BE +:109FB000054718A90347A502136717002305E50203 +:109FC00065B7B1475CB983270511C5CB0947A30A1B +:109FD000E5048356E505035705048355050663E745 +:109FE000E60013865500998E6343D602B7360020EB +:109FF00083D6C6310D4811466365D800850613F631 +:10A00000F60F2E972107A30AC504231FE504238119 +:10A01000070003475505B8B3034765050356850593 +:10A020008356A505D8A303576505F0A394A72183FC +:10A03000D8B313578600F8B313D7860098B70357E1 +:10A04000C50593558700ACB78345E505B8A7CCA7F0 +:10A050008355E505A181CCB72E3D81476399C500A5 +:10A06000523D6316D6007E3D998F93B7170023119A +:10A07000F506C1471CA901458280054582808327DA +:10A080000511094758B999CFB8A303474505B8B397 +:10A090008347A50293E787002305F502F1471CA932 +:10A0A000014582801D45828085475CB98327051163 +:10A0B00081CB1547B8A39307B0021CA90145828044 +:10A0C0000545828085475CB98327051181CB1947F7 +:10A0D000B8A39307D0021CA9014582800545828060 +:10A0E00089475CB98327051191CB1D47B8A3832706 +:10A0F00005110347D5020145B8B38280054582802A +:10A1000085475CB98327051191CF2947B8A38347B9 +:10A11000A50293E747002305F502930750031CA906 +:10A12000014582800545828085475CB983270511FA +:10A1300081CB2D47B8A3930770031CA901458280EA +:10A14000054582800327051199475CB9B1473CA3B7 +:10A15000B737002093878726D62B34B3F42B54A32C +:10A16000F62BA18254B3942F74A39C3F7CB38347F6 +:10A17000E50213F7070401CF9307A0031CA9834747 +:10A18000E50293F7F7072307F50201458280858BE7 +:10A19000FDD78327050AA30505022307050293E7D8 +:10A1A00007042320F50AE1BF89475CB9832705111D +:10A1B00091CB3547B8A3832705110347B502014565 +:10A1C000B8B38280054582808D475CB9832705112D +:10A1D00099CB4547B8A30347C502B8B30347B502B7 +:10A1E0000145D8A382800545828085475CB98327D5 +:10A1F000051191CF4947B8A39307A0041CA9834731 +:10A20000A50293E747002305F50201458280054535 +:10A21000828085475CB98327051189C74D47B8A35C +:10A220000145828005458280032705118D475CB971 +:10A23000D9473CA38346451434B383475514918AC8 +:10A240005CA30357651EA9C69306F034814763FDDE +:10A25000E600930787E8035785140DCB858793871E +:10A2600057FD8D87C207C1830357451E63F3E7007F +:10A270003E878347A5022307E50493E747002305AC +:10A28000F502930750051CA9014582808D87C1BF47 +:10A29000858B99C7930707FB2147B3C7E702D9B757 +:10A2A0009307C7FB1147D5BF032705118D475CB93D +:10A2B000DD473CA3834745143CB38346551454A360 +:10A2C0000347B514F98F93F647000357651EA9C6D7 +:10A2D0009306F034814763FDE600930787E8035750 +:10A2E00085140DCB8587938757FD8D87C207C18362 +:10A2F0000357451E63F3E7003E87930780051CA9BB +:10A300008347A5022307E50493E747002305F502E9 +:10A31000014582808D87C1BF858B99C7930707FB55 +:10A320002147B3C7E702D9B79307C7FB1147D5BF8A +:10A3300095475CB98357050403270511E146A1073A +:10A34000C207C1832316F51434A38346A51434B37E +:10A350000346B514A30207002303070050A3832577 +:10A36000851441766D8E01C65CB3A1837CA393F7FF +:10A3700046000357651E9DCF9306F034814763FD69 +:10A38000E600930787E8035785141DC385879387E5 +:10A3900057FD8D87C207C1830357451E63F3E7004E +:10A3A0003E87930790052307E5041CA90145828099 +:10A3B0008D87F1BF858A99C6930707FB2147B3C7ED +:10A3C000E702C9BF9307C7FB1147D5BF8326051115 +:10A3D0008D475CB9E547BCA28347751403466514F5 +:10A3E0000547B317F7003317C700D98FBCB28347AF +:10A3F0001514DCA28347A50293E747002305F50265 +:10A40000930700061CA90145828089475CB9832710 +:10A4100005117547B8A3373700200347B726B8B3EF +:10A42000930750071CA90145828089475CB983279F +:10A4300005117947B8A30347F502B8B38327050A86 +:10A440002167D98F2320F50A85471CA90145828001 +:10A45000B737002003A7C72B930780055423B38782 +:10A46000F602145703270511BE96A5475CB993075A +:10A4700000023CA30356651E8357251EB297D05A8F +:10A480009387C71263F3C700B2873CB313D6870024 +:10A49000C18350A35CB39C5E7CA313D68700C183A9 +:10A4A00070B31CA7DC2E1CB7DC3E3CA79307C0078B +:10A4B0001CA901458280832705111146130730022C +:10A4C00050B9B8A303472517118B0DCB0347451788 +:10A4D000238207009306F7FF05473317D700B8B369 +:10A4E00003473514D8B38347A50293E747002305F4 +:10A4F000F502930750F81CA9014582808346751424 +:10A500000947639FE600373700200347F73C01C740 +:10A510002147B8B311A0B0B30347F517D8A3C9B703 +:10A5200005473317D700F5B795475CB98327051161 +:10A5300013074002B8A3A38107000307351483065D +:10A5400095176394E6008946B4B38306851763962E +:10A55000E600B43393E61600B4B383067517D4A3AC +:10A5600003466517D8B3F0A383472517858B81CBA6 +:10A5700099C68327050A4167D98F2320F50A01452B +:10A58000828091475CB98327051113078002B8A325 +:10A59000373700200347A72BB8B32947D8A31307A1 +:10A5A0002003D8B3930750F91CA9014582804111BB +:10A5B00026C28324051106C622C4A1475CB9A1C4E2 +:10A5C00083570504035705062A8493058512BA9715 +:10A5D000A9072317F5128547BCA01385340015463B +:10A5E0009760FA1FE78020D58347E41201459CA4B9 +:10A5F0008357E412A1839CB4D5471CA8B2402244DF +:10A600009244410182800545D5BF411126C2832471 +:10A61000051106C622C4B5475CB99DCC91472A8472 +:10A62000BCA09305451C2146138534009760FA1F92 +:10A63000E78060D01385B40011469305C41C976071 +:10A64000FA1FE78040CF930720021CA80145B240C3 +:10A6500022449244410182800545D5BFA5475CB99B +:10A66000832705119DCF411122C406C62147B8A3F7 +:10A670002A84032505119305840F21460D05976053 +:10A68000FA1FE78040CB8347A402014593E74700C8 +:10A690002305F402930700031CA8B24022444101A1 +:10A6A00082800545828083270511A9C3411122C4F8 +:10A6B00006C6254758B9B8A32A8403250511930572 +:10A6C000840F21460D059760FA1FE780C0C68327D7 +:10A6D000040AA3050402014593E707022320F40AB4 +:10A6E00085471CA8B24022444101828005458280F2 +:10A6F000A5475CB9832705119DCF411122C406C629 +:10A700003947B8A32A84032505119305840F2146F0 +:10A710000D059760FA1FE78000C28347A402014538 +:10A7200093E747002305F402930700031CA8B240F7 +:10A7300022444101828005458280E1475CB983273C +:10A740000511D1C3411122C406C63D47B8A3034732 +:10A7500045072A8493058506B8B303475507314654 +:10A76000D8A303476507D8B3035765072183F8A328 +:10A770000347A505F8B30357A505218398A7034709 +:10A78000C50598B70347D505B8A703574506B8B719 +:10A7900003476506D8A7035765061385E70021839D +:10A7A000D8B79760FA1FE78000B98347A402014534 +:10A7B00093E747002305F402930700041CA8B24066 +:10A7C00022444101828005458280E1475CB98327AC +:10A7D0000511A5CF411122C406C64147B8A30347BE +:10A7E00045072A8493058506B8B3034755073146C4 +:10A7F000D8A303476507D8B3035765072183F8A398 +:10A800000347A505F8B30357A505218398A7034778 +:10A81000C50598B70347D505B8A703574506B8B788 +:10A8200003476506D8A7035765061385E70021830C +:10A83000D8B79760FA1FE78000B0930740041CA8C0 +:10A84000B240224401454101828005458280411188 +:10A8500022C40324051126C24AC006C6930730024B +:10A860005CB9F1473CA083470515832405162A8966 +:10A870003CB0834715155CA0638C041C03270509B5 +:10A880000325C508B73700209387470E6362A71AD0 +:10A890003305A74003A7040A636FA7183305A74031 +:10A8A00037470F0013070724B335E5029227814687 +:10A8B0003305E502EF30C14E37C70300130747FCED +:10A8C0007C20637DA7161307C0123355E502819BD8 +:10A8D00048B021817D895D8D1365050268A07C20CB +:10A8E00019469385640D93F7F7037CA083A7C40DE5 +:10A8F0001305D401A183C207C1837CB0A1831CA42A +:10A9000083C7040B1CB483C7140B3CA483C7240B5C +:10A910003CB483C7340B5CA483A7440B13F7F70143 +:10A920005C34819BD98F5CB403C7F40DFD8B160793 +:10A93000D98F5CB483C744097CA483C754097CB411 +:10A9400083C764091CA883C774091CB883C784091A +:10A950003CA883C794093CB883C7A4095CA803D763 +:10A96000840893071700C207C1835CB8A1837CA841 +:10A97000834709047CB88347190418BC21831CACA5 +:10A9800038AC8347F90203C7440D9607D98F03C734 +:10A99000540D1207D98F3CBC83C7C40D1387F7FF32 +:10A9A0008547B397E7005CAC9760FA1FE780A098F3 +:10A9B00083C7040EB1C71307B002A30AE900130747 +:10A9C000A00238A003C7040CA302E40203C7140CBE +:10A9D0002303E40203C7240CA303E40203C7340CDB +:10A9E000A304F4022304E40283C7140E2305F40233 +:10A9F00083C7240EA305F40283C7340E2306F40292 +:10AA0000232009168327090A370700800145D98FBB +:10AA10002320F90A83470904A301F4028347190498 +:10AA20002302F402B240224492440249410182804E +:10AA3000D4433697B1BDD44336978DB57947335556 +:10AA4000E50293F7070C48B021817D895D8D79B5CA +:10AA5000832445160545F9D4032709090325C908A8 +:10AA6000B73700209387470E6361A7163305A740C9 +:10AA700003A78409636EA7143305A74037470F0067 +:10AA800013070724B335E502922781463305E50213 +:10AA9000EF30013137C70300130747FC7C20637C8C +:10AAA000A7121307C0123355E502819B48B02181DC +:10AAB0007D895D8D1365050268A07C20194693850C +:10AAC000640393F7F7037CA083C764081305D401DC +:10AAD0007CB083D76408A1831CA483C7040A1CB478 +:10AAE00083C7140A3CA483C7240A3CB483C7340A2E +:10AAF0005CA483A7440A13F7F7015C34819BD98FC8 +:10AB00005CB40347F902FD8B1607D98F5CB483C789 +:10AB1000C4087CA483C7D4087CB483C7E4081CA8F9 +:10AB200083C7F4081CB883C704093CA883C7140969 +:10AB30003CB883C724095CA883D7840893D68700D0 +:10AB40005CB874A883460904FD17C20774B883462D +:10AB50001904C1831CBCA18314AC3CAC83C7F407AB +:10AB60005D8F83C7540392075D8F38BC03C7040809 +:10AB70008547B397E7005CAC9750FA1FE780A07B4E +:10AB800083A7C40AA1C31307B002A30AE9001307ED +:10AB9000A00238A09823A302E40298332303E4021E +:10ABA000B823A303E402B8332304E402D823A304A4 +:10ABB000E402D8332305E402F823A305E402FC33BE +:10ABC0002306F4022322091635BDD443369779BDF6 +:10ABD000D443369755B579473355E50293F7070CBB +:10ABE00048B021817D895D8DC1BD411106C6AD474B +:10ABF0005CB9832705111307900293057519B8A353 +:10AC00001385370029469750FA1FE780C072B2407B +:10AC100001454101828083254511411126C206C6A6 +:10AC200022C4DC21B8310568A207D98F1387A7FF9A +:10AC3000420741839306A8C7F94463E9E60AF8216D +:10AC4000D431130808C82207558FF9446360E80A15 +:10AC5000636EF7089025F4312206558E9306301F57 +:10AC600063E6C608B42583C89500A206B3E61601BC +:10AC7000636ED806130816003308F802939836005E +:10AC80006356180783C8B5001398080113580801C4 +:10AC900063840800636C07058358A5038144639CA3 +:10ACA0001701631AF7008358C5036396C800663D11 +:10ACB000958C93B41400231DC504231AF506231B99 +:10ACC000E506231ED50423120507DC35D8252A8482 +:10ACD000A207D98F2313F5063146B905130585065A +:10ACE0009750FA1FE780206591475CBCB240224430 +:10ACF0002685924441018280797126D283240511F0 +:10AD000006D622D44AD04ECEDD475CB96383041008 +:10AD10008D47BCA02A84EF802ED41309541B2AC46B +:10AD2000EF808ED321462C002AC64A859750FA1F01 +:10AD3000E78060608347741B0347641B9309D41B3F +:10AD4000A2074207BA970347841BBA970347541BCD +:10AD50006207BA972324F40C0347A41B8347B41B50 +:10AD60004207A207BA970347C41BBA970347941B2D +:10AD70006207BA972322F40CEF800ECE2AC4114644 +:10AD80002C004E859750FA1FE780E05A8347E41B5A +:10AD90000347F41B2146A2074207BA970347D41B77 +:10ADA0009305B41A13853400BA970347041C62074D +:10ADB000BA97232EF40C9750FA1FE780C0578347A9 +:10ADC000441B0347341B2146A207D98FBCB4A1837F +:10ADD000DCA4CA851385D4009750FA1FE780A055DC +:10ADE000138554011146CE859750FA1FE780A05471 +:10ADF0008347A402014593E747002305F402930724 +:10AE000000021CA8B250225492540259F2494561E2 +:10AE100082800545C5BF411122C406C685475CB97D +:10AE20002A848345D516032705110345E516854673 +:10AE300093176500CD8F3CA3ED473CB35C240346DC +:10AE4000C41693E707025CA4EF80505C930770067A +:10AE50001CA8B2402244014541018280832745114C +:10AE60001303000ED023B8332206598E130756FE63 +:10AE7000420741836363E306F423D8331168A206D3 +:10AE8000D98E138786EB42074183130888146366C3 +:10AE9000E804982783C877002207336717019308CF +:10AEA00057FEC20893D808016369130383C897004B +:10AEB000BC27A207B3E71701938887EBC20893D892 +:10AEC0000801636C1801231CC51C231DD51C231EFF +:10AED000E51C231FF51C6FA01FE10545828034355A +:10AEE0000547AA8705456391E60AF42B31470545D6 +:10AEF000639CE60803A747113433A38AD70454336D +:10AF00005023A206D18E239BD7046C337423A20551 +:10AF1000D58D239CB704103714272206558E239D08 +:10AF2000C70434372827A206C98E239ED704482792 +:10AF300058372207498FAA3F239FE7040147631927 +:10AF4000B500CE3F6396C500FA3F158F1337170043 +:10AF50002391E706982B930600046300D70293061B +:10AF600040046314D700054798AB983B9546D4BF7F +:10AF7000136717F898BB0145828003C7A7021367C0 +:10AF800017002385E702C5B7828078298947631BAC +:10AF9000F70083274511BC33230AF504F5471CA9A4 +:10AFA000014582801D4582803C352A87B5EB742996 +:10AFB000B54705456397F606142B93070002639285 +:10AFC000F606832747110145D433D023A206420653 +:10AFD000B296F023B296B0336206B2962320D70C15 +:10AFE00094379027A2064206B296B027B296F03365 +:10AFF0006206B296232ED70AD427D037A20642067D +:10B00000B296B037FC27B296E207B6972320F70E28 +:10B010001C3B93E787001CBB930730021CAB82806C +:10B02000054582803C3585E378298547631BF70019 +:10B030001429130730026396E6009307C0021CA987 +:10B0400081473E8582808547EDBF74290547AA87E1 +:10B0500005456399E602982B9306B0026319D70061 +:10B060001307E00298ABA38507020145828093068F +:10B07000D00205456318D7001307E002A385070235 +:10B0800098ABE5B78280782989476319F704E947C7 +:10B09000A305F502832745113947BC336390E702C6 +:10B0A000182993070003631BF7028327050A93E718 +:10B0B00007022320F50A85471CA999A03D47639103 +:10B0C000E702832785101829F59B2324F5109307A1 +:10B0D00000046315F700930760041CA901458280F2 +:10B0E00049476394E70218299307A004E318F7FE81 +:10B0F00085471CA98347A50293E717002305F5029E +:10B100001C3993E707F81CB9D1BF51476390E70298 +:10B11000182993070005E313F7FC85471CA983272B +:10B12000050A93E707102320F50AD9BF5947639C06 +:10B13000E700182993075005E312F7FA8327050A59 +:10B1400093E70720BDB76947639EE7001829930777 +:10B150005006E315F7F88327050A056713070780EC +:10B16000D98F81BF7147E38BE7F67547639BE70093 +:10B17000182993075007E313F7F68327050A216779 +:10B18000C5B713073002E39BE7F41829930750086B +:10B19000B1BF38358547631EF70078296319F7007A +:10B1A00018296316F700930760031CA981473E85A1 +:10B1B00082808547EDBF74290547AA8705456390BE +:10B1C000E606982B930670036314D70203C7A70201 +:10B1D000238607049376070499C61377F7FB136752 +:10B1E00007012385E7021307800398AB014582809E +:10B1F0009306500305456314D7021307800398ABE9 +:10B2000003C7A7022386070401459376070481CA72 +:10B210001377F7FB136707012385E702828082809B +:10B22000782999476315F708032745113C33A3078D +:10B23000F5045C335423A207D58F2318F5047C331F +:10B2400074231307A003A207D58F14292319F5042B +:10B250008347E5026392E604858B99CB8327050A31 +:10B26000A30505022307050293E707042320F50A37 +:10B270008347A50293E717002305F50285471CA91C +:10B280001C3993E707F81CB98347E50293F7F7FBEE +:10B290002307F50201458280E207E187E3D207FE3A +:10B2A0008327450A93E707042322F50AD1BF054502 +:10B2B0008280782989476304F700054582808327C7 +:10B2C000451113070004BC33A305F5021C2993F6AE +:10B2D000B70F6396E600930750041CA90DA013074F +:10B2E00050056390E7028327050A93E70720232090 +:10B2F000F50A85471CA91C3993E707F81CB90145D5 +:10B300008280130750066395E7009307A006F1B704 +:10B3100013075008639BE70085471CA98347A502D4 +:10B3200093E717002305F502F9B7383559F71307E6 +:10B3300000026386E700130730026395E700930776 +:10B34000600261BF1307A007E399E7F6930710F8BF +:10B3500069B774290547AA8705456391E60403A7E1 +:10B3600087100545418B1DCB982B6317A70013074A +:10B37000B00498AB014582801306A0046319C7008E +:10B3800003C7A70294AB136717002385E70203A73F +:10B39000870A1367070423A4E70AE9BF8280742998 +:10B3A0000547AA8705456391E602942B1307A0047D +:10B3B0000545639BE60003C7A70288AB01451367F9 +:10B3C00017002385E7028280828078298D476318E1 +:10B3D000F7181C398D8B89EB14292147938706FCBC +:10B3E00093F7F70F6361F702D9472306F502930736 +:10B3F000A002A305F5028327850A93E727002324EB +:10B40000F50A014582803C3503264511639D0712EC +:10B41000930750056398F600D9472306F502930772 +:10B420003002C1BFB7370020938787264C2203C75D +:10B43000A70383C7B703834865146D8F2305E514FD +:10B440003032F18F0546A305F51433161601631447 +:10B45000C70023050514034875148545B3950501F8 +:10B460006394B700A30505140347A5148347B514D7 +:10B4700055CFD1CB93752700A9C113F6270015CE60 +:10B48000930720202315F5140347A5148547B39788 +:10B4900017016314F700230505140347B514854706 +:10B4A000B39707016314F700A30505148547639755 +:10B4B000F608930760051CA9A9B71376470001CACF +:10B4C00013F34700630503009307404065BF058BF6 +:10B4D00019C713F7170001C79307101065B709477D +:10B4E00081E5114711E205472305E51413F727000D +:10B4F00009C78947A305F51441BF918B99C39147AB +:10B50000D5BF8547C5BFB3570741858B81C7230585 +:10B51000B5149DBF9377270089C789472305F51484 +:10B52000A5B7118B91477DFB8547CDBFB1DF33D7E1 +:10B530001741058B45DFA305C514B9B78327850AD5 +:10B5400093E707106DBD85476396F6005C22A3055F +:10B55000F51485B78327850A93E707204DB5054580 +:10B56000828074290D47AA870545639EE612942BB5 +:10B570001307500505456398E612B837631507129F +:10B5800083C6471403C7571403A6471133F5E600D3 +:10B590004C2209ED6395B60028326309E500239536 +:10B5A00007141307700598AB01458280ED8E238543 +:10B5B000D714303203C86714718F0546A385E7148A +:10B5C000331606016394C6002385071403C5771458 +:10B5D0008545B395A5006314B700A385071483C6FA +:10B5E000A71403C7B714C5CA41C793F526009DC960 +:10B5F0001376270005CA130720202395E71483C676 +:10B60000A7140547331707016394E6002385071441 +:10B6100083C6B71405473317A700E394E6F8A3855C +:10B62000071441B713F6460001CA937847006385B3 +:10B63000080013074040D1B7858A99C69376170052 +:10B6400081C61307101055BF894681E5914611E266 +:10B6500085462385D7149376270089C60947A38595 +:10B66000E71471BF118B19C31147D5BF0547C5BF7B +:10B6700033D7A640058B01C72385B71449B713F705 +:10B68000260009C709472385E71495BF918A11470A +:10B69000FDFA0547CDBF25D7B3560741858AC5DEDC +:10B6A000A385C714A9BF828034350547AA870545FD +:10B6B0006398E606F42B154705456393E606982B39 +:10B6C000930650056306D70093068005631AD704D6 +:10B6D00003C7A70283A54711136717002385E70255 +:10B6E000D0211147636DC700B431636AD7001307D7 +:10B6F000F6FF1385F6FF718F758D498F09C70547D2 +:10B7000098AB01458280F821C8312385C7142207F0 +:10B71000498F2396E714A385D7141307A005CDB747 +:10B7200082803C3599EF74290D4785476399E6007F +:10B7300018296316F700930710061CA981473E8558 +:10B7400082808547EDBF78298947631FF7048327E7 +:10B750004511B736002093868626BC3383C5A604E0 +:10B7600013F6F70113D7670083C7960463EAC7008F +:10B7700083468516A18A89C6B3D6E540858A9DE6AB +:10B78000E9472306F5028547B397E700ED8F8D8BD8 +:10B79000794799C3130700028327850AA305E502A9 +:10B7A00093E727002324F50A054582802307E51641 +:10B7B0001829A306C51685476317F7009307600687 +:10B7C0001CA9014582808327850A93E7074023242B +:10B7D000F50AC5BF782989476319F7028327451100 +:10B7E0001829BC332308F50285476317F700930730 +:10B7F00060071CA9014582808327850A0567130716 +:10B800000780D98F2324F50AF5B70545828074296E +:10B810000947AA870545639AE602942B1307500748 +:10B8200001456394E60203A74711A16638332388D4 +:10B83000E70203A7070A558F23A0E70A054798AB3D +:10B84000983B136707F898BB82808280742915475C +:10B85000AA8705456391E60C942B1307500805450C +:10B86000639BE60A03A747113433A38AD7168306DE +:10B870004700A38FD71603065700238DC7167823DA +:10B88000238FE71603C7271793754700ADC989466D +:10B89000A389D71683A6070AC1656D9BCD8E23A009 +:10B8A000D70A2389E71603C747189376170085C27E +:10B8B0009306F0076306D600136727002382E71874 +:10B8C00003A7070AB7060200558F23A0E70A3737F8 +:10B8D00000200347B7260145A387E70203C74703B4 +:10B8E000A38DE716054798AB03C7A7021367170098 +:10B8F0002385E702983B136707F898BB8280098B82 +:10B900005DD3D5D203A7070AC166A389A716558FB1 +:10B9100023A0E70A49BF828074291547AA870545F5 +:10B92000639DE60883A647110145B0321377060FE1 +:10B9300049E7373700200347572A718F3DCFF82258 +:10B940001148238DE716838556000147A38FB7164C +:10B95000130517003357E640058B9378F50F0DCF8D +:10B96000238A1717D822A38AE71603C727179376C7 +:10B9700047009DC68946A389D71683A6070A416654 +:10B980006D9BD18E23A0D70A2389E71603C74703EF +:10B990000145A38DE71682802A87E31B05FBD9B7F3 +:10B9A000098B6DD7E5D50547A389E71603A7070AD5 +:10B9B000C166558F23A0E70AD1BF82807429114741 +:10B9C000AA870545639FE608AC370545639BA50834 +:10B9D00083A6471103C8360063640503D822130504 +:10B9E00010091306B7FF1376F60F636BC500D0324C +:10B9F0009306B6FF93F6F60F6364D5006371E60213 +:10BA00007947A385E702130780022386E70203A78D +:10BA1000870A01451367270023A4E70A828083A6CB +:10BA2000C710014593F606088DCE83C6E718631646 +:10BA3000B80293E616002387D7189306000AA38757 +:10BA4000E7183307D702B63F3347D70283D6070438 +:10BA5000850636972398E7188280D99A2387D718C6 +:10BA60008280828083270511D5C7254758B9514761 +:10BA7000B8A30347051D8355251D0356651DB8B39F +:10BA80000347151DCCB3D8A313D78500F8A30347EC +:10BA9000451DF8B30347551D90B798A71357860067 +:10BAA000B8A78346751409476384E6020327051087 +:10BAB0009316470163CE06008566938686842E879B +:10BAC00063F3B600368742074183D8B32183F8A3D6 +:10BAD0008346651409476384E6020327051093161D +:10BAE000470163CE0600856693868684328763F3BA +:10BAF000C60036874207418398B72183B8A783479A +:10BB0000A50293E747002305F502930700051CA94A +:10BB1000014582800545828083270511D5CB2547C5 +:10BB200058B95547B8A30347051D8355251D03562E +:10BB3000651DB8B30347151DCCB3D8A313D7850033 +:10BB4000F8A30347451DF8B30347551D90B798A7C1 +:10BB500013578600B8A7834675140947638EE6001D +:10BB60008566938686842E8763F3B6003687420700 +:10BB70004183D8B32183F8A3834665140947638EB4 +:10BB8000E600856693868684328763F3C60036872F +:10BB90004207418398B72183B8A78347C507A30508 +:10BBA000050299C78327050A93E707102320F50AA2 +:10BBB0008327450A13974701635807007D771307CA +:10BBC000F77FF98F2322F50A85471CA9014582805A +:10BBD0000545828078299307B0026319F71E035741 +:10BBE000051E1306A00281476373E61E4111B73795 +:10BBF000002026C283A4872E06C622C44AC08547D9 +:10BC00006387041AD84C398B6313071A0324451130 +:10BC10008147582C630D07189306F7FF93E686FFBC +:10BC2000F98E639606188345E514B6876381051877 +:10BC30001429930700046393F6028327050AA305DA +:10BC4000C50293E747002320F50A930720071CA9A4 +:10BC50008347A50293E717002305F5029377470072 +:10BC6000638E07148D47238EF40C3C3C2A891946B9 +:10BC700013F7F7009183858B238AE40CA38AF40CD5 +:10BC80009305D4011385640D9740FA1FE780A06ADD +:10BC90005C349583A38FF40C1C247830A207D98FD1 +:10BCA000A38EF40C7834A183238FF40C7C24220718 +:10BCB0005D8F1C28C2075D8F1C38E207D98F23AA2D +:10BCC000F4083C383828A2075D8F5C28C207D98F5A +:10BCD000382423ACF4081C3422075D8F3C34C2079F +:10BCE0005D8F5C24E207D98F583423A8F40A7D8B3A +:10BCF00023AAE40A034764028347540222075D8FA4 +:10BD000083477402C2075D8F83478402E207D98F9D +:10BD100023A0F40C834794022380F40E8347A402EB +:10BD2000A380F40E8347B4022381F40E8347C40238 +:10BD3000A381F40E5C203830A207D98F2319F9149F +:10BD40007C205830FD8BA207D98F7820231AF91454 +:10BD50009376070281CA137707043DE71167D98FED +:10BD6000231AF9147C285838A207D98F231BF914F9 +:10BD70001C2C7838A207D98F231CF9143C2C183CB2 +:10BD8000A207D98F231DF9148347440203473402C5 +:10BD9000A207D98F231EF9148327090A1167D98FA7 +:10BDA0002320F90A930710072308F9008147B240BE +:10BDB0002244924402493E8541018280098B894791 +:10BDC000E31307EA854745B5717751BF85473E853F +:10BDD00082807829AD476318F702411106C6834770 +:10BDE000E51883254511294693E707012307F51830 +:10BDF0008D05130575199740FA1FE780C053B240AF +:10BE000001454101828005458280782993073002EF +:10BE1000631BF71A8356051E1307200281476375BB +:10BE2000D71A4111B737002026C283A4872E06C631 +:10BE300022C44AC0854763890416D84C398B6315E0 +:10BE40000716032445118147582C630F07149306E6 +:10BE5000F7FF93E686FFF98E639806140346E51410 +:10BE6000B687630306141429930700046395F6024A +:10BE70009307A002A305F5028327050A93E747006D +:10BE80002320F50A930720071CA98347A50293E7FF +:10BE900017002305F50293774700638E07108D473F +:10BEA000238EF40C3C3C2A89194613F7F700918342 +:10BEB000858B238AE40CA38AF40C9305D4011385A3 +:10BEC000640D9740FA1FE78000475C349583A38F89 +:10BED000F40C1C247830A207D98FA38EF40C78348C +:10BEE000A183238FF40C7C2422075D8F1C28C207BA +:10BEF0005D8F1C38E207D98F23AAF4083C38382814 +:10BF0000A2075D8F5C28C207D98F382423ACF408C0 +:10BF10001C3422075D8F3C34C2075D8F5C24E2072E +:10BF2000D98F583423A8F40A7D8B23AAE40A5C2015 +:10BF30003830A207D98F2319F9147C205830FD8B93 +:10BF4000A207D98F7820231AF9149376070281CAA1 +:10BF5000137707043DE71167D98F231AF9147C285A +:10BF60005838A207D98F231BF9141C2C7838A20744 +:10BF7000D98F231CF9143C2C183CA207D98F231D00 +:10BF8000F9148347440203473402A207D98F231EC2 +:10BF9000F9148327090A1167D98F2320F90A930717 +:10BFA00010072308F9008147B24022449244024915 +:10BFB0003E8541018280098B8947E31307EE85475F +:10BFC000C5B5717751BF85473E8582803C35E9EB29 +:10BFD000411122C406C67829E1472A840545631D1C +:10BFE000F70A1828930700046318F70A83254411F9 +:10BFF00005659306A5C7D821BC3122075D8F93073D +:10C00000A7FFC207C18363E5F608FC21D4311305FD +:10C0100005C8A207D58F636DF50663EBE70690258B +:10C02000F4312206558E9306301F63E3C606B4250D +:10C0300003C89500A206B3E60601636BD504130599 +:10C0400016003305E502139836006343A80403C8BD +:10C05000B5001315080141816304080063EAA702D3 +:10C06000231DC4042312A406231AE406231BF4068A +:10C07000231ED404DC35D8253146A207D98F2313DB +:10C08000F406B905130584069740FA1FE780A02A35 +:10C09000930770041CA80145B240224441018280EC +:10C0A00005458280411126C206C622C47829E1478F +:10C0B00085446314F704832785102A848544898B7B +:10C0C0008DCF3C35639C9704EFE0FFB41C28A3059B +:10C0D000A40263969700930710041CA831A81307C5 +:10C0E00000046392E702930710041CA88347A4028C +:10C0F00093E717002305F4028144B24022442685C9 +:10C100009244410182808327040A93E72700232079 +:10C11000F40A1C3893E707F81CB8F9BF1C398D8B5B +:10C1200099CF9307A002A305F402BD472306F402AA +:10C130008327840A93E727002324F40A75BF1C2968 +:10C1400063979700EFE03FADA305A40269B713071B +:10C1500000026390E702EFE01FACA305A402814454 +:10C1600049FD8327440A37070080D98F2322F40A28 +:10C1700069B713070004E392E7F89307300265B745 +:10C18000411126C206C622C43C358544ADE3782958 +:10C19000A5478544631DF7048327850FA18BA1CB99 +:10C1A000832545112A8421468D05130505109740E6 +:10C1B000FA1FE780401883270410B7367808938663 +:10C1C000060DDD8E8327441013E707018327840FB4 +:10C1D000F58F2324F4108327C40FF98F2326F4103E +:10C1E0001C28639C9700930710031CA88144B2404D +:10C1F000224426859244410182808327840A93E762 +:10C2000007012324F40ADDB7411126C206C622C461 +:10C210007829A54785446316F70618299307000374 +:10C2200085446310F706832545112A8421468D0530 +:10C23000130505109740FA1FE780E00F83270410CD +:10C24000B73678089386060DDD8E8327441004A840 +:10C25000A305040213E707018327840F8144F58FA8 +:10C260002324F4108327C40FF98F2326F410832787 +:10C27000040A93E707022320F40A1C3893E707F81F +:10C280001CB8B240224426859244410182803C354C +:10C2900005476390E708411122C406C67429254763 +:10C2A0002A840545639CE6041828631DF70483254A +:10C2B00044112146130504108D059740FA1FE780AD +:10C2C000800783270410B73678089386060DDD8E25 +:10C2D0008327441013E707018327840FF58F232456 +:10C2E000F4108327C40FF98F2326F410930710034B +:10C2F0001CA81C38014593E707F81CB8B24022443B +:10C30000410182808327840A93E707012324F40AEA +:10C31000CDB705458280383585476317F70441114D +:10C3200022C406C626C27829A1472A840545631877 +:10C33000F7028324441113058412154693853400B3 +:10C340009740FA1FE78020FF9C3498240145A207FC +:10C35000D98F2317F4121C3893E727F81CB8B24082 +:10C3600022449244410182800545828038358547C8 +:10C370006310F71474295D47639DE612011126CA04 +:10C380008324451122CC21462A8493853400130549 +:10C39000B51A06CE9740FA1FE780E0F9DC24B834DE +:10C3A000A207D98FA309F41AA183230AF41AEF6014 +:10C3B000BEEA2AC4EF605EEA2AC62C001305441CBC +:10C3C00021469740FA1FE78000F7FC34F824130554 +:10C3D000C41CA2074207BA9798282C001146BA97A6 +:10C3E000D8346207BA972324F40CBC38B828A207C3 +:10C3F0004207BA97D828BA9798386207BA97232283 +:10C40000F40C0347541C8347641C4207A207BA97E5 +:10C410000347741CBA970347441C6207BA9723204A +:10C42000F40C0347941C8347A41C4207A207BA9745 +:10C430000347B41CBA970347841C6207BA97232E9C +:10C44000F40AA247374703001307D73FB387E70231 +:10C4500037A72600130737ECBA973EC49740FA1F58 +:10C46000E78060EDFC28F838A2074207BA97D83871 +:10C47000BA97982C6207BA97232EF40C0347E41C52 +:10C480008347D41C4207A207BA970347C41CBA9734 +:10C490000347F41C6207BA972320F40E9307100297 +:10C4A0001CA8F24062448147D2443E8505618280E7 +:10C4B00085473E858280782991476319F71241119B +:10C4C00026C28324451106C622C4B83001CB930787 +:10C4D000F7FFF98F81E79377070F8DC79307000266 +:10C4E000A305F502930730022306F5028327850A88 +:10C4F00093E727002324F50AB240224492440145E1 +:10C5000041018280CC309306E00781471146639752 +:10C51000D500F947F1B7B687638CC600938617003C +:10C52000B357F740858B93F5F60FF5D7230AB51669 +:10C53000838744002A84ADC7A30BF5160305351481 +:10C540003387A7001375F50F635AF000830794171C +:10C5500063DAE700898FA30BF41629A083078417F9 +:10C56000E34AF7FE834774173E9562056185EF70D5 +:10C57000E02F2301A414EF70202983473414A30172 +:10C58000A414B307F540A30BF416EF70202E8347D5 +:10C590004417034734142301A414A297A38FE7166A +:10C5A000830744038306C417014763D5F600958FBC +:10C5B00013F7F70F230BE416DC300547230DF416B1 +:10C5C0001C286396E700930760F81CA835B713078B +:10C5D00050086396E700FD57230BF416EDB7832749 +:10C5E000840A0967D98F2324F40A39B70545828064 +:10C5F0007829A547631AF704411122C406C61429F5 +:10C60000130700052A8485476394E602EFE01F853F +:10C610000DE58327040AA305040293E707102320EE +:10C62000F40A1C3893E707F81CB885471CA8814713 +:10C63000B24022443E85410182808347A40293E7B1 +:10C6400017002305F402F1BF85473E8582807829D3 +:10C65000A5476309F700054582800545B24022449D +:10C660004101828083278510411122C406C693F7B9 +:10C6700007022A84FDD3EFE06FFE8547E30FF5FC48 +:10C6800018286317F700930710051CA80145F9B790 +:10C690008327840A93E707082324F40AC5BF0545C6 +:10C6A000828005458280054582800545828005455A +:10C6B000828005458280054582805C25A30A0500AD +:10C6C000F19B93E717005CA50325051113351500B1 +:10C6D0008280011126CAAA842849814601468145E3 +:10C6E0004AC806CE22CC4EC69760FA1FE78080E08B +:10C6F000054915E9A048A1461D491C20BD8BBCB8C1 +:10C700001830B8A86391D7028349240013D969006F +:10C71000631B0912938719006319F71238308D478C +:10C72000630BF7004549F24062444A85D2444249CE +:10C73000B2490561828003A5040B194693054400A4 +:10C7400011059740FA1FE78000D069DD194693056F +:10C75000A400138564039740FA1FE780C0CE6308E6 +:10C76000050EB5476397F90EEFD0EFD9EFA01FF88C +:10C770002A8469C583A6040BD850FC4401482324AD +:10C78000E508984EB73500209385E536232CE5085B +:10C79000D84A130585132322E5F6D83BA30FE5EE0F +:10C7A000F83BF02B2207518F2310E5F0983F902F94 +:10C7B0002207518F2311E5F0B83FB02F2207518F88 +:10C7C0002312E5F0D82FDC3F1546A207D98F23139B +:10C7D000F5F0DC2E23220501A30EF5EE81471CC1E6 +:10C7E0009740FA1FE78020B585472300F41483C7DC +:10C7F000040822852303F414A303F414EFD04FBEDE +:10C80000B7370020138787260327070E93898726CB +:10C810001377072001CB0A24130690029305000822 +:10C82000EF10B02283A7890D1397170163580700F3 +:10C830000A24514693050008EF10302183A7C40A4B +:10C840000D47B8B7CDB51549F9BD6549E9BD4949A9 +:10C85000D9BD6149C9BD397152D4373A0020930717 +:10C860004A3C9C4F56D206DEB73A002022DC26DA3C +:10C870004AD84ED65AD05ECE62CC9396070103A713 +:10C88000CA3E63C506027C5791C7B73700200547EB +:10C890002386E7DAF2506254D2544259B259225AEE +:10C8A000925A025BF24B624C21618280B73B0020BE +:10C8B00093878B26A04F9307000A7CD38329C40A51 +:10C8C000130A4A3C938B8B2603CC990093174C0098 +:10C8D00003ACC9003E9C83472C008DCB83C7690005 +:10C8E0009306204E03461C00B387D702938787FD2B +:10C8F00011CA83C67900B386C6021306D007B38671 +:10C90000C602B697A16614C786077CD71C438D8BD9 +:10C9100081C70945EF708046373B002083278B3B5A +:10C9200037063300B7050082D857FD15719B136792 +:10C930001700D8D798431377F7E798C3984313772E +:10C94000F7E71367071098C337370020832607449B +:10C950009846518F98C603A7CA3E1306A00530CB50 +:10C96000D056759AD0D68346E40713F6F60794435B +:10C9700093F606F8D18E94C38346840693F6F603A5 +:10C9800013969601D457ED8ED18ED4D78326040901 +:10C990006444D4C38326C40894C78327C40AB43725 +:10C9A00085476399F6240329040B83C699008347BE +:10C9B00019006391F62423260706A1671CC7232AC2 +:10C9C0000A005C4393E717005CC3930720021CB87E +:10C9D000154798A09CB083475403858B91E7034784 +:10C9E000440389476315F700930750049CA0194638 +:10C9F00093056403138524009740FA1FE780A093F2 +:10CA00008347390089C79C2093E707F89CA0194603 +:10CA100093054900138584009740FA1FE780A09191 +:10CA200083478901FCA483479901FCB48347A9018A +:10CA30009CA88347B9019CB88327490113D7870075 +:10CA4000BCA8C183B8B8DCA88346040809478D4751 +:10CA50006383E6008947DCB80357C9008357A90000 +:10CA60009946BA97858313D7870098BC0347E90096 +:10CA70009CAC8D83B8AC0357E9008D072183B8BC0B +:10CA800003470901D8AC03471901D8BC3E8763F3BB +:10CA9000F600194793170701C183FCA8A183FCB8CE +:10CAA00083C76B1003268B3B0145FCAC83C77B100F +:10CAB000FCBC83C78B102380F40283C79B10A38028 +:10CAC000F40283C7AB102381F4028347C901FD8BB5 +:10CAD000A381F402784483C73B008346370296075C +:10CAE000D58FA301F702B737002083C7070BB7061E +:10CAF0000082FD1693F7F703139797015C56F58FA5 +:10CB0000D98F5CD6103883450408A3010A009760CA +:10CB1000FA1FE78020A683472A00858BA5CF83468E +:10CB20000408373900208327490E23010A0013091E +:10CB3000490E0547035B89006374D70A829737461D +:10CB40000F00AA841306062481461305804D330581 +:10CB5000AB028145EF10C124B307950033B5A700A0 +:10CB60002E953E878326490019E163E4D700338779 +:10CB7000D74058D00146814505459760FA1FE780A8 +:10CB8000609FEF70801783473A00858B81C72285AD +:10CB9000EFF03FB483C7990003C74900850793F7B7 +:10CBA000F70FA384F90063FDE72AB73400209387C9 +:10CBB000440EDC279384440E638707208327C40A2E +:10CBC000130770FA37250020B8A7130505B6EF70D4 +:10CBD0004E9BB7E700E03707000223A2E7205DB9CC +:10CBE000829737460F00AA84130606248146130550 +:10CBF000800FB1BF5C43F99B5CC39D47832B8C00C6 +:10CC000003493C001CA89CA08547A3810400BCA04C +:10CC10007C4893F707209DC79147BCB08347640BBE +:10CC20008346540B78449A07D58F5CA3BC20814679 +:10CC30008507BCA00346840B8345540B0345640B56 +:10CC4000EF60D07C7C4893F7074095CBB8307C44AC +:10CC5000B42013678700B8B00357A408B697B8B3D9 +:10CC6000BC2078448346F4073E978357A408920675 +:10CC7000A183BD8BD58F5CA3BC208907BCA0834753 +:10CC8000040693F7070489CFB8307C44B4201367B7 +:10CC90000704B8B05838B697B8B3BC208507BCA015 +:10CCA0008347C4070547C11793F7F70F6364F70677 +:10CCB00003CB2400B7350020154693073B00032B18 +:10CCC000C4049385E5363E9BA1472300FB009307F0 +:10CCD0008002A300FB0013052B009730FA1FE780AA +:10CCE00080650347C407C1476315F70C8357840861 +:10CCF000A1072311F408C547230EF406834724082F +:10CD0000A303FB0083572408A1832304FB00BC205A +:10CD1000A507BCA0638C0B00BC2068444A868D0725 +:10CD2000DE853E959730FA1FE780E060B820014528 +:10CD30009377F70385073E991379F90FA308240128 +:10CD4000B8A07C44A3802701930770F978443CB4D1 +:10CD500083A7CA3EB8DB103883450408A3010A0044 +:10CD60009760FA1FE7800081EF60307983A7CA3EA1 +:10CD7000096723A2070698C723020A0003473A005F +:10CD800003472C00E30807E0FC57E38507E037255D +:10CD900000201305A5C89740FA1FE780409F03A70E +:10CDA000CA3E7C57FDFF01459740FA1FE780209E51 +:10CDB000D5B30357840883572408998F0947E34F55 +:10CDC000F7F2C94715BF3739002083270909829731 +:10CDD0002A8B832709098297E30D65FF03C7590052 +:10CDE00083C79900D440B387E7029A24B387E70248 +:10CDF0001307003293870719B3D7E70203274409C3 +:10CE00003E973A846364F7006364D7003304D740E5 +:10CE1000832709098297B307A4406374A400C8401C +:10CE2000AA9737450F0013050524B3B5A70292242E +:10CE300081463385A702EF00B1762A8437D50500F5 +:10CE4000AD4713056585A303FA009740FA1FE780F5 +:10CE5000009483A7CA3E2167060498C7E0D71DBC8B +:10CE600083A7C900884719ED1C2468002307010027 +:10CE7000DC868327C40ADC23DC87EF509FDA238516 +:10CE8000090009BC9730FA1FE780C02803A7C90032 +:10CE900083C64900814763C5D7001C47EDF3E9B756 +:10CEA000232407008507C5BF5D71A6C2B7340020E3 +:10CEB000CAC083A6C43E373900200326893B86C6F4 +:10CEC0004EDE52DC56DA62D4A2C45AD85ED666D29E +:10CED0006AD06ECE1307000AF8D25856B739002030 +:10CEE0002A8C719B1367170058D6184237053300F8 +:10CEF000373A00201377F7E718C218421377F7E79D +:10CF00001367071018C203A709440C47C98D0CC743 +:10CF10009305A005ACCA4C570545F5994CD7034776 +:10CF2000EC079375F7071842137707F84D8F18C26F +:10CF3000D842B7050082FD15799BD8C203478C06FD +:10CF40001377F7039316970158566D8F558F58D660 +:10CF50000327CC089305300218C603270C0958C2D2 +:10CF600013074A3CA3010700EF603EDB832ACC0491 +:10CF70001D472308EC00230FAC062380EA00054779 +:10CF8000A3810A002381EA0003274C05130A4A3CC7 +:10CF9000137707201DCB1147A381EA0003476C0BD1 +:10CFA00003465C0B8326CC041A07518FD8A203C713 +:10CFB0002A00814605072381EA0003468C0B83453E +:10CFC0005C0B03456C0BEF60704403274C05137733 +:10CFD000074031C383C63A000327CC0403C62A00A6 +:10CFE00093E68600A381DA008356AC08329734B307 +:10CFF00003C72A008326CC040346FC07BA960357CE +:10D00000AC08120621833D8B518FD8A203C72A009A +:10D0100009072381EA0083C52A0083564C081307B9 +:10D02000D00F373400200D8F130484266359D72086 +:10D0300083460C0809476380E620054613078042B3 +:10D040006385C600056713078784F9461307771BB6 +:10D050003347D7020346C407056513660601230E4E +:10D06000C40603A6C43E08C6B306D702860634D259 +:10D0700003C63A0013660601A381CA008326CC04C6 +:10D080000346EC07AE96B0B203C62A008326CC0452 +:10D09000B296D8A283C62A000326CC0421873696EE +:10D0A00083460C089606558F58B203C72A000D0711 +:10D0B0002381EA0003470C061377070405C783C6DC +:10D0C0003A000327CC0403C62A0093E60604A38192 +:10D0D000DA0083465C01329734B303C72A000507A0 +:10D0E0002381EA000347CC07854641171377F70FE2 +:10D0F00063E6E60603CB2A00B73500201546130782 +:10D100003B00032BCC049385E5363A9B2147230053 +:10D11000EB0013078002A300EB0013052B009730F0 +:10D12000FA1FE78040218346CC0741476390E6120F +:10D1300003578C0821072311EC084547230EEC0602 +:10D1400003472C08A303EB0003572C082183230477 +:10D15000EB0003C72A0025072381EA0003564C0889 +:10D16000014B39C283C62A000325CC0483258C0ACF +:10D17000138736003A9503C73A00418B75C3795B34 +:10D18000330BDB40137BFB0F5A869730FA1FE78087 +:10D19000801A03278C0A5A97232CEC0603574C0855 +:10D1A000330767412319EC0683C62A00375505006B +:10D1B000814513F7F60305073A9B137BFB0FA30882 +:10D1C0006C012381DA000327CC0413052532856B1B +:10D1D000A3006701130770F98326CC04A305EC00B4 +:10D1E00003A7C43E916A130DA00534DBEF60CEFEA9 +:10D1F00003461C0183450C0801451D4B9750FA1F3F +:10D20000E7804037938A0A29EF60302F938D8B8413 +:10D210000347C407418B21EFB64026449644064994 +:10D22000F259625AD25A425BB25B225C925C025D56 +:10D23000F24D6161828011671307072939B50347F1 +:10D24000C4071377F70E230EE406ADB583568C089A +:10D2500003572C08158F8946E3C4E6EE4947F9BD0C +:10D260009730FA1FE780200D034B4C0835BF03476A +:10D27000C4071377070265DF0347C40783A5C43ECD +:10D280008326893B1377F70C230EE4069307000AE5 +:10D29000FCD1D856B7073300719B13671700D8D657 +:10D2A00098421377F7E798C298421377F7E7136726 +:10D2B000071098C203A7094410475D8E10C723A822 +:10D2C000A5055057759A50D70347EC071376F70713 +:10D2D0009842137707F8518F98C2832CCC04230807 +:10D2E0006C01854623806C01A3810C002381DC0046 +:10D2F00083264C0593F6064085CEA146A381DC002B +:10D300008326CC040356AC08D0A283C62C00032687 +:10D31000CC048345FC0736968356AC089205A1825F +:10D32000BD8ACD8E54A283C62C0089062381DC00E1 +:10D3300003C52C0083562C071306E00F098E635398 +:10D34000D60803460C088945D6866308B60085458D +:10D35000930680426303B600EE861386761BF94679 +:10D360003346D6028345C40793E50501230EB40670 +:10D3700083A5C43E23A47501B306D6028606B4D1A4 +:10D3800083C53C0093E50501A381BC008326CC0442 +:10D390008345EC07AA96ACB283C52C008326CC0447 +:10D3A000AE96D0A283C62C008325CC042186B695E8 +:10D3B00083460C089606D18ED4B183C62C008D0608 +:10D3C0002381DC0003562C07814631C683C82C001C +:10D3D00003C83C000325CC04938638001378080169 +:10D3E000369583258C0763070806F956B3861641E0 +:10D3F00093F6F60F368636C69730FA1FE780A0F30D +:10D4000003268C07B2463696232CCC0603562C07EF +:10D41000158E2319CC0683C52C00014513F6F503A0 +:10D420000506B29693F6F60FA308DC002381BC0034 +:10D430000327CC0414B303461C0183450C081307CF +:10D4400070F9A305EC00A3010A009750FA1FE780CA +:10D4500060127DBB9730FA1FE780E0ED83462C0712 +:10D4600023190C064DBF8347C5076381073E011191 +:10D4700022CC06CE26CA4AC84EC652C449472A8480 +:10D48000639CE70203572508835785086316F70254 +:10D490009304050AB735002015469385E5362685A1 +:10D4A0009730FA1FE78020E92685EFA00FCD91473E +:10D4B000A300A408230EF40622859740FA1FE780F4 +:10D4C000201D0945EF60900B0327C40A373900205F +:10D4D0008347C40783260909630407200D4763991E +:10D4E000E70C9147230EF4067C4893E787007CC83D +:10D4F000B73700209387872603C7D707098B6DDFCF +:10D5000003C7D7071377C70FA38EE7068296B737EF +:10D5100000209387470E962703576408232AA40800 +:10D52000DC433307D702930600321307071933573A +:10D53000D702B306E500368663E4A60063E4F6008E +:10D540003386F640B736002083C6360B232CC4083A +:10D55000636DD604158E37D505009306D407A285D2 +:10D5600013056546EF501ED6B737002037D50500A6 +:10D570009387473C2D4713056585F8B39730FA1F0D +:10D58000E780E020B737002083A7C73E0947F8D7D8 +:10D5900083578408F240D24485072314F408624478 +:10D5A0004249B249224A05618280958F3E9665B70D +:10D5B00083298409B734002082969384440E63E65D +:10D5C000A904B737002083C7370B3385A94063E52B +:10D5D000A700854763EEA702835764089A24B387A0 +:10D5E000E7021307003293870719D040B3D7E70249 +:10D5F000032784093E97BA866364F7006364C70013 +:10D60000B306C740232CD40861B7DC40BE9955BF90 +:10D610008326C40ACC40A38406009224835764085E +:10D6200003278409B387C70213060032232AE408BC +:10D6300093870719B3D7C7023E973A866364F7000A +:10D640006364B7003306B740DC24232CC4088DC3C1 +:10D65000930770FA37250020BCA6130505B6EF60C6 +:10D660004EF2B7E700E03707000223A2E7200DB72C +:10D67000832709098297AA89832709098297E38D5D +:10D68000A9FE8327090983294409829763E7A9042E +:10D69000B73700202D479387473CF8B3B7470F00B3 +:10D6A000938707243385A940B335F5029224814638 +:10D6B0003305F502EF00C16EB737002083A7C73EE0 +:10D6C0002167060598C7E8D737D505001305658596 +:10D6D0009730FA1FE780A00B65BDDC40BE994DBFB7 +:10D6E0000D47639CE7089147230EF4067C4893E7B7 +:10D6F00087007CC8B73700209387872603C7D707E2 +:10D70000098B6DDF03C7D7071377C70FA38EE70613 +:10D710008296B73700209387470E962703576408F1 +:10D72000232AA408DC433307D702930600321307E9 +:10D7300007193357D702B306E500368663E4A6001F +:10D7400063E4F6003386F640B736002083C6360B16 +:10D75000232CC4086360D602158E37D505009306C6 +:10D76000D407A28513056546EF50DEB52285EFF09C +:10D77000AFF339BD958F3E96CDB78296AA848327A5 +:10D7800009098297E38DA4FE832709098329840967 +:10D79000B734002082979384440E63E2A902B7371E +:10D7A000002083C7370B3385A94083D9840063E306 +:10D7B000A70009E983576408B38737031DB5DC4028 +:10D7C000BE99F1BF37390020130789268347D70751 +:10D7D0004E86814693E71700A30EF70637470F00E2 +:10D7E00013070724B335E502B737002003AAC73E65 +:10D7F000A1672324FA003305E502EF00615A06050C +:10D800002326AA06130789268347D707898BEDDFCE +:10D810008347D707D04093F7C70FA30EF706835768 +:10D82000640813070032B387370393870719B3D708 +:10D83000E702032784093E97BA866364F7006364AE +:10D84000C700B306C740232CD4080DB7828041110E +:10D8500026C2AA84284922C4138615002E84814634 +:10D86000814506C69750FA1FE780C0C851E1BC4801 +:10D870001D461D459423BD8AB4B89833B8A8639D4E +:10D88000C604B4230D4513D6660093F6F60363F57C +:10D89000E604154531E27D17158F58B0B83345457C +:10D8A0009376270095EA9376470085EE91079306D5 +:10D8B000F00F34A093768700514599EE93760701D7 +:10D8C000554599EA93760702594599E61377070477 +:10D8D00009CF9C231CA00145B2402244924441013F +:10D8E0008280D42395078D8AE9B79307F007DDB7C7 +:10D8F0000545DDB7B7D70500373700209387674662 +:10D900002320F72E828001458280411106C6EF90C8 +:10D91000FFDDB240133515000605410182806FF02E +:10D92000DFFE411106C6EF907FDC05C10357C50538 +:10D930008356A50503566507835545070A25EFC09D +:10D94000D0480145B240410182800945E5BF01113F +:10D9500006CE22CCEF909FD925CD3035B7370020A9 +:10D9600005472A84938787266312E604F8530945FE +:10D9700015CB03460403834657048358E403035836 +:10D98000C4033E3C0E240345B4021307670432C0AF +:10D990000546EFC0B0417C34A3050402014593E77E +:10D9A00017007CB4F24062440561828003A74709F6 +:10D9B00009456DDB834657078358E4030358C403C6 +:10D9C0003E3C0E240345B4021307670702C0D1B7DB +:10D9D0000945C9BF397106DE22DC26DAEF901FD176 +:10D9E00079C93835B73700202A84938787262DEBED +:10D9F000E4530945ADC01946814508109730FA1F18 +:10DA0000E780009A1946814528109730FA1FE78071 +:10DA10002099C167FD178358A40383C6540430348A +:10DA20000E240345B4023EC89C24130881021387C8 +:10DA300064043EC6834704033EC47E3C3EC25E3C53 +:10DA40003EC01C10EFC0703B7C34A30504020145AE +:10DA500093E717007CB4F2506254D2542161828063 +:10DA600083A407080945E5D8194681450810973071 +:10DA7000FA1FE780E0921946814528109730FA1F77 +:10DA8000E780009283D7240D8358A40383C65405EE +:10DA900030340E240345B4023EC89307F00F3EC64F +:10DAA00002C47E3C13088102138764053EC25E3CBB +:10DAB0003EC01C1041BF094579BF397106DE22DC2A +:10DAC00026DA4AD8EF909FC2630F05143435B73772 +:10DAD000002005472A8493878726639AE60AE45341 +:10DAE0000945C1C083C744041946898BC9C38C58F2 +:10DAF000BC25B5CFB10528089730FA1FE780A08371 +:10DB000083C75404138964041946898BA5CBCA853D +:10DB100008109730FA1FE78000828C58194691054B +:10DB200028109730FA1FE780008183470403835849 +:10DB3000A40383C6540430340E240345B4023EC407 +:10DB40007E3C1308010238103EC25E3C3EC03C08D9 +:10DB5000EFC030287C34A3050402014593E7170089 +:10DB60007CB4F2506254D254425921618280814582 +:10DB700028089730FA1FE780A08259B7814508101E +:10DB80009730FA1FE780C0811946CA8551BF83A428 +:10DB900047090945F9D483C744061946898BB9CF8B +:10DBA0009385640628089720FA1FE780C07883C70A +:10DBB0004407138964071946898BA1CBCA850810CD +:10DBC0009720FA1FE780207783A54408194628107C +:10DBD00091059720FA1FE780007683A74408BC339D +:10DBE00093E72700A38AF4068358A40383C6540747 +:10DBF00030340E240345B40202C499B78145280885 +:10DC00009720FA1FE780C0795DB7081081459720FB +:10DC1000FA1FE780E0781946CA8528109720FA1F76 +:10DC2000E7806071D1B709452DBF797122D426D222 +:10DC300006D6AA84EF909FABB737002003A4872EA7 +:10DC4000894721C11DCC8357251519469305640DBD +:10DC50007C8685477C878357440D13052101A304E7 +:10DC60000100FC8064859720FA1FE780C06C832741 +:10DC7000C40D28003ECC8327040E3ECEEFC0B01E5C +:10DC80008147B250225492543E85456182800111F1 +:10DC900022CC06CE2A84EF907FA53DC18347B502F2 +:10DCA000034745176083DC8283473517D8845C843B +:10DCB00095EF83477517030795175C86830735141F +:10DCC0005C85631CF7008947DC854800EFC090192C +:10DCD0000145F240624405618280030785176314A1 +:10DCE000F7008547D5B7A3050100C5B78347A5173A +:10DCF0005C8583475517DC858347F5175C86F1B74C +:10DD00000945C1BF011122CC06CE2A84EF901F9E87 +:10DD100021C98307A517C084218040851307F00718 +:10DD2000638DE70203474503998FDC8583474518D8 +:10DD300013F7070101C72306010031A093F707027B +:10DD400099CB85475C862800EFC0B0110145F240B1 +:10DD50006244056182808947F5B7FD57DC85E1BFE4 +:10DD60000945F5B7797122D426D206D6AA84EF9058 +:10DD7000FF97B737002003A4872E89470DCD05CC28 +:10DD80008357251519469305640DFC808547FC8152 +:10DD90008357440D13056101A3060100FC826487CB +:10DDA0009720FA1FE78020598327C40D68003ECED4 +:10DDB000EFC0F00A8147B250225492543E8545612B +:10DDC0008280411106C6EF907F9211C983450514E8 +:10DDD0000A25EFC090080145B24041018280094503 +:10DDE000E5BF9375F50F01112E8506CE22CC2EC608 +:10DDF000EF70AF9B05C12A8483460507B245683999 +:10DE00000546EFC010050145A30B0400F240624433 +:10DE1000056182800945DDBF411106C6EFC03003B0 +:10DE2000B2400145410182804111B737002022C430 +:10DE300003A4872E26C206C689440DC00355240DAF +:10DE40008144EFC090000325C40C9307F00F231901 +:10DE5000F40C09C59720FA1FE780C02BB24022447A +:10DE60002685924441018280B737002083A7872E00 +:10DE700099CB41111385070D06C6EFC0807CB240D7 +:10DE800001454101828009458280411106C622C4B4 +:10DE9000EF90DF8505C983467514034665142A840F +:10DEA0000E250345B5028506050693F6F60F137693 +:10DEB000F60FEFC0E0760145A3050402B24022440C +:10DEC000410182800945DDBF411106C6EF901F82E6 +:10DED00005C10357251E8356051E0356651E83552F +:10DEE000451E0A25EFC0A06E0145B2404101828067 +:10DEF0000945E5BF411106C622C4EF902FFF15C5A5 +:10DF00002A840357C5058356A5050356650783551F +:10DF100045070A25EFC0206B1C38014593E74700F1 +:10DF20001CB8B2402244410182800945DDBF411145 +:10DF300006C6EF90AFFB05C18347451B0346351B63 +:10DF40009305B51A0A25A2075D8EEFC080670145CB +:10DF5000B240410182800945E5BF411106C622C495 +:10DF6000EF90CFF805C12A84130605100E2503454E +:10DF7000B502EFC0C0640145A3050402B2402244CB +:10DF8000410182800945DDBF411106C622C4EF90E0 +:10DF9000EFF505C52A840357C5058356A505035625 +:10DFA00085050E250345B502EFC020610145A30597 +:10DFB0000402B2402244410182800945DDBF0111C3 +:10DFC0001375F50F06CEEF605FFE29C9B737002045 +:10DFD00083A7873493F707209DC302C402C202C0FF +:10DFE000814801488147014781460546814513051F +:10DFF000C003EFC0005E0145F240056182808346A8 +:10E00000D5031307E50302C081480148814705464F +:10E0100081451305C003EFC06059F1BF0945E9BF51 +:10E02000B73700209387872603A74709094529CBDF +:10E0300083A7070E011106CE93F707208DC302C4F4 +:10E0400002C202C08148014881470147814601461A +:10E050008145EFC00058F240014505618280835838 +:10E0600007020358A7018357070583465707014650 +:10E0700002C01307670781450945EFC02053E1BF80 +:10E080008280014582800145828001458280014570 +:10E090008280014582800145828001458280014560 +:10E0A0008280014582800145828001458280014550 +:10E0B0008280014582800145828001458280014540 +:10E0C0008280014582800145828001458280014530 +:10E0D0008280411106C622C41821930700086313E9 +:10E0E000F70218319306C002854763E1E606B7E7F9 +:10E0F00006000A0793870747BA979C432A2182970D +:10E100008147A9A09306100885476311D7041831E9 +:10E11000CD466301D70E63E2E602A146630AD70843 +:10E12000B1466308D70A95466312D7022A21EF90B9 +:10E13000EFDB2A8415E9894711A8930600036306DB +:10E14000D70E63EAE600E9466307D70CB2402244E3 +:10E150003E8541018280930770056304F70E9307A3 +:10E1600017F0B337F000DDB7832785118DC703564D +:10E1700045040506420641829C43130716004207E8 +:10E1800041838DE72312C40419C60E240545EFC050 +:10E19000C040231204040345B402034644050E2480 +:10E1A000EFC0603E2285EF90AFC499BF3A86E9B7D1 +:10E1B0002A21EF90AFD32A843DDD0346C5040E2506 +:10E1C0000345B5023336C000EFC0203CA30504026E +:10E1D00005BF2A21EF908FD12A8431DD0357250511 +:10E1E000835605050346F5040E250345B502EFC029 +:10E1F000003AE9BF2A21EF906FCF2A840DDD035644 +:10E20000450419C60E250545EFC020392312040424 +:10E21000A3080402F5B52A21EF904FCDE30D05F0D8 +:10E220000345B502EFC0A037E1BD2A21EF900FCC26 +:10E230002A84E30205F00E250345B502EFC06036DF +:10E2400071B72A21EFC0203665BD011122CC26CA44 +:10E250004AC806CE374402402EC632C48324C420A6 +:10E260002A89232604200F10000011459720FA1F49 +:10E27000E780A0FC0DC5B2452246231125010CA163 +:10E2800010B123269420B73700206244F240D244D4 +:10E290004249AA8503C5F70405616F40FEE12326C4 +:10E2A0009420F2406244D244424911450561828083 +:10E2B000411126C24AC006C622C4B744024003A97F +:10E2C000C42023A604200F100000EF902FC211E9F4 +:10E2D00023A624210945B240224492440249410127 +:10E2E000828083270512230D05002A84A9CF783563 +:10E2F000058B11EF0A24014693050008EFF0FFF4A7 +:10E3000031C5B747024023A627210145E9B7D443C9 +:10E31000D0278C270A258906EFC0002915E183271D +:10E320000412BA27A3840700136707F0BAA79C4317 +:10E330002320F4128357240481C7FD172311F4040A +:10E3400083270412C5FB2311040465BF85473CAC39 +:10E350004DBF797122D406D6BC312E84231601001C +:10E36000DC87DC21100802C05C87DC318A8502C2B0 +:10E37000DC8602C402C802CA02CC02CE9740FA1F51 +:10E38000E78080DF0347F1011C200145631EF70091 +:10E390000347E1011C3001456318F7000345D10133 +:10E3A0003C201D8D13351500B250225445618280EA +:10E3B000B737002083A7473391E382806384A700A7 +:10E3C000DC5FDDBF411122C406C63C252A8491C70B +:10E3D0009305C5006905EF504FAA3C2891CB9305E2 +:10E3E00044011305A4022244B24041016F50EFA83A +:10E3F000B240224441018280AA862E86AA8537E552 +:10E4000005001305A5406F50EEB1B7370020138704 +:10E4100087260327C70C411126C206C622C493844F +:10E42000872611E7B240224492444101828063046E +:10E43000A700585FFDB73C252A8491C79305C50006 +:10E440006905EF508FA33C2899C793054401130534 +:10E45000A402EF508FA222852244CC58B2409244AD +:10E4600041016FF07FF901114AC837390020930745 +:10E47000892622CC03A4C70C26CA4EC652C456C253 +:10E4800006CEAA84014A1309892693094500854AC4 +:10E4900065E093052025130500049720FA1FE78007 +:10E4A00060BA2A841D4545CCBC301946938544008A +:10E4B000130544003CB09720FA1FE780C0E7938A19 +:10E4C000A4014146814556859720FA1FE78040FF09 +:10E4D00079E19309A401D68541464E859720FA1F1C +:10E4E000E780E0FA85473CA43C309305C4004E85A4 +:10E4F00093E727003CB4EF504F989384A402414621 +:10E50000814526859720FA1FE78080FB41E9930724 +:10E51000A402A6853E854146BE849720FA1FE78067 +:10E5200000F785473CA83C3093054401268593E7D6 +:10E5300027003CB8EF506F94A300040083254903E3 +:10E540002285EFF07FEB631E0A042326890C232E1D +:10E5500004028347890C014585072304F90CF24026 +:10E560006244D2444249B249224A924A05618280B9 +:10E570003830BC306305F700228A405C11BF414649 +:10E58000CE85130544009720FA1FE780C0EBE31502 +:10E5900055FF4945E9B72305040085B72309040061 +:10E5A00061BF232E8A0265B7011126CAB734002045 +:10E5B0009387842622CC03A4C70C4AC806CE4EC635 +:10E5C000938484267D5901ECF240624423A6040C16 +:10E5D0002384040C4249D244B24905618280082058 +:10E5E000EF504EAE8329C4032300240122859720D7 +:10E5F000FA1FE78020B24E84F9B7B737002093871F +:10E6000087262384070C23A6070C6F500F90411117 +:10E610004AC0373900209307892626C283A40708F9 +:10E6200022C406C683C7D40413048926858BB1C7C8 +:10E630003C2049458DCFB735002019469385653577 +:10E640001385E4049720FA1FE780E0CE8547BCB429 +:10E650009CB8BCB8BC28094798A4C9CBEF405E93CE +:10E660003C4C85C79307004063EFA7001D45B240AF +:10E6700022449244024941018280B7350020194664 +:10E680009385053575BF130505C08357440B81CFAE +:10E69000373700201307C7091E2B7837B387E702E7 +:10E6A000E3F6A7FC1D8D8D473354F502EF409E978E +:10E6B000A28763738500AA879183C207C1832391D0 +:10E6C000F404CDD792071395070141819305E02407 +:10E6D0009720FA1FE780009703D62404E8C02A8712 +:10E6E0001308F6FF814763C9C704A8C4B7370020E1 +:10E6F00003C704029386C704A8328D461384C70457 +:10E700006318D704F228BE383E969145EF506E8DBF +:10E7100028309145EF407ECE923C19CA370506005D +:10E72000938614031206A6851305A56DEF409EFF80 +:10E7300023040926014525BF63D907019306070174 +:10E74000B6850CC38507368779BFBA868145D5BFA4 +:10E7500089476314F700B2384DBFF2287DB74111E5 +:10E760009305E0261305800E22C406C69720FA1FE3 +:10E77000E780408D2A842DC91306800E814597209D +:10E78000FA1FE780E0C1B737002023A4872EB737F0 +:10E79000002023050400230404009387473C98537A +:10E7A000DC5378D83CDCFD571EB8A30EF406A3005A +:10E7B000F408B7E705009387E7603CD4B707060085 +:10E7C000938787347CD4B70706009387271F3CD8EC +:10E7D000B737002083C7070F81EBB737002003A5A9 +:10E7E000873A8D45EF504E9F2285B2402244410129 +:10E7F0008280411122C406C626C28347C5052A84E9 +:10E80000A5C79305E50519461305E5049720FA1FEA +:10E81000E78060C3AA8429E91C28898BA5E3B73760 +:10E82000002083C7972685CF8347D4058DCB8347A8 +:10E8300034061307000493F7070C6392E7021305ED +:10E84000C4059730FA1FE780A07268D009C98947CC +:10E85000230EF4048347D40493E7270089A80347D1 +:10E86000C40589476316F70083474405A1E785443B +:10E87000B240224426859244410182808347D405D8 +:10E88000E5DB834734061307000493F7070CE39195 +:10E89000E7FEB737002083C79726F9D71305C405CD +:10E8A0009730FA1FE780C06C68D0F9574DF1A30E7E +:10E8B000F4045DBFB737002083C79726CDDB8347BD +:10E8C000540513054405A9CB8347B4051307000479 +:10E8D00093F7070C6392E7049730FA1FE7806065AF +:10E8E00068D051D593046405A68519465105972033 +:10E8F000FA1FE78040A46C508D47230AF404BC3112 +:10E900001946910593E72700A30AF404268597206A +:10E91000FA1FE78040A2A1BF9730FA1FE780A05CF2 +:10E9200068D031D58947230AF4043C29A9D38D47FF +:10E93000230AF4040431B33490001DBF0347450596 +:10E940001DC31829AA870545058B05C3E84BAC4FA5 +:10E95000411106C69730FA1FE780807DB2403335FB +:10E96000A00041018280054582808280797122D495 +:10E9700006D63C292A84BDC30357050483572504C2 +:10E98000637EF7049730FA1FE7806062854763076C +:10E99000F5000145B2502254456182805C341D4728 +:10E9A00028446394E700834784025CA183475405AD +:10E9B0001946930564055CB18347940219057CA14F +:10E9C0003E341EA59720FA1FE780E0968357040483 +:10E9D00085072310F4043C449C433CC45C4C4834FD +:10E9E00013970701635B070C19476367A7027C2431 +:10E9F00093065002E3EFF6F859E54D472304E4028D +:10EA00007D57A304E402231F0402A3060402054762 +:10EA1000631EE50823070402034EE4020143630B6F +:10EA20000E000343E4003303C34193072300032391 +:10EA300084073E93834E84028346C4021AC813950A +:10EA40000E01850693FE4E0072C6130664054181D1 +:10EA500093F6F60F0347D402834794020308340267 +:10EA6000035FE403834554058308540163840E0463 +:10EA70001303E4051AC40343D4051AC27AC0EFB0E5 +:10EA8000703A054501BF85466314D5005547BDB7AB +:10EA900089466314D500414795B791466314D50064 +:10EAA0006D47A9BFE31EE5F4494789BFE91723076E +:10EAB000F4029DB702C402C2D1B785476316F504BC +:10EAC000373700200327872E130664058345540536 +:10EAD000182B83075401098B15C38346D40599CE9F +:10EAE00003473406130500041377070C6318A700C7 +:10EAF0001307E4050545EFB0703261B70147814661 +:10EB00000545EFB0502BB5BF742493075002E3E2E4 +:10EB1000D7E889476307F50099476315F50009456C +:10EB200011A00D45E91693F6F60F2307D40201470D +:10EB300099C2385C21078307540113066405834595 +:10EB40005405C1B7411106C622C426C2AA84EF509B +:10EB5000C01A930700FABCA4B737002003C5F70416 +:10EB6000A14537340020EF403ECFF628130700645C +:10EB7000834784263347D702850793F7F70F23048B +:10EB8000F42663C6E700EF506EA023040426B240CB +:10EB90002244924441018280411122C406C6B147F9 +:10EBA0005CA57C590D472A8498A35C25785993F776 +:10EBB000F7031CB38347D50423060504898BA1C33F +:10EBC00083474505898BA1C76C5189ED6C50BC29E1 +:10EBD0009DCB68581946D10521059710FA1FE7808B +:10EBE000807515A0BC25FDD389472306F504685917 +:10EBF0001946B10509059710FA1FE780C0738347CE +:10EC00004405898BE1F78347C404898B91EB6858ED +:10EC100019469305E40409059710FA1FE780A071CF +:10EC2000034744058D47630BF70068581946930561 +:10EC3000640521059710FA1FE780E06F8347D4042D +:10EC4000858B91E70347C40489476317F700785819 +:10EC50001C2393E707041CA383475405858B91E786 +:10EC6000034744058D476317F70078581C2393E743 +:10EC700007F81CA358349D474C24631CF700034538 +:10EC80005402930760FA3CA42244B24041016F4011 +:10EC9000305203471402930720FA3CA489470945E0 +:10ECA000E304F7FE0145CDB74111B737002026C276 +:10ECB0009384473CA38004002382073CB73700209D +:10ECC0004AC083C7070B373900200326893B06C695 +:10ECD00022C493F7F703139797015C56B706008297 +:10ECE000FD16F58FD98F5CD62A84EFF0FFEAB7378F +:10ECF000002083A7C73E7858B70680002285B8DB7E +:10ED00008327893B9843558F98C3D857719BD8D791 +:10ED1000EFF0DFC59730FA1FE780207B9C30858BB2 +:10ED200089CBA3800400B2402244924402494101AD +:10ED30008280930700FA3CA4FDB7797122D41306B0 +:10ED400055012A84285D8146814506D69730FA1FF1 +:10ED5000E780407A631E0520032884079D461D45F1 +:10ED6000034708003D8B58B4834718007CA4631800 +:10ED7000D71A034728000D45935667001377F7030A +:10ED8000637FF7181545639C06189388F7FFB388CF +:10ED9000E84093F8F80F23071403834538004545EE +:10EDA00093F63500639D061693F6450063910612AF +:10EDB000130648007D179376F70F13F7850015CBE0 +:10EDC0001832034E940251451353470063196E14D1 +:10EDD0000565130505F02207698F08220353A40275 +:10EDE000498F5145631DE3121387E6FF09069376A9 +:10EDF000F70FC189BDC518221377F7032302E40278 +:10EE00002C220967130707F0A205F98D1832D98D56 +:10EE1000C205C1851397050141837AB095CD83055D +:10EE2000060063DA050A9305C0123307B70283456B +:10EE3000540205456393A50AAD078A07B307F74057 +:10EE4000938547ED1305405103478402637BB50A60 +:10EE5000136707042304E4021387D6FF0D06937695 +:10EE6000F70F83473800594513F707024DEB93F727 +:10EE7000070481CB1C221387F6FF9376F70FA301BB +:10EE8000F4026145C9EE0346E4027C24385C834603 +:10EE9000C402918F8907BA973EC87E3C034584021D +:10EEA000830854013EC00308340283479402034799 +:10EEB000D40283455405850632C602C402C293F6C5 +:10EEC000F60F13066405EFB0E075014589A8130637 +:10EED00058007917CDB5F94589BF09456391A50259 +:10EEE000B735002083C5F53C89078E0789C5938710 +:10EEF000770D8607A1B79387A7048E0781B7A90767 +:10EF0000EDBF4E3CAE98B735002083D5852A63DC33 +:10EF10001501136707042304E40213050002B2502D +:10EF2000225445618280B7350020231E140383A834 +:10EF3000C53E136707022304E40203A5C8007977DE +:10EF40007D17698F23A6E8000100010003A7C53ED5 +:10EF50008965930800F80CC7B73500209385453CB8 +:10EF6000938757ED2382150186077CD348C7EDB5FB +:10EF7000054575B75D71B7370020A2C403A4872E7D +:10EF8000A6C25ED6F974B73B0020CAC04EDE52DC82 +:10EF900056DA5AD862D486C637390020FD148969FA +:10EFA000138C4B3C130A00F8B73A0020373B002083 +:10EFB0008327C93EF8537DFFD44733F79600D8C75F +:10EFC000010001000327C93E93072059B70533000C +:10EFD0002324370123024C017CD354C78347840286 +:10EFE00023820B3CA3020C0093F7F7F92304F402ED +:10EFF000A3000C0085471CC383A78A3B944393F668 +:10F00000F6E794C3944393F6F6E793E6061094C3A9 +:10F0100083260B4490464D8E90C61306900530CB48 +:10F02000D856759BD8D6034744029376F707984382 +:10F03000137707F8558F98C39730FA1FE780E04899 +:10F04000EF40B04B83C74B3C858B99C72285238209 +:10F050000B3CEFF09FCE31C5930700FA3CA403456B +:10F0600084028346C402830854011375F5F91365BD +:10F0700005042304A40203083402834794020347CF +:10F08000D4028345540502C802C602C402C2723CBF +:10F09000850693F6F60F32C013066405EFB080586C +:10F0A00009A8834784021307000293F70706638EBB +:10F0B000E700B640264496440649F259625AD25AAD +:10F0C000425BB25B225C6161828038249307500A04 +:10F0D000E300F7EE69B75971A2D4130655012A84EB +:10F0E000285D8146814586D6A6D2CAD0CECED2CC66 +:10F0F000D6CADAC8DEC6E2C4E6C2EAC06EDE97301F +:10F10000FA1FE780203F054759ED032A84071D4673 +:10F110001307000883460A00BD8A54B483471A00C7 +:10F120007CA46392C60883442A000D4793DA6400E6 +:10F130002304540393F4F40363F7F40613871400D1 +:10F140006356F70089461547638FDA04FD17858FEC +:10F150002307F40283473A0013094A00858B9DE791 +:10F16000FD1483473A0093F4F40F898BC5CB034712 +:10F17000C4053C5C6307072489469C236318D706B3 +:10F18000E207E18763C90706494731A88347440579 +:10F19000130564058DCB1946CA859710FA1FE780C1 +:10F1A000802A454721E1B650265496540659F6491F +:10F1B000664AD64A464BB64B264C964C064DF25DF7 +:10F1C0003A85656182808547230AF40483470A00F3 +:10F1D0001946CA859987858BA30AF4049710FA1FEC +:10F1E000E78060151309AA00E514A5BF0347D405FD +:10F1F0009D83E31BF7F81946CA851305E4059710AC +:10F20000FA1FE780402449D183478402E914190991 +:10F2100093E7470093F4F40F2304F4022285EFF000 +:10F220004FDD214749D183463A0093F7460089C70D +:10F23000FD14050993F4F40F93F7860095CB8347EB +:10F24000190083459402514713D64700E39DC5F446 +:10F250000567130707F0A207F98F03470900D98F45 +:10F260003A346303F7003EB4F914090993F4F40F38 +:10F2700093F70601A1CB5547E3970AF283470900AC +:10F280000967130707F093F7F7032302F402834794 +:10F290002900A207F98F03471900D98F7EB0030711 +:10F2A0000900635507006177D98F7EB07E30F51471 +:10F2B0000D0993F4F40F99C78347840293E707027B +:10F2C0002304F40293F60602638F06425947E39C37 +:10F2D0000AEC4946CA8568089710FA1FE780A0051E +:10F2E000BC8709477EBC5C4CB98B6394E7028347BB +:10F2F0002408858B6384071CB737002083A9472F18 +:10F30000130B6405854B639E090C8347C407639AFE +:10F310000712B914490993F4F40F83473A0093F79D +:10F32000070489CB83470900FD140509A301F402F2 +:10F3300093F4F40FBDCC13062003A54505450948F9 +:10F340000347190083470900631AC7046398B70489 +:10F350000347C4076314A704834639000347290001 +:10F36000A206D98E034749004207D98E03475900A8 +:10F370006207558F2320E40C034769002300E40E45 +:10F3800003477900A300E40E034789002301E40E3C +:10F3900003479900230E0407A301E40E63FB9700C3 +:10F3A0001387170093C7F7FFBE9493F4F40F3A99AD +:10F3B000C1F82285EFF08FD885476309F5340147FE +:10F3C000DDB30547230EE4049C231946CA859D83BB +:10F3D000A30EF4041305E4059710FA1FE780A0F5C7 +:10F3E00025B503C74900834794026316F70C83478A +:10F3F000540503C75900858B631FF70A1946DA8540 +:10F40000138569009710FA1FE780E0036315750BF9 +:10F4100083479402A308040C2319740D230AF40CE7 +:10F42000834754051946DA85A30AF40C1305640DC5 +:10F430009710FA1FE78020F085472320040E230E43 +:10F44000F40692571305040B13D757001D8BA30F17 +:10F45000E40C0347540213D68700FD8B0507230EE7 +:10F46000E40C7A3C232AF40AA30EE40C2183230F34 +:10F47000E40C2257931687012183232CE4080357B9 +:10F48000C102D18E232AD4082314E408025723286A +:10F49000E40AEF808FCE8347D101A307A408096552 +:10F4A00013F70702F2497D1531EBB3F9A90079454D +:10F4B000B389A90285A083A90900B1B50347440D0A +:10F4C00083479402E313F7E4834754050347540D3D +:10F4D000858BE31CF7E21946930564051305640D5B +:10F4E0009710FA1FE78020F68547E310F5E2A3089E +:10F4F000040C2319A40C2320040E91B7B3F9A9001E +:10F5000093F707041305C012B389A90281C7B7870F +:10F510002500BE990347540289467C246316D71AF6 +:10F52000373700200347F73C89078E07630A07181F +:10F530009387770D8607B389F940B7074B00138788 +:10F5400049ED938777DAE3E6E7DC373C0020930B5D +:10F550004C0E03D58B0037460F008146B33535037B +:10F56000130606242300040833053503EFE0500397 +:10F5700083274C0E2A8B2EC68297B245B3076501AE +:10F5800033B5A7002E953E8783A64B00130C4C0E77 +:10F5900019E163E4D7003387D740B737002083A74A +:10F5A00007092320E40AB74D0F0082971307204E66 +:10F5B000B3CBE902B737002023A8A73A0355AC0024 +:10F5C000938D0D24B73700201305451F03CB370B50 +:10F5D000035D8C00814681456A8633C5AD02B38CDC +:10F5E000EB02B3DCAC023305BB03135B1B00EFE0A3 +:10F5F000207BB3077D03930B00321307204E6695E3 +:10F600006A8681468145B3F77703B387E702B3C7BC +:10F61000A703C207C183B30BF5003305BB03EFE0BB +:10F6200020785E95637A350B2326740BDA890325DF +:10F63000C40A032B040A37460F00B335AD02130684 +:10F64000062481463305AD02EFE080756365AB0AA1 +:10F650003305AB402322A40A0345D4079307F00FD8 +:10F660006304F500EF400EA60326440AB7370020D6 +:10F6700003A5872F636536098327C40D03578C00C4 +:10F6800033063641A183C207C183B387E70213075C +:10F6900000329306D407A2859387071933D7E70270 +:10F6A000EF305EC20347D4079307F00FE303F7C6BA +:10F6B000FD572319F4085C4C93E747005CCC91B9E3 +:10F6C0009387A7048E0785BD85466315D700AD07D0 +:10F6D0008A0795B5A907FDB737153D006A868146AB +:10F6E000130505908145EFE0A06B3385A9402326E3 +:10F6F000A40A8D492DBF83274C003E9B91BF8327D1 +:10F700004C003E9695BF231F040201B98947639CB4 +:10F71000FA007C34858B81CB8347440589C71C382C +:10F72000D5CFFD171CB8EF40405D2285EFF00FA448 +:10F730008347840293F70702E38307C87E30F945C5 +:10F7400013970701418763560700CE07CD839305C2 +:10F75000C012034754028946B385B7027C24631A5A +:10F76000D708373700200347F73C89078E073DCB82 +:10F770009387770D13961700B387C540B7064B00E4 +:10F78000138647ED938686DA13071002E3EDC6A0D1 +:10F7900013070064E365F7C2B736002083A5C63EB1 +:10F7A00079777D17D045718FD8C50100010003A777 +:10F7B000C63E8966930500F814C7B73600209386C5 +:10F7C000463C938757EDCCA286077CD350C793075E +:10F7D00050FA3CA48347E4025EBCD5B62285EFF024 +:10F7E000AFCCF1BE9387A70493963700B387D5407B +:10F7F00071B785466318D700AD0713972700B38705 +:10F80000E540ADBFA9078E07B387F54085BFB73781 +:10F81000002083A7872E394693050008D84F01455D +:10F82000459BD8CF13074004A388E70C6FE0FFA1E6 +:10F83000411122C4130655012A84285D8146814561 +:10F8400006C626C29730FA1FE780C0CA85472DE159 +:10F85000245C1D46930700089420BD8A54B4983058 +:10F8600078A46397C6048347840293E78700230440 +:10F87000F402BC2093D6670013F6F70395478DEA90 +:10F88000930616008D4763D5E6027D17118F230777 +:10F89000E402BC3093854400858B9DCB83464405B0 +:10F8A0000D479C206397E61293F7070481EBC54749 +:10F8B000B240224492443E854101828068501946FC +:10F8C00051059710FA1FE78000B89385A40065D111 +:10F8D000B830C94793762700E1FE230E04049376DF +:10F8E0004700CD47F1F693760702D947F1F29377B7 +:10F8F000870085C39C318566938606F0A207F58F45 +:10F9000094218905D58F3EB483C7F5FF9183A30465 +:10F91000F402418B3DC79C210967130707F093F759 +:10F92000F7032302F402BC21A207F98F9831D98F83 +:10F93000C207C1877EB0038705006356070A130715 +:10F94000C012834654020946B387E70278246392C3 +:10F95000C60AB736002083C6F63C09070E07D1C693 +:10F960001307770D0607998F138747ED93064051CC +:10F9700063F9E6088347840293E707042304F4024B +:10F980008D05BC3093F7070481C79C21A301F402C5 +:10F99000830744016347F00A85475CA82C38054576 +:10F9A000EF40AEB708B82285EFE05FFC054781471E +:10F9B000E310E5F00347840293060002137707067D +:10F9C000E318D7EE130750FA38A40347E4025ABCF1 +:10F9D000C5B5034754059987858BE31AF7EC19469B +:10F9E00013056405F9BD7947A9BF1307A7040E07DE +:10F9F0009DBF05466395C6002D070A07ADB72907C9 +:10FA0000FDB7B736002003A5C63E79777D17504570 +:10FA1000718F58C50100010003A7C63E8966130512 +:10FA200000F814C7B73600209386463C938757EDFD +:10FA3000C8A286077CD350C78347840293E7070296 +:10FA400035BF3C38858399C33CB889BF8547EDBF36 +:10FA5000011126CAB734002003A7044422CC4AC8A7 +:10FA60004EC606CE5C5737390020B7390020F59BCB +:10FA70005CD70327893B8347450237340020014682 +:10FA800093F6F7071C439305F00F93F707F8D58F0C +:10FA90001CC3B7C7898E938767ED1CC7B75755003E +:10FAA000938757555CC303A7C93E5C4393E7170090 +:10FAB0005CC3930710FA3CA5034555022302043C9E +:10FAC0001304443CEF40200383A6C93EA302040074 +:10FAD0000327893BA300040085479CC21C433706CB +:10FAE000330093F7F7E71CC31C4393F7F7E793E75B +:10FAF00007101CC303A70444F24062441C47D244CD +:10FB00004249D18F1CC793079005BCCAB249056111 +:10FB10008280411106C622C4FD572308F50283479F +:10FB200015022A842301F502A147A300F5023545F9 +:10FB3000EF40C0242285EFF0BFF1373700200326C5 +:10FB4000C73EF977FD175446F58F5CC601000100EA +:10FB50008327C73E0967130600F898C73737002088 +:10FB60001307473C50A30567130727D1F8D3D4C721 +:10FB7000930740FA3CA4B240224441018280011123 +:10FB800022CC130655012A84285D8146814506CE84 +:10FB900026CA4AC84EC652C49730FA1FE7808095DD +:10FBA00063170542032A84079306F00703470A00F8 +:10FBB0003D8B58B483471A00A301D402230A0404DE +:10FBC00093F7F7037CA4230E04049D46631FD732EA +:10FBD000584C9316170163CE063E03492A009374CE +:10FBE000F90313871400638CE7008D44F2406244EC +:10FBF00026854249D244B249224A0561828013597E +:10FC000069002304240383473A0093094A0013F749 +:10FC100017004DE3FD1483473A0093F4F40F13F7F4 +:10FC2000270021C7E31309FCC18B91C703471402C6 +:10FC30008947E30CF7FA8547230EF4043C5CCE8534 +:10FC400019469C231305E405E9149D83A30EF404CF +:10FC50009700FA1FE780206E83478402990993F486 +:10FC6000F40F93E747002304F40203473A00937725 +:10FC7000470063940736137687003DCA83C719008F +:10FC80008566938606F0A207F58F83C60900F914EE +:10FC90008909D58F3EB483C7F9FF93F4F40F91839C +:10FCA000A304F402FD572301F402418B6DC729E63A +:10FCB000D5442DBF63110932C18B91C7034714028C +:10FCC0008947630AF7308547230AF40483470A000B +:10FCD000CE8519469987858BA30AF404130564051C +:10FCE0009700FA1FE78020659309AA00E51425B75D +:10FCF000FD57A304F4027DB7EF40200083C709003D +:10FD00000967130707F093F7F7032302F40283C789 +:10FD10002900A207F98F03C71900D98F7EB0038786 +:10FD20000900635507006177D98F7EB083C729002A +:10FD300009479583A302F402E36CF7F6F5148D09E5 +:10FD400093F4F40F83473A0013F707026319072867 +:10FD500013F7070419CFC18B91C7034714028947D2 +:10FD60006301F72883C70900FD1493F4F40FA3017E +:10FD7000F402639A04266303090283473A00C18BA5 +:10FD80008DEBEF309077E31509F22307040222850B +:10FD9000EFE0DFBD31BFA30604026DB72285EFE0BF +:10FDA0005FA519E1A14499B52285EFE03FB971F54E +:10FDB000D5BF0347140289476313F700894483477B +:10FDC00054027230230694028507A306F4029317A7 +:10FDD0000601C18763DF07004E064D829307C012FC +:10FDE00085463306F6027C246317D700A9078E07E1 +:10FDF00029A8F947F5B7373700200347F73C8907AB +:10FE00008E0779C79387770D86071D8EB7074B003E +:10FE1000130746ED938787DA63E9E71C93070050E1 +:10FE200063EBC70AB737002083A5C73E79777D17F4 +:10FE3000D445758FD8C50100010003A7C73E896569 +:10FE4000373900200CC7130500F89305493C130609 +:10FE500056EDC8A1060670D354C79309493CBE8429 +:10FE60007C53FDFF8347140222852301F402A1473E +:10FE7000A300F402EFF0DFBD83A6C43EF977FD17BF +:10FE8000D846F98FDCC60100010083A7C43E89660D +:10FE90009304000294C7930600F82382D9009306C6 +:10FEA000A05BF4D3D8C79720FA1FE780006283478E +:10FEB000493C858BE38C07D2228562442302093CAE +:10FEC000F240D2444249B249224A05616FF0AFA0E4 +:10FED0009387A70429BF034704039307F00F9304F4 +:10FEE0001002E315F7D0930710271306F6D8335600 +:10FEF000F6023705060093060403A285130525B113 +:10FF00009304F007EF301E82D5B1894663F7E6000F +:10FF1000994693040008E31BD7CCE91793F7F70F32 +:10FF20007D4793040008E363F7CC8547230AF40474 +:10FF300083470A00194693052A009987858BA30AEF +:10FF4000F404130564059700FA1FE780C03E5C3493 +:10FF5000230E040405476391E7022C5C230EF4048E +:10FF600019469C211305E405A1059D83A30EF40405 +:10FF70009700FA1FE780203C2285EFE09F878547A6 +:10FF8000AA84E311F5E22285EFE05F9BE31C95E094 +:10FF90005C3481C71947639CE7007C34858B81CB37 +:10FFA0008347440589C71C3891CFFD171CB8EF3033 +:10FFB000D054583491479944E30AF7C22285EFE0C0 +:10FFC000FF9A2DB12285EFE03FCE814405B18544F3 +:10FFD00031B99D4421B9C54411B9CD4401B9D944C1 +:10FFE00031B1DD4421B1E14411B193041002FDBEF1 +:10FFF000411122C4130655012A84285D814681459A :0200000260009C -:10000000C48303A7878322D4373400204AD006D67E -:100010004ECE937615003E891304C4816387061083 -:100020003C20858BE5C79389C48383C5C9011185AD -:1000300001460D8923010400EFF00FF783C5C48347 -:100040001306F00F054591858D899720FA1FE780EB -:10005000C0BDEFF01FF883A70901014681450545A2 -:1000600082973C30858BD1C7084CA30104008145A1 -:1000700081461306F100A307010023020400972024 -:10008000FA1FE78080B29315850137390020E1859A -:100090001309C98591ED1C4C9306F00F9823630951 -:1000A000D700834719006385D7006303F7008945AC -:1000B0008387C48363C507001C4C988798A3B73710 -:1000C00000209387C7839C4B104C93F5F50F09458F -:1000D00082978347C900898B91C7034509018545EC -:1000E000EF200EFDB250225492540259F24945615C -:1000F000828083278983FC53F5F783A709012302B4 -:1001000004000146814549458297E9BF7C5399F730 -:10011000EFF03FECEF20FEF29384C483230204004F -:100120009C48014681454545C5B73C30858B91CFFC -:10013000EFF03FEA9384C483A30104002302040088 -:100140009C48014681450545C1B77C53F9FFEFF056 -:100150005FE8D9B70111300099451305001006CEAC -:10016000EF308E910DED19469305F00F28009700A2 -:10017000FA1FE780202B85476303F5021946930594 -:10018000F00F28009700FA1FE780202030009945E3 -:1001900013050010EF30EEB70545EF30CEB2F24058 -:1001A000056182801C49E9C3411126C206C622C4EA -:1001B0004AC01C21AA8493F7070481C75C41094502 -:1001C000D1CF373900201306000281451305C983BA -:1001D0009700FA1FE780601B13060002A68513052F -:1001E000C9839700FA1FE78000179307C9839C3FD4 -:1001F0001304C98381E7930780021CBC3C2C99E35C -:10020000A1473CAC3C3C99E3C5473CBC5C2C99E322 -:10021000ED575CAC5C3C99E3ED575CBCB734002017 -:100220009387C485C8439384C48509C59700FA1F82 -:10023000E78080EC8347C98323A20400858B91CBA0 -:10024000483C9305900409059700FA1FE78080DF7A -:10025000C8C01C300145FCB41C44DCC8B240224478 -:1002600092440249410182800545828039714AD811 -:10027000373900209307C9839C4706DE22DC26DA43 -:100280004ED652D456D25AD05ECE62CC66CA6AC816 -:100290006EC6638B0724373D002003270D81373B53 -:1002A0000020B68C1C43B73A0020B734002093F7E7 -:1002B000F7E793E707081CC383264B883707CEFF71 -:1002C0007D179C462A8C2E84F98F9CC683A78A832F -:1002D000B28B9309C98323A807049387C485DC27BD -:1002E000138AC485BD4D898B6399071A03270D8135 -:1002F0005C57F19B93E717005CD78347CA00898B53 -:10030000638A071A03C519008145EFF05FB9832797 -:100310000D813706330098431377F7E798C3984366 -:100320001377F7E71367071098C383264B8898461F -:10033000518F98C603A78A839306A00534CB8346C2 -:10034000C98313F606046301061883A5490037968E -:10035000DBFF13060681B29561661306066A6375B4 -:10036000B6161306800C70D303A68900858A238EE7 -:10037000748590C703A6C900B7340020A3009A0172 -:10038000D0C354C38347EA0093E727002307FA004A -:100390009387C481C84B9384C481630A0C122300E1 -:1003A000750100B12286E28509059700FA1FE780F2 -:1003B00080FA83A78A83D848370506008145B8DBD1 -:1003C000A3810400130525FF23820400EF205E8E25 -:1003D000EFF08FD48D47FCB08347CA00898B9DCB4B -:1003E00003A78A837C53FDFFB727002083A7875884 -:1003F000829783278A001D8D8347C9830D81A18B36 -:10040000F1CBD848B707800062059387F72F5D8D41 -:1004100008C309448345C9830145228691858D8996 -:100420009720FA1FE780608003274B8801455C57BF -:100430008583858BA1C783A74900C165938505A0E6 -:10044000938787C1B3D6B702370810FE7D18B3F77C -:10045000B702FD8A139646017443B3F60601D18EA6 -:1004600074C39306A00F3706FCFFAA07B3D7D702C1 -:100470007443F18EBA07B983D58F7CC3F2506254AE -:10048000D2544259B259225A925A025BF24B624CF0 -:10049000D24C424DB24D216182809720FA1FE780F5 -:1004A000A0C8E3FCADFE83C7A9019607C117E3E628 -:1004B000A7FE2DBD8347C98393F70704E38407E4B0 -:1004C000894503A5490091B51306000A69BD23209B -:1004D0007501C5B5DC4809041374F40F80B3A29705 -:1004E0002380070088B33DB7054549BFB7270020E3 -:1004F00083A7477885C3054582800545B2502254BD -:1005000092540259F249624AD24A424BB24B224CAF -:1005100045618280797126D2B73400209387C483E5 -:100520009C474ECE06D622D44AD052CC56CA5AC880 -:100530005EC662C49389C483E9D337390020832718 -:10054000898398430D8B05C3B84B619BB8CB984307 -:100550001367870098C39C438D83858B89C70100EF -:10056000010001000100373400209307C485DC2717 -:10057000B68B328C918B2E8A2A8B1304C48599E713 -:1005800083C5C48393F70504639B071003C5190053 -:100590008145EFF0DF9003C5C48383C5C9010146DF -:1005A00011850D89EFF04FA0B73A002003A789000D -:1005B00083A70A81A30184012301740198C703A7BB -:1005C000C900D8C383C7C48303278983858B5CC3D1 -:1005D0005C43858BA1C75C4099EB03C5D9019305AA -:1005E000900409059700FA1FE780C0A548C05C4049 -:1005F00089D7382098A35C40630A0B0A63080A0A6B -:10060000A380470148405286DA8509059700FA1F02 -:10061000E78060D4832789835840B8DBEFF0CFAF01 -:100620007C2413070004A14693E747007CA4B73756 -:100630000020238EE7801387C7812302070074B34D -:10064000372700200327C7569384C78119C7082876 -:1006500013060064C145EF200EB583268983A3826B -:10066000040003A70A81A380040085479CC21C43A1 -:1006700037063300014593F7F7E71CC31C4393F794 -:10068000F7E793E707101CC3B737002003A7478895 -:100690001C47D18F1CC793079005BCCA85B593F53D -:1006A000050393E5150003A54900E5B5A380070000 -:1006B00095B7797122D4373400208347C48326D27A -:1006C00006D64AD04ECE52CC858BB73400206387F5 -:1006D000072683C7C481858B638B07229387C481D8 -:1006E00083A98701B737002003A74788A307010024 -:1006F0001389C4815C578583858BB1C39307C483F9 -:10070000DC43C165938505A0B3D6B702370510FE5B -:100710007D15B3F7B702FD8A139646017443E98E3F -:10072000D18E74C39306A00F3706FCFFAA07B3D778 -:10073000D7027443F18EBA07B983D58F7CC3814643 -:100740001306F10081454E85238E04809710FA1F11 -:10075000E780A045131A8501B7340020135A8A4157 -:100760009384C485631F0A00BC309306F00F638A2C -:10077000D7000327890118236305D7006303F70017 -:10078000094A8307C48363CC070A631C0A0A9C874F -:100790002380F900DC24918B85C783C71900CE978D -:1007A000982393070008631DF70083274901130767 -:1007B000F00F98C38347C48393E78700230EF48226 -:1007C000B737002083A70781B70680009843558F6D -:1007D00098C3D857719BD8D7DC400345C4838C336A -:1007E00011850D89EFE09FEA9710FA1FE780E03846 -:1007F000EFF04F9DD42493F74600E9CF83270901FA -:10080000139786016187F1172328F90083C7190020 -:1008100003260901CE979C338E07635C0708984432 -:10082000B306E64063FBD7049D8E13070002636C9A -:10083000D70403270901B307F7409CC4A9A0E30B21 -:100840000AF4EFF02F981304C483032689011C488F -:100850000D459375FA0F8297C840B420B0306306F7 -:1008600005200C310905EFF07FC8B2502254925494 -:100870000259F249624A45618280118F3E97930680 -:100880000002E3F8E6FA88288945EF206E82834764 -:10089000C483A18B9DCBC840B030B42005C50C31BA -:1008A0000905EFF0BFC48347C483DD9B230EF482A8 -:1008B0006DBF0327090193E606F8D4A4B307F740F8 -:1008C0009CC4D1B781450145E9BF83C71900F91719 -:1008D000A380F900EFF0EFEF1304C4831C48032654 -:1008E000890181450D45829783471900858B89CB06 -:1008F0001C48A30009000146814511458297B5B700 -:10090000230209001C48014681455145C5BFEFF04F -:10091000AF80B737002003A70781B70680001C43CC -:10092000D58F1CC3EFF0EFEAB727002083A7475706 -:10093000894585DF13051008829705BF9387C48119 -:100940009C339384C481858B638D0718B73900204D -:10095000A307010003A98401A3800400EFF06FE75F -:100960009387C985D4279389C98593F74600638007 -:10097000071283471900CA97982393070008631842 -:10098000F7008347C48393E78700230EF4829C48D3 -:10099000139786016187F1179CC883471900904817 -:1009A000CA979C338E076355070C03A78900B306CB -:1009B000E64063FDD7009D8E13070002636ED700EB -:1009C0009848B307F74023A4F90039A0118F3E9748 -:1009D00093060002E3F6E6FE03C509018945EF1020 -:1009E0003EED8347C483A18BD1CFB737002083A6C8 -:1009F00087839307800C1307F00FFCD2DC4837067F -:100A00003300014598C323810400B7370020A38138 -:100A1000040003A7078123820400A38204001C436F -:100A200093F7F7E71CC31C4393F7F7E793E7071027 -:100A30001CC3B737002003A747888345C4831C47DE -:100A400091858D89D18F1CC79307A005BCCA054627 -:100A50009710FA1FE780601D8347C48383C629006F -:100A600003C63900DD9B230EF48281450145E5BBB9 -:100A7000984893E606F82386D900B307F74023A4E5 -:100A8000F90099BF83471900F917A300F900884CB2 -:100A9000814681451306F1009710FA1FE780E010A8 -:100AA0009C4C931585019306F00F9823E185630A0A -:100AB000D70083C739006386D7006304F70093E546 -:100AC00025008307C48363C6070081E59C87230054 -:100AD000F9001304C4831C48904C93F5F50F0D45A1 -:100AE00031BDEFE07FE3B737002003A70781B706EA -:100AF00080001C43D58F1CC3EFF0AFCDB72700207B -:100B000083A74757E38307D685452DB5411122C4F6 -:100B1000373400209307C485C84306C623870700DF -:100B20001304C48509C597F0F91FE780E05CB73767 -:100B300000201387C7811837232204009387C781B9 -:100B400019C7942721476394E600A3840700F03374 -:100B500085461307A6FF1377F70F63E4E60090A717 -:100B600094B7EFE03FE60828C145EF20CE8201456B -:100B70008145EF20EE93B24022440145410182803D -:100B800041114AC03739002006C622C426C2EFF000 -:100B9000FFF79304C985FC34373400201304C48361 -:100BA0001CB08828DC48A1451309C9851CC4EF1076 -:100BB0009EFE88289145EF101EFEDC2413F72700C7 -:100BC00019CF1C4801468145130520028297B24087 -:100BD0002244230609009244024941018280918BFC -:100BE000FDD71C480146814513054002C5B7797100 -:100BF0004ECEB739002006D622D426D24AD052CCC7 -:100C000056CA5AC85EC662C466C29387C985DC27C5 -:100C1000898BD5C337340020834CC483B73400207C -:100C2000356B93E79C00856B3D6C138AC985230E59 -:100C3000F48201499384C481B73A00203D0B938B21 -:100C40002BF93D0C83461A0003C6C9858145014531 -:100C5000EFF0CFE1BC20858BF5D70345C483014677 -:100C60009305F00F11850D8923810400EFE0DFB3B8 -:100C7000F9470100FD17F5FF8345C4831306F00F04 -:100C8000054591858D899710FA1FE78000FABC30E1 -:100C9000858B9DCFA3810400EFF0AFB38347CA00DB -:100CA00003450A01854593E707F82306FA00EF108C -:100CB0003EC0230E9483B250225492540259F249FA -:100CC000624AD24A424BB24B224C924C45618280DE -:100CD000EFF02FB005091379F90FA1476315F9005B -:100CE000EFF01FEAF9B783A78A8323A66701010003 -:100CF000010083A78A83096798C7130700F8D8A063 -:100D000023A2770723A6870183A78A83FC539DDB51 -:100D10000100DDBF411122C406C693F715002E84E1 -:100D2000A9C3373700201307C7855C2793F6270030 -:100D30009DC2E207E187082B1306000563DA07006E -:100D4000B737002003C657859307000A3306F6021B -:100D50009145EF105EC513451400B2402244410195 -:100D6000828093F72500A1C3373700201307C7857A -:100D70005C2793F647008DC6E207E187082B130630 -:100D8000000A63DC0700B737002003C657859307C6 -:100D9000000A3306F60213068602A145EF10BEC014 -:100DA000134524005DBF93F7450091C7EFF03FE482 -:100DB000134544005DB793F7850081CFB737002016 -:100DC00083C78786918B99C3EFF09FDB134584001F -:100DD00069B793F705010145C9D3EF208EA6B73750 -:100DE000002003C73782A147631BF700B7370020F5 -:100DF00003C5C78613060064C145EF10DEBA13456C -:100E00000401A1BF1971A6DAB7340020E2CC03CCEB -:100E1000C483A2DC3734002086DECAD8CED6D2D432 -:100E2000DECED6D2DAD0E6CAEAC8EEC69307C485CB -:100E300013671C0023860700238EE482F837DC4BFF -:100E40009389C483372A002023A4F90019469547C3 -:100E500093058A552A8913055102A380E9002302CC -:100E6000F10297F0F91FE780004FEFE09FDE935704 -:100E700085002309F10293570501A309F10283C7F5 -:100E80009901A308A1026181A30AF10283D7A901F4 -:100E9000230AA1021304C485231BF10283A749017D -:100EA000938BC4833EDC83C78901B7290020230EBE -:100EB000F102B727002003C54755EFE0AFE2A30ECC -:100EC000A10252C802C66309090083A789581609FE -:100ED000829785472A993EC683A78958829708CC6E -:100EE00095461306F00FE9454810EFF02FE08547CF -:100EF000631D0516373B0020130ACB81373D0020C8 -:100F0000B73D0020B567BD073ECABD67BD073ECCF3 -:100F100083475A00858B6383071A9710FA1FE7806F -:100F2000C0C58347CB81858B63830718832C8A01D7 -:100F300081461306310281456685A3010102230E15 -:100F40000B809710FA1FE78040C6AA8A6311051626 -:100F500083C62C000547032844006398E6126257B5 -:100F6000630F071613059800194693853C0097F008 -:100F7000F91FE780403E5C4003C5C483B73C0020B6 -:100F80008C3311850D89EFE06FF083A70C81B706D4 -:100F900080009843558F98C3D857719BD8D7971026 -:100FA000FA1FE78080BD83471A00858B6381071095 -:100FB00083278D835247A3000A00D8C70100010090 -:100FC00083278D83096783A60C8198C7130700F8D0 -:100FD0002302EA009842094631830D8B6319C71238 -:100FE0001307E043F8D36247D8C79710FA1FE7808A -:100FF000C0B88347CB81858BDDCB83278A01230E45 -:101000000B80982399476314F70A83A7895882971E -:1010100008C4EFF0BFAFC25783A54B01A3800B00FC -:1010200013D7870083474103238E8483A3080400DA -:10103000E207D98F23A4FB0091475EA48146814734 -:101040001306000233D7F500058B09C7850A93FA0A -:10105000FA0F85468507E397C7FE99C2A308540196 -:1010600008288945EF10DE848147F6506654D6542F -:101070004659B659265A965A065BF64B664CD64CDC -:10108000464DB64D3E850961828009466391C60290 -:10109000C247194613859C009385875542CE97F029 -:1010A000F91FE780E03305477248E30AE5EA954611 -:1010B0001306F00FE9454810EFF04FC3B247B5C72C -:1010C00083A789588297636E250533052541634EB2 -:1010D0000504EFF0BFA38547238E848379B7EFE043 -:1010E0007F8E03053102FD5793850D8523AAFB00F2 -:1010F0009710FA1FE78060C313850D85EF50EFE06E -:101100009147E3F6A7FA83A74B013EDC4DB798421F -:1011100031830D8B01E713076019E9B51307E01B55 -:10112000D1B53305A940E34605FA83A789588297CC -:101130001C4C1D8DA167938707D0E3FBA7DCEF1044 -:101140005EF083A78958829708CC95461306F00F66 -:10115000E9454810EFF08FB975B31D71CAC837392A -:1011600000206AD8034DC983A2CC37340020A6CA18 -:10117000D6C26ED69307C48586CECEC6D2C4DAC098 -:101180005EDE62DC66DA23860700AA8A93671D00AA -:1011900013067101994513050010230EF982B72437 -:1011A0000020EF206E8D1304C485B72D002093849A -:1011B00004546317052219469305F00F13057101B6 -:1011C00097F0F91FE78000268547630BF5208947D4 -:1011D0002308F100194693858D551305110197F0E9 -:1011E000F91FE7804017C828372A0020356CEFE048 -:1011F0006FAF78349307C983A30EA10098B3584802 -:10120000B7390020B734002098C783278A58BD6CAF -:101210009389C98382979307FC003EC485679387AF -:10122000E7EB08CC9384C481B73B00203EC6BD0CDD -:10123000034601019546B9450808EFF02F83BC200D -:10124000858BFDD70345C9830146930500021185AF -:101250000D8923810400EFE02FD58345C983130650 -:10126000F00F054591858D899710FA1FE780E09B67 -:10127000BC30858B638A0718884CA38104008146A3 -:1012800001468145238104009710FA1FE780E09111 -:101290002A8B631B051603AC8401154783462C007B -:1012A0006394E616194693858D5513059C0097F0B7 -:1012B000F91FE780E01205476318E514D8489946FE -:1012C000814514C30345C98311850D89EFE00FBC27 -:1012D0008345C98301460D4591858D899710FA1F75 -:1012E000E780A094B820058B6300071203278A5873 -:1012F00023810400029708C4EFF05F8103473C019B -:10130000A3800900A3060400A38CE90003474C0155 -:10131000814513050002238DE90003475C01A38D7D -:10132000E90083460C010347FC00A206D98E03475F -:101330001C014207D98E03472C016207558F23A455 -:10134000E90083467C0103476C01A206D98E03475E -:101350008C014207D98E03479C01A3080400620751 -:10136000558F23AAE90081463356D700058A09C65E -:10137000050B137BFB0F85458506E397A6FE99C1F8 -:10138000A30864010347AC01082813068002238CDC -:10139000E9009145094758A4230EA983EF10AEE058 -:1013A0008346010105470144639CE60013063C00A7 -:1013B000994513050010EF20CE950545EF20AE901E -:1013C0002285F6406644D6444649B649264A964A9E -:1013D000064BF25B625CD25C425DB25D256182804D -:1013E0008547194693858D55130511012308F10092 -:1013F00097F0F91FE78020F6B79506001946938508 -:10140000851913057101E1BBEFE0CFDB638D0A00A5 -:10141000FD1A93FAFA0F63980A00EFF02FEF0544D4 -:10142000230EA98371BF83460101094783A78B83DC -:101430006397E6042247D8C70100010083A78B8386 -:10144000096798C7130700F8D8A01307E06EF8D310 -:1014500003A78B8323A697017C53FDFF83278A581C -:1014600082971C4C1D8DA167938707D0E3F2A7DC00 -:10147000EF103EBD83278A58829708CC55BB224780 -:10148000D8C70100010083A78B83096798C713079A -:1014900000F8D8A0324765BF373700201307C7854B -:1014A0005C27A1E3B737002083A74788B736002021 -:1014B0009386C683DC578583858B89CFB737002019 -:1014C00003C73782C8C28D4789456303F700854546 -:1014D0006FE0FF9C9377F50F9CB27CB781453E850A -:1014E000C5BF8280411106C622C4EFE05F91373448 -:1014F0000020714681451305C48597F0F91FE780E8 -:10150000C0E837150600FD57130545D1232EF48496 -:10151000EF105E8C1304C48508A837050600130578 -:10152000256B9545EF10CEF8B240224401454101AC -:101530008280B737002083A64788056713071710F6 -:10154000D8C6514701007D1775FF03A7478823269A -:101550000700514701007D1775FF03A7478885677E -:10156000938717105CC78280411106C6EFF07FFC9D -:10157000B737002083A74788130700483703009038 -:1015800098D7B8477D13370E00203377670033674D -:10159000C701B8C7B847B70600F9FD16758F3706FB -:1015A0000004518FB8C7B8473706F9FF7D16419B35 -:1015B00013679700B8C7B847B7080080B70E000296 -:1015C000718FB8C7B847370600FF7D16336717011C -:1015D000B8C7F84745757D1E619B13673700F8C78C -:1015E000F8471377F7F813670703F8C7EC4793F545 -:1015F000F58F93E50530ECC7F847718FF8C7F847CA -:1016000011663367D701F8C703A807051307F5FF6D -:101610007D753378E8003368C80023A8070503A860 -:1016200047057D15137808FF1368C80023AA07052E -:10163000F04B13660608F0CBF04B698EF0CBC85F19 -:10164000798D2167598DC8DFCC5F37070040F58D54 -:10165000B3E5D501CCDFD05FB70570003376C601A6 -:10166000598ED0DFD05709674D8ED0D7D057F18E25 -:10167000D4D7D45775767D16F18ED98ED4D7D4575A -:101680003706FDFF7D1637070200F18ED98ED4D7BD -:10169000945BC19A94DB945B93F6F6F094DB945BD5 -:1016A00093F6F68F94DB985BB70600504D8F98DB6E -:1016B000985B33776700558F98DB985FB70608FF14 -:1016C000FD16758FB7061000558F98DF985FB368C9 -:1016D000170123AC1703B24041018280B7370020C5 -:1016E00083A74788B7060090FD16F84F758FF8CF8F -:1016F000F84FB70690FFFD16758FF8CFF84FB70675 -:10170000F9FFFD16758FF8CFB44B45771306F7FF39 -:10171000F18E2567D98EB4CBB847B7060007558F31 -:10172000B8C7B847B7060070558FB8C7B847B706EF -:1017300007001367F700B8C7B847558FB8C7B84751 -:101740009D66718F558FB8C7B847B70600011367FC -:101750000730B8C7F84713670770F8C7F847558FC1 -:10176000F8C7F8471377F7F8F8C7F8471367770013 -:10177000F8C78280373700208327478841767D1657 -:10178000B44BF18EB4CB944737062000D18E94C76A -:10179000D44793E60601D4C7D447BD9AD4C7010005 -:1017A000010001000100832647880566DC4693E7B7 -:1017B0000701DCC6DC42D18FDCC283A7C609A18346 -:1017C000858BE5DF010001000100010083274788C8 -:1017D000416603A7C709B44BD18EB4CB9376F7010A -:1017E000B84B019B558FB8CB9847B706E0FFFD1665 -:1017F000758F98C78280B737002083A747884177C5 -:101800007D17B44F4166F98EB4CF9447D18E94C7FB -:10181000D44793F6F6EFD4C7D443758FD8C3D447D3 -:1018200093E60610D4C7D843518FD8C38280AA87C5 -:101830003DC11421194705456390E6069033B42352 -:10184000AC3337270020A30EC73E37270020230FD5 -:10185000D73E373700202304B788CC233737002002 -:10186000230CB786CC3337370020A304B788F8237E -:10187000B73700202380E7883737002011CA89CA8C -:10188000B757341293878767232EF78601458280E6 -:10189000232E0786E5BF0545828039C199471CA1E3 -:1018A000B727002083C7D73F1CB1B727002083C7C5 -:1018B000E73F3CA1B737002083C787883CB1B737E3 -:1018C000002083C787875CA1B737002083C797882C -:1018D0005CB1B737002083C707887CA101458280AF -:1018E000054582805D71A2C4373400208327448877 -:1018F000A6C24EDE86C6CAC052DC56DA5AD85ED6BA -:1019000062D466D26AD06ECED843FD76FD161377C8 -:10191000F7EFD8C39857B72500209385E53F758F1B -:1019200098D7D857B7060200B72400203D9BD8D7D8 -:1019300098479384D43FB7390020558F98C7D84330 -:10194000B736002013670701D8C303A6C6873757E9 -:101950003412130787672EC6E300E64CD84301799B -:101960001309F90F799BD8C3985FB166938606F087 -:1019700033772701558F98DFD84313671700D8C3F3 -:101980009710FA1FE780E08883274488B24603A7B0 -:1019900007091377F70398A003A74709298313774B -:1019A000F70798A2D843B96693860670799BD8C387 -:1019B000985F33772701558F98DFD8431367170057 -:1019C000D8C39710FA1FE780C08483274488B736AE -:1019D000002003A707091377F703A384E68803A76A -:1019E0004709B736002029831377F7072380E68855 -:1019F000D843B56693860630799BD8C3985F337712 -:101A00002701558F98DFD84313671700D8C3971065 -:101A1000FA1FE7800080032744888327070993F78C -:101A2000F7032384F9888327470937370020A983E0 -:101A300093F7F707230CF78683C7898894207D7E68 -:101A40003EC4224783274488130EFE0F998E03A7B6 -:101A5000070A13F6F60013054002419B518F23A09D -:101A6000E70A130760023387E6021306700283A5B4 -:101A7000070A45737D1393F5F5F013043002B70898 -:101A8000F1FFFD18130820023347C702930E10021E -:101A90007D4FF94FF542F1436D4D514CC944C54B53 -:101AA0003D49B949B14A2D4B354A3D8B12074D8FFF -:101AB0009305500223A0E70A3387B60283A5070ADD -:101AC000B3F5C5013347C7023D8B22074D8F23A0D5 -:101AD000E70A3387A60283A5070A370500F17D15BB -:101AE000B3F565003347C7023D8B32074D8F23A006 -:101AF000E70A3387860283A5070A6144B3F5150117 -:101B00003347C7023D8B42074D8F23A0E70A338737 -:101B1000060383A5070A370810FF7D18B3F50501F2 -:101B20003347C7023D8B52074D8F23A0E70A338707 -:101B3000D60383A5070AB70E0010FD1EE98D3347B3 -:101B4000C7023D8B62074D8F23A0E70A139756000B -:101B50003347C7029315C70103A7070A3377D70195 -:101B60004D8F23A0E70A3387E6035D4F3347C70253 -:101B70009375F70003A7470A419B4D8F23A2E70AFD -:101B80003387F60383A5470AD94F93F5F5F033471A -:101B9000C7023D8B12074D8F23A2E70A33875602F7 -:101BA00083A5470AD542B3F5C5013347C7023D8B2C -:101BB00022074D8F23A2E70A3387760283A5470ABF -:101BC000CD43B3F565003347C7023D8B32074D8FD8 -:101BD00023A2E70A3387A60383A5470A294DB3F555 -:101BE00015013347C7023D8B42074D8F23A2E70AF9 -:101BF00069473387E60283A5470AB3F505013347F2 -:101C0000C7023D8B52074D8FE54523A2E70A338774 -:101C1000B60283A5470AE98D3347C7023D8B6207A9 -:101C20004D8F23A2E70A338786020D443347C7024C -:101C30009315C70103A7470A3377D7014D8FB385A3 -:101C4000E60323A2E70A03A7870A254F419BB3C5F2 -:101C5000C502BD894D8F23A4E70A3387F60383A508 -:101C6000870A9D4F93F5F5F03347C7023D8B120766 -:101C70004D8F23A4E70A3387560283A5870A99422A -:101C8000B3F5C5013347C7023D8B22074D8F23A40F -:101C9000E70A3387860383A5870AB3F565003347D0 -:101CA000C7023D8B32074D8F23A4E70A33877602A4 -:101CB00083A5870A9543B3F515013347C7023D8BCA -:101CC00042074D8F23A4E70A3387960283A5870A2C -:101CD000B3F505013347C7023D8B52074D8F23A44F -:101CE000E70A3387760383A5870AE98D3347C7025E -:101CF0003D8B62074D8F93954600B3C5C50223A463 -:101D0000E70A03A7870A3377D701F2054D8FB3851A -:101D1000260323A4E70A03A7C70A419BB3C5C5024C -:101D2000BD894D8F23A6E70A3387360383A5C70AEB -:101D300093F5F5F03347C7023D8B12074D8FB3C5BE -:101D4000860223A6E70A03A7C70A3377C701BD891E -:101D5000A2054D8F23A6E70A3387560383A5C70A3A -:101D6000B3F565003347C7023D8B32074D8F23A67D -:101D7000E70A3387660383A5C70AB3F5150133471E -:101D8000C7023D8B42074D8F23A6E70A3387A60380 -:101D900083A5C70AB3F505013347C7023D8B520738 -:101DA0004D8F23A6E70A3387E60383A5C70AE98D8B -:101DB0003347C7023D8B62074D8F93953600B3C5FD -:101DC000C50223A6E70A03A7C70A3377D701F2059E -:101DD0004D8FB385F60323A6E70A03A7070B419BA4 -:101DE000B3C5C502BD894D8F23A8E70A33875602C4 -:101DF00083A5070B93F5F5F03347C7023D8B120718 -:101E00004D8F23A8E70A3387760283A5070BB3F526 -:101E1000C5013347C7023D8B22074D8F23A8E70A30 -:101E2000139726003347C70283A5070BB3F5650058 -:101E30003D8B32074D8FB3C5460323A8E70A03A79E -:101E4000070B33771701BD89C2054D8F23A8E70A19 -:101E5000139716003347C70283A5070BB3F5050197 -:101E60003D8B52074D8FB3C5C60223A8E70A03A7CF -:101E7000070B698FBD89E2054D8F23A8E70A03A7E9 -:101E8000070B930580023377D70123A8E70A37377A -:101E90000020A24C034797883387EC40B34DB7022C -:101EA00083AC470B93FC0CFF334C870393FDFD0081 -:101EB000B3ECBC0123AA970B83AC470BF14D93FC09 -:101EC000FCF0137CFC00120C33EC8C0123AA870B72 -:101ED000330C870283AC470BB3FCCC01334CBC0200 -:101EE000137CFC00220C33EC8C01B34CA70323AA17 -:101EF000870B03AC470B337C6C0093FCFC00B20CEB -:101F0000336C9C0123AA870B214C334C870383AC91 -:101F1000470BB3FC1C01137CFC00420C33EC8C011E -:101F200023AA870B330C570283AC470BB3FC0C017D -:101F3000334CBC02137CFC00520C33EC8C0123AA02 -:101F4000870B330CF70383AC470BB3FCAC00334C6B -:101F5000BC02137CFC00620C33EC8C01B34C7702A6 -:101F600023AA870B03AC470B337CDC01F20C336CE8 -:101F70009C01B30CE70323AA870B03AC870B137CEC -:101F80000CFFB3CCBC02330B670393FCFC00336C37 -:101F90009C0123AC870B114C83AC870B93FCFCF0AA -:101FA000334C8703B30A5703137CFC00120C33EC49 -:101FB0008C0123AC870B03AC870BF54C337CCC0135 -:101FC000334BBB02330A4703137BFB00220B336BFB -:101FD0006C0123AC670B03AB870B4D4C337B6B0061 -:101FE000B3CABA02B309370393FAFA00B20AB36A62 -:101FF0005B0123AC570B83AA870B594BB3FA1A0129 -:10200000334ABA0233092703137AFA00420A33EA41 -:102010004A0123AC470B03AA870BDD4A337A0A0136 -:10202000B3C9B9023349B90293F9F900D209B369C6 -:102030003A0123AC370B83A9870B614AB3F9A90096 -:10204000B30B77031379F900620933E92901931976 -:10205000470023AC270B03A9870B3379D901B3C9F8 -:10206000B902B3049702F2093369390123AC270B93 -:1020700003A9C70BE549137909FFB3CBBB02B3C46E -:10208000B40293FBFB00B36B790123AE770B03A97A -:10209000C70BD54B1379F9F0BD889204B36499004E -:1020A00023AE970AB304870303A9C70B794C33798E -:1020B000C901B3C4B402BD88A204B364990023AEBD -:1020C000970A8944B344970203A9C70B337969007F -:1020D000BD88B204B364990023AE970AB3047703B2 -:1020E00003A9C70BFD4B33791901B3C4B402BD88F2 -:1020F000C204B364990023AE970AB304670303A92B -:10210000C70B130B100233790901B3C4B402BD88A5 -:10211000D204B364990023AE970AB304570303A90A -:10212000C70B930A20023379A900B3C4B402BD8857 -:10213000E204B364990023AE970AB304470303A9EA -:10214000C70B130A30023379D901B3C4B402F204C5 -:10215000B364990023AE970AB304370303A9070CAD -:1021600093094002137909FFB3C4B402BD88B36474 -:102170009900694923A0970CB304270303A9070C0E -:102180001379F9F0B3C4B402BD889204B364990022 -:1021900023A0970CED44B304970203A9070C3379ED -:1021A000C901B3C4B402BD88A204B364990023A0DA -:1021B000970CB304B70303A9070C33796900B3C4C0 -:1021C000B402BD88B204B364990023A0970CB30491 -:1021D000970303A9070C33791901B3C4B402BD886E -:1021E000C204B364990023A0970CB304870303A926 -:1021F000070C33790901B3C4B402BD88D204B364B7 -:10220000990023A0970CB304770303A9070C337933 -:10221000A900B3C4B402BD88E204B364990023A04A -:10222000970C93145700B3C4B4021399C40183A448 -:10223000070C3306C702B3F4D401B3E4240123A08E -:10224000970C03A9470C137909FFB3046703B3C4C0 -:10225000B402BD88B364990023A2970CB30457035A -:1022600003A9470C1379F9F0B3C4B402BD889204F2 -:10227000B364990023A2970CB304470303A9470C46 -:102280003379C901B3C4B402BD88A204B364990010 -:1022900023A2970CB304370303A9470C33796900D1 -:1022A000B3C4B402BD88B204B364990013095002E8 -:1022B00023A2970CB304270303A9470C3379190110 -:1022C000B3C4B402BD88C204B364990023A2970CBE -:1022D00093046002B304970203A9470C3379090100 -:1022E000B3C4B4023346B602BD88D204B3649900C5 -:1022F00023A2970C83A4470CE98C3D8A6206458E85 -:1023000023A2C70C03A6470C9314C7013376D6014A -:10231000458E23A2C70C130690023306C70283A47E -:10232000870CC1983346B6023D8A458E23A4C70C5C -:102330001306A0023306C702B345B60203A6870CF4 -:102340001376F6F0BD899205D18D23A4B70C3736EC -:10235000002083458687373600200346068803A978 -:10236000870C3386C540B304A6033379C901B3C4CF -:10237000E40293E48400BD88A204B364990023A41A -:10238000970CB304E60303A9870C33796900B3C43F -:10239000E40293E48400BD88B204B364990023A4EA -:1023A000970C93143600B3C4E40203A9870C337965 -:1023B000190193E48400BD88C204B364990023A486 -:1023C000970CB304F60303A9870C33790901B3C44E -:1023D000E40293E48400BD88D204B364990023A48A -:1023E000970CB304560203A9870C3379A900B3C430 -:1023F000E40293E48400BD88E204B364990023A45A -:10240000970CB304760203A9870C3379D901B3C4BE -:10241000E40293E48400F204B364990023A4970CCB -:1024200093142600B3C4E40203A9C70C137909FF6F -:1024300093E48400BD88B364990023A6970CB30489 -:10244000860203A9C70C1379F9F0B3C4E40293E43C -:102450008400BD889204B364990023A6970C93145A -:102460001600B3C4E40203A9C70C3379C90133478A -:10247000E60293E48400BD88A204B364990023A615 -:10248000970C03A6C70C33766600136787003D8B55 -:102490003207518F23A6E70C03A7C70C3377170128 -:1024A00023A6E70C324718230D8F3346D70293F546 -:1024B000F507E2053D8A9314460103A6C70C3304D1 -:1024C000870233760601458E23A6C70C1316170024 -:1024D00083A4C70CE98C3346D6023D8A6206458E3A -:1024E00023A6C70C03A6C70C3344D402B37ED6017F -:1024F00013162700B3037702720433E48E0023A679 -:10250000870C3346D602B3025702937EF60003A629 -:10251000070D419A3366D60123A8C70C03A6070D01 -:10252000B3C3D3021376F6F0B3C2D20293F3F3002F -:102530009203B363760023A8770C03A6070D337EBE -:10254000C601B30FF70393F2F200A202B3625E007A -:1025500023A8570C03A6070D337366001316370024 -:10256000B3CFDF02330FE70393FFFF00B20FB36F68 -:10257000F30123A8F70D03A3070DB3781301334626 -:10258000D602330DA7033D8A420633E6C80023A8CE -:10259000C70C03A6070D33780601334FDF02B3469D -:1025A000DD02137FFF00520F336FE80123A8E70D10 -:1025B00003A7070D798DBD8AE206C98E23A8D70C23 -:1025C000D84385663D9BD8C3D843799BD8C39857D9 -:1025D000558F98D7D85713670701D8D722479376D6 -:1025E000F703985F137707FC558F98DF985FB7065E -:1025F0000081FD16758FD98D8CDFB6402644964438 -:102600000649F259625AD25A425BB25B225C925C32 -:10261000025DF24D6161828023AE06866FF0CFC10C -:10262000B737002003A747885C4393E707105CC3D4 -:102630008280B73700209387C7819833B72700205F -:102640009387876E058B01CF3737002003270781DB -:10265000185F1583058B01E79A2705079AA703C61C -:102660008703EC33C8236F00F006411106C6EF0064 -:10267000103893056040EF20B05FB2400145410142 -:1026800082806F00F03B11C589C501C61E2201453D -:102690008DE301110565C9471306F100130555C304 -:1026A000854506CEDC87EF20705CF24088870561A7 -:1026B00082808280B72700200111238AA7720565D6 -:1026C0001306F100130595C4854506CEA307010046 -:1026D000EF20D059F24088870561828001111305EF -:1026E000910006CEEF00503848840565300025057E -:1026F0009D45EF20B057F2400884056182800111AA -:102700009305F10006CE22CC2A84EF0010384886CB -:102710000565C086700021801305554091454087AE -:10272000EF20D054F2406244088605618280011196 -:102730001305D10006CEEF005037488609657000BA -:1027400009059145EF209052F2400886056182808C -:10275000011106CEEF001037C88709651306F10096 -:1027600015058545EF209050F240888705618280ED -:10277000011106CEEF00703FC88709651306F1000E -:1027800029058545EF20904EF240888705618280BB -:10279000011106CEEF00104CC88709651306F10041 -:1027A00039058545EF20904CF24001450561828056 -:1027B000011106CEEF100011C88709651306F1005C -:1027C00041058545EF20904AF24088870561828067 -:1027D000011106CEEF00906AC88709651306F10063 -:1027E00045058545EF209048F24088870561828045 -:1027F000411106C622C4EF00F06F8965CD052A8419 -:10280000EF2010472285B24022444101828001110D -:1028100006CEEF10E00FC88709651306F1005105D9 -:102820008545EF20B044F240888705618280011120 -:102830001305510006CEEF10C01F488209655000F5 -:102840006105A545EF209042F24001450561828077 -:10285000411106C6EF1020218965E505EF205041A2 -:10286000B240014541018280011106CE22CC2A846A -:10287000EF10403048860965C086700021806905E8 -:102880008D454087EF20903EF2406244014505614E -:102890008280011106CE22CC2A84EF10603C48864B -:1028A0000965C086700021806D058D454087EF2049 -:1028B000F03BF2406244014505618280B737002059 -:1028C00083864781011122CC06CE2A872E8463C5D8 -:1028D00006008546238AD78089679386D7016315CA -:1028E000D404B72700209387876E2394070008231A -:1028F0001307F01F238C0702C8A3FAA301468545DE -:10290000D12BC88737250600994513052563EF00AD -:102910002EBA22851306F1008545EF203035F240AE -:102920006244888705618280938737036312F402CB -:10293000B72700209387876E239407000823C8A336 -:102940000C33ECB330237D57F8A3238CC7024DBF63 -:10295000C947DC877DBF011126CAB724002006CEF7 -:1029600022CC4AC89387C44EBC3363850714896759 -:102970009386E7019384C44E2E842A87639ED504F0 -:102980000821B72700209387876EC8A30C3385469C -:10299000CCB330230547F8B3F0A37123C8879C87D5 -:1029A000D1E7B72700209386876EF832D03285466C -:1029B0009387876E6310D70E0E061306963B130798 -:1029C00010273346E602A830896523940700137662 -:1029D000F60FEF00AE9699A893864703639FD50044 -:1029E0000821B72700209387876EC8A30C33CCB388 -:1029F0003023F0A33433F4B34DB7938607056394C3 -:102A0000D5040821B72700209387876EC8A30C330D -:102A100093087700CCB33023F0A33433F4B30348E6 -:102A200067005C335823EF20007AC887228513069D -:102A3000F1008545EF2090238887F2406244D2441C -:102A40004249056182809387B7076392F5041C2190 -:102A5000372900201309896E2302F9001C31A302D3 -:102A6000F9003C212303F9003C31A303F90068215C -:102A70002A9703057700EFC03FAD91258346790083 -:102A800003466900834559000345490039B7B147FA -:102A9000DC8769BF8946E301D7F209068D460E0639 -:102AA0006316D7000E061306965B11BF06061306C3 -:102AB000765131B7314551B7B7370020238A0780A7 -:102AC000B727002003C7E76E011106CE9307F00F6A -:102AD0006317F7021305D100952B4886096570002E -:102AE0008D457D05EF209018B727002003C5F74ED0 -:102AF0008965EF004E8AF2400145056182800145FB -:102B0000B1234886A306010023070100C1BF0111BC -:102B100006CE22CC2A84EF00101648860965C086AE -:102B200070002180130505028D454087EF201014A9 -:102B3000F2406244014505618280011106CE22CC3B -:102B40002A84EF00902648860965C086700021809F -:102B5000130515028D454087EF205011F240624465 -:102B6000014505618280011106CE22CC2A84EF0046 -:102B7000902748860965C0867000218013052502CC -:102B80008D454087EF20900EF2406244014505617B -:102B90008280011106CEEF10E010C8870965130688 -:102BA000F100130575028545EF20500CF24088872F -:102BB00005618280011106CEEF104019C8870965B2 -:102BC0001306F100130595028545EF20300AF24007 -:102BD000888705618280011106CEEF10401BC887EF -:102BE00009651306F1001305D5028545EF2010088D -:102BF000F240888705618280011106CEEF10E01D4A -:102C0000C88709651306F1001305E5028545EF2025 -:102C1000F005F240888705618280011106CEEF1031 -:102C20004020C88709651306F10013051503854583 -:102C3000EF20D003F240888705618280411106C6EB -:102C400022C4EF1000228965938525032A84EF2092 -:102C500030022285B240224441018280397113033F -:102C6000D1021ACE0343810506DE1ACC0343410587 -:102C70001ACA034301051AC80343C1041AC6034311 -:102C800081041AC4030341041AC2034301041AC095 -:102C9000EF1080242306A102096570101305650357 -:102CA0008945EF20A07CF2500345C102216182805A -:102CB000011106CEEF10E04DC88709651306F1003B -:102CC000130575038545EF20607AF240888705611A -:102CD0008280011106CEEF10C05FC8870965130618 -:102CE000F100130585038545EF204078F240888781 -:102CF00005618280011106CEEF10E074C887096576 -:102D00001306F100130595038545EF202076F24068 -:102D1000888705618280011106CEEF10500DC887AB -:102D200009651306F1001305E5038545EF200074DE -:102D3000F240888705618280011106CEEF10501A9B -:102D4000C88709651306F1001305F5038545EF20D3 -:102D5000E071F240888705618280011106CEEF1094 -:102D6000502EC88709651306F10013050504854533 -:102D7000EF20C06FF240888705618280011106CE86 -:102D8000EF10503DC88709651306F10013051504BF -:102D90008545EF20A06DF240888705618280011192 -:102DA00006CEEF105050C88709651306F1001305D1 -:102DB00025048545EF20806BF2408887056182807D -:102DC0007971064306D61AC872531AC662531AC4DA -:102DD00052531AC242531AC0EF1030578965938577 -:102DE0003504EF20E068B250014545618280B72785 -:102DF00000202394A77201458280011106CEEF20A6 -:102E0000E03DC88709651306F100130515058545E2 -:102E1000EF20C065F240888705618280011106CEEF -:102E2000EF206044C88709651306F10013052505E6 -:102E30008545EF20A063F2408887056182803727AF -:102E400000209307876EBE271307876E81E79307DD -:102E5000F01F3EA73E272146014593F6071086073F -:102E6000C207B3D6C640C183558D93D5574093D67C -:102E70009740AD8E858A7D161375F50FD58F71FE3F -:102E80003EA78280372700209307876EDE2713072F -:102E9000876E89E7E17793C7F7FF5EA75E2739461C -:102EA000014591689945B3F617018607C207B3D665 -:102EB000C640C183558D93D6E74013D8F700858A65 -:102EC000B3C606017D161375F50FD58FE31DB6FC4D -:102ED0005EA7828039C1AD4763E1A7027D151375F6 -:102EE000F50FFD15411193F5F50F06C6EFC0DFB5DF -:102EF000B24081473E8541018280B1476302F502BD -:102F00009307600263E4A7007915D1BF130770022D -:102F1000C947E308E5FC3E85828013055002D1B71E -:102F2000130560027DBF011126CA4AC84EC656C2AB -:102F3000B737002006CE22CC52C45AC0AE8932899F -:102F4000B68A83A4078335C9AD472A8463EEA702F6 -:102F50001304F5FF1374F40F631D0906268A338BDF -:102F6000990063124B071379F9009386FAFF2285C3 -:102F700023802401A380340193F6F60F4E86854505 -:102F8000EFC03FB7014505A0B147630BF5029307BA -:102F9000600263E5A7001304E5FF6DBF93077002AD -:102FA0004945E30BF4FAF2406244D2444249B24943 -:102FB000224A924A024B056182801304500269BF83 -:102FC0001304600251BFEFF09FE72301AA00050A36 -:102FD00049BF8547631CF9004E869305000F138592 -:102FE000240097D0F91FE780403AB5BF89476316A0 -:102FF000F9004E869305A00ADDB78D47631DF900E1 -:10300000268A338B9900E3004BF7EFF0BFE72301EB -:10301000AA00050ACDBF91476316F9004E869305B5 -:10302000F00F75BF95476315F9004E86814545BF82 -:1030300099476315F9004E86BD4555B79D474945EB -:10304000E313F9F64E869305500551BF411122C492 -:1030500006C6372400201304846E11C51E241CA14B -:103060001E24A1831CB1EFC0FF95B737002083A7B2 -:10307000478823140400984B9316E70063DC06028C -:10308000984BB706F9FFFD16758FC166558F98CB23 -:1030900098478566938606801367071098C79847F8 -:1030A0001377F7DF98C798471377F7BF98C7984704 -:1030B000558F98C7B2402244014541018280930751 -:1030C000F00363E6A708B737002083A50781B7267A -:1030D00000201386065448AADC55370700827D1766 -:1030E0001375F503F98F66055D8DC8D53717004058 -:1030F000930770052300F704930780FA2300F70471 -:10310000502AA5479386065463FCC7023E3393E7D3 -:1031100007013EB3B737002003A6478801457C4A24 -:10312000A183898B95C7DC2AF1769386F60F93F7F6 -:10313000F703139787001C4AF58FD98F1CCA82802A -:103140003E33C207C183BD9BC207C183D9B749457E -:103150008280AA8759C52D476365A7069307F5FFA7 -:1031600093F7F70F3737002003274788B70600C1CA -:10317000FD16084B93F7F703E207758DC98F1CCB3B -:10318000B727002083C7475571761306F60F93F7CC -:10319000F703939687001C4B0145F18FD58F1CCB0D -:1031A0007C4FB706F9FFFD1693E747007CCF1C4B19 -:1031B000F58FB7060200D58F1CCB9386864F14C7B8 -:1031C000828031476302E502130760026365A7004E -:1031D0009307E5FF71B7130770024945E384E7F8E9 -:1031E000828093075002BDBF93076002A5BF011103 -:1031F00006CE9317450163D20702EF10EFFE894711 -:1032000009C914211147B1476395E60095471CA1F0 -:10321000C947F2403E85056182802EC6EF300FA976 -:10322000C94765D93825418B6DD7B2453C3523094F -:10323000B50489E7E9471CA98147E1BFED47E5BF30 -:10324000011106CE22CC2EC6EF304FA601CDB245DD -:103250002A84EF206FE22305A4020145F240624474 -:10326000056182804945DDBFB72700209387876EBF -:103270000147994683C5870D3306E50005070CA273 -:103280008507E319D7FE01458280011106CE2EC6BF -:10329000EF30CFA109C983072503B24501459CA1A1 -:1032A000F240056182800945E5BFB727002093877A -:1032B00007549A2B18A19A2B218318B1FC373CA1F3 -:1032C0000145828019E149458280B7270020138794 -:1032D000876E784B411122C406C62A849387876E75 -:1032E00001C75827314531EBB85F01C73837314541 -:1032F00029E703A7870801C7783331451DEF372534 -:10330000002005471946A2851305657CB8A397D010 -:10331000F91FE78040045C301307000C93F7070C9B -:103320006391E702372500201946A2851305C57C65 -:1033300097D0F91FE78020020145B24022444101A5 -:10334000828081EB372500201946A2851305257D53 -:10335000C5B7130700044945E391E7FE3725002070 -:103360001946A2851305857DE1B7411126C2B72410 -:1033700000209387846E22C4E04B06C69384846E3B -:1033800011C47C48139747006342070CFC5099E72F -:103390004945B240224492444101828001ED130527 -:1033A000000FEF001FBB6DD55C25FDD3EF001FDCC8 -:1033B0000145C5B70547E31DE5FC1DE801458297BA -:1033C0002A8459C58567938707801EB193070070CB -:1033D0007EA5B72500208D471CADA30A050219461E -:1033E0009385057C1305650397D0F91FE780A0F648 -:1033F00058248547E30EF7F87C24B98B85C37824DD -:1034000085476317F70289471EB0224403A3840649 -:10341000B24092441305000F41010283EF103FB107 -:10342000B727002083C757558D8BE31AF5FC8DB75E -:103430001E3011676374F7001AB0C1BF9306000213 -:103440003E87E3FBD7FE13070002FDB7314591B776 -:103450001D4581B7B727002083A70777314599CB52 -:10346000FC3389CB411106C6EF406FE0B240014505 -:10347000410182808280011126CA4AC84EC652C4C8 -:1034800056C25AC02E89368BBA89BE8A06CE22CC45 -:10349000B284428AEF308F811307A9FF4207856704 -:1034A00041839386A7C763E0E610938707C82A8401 -:1034B000494563E2970A63E0240B1307301F636CEE -:1034C000670963EA370993071B00B38797021397CD -:1034D0003900860763D1E7083DCC1C3813F7470055 -:1034E00035C3ED9B1CB83C3423192407231A9406DA -:1034F000DDE303576406C167FD176308F70663162B -:1035000099061E3C231AE404231BF404B727002069 -:1035100083D7C7788D46114763E5F600850713F713 -:10352000F70FA309E4042285EF103FA27E3CA90710 -:10353000231EF4048327440A93E717002322F40A86 -:10354000C5475CBC231B5407231C4407231C64058C -:10355000231D34050145F2406244D2444249B24938 -:10356000224A924A024B056182808357240691C702 -:10357000B3D4F402B387970241BFB30599008581A4 -:103580004A85EFF0DDA7231BA40493056405268577 -:10359000EFE06EE2A5BF8327840A93E707022324A6 -:1035A000F40AC14779BF49457DB701112EC606CE41 -:1035B000EF20DFEFB24509E54945F2400561828021 -:1035C0001C392305B50213F747007DD7ED9B1CB9C5 -:1035D000BD47A305F5028327850A93E72700232427 -:1035E000F50A0145D9BF011106CE2EC632C4EF201F -:1035F000FFEB03278510137707023DCFB2459306F3 -:10360000000EAA87138755FE42074183494563E2AE -:10361000E6062246116713078714930686EBC20657 -:10362000C1826368D70403D7471C01456303B7040D -:10363000372700209306876EB636A38DB706239EE4 -:10364000C70693F5F50F1307876E63F3D500AE86B3 -:103650005A37239AD71A6373E6003287239BE71AF7 -:1036600003A7470A856693860680558F23A2E70A3B -:103670000145F240056182804545E5BFB72700203E -:103680001387876E784B9387876E11C7542781C63F -:103690005437494785EAB85F19C7343789C6142BB0 -:1036A0004947858A85E203A7870811C7743381C615 -:1036B0005437494781EA03C7070B83C7170B636574 -:1036C000F7001D473A8582800111C8841946130509 -:1036D000A10006CE97D0F91FE780E0C72800EFB021 -:1036E0005FA085471D476313F5000147F2403A8507 -:1036F00005618280797126D24AD04ECE06D622D478 -:103700002E89B28936C63AC43EC242C0EF201FDAC3 -:10371000C94455C59305A9FFC20505662A84C18120 -:103720001305A6C7C944636CB508130606C86368C9 -:10373000360963E62909B2469305301F63E1D508CF -:103740002247636EE606138616003306260393159A -:1037500037006356B6061038B144058A2DE20326B9 -:10376000440A1376162021EE92470248231DE404F2 -:103770003834231BF40623192407231A3407231C87 -:103780000407231CD4045C3C814449EF8DEB832760 -:103790000410898B8DCF31469305F00F1305640615 -:1037A00097D0F91FE78060BE8327440A23130406DD -:1037B00093E707202322F40AC9475CBC8144B25036 -:1037C0002254268502599254F24945618280630849 -:1037D0003905B385290185814A85EFF05D82231B78 -:1037E000A404930564054E85EFE0EEBCB7270020E6 -:1037F00083D7C7788D46114763E5F600850713F731 -:10380000F70FA309E4042285EF102FF47E3CA907EB -:10381000231EF4048327440A93E7170061BF231B88 -:103820002405E9B7C9FF83278410898B8DC73146EA -:103830009305F00F1305640697D0F91FE780E0B4F5 -:103840008327440A2313040693E707202322F40A5C -:10385000CD475CBCADB7E9449DB73727002093073F -:10386000876EFC4B1307876E91C7D42781C6D43768 -:10387000C947B9E63C5F99C7B43789C6942BC94795 -:10388000858A9DEE8327870891C7F83301C7D8370B -:10389000C9471DE70111C88419461305A10006CECA -:1038A00097D0F91FE78020AB2800EFB0DF8E0547E7 -:1038B000B1476313E5008147F2403E850561828090 -:1038C0003E858280B72700201387876E784B9387C9 -:1038D000876E11C7542781C6583749450DEBB85F2D -:1038E00019C7343789C6182B4945058B0DE383A7C3 -:1038F000870891C7F83301C7DC37494589EB411187 -:1039000006C6EFB01F92B24001454101828082801D -:10391000630F051079714AD03729002022D426D2AE -:103920004ECE52CC56CA5AC89307896E06D65EC68A -:1039300003A407095C21AA841309896EFD8B5CA18D -:103940008D49054AA14A294B05EC832789050D4776 -:10395000C146F1E737250020A6851305E57D15460C -:1039600097D0F91FE780209FB250225492540259F9 -:10397000F249624AD24A424BB24B014545618280CC -:103980003C348DE38327440A1546A68593E7270038 -:103990002322F40A1305841297D0F91FE780A09B15 -:1039A00000405DB783474417858B9DCF268801452E -:1039B00081468345080013D726002A97B3D5D54002 -:1039C00093F736002297858986070306D717A9C57E -:1039D000B317FA00D18FA30EF7168506E39B56FDA9 -:1039E00009050508E31665FD930B84171546A685A2 -:1039F0005E8597D0F91FE780A09E5DF11546A685EC -:103A00005E8597D0F91FE78000958347441793E7B9 -:103A10008700230AF41669B7B397F90065BF03C698 -:103A2000C7076314E600238ED7069C431DB749459C -:103A30008280411122C426C24AC006C62A89014496 -:103A4000A1449305F00F0545EFF02DD9B307890088 -:103A500088A30504E31794FEB2402244924402492D -:103A6000014541018280011122CC4AC806CE26CAF6 -:103A70002EC632893684EF207FA37DC93C35AA84C7 -:103A8000B2450945D9E721461385A41897D0F91FF7 -:103A9000E780608C239924197C2450346C3454249E -:103AA000A207420603C5A404B297AE97E20603A795 -:103AB000440AB6972DC523A6F40A3C241434136790 -:103AC0000702A207C206B6973434B6971424E2065A -:103AD000B69723A8F40A7C205430A207C206B697F2 -:103AE0007430B6975420E206B69723AAF40A3C2015 -:103AF0001430A207C206B6973430B6971420E206F7 -:103B0000B69723ACF40A8547A385F40423A2E40AFC -:103B10000145F2406244D24442490561828023A6B5 -:103B2000F40C3C24143413678700A207C206B6972E -:103B30003434B6971424E206B69723A8F40C7C20FC -:103B40005430A207C206B6977430B6975420E206E6 -:103B5000B69723AAF40C3C201430A207C206B697ED -:103B60003430B6971420E206B69723ACF40C79BF34 -:103B7000094545B7011106CE2EC6EF203F9379CDFA -:103B800034350547AA87B2450545639FE606942B61 -:103B90001307400201456399E606F825D43522074C -:103BA000C2063697F4353697D425E206369783C693 -:103BB000B704B1CE23A6E70AB82594352207C2067A -:103BC0003697B43536979425E206369723A8E70A48 -:103BD000F821D4312207C2063697F4313697D42122 -:103BE000E206369723AAE70AB82194312207C206D3 -:103BF0003697B43136979421E206369723ACE70A1C -:103C00001307A00298AB0145F2400561828023A60C -:103C1000E70CB82594352207C2063697B435369797 -:103C20009425E206369723A8E70CF821D431220721 -:103C3000C2063697F4313697D421E206369723AA86 -:103C4000E70CB82194312207C2063697B431369773 -:103C50009421E206369723ACE70C5DB705456DB7B6 -:103C6000411106C6EF209F8405CD34350547AA874C -:103C700009456394E602942B13074002639FE60014 -:103C800013076030BAB71307500298AB03C7970207 -:103C9000014513671700A384E702B2404101828007 -:103CA0000945E5BFB72700202A871385876E03489B -:103CB00015009387876E63080802684911C5034899 -:103CC000C500314563130808A85F11C50348B50056 -:103CD0003145631C080603A5870811C50348750014 -:103CE00031456314080683C8870B03C8970B1D452D -:103CF00063FD080583A7870C494593F70704B1C7FF -:103D00005D71A6C22800B284194686C6A2C4D883B3 -:103D1000368497C0F91FE7800064A6851305E10289 -:103D2000414697C0F91FE7800063A2851305E101B2 -:103D3000414697C0F91FE78000624800EF702FFAF4 -:103D4000B64026449644616182808280B727002075 -:103D50001387876E14339DC2784B9387876E01C794 -:103D60005827494505E7B85F01C73837494519EF76 -:103D700083A7870881C7FC33494589EB411106C6F3 -:103D8000EF701F8AB2400145410182808280B727CF -:103D900000201387876E14339387876E8DC2784B0C -:103DA00001C7542749478DE6B85F01C734374947F3 -:103DB00085E203A7870801C77433494791EA88B3AE -:103DC00003A7070D01C91367076023A8E70C014784 -:103DD0003A8582801377F79FCDBF130700643305C0 -:103DE000E502B727002041119386876E22C403A401 -:103DF000C60B26C24AC006C69384876EC8DA13096A -:103E0000F00F01E8B24022449244024901454101C9 -:103E10008280082063052501CC58EFE0BDAE405CF0 -:103E2000CDB7B72700201387876EA30CA70213779F -:103E300015009387876E11EB03C7C7036D8F63046B -:103E4000B70049458280238DE7021377250001459D -:103E500001EB03C7D703718FE315C7FEA38DC7021C -:103E60008280011106CE2EC632C436C23AC0EF207F -:103E7000EFE32DC1B2450247924693F7150099EB47 -:103E800022469D4763F6C7004545F24005618280A2 -:103E90002302C514898991E59D47E3E7D7FEA30274 -:103EA000D51401CFB727002083D7A7727D8F0D8B44 -:103EB0008547631EF7002314E51485477CAD8327EF -:103EC000450A0567D98F2322F50A01457DBF2314D2 -:103ED0000514E5B7494555BF5D716ECEB72D00207D -:103EE00013838D6E03234305CAC05AD862D486C695 -:103EF000A2C4A6C24EDE52DC56DA5ED666D26AD0C4 -:103F0000030C4105034B810503490106938D8D6E1A -:103F100063090300032E4305314313145E00634D10 -:103F200004000D4E49436369FE0093FC050163855F -:103F30000C02054E6307CB07B6402644964406495B -:103F4000F259625AD25A425BB25B225C925C025DC9 -:103F5000F24D1A856161828093FE35004943E38DFD -:103F6000CEFD93FE8500E3990EFC6313CB0303CED5 -:103F7000CD033143137E4E00E3000EFC630369035F -:103F800009436310690203CECD03137E2E0039A0CE -:103F9000E318C9FF03CECD03137E4E003143E30D7A -:103FA0000EF8C68A42C63EC4BA8B368A328DAE84BB -:103FB000AA89EFF01EFA2A8411E983A74D06054568 -:103FC00082972A841D432DD92304350193070002CB -:103FD000631FFA008D476318F9044E2C9307900F66 -:103FE00013035004E3EAB7F46E2CE3E7B7F493F558 -:103FF000F40F2300B40663820C12BD889547639BBF -:10400000F402930710F87CA44543E367AAF3FD4745 -:104010004543E3F3A7F39167E3E047F33306AA01CF -:10402000058212B039A88547E313F9FC4E2C93079B -:10403000D02E7DB7B5476398F40C85477CA489479B -:104040001EB0A3077401639C0B1085471CAC93F54D -:10405000050281E5A247A30AF40219468145568567 -:1040600097C0F91FE780003C631A05108547230EAF -:10407000F402B2471946D685A30EF4021305E403F1 -:1040800097C0F91FE780202D834701055CB4930793 -:10409000F0076318FC0EB727002083C74755365733 -:1040A0001CA303055401EFB02FCA2304A406EFB0EC -:1040B0006FC3B65748B80D4788A389476303EB0021 -:1040C00081472302F4068347C105A302F406834710 -:1040D0000406C18B91EB7D191379F90F8947494388 -:1040E000E3EC27E5A30124078347410637070008CF -:1040F0000143A300F40683478106A303F4067C482A -:10410000D98F7CC815BD89476394F4009947E5BDF4 -:10411000E38B04EE23070400C5BD9D477CA413F583 -:10412000150093F7450011C9114591C30545A30F2B -:10413000A4048547230FF404C1BD13F5250001C96C -:10414000094591C31545A30FA4048947E5B70D455B -:1041500091C31945A30FA404230F040475B5230CC0 -:10416000040081470D46B3D6FB40858A81C6142CD6 -:10417000850614AC8507E398C7FED1BD230E040263 -:1041800021B7994763C58701A30A840119BF5CB8A9 -:1041900009BF01114EC6B72900209387896EFC4BD9 -:1041A00006CE22CC26CA4AC852C49389896E91C7CA -:1041B000FC4B13965700634E06003A8AB6842E894C -:1041C000EFF03ED92A8419ED83A749051305200491 -:1041D00091C33145F2406244D2444249B249224A35 -:1041E00005618280742585470145BD8AE384F6FE1A -:1041F00083460406C18AA5C68D476304F900494574 -:10420000D1BFFD47E3ED97FE231E04008D476310E9 -:10421000F90AD1C45E2C03D769071D45B386970000 -:10422000E34AD7FA582405C71630130700026390F3 -:10423000E602834634060D476397E6089306900F1F -:1042400013055004E3E8F6F87E2CE3E5F6F88D4715 -:104250001D45E311F9F82324440346AC1DA0137750 -:10426000D90FE303F7FA11476313E904784893166B -:104270007700E3C606F85824E313F7F85E2CC1D3A1 -:10428000BDFC9305800C0545EFE03DD58357A406A2 -:1042900012058507BD8BC98F2315F40639A07C480C -:1042A000370700FF7D17F98F7CC8014525B79307B5 -:1042B000D9FF93F7F70F8546E3FEF6F4A9D05C2407 -:1042C000E39AD7F439B70547E393E6F89306D02E7F -:1042D00085BF01114EC6B72900209387896EFC4B1C -:1042E00006CE22CC26CA4AC852C49389896E91C789 -:1042F000FC4B13965700634E06003A8AB6842E890B -:10430000EFF03EC52A8419ED83A749051305200463 -:1043100091C33145F2406244D2444249B249224AF3 -:10432000056182807825854701453D8BE304F7FED2 -:1043300003470406418B49CF8D476304F900494583 -:10434000D1BFFD47E3ED97FE231F04008D4763199E -:10435000F90CDDCC7E2C03D769071D45B386970089 -:10436000E34AD7FA582405C71630130700026390B2 -:10437000E602034734068D466310D70C562C13070C -:10438000900F13055004E367D7F8E365F7F88D47FE -:104390001D45E311F9F85C5485CB83476406898B8E -:1043A00085C783475403898B85C3085811CD3C25A5 -:1043B00081CFEF700F8D0C58194613056403B105BA -:1043C00097C0F91FE78020F92326440366AC1DA09F -:1043D0001377D90FE30AF7F611476313E904784816 -:1043E00093166700E3CD06F45824E31AF7F47E2C05 -:1043F000B9D7B1F49305800C0545EFE01DBE835796 -:10440000A40612058507BD8BC98F2315F40639A0B4 -:104410007C48370700FE7D17F98F7CC80145DDBD5C -:104420009307D9FF93F7F70F0547E375F7F281D8A4 -:104430005C24E391E7F2F1BD8546E31AD7F4562CEC -:104440001307D02E3DBF5D71A6C2B724002093870D -:10445000846E03A8470586C6A2C4CAC04EDE52DCDD -:1044600056DA5AD85ED662D466D26AD06ECE9384BB -:10447000846E63080802832748051394570063522B -:1044800004023145B640264496440649F259625A20 -:10449000D25A425BB25B225C925C025DF24D61617A -:1044A00082803AC632C493771500B68989C7639172 -:1044B00005104945C1BF91E9A04C19E00145D9B7A4 -:1044C0002285EFF0BECA0040CDBFE30908FE428559 -:1044D000EFF0DEC9E5B77849B70700037D8F55F3E4 -:1044E0000347F505630487016315970103D7EA01C4 -:1044F00049DB03C75A036300270903C7EA006318AF -:104500002701131714004E971A23E3E4EDFAB85469 -:104510007D141374F40F5DC793161A00B69903D770 -:104520000900B2479305800C2396EA063E9A03479A -:104530000A00054523970A06A384EA06EFE0FDA9D1 -:1045400003D7AA061205264405073D8B498F2395FC -:10455000EA0603A3840603C50B00B6409644064949 -:10456000F259625AD25A425BB25B225C925C025DA3 -:10457000F24D61610283138B8A05194681455A8584 -:1045800097C0F91FE78000EA631A250119469305D1 -:104590006D7C5A8597C0F91FE780E0DB194681459D -:1045A0005A8597C0F91FE780E0E7E31825F511B7B2 -:1045B000FD1513F4F50F094C954C0549372D0020D6 -:1045C000930D00089307F00FE305F4EEA247228A4B -:1045D000B38B870003C50B00EFF0BE97AA8AE31CDC -:1045E00005EEFC4813052004E39D07E861BDB727ED -:1045F000002083A7C77395C3FC4B13975700635ED6 -:104600000700B1473E858280B147F2406244D24400 -:104610004249B2493E8505618280011122CC26CAF9 -:104620004AC84EC606CEB6893289AE84EFF07E9275 -:104630002A849307200471D9C947E36899FC154778 -:10464000E37597FC03470506137737035DFF834740 -:10465000E505DDFB7C49918BC5FBEFD07DEE79470D -:104660009D47E374A7FA8347340609476391E70639 -:10467000835744081307D02E6373F7021307C00251 -:1046800093075004E37327F9794793075004E37EB7 -:1046900027F7414793075004636B2701BDB7130702 -:1046A000301FE363F7FE1307900FE364F7FE7C48C7 -:1046B00083460406CA9493E727008584B3E9D900AA -:1046C0007CC8231394082300340781473DBFE5F3DA -:1046D000035744089307D02EE3FBE7FC19475DBF5F -:1046E000B727002083A7C773011106CE22CC26CAA4 -:1046F0004AC84EC652C485C3FC4B13975700635C2F -:104700000700B144F240624426854249D244B2498E -:10471000224A05618280368AB2892E89EFF07E8333 -:104720002A849304200479DD7C49898BB9CB8347A3 -:10473000350609476394E70C835745081307D02EC5 -:104740006379F702035765089307C0029304500486 -:10475000E3FAE7FA03576408F94793045004E3F3D4 -:10476000E7FA03576408C1479304500463EBE7007A -:1047700051BF1307301FE36FF7FC1307900FE3627D -:10478000F7FE9377D90F05476396E70A0325040AD6 -:1047900019C597C0F91FE78020962320040A231229 -:1047A0000408638809067C48918BADEF8D47E31AB6 -:1047B000F9F4930550104E8597C0F91FE780808863 -:1047C0002320A40A1DDD4E86D28597C0F91FE780FD -:1047D00080B87C4823123409814493F707409DD365 -:1047E0009305800C0545EFE04DFF8357A4081205A3 -:1047F0008507BD8BC98F2315F40829B7D9F3035753 -:1048000045089307D02EE3FEE7F60357650899475E -:10481000A1BF8D47C944E317F9EE7C488144F99B59 -:104820007CC8CDB59307D9FF93F7F70F0547E37F12 -:10483000F7F6C1BDE39909F69147C944E305F9F6D6 -:10484000D1B5B72700201387876E784B411126C258 -:104850004AC006C622C4AA841389876E09CF7C4B3E -:1048600013975700635907003145B24022449244E0 -:104870000249410182802E85EFF0AEED2A841305B6 -:10488000200465D413F714007C4855CB13F71700A8 -:1048900061FF034704061377370379F78988BDCC96 -:1048A0000327C90C454593E70740418B5DDFC16590 -:1048B0007CC8FD150145EFE08DF42314A408EFB08A -:1048C0004FB9B70500012326A408FD150145EFE007 -:1048D0004DF593048409B725002015462328A40824 -:1048E0009385E57D268597C0F91FE780C0A6A6853C -:1048F000130500FB97D0F91FE78020432685EF10B2 -:10490000DFE07C485824A300A408DD9B93E7470020 -:104910007CC885476307F700014581BF93F7F7BF60 -:1049200079B79305800C0545EFE02DEB8357A4067E -:1049300012058507BD8BC98F2315F406F1BF03450A -:10494000D407CD9B7CC89307F00FE307F5FCEFE09D -:104950008DA9D9B7B72800201388886E0328880747 -:10496000011106CE22CC26CA4AC84EC652C456C22F -:104970001383886E63090800032EC801B14813141D -:104980001E01634D0402032EC307B14863080E02E3 -:104990001373A6FFC5486313030213735600B1488F -:1049A000630E0300BE843A89B6893284AE8A2A8AAD -:1049B00063100802029E2A888D4819EDF240624475 -:1049C000D2444249B249224A924A468505618280D0 -:1049D0008347B800B148FDF38D47C948E3E047FF7E -:1049E000A306480523085801230008021377140082 -:1049F000814729C383C70900A307F800835709002B -:104A0000231BF8009A2063F3E7003E879316070103 -:104A1000C18263E4D708231CE80083578801130789 -:104A20005005B387E702A187231DF80085472300BF -:104A3000F80285471376440029CABE9903C70900C6 -:104A400086073E99A307E800A307E8020357090079 -:104A5000A6972319E8029E236373F700BA879396FB -:104A60000701C182636ED702231AF80283574803F5 -:104A700013075005B387E702A187231BF80283477A -:104A8000080293E727002300F8028327C801216763 -:104A90008148D98F232EF80015B7231CF800B5BF25 -:104AA000231AE802E1B7372700209307876EBC5F1F -:104AB000411106C622C426C24AC01307876E99C791 -:104AC00003A8C70113141801634A0406785F3DC7A1 -:104AD0003684B2842E8909ED81EB4945B2402244E7 -:104AE0009244024941018280EF90CFB40145FDB765 -:104AF0008546E314D5FE95EF0297AA8729C511478D -:104B0000A30605047AA91AADB4370547E387E6FC86 -:104B100085C886BFA2BF01C41E04E3D084FC2389DC -:104B200027012244B2409244024903A3870641016F -:104B30000283D84F93161701E3D806FC314579BF9D -:104B400023AC0702E9BF0D4551BF5D7166D26AD043 -:104B50006ECED084AA8D2E8DB28CB68519461305E3 -:104B6000A100A2C4CAC04EDE52DC56DA5AD85ED6C4 -:104B700062D43A84BE8B86C6A6C2368C428BC68A65 -:104B8000464AD649664997B0F91FE780C07C372767 -:104B900000209307876EBC5F1307876E95C7DC4FB5 -:104BA0009396170163D206023145B64026449644D7 -:104BB0000649F259625AD25A425BB25B225C925C5D -:104BC000025DF24D616182808327C708F1DFEF004B -:104BD0008FB4B727002083C757558983E306F5FCB8 -:104BE000937784FF4545F1F33727002093775400EE -:104BF0001307876E99E349454DBF3C5F81CBD44F86 -:104C000013961601E34206FABC37D9FF83248708BE -:104C1000639704368327C7088297AA8451D50D4726 -:104C2000E36BA7FDA386B401A382A40719468145BF -:104C3000628597B0F91FE780E07E6317053405476A -:104C40002386E406A38694071946E2851385E406C5 -:104C500097B0F91FE7802070238C0402137C1400A6 -:104C6000014D63010C1083D60B00114763F3E6007E -:104C70009146D6B803570B00139606014182637321 -:104C8000E600368793160701C182114663F3C6001A -:104C9000114793160701FAB8C182130750053387ED -:104CA000E602938504052187BAB80547238CE40200 -:104CB00003D70A00FAA403550A002A970587239808 -:104CC000E404CAA8EFC03EEF83D6040505671307C6 -:104CD00007C86373D700BA86139706014183194644 -:104CE0006373C70099462398D4041395060183D6AD -:104CF00009001307301F41816374D7009306301FEA -:104D000093950601C181138715003307A702B6AC3E -:104D10008356090009876353D7003687F647420751 -:104D200041839AB0962386570566F6B096231306FC -:104D300006C8D6B4BA866373E600B2861396060137 -:104D4000418229476373E600A94613970601418310 -:104D50000A073347A70296B07D1763D3E5002E8775 -:104D6000BAAC054D937C2400638A0C0C931D1D0086 -:104D70003387BA011A23B306BA01938524059AA88A -:104D80008A222A9705872399E404EAA8EFC0BEE2A5 -:104D900083D624050567130707C86373D700BA864F -:104DA00013970601418319466373C70099463387F9 -:104DB000B9012399D4041395060116231307301F54 -:104DC00041816374D7009306301F93950601C1811A -:104DD000138715003307A702D6ACB306B901962294 -:104DE00009876353D7003687F64742074183B38666 -:104DF000B701BAB096228657056696B4BE9D83D693 -:104E00000D00130606C8F6B4BA866373E600B286D0 -:104E100013970601418329466373C700A946139778 -:104E2000060141830A073347A702B6B07D1763D353 -:104E3000E5002E87050DDAAC137DFD0F11886308A0 -:104E4000041413141D00A29B83D60B00114763F3B7 -:104E5000E60091462393D404229B03570B0013963C -:104E6000060141826373E600368793160701C1820B -:104E7000114663F3C6001147931607012394E40417 -:104E8000C182130750053387E602A29A229A9385BE -:104E9000440521872395E40403C78403136727008F -:104EA000238CE40203D70A00BAA803550A002A9704 -:104EB0000587239AE4048AACEFC0FECF83D644056D -:104EC0000567130707C86373D700BA8613970601EF -:104ED000418319466373C7009946239AD404A29963 -:104EE0001395060183D609001307301F41816374AF -:104EF000D7009306301F93950601C18113871500D3 -:104F00003307A702F6AC2299835609000987635339 -:104F1000D7003687F64742074183A297DAB0962337 -:104F200086570566B6B43E941620130606C896B892 -:104F3000BA866373E600B28613960601418229475A -:104F40006373E600A9461397060141830A073347B6 -:104F5000A702D6B07D1763D3E5002E87FAAC639C19 -:104F60000C00630F0C0203D704052399E404BA2C48 -:104F7000DAAC9A30BAB083A7840882973DB1F43096 -:104F80000547E39EE6C80DB123860406F1B103D7B9 -:104F90000405239AE404BA2CFAAC9A30DAB0C1B70B -:104FA00003D744052399E404FA2CDAACDA30D9B7F4 -:104FB00041114AC0372900209307896EBC5F06C69D -:104FC00022C426C21309896E91CFD84F93161701B8 -:104FD00063DA0600B147B2402244924402493E855A -:104FE000410182800327C90775D7AA8499EB0297EC -:104FF0008D4775D191477EA91EAD8547A30605044F -:105000003CB5FC241D47032489079D8BE384E7FC02 -:105010009C20858BB5C75C4C898BCDFF9820914730 -:10502000937667006397F6008326490CC547C18ACB -:10503000DDD2058B05E39C30194693853400230AA5 -:10504000F40ABC201305640BA30AF40A97B0F91FF5 -:10505000E78060309C202301F408BE242312F4086A -:10506000DE242313F408FC24A301F408FD57A30E47 -:10507000F4065C4CC59B93E727005CCC8147A1BF3D -:105080005C4C898BC1DF0347440B9C30E314F7F47D -:105090000347540BBC20E31FF7F2194693853400F5 -:1050A0001305640B97B0F91FE78080330547AD47C0 -:1050B000E313E5F60DB7B727002083A70776314540 -:1050C00085C3DC4F13971701634C0700898B89CB8D -:1050D000411106C6EF705FFAB2400145410182807E -:1050E00082804111B727002022C403A4077626C27C -:1050F00006C6B14435C05C4CB14413971701634DEB -:1051000007040357240B930420046317A7040345E3 -:10511000D407C59B5CCC230E04069307F00F6307EE -:10512000F500EFD05DACFD57A30EF406034514085F -:105130009307F00F6307F500EFD0FDAAFD57A30E0C -:10514000F406BD67938707A60100FD17F5FF3C3401 -:10515000814499C33C548297B240224426859244AC -:1051600041018280B72700201387876E18331DC73F -:105170009387876EF84B11CB582701CB4945828026 -:105180004945F240624405618280B85F19C33837EF -:1051900075F783A7870899C3FC33EDF3011122CC7F -:1051A000C88432841305A100194606CE97B0F91FB2 -:1051B000E780601A280097C0F91FE780A04C69D1EA -:1051C00000B101457DBF3727002003472773014504 -:1051D000B357F740858B91E345458280011106CE98 -:1051E0002EC632C436C23AC0EFE0BED635C903235C -:1051F0004505AA8731451378032063100806372830 -:1052000000201308886E83489804B245454563E63C -:10521000B80483C8470A2246B3D8C84093F8180098 -:10522000638D08028328880C1397C8006357070210 -:105230000348880402476362E80292462383C70A50 -:10524000A382B70AA383D70A11E2014713630310AD -:105250002384E70A23AA67040145F240056182809E -:1052600013052004DDBF011106CE2EC6EFE07ECE71 -:105270001307200401CD7C49314793F6270099C6D6 -:10528000B24589C993E707207CC90147F2403A85B6 -:105290000561828093F7F7DFC5BF797106D62ECE00 -:1052A00032CC36CA3AC83EC6EF104FA0094831C5C5 -:1052B0006246F2451303F00F4948B388C500634EB8 -:1052C000130363ECC5024247D246B388C54033831B -:1052D000E60063C468020348A516B247A305B516E5 -:1052E00013684800230505172306C516A306D5161F -:1052F0002307E5162318F5160148B250428545618B -:105300008280411122C42A840A2106C6EF100F9A16 -:1053100089471DCD03063400C947634BC00283058E -:105320002400130710FA63C5E502030754009946E9 -:1053300063C0E60283064400415863CB06012301A3 -:10534000B516A301C516230FD514A30FE514814785 -:10535000B24022443E8541018280011106CE2EC614 -:10536000EF10CF9431C90347A516AA87314593762C -:1053700047009DCAB24585CD83860716136717007F -:105380002385E7161307F0070145639FE60003A78F -:10539000470A9316B70063C90600B7061000558F79 -:1053A000A382071623A2E70AF24005618280799B57 -:1053B0002385E7160145CDBF0945FDB7011126CA72 -:1053C0004AC84EC606CE22CC2E89B289B684EF10CA -:1053D000EF8D49C5B72700209387F73F639C0900ED -:1053E000054798A30145F2406244D2444249B2497C -:1053F00005618280942305472A846395E600238013 -:10540000070009494165130545F5EF10AF8B15C934 -:105410003C253EA5832784118DE3232CA410232E45 -:10542000A410930710F8F914232005002316350162 -:105430001CB52304250144C175B78327C41188C353 -:10544000F9BFB727002083A747571D45C9DF9565DA -:1054500005459385555582971D4571B7094561B737 -:105460006FC02E9D6FC0EEA06FC00EA56FC0AEA91D -:105470006FC04EAF6FC0AEBA6FC0CEB26FC00EB6C7 -:1054800082806FC08EBD034301001AC06FB0DE8AF8 -:105490006FB0BE966FB0BE9F6FB09EA46FB05EAA95 -:1054A0006FB0FEAF6FB0DEB46FB07EB803530100D3 -:1054B000035E4100834E81001AC072C276C46FB091 -:1054C0003EBC6FB01ECE6FB05ED903530100034ED9 -:1054D0004100834EC10093F8F80F1378F80F76C699 -:1054E00072C21AC06FB03EDC6FB07EEB6FB01EF3BD -:1054F0006FB05EFE6FC0AE816FC0AE846FC02E898C -:105500006FC02E8F8280828079719397050126D299 -:1055100006D622D44AD04ECEC187AE8463D9071EA8 -:10552000B729002003C5493597B0F91FE780A0CD02 -:105530002A8405C518219307000D631DF7003C213F -:1055400011476365F7028D4663F7D710A5C7094772 -:10555000638DE7082285EFD02D812165258DB2501E -:10556000225492540259F24945618280CD46E3E3C8 -:10557000D7FE51476379F712138757FE1377F70F5A -:105580008546E3E9E6FCB736002003A7868A7D76E8 -:105590001306F60F718F1031631806166D4663926D -:1055A000C7161367071023A4E68A83A7868A3705E0 -:1055B000000235AA1C31373900206396072693056F -:1055C00035003735002019461305458D97B0F91F72 -:1055D000E78060D885472324F98A854503C5493586 -:1055E000EFD00DAD0325898AA1A81431383195EE8D -:1055F0006312F702373700208327878A81450145E8 -:1056000093F7F7F093E707022324F78AEF20EEB42D -:1056100008B089B78547814501456315F700EF203C -:105620002EA3FDB7EF202E92E5B7E305F7F2B737CB -:10563000002003A5878A41991365650023A4A78AE2 -:10564000B727002083A70740E38607F09C43E38346 -:1056500007F0829701B7373900200327898A103174 -:10566000419B1DEE6395D702136727002324E98A27 -:10567000373700208347078A93968701E186E3D373 -:1056800006F693F7F7072300F78A894581BFB737F6 -:105690000020238E0788136737002324E98A99B7EF -:1056A00013676700DDBF373900200327898A10316F -:1056B0001377F7F021E6639ED702136707012324CF -:1056C000E98A373700208347B78D93968701E186B3 -:1056D00063DB060003C5493593F7F7079145A30D32 -:1056E000F78CEFD0ED9C8327898A370500015D8D0B -:1056F00081BF136707022324E98AF5B713670703FD -:10570000DDBF1367072045B51367073069BD93F701 -:105710001500C9C3B737002083C7C789ADCBB737DA -:10572000002083C7E789B72500209385C5445C82A4 -:10573000B737002083C7C78A130561001946DC828A -:1057400097B0F91FE78020C1B737002083C7D789FA -:105750004C005C86B737002083C7178DDC86B727DF -:10576000002003C54735EF109EB415C1B7370020A0 -:1057700003A5878A41991365650023A4A78AB727E3 -:10578000002083A7074081C79C4391C3829713C51C -:105790001400F1B393F72500A9C3B737002083C7DE -:1057A000078A858B85CBB727002003C54735EF10C7 -:1057B0009EDE0DC1B737002003A5878A1375F5F06B -:1057C00023A4A78AB727002083A7074081C79C434B -:1057D00091C3829713C5240059B393F7450001453F -:1057E000E38F07D6B737002083C7B78D95CBB72790 -:1057F000002003C54735EF10DEDD1DC1373700201F -:105800000325878AFD779387F70F7D8DB7270020C3 -:1058100083A707402324A78A81C79C4391C382970B -:1058200013C544002DBB99472324F98A65BBB737BC -:10583000002083A7878A85E709C5B727002023A012 -:10584000A740B73500203725002083C5058D0345C7 -:10585000453581470147814601466F201EDC45459D -:105860008280B727002023A0A7408280411126C252 -:10587000B724002022C403C4443506C69307F00FA2 -:105880006308F4006145B2402244924441018280A1 -:105890003755060013058550EFD0CDD3238AA434A5 -:1058A000E30285FEB727002023A00740B73700207A -:1058B00023A4078A0547B73700202388E78CB7372A -:1058C00000200D47238FE788B73700202386078AFB -:1058D0001D47B7370020A38EE788B7370020A3887D -:1058E000078CEFF01D85014579BF411193970501A4 -:1058F00026C206C622C4C187AE8463DA0714B7275E -:10590000002003C5474097B0F91FE780C08F2A8465 -:1059100009CD1C21130710096380E7021307000D4E -:10592000638AE7082285EFC03DC42165258DB2401A -:1059300022449244410182801C3139476398E70236 -:105940005A21856793875740E31EF7FCB72700204D -:1059500083A78740E1DB9443F1D618453C23083305 -:1059600083053700A2075D8D82966DBF1307E003A4 -:10597000E39AE7FA38219D47E316F7FA4A2197B0F0 -:10598000F91FE78020E259DD5825A147E31CF7F80D -:10599000B727002083A78740D1D79C47C1D732249F -:1059A0006E204A207116F1154206C2054182C1815E -:1059B00082978DBF3C2115476381E708636DF7002F -:1059C00085C7B727002083A78740A9DFDC43B9DB61 -:1059D0002285829781BF19476385E7003147E392AB -:1059E000E7FEEF10302BF1BF1C31E1FFB73700208D -:1059F00083C7F7899DE7373600201306068BC1451C -:105A00000945EFD01DB1373600201306068CC1457D -:105A10000D45EFD01DB0B727002003C5C734EFD028 -:105A20009DAA373500201946930534001305458D8E -:105A300097B0F91FE780209269B71C31D9F332255E -:105A4000930545002831A146EF10D00E9DBF9397D6 -:105A500015010145E3DD07EC372600201306464516 -:105A600091451145EFD0FDAAB727002003C5C734E3 -:105A7000EFD07DA511655DBD0111B727002006CED1 -:105A8000238DA76C91C52E8532C6EF10700032466B -:105A900009C6B727002023A4C740B737002083C713 -:105AA000F78995EB3726002037250020F240034682 -:105AB000864403454540B727002037370020B736D6 -:105AC0000020938747451307078C9386068BA145D3 -:105AD00005616F209EB4F240014505618280B727C1 -:105AE000002083C747400111C8824C83D08328001F -:105AF0001946B68506CE5C8297B0F91FE780A0856F -:105B00004800EF100E90F24005618280B727002018 -:105B100083C747400111C886680006CE5C864C8763 -:105B2000D087EF00FEFDF24005618280B72700209C -:105B300003C547406F001EF9B7370020238DA78C9F -:105B4000B727002003C747359307F00F630CF70012 -:105B5000B73700200547A38FE788B73700203147C4 -:105B60002388E78C8280B727002083C757554111CF -:105B700006C622C426C2F19B81EBE144B240224416 -:105B80002685924441018280376506001305A58E63 -:105B900037240020EFD00DA41304444008A01307BD -:105BA000F00FE30CE5FCB737002021472388E78C92 -:105BB000EFF09FF8B737002083C7F7898144DDFFF6 -:105BC000373600201306068BC1450945EFD0CDEAD4 -:105BD000373600201306068CC1450D45EFD0CDE9C0 -:105BE000372600201306464591451145EFD0CDE8F4 -:105BF0000820EFF00DD459B7130785011E211105B8 -:105C000093C7F7FF231EF5FE8347E5FF93C7F7FF12 -:105C1000230FF5FEE314E5FE828099473305F50274 -:105C200001110A86C14506CE13050520EFD0CDE44B -:105C300009E50886F240056182800145E5BF011152 -:105C400022CC26CA4AC84EC606CE81440144372912 -:105C50000020B729002083475941636AF400F240CD -:105C6000624426854249D244B2490561828083A7B5 -:105C700009411315440019469305F00F3E9597A06E -:105C8000F91FE780207A01E5850493F4F40F0504F9 -:105C90001374F40FC9B7411122C437240020130430 -:105CA0000443084006C609C5EFC01D8C232004002C -:105CB000B727002003C75741B2402244B72700202E -:105CC0002387E74041018280B727002083C7E74050 -:105CD0001D71A6CA86CEA2CCCAC8AA846390A702A8 -:105CE000372400201304644108208545EFC0DDBE41 -:105CF00008208945EFC05DBEEFF0FFF9C204C18006 -:105D00001949338924037000C145130409202285F1 -:105D1000EFD08DD609C901442285F6406644D644A9 -:105D200046492561828019469305F00F680097A0C7 -:105D3000F91FE780206F65F1680041469305F00F79 -:105D400097A0F91FE7806064481871469305F00F2B -:105D500097A0F91FE7806063680861469305F00F1C -:105D600097A0F91FE78060627000C1452285EFD0DF -:105D70004DFA50182A84F14513051920EFD06DF91A -:105D80005018498CF14513052920EFD08DF8137474 -:105D9000F40F5018498CC14513053920EFD06DF729 -:105DA0001374F40F5018498CC14513054920EFD0E6 -:105DB0004DF61374F40F5018498C91451305592072 -:105DC000EFD02DF51374F40F498C1D657008E14573 -:105DD0002695EFD00DF4B72700201374F40F498CEB -:105DE00003C5C7341374F40FEFD0EDED35B741118F -:105DF00022C426C206C601450144B724002083C739 -:105E000054416373F40011C5B240224492444101ED -:105E1000828022850504EFF03FEB1374F40FC5B7C1 -:105E2000011122CC4EC652C406CE26CA4AC801442D -:105E3000EFB01EC5B7290020372A002083C759417B -:105E4000636AF400F2406244D2444249B249224AB1 -:105E50000561828013090A41032509009314440057 -:105E600019469305F00F269597A0F91FE780805BF0 -:105E700011E583250900A695EFB0DEC00504137473 -:105E8000F40F6DBF397122DC52D456D25AD006DEDF -:105E900026DA4AD84ED60144EFB0DEC1372A0020B8 -:105EA000B72A0020194B83475A41636CF400F25023 -:105EB0006254D2544259B259225A925A025B216119 -:105EC000828093890A4103A50900131944001946E9 -:105ED0009305F00F4A9597A0F91FE780A05421E1A0 -:105EE0003305640383A709000A86C145CA97C433F2 -:105EF00093F4040C938404F813053520EFD0CDB748 -:105F00001008C1450945EFD02DB783A50900B3346A -:105F1000900014080A86CA952685EFB07EB905045C -:105F20001374F40F49B7011106CEEFF05FD10547A6 -:105F3000A9476373A70089471306F10085451545F6 -:105F4000DC87EF206ED6F24005618280011122CC01 -:105F50004EC652C456C206CE26CA4AC80144B72904 -:105F60000020372A0020994A938459419C20636776 -:105F7000F404EFF0DFCC9C2037370020639DA708A6 -:105F80008347778993E71700A30BF788B72700208B -:105F900083C7D74099C3EFF0BFE8B727002083C776 -:105FA000C74099C3EFF01FEE6244F240D244424929 -:105FB000B249224A924A05616FF0FFF63305540355 -:105FC00013090A410326090093144400C14526968B -:105FD00013050520EFD04DAA1DC903250900194658 -:105FE0009305F00F269597A0F91FE780003A032547 -:105FF000090019469305F00F2695190597A0F91F7A -:10600000E780A03883270900BE9423960400050486 -:106010001374F40F91BF8347778993F7E70FADB7F8 -:10602000B727002083C567412A216F309EFE99471C -:10603000B385F502397122DC26DA4AD806DEA1479B -:10604000AA843289138425206384F60013841520E2 -:106050007146814548083AC697A0F91FE780E032AB -:106060005008F1452285EFD02DA10DE18347E102D3 -:10607000A5463247E51793F7F70F63E9F600BA86AE -:106080005008937519002685EFE05DF9F2506254CF -:10609000D254425921618280797122D426D24AD0C9 -:1060A000AE842A8932848145130600020A8506D609 -:1060B00097A0F91FE780602DB727002083C7173509 -:1060C00023102101230EF100BC8455C43727002082 -:1060D00003471742F99BB725002058823727002035 -:1060E0000347374241469385C54AD8823727002067 -:1060F000034727421305610093761700D58FF59B60 -:1061000093762700D58FED9B93764700D58F931616 -:10611000470093F6061093F7F7EFD58F93164700D5 -:1061200093F6062093F7F7DFD58F12071377074012 -:1061300093F7F7BFD98FFC8497A0F91FE780A021C0 -:10614000B727002083C7074213F7170011C789C478 -:10615000B88413672700F88403476101A2850A8584 -:10616000D98F230BF100EFE07DDDB2502254925421 -:106170000259456182803727002003479741F99BE8 -:10618000B72500205882372700200347B7414146F2 -:106190009385C549D882372700200347A7411305B7 -:1061A000610093761700D58FF59B93762700D58FE6 -:1061B000ED9B93764700D58F9316470093F6061014 -:1061C00093F7F7EFD58F9316470093F6062093F7D2 -:1061D000F7DFD58F12071377074093F7F7BFD98FF3 -:1061E000FC8497A0F91FE7800017B727002083C71A -:1061F000874199BF011122CC26CA4AC84EC606CE95 -:106200002A890144B7240020B729002083C75441BC -:10621000636BF4003E842285F2406244D2444249DA -:10622000B2490561828083A70941131544001946CC -:10623000CA853E9597A0F91FE780801A69FD05047D -:106240001374F40FE1B7397122DC3724002083275F -:1062500004434ED652D406DE26DA4AD856D25AD055 -:10626000AA892E8A13040443A5E319E10545C1A8B0 -:10627000F5DDEFF03FF83727002083465741B72779 -:1062800000202387A7401389E740930A5741636D95 -:10629000D5028144372B00200DA083270B41139595 -:1062A000440019469305F00F3E9597A0F91FE7802B -:1062B000601709E9850493F4F40F83C70A00E3EE3D -:1062C000F4FCBE8423009900B72400209384E440AA -:1062D000B7270020882083C75741E379F5F81C4091 -:1062E000ADEB99473305F5024E86C14513050520F0 -:1062F000EFD02DA261469305F00F280097A0F91F5B -:10630000E780A00888209D673000E1453E95EFD0EA -:106310004DA09C20372700200325074192074146C6 -:10632000CE853E9597A0F91FE780E0022320440127 -:10633000B727002003C5C734EFD0ED980145F250D0 -:106340006254D2544259B259225A925A025B216184 -:106350008280904709CE99473305F502F145130530 -:106360001520EFD00D9B1C4023A40700D1B7904B04 -:1063700009CE99473305F502F14513052520EFD0E5 -:106380004D991C4023A8070065B7D04B09CE99470B -:106390003305F502C14513053520EFD08D971C401C -:1063A00023AA070071B7D04705CA19493305250349 -:1063B000C14513054520EFD0CD9588201C4091455F -:1063C00033052503D047410613055520EFD06D94C2 -:1063D0001C4023A60700A9BFB727002083C7D740CA -:1063E00099C3EFF0FFA3B727002083C7C74099C325 -:1063F000EFF05FA9EFF03FB395BDB727002083C74B -:106400005741011122CC06CE26CA09446376F50213 -:1064100085C599473305F502AE840A86C145130543 -:106420000520EFC07DE52A8401E919468A85268585 -:1064300097A0F91FE78020F22285F2406244D244FF -:1064400005618280011122CC06CE2A842EC632C478 -:1064500097A0F91FE780003515C95825A1472246A6 -:10646000B2456310F702B727002083A7474399CFAF -:1064700003A34700630C030022856244F2400561D8 -:106480000283B727002083A78743D5B7F240624431 -:1064900005618280011122CC19443304850226CA89 -:1064A0000A86AE84C14506CE130404202285EFC0BF -:1064B000BDDC01C98144F24062442685D2440561B5 -:1064C000828019469305F00F0A8597A0F91FE7808F -:1064D00060F56DF138869377D70F89C49377F70FFE -:1064E00093E72700C207C1838544E306F7FC0A86C9 -:1064F000C14522857C86EFD0CD81B727002003C51A -:10650000C734EFC05DFC45BF397122DC2A841945D0 -:106510003305A40226DA4AD8B2842E893000C14558 -:1065200006DE13050520EFC03DD501C90145F25037 -:106530006254D25442592161828019469305F00F6A -:10654000280097A0F91FE780E0ED6DF19D673E946C -:106550003008E1452285EFC03DD219C10545C1BFD4 -:106560002808EFF06FE963150904614681452808A2 -:1065700097A0F91FE78000EB75F161468145280877 -:1065800097A0F91FE78060E0B7270020054728089B -:106590002384E742EFF04FE63008E1452285EFC063 -:1065A0005DF7B727002003C5C734EFC0DDF17DB725 -:1065B0003C081018BE868E2236876380250391061C -:1065C000E31BD6FE0145A5D496233E8789C69107D5 -:1065D000E31CF6FEA1BF239027013C23E38097F83C -:1065E00024A3DDF02310070045B701114EC6B727DD -:1065F00000207D57B729002022CC26CA4AC806CEE3 -:1066000052C4238BE74093870954E8273729002099 -:106610003724002093040941930520041205A30A9E -:10662000044023A0040097A0F91FE780A0A188C020 -:106630001304544105C59389095483C7E90013091C -:10664000094181441CA01C2063E5F41203A78900C2 -:10665000B737002063010716A38B07881820B727D8 -:10666000002005442387E740B727002023A80742DE -:10667000B72700202389873437250020B72700203B -:10668000A38007424146B727002081451305C54A2C -:10669000A381074297A0F91FE78020CFB7270020EA -:1066A0009304700723800742B72700202381974275 -:1066B000B727002023A20742B7270020A3878734EB -:1066C000B7270020238C074037250020B72700205C -:1066D000A38C07404146B727002081451305C549D3 -:1066E000A38D074097A0F91FE78020CAB727002095 -:1066F000238D9740B727002023AE0740B7270020FF -:10670000A38B07401547B7270020A386E734B72798 -:1067100000204147A388E734B7270020238407429D -:106720000947B72700202387E734B727002023AC89 -:106730000742B727002023AA0742B7270020A386D5 -:106740000740B7270020238A0740B7270020238669 -:106750008734B7270020A3898734B72700202388F0 -:106760008734F2406244D2444249B249224A056128 -:10677000828003250900139A440019469305F00FFF -:10678000529597A0F91FE78040C0032509001946DC -:106790009305F00F5295190597A0F91FE780E0BE09 -:1067A00083270900850493F4F40FD29723960700FA -:1067B0002387070049BD130700F8A38BE78879BD3D -:1067C000011122CC4EC652C406CE26CA4AC8014484 -:1067D000B7290020372A0020938459419C20636107 -:1067E000F402EFC07DA09820F2406244B727002059 -:1067F0002387E740D2444249B249224A0561828058 -:1068000013090A410325090093144400194693050E -:10681000F00F269597A0F91FE78020B70325090000 -:1068200019469305F00F2695190597A0F91FE780E3 -:10683000C0B58327090005041374F40FA6972396A7 -:1068400007002387070049BF930705C04111C2070E -:1068500022C406C6C183130720022E846367F71281 -:10686000379706008A071307071ABA979C4382874F -:10687000B727002083C727351CA01DA8B7270020F5 -:1068800083C7074289873DA8B727002083C71742DF -:10689000E5B7B727002083C73742F9BFB7250020E7 -:1068A00041469385C54A228597A0F91FE780A0AA93 -:1068B0008147B24022443E8541018280B7270020B3 -:1068C00083C70742858B4DBFB727002083C7274268 -:1068D00065B7B727002083A747421CC0D1BFB727A1 -:1068E000002083C7F73449BFB727002083C78741FB -:1068F00051BFB727002083C79741BDBFB7270020EE -:1069000083C7B74195BFB725002041469385C54948 -:1069100059BFB727002083C787416DB7B72700202D -:1069200083C7A74191BFB727002083A7C74175B789 -:10693000B727002083C7774181B7B727002083C7D7 -:10694000D7341DBFB727002083C7173535B7B72702 -:10695000002083C7D7400DB7B727002083C7C740A3 -:1069600021BFEFF0CFAD08A0A1B7B727002083C7A4 -:10697000073519B7B727002083C707428D8799B716 -:10698000B727002083C78741D5BF1307F003894786 -:10699000E361A7F2EFE0CDF20AA019BF011106CE24 -:1069A00022CC26CA4AC84EC652C456C2EFE03DBDEC -:1069B00051E9372900201309494103470900B72449 -:1069C000002085472A8493845441630EF702372AB6 -:1069D0000020854A9C206374F40493090A4103A7AC -:1069E0000900131944004A977C27639A57012285AE -:1069F000EFF08FAD83A70900CA972387070005042E -:106A00001374F40FC1BFEFF08FBEB727002083A728 -:106A10000741982023000900B907631EE400EFC076 -:106A20003DD56244F240D2444249B249224A924A98 -:106A300005616FF0AFD10504238007001374F40FD4 -:106A4000C107E1BFF2406244D2444249B249224AFE -:106A5000924A05618280797126D24AD04ECEB724FF -:106A6000002006D622D452CC8947AE89328993843D -:106A700054416307F506636FF5008D47630FF50A10 -:106A800080202285B250225492540259F249624A1F -:106A9000456182802E85EFF0EFF59C202A84E37219 -:106AA000F5FEE30009FE1946CE854A8597A0F91F39 -:106AB000E780608AF9B783270A4113154400194615 -:106AC0003E95CE85190597A0F91FE780609121EDCD -:106AD00005041374F40F9C20E36FF4FC3E8455B757 -:106AE0000144372A0020C5BF05041374F40F9C200D -:106AF000E376F4FE330544030A86C14513053520C9 -:106B000042054181EFC04DF765F141469305F00F15 -:106B10000A8597A0F91FE780E09079F5CE850A8570 -:106B2000EFE0CDE171F19C20E37DF4F4E30B09F497 -:106B3000CA852285EFF07F8CA9B70144194A45BF69 -:106B4000930705C05D71C207A6C2CAC086C6A2C4AB -:106B50004EDE52DC56DA5AD8C183130720022A8946 -:106B6000B2846365F754379706008A071307C72274 -:106B7000BA979C43828785476384F500614411A8D6 -:106B80001C220947E36CF7FE372700202309F7345E -:106B900001442285B640264496440649F259625A79 -:106BA000D25A425B616182808547E399F5FC1422E9 -:106BB000E3E6D5FC37270020130707421C23E1CA70 -:106BC00093E747001CA3E9B78547E399F5FA1C2230 -:106BD0001147E365F7FA37270020A300F7424DBFBE -:106BE0008547E39DF5F81C22E3EAF5F837270020F6 -:106BF000A301F74271BFC147E392F5F837250020A2 -:106C00004146A6851305C54A9790F91FE780A074F1 -:106C100041B78547E394F5F61422E3E1D5F637272B -:106C20000020130707421C23E9C293E7170059BF4E -:106C30008547E395F5F41822B72700202381E74222 -:106C400081BF9147E39CF5F21842B7470F00938745 -:106C5000F723E3E5E7F2B727002023A2E7420DBFC1 -:106C60008547E39DF5F01C220947E369F7F03727D4 -:106C70000020A307F73429BF8547E391F5F01422DC -:106C8000E3EED5EE372700201307874105BFED9BC4 -:106C900015BF8547E394F5EE1C221147E360F7EE3C -:106CA00037270020A30CF740E5B58547E398F5ECBE -:106CB0001C22E3E5F5EC37270020A30DF740C9BD02 -:106CC000C147E39DF5EA372500204146A685130517 -:106CD000C5491DBF8547E393F5EA1422E3E0D5EAF1 -:106CE00037270020130787413DBFF99BE1BD85474A -:106CF000E396F5E81822B7270020238DE74049BD29 -:106D00009147E39DF5E61842B7470F009387F723B5 -:106D1000E3E6E7E6B727002023AEE74095BDE39F13 -:106D200005E4EFE0DD8501E9EFF06F8CEFC05DA4D5 -:106D3000EFF0CFA1B1BDB72700200547238AE74078 -:106D400081BD9D47E39CF5E29385140019466800D8 -:106D50009790F91FE7802060882050086C00EFF0C2 -:106D60009FCFB727002083C75741AA840944E37205 -:106D7000F5E24808EF603EB709E52685EFE0DFF46D -:106D800075B7B727002083A7074192045944BE94E2 -:106D90008547FCA4FDBB9D476398F50A194693857A -:106DA000140068009790F91FE780E05A8820014698 -:106DB0006C00EFF05FCAB727002083C757416377A5 -:106DC000F5049944B30495025008F14593841420C6 -:106DD000C204C1802685EFC02DCA2A8415E5130799 -:106DE000A04185476304E9009307F00F5008F1457F -:106DF0002685A307F102EFC0CDF1B727002003C518 -:106E0000C734EFC04DEC71B3094461B3B73700200C -:106E100083C777890944E38E07D637370020930666 -:106E2000A04183478789631DD90093E71700373551 -:106E30000020230CF7881D46A68513050589E9B3B4 -:106E4000F99B230CF788A9B38547E399F5D2373727 -:106E500000209306A041834787896315D50093E7F7 -:106E60002700C5B7F59BF1BFB7270020A3890734DA -:106E700005B3B72700200547A389E7340144372924 -:106E800000209949130AF00FFD5A372B0020834741 -:106E90005941E37FF4CEB30434035008F1459384A1 -:106EA00014202685EFC04DBD05E18347F102638DB7 -:106EB00047015008F1452685A3075103EFC06DE552 -:106EC0000345CB34EFC02DE005041374F40FC1B7B4 -:106ED0008547E395F5CA1C22E3E2F5CA372700206F -:106EE000A30BF74075B18547E39AF5C81C222547E7 -:106EF000E366F7C837270020A306F73451B9854762 -:106F0000E39EF5C61822A546930797FF93F7F70F60 -:106F1000E3E6F6C6B7270020A388E73495B985478E -:106F2000E39EF5C4B72700209387D7401822942307 -:106F3000014498A3E39F06C4E31DB7C4EFF00F819B -:106F400089B98547E39CF5C2B72700209386C740DF -:106F5000982090221384C74098A209E66314B700D2 -:106F6000EFE0DFFE0820EFA03EB51DB18547E397B7 -:106F7000F5C01C220D47E363F7C037270020230725 -:106F8000F73439B18547E39BF5BE1822B7270020B7 -:106F90002386E734F5BE0545EFC0EDD2D5BE854763 -:106FA000E39EF5BC1822B72700202388E734CDB62E -:106FB00093074002E394F5BC883001469385240092 -:106FC000EFF07FA9B727002083C75741E378F5BAD0 -:106FD0001944330485029820A1471374F40F6312F7 -:106FE000F70409041374F40F420441805008F1457A -:106FF0002285EFC06DA8E31305B893858400480887 -:107000006D469790F91FE78000355008F1452285BD -:10701000EFC02DD0B727002003C5C734EFC0ADCADD -:10702000B1BE0504C1B7B727002003D707559307A2 -:1070300040046D44E3FFE7B48547E391F5B41C22B7 -:10704000E3EEF5B285C3B737002083A7C788554460 -:10705000E38107B4B727002093870742982313677B -:10706000870039A0B72700209387074298235D9BAC -:1070700098A339BEB727002003D7075593074004CC -:107080006D44E3F8E7B08547E39AF5AE1C22E3E7E9 -:10709000F5AEE9DBB737002083A7C7885544E38AFC -:1070A00007AEB7270020938787414DBF9307F003B2 -:1070B0000944E3E027AFE39E85AC8E204A85EFE0EC -:1070C0000DD62A84F9B479714AD006D622D426D2B4 -:1070D0002A8902CC231E01009790F91FE780806C5B -:1070E00021C1B72400209384F43498208947630990 -:1070F000F702930565002A8448313008EFF0BF9508 -:10710000B727002083C757416372F5022AC6EFE014 -:10711000DFB0B2452A860547A1464A85EFE03FF138 -:10712000B250225492540259456182809C2091E7CA -:1071300095454A85EFE0CDC1E5B70547E392E7FE07 -:107140004C3001464A85EFE03FF5D9BF0111C167D8 -:107150004AC806CE22CC26CA4EC6FD172E89630D1C -:10716000F5069790F91FE780E0632A84D14429CD82 -:107170009305650048310146D544EFF0DF8DB72710 -:10718000002083C757416376F500CA85EFF08FB0C2 -:107190008144630B09022285EFE09FE835A0CA8590 -:1071A0002285EFF02FAF11C1814405041374F40F51 -:1071B00083C75941E365F4FE63080900376506009B -:1071C00013050502EF601E92F24062442685424993 -:1071D000D244B249056182800144D544B7290020D8 -:1071E000C1BF0111C1674AC84EC606CE22CC26CA0D -:1071F00052C4FD172E89B2896302F5069790F91FD4 -:10720000E780405AD14431C19305650048310146B9 -:10721000D544EFF05F84B727002083C757416376DA -:10722000F5024E86CA85EFF02FAE814439A84E860E -:10723000CA852285EFF04FAD11C181440504137456 -:10724000F40F83475A41E364F4FEF240624426851A -:107250004249D244B249224A056182800144D54460 -:10726000372A0020F9BF411122C43724002013041B -:1072700064410C20B727002023ACA742614506C615 -:10728000EFE0EDB908202244B24041016F400EFA10 -:10729000411122C437240020130464410C20B72775 -:1072A000002023AAA742614506C6EFE04DB708209B -:1072B0002244B24041016F406EF7411106C622C41C -:1072C00026C29DE5AA85AA8437450F00130505242B -:1072D0003375A602EFD0BDE02A8409C58545268511 -:1072E000EFE00DA72285B240224492444101828002 -:1072F000EFE00DA60144FDB7411106C699E9B2873A -:10730000B6852A863E85EF70AEE7B2400145410161 -:107310008280EFE0EDA3D5BFB72700209387273504 -:107320009823136707F898A3B727002083C507425F -:107330006FE0CD961D71A6CAB2847000CAC8D2C4CF -:1073400086CEA2CCCEC62A89368A02C62318010070 -:10735000EFF06FF0B727002083C75741637FF50E2A -:107360002A84EFE09F8B9147AA89631FFA0CB72705 -:10737000002003C727359146791713371700A285D8 -:10738000420441801949330924034E862685EFE0E3 -:107390001FCA5146814548089790F91FE780E0FED3 -:1073A0005008C145420913590901130549204205F6 -:1073B0004181EFB07DEC05E941469305F00F4808A7 -:1073C0009790F91FE780000619ED13055920420533 -:1073D000501091454181EFB03DEA500893F51900F6 -:1073E0002685EFE04D901D65229542053010E14560 -:1073F0004181EFB07DE805E12810EFE0EFFF2010BC -:10740000130901040E2089C530202685EF308EB285 -:107410001104E31989FE93F9290063890900B7274C -:10742000002083C567412685EF20BEBE9147631AC1 -:10743000FA04B727002003C7273589476313F704E9 -:107440002685EFF07FED35A8B727002003C7F73476 -:10745000D2867917133717001DB7A147E318FAFC36 -:10746000B727002003C7F7348947631CF70001469C -:10747000CA852685EFE05FC2014681452685EFE09B -:107480007FFCF6406644D6444649B649264A014543 -:1074900025618280797106D622D426D24AD03C2139 -:1074A0005147E91793F7F70F6369F702379706001B -:1074B0008A071307872BBA979C432A84828726253D -:1074C00050255435268532C636C49790F91FE7807B -:1074D000602DAA87A246324619E1854491A2D82799 -:1074E000A147130534006318F702B727002083A7CC -:1074F0004743A68589C79C4399C38297F9BFB7279D -:10750000002003A5C741EFD09DBD61D985452685E3 -:10751000EFE00D84D9B7B727002083A78743A6855E -:1075200099C39C43F9FBB727002003A54742E1BF5D -:107530002E252E852EC49790F91FE780A026AA87B6 -:1075400049DDD827A147130534001306C40093066C -:10755000C401A245631CF700B727002083A7474357 -:10756000ADDFD8433DDB9C47829785BFB72700201E -:1075700083A78743F5B71C31F9EB7C21858BE1CBE1 -:10758000B727002083A707430149F9E38145414616 -:1075900008089790F91FE78040DF4C48C9C9194691 -:1075A000C10508089790F91FE780E0DA7C20B886CB -:1075B0008987858BD98FFC86EFE06FE8B72700209D -:1075C00003C75741938457416311A702B72700208F -:1075D00083C7073599C3EFF0AF9EB727002083A775 -:1075E000475781C7854521458297EFE04FE59C20AD -:1075F000373700206398A7048347778993E71700FC -:10760000A2850808A30BF788EFE0FFC3AA845549B9 -:1076100021E1B727002003C567418945EFB04DA997 -:10762000B2502254268502599254456182804A20E4 -:1076300085449790F91FE780E0167DD119469305A0 -:10764000650085B78347778993F7E70F55BF0149F1 -:1076500010304A208545EFE0FFDEE30009E84A8666 -:107660008D454A20EFE01FDE8DBD18319947631B21 -:10767000F7024A219790F91FE780C012AA841DC122 -:10768000B727002083C7E73409476386E7020D4721 -:10769000638DE70005476397E7004C314A200146B8 -:1076A000EFE09F9F103089456DBF0146814513056E -:1076B0000041EFF0EFC84E2088201546EFD07DEC5A -:1076C000D5B79305450028310146EFF0CFB8B7276D -:1076D000002083C75741E372F5E099473305F5026F -:1076E0001306C40091451305552042054181EFB0B2 -:1076F0005DE2B727002003C5C734EFB0DDDCF1BB86 -:10770000B727002083C777414A2191C7B7270020B8 -:1077100083C5D734F5BBB727002083C7273599E346 -:107720009545FDB39790F91FE780C007AA84E3064B -:1077300005DA3C24858B9DC74831854763F4A70251 -:107740005E2493F7072099EF100893856400EFF00B -:107750008FB0B727002083C757416395A7008D4599 -:107760004A207DB3CC304A2013068400EFE0DF923C -:1077700001468145FDB54A21EFF0FF94B9BB4A218E -:10778000EFF0CFA1B72700209387273598231377F1 -:10779000F70798A399B3B737002023A6A78882805C -:1077A000011106CE2AC6EFE05FE43245F240B7276A -:1077B0000020238BA74005616FE04FF97971939703 -:1077C000050122D406D626D24AD04ECE52CCC1874D -:1077D0002E8463D1070AB727002003C5674197901D -:1077E000F91FE78040A2AA8431C11C211307100BA6 -:1077F0006389E7041307000D6384E7021307000B96 -:107800006393E7025821F9476316F7002A2181455F -:10781000EFF0DF93CC2013858400EF10DEA221A0CF -:10782000EFF05FC701C52685EFA01DD4A164A18C30 -:10783000B2502254268502599254F249624A456157 -:1078400082805C21EDF312256E212A213729002048 -:107850001309894223000900EFF0BF98834709000C -:10786000F9D3B727002003C5C73423000900EFB0C0 -:107870009DC555BF93F7250095C381450145EFE0B0 -:107880009F9CB72700209344240093876741854538 -:1078900011E189458823EFB0AD8159BF93F71500F9 -:1078A000F9CBB729002083A70943B7240020938987 -:1078B000094303DA470083A7C4429384C44285E3A3 -:1078C0003727002037960600C1651307C74389464E -:1078D00013060655FD150545EF306E8A88C08C40AD -:1078E000134414009DE983A7090001468545CA2376 -:1078F00093140401C180EFE0FFB483A7090001469F -:107900008D45CA23EFE01FB4B727002003C5C73455 -:10791000EFB07DBBEFE02FB821BF37290020035621 -:10792000C9439308F00F094881471307E100740029 -:107930005285EF306ED51309C94319E990861C862C -:1079400022065D8E11C69C405285AE27EFF07F89DE -:10795000884003560900C1658146FD15EF30AEC76A -:1079600088C093140401C1803DDDB7270020854500 -:1079700003C567410DB793F745008144E38A07EAE1 -:1079800093C4450075B593970501C18763D8070671 -:10799000B727002003C54735411122C426C206C6B9 -:1079A000AE849790F91FE78000862A8429C11821A8 -:1079B0009307000D631AF7023C2191EF1C3181EF10 -:1079C000930535003735002019461305458D9790EE -:1079D000F91FE7804098B727002083A7074489C78D -:1079E0009C4399C3228582972285EFA0FDB7B240C0 -:1079F00022442165258D9244410182800145828087 -:107A000009C5B727002023A0A74437260020372523 -:107A1000002003468644034545358147014781469A -:107A200089456F009EBFB727002083C747350111E6 -:107A3000C886680006CE5C864C87D087EFF04D8CF8 -:107A4000F24005618280B727002003C547356FF0FB -:107A50006D87411126C2B724002022C403C44435D7 -:107A600006C69307F00F6308F4006145B240224454 -:107A70009244410182803785060013056598EFB076 -:107A80006DB5238AA434E30285FEB727002023A026 -:107A900007440947B73700202388E78CEFD06DE90A -:107AA0000145E9B73421F14763EDD72C379706003C -:107AB000939726001307C730BA979C43011122CC35 -:107AC00006CE26CA4AC84EC62A8482871C31373958 -:107AD0000020C5EBB7250020B73400204146938530 -:107AE000C54B1385048B9790F91FE780608FB739DA -:107AF00000203DE91386048BC1450945EFB07DA107 -:107B00001386098CC1450D45EFB0BDA0B7270020F5 -:107B100003C5C734EFB03D9B3735002093053400D3 -:107B20001305458D19469790F91FE780C082854758 -:107B30002324F98AB727002003C547358545EFA0E0 -:107B40003DD70325898AB727002083A74744BDC3B3 -:107B500003A3070063000306A2856244F240D244F7 -:107B60004249B24905610283B72500204146938509 -:107B7000C54C1385098C9790F91FE78060863DD925 -:107B800061BF99472324F98A6DBF18313C3129E739 -:107B900009476398E702373700208327878A8145A2 -:107BA000014593F7F7F093E707022324F78AEFF0F4 -:107BB000DDDA08B0F2406244D2444249B24905617C -:107BC00082800547814501456395E700EFF05DC878 -:107BD000CDB7EFF05DB7F1BF0947E38DE7FCB737ED -:107BE000002003A5878A41991365650023A4A78A0D -:107BF00099BF1C31B7340020BDEB8D47639AF60462 -:107C0000373700208347078A93968701E18663DD33 -:107C1000060093F7F7072300F78AB727002003C56C -:107C200047358945EFA0DDC883A7848A914613F7BD -:107C3000F7006318D700C19B93E7570023A4F48A89 -:107C40009DA08946E308D7F6C19B93E72700FDB7BF -:107C500003A7848AB7370020238E07889546937739 -:107C600007FF3D8B631CD70493E74700C1BF83A781 -:107C7000848AC19B93E76700D1B7B734002083A7FC -:107C8000848A1831C19B1DE393E7470023A4F48A3B -:107C900032259305450028319146EFF0AFE9B7371B -:107CA0000020238E078803A5848A71BD93061003E4 -:107CB000E312D7FC37370020230E078893E73700FD -:107CC000B5BFEFF02FFD373700208327878A954611 -:107CD00013F6F700C19B13E537006314D60013E5D4 -:107CE00027002324A78A85B5B734002083A7848A78 -:107CF000183193F7F7F039E74D476390E60493E7BF -:107D000007013737002023A4F48A8347B78D939661 -:107D10008701E18663DD060093F7F707A30DF78C73 -:107D2000B727002003C547359145EFA07DB883A74D -:107D3000848A370500015D8D39B593E7070223A4D6 -:107D4000F48AF5B793E70703DDBF373700208327B1 -:107D5000878A7D761306F60FF18F103105E26D46A6 -:107D6000639BC60093E707102324F78A8327878A3B -:107D700037050002C9B793E70720FDB793E707303F -:107D8000E5B782801821930610096307D70093078F -:107D9000000D6302F704828014313947639FE602C5 -:107DA00056210567130757406399E6021845930764 -:107DB000F007830537006382F502B727002083A709 -:107DC000474481CF03A34700630903003C230833E2 -:107DD000A2075D8D02836FF0FFCC82800111939723 -:107DE000050126CA06CE22CCC187AE8463D4070C17 -:107DF000B727002003C547359780F91FE780A040CB -:107E00002A8419C9B737002083C7F78989EFEFF0B3 -:107E10007FF72285EFA04DF52165258DF240624464 -:107E2000D244056182801C211307000D639CE70486 -:107E30003C2181E7EFF01FF50DA81547639EE70091 -:107E40002A259790F91FE780E09561D55825A1472D -:107E50002285E31EF7FA11A82147E38DE7FC994636 -:107E6000639DD7007C31E394E7FAB737002003C560 -:107E7000A78DA285EFA02DF645B71D47E399E7F83A -:107E80004A21C1B71307200AE383E7F81307100953 -:107E9000E392E7FA1831B947E31EF7F85A218567EC -:107EA00093875740E318F7F818453C230833A20797 -:107EB0005D8D41BF9397150163D2070237260020DD -:107EC0001306464591451145EFB0ADE4B7270020B4 -:107ED00003C5C734EFB02DDF116581B793F71500E7 -:107EE000D1CFB737002083C7C789A5C3EF505EC580 -:107EF000B727002083C757558D8B636BF5048D47DB -:107F00005C82B737002083C7D7894C005C86B737BF -:107F1000002083C7178DDC86B727002003C54735AF -:107F2000EFF0EDB81DC1B737002003A5878A41994E -:107F30001365650023A4A78AB727002083A74744B9 -:107F400089C79C4399C38145829713C51400F9B52D -:107F5000B737002083C7E789B725002019465C8220 -:107F6000B737002083C7C78A9385C54413056100CE -:107F7000DC829780F91FE780003E61B793F7250008 -:107F8000B1C3B737002083C7078A858B8DCBB7274E -:107F9000002003C54735EFF00DE015C1B7370020CD -:107FA00003A5878A1375F5F023A4A78AB7270020B5 -:107FB00083A7474489C79C4399C38145829713C5CA -:107FC0002400A9BD93F745000145E38907E4B737CD -:107FD000002083C7B78D9DCBB727002003C5473549 -:107FE000EFF02DDF05C5373700200325878AFD77A1 -:107FF0009387F70F7D8DB727002083A7474423245D -:10800000A78A89C79C4399C38145829713C54400B9 -:1080100031B5797122D426D206D6AA842EC63284EE -:1080200036C43AC23EC09780F91FE780A07729C1C5 -:108030000358E500B24582471247A246636BB80079 -:108040006369040112296316D60032296145630C65 -:10805000E600EC843E862C082685E085F486F887C9 -:10806000EF508EF20145B250225492544561828005 -:108070005145D5BF0111B727002006CEA38CA76CB0 -:1080800091C52E8532C6EFF00F9E3246B7370020DD -:1080900083A7878AB1E309C6B727002023A2C74474 -:1080A00037260020B735002037250020F240034650 -:1080B000864483C5058D03454535B72700203737EE -:1080C0000020B7360020938747451307078C938617 -:1080D000068B05616F006ED4F240454505618280D4 -:1080E000B727002083C757558D8B91EB6145828060 -:1080F0006145B240224492440249410182804111CB -:1081000026C2B724002022C403C4443506C64AC090 -:108110009307F00FE31EF4FC378506001305C5DD59 -:10812000EFA05DCB238AA434E30485FCB7270020AD -:1081300023A20744B7370020114723A4078AB73783 -:1081400000202388E78CB7340020EFC09DFE414615 -:1081500081451385048B9780F91FE780002337340E -:108160000020414681451305048C9780F91FE78064 -:10817000C021B7370020238F0788B73700201D475D -:108180002386078AB7370020A38EE7883729002087 -:10819000B73700201386048BC1450945A388078C97 -:1081A000232A0944EFB04D8D1306048CC1450D45BB -:1081B000EFB08D8C3725002041469385048B130545 -:1081C000C54B9780F91FE7800019372500204146ED -:1081D0009305048C1305C54C9780F91FE780A01701 -:1081E0001306494591451145EFB00D89014511B779 -:1081F000FD5737270020230AF734372700201307BD -:10820000476D5CB37CA33737002085462308078C75 -:1082100037370020230ED788372700209946232A96 -:108220000744373700202312D78A0567130707C88A -:10823000B73600202397E68A372700202304074417 -:1082400037370020A30F078837370020230DF78C1E -:10825000372500209D4737370020A300F78A1946AD -:108260003737002081451305C5442301F78A17835A -:10827000F91F67008311930705D04111C20722C47B -:1082800006C6C1835D472E846368F71037970600E2 -:108290008A0713070738BA979C438287B7370020AD -:1082A00083C7078D1CA03DA0B735002041469385AC -:1082B000058B22859780F91FE780E00921A8B73553 -:1082C000002041469385058CEDB7B727002083A792 -:1082D00047459CC18147B24022443E85410182808E -:1082E000B735002019469385458DE1B7B737002093 -:1082F00083C7C78945BF2E85EFF0EDF2E1BF2E851C -:10830000EFF0CDF4C1BFB737002083C7E78959BF6D -:10831000B737002083C7C78A71B7B7250020194631 -:108320009385C54479B7B737002083C7D7899DBFE8 -:10833000B737002083C7178DB5B7B737002083A79D -:10834000878A8DB7B727002083C78744A1BFB73777 -:10835000002083D7478A1EA0B5BFB737002083D738 -:10836000E78AD5BFB737002083C7178A25BFB7373D -:10837000002083C7278A3DB72E85EFF08DF099BF87 -:10838000B737002083C7078A93F7F70721BFB737AE -:10839000002083C7B78D39B71307F0038947E36C13 -:1083A000A7F2EFC0FDD10AA035B79307F5CFC207FA -:1083B000C183D9462A872E8863EFF62AB79606002E -:1083C0008A079386063EB6979C43411106C6B2853E -:1083D000428582874147E1476310E8043735002032 -:1083E00041461305058B9780F91FE780C0F625A04D -:1083F0004147E1476312E802373500204146130543 -:10840000058CD5B71147E1476318E8001842B72734 -:10841000002023AAE7448147B2403E854101828083 -:108420000547E147E31AE8FEB7370020182283C664 -:10843000C789238EE788814785C679FF37370020B3 -:108440000327878A89463D8B6305D7009546E31548 -:10845000D7FCB727002003C54735EFE0DDFB65BF3C -:1084600045DF373700200327878A630607013D8BE6 -:108470007517E363E8FA8545B727002003C547353C -:10848000EFA00DC349BF9307C01C63E2071F630041 -:10849000061EB24041016FF00DAB9307C01C63E8AC -:1084A000071D6306061CB24041016FF06DBA054717 -:1084B000E147E313E8F61822A946E3EFE6F4B737FD -:1084C0000020238FE78881BF0547E147E316E8F4E2 -:1084D00018228D46E3E2E6F4B73700202386E78AC8 -:1084E0001DBF1947E147E319E8F237250020194677 -:1084F0001305C544CDBD0547E147E31FE8F0182249 -:108500009D46E3EBE6F0B7370020A38EE78821B75E -:108510000547E147E312E8F018228D46E3EEE6EE68 -:10852000B7370020A388E78CFDB50547E147E31581 -:10853000E8EE1822B72700202384E744E9BD094765 -:10854000E147E31BE8EC122205671307A7C7930670 -:10855000A6FFC206C182E361D7ECB73700202392A1 -:10856000C78A55BD0947E147E318E8EA12220567C3 -:108570001307A7C79306A6FFC206C182E36ED7E81A -:10858000B73700202397C78A79B50C22B737002068 -:10859000A380B78AB737002003C6278A0145EF902A -:1085A0002ED295BD1022B73700202381C78AB73756 -:1085B000002083C5178ADDB79307C01C63E9070B4A -:1085C0005DC6B24041016FF04DB90547E147E31583 -:1085D000E8E4373700208346078A1C22858A230077 -:1085E000F78A13F6170091C6E31706E2EFE07DFD68 -:1085F0001DB5E30206E2B736002083A6868A8945C8 -:10860000B98AE39B06E693E707F82300F78A21B5CA -:108610000547E147E312E8E0373700201C22834694 -:10862000B78DA30DF78C91C6E39707DEEFE05DFCF5 -:10863000DDB3E38207DEB736002083A6868A93F691 -:10864000060F99C291450DBD93E707F8A30DF78C6E -:10865000D9B39307F00363EEE70089468947E31D2A -:10866000D8DAB2400E223A8541016FC05DFBE14786 -:1086700065B3894755B39307F00363E8A7008946BC -:1086800089476395D5000E22CDB789473E85828004 -:108690006F90CEBD011122CC41462A84AA850A855D -:1086A00006CE9780F91FE78000CB28209305340081 -:1086B000EFC0CD9048810A85EF902EC6F24062440B -:1086C000056182806F90EEC56F906EC5014881474D -:1086D0006F908EBB011106CE2AC69780F91FE780E6 -:1086E000600C01C9B245F24008214D4605616FC0DA -:1086F0005DE9F2404945056182806F90AEBC6F90A4 -:108700000EC36F90AEB86F90CEC26F908EC5411100 -:1087100006C6EF500FFF37C5040013056561EFA0D3 -:108720006DEBEF305EDB375504001305C56CEFA031 -:108730006DEAEFC07DF53795040013054529EFA0DC -:108740006DE9EF001EB237F50400130505CBEFA06D -:108750006DE8EF60CEEB377506001305C57BEFA023 -:108760006DE7EFF0EF8337C50400130565C1EFA097 -:108770006DE6EF306EC6B24041016FF08FAD411132 -:1087800006C6EFC02E9F37C5040013056561EFA034 -:108790006DE4EF305ED4375504001305C56CEFA0CF -:1087A0006DE3EFC07DEE3795040013054529EFA07A -:1087B0006DE2EF001EAB37F50400130505CBEFA00B -:1087C0006DE1EF60CEE4377506001305C57BEFA0C1 -:1087D0006DE0EFE0FFFC37C50400130565C1EFA0B5 -:1087E0006DDFEF306EBFB24041016FD02F88411175 -:1087F00006C6EF603F8C37C5040013056561EFA026 -:108800006DDDEF305ECD375504001305C56CEFA06C -:108810006DDCEFC07DE73795040013054529EFA017 -:108820006DDBEF001EA437F50400130505CBEFA0A8 -:108830006DDAEF60CEDD377506001305C57BEFA05E -:108840006DD9EFE0FFF537C50400130565C1EFA052 -:108850006DD8EF306EB8B24041016FF07F884111A2 -:1088600006C6EF006FADB727002083C74735130753 -:10887000D00FFD1793F7F70F6372F70637C50400A3 -:1088800013056561EFA00DD5EF30FEC43755040028 -:108890001305C56CEFA00DD4EFC01DDF37950400A4 -:1088A00013054529EFA00DD3EF00BE9B37F504005B -:1088B000130505CBEFA00DD2EF606ED5377506001E -:1088C0001305C57BEFA00DD1EFE09FED37C5040088 -:1088D000130565C1EFA00DD0EF300EB0B2404101DD -:1088E0006FD06FA841113707002006C6B7070020D8 -:1088F0001307675198C3372700201307A7AAD8C3C7 -:1089000037270020130767F037260020B70500201F -:108910003705040098C71306C6239385050413057D -:10892000052B9770F91FE780E06E37260020B725EA -:10893000002037950600130686359385C523130559 -:1089400045579770F91FE780E06CB24041011773FB -:10895000F91F6700436D97B1F91F9381A16A1771E1 -:10896000FA1F1301216A1785FDFF1305A59197755D -:10897000F91F9385256A1776F91F1306A66C63FC09 -:10898000C5008322050023A0550011059105E3EAE7 -:10899000C5FEEFF03FF57300203011CE93070002C3 -:1089A000918F635BF0003355C500B397F50033D664 -:1089B000C5005D8DB2858280130506FE014633D564 -:1089C000A500B285CDBF11CE93070002918F635BE6 -:1089D000F000B395C500B357F5003316C500DD8D23 -:1089E00032858280930506FE0146B315B5003285B7 -:1089F000CDBFB687B2882A832E88639B061463F89E -:108A0000C50A4167636BE61AB70700016360F63475 -:108A100093568601E14717170000130767A23697A0 -:108A20001823BA97130700021D8F19CB3398E5005E -:108A3000B357F500B318E60033E807013313E50038 -:108A400013D608013355C80293960801C182935783 -:108A500003013377C802B385A60242073368F700E3 -:108A6000637AB80046989307F5FF6364180163655D -:108A7000B8303E853308B8403357C8024203135319 -:108A800003013378C802B386E602420833686800FF -:108A9000637BD80046989307F7FF63651801791741 -:108AA0006363D8003E874205598D8145828001E687 -:108AB0000547B358C702416763E8E80EB7070001EE -:108AC00063EAF82893D68801E147171700001307D7 -:108AD000279736971423BE9693070002958FFDE7DC -:108AE000939E08013387154113DF080193DE0E01C1 -:108AF0008545935703013355E7033377E703B306FF -:108B0000D5034207D98F63FAD700C6971307F5FF3D -:108B100063E4170163E5D7263A85958F33D7E703DA -:108B2000420313530301B3F7E703B30ED703C2079E -:108B3000B3E7670063FBD701C6979306F7FF63E5CA -:108B40001701791763E3D70136874205598D828073 -:108B500063E1D504C16763E1F604B707000163E38D -:108B6000F61E13D786016148971700009387478D3B -:108B7000BA979823130E00024297330EEE40631A01 -:108B80000E0C63EDB61C3335C50013451500814549 -:108B900082808145014582809307F00F63F3D71CE3 -:108BA00013D786002148C9B71307F00FC686E37EA6 -:108BB00017F193D68800A14709BF1307F00FB286BB -:108BC000E37BC7E493568600A147B1B5B398F8009C -:108BD00033D6D50013DF0801335EE6033397F50083 -:108BE000B356D500558F939E080193DE0E013313C3 -:108BF000F50093550701B376E603B387CE03C206AB -:108C0000CD8E63FBF600C6961306FEFF63E41617CF -:108C100063F2F616791EC6969D8E33D6E603931739 -:108C20000701C183B3F6E6033385CE02139706012D -:108C30005D8F637BA70046979307F6FF6368171362 -:108C40006376A7127916469793150E01098FD18D79 -:108C50004DB5B357E600B396C601DD8E33D3E500BC -:108C600013DF0601B357E303939E060193DE0E0163 -:108C70003398C5013357E50033680701935808015D -:108C80003316C6013373E303B385FE024203B368B0 -:108C9000130163FBB800B6981387F7FF63EAD80C9B -:108CA00063F8B80CF917B698B388B84033D7E8031F -:108CB000420813580801B3F8E8033383EE02C208F0 -:108CC000B3E5080163FB6500B6951308F7FF63ED94 -:108CD000D50863FB65087917B695C207416FD98F30 -:108CE0001307FFFFB3F6E70093D80701718F4182A6 -:108CF000B38EE602B3856540B386C60213D80E0173 -:108D00003387E802BA96C2963386C80263F3E60058 -:108D10007A9693D80601469663E2C5026385C5003C -:108D20003E858145828041677D17F98EC206B3FE7C -:108D3000EE003315C501F696E374D5FE1385F7FFF3 -:108D40008145828013D70601414839BD93560601FB -:108D5000C147D1B193D60801C14785BB81450545BF -:108D600082803687014809B5428785BF3E86E9BDC6 -:108D7000BA871DBF328E4DB579154698E5B979157C -:108D8000C69761BBB3C7A5008D8B3307C50081E7CC -:108D90008D4763EDC700AA87637EE50894218507A8 -:108DA0008505A38FD7FEE3EBE7FE8280937635003F -:108DB000AA8789CA942185078505A38FD7FE93F6D4 -:108DC0003700C5BF9376C7FF138606FE63F0C7065C -:108DD00083A3050083A2450083AF850003AFC500D0 -:108DE00083AE050103AE450103A3850183A8C50138 -:108DF0009385450223A0770003A8C5FF23A257004F -:108E000023A4F70123A6E70123A8D70123AAC701BA -:108E100023AC670023AE17019387470223AE07FFF9 -:108E200075B790419107910523AEC7FEE3EBD7FEDE -:108E3000E3E6E7F682800000F401FA0096006400A1 -:108E40004B0032001E001400FB349B5F800000804A -:108E50000010000000000000CC840400068504001F -:108E60007E8504007E8504001A8504007E8504004A -:108E700034850400528504007E8504006A85040060 -:108E80005086040070860400EC860400828604008C -:108E9000EC860400EC860400EC860400A486040042 -:108EA000EC860400EC860400EC860400C88604000E -:108EB0007A3F04005C9D0400AC3F0400C0AA04009B -:108EC0001A40040092AA0400C440040064AA0400EA -:108ED00052410400F4B404009E410400F4B40400C0 -:108EE000F04104005AB40400C440040010AA040075 -:108EF0008842040018AD04000000000000000000DB -:108F0000C6420400A2AD04002E430400D69D040016 -:108F10006EE504006EE5040090E50400A4E504009D -:108F2000ACE50400B4E50400BCE50400C4E50400BD -:108F3000CCE50400D4E50400DCE5040012E60400FE -:108F40001AE60400E2E50400010102010201010247 -:108F500001020404060104010101010104040201EB -:108F600004000000010102010201010201010404E8 -:108F700006010401010101010401020101000000D8 -:108F800068F3040074F30400B2F30400CAF40400AC -:108F9000D2F4040012F504004AF504007EF5040042 -:108FA000B0F504006CF40400E4F504006CF6040071 -:108FB000F0010500CE0105009A040500EA04050051 -:108FC000C4070500020605004606050080060500E8 -:108FD000B6060500EC060500CE0105002E070500CB -:108FE000A0070500000000000000000000000000D5 -:108FF00000000087070B0D1113171D1F25292B2FAC -:10900000353B3D4347494F535961FF008E430500AF -:10901000AE430500B2440500104305003445050089 -:1090200010460500AE45050074460500B64605002D -:10903000224305006644050012440500F84505007A -:10904000AC970500EEA705005898050044A8050058 -:1090500076980500F29805001899050054990500C6 -:109060006EA70500E8A60500609A0500849A050031 -:10907000EE9A0500809B050060A6050088A5050006 -:10908000B0A40500488B0500209C05006C9C0500E1 -:109090001CAB0500BEAA0500989C05002A9E050091 -:1090A000709F0500EA9F05000EA005006CAB05004F -:1090B00070AB05009CA00500D2A0050074AB0500B4 -:1090C00078AB05007CAB050080AB050088A90500E6 -:1090D00010A10500DCA1050084AB050088AB0500EC -:1090E00080A2050078A4050050B30500ECAB050094 -:1090F000A4AB05005EB0050030B005000CB0050063 -:10910000D2AF0500A6AF050060B1050064B105004F -:109110003AAE050068B10500FCAD05006CB1050074 -:10912000DAAD050070B10500AEAD05009EAD0500DD -:1091300068AD050074B1050048AD050078B10500C3 -:109140007CB1050080B1050084B10500A8AB050025 -:10915000BCAB050088B105008CB1050090B10500DD -:1091600094B1050058B10500E8AC050072AC0500EB -:109170005CB10500F6B0050094B00500C0AB050079 -:1091800043483332563230785F424C455F4C494257 -:109190005F56312E323000007266322E3467000086 -:1091A000706806007C680600886806009268060001 -:1091B0009C680600BC680600C8680600D268060005 -:1091C000DE680600E8680600F2680600FC68060033 -:1091D00006690600126906001C6906002669060079 -:1091E0008A690600306906003A690600446906008B -:1091F0004E690600626906008A6906008A690600EF -:109200008A6906008A6906008A6906008A6906007A -:109210008A6906008A6906006A69060058690600BC -:109220008A6906007469060080690600766B06008C -:10923000A86B0600C86B0600E06B0600F66B060024 -:10924000126C0600306C0600426C0600606C060072 -:10925000786C0600926C0600AA6C0600C06C0600D2 -:10926000D46C0600EE6C0600006D06001E6D060054 -:10927000D06E0600E66E0600FE6E06001E6F06004B -:10928000AC7006006C6F0600426D0600846F06002D -:10929000966F0600966D0600966D0600686E0600D5 -:1092A000726E06009E6F0600426F0600B06F0600E9 -:1092B00026700600747006007E770600DA740600D9 -:1092C000DA740600C276060076750600BE740600E3 -:1092D00076770600DA7406006A76060000770600E4 -:1092E000DA740600DA740600DA740600DA7406002E -:1092F000DA740600DA740600DA740600DA7406001E -:10930000DA740600DA74060030750600CC7A0600BE -:10931000B47B06008A7B0600F27B0600F27B060027 -:109320007A7C0600C27C0600B47B0600B47B060093 -:10933000B47B0600B47B0600B47B0600B47B060059 -:10934000B47B0600B47B0600B47B0600B47B060049 -:10935000B47B0600B47B0600E87C0600E87C0600CF -:10936000B47B0600B47B0600B47B0600B47B060029 -:10937000B47B0600B47B06004A7D06004A7D0600E9 -:109380009C820600A8820600BE820600CA820600F1 -:10939000E0820600EC820600F6820600FE820600ED -:1093A00006830600108306001A8306002683060043 -:1093B000308306003A830600448306009883060043 -:1093C000988306004E8306005A83060064830600D5 -:1093D0006E83060078830600808306008E83060075 -:1093E000D4830600F083060004840600528606003B -:1093F00020840600868406009A840600AE84060057 -:10940000C8840600E2840600F68406001085060083 -:10941000528606002A8506005286060052860600FD -:109420003E850600648506008A850600A485060040 -:10943000B8850600CA8506001086060000010202F3 -:1094400003030303040404040404040405050505DC -:1094500005050505050505050505050506060606B8 -:10946000060606060606060606060606060606069C -:109470000606060606060606060606060707070788 -:10948000070707070707070707070707070707076C -:10949000070707070707070707070707070707075C -:1094A000070707070707070707070707070707074C -:1094B0000707070707070707070707070808080838 -:1094C000080808080808080808080808080808081C -:1094D000080808080808080808080808080808080C -:1094E00008080808080808080808080808080808FC -:1094F00008080808080808080808080808080808EC -:1095000008080808080808080808080808080808DB -:1095100008080808080808080808080808080808CB -:1095200008080808080808080808080808080808BB -:0C953000080808080808080808080808CF -:08953C00020000005895060032 -:02954400012AFA -:02954800A62A51 -:02954C000328F2 -:029550000229EE -:02955400002AEB -:029558000018F9 -:02955C000118F4 -:029560000228DF -:02956400042AD7 -:029568000028D9 -:02956C000128D4 -:02957000052ACA -:109574000200000068950600010000003C9506000A -:10958400020000004C950600010000002F2300207B -:109594000200000054950600010000006C24002025 -:1095A400020000004C950600010000002C2300205E -:1095B400020000004495060001000000AC230020D6 -:1095C400020000004C95060001000000302300203A -:1095D400020000006495060001000000342300200E -:1095E400020000004C950600010000002E2300201C -:1095F4000200000048950600010000002D23002011 -:10960400AA800400C48104000000000002000000DD -:1096140068950600010000004023002002000000BD -:109624004C950600010000004B23002002000000BE -:109634007095060000000000000000000200000019 -:109644005095060003000000000000000000000028 -:109654007C9F04000000000000000000C3812F0173 -:1096640002010202020000005000A0000000E80312 -:10967400FFFF0000020000005C9506000100FF20CF -:0C9684000105020101100101FF000000BF +:1000000006C69720FA1FE780E04E59ED2C5C7D472D +:100010000D459C31230E040493F7F7037CA4E917E4 +:1000200093F7F70F6363F7029C2111471D45BD8BC2 +:100030005CB4639CE700834644050D479C216393B1 +:10004000E60493F7070491E74545B2402244410195 +:10005000828068501946890551059700FA1FE7808C +:10006000803E7DD1830744016349F00285475CA847 +:100070002C380545EF307ECA08B82285EFE01F8F87 +:100080000145E1B7034754059987858BE31EF7FACD +:100090001946890513056405C9B73C38858399C39A +:1000A0003CB8F9B78547EDBF054545B7011152C4C6 +:1000B000373A002022CC06CE26CA4AC84EC693073D +:1000C0004A3CFC33154713044A3C6306F7007C3076 +:1000D0000D47631FF7001C3481E7930760101EA4CF +:1000E000F2406244D2444249B249224A05618280C8 +:1000F000B737002083A4872E373900207C30832730 +:10010000C93E0967194523A2070698C723020400C0 +:10011000B7390020EF30904603A7893BB7C7898ED7 +:10012000938767ED1CC7B7575500938757555CC336 +:1001300083C724021307F00F6387E700A380F4024C +:10014000FD572381F40203C5140289476303F500B8 +:1001500001450327C93E01469305F00F5C4393E731 +:1001600017005CC3930710FABCA499477CB0230224 +:100170000A3CEF3050183737002083260744DC56FE +:10018000F59BDCD69C3403A6893BBA8493F6F7072B +:100190001C4293F707F8D58F1CC2B737002083C7DE +:1001A000070F89CBB737002003A5873A9700FA1FBE +:1001B000E780E05D03A7893BB70633001C4393F754 +:1001C000F7E71CC31C4393F7F7E793E707101CC33B +:1001D00003A704441C47D58F1CC78327C93E1307B8 +:1001E0009005B8CBA3020400A3000400054798C300 +:1001F000C5BD4111B737002022C403A4872E06C60F +:1002000026C2834714022147638FE70AB7360020CE +:100210001387463C783319461385463C6315E60A36 +:10022000894410346396970A930770026307F610A7 +:1002300093075002930560026304F6009305700271 +:10024000B737002083A7873B0CB437370020904393 +:100250003708CEFF7D181376F6E71366060890C3BD +:100260000327074410473376060110C737360020AE +:100270000326C63E232806042382063C23020500EB +:10028000A3020500A3000500854614C29443370568 +:10029000330093F6F6E794C3944393F6F6E793E6B8 +:1002A000061094C31447C98E14C79306900534CA28 +:1002B0005457F59A54D79843137707F84D8F98C33E +:1002C000930710FA3CA4B240224492444101828038 +:1002D00093077002630CF602930750021307600243 +:1002E0006304F60013077002B737002083A60744A3 +:1002F00018B4DC56F59BDCD6B737002083A6873BC5 +:100300009C4293F707F8D98F9CC25DBF83470402D4 +:10031000898B85C7B7370020723803C5F704A1451C +:10032000EF302ECC93075002A30094021CB4224459 +:10033000B240924441016FF07FD722852244B240FF +:10034000924441016FE01F80B737002093878726D2 +:1003500003A7870A2DE3373700201307473C743380 +:100360002946630AD6047833AD466386E604411114 +:1003700022C403A4070806C63737002083470402B7 +:100380000345F70413F7170011C78547A300F402CC +:10039000322C39A0898BF5DB72388947A300F4022F +:1003A000A145EF300EC4930750021CB42244B24062 +:1003B00041016FF0BFCF82800111B737002022CCFE +:1003C00003A4872E26CA4AC84EC652C456C25AC073 +:1003D00006CE930A200A9309100A1309600A130B28 +:1003E000400A130A500AB73400203C246392570D88 +:1003F000373700200326C73EF977FD175446F58F9F +:100400005CC60F1000008327C73EB7340020096781 +:1004100098C7130600F81387443C50A337370020D1 +:100420000326873B184231830D8B31EF1307601988 +:10043000F8D3D4C79720FA1FE780200983C7443C2C +:10044000858B85C72382043CEF30300B2285EFF08B +:100450003FBA01CD8307440163C30704FD575CA87D +:100460002C380545EF307E8B08B81C2463880714B0 +:100470006244F240D2444249B249224A924A024B73 +:1004800005616FF0BFC21842094631830D8B6315B9 +:10049000C7001307E04369BF1307E01B51BF3C3897 +:1004A000860793F7F70F99C33CB85DBFFD57EDBFC3 +:1004B000639F370183C7443C858BC5DB228523823C +:1004C000043CEFF0CFEB3C24E39137F379BF639C1E +:1004D000270B373700200326C73EF977FD17544610 +:1004E000F58F5CC60F1000008327C73EB73400208D +:1004F000096798C7130600F81387443C50A33737A1 +:1005000000200326873B184231830D8B21EB130714 +:100510006019F8D3D4C79720FA1FE78000FB83C780 +:10052000443C858B89CB2382043CEF30007D2285BF +:10053000EFF00FB001CD8307440163CD0702FD57F3 +:100540005CA82C380545EF304EFD08B838249307D9 +:10055000500AE31CF7F0EFE0FFA101BF1842094683 +:1005600031830D8B6315C7001307E0435DB7130795 +:10057000E01B45B73C38860793F7F70F99C33CB8A3 +:10058000C9B7FD57EDBF639867039720FA1FE7804F +:10059000C0F383C7443C858B91C722852382043CEA +:1005A000EFE07FB33C2463944701EFE0BF9C3C2421 +:1005B000E38D27E35DBDE38A47FF45BDB7370020E4 +:1005C00083C7070F99CF6244F240D2444249B249EF +:1005D000224A924A024B014505611703FA1F670040 +:1005E000031BF2406244D2444249B249224A924A31 +:1005F000024B0561828041114AC0B747024006C6DE +:1006000022C426C203A9C72023A607200F1000007A +:10061000B73700201387473C18379387473C19C7E3 +:10062000942709476394E600A3840700F833A146A2 +:100630006386E600F8339D466396E600F83398A794 +:10064000054798B7EF30606BB737002003A4872EBB +:10065000B73400209384C4046840231504002304A5 +:1006600004009700FA1FE780E0AAA8309145231004 +:1006700004042322040423240404EF30EE9DA83054 +:10068000A145EF306E9D034514039307F00F6307F8 +:10069000F500EF302EA3FD57A308F4020345040331 +:1006A0009307F00F6307F500EF30CEA1FD57230845 +:1006B000F402B737002083C7070F91C701459700A1 +:1006C000FA1FE780C00CB2402244B747024023A67D +:1006D00027219244024941018280411106C6FD57FB +:1006E000A308F5024546930500080145EFD0FFB584 +:1006F000B24041016FF03FF0B737002083C7F704E5 +:10070000411106C689EB373505001305E53CEF308E +:100710000EBFEF20FFDBB7E70500373700209387D8 +:10072000E7752326F72EB240B707060037370020BB +:100730009387873B2324F73A4101828001114EC6FB +:1007400006CE22CC26CA4AC8EF70CF8BAA8935C5FF +:10075000EF60DFF92A8463030512930710113EA5A9 +:10076000930700FB7CA53739002085471CA9930718 +:10077000C9099E2B130740101309C909A5073E8517 +:10078000C207C1836374F7001305401013170501F6 +:100790004183930700046374F700130500044205C6 +:1007A0009305302541819700FA1FE780A08923280F +:1007B000A41001ED0A24EF706F93F24062444E855D +:1007C000D2444249B24905618280B737002083A7ED +:1007D000873EB734002093848426232AF41083A70D +:1007E000C40D03A7840D2285232EF40E2326F410B6 +:1007F000BE3C232CE40E2324E4102312F41483C7FC +:10080000A40423130414A304F416FD572310F404C2 +:100810007EB01EB48347E40293E707FC2307F4028B +:100820008567938787BB2315F404EF502FF20345A8 +:1008300049012301A414EF20307DD147A303F4180C +:1008400093078002A302F4189307006F231CF41689 +:100850009307F007230DF416F5779387A7EBA30111 +:10086000A4142300A418A300A4182301A418A3010E +:10087000A418231EF4162394040081B7854935BFBC +:1008800001114AC8373900209307892606CE22CCA9 +:1008900026CA4EC652C42A84A83383450403373A75 +:1008A0000020A307A402EF30EEBE130A4A0E03583D +:1008B0008A003E3C93060032B73900203307F80225 +:1008C000232AA408130989263356D7023377D7027F +:1008D0009306204E2326C40837460F00130606242D +:1008E0003307D702B387D70233470703B3D7A7022B +:1008F0001AB01387C909642B9389C909BE941E3C99 +:100900009384C417C2048507B387D702C180814688 +:1009100023129408858FB3B5070333850703EFD0FF +:1009200020488327840883264A00AA9733B5A70066 +:100930002E9501E53E8763E4D7003387D740834790 +:1009400074032328E4081307204EB387E7028604C4 +:100950002285BE9423119408EF506FA82285EF5092 +:100960000FDA6E3C22859205F915C205C181EF5060 +:100970004FA32285EF706F85B737002083A74739D3 +:100980002324890A898B91CF83A7490399CB832597 +:1009900084093545829783A749038325C4093945CE +:1009A0008297228562442317090023280900F24018 +:1009B000D2444249B249224A05616F50FFBF0357F2 +:1009C000050889468357450863F3E6000947B3974E +:1009D000E7002313F5086F306EBB011122CC26CA45 +:1009E0004AC806CE4EC652C4834765032A843739A7 +:1009F00000208507230BF5023C39B7340020639EA5 +:100A0000075A5C251307000438B91839BD9B93E7D2 +:100A100037005CA593178701A30D0500E18763D814 +:100A200007001377F70718B9EFB03FC939A8832734 +:100A3000850A93F62700BDC2F59B2324F50A832778 +:100A40000510918BA9CBEF902FF8383C8547631D9B +:100A5000F704832784115824DC4398A38327841147 +:100A60005838DC4398B3032784118327C93E584381 +:100A7000B8DB83A7843BB70680009843558F98C3A3 +:100A8000D857719BD8D7F2406244D2444249B24908 +:100A9000224A05618280EF902FF145BF93F617003F +:100AA0008DC2F99B2324F50A83270411582498A3A7 +:100AB00083270411583898B38327C93E03270411AC +:100AC00045BF83490501054A6394491FF9C713F7D8 +:100AD000070119C7BD9B2324F50AEF90DFBCB5B70A +:100AE00013F7070201CB93F7F7FD2324F50AEF90E4 +:100AF000DFCDA1BF13F7070401CB93F7F7FB232446 +:100B0000F50AEF900FF191B713F7070809CB93F7A8 +:100B1000F7F72324F50A2285EFB00F803DB713F7CE +:100B2000072009CB93F7F7DF2324F50A2285EF90FE +:100B3000AFF721BF13F7074001CB93F7F7BF23248B +:100B4000F50AEFA04FAD11B713974701635C07009B +:100B50007D771307F77FF98F2324F50A2285EF901D +:100B6000DF8CE5B513973701635A07007D777D1752 +:100B7000F98F2324F50AEF90BF8DC1BD139727018C +:100B8000635A070079777D17F98F2324F50AEF90D0 +:100B9000BF9965BD2324050A01BF8327450A6389E0 +:100BA000073893F6070481CA93F7F7FB2322F50A67 +:100BB000EF904FD959BD93F6071081CA93F7F7EF1D +:100BC0002322F50AEF90DFB249B593F6072099CAC0 +:100BD0004D8B631B071093F7F7DF2322F50AEF9085 +:100BE000DFB5A5B593F6074081CA93F7F7BF232277 +:100BF000F50AEF908FDF91BD9396470163DB060006 +:100C00007D771307F77FF98F2322F50AEFA09FE581 +:100C10002DBD9396370163DC06004D8B71E77D7720 +:100C20007D17F98F2322F50AEF900FE039BD139756 +:100C30001701635A070071777D17F98F2322F50A90 +:100C4000EF90CFF819B51397F700635A0700417773 +:100C50007D17F98F2322F50AEF907FBFFDB313971D +:100C6000E700635A070001777D17F98F2322F50A01 +:100C7000EF90AFF9D9BB1397B700635B0700370755 +:100C8000F0FF7D17F98F2322F50AEF90DF8275BB05 +:100C900013978700635B0700370780FF7D17F98F85 +:100CA0002322F50AEF907FF44DB32322050AEDBB12 +:100CB000638C09029306600463EF36071307500440 +:100CC00063F0E9161307A0026381E91E6367370327 +:100CD000930710026387F91A63EA3701ED47638EC1 +:100CE000F914F5476381F91622853DBB930750023D +:100CF0006386F91E93077002F5B7130760036380DC +:100D0000E916636B37019307E0026389F91E9307C5 +:100D10001003E384F9DCC9BF130700046384E90A04 +:100D200093071004638FF90A93078003E39EF9FA8F +:100D3000EFB0BF9815A293076006638BF92663EEA8 +:100D40003703930750056384F91E63EB370193075C +:100D5000B004638BF91C93071005E38EF9DA69B7C9 +:100D6000930780056385F91C9307A0056389F91C27 +:100D700093076005E39AF9F655BB9307200763E8EC +:100D800037039307100763F2F920938969F993F900 +:100D9000F90F054AE36A3AF5EFB03F928327040A58 +:100DA000056713070780D98F2320F40A21A493072E +:100DB0006007E385F9DA93076008E397F9F2EF90AB +:100DC000AFF605A813974701E35007F27D771307A5 +:100DD000F77FF98F2324F50AEF902FE523083401DC +:100DE000ADB18347B50285C705476397E700EF902C +:100DF000DF9D85471CA891B983270510918BD5C32A +:100E0000BD472306F4022285EF900FBCDDB7EFB09B +:100E1000DF8A8327040A93E727002320F40AD1BF3F +:100E2000EFB0BF898327040A230844012311040675 +:100E300093E747002320F40A09B9EF904FA4D9475C +:100E4000230AF40419B12285EFB03F878327040AEF +:100E500093E717002320F40A23080400FDB6970047 +:100E6000FA1FE78080C6E30205BE8547A306F404A7 +:100E70002285EF906FAB8347C404F99B2306F404EB +:100E8000E9B683278510858B81C7EF900FF875BE73 +:100E9000E947A305F50283270510918B99C38D4778 +:100EA0008DB72285EF904FB0A9B7EF90EF9F8347A2 +:100EB000D40491CB41469305C40A1305C40C97F0A2 +:100EC000F91FE78040478347C4042326040E2328E4 +:100ED000040E93E717002306F40485BE832705104C +:100EE000918B91CB8D472306F502EF90EFAD1C3827 +:100EF000DD9B1CB8FDBDEF902FABD5BF8347C5046C +:100F00002322050E2324050E93E727002306F5046C +:100F1000EF904F9B1C38A3050402DD9B1CB8832770 +:100F2000040A93E70701D5BDEF90AFAED9B522858E +:100F30009700FA1FE78060B9E30905B075B38346EF +:100F4000A51499CA034665148547B397C7006385FE +:100F5000D7001367070118B90347B41401CF8346BC +:100F600074148547B397D7006386E7001C3893E76E +:100F700007011CB87C2C91CF1C38C18B99EB8327BF +:100F8000040A93E707202320F40A2285EFB0EFF24A +:100F90008DB58307B417F5DB83274410898BF5D70C +:100FA0008327440A37071000D98F2322F40AF1BFA0 +:100FB000EF907FE62308440149BCB73700209387B0 +:100FC00087269A2B05079AAB49B48347E518858B8A +:100FD000638207108347651393D63700AA9683C5AB +:100FE000061313F7770033D6E540058A69CE3971C9 +:100FF00022DC06DE26DA4AD84ED652D456D25AD051 +:101000005ECE62CC66CA2A84034545037D57FD4700 +:10101000591562052C0061853AC43EC69710FA1F27 +:10102000E780E0640326841322478326C413B24773 +:10103000718FF58F6314E6006387F6062800EF6072 +:10104000DF93894763F1A706294681451305741983 +:1010500097F0F91FE780C034224AB24A81490D4C0B +:10106000854C930B500293948901E1844E865285FE +:10107000D68513DB2440EFC0304D8D88229B058937 +:10108000860403097B190DCDB3949C00B3649900C9 +:10109000A30B9B188509E39879FD8347E41893E730 +:1010A00087002307F418F2506254D2544259B259BF +:1010B000225A925A025BF24B624CD24C21618280DE +:1010C000B3149C00E1B78547B397E700CD8F238821 +:1010D000F612828082805D71A6C2B73400209387A9 +:1010E00084265AD837EB0600A2C44EDE52DC56DA0C +:1010F00003A4470AB7390020373A0020B73A002046 +:1011000093074B3CCAC05ED686C662D466D26AD00C +:101110006ECE814B938484261389493C130A4A0E70 +:10112000938ACA093EC67C241307000D6391E71E0B +:10113000373C00208327CC3E98430D8B05C73737BB +:101140000020230607DAB84B619BB8CB984313679E +:10115000870098C39C438D83858B89C7010001005C +:10116000010001008347CA0089E79700FA1FE78062 +:1011700080BD8347C404858B99C7A2850545971018 +:10118000FA1FE780201D83472414B73C002083A664 +:101190008C3B93F7F70313979701DC5637060082D1 +:1011A0007D16F18FD98FDCD6832784090327CC3EA7 +:1011B0009CC68327C409DCC25C4393E717005CC369 +:1011C0008355041E0356241E03457414910593078A +:1011D00010FDC2057CA4C181930700FC2382F93C69 +:1011E000EF20701103457414054766868357240861 +:1011F00083566408631FE5088325CC3E86069387E3 +:101200005703B697D44579777D17758FD8C50100F8 +:1012100001000327CC3E896586070CC7930500F8BB +:101220002302B9007CD354C7B737002083A60744F4 +:10123000DC56F59BDCD60327863B8347641313F605 +:10124000F7071C4393F707F8D18F1CC38347C404E7 +:101250000326CC3E858BD1CB1C4393F7F7E71CC309 +:101260001C4393F7F7E793E707101CC39C46370727 +:101270003300D98F9CC6930790073CCAA30209008C +:10128000A300090085471CC29710FA1FE780E023DE +:1012900059BD7977094886068325CC3E7D176316AC +:1012A0000503C845698FD8C5010001000327CC3E5E +:1012B0008965938797180CC7930500F82302B90036 +:1012C000B69786077CD348C785B7C845698FD8C508 +:1012D000010001000327CC3E8965938797040CC762 +:1012E000930500F82302B900E1BF1C4393F7F7E729 +:1012F0001CC31C4393F7F7E793E707101CC39C46F6 +:1013000037073300D98F9CC693079005BDB71307E5 +:10131000100D6392E75483C7493C858B638407486B +:1013200083C7493CE207E18763DB070C7C3493F712 +:1013300007028DC33E3C1307204EB387E702032705 +:101340004409B3D7E70203C76A0113070705BA9731 +:101350002312F408B737002083A7873B035D4408B6 +:1013600009479C43832DC901832CC408B1838D8B0D +:10137000035B8A00032C4A0013059D186384E70071 +:1013800013059D04B325650337460F0081461306F8 +:1013900006243305AB02EFC0B0203385AC40B30662 +:1013A000B501B68763E4A60063E48601B38786418E +:1013B0008326040963E3F6140356640803572408DC +:1013C0009D8E931516002E9733076703B7450F00C0 +:1013D0001385F523938505242A973357B70263E6CF +:1013E000E6003307EC406374D7002328F4089357D2 +:1013F000160063E6A7112313F4082310040883459D +:10140000C404032544119306240313064403858969 +:101410009710FA1FE780000E8347440303C7640454 +:101420002303A900998F230AF40283476900858B5F +:10143000639007288347A40293E727002305F4025B +:1014400083C7493CE207E18763D3070283476413FC +:1014500013D7370093F6770022978547B397D700C5 +:101460008346071393C7F7FFF58F2308F7127C34E1 +:10147000898BCDC72285EF40FFAD4DE17C34A309B8 +:10148000040093E747007CB4832784118DCB383C5C +:101490001DC79837058B05E7BA27C843136707F0C0 +:1014A000BAA797F0F91FE780E0C683574404850781 +:1014B0002312F404832784119C43232CF4105C38FA +:1014C00081CB8347C404898B81C72285EF40DFAC81 +:1014D0001C28130720026397E7028327040AA30549 +:1014E000040293E787002320F40A1C3893E787005F +:1014F0001CB8930740021CA815A0E29675BD2313E3 +:10150000A409E5BD13070006639BE70A85471CA8ED +:101510008347A40293E717002305F4028347690079 +:10152000898BFDC38347C404858BF9CF1C3C850799 +:101530001CBC7C3413F7270015EF93E727007CB41D +:10154000930700F85CAC3E3C1307204EB387E702DC +:1015500003274409B3D7E70203C76A011307070546 +:10156000BA97C207C1832312F40886072311F4082F +:1015700023A4040A22852382093CEFF00FC6034509 +:10158000641489474C38631CF51203458414910593 +:1015900013652500EF20C0415C386387071C834733 +:1015A000C404898B6382071CA28501459710FA1F2A +:1015B000E78000D363070510EF202074A5AC130764 +:1015C00070066399E702B737002003A7873B23051E +:1015D00009007C53ED9B7CD3372702408347870467 +:1015E00093F7D70F2304F7045C2493F7F7FD5CA46B +:1015F000854711B77147E393E7F28327040A93E71E +:1016000017002320F40A19BF2285EF40DF9615F159 +:10161000A30C04002285EF403F911C38A18B8DCB99 +:101620007C289DC77C38094793F7B70F6382E70290 +:101630009307D003230AF404930770021CA883477E +:10164000C404858BE38707EE2285EF40FF99D5B56B +:101650005C340D476391E7047C381307A002637282 +:10166000F7027C381D476385E702A306F40283274F +:10167000840A228593E717002324F40AEF805FA6EB +:1016800001A832478A072285BA979C43829771F94D +:101690007C28D5F779BD91CB7C28E38C07E822859F +:1016A00097F0F91FE7800052AA8BE3940BE8CDB7BF +:1016B0001C2C85071CACFE248507FEA49DBD91054E +:1016C000D1BDB737002003A7873BB70633001C43C3 +:1016D00093F7F7E71CC31C4393F7F7E793E707106B +:1016E0001CC3B737002003A707441C47D58F1CC76E +:1016F000B737002083A7C73E1307A007B8CBB7377B +:10170000002083A7873BB70680009843558F98C376 +:10171000D857719BD8D7930720FD7CA48347CA0074 +:10172000E39407B683270412E38007B67834058B69 +:10173000E30C07B4D443D0278C270A248906EF8012 +:10174000B066E31305B483270412BA27136707F0C2 +:10175000BAA79C432320F41283572404E38607B2DC +:10176000FD172311F4040DB6B737002003A7873BFC +:10177000B70633001C4393F7F7E71CC31C4393F7EA +:10178000F7E793E707101CC3B737002003A7074408 +:101790001C47D58F1CC7B737002083A7C73E130748 +:1017A000A005A9BFB737002083A7C73EFC53E39C21 +:1017B0000796EF20805483C7493C2285E207E187E2 +:1017C00063D2071EEFF0AF9FBE2822858507BEA813 +:1017D000EFF0AFFF83570404B1CF13074006B3F710 +:1017E000E702A9EBB737002083A74739898B9DCF44 +:1017F000373900201309C9090327490305CB9E285F +:10180000AE282545C207DD8D029783274903EE24C4 +:101810002945829783274903831524032D45829701 +:1018200083274903830544033145829723970400A6 +:1018300023A8040022852644B64096440649F2595E +:10184000625AD25A425BB25B225C925C025DF24DFC +:1018500061616F40FFE01307200DE39FE7D48347EA +:101860001900858B638307148327040AA3000900EA +:101870001397270163400710228597F0F91FE7802F +:10188000C04085476318F50E8355041E0356241E79 +:10189000034574149105C205C181EF20C02583471B +:1018A000C404373C0020B73C0020858B373D002026 +:1018B000B5CFA28505459710FA1FE780A0A903A719 +:1018C0008C3BB70633001C4393F7F7E71CC31C435C +:1018D00093F7F7E793E707101CC303270D441C4752 +:1018E000D58F1CC78327CC3E13079007B8CB03279F +:1018F000CC3E930710FD7CA45447F977FD17F58F74 +:101900005CC70F1000008327CC3E096703A68C3B01 +:1019100098C7130700F82302E900184231830D8BA2 +:1019200015EF13076019F8D3D4C7B9BA03A78C3BD6 +:10193000B70633001C4393F7F7E71CC31C4393F728 +:10194000F7E793E707101CC303270D441C47D58F07 +:101950001CC78327CC3E1307900549BF1842094690 +:1019600031830D8B6315C7001307E0436DBF130769 +:10197000E01B55BFEF2060381C3C85C793F7070F6D +:1019800081CB9305D0032285EF401FE1A305A4027C +:10199000B737002083A7070D89C795451305500861 +:1019A00082972285EF50CFA071B5B737002083A76B +:1019B000C73EFC53639907F6EF202034DDB7411191 +:1019C00006C6EF40EF8BB737002037070600938736 +:1019D00087261307C77323ACE70A371706001307D8 +:1019E000078823AEE70AB240B71706003737002052 +:1019F0009387670D2326F73A41018280411122C463 +:101A000006C62A840345D5079307F00F6307F50040 +:101A1000EF105EEBFD57A30EF406FD57A300F4088C +:101A20004146930500080145EFC03F825C4CB2403F +:101A3000C59B5CCC224441018280411122C4130623 +:101A400055012A84285D8146814506C69710FA1FF4 +:101A5000E78040AA631D051A2C5C9D461D45982110 +:101A60003D8B58B49C317CA4631ED710B8210D4522 +:101A7000935667001377F7036376F7101545639362 +:101A800006109388F7FFB388E84093F8F80F230710 +:101A90001403B031454593763600EDE69376460063 +:101AA000F5E6138845007D179376F70F13778600C8 +:101AB00005CF03471800034E9402514513534700C6 +:101AC00063126E0C0565130505F02207698F034547 +:101AD00008000353A402498F51456315E30A138795 +:101AE000E6FF09089376F70F418A35CE03470800D1 +:101AF0001377F7032302E40203462800096713075C +:101B000007F02206798E03471800598E4206418657 +:101B10001317060141837AB039C203060800635BDC +:101B200006061306C0123307C7020346C40D0D454F +:101B30006318A606373600200346F63C89078E0751 +:101B400021CE9387770D8607B307F740138747EDBC +:101B500013064051637EE60489472304F402138789 +:101B6000D6FF9376F70FBC31594513F7070219EBEF +:101B700093F7070489C71387F6FF9376F70F01459C +:101B800091C26145B24022444101828013885500D0 +:101B9000791719BF794641BF9387A7048E076DB7A0 +:101BA00009456315A600AD078A0779BFA907FDB7E8 +:101BB0005A3CBA98373700200357872A63551701D4 +:101BC0002307040251BF373600200328C63E0547CD +:101BD0002304E4020325C80079777D17231E14032C +:101BE000698F2326E800010001000327C63E09662D +:101BF000130800F810C7373600201306463C9387B9 +:101C000057ED2302060186077CD348C789BF0545E7 +:101C100095BF411126C2645922C406C69D479CA0A7 +:101C20008547A3810400BCA08347950B2A8493F7C2 +:101C3000070489CF93070004BCB0373700207C59D4 +:101C40000347070BD8A3BC208507BCA00346940C10 +:101C500019CABC2068588325C40C8D073E9597E0AF +:101C6000F91FE780406DB8208347940C9376F70303 +:101C70008507B69793F7F70F5CA4B8A078581CB304 +:101C8000B2402244924441018280411126C2B734BD +:101C900000209384443C9C4C4AC006C6373900203F +:101CA00022C4939607010327C93E63D3060CB737B6 +:101CB000002003A4872E9307000A7CD3B7370020A7 +:101CC00083A7873BB70533002285D457F19A93E663 +:101CD0001600D4D7944393F6F6E794C3944393F64F +:101CE000F6E793E6061094C3B736002083A60644B1 +:101CF00090464D8E90C61306A00530CBD056759AEF +:101D0000D0D68346E40713F6F607944393F606F815 +:101D1000D18E94C383268409D4C38326040C94C72C +:101D20005C43F99B5CC3EFF0DFEE8327C93E785834 +:101D3000375505008145B8DB13052532EF10DEC9A4 +:101D40008345C40D50240145FD1593F5F50FA3817E +:101D500004009710FA1FE780E081EF10107ABC3082 +:101D6000A304040CB24022449244024941018280FF +:101D70007C57EDDBB737002005472386E7DADDB770 +:101D8000397122DC130655012A84285D814681457C +:101D900006DE26DA4AD84ED652D456D25AD05ECE75 +:101DA0009700FA1FE78000756310053C305C9D4684 +:101DB0001305000818223D8B58B41C32230A040472 +:101DC000230E04047CA4631BD718242223040402DA +:101DD0000D4513D7640093F4F40363F1F41815452B +:101DE000631E07169385F7FF858D93F5F50F23077F +:101DF000B4023432454513F716006311071613F782 +:101E000026004945631C071413F7460063130716A1 +:101E100013094600FD1413F7860093F4F40F854967 +:101E200015CF584C218B1DC70347190005651305B5 +:101E300005F02207698F03450900498F03552409DE +:101E4000631DE5128349240893D9290093C9190019 +:101E500093F91900F914090993F4F40FC18AB5C66E +:101E6000034709001377F7032302E402834629009E +:101E70000967130707F0A206F98E03471900D98EE8 +:101E8000C206C1861397060141837AB09DCA8306B4 +:101E9000090063D7060E9306C0123307D7028346A4 +:101EA000C40D09456390A60EAD078A07B307F74036 +:101EB000138747ED9306405163FAE60E89472304E2 +:101EC000F402F5140D0993F4F40F3C32594513F75D +:101ED000070249E793F7070489CB83470900FD14FC +:101EE0000509A301F40293F4F40FB1CC130A8002A4 +:101EF000A14A494B930BA4088347190063984703F1 +:101F00008347090063945703230E640783478900BE +:101F1000034779001546A207D98F2318F4089305C3 +:101F200029005E8597E0F91FE780E04083470900BC +:101F300063FB97001387170093C7F7FFBE9493F4D2 +:101F4000F40F3A99D5F86393090A0347C407894700 +:101F5000014563E5E7008D47230EF406F250625415 +:101F6000D2544259B259225A925A025BF24B216121 +:101F7000828013095600F91479BD2319E408D9BDEC +:101F8000F94621BF0D456391A602B736002083C6EE +:101F9000F63C89078E0789C69387770D860739B780 +:101FA0009387A7048E0719B7A907EDBFB73600209E +:101FB00003A5C63E05472304E4024EBC4C45797791 +:101FC0007D176D8F58C50100010003A7C63E8966C5 +:101FD000130500F814C7B73600209386463C938754 +:101FE00057EDC8A286077CD34CC7E1BD5C4CA18BE2 +:101FF000A9DF83472408898BA9FB8348E4027C245A +:10200000385C03488402B38717418907BA970306EF +:10201000540103578408830534020355240D3EC040 +:102020009306F00F9307F00F7979B73A0020EF800D +:1020300080618549373A00207D1993844A3C373BBB +:102040000020B73B002083478402E39037F18327C9 +:10205000CA3EF8537DFFD44733F72601D8C70100A5 +:1020600001000327CA3E8967B70533001CC79307E1 +:1020700000F8DCA0930720597CD354C723820A3C84 +:10208000A382040083278B3B23040402A380040063 +:1020900023203701944393F6F6E794C3944393F6D1 +:1020A000F6E793E6061094C383A60B4490464D8E44 +:1020B00090C61306900530CBD856759BD8D60347EB +:1020C00044029376F7079843137707F8558F98C320 +:1020D0009700FA1FE780603FEF1030429C30858BFD +:1020E000A5C72285A3800400EFF03F95035784081D +:1020F0000353240D11E50348840289476311F80254 +:1021000002C0814809489307F00F9306F00F1306A9 +:10211000F0079305F0071A85EF80E0523DB583483C +:10212000E4027C24345C03065401B3871741890719 +:1021300083053402B6973EC09306F00F9307F00F65 +:102140001A85EF80405001B702C0814809489307C3 +:10215000F00F035784089306F00F1306F00793055A +:10216000F0070355240D4DBF0545CDBB411126C2D7 +:10217000B73400209384842683A7840B06C622C428 +:102180004AC099E3054505A22A89EF10103783A7B5 +:10219000840B8297EF508FD52A846DD58327C90B86 +:1021A0008325890701482324F508FC35982915461D +:1021B000A2074207BA97F82513058513F905BA97C0 +:1021C00003C735FF6207BA972320F5F683C755FF8B +:1021D00003C765FFA2074207BA9703C745FFBA972F +:1021E0002322F5F683C775FFA30FF5EE83C795FF8E +:1021F00003C785FFA207D98F2310F5F083C7B5FF6A +:1022000003C7A5FFA207D98F2311F5F083C7D5FF18 +:1022100003C7C5FFA207D98F2312F5F083C7F5FFC7 +:1022200003C7E5FF23220501A207D98F2313F5F089 +:1022300081471CC197E0F91FE780E00F83268907DB +:10224000054783C736022300E414FD8BA30AF4027A +:102250000347C90DED1793F7F70F7D171377F70FA6 +:102260002303E414A303E41403C7360215832308ED +:10227000E4022D476365F7023E3C05679306A7C756 +:10228000E917C207C18363ECF600563C9307301F81 +:1022900063E7D7007E3C130707C8637CF7000A2476 +:1022A000EF50CFE40145B24022449244024941013B +:1022B000828083A7C40B228582970A24130690028A +:1022C00093050008EFB07FF883A7840D13971701DB +:1022D000E35A07EA0A24514693050008EFB0FFF6D7 +:1022E00055B5397122DC130655012A84285D8146D3 +:1022F000814506DE26DA4AD84ED652D456D25AD076 +:102300005ECE9700FA1FE780E01E85476314051A2A +:102310002C5C9C21BD8B5CB49831230A0404230EF1 +:10232000040478A41D476392E718EF10101D0329D9 +:10233000840778248D47834429002304040293D61C +:10234000640093F4F40363F7E41695476394061668 +:102350007D17058F2307E40203473900C5479376AD +:1023600017006399061493762700C94763940614EF +:1023700093774700E5E31109FD149377870093F401 +:10238000F40F854995CF5C4CA18B9DC783471900FD +:102390008566938606F0A207F58F83460900D58FE0 +:1023A00083562409639BF60A8349240893D929009C +:1023B00093C9190093F91900F914090993F4F40F5A +:1023C00093760701D547FDE693760702D947FDE2EC +:1023D0001377070409CB83470900FD140509A301FE +:1023E000F40293F4F40FB1CC130A8002A14A494BD2 +:1023F000930BA40883471900639847038347090098 +:1024000063945703230E64078347890003477900C9 +:102410001546A207D98F2318F408930529005E8575 +:1024200097E0F91FE78020F18347090063FB9700DD +:102430001387170093C7F7FFBE9493F4F40F3A99EC +:10244000D5F8639F09000347C407894763FBE70486 +:1024500081478DA01509F9140DB72319F408A9BFF8 +:102460005C4CA18BEDD383472408898BE9FF83481B +:10247000E4027C24385C03488402B387174189074F +:10248000BA973EC0035784088347A40B0306540140 +:10249000830534020355240D9306F00FEF80A01A34 +:1024A0005DB78D47230EF40665B715476380E702D5 +:1024B00093070008F2506254D2544259B259225A3A +:1024C000925A025BF24B3E8521618280B737002031 +:1024D00083A7C73E21673739002023A6070698C780 +:1024E0009307493C23AA07009C31130720021309D4 +:1024F000493C93F7F7037CA4E39CE7FA130AE4044E +:102500001946A105528597E0F91FE780C0F391476E +:1025100055D12C5C9309640519469C214E8589058B +:102520009987858BA30AF40497E0F91FE780A0E060 +:10253000B737002083A7070982976458232EA40A7F +:10254000A1479CA08547BCA0BCB01946D285138585 +:10255000440097E0F91FE78000DEBC209907BCA08B +:10256000BC3093E72700BCB08347540591C7785827 +:102570001C2393E707F81CA31946CE851385A400F6 +:1025800097E0F91FE78020DBBC20990793F7F70F4E +:1025900013F7F703050758A4BCA08347D404858B21 +:1025A00091E70347C40489476317F70078581C2351 +:1025B00093E707041CA34C247C588CB30345C40D3B +:1025C0009307A0F93CA47D151375F50FEF10403E5D +:1025D000B737002083A7873BB70680009843558F05 +:1025E00098C3D857719BD8D79700FA1FE780E0EDC2 +:1025F000EF10A07083471900858BE38B07E42285D9 +:10260000EFF0DFB6B1B5797122D406D626D24AD022 +:102610004ECE52CC56CA5AC85EC6034B05082A8411 +:1026200063060B12373A002013074A0E835A8700BD +:102630003A27B737002003C9370B8327C50D374525 +:102640000F00130505241307471F3347E502A18335 +:10265000C207C18393041B00930B204E568681460C +:102660008145B384F4023305A902B3897403B3D955 +:10267000E902EFB0E07237460F00130606248146E8 +:10268000B3879A02930400324E95B3F797028324DE +:10269000040AB3877703B3C75703C207C1833E95C4 +:1026A0002326A40AB3B5AA023385AA02EFB0406F6D +:1026B00093074A0EB385A44063F5A400CC43A695C6 +:1026C000898D584C2322B40A0345D407937687009A +:1026D000A1C61359190063E62507B3852541EF000C +:1026E000BEE7B737002083A707098297B7370020D6 +:1026F00023A8A73A83578408230C040AB2508507FD +:102700002314F408225492540259F249624AD24ADC +:10271000424BB24B456182809546E3FC66FB459B8C +:102720009307E003A308F40C58CCEF10AE99FD57C3 +:10273000A30EF4063946930500080145EFB0FFB03B +:102740004DB7DC4333892741CA9551BF0347C507BD +:102750008947E3F8E7F8B73400209387440E03294C +:10276000050A8A278327C40A37460F001306062462 +:10277000B335F50281469384440E3305F502EFB07C +:102780002062B305A9406375A900CC40CA95898D24 +:10279000B737002083C7370B2322B40A0345D40779 +:1027A000858363EDF5009D8DEF001EDB8355640886 +:1027B000034514089205EF009ECC25B7D840B30717 +:1027C000F740BE95D5B779714AD0373900209307C5 +:1027D000493C9C4F4ECE06D622D426D252CC56CA65 +:1027E0005AC85EC662C413970701B7390020634711 +:1027F000070283A7C93EFC5791C7B737002005479A +:102800002386E7DAB250225492540259F249624ABE +:10281000D24A424BB24B224C45618280B7370020EE +:10282000294503A4872E373A0020EF1020550327AF +:102830000A449304493CA947FCB05C57B73A0020CE +:10284000F59B5CD78347E40703A78A3B93F6F7071A +:102850001C4393F707F8D58F1CC3A380040093078C +:1028600000042302F93C8347940C23AA0400B5C753 +:102870008356440C835784086391F6068346740C90 +:102880008347A40B639BF6048347C40D0D46930650 +:1028900070E76389C70009469306B0FC6384C700EC +:1028A000930670FB0346840C8347340E9305204E39 +:1028B000B387C7021306D007B387C7020346240EA7 +:1028C0003306B602B2979387E7F8B697DCC883471A +:1028D000493C93E707022302F93C8327840983A636 +:1028E000C93E01465CC3DC429305F00F93E7170035 +:1028F000DCC2832744091CC70345C40D7D1513752D +:10290000F50FEF10401F03A6C93EF977FD17544697 +:102910000327840AF58F5CC60100010083A7C93E26 +:102920000966060790C7130600F8D0A0F8D3D4C7ED +:10293000A382040083A68A3BA3800400054798C3B2 +:102940009842370633001377F7E798C29842137717 +:10295000F7E71367071098C283260A449846518FF9 +:1029600098C613079005B8CB9700FA1FE780E0B52B +:102970008347493C858B6380071A9307F007A301BF +:10298000F40222852302093CEFF0BF958347040837 +:10299000EDCBB73A00208347C40D13874A0E835B03 +:1029A0008700032A47000D47938A4A0E6399E71A66 +:1029B00003A9C40137460F001306062481461305F8 +:1029C00090183385AB028145EFB0803D6368A91A4A +:1029D0003305A940C8CC8347A40B9DC30347140EFD +:1029E000D44C3307F70293070032330777031307FA +:1029F0000719B357F70263E5F618B387F640DCCC46 +:102A000083D7AA0037470F00130707249387471F70 +:102A1000B347F7020325C40D130C204E5E862181B7 +:102A20004205418181468145330985033359F902C5 +:102A3000B7370020330B750303C5370B058133050A +:102A4000E502EFB0E035130700324A953379EB0227 +:102A5000130B0B19DC4C3309890333497903335BBE +:102A6000EB024209135909014A952326A40ADA9771 +:102A70003E8763E4670163E44701338747412320CE +:102A8000E40A0347C4078D47631AF70439469305E0 +:102A900000080145EFB06FFB9305002513050010FA +:102AA00097D0F91FE780005A5C4C03566408232630 +:102AB000A40CED9B372506005CCCA304040C930604 +:102AC00014081206A2851305C59FEF00BEC55C4C15 +:102AD00093E787005CCC9147230EF406DC48230083 +:102AE000040895CB83A7C93E09673725060023A2B2 +:102AF000070698C71305A5C82382040097E0F91FAD +:102B0000E780E0C803A7C93E7C57FDFF014597E079 +:102B1000F91FE780C0C78347A40B850713F7F70F9A +:102B20008347040E230DE40A637EF710B7340020B8 +:102B30009387440EDC279384440EA9C7930770FA49 +:102B400037250020230CF40A13050504EF106EA3AB +:102B5000B7E700E03707000223A2E72065B103A929 +:102B6000C40137460F0009471306062481461305A2 +:102B70005003E388E7E413059004A1B5529989BD99 +:102B8000D296A5BD8347140ED440B387E7029A249A +:102B9000B387E7021307003293870719B3D7E70219 +:102BA0000327440A3E973A896364F7006364D700B9 +:102BB0003309D740B737002083A707098297B307A7 +:102BC000A9406374A900C840AA9737290600A5C385 +:102BD00092240347140E930600323307C7021307EB +:102BE00007193357D70263F4E70437450F0013057D +:102BF0000524B3B5A70203A4C93E2167814618C4C2 +:102C00003385A702EFB0C019060568D42254B2502C +:102C10009254F249624AD24A424BB24B224C1305BB +:102C2000697C0259456117E3F91F670043B6130534 +:102C3000697C97E0F91FE78080B583A7C93E094703 +:102C4000F8D7C9B622852254B25092540259F2499B +:102C5000624AD24A424BB24B224C45616FF0BF9A56 +:102C6000B737002083A7873B011122CC26CA4AC868 +:102C700006CE4EC652C456C25AC0984337063300D9 +:102C8000B73400201377F7E798C398432A8437397D +:102C900000201377F7E71367071098C33737002032 +:102CA000032707449305F00F1447D18E14C783A65A +:102CB000C43E13069005B0CA0326450990C70326F3 +:102CC0008509D0C35057759A50D70347E507137647 +:102CD000F7079843137707F8518F98C3DC420146F2 +:102CE000F99BDCC20345C50D930700042302F93CA0 +:102CF0007D151375F50FEF00106003A6C43EF9773C +:102D0000FD1754460327840AF58F5CC601000100B5 +:102D100083A7C43E09669304493C90C7130600F894 +:102D2000D0A00607F8D3D4C7A38204000547A38028 +:102D3000040098C397F0F91FE7802079EF00F07B3B +:102D40009C30858B638507120347C40DB73900207B +:102D50001309493C9387490EA30009008D469E271D +:102D60009389490E6311D7128324C90137460F0096 +:102D7000130606248146130590183385A702814562 +:102D8000EFB0000263E2A4123385A440232EA90011 +:102D90009307F007A301F4022285EFE07FFE0347CB +:102DA000C4078D47631EF7023946930500080145A5 +:102DB000EFB0AFC95C4C0356640837250600ED9BA5 +:102DC0005CCC930614081206A2851305C59FEF007C +:102DD0007E955C4C93E787005CCC9147230EF4060C +:102DE00083D7A90037470F00130707249387471F8E +:102DF000B347F7020325C40D130B204E83DA890075 +:102E0000218142054181814656868145B30465038F +:102E1000B3D4F402B7370020338AAA0203C5370BB4 +:102E200005813305E502EFA0B07713070032269540 +:102E3000B374EA02130A0A198327C90183A6490059 +:102E4000B3846403B3C45403335AEA02C204C18096 +:102E500026952326A40AD2973E8763E4470163E4BC +:102E6000D7003387D7402320E40A230004082285B3 +:102E70006244F240D2444249B249224A924A024B49 +:102E800005616FF04FF88324C90137460F0089466A +:102E9000130606246316D700814613055003F1BDBF +:102EA000814613059004D1BD83A74900BE94E9BDB6 +:102EB0005C4D797122D406D626D24AD04ECE52CC61 +:102EC00056CA5AC85EC662C466C2B98B2A84638772 +:102ED000073637390020832709098324450A373A02 +:102EE00000208297130A4A0E63E3A414B73A002025 +:102EF0009387CA0903CC7701898C8547935B1C00B3 +:102F0000035B8A00938ACA0963D297020325C40A25 +:102F100037460F0013060624B335AB02814633054E +:102F2000AB02EFA0F0675E95637B95108324C40D20 +:102F30001307003283470408A180C204C180B3860E +:102F40006403850793F7F70F2300F408832A4A00E8 +:102F500093860619B3D6E6020327040A3697BA8980 +:102F60006364D70063645701B3095741035AAA0049 +:102F700037450F0013050524130A4A1F334A45033A +:102F80008507930C204E5A8681462320340B8145B9 +:102F9000B38497023305AC0233879403335A470353 +:102FA000EFA0106037460F00130606248146B307D2 +:102FB0009B02930400325295B3F79702B3879703AD +:102FC000B3C76703C207C1833E952326A40AB3355E +:102FD000AB023305AB02EFA0B05C63EEA904B3898A +:102FE000A940835784082322340B0345D40785075F +:102FF0002314F408B385794163F57901B3857A41E7 +:10300000CE95EF006ED5832709098297B737002048 +:1030100023A8A73AB250225492540259F249624A64 +:10302000D24A424BB24B224C924C4561828083275C +:103030004A00BE9465BD3385AA40AA995DB729456B +:10304000EF00D053B73700209387473C2947F8B3A8 +:103050000347C407C947631AF70203570409835794 +:1030600084086314F7029304040B15469305A4081F +:10307000268597D0F91FE780002C2685EF40FF8F2B +:103080009147A307A408230EF406228597F0F91FA1 +:10309000E780A0868327C40A03578A0003264A00D4 +:1030A00086079387F7212324F40A834704088507BA +:1030B0002300F4088327C40DA183C207C183B3870B +:1030C000E7021307003293870719B3D7E7020327F4 +:1030D000040A3E97BA866364F7006364C700B306C8 +:1030E000C7408347040E2320D40AF1C78347CA0090 +:1030F000230D040A95C3930770FA37250020230C8B +:10310000F40A13050504EF00DEC7B7E700E0370750 +:10311000000223A2E720FDBD832709090324440AF6 +:103120008297636BA406098C37390020B729060003 +:1031300025C803C57A01B7440F00938404243305DE +:103140009502035A8A00814681455286EFA0504578 +:103150006378A404B33594020329C93EA16752865B +:103160002324F900814633059402EFA0704306053D +:1031700022542326A906B25092540259624AD24AD6 +:10318000424BB24B224C924C1385697CF24945610B +:1031900017D3F91F6700A35F83274A003E9461B7E6 +:1031A0001385697C97D0F91FE780605E8327C93E4D +:1031B0000947F8D785B5832709098324440A8297EC +:1031C00063E3A402898C85E422852254B250925490 +:1031D0000259F249624AD24A424BB24B224C924CBB +:1031E00045616FF0FFA783274A00BE94E1BF03C586 +:1031F0007A0137490F001309092433052503035ABF +:103200008A00814681455286EFA09039E3FEA4FAF8 +:10321000B3B52403B737002083A9C73EA167528600 +:1032200023A4F900814633852403EFA070370605F7 +:1032300023A6A90683A7C906F5FF79B70345D507D5 +:10324000EF004EE8FD57A30EF406E9B3797122D4DE +:103250002A841305050B06D626D24AD052CC4ECE70 +:1032600056CA5AC85EC662C437390020EF40EFF034 +:10327000832709098324040AA307A408373A0020F6 +:103280008297130A4A0E63EFA414B74B0F00938B77 +:103290000B243385A440B335750303568A00814659 +:1032A000130C204E33057503EFA0902F83270909D7 +:1032B00023000408AA898297B737002023A8A73AD9 +:1032C0000355AA008324C40DB73700201305451FFA +:1032D00033C5AB02A180C204C18003C9370B035BB5 +:1032E0008A00814681455A86B38A8403B3DAAA02EA +:1032F00033057903EFA0D02AB3079B029304003271 +:10330000AA9A5A8681468145B3F7970293541900C9 +:10331000B3878703B3C7670333857403C207C183C9 +:10332000BE9AEFA0F02756956372350D2326540BF5 +:103330000325C40A0329040A37460F00B335AB023C +:103340001306062481463305AB02EFA07025636E99 +:10335000A90A3305A9402322A40A0345D4079307E9 +:10336000F00F6304F500EF00EED50326440AB737EB +:10337000002003A5872F636E96088327C40D03578B +:103380008A00058EA183C207C183B387E7021307B2 +:1033900000329306D407A2859387071933D7E70233 +:1033A000EFF05DF20347D4079307F00F630FF700C8 +:1033B0005C4C05472300040893E76700A308040C4E +:1033C0002319E40C5CCC230EE406B2502254925430 +:1033D0000259F249624AD24A424BB24B224C014551 +:1033E0004561828083274A00BE9445B537153D006C +:1033F0005A868146130505908145EFA0701A3385E2 +:10340000A9402326A40A8D4425B783274A003E9964 +:1034100089B783274A003E968DB7B73706003737FE +:103420000020938707EB232CF72E8280011122CCFA +:10343000373400209307842626CA83A4470C4AC841 +:103440004EC652C456C206CE2A8981491304842628 +:10345000130A2500854AA1E493057025314597D0CC +:10346000F91FE78020BEAA840145A9CC8347190033 +:103470001946930529009CB01385240097D0F91FA5 +:10348000E78060EB8327440CB9E72322940C23A444 +:1034900004008347040C85072300F40C1DA098301A +:1034A000834719006305F700A68984446DB7194660 +:1034B000D2851385240097D0F91FE780C0F8E31563 +:1034C00055FF0545F2406244D2444249B249224A7E +:1034D000924A05618280E38C09FA23A4990045BFD2 +:1034E000011126CAB73400209387842622CC03A476 +:1034F000470C4AC84EC652C456C206CEAA890149D4 +:1035000093848426130A2500854A19E80145F24070 +:103510006244D2444249B249224A924A05618280B9 +:10352000183083C719006305F70022890044F1BFF2 +:103530001946D2851305240097D0F91FE780A0F023 +:10354000E31555FF1C446315090023A2F40C19A0D0 +:103550002324F900228597D0F91FE780A0BB83C7F9 +:10356000040C0545FD172380F40C55B7411122C406 +:10357000373400209307842603A5470C06C626C2CD +:103580001304842611E92322040C2300040CB24006 +:103590002244924441018280044597D0F91FE7807C +:1035A00060B72685C5B7B73700209387872623A243 +:1035B000070C2380070C8280B737002003A7C73E83 +:1035C000011122CC2EC632C406CE3C4B2A8435458E +:1035D00093E707083CCB5D27B736002083A7463B1F +:1035E0000947B24598C318302820220742052A9778 +:1035F00008202A97283062052A9798D758306820E3 +:10360000220742052A9748202A97683062052A97A0 +:10361000D8D718342824220742052A9708242A9745 +:10362000283462052A9798DB58346824220742051B +:103630002A9748242A97683462052A97D8DB98315C +:10364000A821220742052A9788212A97A8316205D6 +:103650002A9798CFD831E821220742052A97C82116 +:103660002A97E83162052A97D8CF9835A8252207EE +:1036700042052A9788252A97A83562052A9798D364 +:10368000D835E825220742052A97C825EC352A9720 +:10369000E2052E97D8D3D843759BD8C3D843136778 +:1036A0001700D8C398431367170098C3224683A70F +:1036B000463BD843058B25EF23A007009C4F0145CF +:1036C0001CA283A7463B9C4FA1831CB283A7463B09 +:1036D0009C4FC1833CA283A7463B9C4FE1833CB2F5 +:1036E00083A7463BD84F58A2D84F218358B2D84F12 +:1036F000418378A2D84F618378B2985318A6985323 +:10370000218318B69853418338A69853618338B6FD +:10371000D85358A6D853218358B6D853418378A696 +:10372000DC53E1837CB6F240624405618280010093 +:10373000BDBFB737002003A7C73E011106CE22CC7C +:103740002EC632C43C4B2A84354593E707083CCB50 +:1037500035252246B245228597F0F91FE780C0A1A2 +:10376000F2406244014505618280411106C6EFF0D6 +:10377000BFE4B240014541018280B737002083A7F2 +:10378000873B885B3D81620561858280B737002079 +:1037900083A7873BB706800037160180984313063E +:1037A00086EC558F98C39843B7060010558F98C381 +:1037B0001307001DD8DB373700200347070B93168C +:1037C0009701D18ED4D7D457370600821377F703E9 +:1037D0007D166607F18E558FD8D737070900130776 +:1037E000370898D38280B737002083A7873B9C5B3C +:1037F000C60713D5670163D60700136505C04205E8 +:1038000041814205418582809307E00363EEA7046E +:103810001307400299476367A704694795476363A5 +:10382000A70451479147636FA70241478D47636BD8 +:10383000A702314789476367A70229478547636322 +:10384000A70221478147636FA7001947F557636BAC +:10385000A7001147ED576367A7000947B95763737E +:10386000A700D9573E8582809D47EDBFBD57634E67 +:10387000F5045D578D476348E504715795476344E8 +:10388000E50479579D476340E504A547635DA002C1 +:103890000547AD476309E5020947B5476305E502FA +:1038A0000D47C5476301E5021147D547630DE500A4 +:1038B0001547ED476309E50019479307F0036314C3 +:1038C000E500930750023E8582808547EDBFB737FC +:1038D000002083A7873B3706CEFF7D169843757877 +:1038E0007D181377F7E71367070898C33737002069 +:1038F000032707441375F51F93F5F5071447F18E59 +:1039000014C7B736002083A6C63E23A8060423A406 +:103910000700904B1366F60390CB90433376060175 +:1039200090C3F04F137606E0498EF0CF239C070436 +:10393000239007065057759A50D79043137606F890 +:103940004D8E90C313068025F0D237360020130623 +:10395000463CA3020600A3000600054690C2904321 +:10396000B70533001376F6E790C390431376F6E776 +:103970001366061090C310474D8E10C713079005AD +:10398000B8CAD85337060400518FD8D32546F85209 +:1039900009C703D78705E37CE6FED853B706FCFFCB +:1039A000FD16758FD8D303D50706133545008280E1 +:1039B000B737002083A7C73B99CB944BD04B984295 +:1039C000518F98C294439C479842D98F9CC23736F6 +:1039D0000020B73700201306463C373800208548C2 +:1039E00083A7873B38268326C83E63101505884386 +:1039F000F578FD183375150188C3C846F977FD17AA +:103A0000E98FDCC6010001008326C83E8967AD0549 +:103A10009CC6930700F85CA2939725009305E709DD +:103A2000BE958605ECD2C8C68280F578137E250047 +:103A30001383F8FF63070E0883A8070089050D4E5E +:103A4000B3F868000963B3E8680023A01701D178D0 +:103A50001307E70B8E05FD18631FC50388433375F5 +:103A6000150191683365150188C3C846F977FD17BC +:103A7000E98FDCC6010001008327C83E930600F8E9 +:103A80009385750D23A4670054A28605BA95860513 +:103A9000ECD3C8C7828088433375150188C3C846F4 +:103AA000F977FD17E98FDCC6010001008327C83EC6 +:103AB000930600F89385A50423A4670054A28E05FD +:103AC000F1B788438568337565003365150188C390 +:103AD000C846F977FD17E98FDCC60100010083278E +:103AE000C83E8966A90594C7930600F854A28E05BE +:103AF0001307E70961BFB737002083A7C73B89CF0A +:103B0000D44303A8870098423367070198C2D4477B +:103B1000DC4B9842D98F9CC2373700200348073CC2 +:103B2000B7370020373700209376250083A7873BDF +:103B3000137818001307473CB5C2944375757D157B +:103B4000E98E0965C98E94C3B70609009386660895 +:103B500094D3B7263008C516D4CBB7160300938686 +:103B6000966194CF8D669386E68D94D7B7660001F3 +:103B700093860631D4D3B7A63F0063140800B7A6D6 +:103B800034009386F64D9E0594CB938545360CCB39 +:103B900019C2060610CB230207008280B70609006F +:103BA0009386360894D3B726100893861690D4CB04 +:103BB000B71603009386466294CF8D669386E68B94 +:103BC00094D7B766000193860631D4D36306080202 +:103BD000B7A63F009386E62C94CBF5761388F6FFC4 +:103BE000944385489505B3F60601631C150194C3FB +:103BF0008E059385C50361BFB72632009386062DD7 +:103C0000E1BF0565C98E94C39205E5B709C9372799 +:103C100002408347870493E727002304F7048E05B7 +:103C2000B73700202387B73CB737002083A7873BEF +:103C30002206D18DC98DECD3F853370688FF7D1647 +:103C4000718F37062800518FF8D3F8531367470058 +:103C5000F8D3984391C6B7060020558F98C3828049 +:103C6000B7060020F98E9843370600E07D16718F65 +:103C7000EDB7411122C4373400209307443C06C6F7 +:103C80009827A1471304443C6317F70237370020F5 +:103C90000347073FB737002093870741058BB033B1 +:103CA000B42329C7C84339C10C310905EF10A00F4F +:103CB00019C185471CB418249947631AF700B73710 +:103CC000002083A7872EBC378DC7EFC02FBE1824D6 +:103CD0009D476310F702B737002083A7C72FFC3337 +:103CE00089CB2244B24041016F309FF681450145A6 +:103CF00075BFB240224441018280373700208327BC +:103D0000C73EB44BE19AB4CB944393E6860094C388 +:103D10009C438D83858B89C7010001000100010050 +:103D2000B737002083A6873B9C4293F7F7E793E7DA +:103D300007089CC2B737002003A60744B706CEFF8A +:103D4000FD161C46F58F1CC68327C73E23A8070413 +:103D5000B737002083A7C73B99CBD44390479842FD +:103D6000518F98C2944BDC4B9842D98F9CC2B73785 +:103D700000209387473CA3830700828041114AC0FB +:103D8000B747024006C622C426C203A9C72023A6FD +:103D900007200F100000B737002083A7C73E9C43C1 +:103DA0008D8BB9CB373400209307443CFC330D474F +:103DB000AA841304443C631AF700B737002083A792 +:103DC0000740014681454545829719476390E404C1 +:103DD0001C3491C71C2463949700A30404007C3016 +:103DE00021476315F700930780101EA4B737002002 +:103DF000238607DAEFF07FF0B2402244B747024053 +:103E000023A6272192440249410182809D4763995C +:103E1000F4001C34E9D718248D47E312F7FC75BF72 +:103E200074306309D70078306386E7007C3021471F +:103E3000E31EF7FA1C34DDFB7C301CA485471CB460 +:103E400075B7011122CC2A8411452EC632C436C260 +:103E500006CEEFF0BFF2B737002083A7873BB70845 +:103E60003300D857719B13671700D8D73737002016 +:103E70000325C73E1307000A78D198431377F7E765 +:103E800098C398431377F7E71367071098C337373A +:103E9000002003270744B2459246032887002246A4 +:103EA00033681801232407011308A00523280505FA +:103EB000D1C54C5713640404F5994CD71377F40714 +:103EC0008043137404F8598C3747767180C3130705 +:103ED000971298C7375755001307575537340020A6 +:103EE000D8C39307443C9853B6851304443C38D94F +:103EF00023810700A38107005841799B58C11147CE +:103F00000145F8B397E0F91FE780C066B737002096 +:103F100003A7C73B11C7544318479C42D98F9CC283 +:103F20003C30858B81CBB7370020938787269A2733 +:103F300005079AA7F2406244056182804C57F599C3 +:103F40004CD71377F4078043137404F8598C37C7A0 +:103F5000898E80C3130767EDADBFB737002023AE4E +:103F6000A73A19C9584154491C43D58F1CC3184955 +:103F700014451C43D58F1CC38280011126CA4AC830 +:103F80004EC6C1643709006AB70900AC22CC52C4DE +:103F900006CE0544FD141309690E9389E90C130A32 +:103FA000000205E49305000F4145EFF01DD7B7B7B8 +:103FB000006A4205938767CE5D8DF2406244D24429 +:103FC0004249B249224A05618280A6850145EFF047 +:103FD0001DD79317850013F7071033E5270119C381 +:103FE00033E5370181470147E145B356F5008507C1 +:103FF0003356F500858A058A6307D60005071377CF +:10400000F70F63E4E504E39247FF81471306F003EB +:10401000ED463357F5001377F70305CB6307C70267 +:104020008507E398D7FE135785009377F50F13772D +:10403000F70FE394E7F8135705011377F70FE39EA3 +:10404000E7F613578501E39AE7F605041374F40FB6 +:1040500089BF011122CC373400201304443C78304E +:1040600006CE26CA4AC84EC652C456C29147638D70 +:10407000E70A7830638AE70AB737002003A7473B8F +:10408000B7440240938704306310F70A03AAC420A0 +:1040900023A604200F1000003545EFF03FCEB73ABD +:1040A000002083A78A3BF576FD169843B739002098 +:1040B00037390020758F8566558F98C39843B706AA +:1040C00033001377F7E798C398431377F7E713673D +:1040D000071098C303A709441C47D58F1CC7832723 +:1040E000C93E1307D005B8CBEF206021EF20F07454 +:1040F000EF20C008EF20C01103A78A3B1C4393F7B1 +:10410000F7E793E707081CC383A609443707CEFFE8 +:104110007D179C46F98F9CC68327C93E23A80704B8 +:10412000A303040023A64421F2406244D24442493E +:10413000B249224A924A05618280B7370020238023 +:10414000073CB737002023AE073AB74702409386B3 +:10415000073037370020232AD73A9386072037378E +:1041600000202326D73EB7560240373700202320B1 +:10417000D74493870710373700204111232CF73A93 +:10418000B737002006C69387473C0547F8B3373753 +:1041900000200327C709D8D31307071198D309288C +:1041A000EF10105DEFF08FDEB24041016FF07FEA5B +:1041B000B737002083A7C73E1307C0089306C00681 +:1041C000D8CBD4CFD8D31306C003D0D7D8DBD0DF19 +:1041D000F8C3373700200327873EF4C7F8DB416771 +:1041E0007D1798C73D673D07D8C78280B737002045 +:1041F0003735002003A707441306053FB7370020D3 +:1042000083A6873B1C3213F8F707D9C55C4290425E +:10421000137606F83366060190C213F6150001CA3C +:1042200093F5050341466386C506938787C15057BA +:104230004168130808A01366260050D733D6070339 +:10424000B70810FEFD18B3F707037D8A93154601E2 +:104250007043337616014D8E70C31306A00FB70559 +:10426000FCFFAA07B3D7C70270436D8EBA07B983A4 +:10427000D18F7CC38347053F898B99CB9C4293F7B1 +:10428000F70713E707049C4293F707F8D98F9CC2FE +:1042900082809387078361BF5C57F59B5CD79C4204 +:1042A00093F707F8B3E707019CC2E9B74111B737A5 +:1042B000002006C6238F0740EFF03FA4B24001451F +:1042C00041018280411122C4373400201304443C50 +:1042D0003C3006C6858B85C3EFF05FFDB737002005 +:1042E00003A30740A301040001468145054522447C +:1042F000B24041010283B737002083A7C73EFC5379 +:1043000099EBEFF0BFFAB737002003A3074001464F +:1043100081454545E9BF7C300D476317F700B73746 +:10432000002005472386E7DAB2402244410182801B +:10433000411126C2B73400204AC006C622C41387E2 +:10434000443C3C2337390020858BEDCFB737002024 +:1043500003A707449384443C238104005C5737340B +:1043600000200345043F8583858B1304043FB1CBB4 +:10437000504093760503C145930786C16394B60008 +:1043800093070683C165938505A0B3D6B7023708A6 +:1043900010FE7D18B3F7B702FD8A139646017443E9 +:1043A000B3F60601D18E74C39306A00F3706FCFF47 +:1043B000AA07B3D7D7027443F18EBA07B983D58F52 +:1043C0007CC34C2C118501460D89EFF0CFF23745A7 +:1043D00006001305E54797C0F91FE780403B032718 +:1043E000C93EF977FD175447F58F5CC70F100000E1 +:1043F0008327C93E096798C7130700F8D8A0373745 +:1044000000200326873B184231830D8B05E31307F9 +:10441000601903230401F8D3D4C70146814505453B +:104420002244B240924402494101028318420946A3 +:1044300031830D8B6315C7001307E043D9BF130702 +:10444000E01BC1BF8327C93EFC5399EBEFF01FE689 +:10445000B737002003A30740014681454545C9B74A +:104460007C330D476317F700B737002005472386D5 +:10447000E7DAB240224492440249410182800111AC +:1044800022CC3734002006CE26CA1307443C3C33E6 +:10449000858BC9C3EFF09FE11304443C485081452C +:1044A00081461306F100A301040097E0F91FE7809D +:1044B000600493158501B7340020E185938404419D +:1044C00089ED5C509306F00F98236308D7009C3069 +:1044D0006385D7006303F7008945B737002003875A +:1044E000073F634507005850948714A39387073FFD +:1044F0009C4B505093F5F50F09458297DC24898B2E +:1045000089C788288545EFE05DEFF2406244D244D8 +:1045100005618280B737002083A7C73EFC5381EF37 +:10452000EFF0DFD8B737002083A707400146814569 +:1045300049458297D9BF7C330D47E318F7FCB7375D +:10454000002005472386E7DAC9B7011126CAB73428 +:10455000002006CE22CC4AC84EC652C456C213848E +:10456000043FAE89B28A2A8AEFF02FF908308145DC +:1045700037390020EFF09FC703C5043F4C2C01469C +:1045800011850D89EFF02FD7B737002083A7873B20 +:1045900018448326C93EB734002098C758443706CC +:1045A00033001384443CD8C3D842D2851367170024 +:1045B000D8C298431377F7E798C398431377F7E780 +:1045C0001367071098C3B737002003A707440850A4 +:1045D0001C470905D18F1CC793079005BCCA230F40 +:1045E00055FFA30F35FF4E8697C0F91FE780A0D473 +:1045F000B737002093870741F82713674700F8A7CC +:104600008327C93E096723A2070698C7230204002F +:10461000130700042382E43CA3020400A300040067 +:10462000F2406244054798C3D2444249B249224A03 +:10463000924A05618280397126DA5AD05ECE06DE52 +:1046400022DC4AD84ED652D456D293070008AA8B01 +:10465000AE84328B6319F602373400203D491304CF +:10466000043F97E0F91FE780A059E37CA9FE3C2CAA +:104670009607C117E3E7A7FEB737002083A7C73E19 +:104680001307000AF8D3373A002003278A3BB73ACA +:10469000002013840A3F5C578145B7390020F19B05 +:1046A00093E717005CD7083037390020EFF01FB4CC +:1046B00083278A3B3706330098431377F7E798C37D +:1046C00098431377F7E71367071098C3373700202D +:1046D000832607449846518F98C603A7C93E930680 +:1046E000A00534CB144494C7544437340020130439 +:1046F000443CD4C35C4393E717005CC313070941F0 +:104700007C271309094193E727007CA79307FBFF48 +:1047100093F7F70F05476366F70A08502686DE858C +:104720002300650104B1090597C0F91FE780A0C007 +:10473000185083A7C93E93950401C181B8DB2301BA +:1047400004000D47A301040078B0130700086317A5 +:10475000EB08F8537DFFB737002083A707092EC663 +:10476000829703278900B2456363E506198D1C50C3 +:10477000B70480000D811387F42F6205598D88C31B +:1047800003C50A3F11850D89EFF08FA283278A3B6D +:104790009843458F98C3D857719BD8D783A7C93EF4 +:1047A000A3020400A3000400094798C3F250625416 +:1047B000D2544259B259225A925A025BF24B2161A9 +:1047C000828093070008E315FBF6894495B7B73755 +:1047D000002083A7870E998F3E9551BF03C50A3FDE +:1047E00011850D89EFF0CF9C83278A3BB7068000A7 +:1047F000376506009843130585C8558F98C3D85769 +:10480000719BD8D797C0F91FE78060F883A7C93E8E +:1048100023060900A3020400A3000400094798C36B +:104820008347C90093F7F70FE5DF49B7B737002093 +:1048300083C7C7DA797106D622D426D24AD04ECEA3 +:1048400052CC56CA5AC893F7F70F63910712AA843D +:104850003545EFF0AFD213067100994513050010EE +:1048600037340020EFF06DF0373900201304C4090D +:1048700061E519469305F00F1305710097C0F91F04 +:10488000E78000C485476309F50A89475C801946BB +:104890009305490B1305110097C0F91FE780A0A9E4 +:1048A00048283734002093090441EFE0FFF503C79F +:1048B000F900B73700209387073F98B303A7490152 +:1048C00037390020C88698C783270909797AB73A0B +:1048D00000208297373B002023ACA9001304044139 +:1048E000B73900207D1A938A4A3C130B4B0E108077 +:1048F000B9450A85EFF03FD45C2409476311F706F8 +:10490000188085470144631EF700373600201306E0 +:10491000C642994513050010EFF0DD8E0545EFF016 +:10492000BD892285B250225492540259F249624AFA +:10493000D24A424B45618280854719469305490B0F +:10494000130511005C8097C0F91FE780C09EB7E592 +:10495000060019469385C5531305710035BF89C8F4 +:10496000FD1493F4F40F89E423060400054455BFB5 +:104970001480094783A7C93E639BE604D847B376F2 +:104980004701D4C70100010083A7C93E896694C7C7 +:10499000930600F82382DA009306E06EF4D3D8C7BA +:1049A00003A7C93E7C53FDFF832709098297184C52 +:1049B0006363E504198DA167938707D0E3F9A7F234 +:1049C000EFF0CDBC83270909829708CC0DB7D447F7 +:1049D00033F74601D8C70100010083A7C93E096724 +:1049E00098C7130700F82382EA0005671307E7EB6F +:1049F000F8D3D4C775B783274B00998F3E9565BF11 +:104A00000111300099451305001006CEEFF0EDD5E9 +:104A10000DED19469305F00F280097C0F91FE780A8 +:104A200020AA85476303F50219469305F00F280075 +:104A300097C0F91FE780C096300099451305001014 +:104A4000EFF04DFC0545EFF02DF7F2400561828057 +:104A50001C49638C0712411126C206C622C44AC0F3 +:104A60001C21AA8493F7070481C75C410945C5CF7F +:104A7000373900201306000281451305093F97C00E +:104A8000F91FE780E09113060002A6851305093F90 +:104A900097C0F91FE780208A9307093F9C3F1304C2 +:104AA000093F81E7930780021CBC3C2C99E3A14796 +:104AB0003CAC3C3C99E3C5473CBC5C2C99E3ED57CE +:104AC0005CAC5C3C99E3ED575CBC9C2093F707041D +:104AD00099CB5C4037B724001307F7E9636BF70401 +:104AE000930750021CB0B734002093870441C84399 +:104AF0009384044109C597B0F91FE780A0618347FB +:104B0000093F23A20400858B91CB483C9305900478 +:104B1000090597B0F91FE780E052C8C01C30014575 +:104B2000FCB41C44DCC8B240224492440249410116 +:104B30008280370725009306F74863EDF600376754 +:104B4000DBFF13070793BA971307007DB3D7E7027C +:104B5000FD1749BF130707496395E70093076002F4 +:104B600051B737D725001307F777636DF70037671D +:104B7000DBFF13070793BA971307007DB3D7E7024C +:104B8000F9178DB793077002B1BF0545828079711F +:104B90004AD0373900209307093F9C4706D622D4D4 +:104BA00026D24ECE52CC56CA5AC85EC662C466C21F +:104BB0006AC06388071E373400209307443CFC33E7 +:104BC00015472A8C1304443C0945630AF7180D4520 +:104BD000373B0020AE84B28BB68CEFF02F9A930750 +:104BE0000B41DC27130D093F93090B41898B8DC7BE +:104BF0003D4A97E0F91FE780A000E37CAAFE8347C7 +:104C0000AD019607C117E3E6A7FEB737002083A7DB +:104C1000C73E1307000AF8D3B73A002003A78A3B20 +:104C20005C57F19B93E717005CD783C7C900898B5A +:104C300099E78347093F93F70704639007140345F7 +:104C40001D008145EFF08FDA83A78A3B37063300DA +:104C5000373A002098431377F7E798C398431377C0 +:104C6000F7E71367071098C33737002083260744F8 +:104C70009846518F98C60327CA3E9306A00534CBA9 +:104C800083268D0094C78326CD00D4C38347093F74 +:104C900093F617005C43F99BD58F5CC383C7E9008B +:104CA00023087B41A380990193E727002387F9001C +:104CB000085063080C0C2300750104B12686E285B8 +:104CC000090597B0F91FE78000671C500327CA3E0B +:104CD0003CDB23010400A30104008D477CB083C7A3 +:104CE000C900898B9DC77C53FDFFB737002083A780 +:104CF0000709829703A789006369E508198D1C508D +:104D0000890493F4F40F84B30D81A69723800700E0 +:104D100088B30345093FA68511850D89EFE05FC97A +:104D20008347093F858BADCB374506001305053317 +:104D300097C0F91FE780A0A583A78A3BB70680002C +:104D400001459843558F98C3D857719BD8D783276F +:104D5000CA3EA3020400A3000400094798C3B2504E +:104D6000225492540259F249624AD24A424BB24BFF +:104D7000224C924C024D45618280894503254D00AD +:104D8000D1B523207501814489B7B737002083A7A7 +:104D9000870E998F3E95A5B7374506001305452C1C +:104DA00041BF05456DBF397156D2B747024006DE97 +:104DB00022DC26DA4AD84ED652D45AD05ECE62CC05 +:104DC00083AAC72023A607200F100000B7340020B5 +:104DD0001387043F184705E323A657210545F250E2 +:104DE0006254D2544259B259225A925A025BF24B3F +:104DF000624C21618280373700200327073109C7C1 +:104E000023A657210945E1BF83C7043F328C138A8B +:104E1000043F858BB68B2E862A89B9CB3734002088 +:104E200093070441DC431304044189EF0345DA018D +:104E30002EC693059004090597B0F91FE7808020DE +:104E4000324648C05C4099E7B747024023A6572145 +:104E50000D4571B7382098A35C40630A090421CA44 +:104E600090B34840CA85090597B0F91FE780A04C68 +:104E7000373B002093074B3CFC33154713094B3C51 +:104E8000630AF7008347890019476385E7000D47E8 +:104E90006392E7028347990089E793078010231400 +:104EA000F900B747024023A6572101450DBFA38053 +:104EB00007007DBFB739002083A7C93E98430D8BFB +:104EC00005C737370020230607DAB84B619BB8CBFC +:104ED00098431367870098C39C438D83858B89C74C +:104EE000010001000100010083A7C93E09673734B2 +:104EF000002023A2070698C7230209009307044154 +:104F0000DC2713040441918B91E783C5043F93F799 +:104F10000504F1EF03451A008145EFF02FAD03C5FD +:104F2000043F8345CA01014611850D89EFE0BFBCEE +:104F3000373700208327873B83268A0094C7832640 +:104F4000CA00D4C383C7043F83A6C93EBA8413F6FC +:104F50001700DC42F99BD18FDCC25C40A3018401C5 +:104F600023017401BCDA7C2493E747007CA49307F7 +:104F700000042302FB3CA147A303F900B73700203C +:104F800083A7870C99C7082813060064C145EFE082 +:104F9000ADE483A7C93EDC43858BADC3375506001E +:104FA0001305252497B0F91FE780607E03A7843B93 +:104FB000B70633001C4393F7F7E71CC31C4393F772 +:104FC000F7E793E707101CC3B737002003A7074490 +:104FD0001C47D58F1CC783A7C93E13079005B8CBC4 +:104FE000A3020900A3000900054798C35DBD93F51E +:104FF000050393E5150003254A0005B7375506005C +:105000001305650045B7797122D43734002006D6E0 +:1050100026D24AD04ECE1307443C1C33858B638086 +:10502000071E1304443CB7340020A3070100832962 +:105030004402A3000400EFF06FA793870441DC272C +:105040009384044137390020918B6389071483C707 +:105050001900CE979823930700086318F700834739 +:10506000093F93E787002308F93E5C4C0D47637CBA +:10507000F70CF1175CCC5C4C984463ECE70C33877D +:10508000E74083C71900D424CE979C33E206E1861B +:105090008E0763DF060C63F4E70C1D8F9306000296 +:1050A00063E8E600584C636FF70AB307F7409CC407 +:1050B00088288945EFE06DB48347093FA18BF1CB88 +:1050C000B737002083A6C73E9307800C1307F00F65 +:1050D000FCD21C5037063300014598C3230104005D +:1050E000B7370020A301040003A7873BA3020400F5 +:1050F000230204001C4393F7F7E71CC31C4393F7F8 +:10510000F7E793E707101CC3B737002003A707444E +:105110008345093F1C4791858D89D18F1CC7930713 +:10512000A005BCCA054697D0F91FE780A044834775 +:10513000093FB420B030DD9B2308F93E814501458D +:10514000EFF07FC675A0373700200327870EBA9788 +:105150000DB7B736002083A6860EB6970DB73387F6 +:10516000E7402DBFB736002083A6860E369735BFA1 +:10517000584C636AF700B307F7409CC4DC2493E7FC +:105180000708DCA435B7B736002083A6860E36970D +:10519000DDB783C71900F917A380F900485081468D +:1051A00081451306F10097D0F91FE780A0345C50C9 +:1051B000931585019306F00F9823E1856309D700C5 +:1051C000BC306386D7006304F70093E525008307AE +:1051D000093F63C6070081E59C872380F900130916 +:1051E000093F83270901505093F5F50F0D4582972C +:1051F000B250225492540259F24945618280B73725 +:10520000002083A7C73EFC539DE3EFF02F8AB737FA +:10521000002083A7070D89C78545130510088297CD +:10522000B737002093870741B423B03301BF7C33E5 +:105230002147E31FF7FAB737002005472386E7DA4F +:1052400045BF797122D4373400208347443C06D6C9 +:1052500026D24AD04ECE52CC858B638F072093073F +:10526000443C83A9470281461306F10081454E85DF +:105270002302043CA307010097D0F91FE780802791 +:10528000131A8501B7340020135A8A411304443C91 +:1052900093840441631E0A00BC309306F00F6389B7 +:1052A000D700585018236305D7006303F700094A55 +:1052B000373900208307093F63C6071263160A12B5 +:1052C0009C872380F900DC24918BBDCB5C4C0D477F +:1052D000637AF714F1175CCC5C4C984463EAE714EA +:1052E0003387E74083C71900D424CE979C33E20666 +:1052F000E1868E0763DD061463F2E7141D8F9306C3 +:10530000000263E8E600584C636DF712B307F740FC +:105310009CC488288945EFE04D8E83C719003387E8 +:10532000F9001423130700086394E6141C501307B4 +:10533000F00F98C38347093F93E787002308F93E9E +:10534000B737002003A707445C578583858BB1C31B +:105350009307093FDC43C165938505A0B3D6B70227 +:10536000370510FE7D15B3F7B702FD8A1396460187 +:105370007443E98ED18E74C39306A00F3706FCFFE9 +:10538000AA07B3D7D7027443F18EBA07B983D58F72 +:105390007CC3DC400345093F8C3311850D89EFE068 +:1053A0002FE1375506001305254C97B0F91FE7800C +:1053B000003EB737002083A7873BB706800098439D +:1053C000558F98C3D857719BD8D78347093FA18B76 +:1053D000B1E31309093F83270901505081450D4569 +:1053E00082970DA8E3010AEEEFE03F911309093F10 +:1053F0005050832709010D459375FA0F8297C840D5 +:10540000B420B03001C50C31090519A08145014512 +:10541000EFF07F99B250225492540259F249624AF5 +:1054200045618280373700200327870EBA975DB524 +:10543000B736002083A6860EB6975DB53387E74062 +:105440007DBDB736002083A6860E3697C1B5584C71 +:10545000636AF700B307F7409CC4DC2493E70708AE +:10546000DCA445BDB736002083A6860E3697DDB78F +:10547000F917A380F900E9B5B737002083A7C73E25 +:10548000FC5385E7EFE09FE2B737002083A7070DC5 +:1054900089C78945130510088297B737002093877D +:1054A0000741C843B033B423B1BF1304443C7C303C +:1054B0002147E311F7F6B737002005472386E7DADF +:1054C00091BF4111B737002006C622C49387473CDD +:1054D0009833058B1DC7A3800700EFE03FDDB7378A +:1054E000002003C7073F3E84218B29E39387073FB2 +:1054F00003A307010146814511452244B240410101 +:105500000283B737002083A7C73EFC53A1EBB73710 +:10551000002003C7073F3E84218B09EB9387073F99 +:1055200003A30701014681455145C1BFB73700209C +:1055300093870741C843B033B42311CD0C3109051B +:10554000EFF07F868347043FDD9B2308F43EB240A3 +:1055500022444101828081450145DDB7B7370020F3 +:1055600005472386E7DAE5B7411126C2B74702406F +:1055700006C622C483A4C72023A607200F1000005C +:105580003734002093070441C843238707001304DE +:10559000044109C597B0F91FE780C0B7B7370020AD +:1055A0001387473C1837232204009387473C19C7C9 +:1055B000942721476394E600A3840700F8339946B3 +:1055C0006386E600F8339D466396E600F83398A7B5 +:1055D000054798B7EFE06FF20828B7370020C145BC +:1055E000238607DAEFE04DA7B2402244B7470240D6 +:1055F00023A697200145924441018280411126C291 +:10560000B734002006C622C44AC0EFF0FFF5138964 +:1056100004418347F900373400201304043F1CB0D1 +:105620000345090183274901A145938404411CC412 +:10563000EFE08DA2034509019145EFE0EDA183471D +:10564000C900898B95C31C4801468145130520027A +:105650008297224423860400B2409244024989453D +:10566000014541016FE04DB7DC24918BFDD31C480F +:105670000146814513054002E1BF797126D2B73456 +:10568000002006D622D44AD04ECE52CC56CA5AC892 +:105690005EC662C4138704415C27898B6387071049 +:1056A000373400209307443CFC338D461304443CBC +:1056B0006391F602082B91452254B250925402593C +:1056C000F249624AD24A424BB24B224C45616FD0FA +:1056D000DDD23545797A93840441EFE02FEAA14980 +:1056E000373B0020373900207D1A896B13060008EC +:1056F00081450145856AEFE01FF4130C00F8938A99 +:105700002AF93C20858B8DE78327C93EFC53F5FBA6 +:10571000FD19E39D09FC2254B25092540259F249FA +:10572000624AD24A424BB24B224C45616FF01FEDA8 +:1057300003450B3F01469305F00F11850D892301A9 +:105740000400EFE04FBB83450B3F1306F00F054508 +:1057500091858D8997D0F91FE780C0E13C30858B1A +:1057600081CFA3010400EFE07FB4DC2485458828C5 +:1057700093E70708DCA489B7EFE05FB38327C93E4E +:10578000D847B3764701D4C7010001008327C93E3B +:1057900023A477012302840123A25707D8C78327B4 +:1057A000C93EFC53B5D30100DDBFB2502254925420 +:1057B0000259F249624AD24A424BB24B224C4561ED +:1057C0008280411122C406C693F715002E84B1C30E +:1057D000B737002093870741D827098B0DC7D827F3 +:1057E000882B1306000593178701E18763DA07000A +:1057F000B737002003C697409307000A3306F60226 +:105800009145EFD07DDD13451400B24022444101A3 +:10581000828093F72500A9C3B737002093870741FB +:10582000D827118B1DC7D827882B1306000A93177A +:105830008701E18763DC0700B737002003C6974084 +:105840009307000A3306F60213068602A145EFD03D +:10585000BDD81345240055BF93F7450091C7EFF01D +:10586000DFE11345440055B793F7850089CFB7377B +:10587000002093870741DC27918B99C3EFF01FD855 +:105880001345840059B793F705010145BDDFEFE0EB +:10589000EDCFB73700209387473CFC332147631B8C +:1058A000F700B737002003C5074213060064C1455F +:1058B000EFD09DD21345040189BFB737002083A7DD +:1058C00007311971CED686DEA2DCA6DACAD8D2D4C8 +:1058D000D6D2DAD0DECEE2CCE6CAEAC8EEC6854938 +:1058E0006399072AB73700201387073F18473EC63A +:1058F0001389073F8549630E0728B73A002093872D +:105900004A3CFC33194793844A3C89496303F7288E +:10591000FC301D47630FF726FC302147630BF72649 +:105920009C34639807262A8A37340020EFE0EFBCC6 +:1059300093070441F83723860700DC4BB739002072 +:105940009385490B19462324F90013055102954705 +:10595000A300E9002302F10297B0F91FE780A09DA0 +:10596000EFE0AFE1935785002309F102935705015A +:10597000A309F10283479901A308A1026181A30A47 +:10598000F1028357A901230AA10213040441231B36 +:10599000F10283274901373B00203EDC8347890120 +:1059A000230EF102B737002003C5070BEFD0DFE568 +:1059B000A30EA1024ECA814963040A0283270B0980 +:1059C000829713175A003A95B73700202A8A83A77F +:1059D000870E6364E5006364F500330AF54085498A +:1059E00083270B09373C0020B73C00208297832790 +:1059F000CC3E985008CC1546B8DBE9454810EFE09E +:105A0000DFB4F977FD173ECC938C4C0EA1679387DA +:105A100007D0B73D00203ECEDC30858B6380071C6D +:105A2000A382040097D0F91FE78020AA83C74A3CCD +:105A3000858B6380071A03AD44029C508146130690 +:105A4000310281456A853EC8A301010223820A3CD6 +:105A500097D0F91FE78000AAAA8B631C051683461E +:105A60002D0005476397E614625763070718C2477E +:105A7000194693053D001385970097B0F91FE780FD +:105A8000808BB247E94503C5073F11850D89EFD0EB +:105A90003FF2B737002083A7873BB70680009843C3 +:105AA000558F98C3D857719BD8D797D0F91FE780E7 +:105AB000C0A19C30858B638E0710A38004002382D5 +:105AC0000A3C130D400601007D1DE31E0DFE032759 +:105AD000CC3EE2475047B376F60054C70F100000A3 +:105AE0000327CC3EB7370020896683A5873B14C7C0 +:105AF000930600F8D4A09441B1828D8A639B06126C +:105B00009306601974D350C797D0F91FE780E09BC4 +:105B100003C74A3C058B55CFD85023820A3C142337 +:105B200019476398E60A03270B09029708C4EFF0A8 +:105B3000BFA3425737350020894593568700034756 +:105B400041031305E5B5A30009006207558F23241F +:105B5000E9001147A306040058A4EFD0FDE7832510 +:105B60004901A308040081461306000233D7A501AA +:105B7000058B09C7850B93FBFB0F8546050DE317C6 +:105B8000CDFE99C2A3087401082889458149EFD048 +:105B9000DD86F65066544E85D6544659B659265A77 +:105BA000965A065BF64B664CD64C464DB64D09618F +:105BB00082800946639FC600D247194613059D009F +:105BC0009385470B97B0F91FE780E0870547E30D02 +:105BD000E5E81546E9454810EFE03F97638B090675 +:105BE00083270B098297636245073305454163426A +:105BF0000506EFF07F9771BFEFE02F90034531026C +:105C0000FD5793854D40591562056185232AF9009A +:105C100097D0F91FE780A0A513854D40EF10FFD561 +:105C2000914763F6A700832749013EDC5DB77C34CA +:105C3000EDBF94418945B1828D8A6395B600930684 +:105C4000E043C9B59306E01B75BD3305AA40E342A6 +:105C500005FA83270B098297184C6362E502198DB8 +:105C6000F247E3FBA7DAEFE06D9283270B098297F7 +:105C700008CC1546E9454810EFE03F8D41BB83A7AE +:105C80004C00998F3E95E9BF011126CAB734002018 +:105C90009384443CBC204AC806CE3739002022CC2D +:105CA0004EC652C4858B1309094163890716B7395B +:105CB000002003C5093F01469305000211850D89A7 +:105CC00023810400EFD03FE383C5093F1306F00FA3 +:105CD000054591858D8997D0F91FE780A089BC3053 +:105CE000858B638D0712C850A3810400814601464D +:105CF00081452381040097C0F91FE780A07F2A8A8D +:105D0000631E0510C050954738206319F710B7354A +:105D1000002019469385450B1305940097A0F91FA1 +:105D2000E78060728547631BF50E9C5019478145DB +:105D300098C303C5093F11850D89EFD07FC783C57F +:105D4000093F01460D4591858D8997D0F91FE78060 +:105D50006082BC20858BF9C3B737002083A7070971 +:105D60002381040082972324A900EFF0EFFF3C3841 +:105D70001387093FA30007001CBF5C28A306090086 +:105D800001463CAF5C389389093F930500023CBF54 +:105D900014287C34A206DD8E1C38C207DD8E3C2818 +:105DA000E207D58F1CC774387C28A206DD8E1C2C18 +:105DB000C207DD8E1C3CA3080900E207D58F5CCB2F +:105DC0000147B3D6E700858A89C6050A137AFA0F18 +:105DD00005460507E317B7FE19C2A30849013C2C85 +:105DE0003735002093053400238CF9001946894784 +:105DF0001305C5422306F90097A0F91FE780A053B9 +:105E0000624403450901F240D2444249B249224A60 +:105E100013068002914505616FD00DFCEFD0FFEDB8 +:105E2000F2406244FD572306F900D2444249B24988 +:105E3000224A05618280B737002093860741D82621 +:105E4000938707411377F70F5DE7D4263736002095 +:105E50001307063F93F6F60FC1EA8346063F93F613 +:105E60000604D9C2B7B7240048C39387F7E963E1B2 +:105E7000A702930750021CB3B73700209387473C13 +:105E8000FC330D4789456303F70085456FE00FB686 +:105E9000B70725009386F74863EDA600B767DBFFD9 +:105EA00093870793AA979306007DB3D7D702FD1770 +:105EB000D9B7938707496315F5009307600265BF5B +:105EC000B7D725009387F77763EDA700B767DBFFA8 +:105ED00093870793AA979306007DB3D7D702F91744 +:105EE00059BF9307700241BF9376F50F14B3F4B70F +:105EF0008145368561BF8280411106C622C4EFE02C +:105F0000CFA3373400201305044113064002814516 +:105F100097A0F91FE780C04837550600FD571305C5 +:105F2000257C2328F440EFD09DBD1304044108A82C +:105F3000B2402244014541018280B737002083A648 +:105F40000744056713071710D8C6514701007D178E +:105F500075FF03A7074423260700514701007D175B +:105F600075FF03A707448567938717105CC7828076 +:105F7000411106C6EFF07FFCB737002083A7074426 +:105F8000130700483703009098D7B8477D13370EA2 +:105F90000020337767003367C701B8C7B847B70633 +:105FA00000F9FD16758F37060004518FB8C7B84742 +:105FB0003706F9FF7D16419B13679700B8C7B847AE +:105FC000B7080080B70E0002718FB8C7B847370610 +:105FD00000FF7D1633671701B8C7F84745757D1E6A +:105FE000619B13673700F8C7F8471377F7F8136713 +:105FF0000703F8C7EC4793F5F58F93E50530ECC739 +:10600000F847718FF8C7F84711663367D701F8C7AB +:1060100003A807051307F5FF7D753378E80033689B +:10602000C80023A8070503A847057D15137808FFB6 +:106030001368C80023AA0705F04B13660608F0CBC7 +:10604000F04B698EF0CBC85F798D2167598DC8DF21 +:10605000CC5F37070040F58DB3E5D501CCDFD05FCD +:10606000B70570003376C601598ED0DFD057096767 +:106070004D8ED0D7D057F18ED4D7D45775767D16A4 +:10608000F18ED98ED4D7D4573706FDFF7D1637074A +:106090000200F18ED98ED4D7945BC19A94DB945BC5 +:1060A00093F6F6F094DB945B93F6F68F94DB985BB3 +:1060B000B70600504D8F98DB985B33776700558F9C +:1060C00098DB985FB70608FFFD16758FB7061000BE +:1060D000558F98DF985FB368170123AC1703B24060 +:1060E00041018280B737002083A70744B70600909C +:1060F000FD16F84F758FF8CFF84FB70690FFFD16D5 +:10610000758FF8CFF84FB706F9FFFD16758FF8CFEA +:10611000B44B45771306F7FFF18E2567D98EB4CBC4 +:10612000B847B7060007558FB8C7B847B70600701D +:10613000558FB8C7B847B70607001367F700B8C749 +:10614000B847558FB8C7B8479D66718F558FB8C788 +:10615000B847B706000113670730B8C7F847136799 +:106160000770F8C7F847558FF8C7F8471377F7F85F +:10617000F8C7F84713677700F8C7828037370020E1 +:106180008327074441767D16B44BF18EB4CB9447F8 +:1061900037062000D18E94C7D44793E60601D4C7B2 +:1061A000D447BD9AD4C70100010001000100832635 +:1061B00007440566DC4693E70701DCC6DC42D18F65 +:1061C000DCC2B737002003A6C73E930700057CD288 +:1061D0007C5291C783A7C609A183858BF5DB01009B +:1061E00001000100010083270744416603A7C70996 +:1061F000B44BD18EB4CB9376F701B84B019B558F3E +:10620000B8CB9847B706E0FFFD16758F98C7828018 +:10621000B737002083A7074441777D17B44F416605 +:10622000F98EB4CF9447D18E94C7D44793F6F6EF46 +:10623000D4C7D443758FD8C3D44793E60610D4C7C8 +:10624000D843518FD8C38280AA873DC114211947F2 +:1062500005456390E6069033B423AC33373700200E +:10626000230BC7E437370020A30BD7E437370020D0 +:106270002302B744CC2337370020230AB742CC335C +:1062800037370020A302B744F823B7370020238E06 +:10629000E7423737002011CA89CAB75734129387AB +:1062A0008767232CF74201458280232C0742E5BFF4 +:1062B0000545828039C199471CA1B737002083C7A3 +:1062C00067E51CB1B737002083C777E53CA1B73736 +:1062D000002083C747443CB1B737002083C74743FA +:1062E0005CA1B737002083C757445CB1B7370020A3 +:1062F00083C7C7437CA101458280054582805D71CB +:10630000A2C43734002083270444A6C24EDE86C6CA +:10631000CAC052DC56DA5AD85ED662D466D26AD087 +:106320006ECED843FD76FD161377F7EFD8C3985796 +:10633000B7350020938575E5758F98D7D857B70680 +:106340000200B73400203D9BD8D79847938464E57A +:10635000B7390020558F98C7D843B7360020136748 +:106360000701D8C303A6864337573412130787673C +:106370002EC6E300E64CD84301791309F90F799B47 +:10638000D8C3985FB166938606F033772701558F9F +:1063900098DFD84313671700D8C397D0F91FE78059 +:1063A000809083270444B24603A707091377F703B5 +:1063B00098A003A7470929831377F70798A2D84322 +:1063C000B96693860670799BD8C3985F33772701A7 +:1063D000558F98DFD84313671700D8C397D0F91F9C +:1063E000E780608C83270444B736002003A70709A1 +:1063F0001377F703A382E64403A74709B7360020C3 +:1064000029831377F707238EE642D843B566938630 +:106410000630799BD8C3985F33772701558F98DF73 +:10642000D84313671700D8C397D0F91FE780A08718 +:10643000032704448327070993F7F7032382F944CA +:106440008327470937370020A98393F7F707230AE3 +:10645000F74283C7494494207D7E3EC42247832768 +:106460000444130EFE0F998E03A7070A13F6F600D5 +:1064700013054002419B518F23A0E70A13076002D6 +:106480003387E6021306700283A5070A45737D135E +:1064900093F5F5F013043002B708F1FFFD18130867 +:1064A00020023347C702930E10027D4FF94FF54289 +:1064B000F1436D4D514CC944C54B3D49B949B14AB1 +:1064C0002D4B354A3D8B12074D8F9305500223A06B +:1064D000E70A3387B60283A5070AB3F5C501334738 +:1064E000C7023D8B22074D8F23A0E70A3387A60200 +:1064F00083A5070A370500F17D15B3F5650033471D +:10650000C7023D8B32074D8F23A0E70A33878602EF +:1065100083A5070A6144B3F515013347C7023D8BD4 +:1065200042074D8F23A0E70A3387060383A5070A96 +:10653000370810FF7D18B3F505013347C7023D8BBF +:1065400052074D8F23A0E70A3387D60383A5070A96 +:10655000B70E0010FD1EE98D3347C7023D8B620761 +:106560004D8F23A0E70A139756003347C7029315B0 +:10657000C70103A7070A3377D7014D8F23A0E70A86 +:106580003387E6035D4F3347C7029375F70003A7D0 +:10659000470A419B4D8F23A2E70A3387F60383A561 +:1065A000470AD94F93F5F5F03347C7023D8B1207E1 +:1065B0004D8F23A2E70A3387560283A5470AD542A7 +:1065C000B3F5C5013347C7023D8B22074D8F23A288 +:1065D000E70A3387760283A5470ACD43B3F5650002 +:1065E0003347C7023D8B32074D8F23A2E70A33871B +:1065F000A60383A5470A294DB3F515013347C70202 +:106600003D8B42074D8F23A2E70A69473387E60295 +:1066100083A5470AB3F505013347C7023D8B5207EF +:106620004D8FE54523A2E70A3387B60283A5470AC3 +:10663000E98D3347C7023D8B62074D8F23A2E70ADE +:10664000338786020D443347C7029315C70103A75A +:10665000470A3377D7014D8FB385E60323A2E70AB4 +:1066600003A7870A254F419BB3C5C502BD894D8F3E +:1066700023A4E70A3387F60383A5870A9D4F93F582 +:10668000F5F03347C7023D8B12074D8F23A4E70A6D +:106690003387560283A5870A9942B3F5C50133476C +:1066A000C7023D8B22074D8F23A4E70A3387860359 +:1066B00083A5870AB3F565003347C7023D8B3207D0 +:1066C0004D8F23A4E70A3387760283A5870A954373 +:1066D000B3F515013347C7023D8B42074D8F23A405 +:1066E000E70A3387960283A5870AB3F50501334786 +:1066F000C7023D8B52074D8F23A4E70A33877603E9 +:1067000083A5870AE98D3347C7023D8B62074D8F0A +:1067100093954600B3C5C50223A4E70A03A7870AD9 +:106720003377D701F2054D8FB385260323A4E70AFB +:1067300003A7C70A419BB3C5C502BD894D8F23A6D8 +:10674000E70A3387360383A5C70A93F5F5F0334785 +:10675000C7023D8B12074D8FB3C5860223A6E70AF9 +:1067600003A7C70A3377C701BD89A2054D8F23A6AA +:10677000E70A3387560383A5C70AB3F56500334795 +:10678000C7023D8B32074D8F23A6E70A3387660386 +:1067900083A5C70AB3F515013347C7023D8B4207EE +:1067A0004D8F23A6E70A3387A60383A5C70AB3F54F +:1067B00005013347C7023D8B52074D8F23A6E70AD9 +:1067C0003387E60383A5C70AE98D3347C7023D8BAC +:1067D00062074D8F93953600B3C5C50223A6E70A1D +:1067E00003A7C70A3377D701F2054D8FB385F603A8 +:1067F00023A6E70A03A7070B419BB3C5C502BD89C2 +:106800004D8F23A8E70A3387560283A5070B93F51C +:10681000F5F03347C7023D8B12074D8F23A8E70AD7 +:106820003387760283A5070BB3F5C5013347C7024B +:106830003D8B22074D8F23A8E70A13972600334785 +:10684000C70283A5070BB3F565003D8B32074D8F5B +:10685000B3C5460323A8E70A03A7070B337717013D +:10686000BD89C2054D8F23A8E70A13971600334749 +:10687000C70283A5070BB3F505013D8B52074D8F6A +:10688000B3C5C60223A8E70A03A7070B698FBD8912 +:10689000E2054D8F23A8E70A03A7070B93058002A3 +:1068A0003377D70123A8E70A37370020A24C0347E4 +:1068B00057443387EC40B34DB70283AC470B93FC8E +:1068C0000CFF334C870393FDFD00B3ECBC0123AAFE +:1068D000970B83AC470BF14D93FCFCF0137CFC0051 +:1068E000120C33EC8C0123AA870B330C870283AC88 +:1068F000470BB3FCCC01334CBC02137CFC00220CD4 +:1069000033EC8C01B34CA70323AA870B03AC470BD2 +:10691000337C6C0093FCFC00B20C336C9C0123AA0A +:10692000870B214C334C870383AC470BB3FC1C0112 +:10693000137CFC00420C33EC8C0123AA870B330C34 +:10694000570283AC470BB3FC0C01334CBC02137CE5 +:10695000FC00520C33EC8C0123AA870B330CF70399 +:1069600083AC470BB3FCAC00334CBC02137CFC0083 +:10697000620C33EC8C01B34C770223AA870B03AC77 +:10698000470B337CDC01F20C336C9C01B30CE70346 +:1069900023AA870B03AC870B137C0CFFB3CCBC0280 +:1069A000330B670393FCFC00336C9C0123AC870B17 +:1069B000114C83AC870B93FCFCF0334C8703B30A78 +:1069C0005703137CFC00120C33EC8C0123AC870BB7 +:1069D00003AC870BF54C337CCC01334BBB02330A41 +:1069E0004703137BFB00220B336B6C0123AC670B5B +:1069F00003AB870B4D4C337B6B00B3CABA02B309B0 +:106A0000370393FAFA00B20AB36A5B0123AC570B5F +:106A100083AA870B594BB3FA1A01334ABA023309D6 +:106A20002703137AFA00420A33EA4A0123AC470BE0 +:106A300003AA870BDD4A337A0A01B3C9B902334985 +:106A4000B90293F9F900D209B3693A0123AC370BC3 +:106A500083A9870B614AB3F9A900B30B77031379B4 +:106A6000F900620933E929019319470023AC270B88 +:106A700003A9870B3379D901B3C9B902B3049702CB +:106A8000F2093369390123AC270B03A9C70BE54988 +:106A9000137909FFB3CBBB02B3C4B40293FBFB0071 +:106AA000B36B790123AE770B03A9C70BD54B1379D1 +:106AB000F9F0BD889204B364990023AE970AB30439 +:106AC000870303A9C70B794C3379C901B3C4B40256 +:106AD000BD88A204B364990023AE970A8944B344E5 +:106AE000970203A9C70B33796900BD88B204B36468 +:106AF000990023AE970AB304770303A9C70BFD4B94 +:106B000033791901B3C4B402BD88C204B3649900D7 +:106B100023AE970AB304670303A9C70B130B100234 +:106B200033790901B3C4B402BD88D204B3649900B7 +:106B300023AE970AB304570303A9C70B930A200295 +:106B40003379A900B3C4B402BD88E204B3649900E8 +:106B500023AE970AB304470303A9C70B130A3002F5 +:106B60003379D901B3C4B402F204B364990023AEFB +:106B7000970AB304370303A9070C9309400213795A +:106B800009FFB3C4B402BD88B3649900694923A066 +:106B9000970CB304270303A9070C1379F9F0B3C4C6 +:106BA000B402BD889204B364990023A0970CED440D +:106BB000B304970203A9070C3379C901B3C4B40223 +:106BC000BD88A204B364990023A0970CB304B70353 +:106BD00003A9070C33796900B3C4B402BD88B204B9 +:106BE000B364990023A0970CB304970303A9070C7F +:106BF00033791901B3C4B402BD88C204B3649900E7 +:106C000023A0970CB304870303A9070C3379090168 +:106C1000B3C4B402BD88D204B364990023A0970C16 +:106C2000B304770303A9070C3379A900B3C4B402F2 +:106C3000BD88E204B364990023A0970C9314570015 +:106C4000B3C4B4021399C40183A4070C3306C7026A +:106C5000B3F4D401B3E4240123A0970C03A9470C97 +:106C6000137909FFB3046703B3C4B402BD88B364E6 +:106C7000990023A2970CB304570303A9470C137977 +:106C8000F9F0B3C4B402BD889204B364990023A29E +:106C9000970CB304470303A9470C3379C901B3C464 +:106CA000B402BD88A204B364990023A2970CB30474 +:106CB000370303A9470C33796900B3C4B402BD8814 +:106CC000B204B36499001309500223A2970CB304D1 +:106CD000270303A9470C33791901B3C4B402BD8853 +:106CE000C204B364990023A2970C93046002B30416 +:106CF000970203A9470C33790901B3C4B4023346A0 +:106D0000B602BD88D204B364990023A2970C83A471 +:106D1000470CE98C3D8A6206458E23A2C70C03A668 +:106D2000470C9314C7013376D601458E23A2C70CB6 +:106D3000130690023306C70283A4870CC19833461A +:106D4000B6023D8A458E23A4C70C1306A002330663 +:106D5000C702B345B60203A6870C1376F6F0BD89C9 +:106D60009205D18D23A4B70C3736002083454643C6 +:106D7000373600200346C64303A9870C3386C54037 +:106D8000B304A6033379C901B3C4E40293E48400D5 +:106D9000BD88A204B364990023A4970CB304E6034E +:106DA00003A9870C33796900B3C4E40293E4840037 +:106DB000BD88B204B364990023A4970C93143600E1 +:106DC000B3C4E40203A9870C3379190193E4840066 +:106DD000BD88C204B364990023A4970CB304F603DE +:106DE00003A9870C33790901B3C4E40293E4840056 +:106DF000BD88D204B364990023A4970CB30456024F +:106E000003A9870C3379A900B3C4E40293E4840096 +:106E1000BD88E204B364990023A4970CB3047602FE +:106E200003A9870C3379D901B3C4E40293E4840045 +:106E3000F204B364990023A4970C93142600B3C4FE +:106E4000E40203A9C70C137909FF93E48400BD8809 +:106E5000B364990023A6970CB304860203A9C70C58 +:106E60001379F9F0B3C4E40293E48400BD8892047A +:106E7000B364990023A6970C93141600B3C4E402DC +:106E800003A9C70C3379C9013347E60293E48400B0 +:106E9000BD88A204B364990023A6970C03A6C70C6F +:106EA00033766600136787003D8B3207518F23A628 +:106EB000E70C03A7C70C3377170123A6E70C32476B +:106EC00018230D8F3346D70293F5F507E2053D8A67 +:106ED0009314460103A6C70C3304870233760601D8 +:106EE000458E23A6C70C1316170083A4C70CE98C84 +:106EF0003346D6023D8A6206458E23A6C70C03A6FA +:106F0000C70C3344D402B37ED60113162700B30353 +:106F10007702720433E48E0023A6870C3346D60230 +:106F2000B3025702937EF60003A6070D419A33661B +:106F3000D60123A8C70C03A6070DB3C3D30213764B +:106F4000F6F0B3C2D20293F3F3009203B363760078 +:106F500023A8770C03A6070D337EC601B30FF703F2 +:106F600093F2F200A202B3625E0023A8570C03A6BC +:106F7000070D3373660013163700B3CFDF02330FEC +:106F8000E70393FFFF00B20FB36FF30123A8F70DE0 +:106F900003A3070DB37813013346D602330DA703BD +:106FA0003D8A420633E6C80023A8C70C03A6070D96 +:106FB00033780601334FDF02B346DD02137FFF0053 +:106FC000520F336FE80123A8E70D03A7070D798D52 +:106FD000BD8AE206C98E23A8D70CD84385663D9B9F +:106FE000D8C3D843799BD8C39857558F98D7D857CB +:106FF00013670701D8D722479376F703985F137773 +:1070000007FC558F98DF985FB7060081FD16758FD6 +:10701000D98D8CDFB640264496440649F259625A0F +:10702000D25A425BB25B225C925C025DF24D6161BE +:10703000828023AC06426FF0CFC1B737002003A790 +:1070400007445C4393E707105CC38280411106C686 +:10705000EF00504E93056040EF30E053B2400145E1 +:10706000410182806F00305211C589C501C61E22C0 +:1070700001458DE301110565C9471306F1001305AC +:1070800055C3854506CEDC87EF30A050F240888797 +:10709000056182808280B73700200111238DA72AE5 +:1070A00005651306F100130595C4854506CEA307B3 +:1070B0000100EF30004EF2408887056182800111A7 +:1070C0001305910006CEEF00904E48840565300010 +:1070D00025059D45EF30E04BF24008840561828034 +:1070E00001119305F10006CE22CC2A84EF00504E08 +:1070F00048860565C086700021801305554091457E +:107100004087EF300049F240624408860561828082 +:1071100001111305D10006CEEF00904D4886096598 +:10712000700009059145EF30C046F24008860561C0 +:107130008280011106CEEF00504DC8870965130605 +:10714000F10015058545EF30C044F24088870561A0 +:107150008280011106CEEF00D055C887096513065D +:10716000F10029058545EF30C042F240888705616E +:107170008280011106CEEF007062C8870965130690 +:10718000F10039058545EF30C040F2400145056109 +:107190008280011106CEEF10E028C887096513062A +:1071A000F10041058545EF30C03EF240888705611A +:1071B0008280011106CEEF100002C8870965130610 +:1071C000F10045058545EF30C03CF24088870561F8 +:1071D0008280411106C622C4EF1080078965CD0563 +:1071E0002A84EF30403B2285B24022444101828014 +:1071F000011106CEEF10E027C88709651306F100DC +:1072000051058545EF30E038F2408887056182807E +:1072100001111305510006CEEF10C03748820965F1 +:1072200050006105A545EF30C036F24001450561CB +:107230008280411106C6EF1020398965E505EF30DF +:107240008035B240014541018280011106CE22CC39 +:107250002A84EF10C04848860965C08670002180E6 +:1072600069058D454087EF30C032F24062440145E8 +:1072700005618280011106CE22CC2A84EF10E054F1 +:1072800048860965C086700021806D058D45408760 +:10729000EF302030F2406244014505618280B7370B +:1072A00000208386073C011122CC06CE2A872E843B +:1072B00063C5060085462380D73C89679386D7013E +:1072C000631ED402B73700209387872623940700D4 +:1072D00008231307F01F238C0702C8A3FAA3014653 +:1072E0008545B52DC88722851306F1008545EF3009 +:1072F000402AF24062448887056182809387370381 +:107300006312F402B737002093878726239407007F +:107310000823C8A30C33ECB330237D57F8A3238C88 +:10732000C702C1B7C947DC877DBF011126CAB73480 +:10733000002006CE22CC4AC89387C404BC336381A4 +:107340000716B736002083C7063C9384C40493F71E +:10735000070481E789472380F63C89679386E70124 +:107360002E842A87639FD5040821B737002093878E +:107370008726C8A30C338546CCB330230547F8B322 +:10738000F0A3EF006072C8879C87D1E7B737002071 +:1073900093868726F832D0328546938787266311F5 +:1073A000D70E0E061306963B130710273346E60248 +:1073B000A8308965239407001376F60FEFC06DC2DD +:1073C00099A893864703639FD5000821B73700200B +:1073D00093878726C8A30C33CCB33023F0A3343370 +:1073E000F4B345B7938607056394D5040821B737EE +:1073F000002093878726C8A30C3393087700CCB36B +:107400003023F0A33433F4B3034867005C335823CC +:10741000EF209038C88722851306F1008545EF30AC +:1074200040178887F2406244D24442490561828015 +:107430009387B7076393F5041C213739002013099C +:1074400089262302F9001C31A302F9003C21230301 +:10745000F9003C31A303F90068212A97030577005E +:10746000EFC0CFC0EF00007D83467900034669007E +:10747000834559000345490029B7B147DC8761BFFF +:107480008946E300D7F209068D460E066316D7003B +:107490000E061306965B09BF06061306765129B73A +:1074A000314549B7B73700202380073CB737002064 +:1074B00003C7E726011106CE9307F00F6317F70203 +:1074C0001305D10029274886096570008D457D0583 +:1074D000EF30200CB737002003C5F7048965EFC0F3 +:1074E000ADB7F2400145056182800145CD25488652 +:1074F000A306010023070100C1BF011106CE22CC63 +:107500002A84EF00D02B48860965C0867000218050 +:10751000130505028D454087EF30A007F240624415 +:10752000014505618280011106CE22CC2A84EF003C +:10753000703D48860965C0867000218013051502DC +:107540008D454087EF30E004F2406244014505611B +:107550008280011106CE22CC2A84EF00703E48863C +:107560000965C08670002180130525028D4540877E +:10757000EF302002F2406244014505618280011132 +:1075800006CEEF102029C88709651306F100130500 +:1075900075028545EF20F07FF24088870561828083 +:1075A000011106CEEF10A031C88709651306F1005E +:1075B000130595028545EF20D07DF240888705614F +:1075C0008280011106CEEF10C033C887096513060B +:1075D000F1001305D5028545EF20B07BF240888786 +:1075E00005618280011106CEEF108036C8870965DB +:1075F0001306F1001305E5028545EF209079F2406E +:10760000888705618280011106CEEF10E038C887B7 +:1076100009651306F100130515038545EF20707702 +:10762000F240888705618280411106C622C4EF10AE +:10763000A03A8965938525032A84EF20D075228599 +:10764000B240224441018280011106CEEF10207326 +:10765000C88709651306F100130575038545EF20FA +:107660005073F240888705618280011106CEEF10C9 +:10767000F007C88709651306F100130585038545E2 +:10768000EF203071F240888705618280011106CEBB +:10769000EF10901FC88709651306F10013059503C5 +:1076A0008545EF20106FF2408887056182807971EF +:1076B00002C0814801488147014706D6EF10503784 +:1076C000A30FA10009651306F1011305E503854524 +:1076D000EF20306CB2500345F10145618280011109 +:1076E00006CEEF10D050C88709651306F1001305C8 +:1076F000F5038545EF20F069F240888705618280B7 +:10770000011106CEEF105068C88709651306F10015 +:10771000130505048545EF20D067F2408887056191 +:107720008280011106CEEF10D079C8870965130653 +:10773000F100130515048545EF20B065F2408887F8 +:1077400005618280011106CEEF20C00CC887096553 +:107750001306F100130525048545EF209063F240E0 +:107760008887056182807971064306D61AC87253EC +:107770001AC662531AC452531AC242531AC0EF2097 +:10778000E013896593853504EF20F060B250014520 +:1077900045618280B73700202394A72A0145828063 +:1077A000011106CEEF20B000C88709651306F1006D +:1077B000130515058545EF20D05DF24088870561EA +:1077C0008280011106CEEF203007C88709651306B5 +:1077D000F100130525058545EF20B05BF240888751 +:1077E00005618280011106CE22CC2A84EF20100888 +:1077F00048860965C086700021801305A5058D4562 +:107800004087EF201059F24062440886056182806B +:10781000011106CE22CC2A84EF20100C488609657F +:10782000C086700021801305B5058D454087EF2087 +:107830005056F2406244088605618280011106CEEE +:1078400022CC2A84EF20F00F48860965C08670009C +:1078500021801305C5058D454087EF209053F240E8 +:1078600062440886056182805D711303D1031AD2D8 +:107870000343010786C61AD00343C1061ACE034349 +:1078800081061ACC034341061ACA034301061AC8EB +:107890000343C1051AC6034381051AC40303410506 +:1078A0001AC2034301051AC0EF10601A230EA10289 +:1078B00009657018130565038945EF20904DB640A2 +:1078C0000345C10361618280373700209307872613 +:1078D000BE271307872681E79307F01F3EA73E27A1 +:1078E0002146014593F607108607C207B3D6C64066 +:1078F000C183558D93D5574093D69740AD8E858AD9 +:107900007D161375F50FD58F71FE3EA78280373730 +:10791000002093078726DE271307872689E7E1776C +:1079200093C7F7FF5EA75E273946014591689945E1 +:10793000B3F617018607C207B3D6C640C183558D7B +:1079400093D6E74013D8F700858AB3C606017D16A3 +:107950001375F50FD58FE31DB6FC5EA7828001116C +:1079600006CE22CC26CA4AC84EC66DCDAD472A8463 +:1079700063E4A70C1304F5FF1374F40F1385F5FFEC +:1079800001469305F00F1375F50FEFC0CF96B7348E +:10799000002003A7044437390020136404045C5713 +:1079A0001374F407B7390020F59B5CD70327893B94 +:1079B00037850600130505A71C4393F707F85D8C70 +:1079C000B747767100C3938797121CC7B757550006 +:1079D000938757555CC303A7C93E37340020230261 +:1079E000043C5C431304443CF99B5CC3A5477CB056 +:1079F0009790F91FE780A0D983A6C93EA30204008F +:107A00000327893BA300040085479CC21C4337061B +:107A10003300014593F7F7E71CC31C4393F7F7E7DF +:107A200093E707101CC303A704441C47D18F1CC74E +:107A300093079005BCCA05A0B1476308F5029307F8 +:107A4000600263E5A7001304E5FF3DB793077002EA +:107A50004945E305F4F2F2406244D2444249B24956 +:107A6000056182801304500211BF1304600239B70C +:107A7000B73700209387473C9833B7370020938768 +:107A80008726058B01CF373700200327873B185FF8 +:107A90001583058B01E79A2705079AA703C6870375 +:107AA000EC33C8236FF0BFEB011126CA4AC84EC69B +:107AB00056C2B737002006CE22CC52C45AC0AE8977 +:107AC0003289B68A83A4473E35C9AD472A8463EE1E +:107AD000A7021304F5FF1374F40F631D0906268A29 +:107AE000338B990063124B071379F9009386FAFFE1 +:107AF000228523802401A380340193F6F60F4E865D +:107B00008545EFC00FB4014505A0B147630BF502F1 +:107B10009307600263E5A7001304E5FF6DBF9307B9 +:107B200070024945E30BF4FAF2406244D244424900 +:107B3000B249224A924A024B0561828013045002E4 +:107B400069BF1304600251BFEFF01FD82301AA00E0 +:107B5000050A49BF8547631CF9004E869305000F4F +:107B6000138524009790F91FE7808083B5BF89476C +:107B70006316F9004E869305A00ADDB78D47631D95 +:107B8000F900268A338B9900E3004BF7EFF03FD8DA +:107B90002301AA00050ACDBF91476316F9004E865E +:107BA0009305F00F75BF95476315F9004E86814523 +:107BB00045BF99476315F9004E86BD4555B79D47AA +:107BC0004945E313F9F64E869305500551BF41111F +:107BD00022C42A84354506C6EFC04F9AB737002025 +:107BE0009387872611C49A2718A09A27218318B053 +:107BF00023940700B737002083A70744984B9316B8 +:107C0000E70063D40602371701141307F78F98CBE8 +:107C100037071104F8CF09671307879F98C7B7374D +:107C200000209387473CA3830700B24022440145CC +:107C3000410182809307F00363E8A704B73700206F +:107C40002388A70AB737002003A6873BB706008220 +:107C50009377F5035856FD1693959701758F4D8FC1 +:107C600058D637370020832607440145984A131613 +:107C7000E700635C0600984A71761306F60F718F71 +:107C8000A207D98F9CCA828049458280AA8749CDA4 +:107C90002D47636BA7069307F5FF93F7F70F373769 +:107CA000002003270744B70600C1FD16084B93F7D1 +:107CB000F703E207758DC98F1CCBB737002083C748 +:107CC000070B71761306F60F93F7F7039396870069 +:107CD0001C4B0145F18FD58F1CCB7C4FB706F9FFAC +:107CE000FD1693E747007CCF1C4BF58FB7060200CB +:107CF000D58F1CCB9386864FB737002014C7938748 +:107D0000473C3147F8B3828031476302E5021307ED +:107D100060026365A7009307E5FF41B71307700290 +:107D20004945E38EE7F68280930750028DBF9307A3 +:107D30006002B5B7011106CE9317450163D2070261 +:107D4000EFD05EDB894709C914211147B14763951C +:107D5000E60095471CA1C947F2403E850561828037 +:107D60002EC6EFF0BE98C94765D93825418B6DD72F +:107D7000B2453C35230AB50489E7E9471CA9814788 +:107D8000E1BFED47E5BF011106CE22CC2EC6EFF0D4 +:107D9000FE9501CDB2452A84EFE01EA0A305A40202 +:107DA0000145F2406244056182804945DDBFB73735 +:107DB0000020938787260147994683C5870E33069F +:107DC000E50005070CA28507E319D7FE014582806F +:107DD000011106CE2EC6EFF07E9109C98307450337 +:107DE000B24501459CA1F240056182800945E5BF8D +:107DF000B73700209387C7099A2B18A19A2B2183A4 +:107E000018B1FC373CA10145828019E149458280C7 +:107E1000B737002013878726384F411122C406C682 +:107E20002A849387872601C75827314539EB03A752 +:107E3000070801C73837314529E703A7470901C7B4 +:107E4000783331451DEF3735002005471946A285A7 +:107E500013056535B8A39780F91FE780C04D5C30E6 +:107E60001307000C93F7070C6391E70237350020E6 +:107E70001946A2851305C5359780F91FE780A04BE9 +:107E80000145B24022444101828081EB3735002018 +:107E90001946A28513052536C5B7130700044945C1 +:107EA000E391E7FE373500201946A2851305853694 +:107EB000E1B7411126C2B73400209387842622C43B +:107EC000A04F06C69384842611C47C4813974700AC +:107ED0006342070CBC5499E74945B240224492449E +:107EE0004101828001ED1305000FEFD00E8C6DD59E +:107EF0005C25FDD3EFD0EEAD0145C5B70547E31DC9 +:107F0000E5FC1DE8014582972A8459C5856793875A +:107F100007801EB1930700707EA5B73500208D47FE +:107F20001CADA30A050219469385053513056503A3 +:107F30009780F91FE780204058248547E30EF7F823 +:107F40007C24B98B85C3782485476317F70289475A +:107F50001EB0224403A3C406B24092441305000F8E +:107F600041010283EFE0AE8DB737002083C7170BC6 +:107F70008D8BE31AF5FC8DB71E3011676374F70023 +:107F80001AB0C1BF930600023E87E3FBD7FE13077A +:107F90000002FDB7314591B71D4581B7B7370020C5 +:107FA00083A7C72F314599CBFC3389CB411106C636 +:107FB000EF00DFD6B240014541018280828001118D +:107FC00026CA4AC84EC652C456C25AC02E89368BDB +:107FD000BA89BE8A06CE22CCB284428AEFF00EF174 +:107FE0001307A9FF4207856741839386A7C763E903 +:107FF000E610938707C82A84494563E3970A63E13B +:10800000240B1307301F636D670963EB3709930770 +:108010001B00B387970213973900860763D2E708DE +:1080200041C01C3813F747003DC3ED9B1CB83C34DE +:10803000231A2407231B9406C5EF03578406C16740 +:10804000FD176309F706631799063E3C231BE404FA +:10805000231CF404B737002083D7C7318D4611475E +:1080600063E5F600850713F7F70FA30AE4042285FA +:10807000EFD0BEFE83570404A907231FF40483270F +:10808000440A93E717002322F40AC5475CBC231C6B +:108090005407231D4407231D6405231E3405014591 +:1080A000F2406244D2444249B249224A924A024BC7 +:1080B000056182808357440691CFB3D4F4024A8786 +:1080C000B3879702C207C1836373F9003E87231CFD +:1080D000E40449B7B305990085814A85EFB03DC6F0 +:1080E000231CA404930584052685EFB0EEAA9DB752 +:1080F0008327840A93E707022324F40AC14779B748 +:10810000494579BF01112EC606CEEFF02EDEB245ED +:1081100009E54945F240056182801C39A305B50295 +:1081200013F747007DD7ED9B1CB9BD472306F50229 +:108130008327850A93E727002324F50A0145D9BF41 +:10814000011106CE2EC632C4EFF04EDA0327851099 +:10815000137707023DCFB2459306000EAA87138717 +:1081600055FE42074183494563E2E6062246116710 +:1081700013078714930686EBC206C1826368D7048F +:1081800003D7471E01456303B70437370020930622 +:108190008726B636A38EB706239FC70693F5F50F3D +:1081A0001307872663F3D500AE865A37239AD71C68 +:1081B0006373E6003287239BE71C03A7470A8566A3 +:1081C00093860680558F23A2E70A0145F240056198 +:1081D00082804545E5BFB737002013878726384F93 +:1081E0009387872611C7542781C6543749478DEA9C +:1081F00003A7070819C7343789C6142B4947858A4E +:1082000085E203A7470911C7743381C6543749472C +:1082100081EA03C7070C83C7170C6365F7001D4786 +:108220003A8582800111C88419461305A10006CE43 +:108230009780F91FE78020102800EFB02F9F854717 +:108240001D476313F5000147F2403A8505618280BE +:10825000797126D24AD04ECE06D622D42E89B28942 +:1082600036C63AC43EC242C0EFF04EC8C94455C5F6 +:108270009305A9FFC20505662A84C1811305A6C717 +:10828000C944636CB508130606C86368360963E61B +:108290002909B2469305301F63E1D5082247636E72 +:1082A000E606138616003306260393153700635639 +:1082B000B6061038B144058A2DE20326440A137627 +:1082C000162021EE92470248231EE4043834231C72 +:1082D000F406231A2407231B3407231D0407231D38 +:1082E000D4045C3C814451EF8DEB83270410898BCF +:1082F0008DCF31469305F00F130584069780F91F43 +:10830000E780000A8327440A2314040693E7072022 +:108310002322F40AC9475CBC8144B250225426850A +:1083200002599254F2494561828063093905B38547 +:10833000290185814A85EFB09DA0231CA4049305E3 +:1083400084054E85EFB04E85B737002083D7C731FF +:108350008D46114763E5F600850713F7F70FA30A6B +:10836000E4042285EFD07ECF83570404A907231F9E +:10837000F4048327440A93E7170059BF231C2405FC +:10838000E1B7C1FF83278410898B8DC731469305E0 +:10839000F00F130584069780F91FE780600083279C +:1083A000440A2314040693E707202322F40ACD4746 +:1083B0005CBCA5B7E94495B73737002093078726FB +:1083C000BC4F1307872691C7D42781C6D437C94726 +:1083D000A1EA8327070899C7B43789C6942BC947F0 +:1083E000858A9DEE8327470991C7F83301C7D8379F +:1083F000C9471DE70111C88419461305A10006CE1F +:108400009780F91FE78020F32800EFB06F8D0547B4 +:10841000B1476313E5008147F2403E8505618280E4 +:108420003E858280B737002013878726384F938791 +:10843000872611C7542781C65837494515EB03A72E +:10844000070819C7343789C6182B4945058B0DE332 +:1084500083A7470991C7F83301C7DC37494589EB42 +:10846000411106C6EFB08F90B240014541018280B4 +:108470008280630F051079714AD03739002022D4E9 +:1084800026D24ECE52CC56CA5AC89307892606D653 +:108490005EC603A4C7095C21AA8413098926FD8B43 +:1084A0005CA18D49054AA14A294B05EC8327C905E2 +:1084B0001147C146F1E737350020A6851305E5369B +:1084C00015469780F91FE78000E7B2502254925476 +:1084D0000259F249624AD24A424BB24B01454561C8 +:1084E00082803C348DE38327440A1546A68593E7B2 +:1084F00027002322F40A130584129780F91FE780CE +:1085000080E300405DB78347E418858B9DCF2688C4 +:10851000014581468345080013D726002A97B3D525 +:10852000D54093F736002297858986070306771989 +:10853000A9C5B317FA00D18FA30BF7188506E39BE3 +:1085400056FD09050508E31665FD930B241915462C +:10855000A6855E859780F91FE780E0EE5DF1154600 +:10856000A6855E859780F91FE780E0DC8347E418E5 +:1085700093E787002307F41869B7B397F90065BF3D +:1085800003C6C7076314E600238ED7069C431DB7B6 +:1085900049458280411122C426C24AC006C62A89A2 +:1085A0000144A1449305F00F0545EFB00DF7B30763 +:1085B000890088A30504E31794FEB2402244924444 +:1085C0000249014541018280011122CC4AC806CEF0 +:1085D00026CA2EC632893684EFF04E917DCD3C35C9 +:1085E000AA84B2450945D9EB21461385B41A978070 +:1085F000F91FE78040D4A389241B13598900238ADB +:10860000241B7C2450346C345424A207420603C536 +:10861000C404B297AE97E20603A7440AB6972DC5E5 +:1086200023A6F40A3C24143413670702A207C206E7 +:10863000B6973434B6971424E206B69723A8F40A02 +:108640007C205430A207C206B6977430B6975420E7 +:10865000E206B69723AAF40A3C201430A207C20609 +:10866000B6973430B6971420E206B69723ACF40AD6 +:108670008547A386F40423A2E40A0145F24062443C +:10868000D24442490561828023A6F40C3C24143470 +:1086900013678700A207C206B6973434B69714242E +:1086A000E206B69723A8F40C7C205430A207C20639 +:1086B000B6977430B6975420E206B69723AAF40C06 +:1086C0003C201430A207C206B6973430B697142067 +:1086D000E206B69723ACF40C79BF094545B7011102 +:1086E00006CE2EC6EFF08E8079CD34350547AA87A9 +:1086F000B2450545639FE606942B130740020145EA +:108700006399E606F825D4352207C2063697F43574 +:108710003697D425E206369783C6D704B1CE23A672 +:10872000E70AB82594352207C2063697B43536973E +:108730009425E206369723A8E70AF821D4312207C8 +:10874000C2063697F4313697D421E206369723AA2B +:10875000E70AB82194312207C2063697B43136971A +:108760009421E206369723ACE70A1307A00298ABE0 +:108770000145F2400561828023A6E70CB8259435B7 +:108780002207C2063697B43536979425E206369707 +:1087900023A8E70CF821D4312207C2063697F4311A +:1087A0003697D421E206369723AAE70CB8219431F4 +:1087B0002207C2063697B43136979421E2063697DF +:1087C00023ACE70C5DB705456DB7411106C6EFE078 +:1087D000FEF11DCD34350547AA8709456397E602AA +:1087E000942B130740026392E6020D472386E702AB +:1087F0001947A385E7021307500298AB03C7A702E6 +:108800000145136717002385E702B24041018280CA +:108810000945E5BFB73700202A8713858726034817 +:1088200015009387872663090802284D11C5034860 +:10883000C50031456314080803A5070811C503489E +:10884000B5003145631C080603A5470911C5034857 +:10885000750031456314080683C8870C03C8970C5C +:108860001D4563FD080583A7870D494593F7070458 +:10887000B1C75D71A6C22800B284194686C6A2C4DB +:10888000D88336849780F91FE780E0AAA685130570 +:10889000E10241469780F91FE780E0A9A285130510 +:1088A000E10141469780F91FE780E0A84800EF50BA +:1088B0009FBBB64026449644616182808280B73770 +:1088C000002013878726143385C6384F9387872661 +:1088D00001C7582749450DE703A7070801C73837DF +:1088E000494519EF83A7470981C7FC33494589EBFF +:1088F000411106C6EF505FCBB24001454101828075 +:108900008280B73700201387872614339387872602 +:1089100095C2384F01C75427494795E603A7070872 +:1089200001C73437494785E203A7470901C77433B4 +:10893000494791EA88B303A7070E01C91367076087 +:1089400023A0E70E01473A8582801377F79FCDBFBA +:10895000130700643305E502B73700204111938601 +:10896000872622C403A4C60C26C24AC006C6938426 +:108970008726C8DA1309F00F01E8B2402244924476 +:108980000249014541018280082063052501CC5838 +:10899000EFA0FDAE405CCDB7B73700201387872628 +:1089A000A30CA702137715009387872611EB03C743 +:1089B000C7036D8F6304B70049458280238DE702AA +:1089C00013772500014501EB03C7D703718FE3152A +:1089D000C7FEA38DC7028280011106CE2EC632C407 +:1089E00036C23AC0EFE09ED02DC1B2450247924652 +:1089F00093F7150099EB22469D4763F6C70045455E +:108A0000F240056182802302C514898991E59D4762 +:108A1000E3E7D7FEA302D51401CFB737002083D7F1 +:108A2000A72A7D8F0D8B8547631EF7002314E5145D +:108A300085477CAD8327450A0567D98F2322F50A30 +:108A400001457DBF23140514E5B7494555BF5D7148 +:108A5000A6C2B73400201383842603238305CAC02B +:108A60004EDE62D466D26AD086C6A2C452DC56DA22 +:108A70005AD85ED66ECE030C410583498105034961 +:108A80000106834CC106034D0107938484266309C4 +:108A900003020323430513145300635304023143B9 +:108AA000B640264496440649F259625AD25A425B6D +:108AB000B25B225C925C025DF24D1A85616182803C +:108AC0000D4E4943E36EFEFC93FD0501638C0D08DA +:108AD000054EE397C9FD3AC6468B42C43EC2B68BEB +:108AE000B28A2E842AC0EFC04ECC2A8A324711E9BE +:108AF000BC54054582972A8A1D435DD1824732477F +:108B00001CA5930500026391BB028D456310B90A51 +:108B10000355CA019305900F13035004E3E2A5F82F +:108B20000355EA01E3EEA5F69375F40F2300BA06A8 +:108B3000638D0D1A3D8815456312A408130510F8BE +:108B40002307AA004543E3ED5BF57D454543E37903 +:108B500055F51165E36675F533865B0105822310D3 +:108B6000CA02B5A093FE35004943E38BCEF393FED2 +:108B70008500E3970EF26392C90303C3C403137322 +:108B80004300E30E03F0E30839F50943E31569F404 +:108B900003C3C4031373230039A0E318C9FF03C33D +:108BA000C40313734300E31803F2D5BD8545E31DE9 +:108BB000B9F60355CA019305D02EB9BF3545631CDC +:108BC000A41085462307DA0089462310DA02A3079A +:108BD000EA00631107160547230CEA0093F5050226 +:108BE00081E59247A30AFA02194681455A85978082 +:108BF000F91FE780E08C63100516A2470547230E96 +:108C0000EA02A30EFA021946DA851305EA03977001 +:108C1000F91FE780407203470105A306EA00130726 +:108C2000F007631DEC12373700200347070BD657B8 +:108C300098A303055A01EFA07FC32304AA06EFA05F +:108C4000BFBCD657A30AAA000D4788A36391E912B7 +:108C5000638D0C0093F61C0099C603C7C403218BD7 +:108C600019E3E38E3CE32305DA0609472302EA060B +:108C70000347C105A302EA0603470A06418B1DEB21 +:108C80001307F9FF1377F70F89464943E3EAE6E054 +:108C90008D466313D90E630D0D0013761D0019C6A2 +:108CA00083C6C403A18A99E2E30B2DDFA305CA069C +:108CB000A301EA0603474106B70600080143A300E3 +:108CC000EA0603478106A303EA0603274A05558FF0 +:108CD000232AEA04F1B309456314A40019458DB5AC +:108CE000E30004E623070A00B1BD1D452307AA00DF +:108CF00013F8150013F54500630B0800114811C166 +:108D00000548A30F0A050545230FAA0425BD13F83E +:108D1000250063090800094811C11548A30F0A0579 +:108D20000945DDB70D4811C11948A30F0A05230FE6 +:108D30000A0409BD230C0A0081460D453356D7406D +:108D4000058A11C603468A010506230CCA0085065A +:108D5000E396A6FE61B5230E0A0275BD1947634569 +:108D60008701A30A8A01F1B5A30AEA00D9B5230550 +:108D70000A0623020A06EDBDA3050A0615BF011166 +:108D80004EC6B739002093878926BC4F06CE22CC29 +:108D900026CA4AC852C49389892691C7FC4B1396A8 +:108DA0005700634E06003A8AB6842E89EFC0EE9FC4 +:108DB0002A8419ED83A789051305200491C3314541 +:108DC000F2406244D2444249B249224A056182805B +:108DD0007825854701453D8BE304F7FE03470406EC +:108DE000418B59CB8D476304F9004945D1BFFD47FD +:108DF000E3ED97FE231E04008D476317F90CCDCCDD +:108E00005E2C03D7E9071D45B3869700E34AD7FADE +:108E1000582405C71630130700026390E602034783 +:108E200034068D46631ED70A1307900F13055004AE +:108E3000E368F7F87E2CE365F7F88D471D45E311ED +:108E4000F9F8374902408329C920232609200F1049 +:108E500000009305800C0545EFA03DEC8357C40648 +:108E60001205232444038507BD8BC98F2316F406FE +:108E700046AC23263921B9A01377D90FE30CF7F6B6 +:108E800011476313E904784893167700E3CF06F49B +:108E90005824E31CF7F45E2CA9DBA1F89305800CA1 +:108EA0000545EFA09DE78357C40612058507BD8BD6 +:108EB000C98F2316F40639A07C48370700FF7D17B9 +:108EC000F98F7CC80145EDBD9307D9FF93F7F70FE4 +:108ED0000547E377F7F291D85C24E393E7F2C5B551 +:108EE0008546E31CD7F41307D02E89B701114EC66F +:108EF000B739002093878926BC4F06CE22CC26CADC +:108F00004AC852C49389892691C7FC4B13965700CF +:108F1000634E06003A8AB6842E89EFC00E892A84F1 +:108F200019ED83A789051305200491C33145F2404B +:108F30006244D2444249B249224A0561828078257E +:108F4000854701453D8BE304F7FE03470406418B4B +:108F500061C38D476304F9004945D1BFFD47E3ED87 +:108F600097FE231F04008D47631CF90EF5C07E2C6D +:108F700003D7E9071D45B3869700E34AD7FA58247B +:108F800005C71630130700026390E6020347340654 +:108F90008D466314D70E562C1307900F13055004FB +:108FA000E367D7F8E365F7F88D471D45E311F9F856 +:108FB0005C5485C783476406898B85C3085811CDE7 +:108FC0003C2581CFEF506FC40C581946130564033C +:108FD000B1059770F91FE7800036374902408329B1 +:108FE000C920232609200F1000009305800C054599 +:108FF000EFA0BDD28357C40612052326440385077C +:10900000BD8BC98F2316F40666AC23263921B9A07F +:109010001377D90FE307F7F411476313E90478488E +:1090200093166700E3CA06F25824E317F7F27E2C82 +:1090300085D79DF09305800C0545EFA01DCE835785 +:10904000C40612058507BD8BC98F2316F40639A007 +:109050007C48370700FE7D17F98F7CC80145C1BDEC +:109060009307D9FF93F7F70F0547E372F7F0E3850E +:1090700004EE5C24E39DE7EE55BD8546E316D7F28A +:10908000562C1307D02E19BF5D71A6C2B73400202D +:109090009387842603A8870586C6A2C4CAC04EDE6D +:1090A00052DC56DA5AD85ED662D466D26AD06ECE18 +:1090B0009384842663080802832748051394570085 +:1090C000635204023145B640264496440649F2599B +:1090D000625AD25A425BB25B225C925C025DF24DF4 +:1090E000616182803AC632C493771500B68989C718 +:1090F000639105104945C1BF91E9E04C19E0014574 +:10910000D9B72285EFC0EE8C0040CDBFE30908FE41 +:109110004285EFC00E8CE5B77849B70700037D8F15 +:1091200055F30347F505630487016315970103D7DA +:10913000EA0149DB03C75A036300270903C7EA00B2 +:1091400063182701131714004E971A23E3E4EDFA6E +:10915000F8547D141374F40F5DC793161A00B69972 +:1091600003D70900B2479305800C2397EA063E9A7D +:1091700003470A00054523980A06A384EA06EFA0E0 +:10918000DDB903D7CA061205264405073D8B498F72 +:109190002396EA0603A3C40603C50B00B640964413 +:1091A0000649F259625AD25A425BB25B225C925C27 +:1091B000025DF24D61610283138B8A051946814578 +:1091C0005A859770F91FE780A02F631A2501194669 +:1091D00093056D355A859770F91FE780C0151946BC +:1091E00081455A859770F91FE780802DE31825F592 +:1091F00011B7FD1513F4F50F094C954C0549373D92 +:109200000020930D00089307F00FE305F4EEA2474A +:10921000228AB38B870003C50B00EFB01ED9AA8A40 +:10922000E31C05EEBC4C13052004E39D07E861BD7B +:10923000373300200323032C39714ED606DE22DC9F +:1092400026DA4AD852D456D25AD05ECE62CC66CAFA +:1092500083490104630603020323430513145300E7 +:10926000635004023145F2506254D2544259B2590B +:10927000225A925A025BF24B624CD24C216182809C +:10928000468C428BBE8A3A8AB68C3289AE84EFB065 +:10929000DED12A841305200479D4637499004945EA +:1092A000D9B79547E3FD97FE8347040693F7370345 +:1092B000FDF78347E405DDF77C48918BC5F7EF9018 +:1092C0007DD6F94763E4A7001D4571BF8347340687 +:1092D00009476396E70C835744081307D02E63733E +:1092E000F7029307C00213055004E3FE27F7F9477E +:1092F00013055004E3F927F7C1471305500463EB46 +:10930000270195B71307301FE363F7FE1307900F8C +:10931000E364F7FE630B0A06B3C74403E3C157F9DE +:1093200063800902E37D5BF7854763FB3701B38701 +:109330006A412947B387E702B3C73703E3C187F719 +:109340008327C40AA1E313061A0012069305E0104E +:10935000328532C69770F91FE780C0CEAA8B2DD513 +:10936000324681459770F91FE7808003B7C7898E21 +:109370002326740B938767ED23A0FB0093870B01D3 +:1093800023A6FB000326C40A05E60325C40A21C15F +:109390009770F91FE78000D82326040A0DA8BDFBAB +:1093A000035744089307D02EE3F6E7F69947B1B781 +:1093B0002302460163890900854763F43701A3034B +:1093C00086012303660123043601A30256017C486B +:1093D00083460406CA9493E727008584B3ECDC0037 +:1093E0007CC823139408230094070145ADBDB7370B +:1093F000002083A7072C81CBFC4B139757006354A5 +:10940000070031458280011122CC26CA4AC84EC6C7 +:1094100006CE52C4B6893289AE84EFB01EB92A8412 +:1094200013052004630304147C48898BB9CB83475C +:1094300034060947639DE70E835744081307D02E6F +:109440006379F702035764089307C00213055004B9 +:1094500063FDE71003576408F9471305500463F6EA +:10946000E71003576408C1471305500463EBE70096 +:10947000EDA81307301FE36FF7FC1307900FE362AB +:10948000F7FE93F7D40F05476399E70EB7470240FD +:1094900003AAC72023A607200F1000000325840A73 +:1094A00019C59770F91FE780E0C62324040A231228 +:1094B0000408B747024023A64721630509087C48F2 +:1094C000918BC1EF8D476391F40A930550104A8543 +:1094D0009770F91FE78000B72324A40A51C5B74746 +:1094E000024083A4C72023A607200F1000007C4859 +:1094F00093F7074091CF9305800C0545EFA0FD81C0 +:109500008357A40812058507BD8BC98F2315F4085E +:109510000325840A4A86CE859770F91FE780A0E16B +:10952000B74702402312240923A697202DA0B1FBA0 +:10953000035744089307D02EE3F5E7F40357640874 +:1095400099471DB78D4749456391F4027C48231222 +:109550000408F99B7CC8014509A89387D4FF93F7B9 +:10956000F70F0547E370F7F63145F2406244D24405 +:109570004249B249224A05618280E31209F49147C7 +:109580004945E38EF4F2D5B7B73700201387872615 +:10959000384F411126C24AC006C622C4AA84138984 +:1095A000872609CF7C4B1397570063590700314535 +:1095B000B240224492440249410182802E85EFB09C +:1095C000DE9E2A841305200465D413F714007C481A +:1095D00071CF13F7170061FF0347040613773703B2 +:1095E00079F78988E9C00327C90D454593E7074006 +:1095F000418B5DDFC1657CC8FD150145EFA02DF4F1 +:109600002314A408EFA07F97B70500012326A40820 +:10961000FD150145EFA0EDF49304040AB7350020D1 +:1096200015462328A4089385E53626859770F91FEB +:10963000E78060D0A6851305B0FA9790F91FE78000 +:109640000003B7C7898E938767ED2326F408B757C1 +:10965000550093875755130700022328F4088147C4 +:109660002320E40A2322F40A2685EFE00EB17C4889 +:109670005824A300A408DD9B93E747007CC88547D6 +:10968000631FF7009305800C0545EFA00DE9835794 +:10969000C40612058507BD8BC98F2316F406EF405B +:1096A0006FA5014531B793F7F7BFA9B70345D407B5 +:1096B000CD9B7CC89307F00FE303F5FEEFA08DA0D0 +:1096C000F9BFB7380020138888260328080801113D +:1096D00006CE22CC26CA4AC84EC652C456C21383EE +:1096E000882663090800032EC801B14813141E011F +:1096F000634D0402032E4308B14863080E0213733E +:10970000A6FFC5486313030213735600B148630EE6 +:109710000300BE843A89B6893284AE8A2A8A6310ED +:109720000802029E2A888D4819EDF2406244D24414 +:109730004249B249224A924A46850561828083475E +:10974000B800B148FDF38D47C948E3E047FFA306E1 +:1097500048052308580123000802137714008147A5 +:1097600029C383C70900A307F80083570900231BF7 +:10977000F8009A2063F3E7003E8793160701C18241 +:1097800063E4D708231CE8008357880113075005BA +:10979000B387E702A187231DF80085472300F8025D +:1097A00085471376440029CABE9903C70900860776 +:1097B0003E99A307E800A307E80203570900A6970C +:1097C0002319E8029E236373F700BA879396070173 +:1097D000C182636ED702231AF80283574803130726 +:1097E0005005B387E702A187231BF80283470802CD +:1097F00093E727002300F8028327C80121678148E7 +:10980000D98F232EF80015B7231CF800B5BF231AF3 +:10981000E802E1B7373700209307872683A70708B8 +:10982000411106C622C426C24AC01307872699C71B +:1098300003A8C70113141801634B04060327470844 +:109840003DC73684B2842E8909ED81EB4945B2408B +:1098500022449244024941018280EF60DFD90145F0 +:10986000FDB78546E314D5FE95EF0297AA8729C573 +:109870001147A30605047AA91AADB4370547E38753 +:10988000E6FC85C886BFA2BF01C41E04E3D084FCE9 +:10989000238927012244B2409244024903A3870648 +:1098A00041010283D84F93161701E3D806FC3145D6 +:1098B00079BF23AC0702E9BF0D4551BF5D7166D288 +:1098C0006AD06ECED084AA8D2E8DB28CB685194604 +:1098D0001305A100A2C4A6C24EDE52DC56DA5AD845 +:1098E0005ED662D4BE8B3734002086C6CAC0368CA2 +:1098F000BA84428BC68A464AD6499770F91FE780D8 +:1099000080A39307842683A707081304842695C79A +:10991000DC4F13971701635207023145B6402644C6 +:1099200096440649F259625AD25A425BB25B225CB3 +:10993000925C025DF24D6161828083278409F1DFD0 +:10994000EFC06EEEB737002083C7170B8983E3069D +:10995000F5FC93F784FF4545F1F393F7540099E341 +:1099600049456DBF8327040881CBD84F9316170153 +:10997000E3C506FABC37D5F303294409631E093A47 +:109980008327840982972A8949D90D47E36AA7FD6D +:10999000A306B901A302A9071946814562859770FC +:1099A000F91FE780E0B1631F053805472306E90684 +:1099B000A30699071946E2851305E9069770F91F72 +:1099C000E7806097230C090213FC1400014D630C1F +:1099D0000C1083D60B00114763F3E6009146231A5F +:1099E000D90203570B001396060141826373E60008 +:1099F000368793160701C182114663F3C6001147EB +:109A000093160701231BE902C18213075005338710 +:109A1000E6029305090521872319E9020547230C6E +:109A2000E90203D70A002317E90003550A002A9721 +:109A300005872318E904231AA900EF90FE958356A1 +:109A400009050567130707C86373D700BA8613971C +:109A50000601418319466373C70099462318D90448 +:109A60001395060183D609001307301F41816374E3 +:109A7000D7009306301F93950601C1811387150007 +:109A80003307A702E647231DD900962309876353AE +:109A9000D7003687F647420741832310E902962311 +:109AA000865705662313D9029623130606C8231684 +:109AB000D902BA866373E600B28613960601418224 +:109AC00029476373E600A9461397060141830A07F5 +:109AD0003347A7022310D9027D1763D3E5002E87F1 +:109AE000231DE900054D93FC240063830C0E931D98 +:109AF0001D003387BA011A23B306BA01930529055D +:109B00002318E9008A222A9705872319E904231BD1 +:109B1000A900EF907E88835629050567130707C8BB +:109B20006373D700BA86139706014183194663739E +:109B3000C70099462319D9043387B9011A2313950D +:109B400006019306301F418163F4E6001307301FBE +:109B500093150701C181231EE90013871500330700 +:109B6000A702E647B386B701962209876353D70059 +:109B70003687F64742074183B386B7012311E902CE +:109B80009622865705662314D902BE9D83D60D0002 +:109B9000130606C82317D902BA866373E600B28695 +:109BA00013970601418329466373C700A94613979B +:109BB000060141830A073347A7022311D9027D1703 +:109BC00063D3E5002E87050D231EE900137DFD0FED +:109BD0009188638C041693141D00A69B83D60B00FA +:109BE000114763F3E60091462313D904269B0357DC +:109BF0000B001396060141826373E60036879316C5 +:109C00000701C182114663F3C6001147931607018D +:109C10002314E904C182130750053387E602A69A8C +:109C2000269A9305490521872315E90403478903EB +:109C300013672700230CE90203D70A002319E90060 +:109C400003550A002A970587231AE904231CA90053 +:109C5000EF908EF4835649050567130707C86373B1 +:109C6000D700BA8613970601418319466373C7006C +:109C70009946231AD904A6991395060183D609009B +:109C80001307301F41816374D7009306301F9395EB +:109C90000601C181138715003307A702E647231F7A +:109CA000D900A697962309876353D7003687F647CE +:109CB00042074183B38697002312E9029622865712 +:109CC00005662315D902BE949620130606C82318EC +:109CD000D902BA866373E600B28613960601418202 +:109CE00029476373E600A9461397060141830A07D3 +:109CF0003347A7022312D9027D1763D3E5002E87CD +:109D0000231FE90063900C02630E0C04035709053E +:109D10002319E9040357A901231EE9000357090287 +:109D20002311E9020327040E8327890813670720FC +:109D30002320E40E8297DDB6834679000547E3963B +:109D4000E6C4E1BE23060906B5B903570905231A7F +:109D5000E9040357A901231FE9000357090223124D +:109D6000E9024DB7035749052319E9040357E901EF +:109D7000231EE9000357490265B741114AC037392C +:109D800000209307892683A7070806C622C426C297 +:109D90001309892691CFD84F9316170163DA06006D +:109DA000B147B2402244924402493E85410182803B +:109DB0000327490875D7AA8499EB02978D4775D177 +:109DC00091477EA91EAD8547A30605043CB5FC243A +:109DD0001D47032409089D8BE384E7FC9C20858BA9 +:109DE000A5CB5C4C898BCDFF98209147937667007B +:109DF0006397F6008326490DC547C18ADDD2058BDE +:109E000005E39C30194693853400230AF40CBC20EA +:109E10001305640DA30AF40C9760F91FE780A051A5 +:109E20009C202301F408BE242312F408DE2423130B +:109E3000F408FC24A301F408FD57A30EF4065C4CBF +:109E4000C59B93E727005CCCEF902FDD814791BF46 +:109E50005C4C898BD1DB0347440D9C30E312F7F453 +:109E60000347540DBC20E31DF7F2194693853400D7 +:109E70001305640D9760F91FE780E05C0547AD4767 +:109E8000E311E5F639BFB737002083A7872E3145A8 +:109E900085C3DC4F13971701634C0700898B89CB6F +:109EA000411106C6EF50BF96B24001454101828084 +:109EB00082804111B737002022C403A4872E26C216 +:109EC00006C6B14435C05C4CB14413971701634DCD +:109ED00007040357240D930420046317A7040345C4 +:109EE000D407C59B5CCC230E04069307F00F6307D1 +:109EF000F500EF903D9DFD57A30EF40603451408B1 +:109F00009307F00F6307F500EF90DD9BFD57A3006B +:109F1000F408BD67938707A60100FD17F5FF3C34E1 +:109F2000814499C33C548297B2402244268592448E +:109F300041018280B737002013878726183305CB6D +:109F400093878726B84F11CB582701CB494582808C +:109F50004945F24062440561828003A7070819C39E +:109F600038376DF783A7470999C3FC33E5F301112F +:109F700022CCC88432841305A100194606CE97600E +:109F8000F91FE780403B28009780F91FE780A0F584 +:109F900061D100B1014575BF373700200347272B3A +:109FA0000145B357F740858B91E345458280011108 +:109FB00006CE2EC632C436C23AC0EFA01EFF35C947 +:109FC00003234505AA87314513780320631008064B +:109FD000373800201308882683489804B245454541 +:109FE00063E6B80483C8470B2246B3D8C84093F849 +:109FF0001800638D08028328880D1397C8006357E3 +:10A0000007020348880402476362E8029246238BF2 +:10A01000C70AA38AB70AA38BD70A11E201471363C1 +:10A020000310238CE70A23AA67040145F240056167 +:10A03000828013052004DDBF011106CE2EC6EFA0DD +:10A04000DEF61307200401CD7C49314793F6270043 +:10A0500099C6B24589C993E707207CC90147F240F8 +:10A060003A850561828093F7F7DFC5BF011106CEFF +:10A070002EC632C4EFD08EE7373700200327872E55 +:10A0800029CB8356270D2246AA8713052004639FF8 +:10A09000C602094585CF83A6071069451396660059 +:10A0A0006356060203C6E7049306200263F0C60265 +:10A0B00023A0E71603A7470AB245C166558F239828 +:10A0C000B71423A2071623A2E70A0145F24005614F +:10A0D000828013052004DDBF011106CE22CC2EC6DE +:10A0E00032C4EFD0AEE022462A843285EFA0FEEBE8 +:10A0F000894739C003270410E9479316670063DDD9 +:10A1000006028346E404130720026377D70293070D +:10A1100020041DC17849B147218B19CF8327440AF8 +:10A12000B2454167D98F2322F40A2318B41423229D +:10A13000A416232004168147F24062443E8505613F +:10A140008280011122CC26CA4EC652C456C25AC0C1 +:10A1500006CE4AC8AE89328BB68A3A8AB734002016 +:10A16000EFD0CED89387842603A4070845C99384EB +:10A17000842683A744082A8999E3EF60EFD70DE886 +:10A1800083A7440882972A840D4535C48347D404A5 +:10A19000858BA5CFBC204945B9CFB73500201946DE +:10A1A000938565351305E4049760F91FE780A018CF +:10A1B0005C4C13F7270015C313F7E700A146631C97 +:10A1C000D7040345D407C59B5CCC230E0406930734 +:10A1D000F00F6304F500EF90EDEEFD57A30EF406CB +:10A1E0002312640923135409A301440923073915D1 +:10A1F000EF90AFA20145F2406244D2444249B249D5 +:10A20000224A924A024B05618280B73500201946E6 +:10A210009385053541BFEF508FDFC1B70945E1BFD9 +:10A22000797106D62ECE32CC36CA3AC83EC6EFD0A9 +:10A23000EECB094831C56246F2451303F00F494899 +:10A24000B388C500634E130363ECC5024247D24690 +:10A25000B388C5403383E60063C4680203484518E9 +:10A26000B247A302B5181368480023020519230357 +:10A27000C518A303D5182304E5182315F5180148BC +:10A28000B250428545618280411122C42A840A214C +:10A2900006C6EFD0AEC589471DCD03063400C947B9 +:10A2A000634BC00283052400130710FA63C5E5025F +:10A2B00003075400994663C0E602830644004158F0 +:10A2C00063CB0601230EB516A30EC516230CD516B7 +:10A2D000A30CE5168147B24022443E8541018280AD +:10A2E000011106CE2EC6EFD06EC031C90347451806 +:10A2F000AA873145937647009DCAB24585CD8386AE +:10A30000A717136717002382E7181307F007014503 +:10A31000639FE60003A7470A9316B70063C90600C8 +:10A32000B7061000558FA38F071623A2E70AF24045 +:10A3300005618280799B2382E7180145CDBF0945DD +:10A34000FDB7B737002083A7072C011122CCFC4BA7 +:10A3500052C406CE26CA4AC84EC656C213975700E4 +:10A360002E8A3284635407001305000FEFA0FEC34A +:10A370009307200429CD0327C50AB14729CB5447A9 +:10A38000B9C6582363654705B747024083AAC7206B +:10A3900023A607200F1000008327C50A22878146C5 +:10A3A000C4470145A68763CE4603420593050011C5 +:10A3B00041819760F91FE780E0C82A890D0481492F +:10A3C00063C74905B747024023A657218147F2409A +:10A3D0006244D2444249B249224A924A3E850561CA +:10A3E00082801023C10785062388C7FE10333107FA +:10A3F000A388C7FE034667FF2389C7FE034677FF8E +:10A40000A389C7FE4E203295239AB7FE69BF23A4C5 +:10A4100024011020832554004A85C1049760F91F48 +:10A42000E78060F183C734FF850931043E9949BF55 +:10A43000B737002083A7872EC9C3D44F314713965F +:10A440001601634D060603D6270D162113072004B7 +:10A450006316D606411122C43747024006C60324BC +:10A46000C720232607200F10000083C6970C89CA37 +:10A47000232687205947B24022443A8541018280F1 +:10A480003A212392E70C58212383E70C5831A38308 +:10A49000E70C78212384E70C7031A384C70C01CA30 +:10A4A0000C4503A5C70C9760F91FE780C0E8B747C4 +:10A4B000024023A6872001477DBF31473A8582802D +:10A4C000011126CA4EC652C406CE22CC4AC8AE8955 +:10A4D000328AB684EFD08EA14DC5B737002093875E +:10A4E00087E5631D0A00054798A30145F2406244D1 +:10A4F000D2444249B249224A0561828094230547E9 +:10A500002A846395E600238007008949B747024003 +:10A5100003A9C72023A607200F10000041651305DB +:10A5200045F5EFD02E9E15CD3C253EA58327841101 +:10A530008DE7232CA410232EA410930710F8F914F0 +:10A540001CB523200500231645012304350144C111 +:10A55000B747024023A6272149BF8327C41188C3D8 +:10A56000D9BFB737002083A7070D91C7956593859D +:10A57000555505458297B747024023A627211D451B +:10A58000B5B70945A5B76F802EFD6F803E816F80FE +:10A590009E856F807E8A6F805E906F807E9C6F80CC +:10A5A0001E946F809E9782806F809E9F0343010060 +:10A5B0001AC06F703EC46F705ED06F709ED96F709E +:10A5C000BEDE6F70BEE46F709EEA6F70BEEF6F709C +:10A5D0005EF379711303F00F1AC81AC6034381039F +:10A5E00006D61AC4035341031AC2035301031AC007 +:10A5F000EF709EF6B2504561828003530100035E06 +:10A600004100834E8100034FC100835F010176C486 +:10A610007AC67EC872C21AC06F701EF46F800E8830 +:10A620006F808E9303530100034E4100834EC1009F +:10A6300093F8F80F1378F80F76C672C21AC06F80BD +:10A64000AE966F802EA66F802EAF6F802EBC6F806F +:10A65000CEBF6F800EC36F80CEC76F800ECE6F806F +:10A660000ED2828082806F806EE4797193970501AB +:10A6700026D206D622D44AD04ECEC187AE8463D924 +:10A68000071EB739002003C5594A9760F91FE780B4 +:10A6900020C02A8405C518219307000D631DF7000B +:10A6A0003C2111476365F7028D4663F7D710A5C7B4 +:10A6B0000947638DE7082285EF803D9B2165258D45 +:10A6C000B250225492540259F24945618280CD46DB +:10A6D000E3E3D7FE51476379F712138757FE1377E9 +:10A6E000F70F8546E3E9E6FCB736002003A7C64727 +:10A6F0007D761306F60F718F1031631806166D46BE +:10A700006392C7161367071023AEE64683A7C647B2 +:10A710003705000235AA1C31373900206396072619 +:10A72000930535003735002019461305C54B976052 +:10A73000F91FE78040C08547232EF946854503C5AC +:10A74000594AEF809DCB0325C947A1A81431383160 +:10A7500095EE6312F702373700208327C7478145FC +:10A76000014593F7F7F093E70702232EF746EFE052 +:10A77000ED8D08B089B78547814501456315F70020 +:10A78000EFD03DFCFDB7EFD03DEBE5B7E305F7F2C9 +:10A79000B737002003A5C74741991365650023AE6D +:10A7A000A746B737002083A7C7E5E38607F09C4399 +:10A7B000E38307F0829701B7373900200327C947A1 +:10A7C0001031419B1DEE6395D70213672700232E9E +:10A7D000E946373700208347C74593968701E186CE +:10A7E000E3D306F693F7F707230EF744894581BFB5 +:10A7F000B7370020238C074413673700232EE94620 +:10A8000099B713676700DDBF373900200327C947B1 +:10A8100010311377F7F021E6639ED7021367070123 +:10A82000232EE946373700208347374C939687011C +:10A83000E18663DB060003C5594A93F7F7079145A4 +:10A84000A301F74CEF807DBB8327C9473705000183 +:10A850005D8D81BF13670702232EE946F5B71367A5 +:10A860000703DDBF1367072045B51367073069BDD0 +:10A8700093F71500C9C3B737002083C78745ADCB11 +:10A88000B737002083C7A745B73500209385054615 +:10A890005C82B737002083C707481305610019465B +:10A8A000DC829760F91FE78000A9B737002083C7D3 +:10A8B00097454C005C86B737002083C7874BDC8602 +:10A8C000B737002003C5574AEFD05D8D15C1B737A4 +:10A8D000002003A5C74741991365650023AEA7462D +:10A8E000B737002083A7C7E581C79C4391C38297F0 +:10A8F00013C51400F1B393F72500A9C3B73700209F +:10A9000083C7C745858B85CBB737002003C5574A1A +:10A91000EFD09DB70DC1B737002003A5C74713750A +:10A92000F5F023AEA746B737002083A7C7E581C758 +:10A930009C4391C3829713C5240059B393F74500F4 +:10A940000145E38F07D6B737002083C7374C95CB37 +:10A95000B737002003C5574AEFD0DDB61DC13737E2 +:10A9600000200325C747FD779387F70F7D8DB73705 +:10A97000002083A7C7E5232EA74681C79C4391C328 +:10A98000829713C544002DBB9947232EF94665BB1A +:10A99000B737002083A7C74785E709C5B737002029 +:10A9A00023AEA7E4B73500203735002083C5454ADC +:10A9B0000345554A81470147814601466FF0ED87BF +:10A9C00045458280B737002023AEA7E4828041113D +:10A9D00026C2B734002022C403C4544A06C69307D3 +:10A9E000F00F6308F4006145B240224492444101F3 +:10A9F000828037A506001305A566EF904D90A382CF +:10AA0000A44AE30285FEB737002023AE07E4B73738 +:10AA1000002023AE07460547B73700202382E74AC8 +:10AA2000B73700200D47238DE744B7370020238038 +:10AA300007481D47B7370020A38CE744B7370020ED +:10AA4000238C074AEFB02DC7014579BF01119397B9 +:10AA5000050126CA06CE22CC4AC84EC6C187AE849E +:10AA600063D50718B737002003C507E69760F91FBD +:10AA7000E78000822A8409CD1C2113071009638214 +:10AA8000E7021307000D638CE7082285EF80EDDDF8 +:10AA90002165258DF2406244D2444249B2490561A4 +:10AAA00082801C3139476398E7025A218567938772 +:10AAB0005740E31CF7FCB737002083A747E6F1D7E0 +:10AAC0009443E1D618453C23083383053700A20799 +:10AAD0005D8D82965DBF1307E003E398E7FA3821A6 +:10AAE0009D47E314F7FA4A219760F91FE780C0FAFF +:10AAF00049DD5825A147E31AF7F8B737002083A7A7 +:10AB000047E6C1D79C47D1D332246E204A20711624 +:10AB1000F1154206C2054182C1818297BDB73C2131 +:10AB20001547638AE70A636DF70085C7B7370020CA +:10AB300083A747E6B9DBDC43A9DB22858297B1B75F +:10AB400019476385E7003147E392E7FEEF10F049CC +:10AB5000F1BF1C31E1FFB737002083C7B745B9E328 +:10AB6000B73500203739002041469385854A1305C3 +:10AB700049489760F91FE780008DB73900201DED27 +:10AB800013064948C1450945EF90CDE71386494969 +:10AB9000C1450D45EF900DE7B737002003C507DA33 +:10ABA000EF908DE1373500201946930534001305E9 +:10ABB000C54B9750F91FE78000788DBFB73500204F +:10ABC000414693858546138549499760F91FE7807B +:10ABD00080875DD5C1BF1C31B1FB3225930545008F +:10ABE0002831A146EF10604391B7939715010145B5 +:10ABF000E3D207EA37360020130646EA91451145AD +:10AC0000EF904DE0B737002003C507DAEF90CDDABB +:10AC1000116541B50111B737002006CE2381A72663 +:10AC200091C52E8532C6EF100035324609C6B737BA +:10AC3000002023A2C7E6B737002083C7B74595EBAE +:10AC40003736002037350020F2400346E6450345FD +:10AC500005E6B737002037370020B7360020938746 +:10AC600047EA1307474993864648A14505616FE0C7 +:10AC7000DDDCF240014505618280B737002083C7E3 +:10AC800007E60111C8824C83D08328001946B68597 +:10AC900006CE5C829750F91FE780E0694800EFC05C +:10ACA000DDE0F24005618280B737002083C707E608 +:10ACB0000111C886680006CE5C864C87D087EFC03D +:10ACC0001DCEF24005618280B737002003C507E63C +:10ACD0006FC03DC9B73700202381A74CB73700208C +:10ACE00003C7574A9307F00F630CF700B7370020EC +:10ACF0000547A38DE744B737002031472382E74A51 +:10AD00008280B737002083C7170B011106CE22CCF3 +:10AD100026CA4AC84EC6F19B91EBE144F240624418 +:10AD200026854249D244B2490561828037B5060082 +:10AD30001305C5A437340020EF807DDC130404E63E +:10AD400008A01307F00FE30AE5FCB73700202147FE +:10AD50002382E74AEFF01FF8B737002083C7B745D3 +:10AD60008144CDFFB739002013864948C1450945C4 +:10AD7000EF90AD9F3739002013064949C1450D4575 +:10AD8000EF90AD9E37350020938549484146130525 +:10AD9000854A9750F91FE780005A37350020930500 +:10ADA00049494146130585469750F91FE780A05849 +:10ADB00037360020130646EA91451145EF90ED9A8B +:10ADC0000820EFB04D8F99BF130705041E21110510 +:10ADD00093C7F7FF231EF5FE8347E5FF93C7F7FFF1 +:10ADE000230FF5FEE314E5FE828099473305F50253 +:10ADF00001110A86C14506CE13050520EF90ED9698 +:10AE000009E50886F240056182800145E5BF011130 +:10AE100022CC26CA4AC84EC606CE814401443739E0 +:10AE20000020B7390020834719E7636AF400F24035 +:10AE3000624426854249D244B2490561828083A793 +:10AE4000C9E61315440019469305F00F3E95975037 +:10AE5000F91FE780E06601E5850493F4F40F05042B +:10AE60001374F40FC9B7411122C4373400201304FE +:10AE7000C4E8084006C609C5EF802D9F23200400C2 +:10AE8000B737002003C717E7B2402244B737002086 +:10AE90002385E7E641018280B737002083C7A7E614 +:10AEA0001971A6DA86DEA2DCCAD8AA846390A7024A +:10AEB00037340020130424E708208545EF80EDD7C0 +:10AEC00008208945EF806DD7EFF0FFF9C204C180FB +:10AED0001949338924035000C145130409202285F0 +:10AEE000EF90AD8809C901442285F6506654D654C6 +:10AEF00046590961828019469305F00F4800975022 +:10AF0000F91FE780E05B65F1480041469305F00FCB +:10AF10009750F91FE780C048480871469305F00F25 +:10AF20009750F91FE780C0470818130600049305DF +:10AF3000F00F9750F91FE780A0465000C1452285C9 +:10AF4000EF904DAC50082A84F14513051920EF907D +:10AF50006DAB5008498CF14513052920EF908DAA5F +:10AF60001374F40F5008498CC14513053920EF9034 +:10AF70006DA91374F40F5008498CC145130549207D +:10AF8000EF904DA81374F40F5008498C91451305A8 +:10AF90005920EF902DA71374F40F498C1D651018DC +:10AFA000930500042695EF90EDA5B73700201374A4 +:10AFB000F40F498C03C507DA1374F40FEF90CD9F9B +:10AFC00025B7411122C426C206C601450144B73443 +:10AFD000002083C714E76373F40011C5B240224414 +:10AFE00092444101828022850504EFF0FFEA137448 +:10AFF000F40FC5B7011122CC4EC652C406CE26CAE4 +:10B000004AC80144EF804EA2B7390020373A0020E9 +:10B0100083C719E7636AF400F2406244D2444249AC +:10B02000B249224A056182801309CAE60325090054 +:10B030009314440019469305F00F26959750F91F75 +:10B04000E780004819E583250900A695E835EF80DB +:10B05000EE9D05041374F40F65BF397122DC4ED6E2 +:10B0600052D456D206DE26DA4AD80144EF800E9F2B +:10B07000B7390020373A0020994A83C719E7636B34 +:10B08000F400F2506254D2544259B259225A925AA0 +:10B09000216182801309CAE6032509009314440044 +:10B0A00019469305F00F26959750F91FE780404108 +:10B0B00015E5330554030A86C14513053520EF8095 +:10B0C000DDEA1008C1450945EF803DEA8325090006 +:10B0D00014080A86A695E835EF800E9805041374C7 +:10B0E000F40F61BF011106CEEFF07FD20547A947EB +:10B0F0006373A70089471306F100854513052004F3 +:10B10000DC87EFE04DA9F24005618280011122CC7D +:10B110004EC652C456C206CE26CA4AC80144B739E2 +:10B120000020373A0020994A83C719E7636CF4027C +:10B13000EFF0FFCDB737002083C797E699C3EFF054 +:10B140007FEBB737002083C787E699C3EFF0FFF0A6 +:10B150006244F240D2444249B249224A924A0561CD +:10B160006FF05FF8330554031309CAE6032609009C +:10B1700093144400C145269613050520EF80FDDE9B +:10B180001DC90325090019469305F00F2695975010 +:10B19000F91FE780E0200325090019469305F00F09 +:10B1A000269519059750F91FE780801F832709000E +:10B1B000BE942396040005041374F40FB5B7B73793 +:10B1C000002083C527E72A216F004EA79947B38542 +:10B1D000F502397122DC26DA4AD806DEA147AA84B4 +:10B1E0003289138425206384F60013841520714668 +:10B1F000814548083AC69750F91FE780601A500801 +:10B20000F1452285EF807DD60DE18347E102A54619 +:10B210003247E51793F7F70F63E9F600BA8650084F +:10B22000937519002685EFA0BDB7F2506254D25431 +:10B23000425921618280797122D426D24AD0AE84CB +:10B240002A8932848145130600020A8506D6975062 +:10B25000F91FE780E014B737002083C757DA2310BF +:10B260002101230EF100BC8455C437370020034769 +:10B27000D7E7F99BB73500205882373700200347BE +:10B28000F7E741469385C502D88237370020034748 +:10B29000E7E71305610093761700D58FF59B93764A +:10B2A0002700D58FED9B93764700D58F93164700E7 +:10B2B00093F6061093F7F7EFD58F9316470093F6A2 +:10B2C000062093F7F7DFD58F12071377074093F720 +:10B2D000F7BFD98FFC849750F91FE780C005B737B7 +:10B2E000002083C7C7E713F7170011C789C4B884C4 +:10B2F00013672700F88403476101A2850A85D98F67 +:10B30000230BF100EFA0DD9BB2502254925402595E +:10B310004561828037370020034757E7F99BB735EF +:10B320000020588237370020034777E7414693854E +:10B33000C501D88237370020034767E7130561004E +:10B3400093761700D58FF59B93762700D58FED9BCD +:10B3500093764700D58F9316470093F6061093F720 +:10B36000F7EFD58F9316470093F6062093F7F7DF94 +:10B37000D58F12071377074093F7F7BFD98FFC8457 +:10B380009750F91FE78020FBB737002083C747E7B6 +:10B3900099BF011122CC26CA4AC84EC606CE2A89B8 +:10B3A0000144B7340020B739002083C714E7636B2A +:10B3B000F4003E842285F2406244D2444249B249BC +:10B3C0000561828083A7C9E6131544001946CA8522 +:10B3D0003E959750F91FE780000769FD0504137437 +:10B3E000F40FE1B71D71A2CC373400208327C4E8E5 +:10B3F000D2C4D6C286CEA6CACAC8CEC6DAC02A8AE7 +:10B40000AE8A1304C4E8A5E319E10545F9A8F5DD02 +:10B41000EFF03FF837370020834617E7B7370020B3 +:10B420002385A7E61389A7E6930917E7636DD5027D +:10B430008144373B00200DA08327CBE613954400C1 +:10B4400019469305F00F3E959750F91FE780400786 +:10B4500009E9850493F4F40F83C70900E3EEF4FCD3 +:10B46000BE8423009900B73400201389A4E6B737BF +:10B4700000200345090083C717E79384A4E6E37619 +:10B48000F5F81C40ADEF99473305F5025286C145EA +:10B4900013050520EF801DD7130600049305F00F58 +:10B4A0000A859750F91FE780A0EF034509009D67C3 +:10B4B0000A86930500043E95EF80DDD4834709009A +:10B4C000373700200325C7E692074146D2853E95CF +:10B4D0009750F91FE78020E623205401B73700205A +:10B4E00003C507DAEF805DCD0145F6406644D644DA +:10B4F0004649B649264A964A064B256182809047BE +:10B50000814709CE99473305F502F145130515200A +:10B51000EF805DCF1C4023A4070085471840104BE7 +:10B5200011CE88209947F1453305F50213052520F2 +:10B53000EF805DCD1C4023A8070085471840504B85 +:10B5400011CE88209947C1453305F50213053520F2 +:10B55000EF805DCB1C4023AA070085471840504769 +:10B560000DCA88201949C145330525031305452017 +:10B57000EF805DC988201C40914533052503D047E5 +:10B58000410613055520EF80FDC71C4023A6070088 +:10B59000B1B7A9F7B737002083C797E699C3EFF093 +:10B5A0007FA5B737002083C787E699C3EFF0FFAACE +:10B5B000EFF05FB399BDB737002083C717E70111DC +:10B5C00022CC06CE26CA09446376F50285C5994782 +:10B5D0003305F502AE840A86C14513050520EF80C8 +:10B5E000DD982A8401E919468A8526859750F91F36 +:10B5F000E78060D42285F2406244D24405618280B3 +:10B60000011122CC06CE2A842EC632C49750F91FCF +:10B61000E780804815C95825A1472246B2456310E6 +:10B62000F702B737002083A707E999CF03A34700A4 +:10B63000630C030022856244F24005610283B73740 +:10B64000002083A747E9D5B7F240624405618280B4 +:10B65000011122CC19443304850226CA0A86AE841D +:10B66000C14506CE130404202285EF801D9001C938 +:10B670008144F24062442685D244056182801946A5 +:10B680009305F00F0A859750F91FE78060E36DF18D +:10B6900038869377D70F89C49377F70F93E72700FE +:10B6A000C207C1838544E306F7FC0A86C1452285AB +:10B6B0007C86EF803DB5B737002003C507DAEF8001 +:10B6C000BDAF45BF1D71A2CC2A8419453305A40224 +:10B6D000A6CACAC8B2842E890A86C14586CE130579 +:10B6E0000520EF809D8801C90145F6406644D64497 +:10B6F00046492561828019469305F00F0A859750C7 +:10B70000F91FE780E0DB6DF19D673E94100893051B +:10B7100000042285EF807D8519C10545F9B7080829 +:10B72000EFF08FEA63180904130600048145080846 +:10B730009750F91FE780C0D86DF1130600048145CA +:10B7400008089750F91FE780A0C5B73700200547C4 +:10B7500008082382E7E8EFF02FE7100893050004BC +:10B760002285EF803DAAB737002003C507DAEF80B6 +:10B77000BDA465B71C089008BE868E2236876380FC +:10B7800025039106E31BD6FE0145A5D096233E87EF +:10B7900089C69107E31CF6FE81BF239027013C2355 +:10B7A000E38D97F624A3D5F02310070079BF01118C +:10B7B0004EC6B73700207D57B739002022CC26CAA5 +:10B7C0004AC806CE52C42389E7E69387C909E82709 +:10B7D00037390020373400209304C9E6930520044C +:10B7E0001205A30804E623A004009750F91FE78080 +:10B7F000608588C0130414E705C59389C90983C708 +:10B80000E9001309C9E681441CA01C2063E5F41279 +:10B8100003A78900B737002063010716A3890744EF +:10B820001820B737002005442385E7E6B737002006 +:10B8300023A607E8B7370020238387DA37350020AF +:10B84000B7370020A38E07E64146B7370020814571 +:10B850001305C502A38F07E69750F91FE78040B490 +:10B86000B737002093047007238E07E6B737002010 +:10B87000238F97E6B737002023A007E8B7370020CB +:10B88000A38187DAB7370020238A07E637350020FF +:10B89000B7370020A38A07E64146B7370020814525 +:10B8A0001305C501A38B07E69750F91FE78040AF4A +:10B8B000B7370020238B97E6B737002023AC07E685 +:10B8C000B7370020A38907E61547B7370020A380C4 +:10B8D000E7DAB73700204147A382E7DAB73700201D +:10B8E000238207E80947B73700202381E7DAB73713 +:10B8F000002023AA07E8B737002023A807E8B737B6 +:10B900000020A38407E6B7370020238807E6B7376F +:10B910000020238087DAB7370020A38387DAB73780 +:10B920000020238287DAF2406244D2444249B2497D +:10B93000224A0561828003250900139A44001946B2 +:10B940009305F00F52959750F91FE78060A50325E6 +:10B95000090019469305F00F529519059750F91FE4 +:10B96000E78000A483270900850493F4F40FD2979D +:10B97000239607002387070049BD130700F8A38912 +:10B98000E74479BD757122C5CEDED2DCD6DADAD8CD +:10B9900006C726C34AC10144B73A0020373B0020FE +:10B9A00099491D6A93841AE79C206367F402B737AC +:10B9B000002003C507DAEF803D809820BA402A4472 +:10B9C000B73700202385E7E69A440A49F659665AB4 +:10B9D000D65A465B496182801309CBE603250900EC +:10B9E00093144400194626959305F00F9750F91FBC +:10B9F000E780009B0325090019469305F00F269563 +:10BA000019059750F91FE780A0998327090013199A +:10BA1000040113590901A697B304390323960700BB +:10BA20002387070041469305F00F48009750F91F00 +:10BA3000E780009771469305F00F48089750F91F6B +:10BA4000E7800096130600049305F00F081897503E +:10BA5000F91FE780E0945000C14513850420EF8072 +:10BA60006DFA5008F14513851420EF80ADF95008A8 +:10BA7000F14513852420EF80EDF85008C14513856A +:10BA80003420EF802DF85008C14513854420EF8005 +:10BA90006DF75008914513855420EF80ADF61018CE +:10BAA00093050004330549010504EF80ADF51374D7 +:10BAB000F40FCDBD930705C04111C20722C406C6CD +:10BAC000C183130720022E846367F71237E706004D +:10BAD0008A0713074754BA979C438287B7370020D9 +:10BAE00083C767DA1CA01DA8B737002083C7C7E744 +:10BAF00089873DA8B737002083C7D7E7E5B7B737B1 +:10BB0000002083C7F7E7F9BFB7350020414693858A +:10BB1000C50222859750F91FE780E0818147B24036 +:10BB200022443E8541018280B737002083C7C7E7A2 +:10BB3000858B4DBFB737002083C7E7E765B7B737B9 +:10BB4000002083A707E81CC0D1BFB737002083C7F8 +:10BB500037DA49BFB737002083C747E751BFB73748 +:10BB6000002083C757E7BDBFB737002083C777E7FB +:10BB700095BFB735002041469385C50159BFB737FA +:10BB8000002083C747E76DB7B737002083C767E753 +:10BB900091BFB737002083A787E775B7B737002075 +:10BBA00083C737E781B7B737002083C717DA1DBFD0 +:10BBB000B737002083C757DA35B7B737002083C7B8 +:10BBC00097E60DB7B737002083C787E621BFEFF0B0 +:10BBD0000FA408A0A1B7B737002083C747DA19B769 +:10BBE000B737002083C7C7E78D8799B7B7370020DD +:10BBF00083C747E7D5BF130710048947E361A7F25E +:10BC0000EFA04DA40AA019BF011106CE22CC26CA6E +:10BC10004AC84EC652C456C2EFA06DEF51E937393B +:10BC20000020130909E703470900B73400208547BE +:10BC30002A84938414E7630EF702373A0020854A7A +:10BC40009C206374F4049309CAE603A7090013193E +:10BC500044004A977C27639A57012285EFF0CFA3CF +:10BC600083A70900CA972387070005041374F40FFC +:10BC7000C1BFEFF00FB5B737002083A7C7E6982004 +:10BC800023000900B907631EE400EF808DFD6244C4 +:10BC9000F240D2444249B249224A924A05616FF0C9 +:10BCA000EFC60504238007001374F40FC107E1BF3A +:10BCB000F2406244D2444249B249224A924A056162 +:10BCC0008280797126D24AD04ECEB734002006D673 +:10BCD00022D452CC8947AE893289938414E7630712 +:10BCE000F506636FF5008D47630FF50A8020228506 +:10BCF000B250225492540259F249624A45618280FC +:10BD00002E85EFF00FE99C202A84E372F5FEE30014 +:10BD100009FE1946CE854A859740F91FE780A06144 +:10BD2000F9B78327CAE61315440019463E95CE8518 +:10BD300019059740F91FE780007121ED0504137480 +:10BD4000F40F9C20E36FF4FC3E8455B70144373A6E +:10BD50000020C5BF05041374F40F9C20E376F4FEA5 +:10BD6000330544030A86C145130535204205418148 +:10BD7000EF80AD9F65F141469305F00F0A8597402E +:10BD8000F91FE780E07379F5CE850A85EFA04D9322 +:10BD900071F19C20E37DF4F4E30B09F4CA8522855C +:10BDA000EFF07F81A9B70144194A45BF79714AD0A4 +:10BDB00006D622D426D22A8902CC231E010097500F +:10BDC000F91FE78060CD21C1B7340020938434DAB5 +:10BDD000982089476309F702930565002A84483152 +:10BDE0003008EFF01FEEB737002083C717E7637204 +:10BDF000F5022AC6EFE07FFFB2452A860547A14635 +:10BE00004A85EFF0AFBCB2502254925402594561BA +:10BE100082809C2091E795454A85EFA06DCCE5B7DF +:10BE20000547E392E7FE4C3001464A85EFF0AFC08C +:10BE3000D9BF0111C1674AC806CE22CC26CA4EC658 +:10BE4000FD172E89630DF5069750F91FE780C0C4D2 +:10BE50002A84D14429CD9305650048310146D54453 +:10BE6000EFF03FE6B737002083C717E76376F500AA +:10BE7000CA85EFF0EFFD8144630B09022285EFF0E4 +:10BE80000FB435A0CA852285EFF08FFC11C1814423 +:10BE900005041374F40F83C719E7E365F4FE630820 +:10BEA000090037B506001305E51BEF304E8CF24054 +:10BEB000624426854249D244B249056182800144E8 +:10BEC000D544B7390020C1BF0111C1674AC84EC669 +:10BED00006CE22CC26CA52C4FD172E89B28963022F +:10BEE000F5069750F91FE78020BBD14431C1930577 +:10BEF000650048310146D544EFF0BFDCB73700207C +:10BF000083C717E76376F5024E86CA85EFF08FFB8D +:10BF1000814439A84E86CA852285EFF0AFFA11C157 +:10BF2000814405041374F40F83471AE7E364F4FEB5 +:10BF3000F240624426854249D244B249224A056110 +:10BF400082800144D544373A0020F9BF411122C410 +:10BF500037340020130424E70C20B737002023AA2D +:10BF6000A7E8614506C6EFA08DC408202244B24070 +:10BF700041016F007EEF411122C4373400201304C9 +:10BF800024E70C20B737002023A8A7E8614506C6A0 +:10BF9000EFA0EDC108202244B24041016F00DEEC69 +:10BFA000411106C622C426C29DE5AA85AA8437454A +:10BFB0000F00130505243375A602EF909DEA2A842D +:10BFC00009C585452685EFA0ADB12285B240224442 +:10BFD000924441018280EFA0ADB00144FDB7411110 +:10BFE00006C699E9B287B6852A863E85EF30BEE35C +:10BFF000B240014541018280EFA08DAED5BFB73779 +:10C000000020938767DA9823136707F898A3B73758 +:10C01000002083C5C7E76FA06DA11971A6DAB284AD +:10C020005000CAD8D2D486DEA2DCCED62A89368A7F +:10C0300002C223140100EFF0DFC8B737002083C726 +:10C0400017E76370F5102A84EFE03FDA9147AA8979 +:10C050006310FA0EB737002003C767DA91467917E5 +:10C0600013371700A285420441801949330924037C +:10C070004E862685EFF08F955146814568009740A2 +:10C08000F91FE780E0317000C145420913590901E9 +:10C090001305492042054181EF703DED05E9414618 +:10C0A0009305F00F68009740F91FE780604119ED94 +:10C0B000130559204205700891454181EF70FDEA52 +:10C0C000700093F519002685EFA0ED9A1D65229565 +:10C0D00042051010930500044181EF701DE905E150 +:10C0E0000810EFE07FCE0010130901060E2089C56D +:10C0F00030202685EFF0BDA61104E31989FE93F9DF +:10C10000290063890900B737002083C527E7268502 +:10C11000EFF0CDB29147631AFA04B737002003C796 +:10C1200067DA89476313F7042685EFF05FED35A8DA +:10C13000B737002003C737DAD286791713371700CD +:10C1400015B7A147E318FAFCB737002003C737DA61 +:10C150008947631CF7000146CA852685EFF0AF8D3D +:10C16000014681452685EFF0AFC9F6506654D65496 +:10C170004659B659265A014509618280B7370020D1 +:10C1800023A4A7448280011106CE2AC6EFF02FE235 +:10C190003245F240B73700202389A7E605616FE0FA +:10C1A000FFF61D7186CEA2CCA6CACAC8CEC6D2C41E +:10C1B000D6C2DAC0EF708E8AB737002083C777DA2D +:10C1C00099CB0144373A0020B73A0020194B8347F6 +:10C1D0001AE7636CF400F6406644D6444649B64913 +:10C1E000264A964A064B256182809389CAE603A5B2 +:10C1F00009001319440019469305F00F4A9597401A +:10C20000F91FE780E02B39E5B30464035010F145D2 +:10C210001385142042054181EF703DD505ED03479C +:10C22000F1039307F00F6317F702138534204205DB +:10C230005000C1454181EF705DD35008C1450945AB +:10C24000EF70BDD283A5090054085000CA95E835A7 +:10C25000EF708E8005041374F40F95BF930705C02B +:10C260005D71C207A6C2CAC086C6A2C44EDE52DC39 +:10C2700056DA5AD8C183130720022A89B284636927 +:10C28000F75437E706008A071307075DBA979C4300 +:10C29000828785476384F500614411A81C22094701 +:10C2A000E36CF7FE373700202303F7DA01442285D9 +:10C2B000B640264496440649F259625AD25A425B25 +:10C2C000616182808547E399F5FC1422E3E6D5FCA1 +:10C2D000373700201307C7E71C23E1CA93E747005D +:10C2E0001CA3E9B78547E399F5FA1C221147E365DA +:10C2F000F7FA37370020A30EF7E64DBF8547E39DD9 +:10C30000F5F81C22E3EAF5F837370020A30FF7E62B +:10C3100071BFC147E392F5F8373500204146A68545 +:10C320001305C5029740F91FE780E00041B7854734 +:10C33000E394F5F61422E3E1D5F63737002013072E +:10C34000C7E71C23E9C293E7170059BF8547E39568 +:10C35000F5F41822B7370020238FE7E681BF914715 +:10C36000E39CF5F21842B7470F009387F723E3E504 +:10C37000E7F2B737002023A0E7E80DBF8547E39D2C +:10C38000F5F01C220947E369F7F037370020A301D5 +:10C39000F7DA29BF8547E391F5F01422E3EED5EEF5 +:10C3A00037370020130747E705BFED9B15BF8547CB +:10C3B000E394F5EE1C221147E360F7EE37370020D7 +:10C3C000A30AF7E6E5B58547E398F5EC1C22E3E51B +:10C3D000F5EC37370020A30BF7E6C9BDC147E39D55 +:10C3E000F5EA373500204146A6851305C5011DBF76 +:10C3F0008547E393F5EA1422E3E0D5EA37370020D6 +:10C40000130747E73DBFF99BE1BD8547E396F5E894 +:10C410001822B7370020238BE7E649BD9147E39DFB +:10C42000F5E61842B7470F009387F723E3E6E7E600 +:10C43000B737002023ACE7E695BDE39F05E4EF9016 +:10C440001DED01E9EFE0FFB7EF80AD81EFE01FCC1C +:10C45000B1BDB737002005472388E7E681BD9D477A +:10C46000E39CF5E293851400194668009740F91F94 +:10C47000E78060EC882050086C00EFF09F84B737AD +:10C48000002083C717E7AA840944E372F5E248084D +:10C49000EF201E8E09E52685EFE01FA075B7B737A0 +:10C4A000002083A7C7E692045944BE948547FCA4A4 +:10C4B000FDBB9D47639AF50A1946938514006800F1 +:10C4C0009740F91FE78020E7882001466C00EFF0D5 +:10C4D0004FFFB737002083C717E76379F504994406 +:10C4E000B30495025008F14593841420C204C1801E +:10C4F0002685EF709DA72A8405E91307A04185478B +:10C500006304E9009307F00F5008F1452685A3075F +:10C51000F102EF703DCFB737002003C507DAEF70A7 +:10C52000BDC9EFF01FC861B30944E5BFB7370020AC +:10C5300083C737450944E38C07D637370020930675 +:10C54000A04183474745631DD90093E7170037355E +:10C550000020230AF7441D46A6851305C544D9B318 +:10C56000F99B230AF74499B38547E397F5D2373708 +:10C5700000209306A041834747456315D50093E704 +:10C580002700C5B7F59BF1BFB7370020A38307DAB3 +:10C59000EFF03FC121BBB73700200547A383E7DA9F +:10C5A0000144373900209949130AF00FFD5A373BEF +:10C5B0000020834719E7E37DF4FCB30434035008FB +:10C5C000F145938414202685EF703D9A05E1834759 +:10C5D000F102638D47015008F1452685A3075103F9 +:10C5E000EF705DC203450BDAEF701DBD05041374D7 +:10C5F000F40FC1B78547E391F5CA1C22E3EEF5C8F5 +:10C6000037370020A309F7E655B18547E396F5C80B +:10C610001C222547E362F7C837370020A300F7DA6A +:10C6200071B18547E39AF5C61822A546930797FF8F +:10C6300093F7F70FE3E2F6C6B7370020A382E7DAF5 +:10C64000B5B18547E39AF5C4B7370020938797E6DD +:10C6500018229423014498A3E39B06C4E319B7C4AA +:10C66000EFE0DFAAA9B18547E398F5C2B73700200C +:10C67000938687E698209022138487E698A209E69D +:10C680006314B700EFE09FA80820EF607EBD39B9C2 +:10C690008547E393F5C01C220D47E36FF7BE37379C +:10C6A00000202301F7DA19B18547E397F5BE182278 +:10C6B000B73700202380E7DAD5BE0545EF70DDAF40 +:10C6C000F5B68547E39AF5BC1822B73700202382D8 +:10C6D000E7DAE9BE93074002E390F5BC88300146F3 +:10C6E00093852400EFF0EFDDB737002083C717E70D +:10C6F000E374F5BA1944330485029820A1471374F2 +:10C70000F40F6312F70409041374F40F4204418018 +:10C710005008F1452285EF705D85E31F05B69385CE +:10C72000840048086D469740F91FE780C0C0500854 +:10C73000F1452285EF701DADB737002003C507DA3C +:10C74000EF709DA791BE0504C1B7B737002003D78E +:10C75000C70A930740046D44E3FBE7B48547E39DB4 +:10C76000F5B21C22E3EAF5B285C3B737002083A7F0 +:10C7700087445544E38D07B2B73700209387C7E756 +:10C7800098231367870039A0B73700209387C7E73E +:10C7900098235D9B98A319BEB737002003D7C70A1B +:10C7A000930740046D44E3F4E7B08547E396F5AEA4 +:10C7B0001C22E3E3F5AEE9DBB737002083A787440B +:10C7C0005544E38607AEB7370020938747E74DBF50 +:10C7D000930710040944E3EC27ADE39A85AC8E205F +:10C7E0004A85EF90DDBC2A84D9B4797106D622D46B +:10C7F00026D24AD03C215147E91793F7F70F6369D6 +:10C80000F70237E706008A071307C765BA979C4304 +:10C810002A848287262550255435268532C636C47B +:10C820009740F91FE7804027AA87A246324619E1C0 +:10C8300085443DA2D827A147130534006318F702A9 +:10C84000B737002083A707E9A68589C79C4399C30A +:10C850008297F9BFB737002003A587E7EF906DE017 +:10C8600061D985452685EF90BDA7D9B7B737002098 +:10C8700083A747E9A68599C39C43F9FBB7370020F6 +:10C8800003A507E8E1BF2E252E852EC49740F91F8A +:10C89000E7808020AA8749DDD827A1471305340007 +:10C8A0001306C4009306C401A245631BF700B73703 +:10C8B000002083A707E9ADDF9C47BDDB82978DBFD2 +:10C8C000B737002083A747E9FDB71C31DDEF7C2196 +:10C8D000858BC5CFB737002083A7C7E80149DDE7BF +:10C8E0008145414608089740F91FE78060AB4C48F6 +:10C8F000BDCDFC291946C105A30FF10008089740DA +:10C90000F91FE78040A37C20B8868987858BD98F63 +:10C91000FC86EFE0CFCFB737002083C717E76391DE +:10C92000A702B737002083C747DA99C3EFF08F8596 +:10C93000B737002083A7070D81C78545214582971A +:10C94000EFE0EFCCA2850808EFE0DFA9AA84554903 +:10C9500015EDB737002003C527E78945EF60FDA92E +:10C96000B2502254268502599254456182804A2051 +:10C9700085449740F91FE78020127DD15C3119462C +:10C9800093056500A30FF10095BF014910304A20BF +:10C990008545EFE0FFC6E30D09E84A868D454A204C +:10C9A000EFE01FC671B518319947631BF7024A21A2 +:10C9B0009740F91FE780400EAA841DC1B7370020B9 +:10C9C00083C727DA09476386E7020D47638DE700CF +:10C9D00005476397E7004C314A200146EFE0BF85E9 +:10C9E000103089456DBF0146814513050041EFF0C8 +:10C9F000FF864E2088201546EF90BD91D5B7930550 +:10CA0000450028310146EFF0CFABB737002083C790 +:10CA100017E7E37FF5E099473305F5021306C400F5 +:10CA200091451305552042054181EF70ADFDB737A3 +:10CA3000002003C507DAEF702DF8DDBBB737002003 +:10CA400083C737E74A2191C7B737002083C517DA74 +:10CA500019BDB737002083C767DA99E3954521B53B +:10CA60009740F91FE7804003AA84E30305DC3C24D8 +:10CA7000858B9DC74831854763F4A7025E2493F7F1 +:10CA8000072099EF100893856400EFF08FA3B73764 +:10CA9000002083C717E76395A7008D454A20E1B3BF +:10CAA000CC304A2013068400EFE0EFF801468145C0 +:10CAB000FDB54A21EFF08FAFA5BB4A21EFF0CF942F +:10CAC000B7370020938767DA98231377F70798A37F +:10CAD00085B379719397050122D406D626D24AD020 +:10CAE0004ECE52CCC1872E8463D1070AB7370020BF +:10CAF00003C527E79730F91FE7808079AA8431C101 +:10CB00001C211307100B6389E7041307000D6384CE +:10CB1000E7021307000B6393E7025821F9476316F6 +:10CB2000F7002A218145EFF0CFB0CC201385840097 +:10CB3000EFD03DB321A0EFF05FCB01C52685EF60BC +:10CB4000CDD2A164A18CB2502254268502599254B0 +:10CB5000F249624A456182805C21EDF312256E2123 +:10CB60002A2137390020130949E823000900EFF092 +:10CB7000AFB583470900F9D3B737002003C507DAFB +:10CB800023000900EF704DE355BF93F7250095C3CF +:10CB900081450145EFE01F85B7370020934424000D +:10CBA000938727E7854511E189458823EF60FD8458 +:10CBB00059BF93F71500F9CBB739002083A7C9E80F +:10CBC000B73400209389C9E803DA470083A784E8D3 +:10CBD000938484E885E33737002037F60600C16583 +:10CBE000130787E989461306468FFD150545EFF0C3 +:10CBF000AD9B88C08C40134414009DE983A70900B5 +:10CC000001468545CA2393140401C180EFE05F9F6C +:10CC100083A7090001468D45CA23EFE07F9EB73701 +:10CC2000002003C507DAEF702DD9EFE0CFA321BFB5 +:10CC300037390020035689E99308F00F09488147E6 +:10CC40001307E10074005285EFF0ADE6130989E99E +:10CC500019E990861C8622065D8E11C69C4052857D +:10CC6000AE27EFF06FA6884003560900C1658146E4 +:10CC7000FD15EFF0EDD888C093140401C1803DDDAF +:10CC8000B7370020854503C527E70DB793F7450063 +:10CC90008144E38A07EA93C4450075B5939705017B +:10CCA000C18763D80706B737002003C5574A41112B +:10CCB00022C426C206C6AE849730F91FE780405DC5 +:10CCC0002A8429C118219307000D631AF7023C2119 +:10CCD00091EF1C3181EF930535003735002019465F +:10CCE0001305C54B9730F91FE780E064B737002084 +:10CCF00083A7C7E989C79C4399C322858297228568 +:10CD0000EF60ADB6B24022442165258D92444101C9 +:10CD100082800145828009C5B737002023AEA7E88D +:10CD200037360020373500200346E6450345554A8F +:10CD300081470147814689456FC03DD0B737002004 +:10CD400083C7574A0111C886680006CE5C864C87A7 +:10CD5000D087EFA0DDC4F24005618280B7370020A4 +:10CD600003C5574A6FA0FDBF411126C2B73400204A +:10CD700022C403C4544A06C69307F00F6308F400A4 +:10CD80006145B240224492444101828037D5060079 +:10CD90001305C5C9EF60BDD6A382A44AE30285FE90 +:10CDA000B737002023AE07E80947B73700202382B2 +:10CDB000E74AEF904D900145E9B73421F14763ED23 +:10CDC000D72C37E70600939726001307076BBA970F +:10CDD0009C43011122CC06CE26CA4AC84EC62A84DC +:10CDE00082871C3137390020C5EBB7350020B734B6 +:10CDF000002041469385854A138544489730F91FA2 +:10CE0000E7806064B73900203DE913864448C14596 +:10CE10000945EF702DBF13864949C1450D45EF7097 +:10CE20006DBEB737002003C507DAEF70EDB83735B0 +:10CE30000020930534001305C54B19469730F91FA0 +:10CE4000E780604F8547232EF946B737002003C59A +:10CE5000574A8545EF606DDA0325C947B73700208B +:10CE600083A707EABDC303A3070063000306A285E7 +:10CE70006244F240D2444249B24905610283B73567 +:10CE80000020414693858546138549499730F91F0F +:10CE9000E780605B3DD961BF9947232EF9466DBF9E +:10CEA00018313C3129E709476398E70237370020FA +:10CEB0008327C7478145014593F7F7F093E70702BA +:10CEC000232EF746EFB09D9808B0F2406244D2445A +:10CED0004249B24905618280054781450145639514 +:10CEE000E700EFB01D86CDB7EFB00DF5F1BF0947F4 +:10CEF000E38DE7FCB737002003A5C74741991365C9 +:10CF0000650023AEA74699BF1C31B7340020BDEBA6 +:10CF10008D47639AF604373700208347C7459396B9 +:10CF20008701E18663DD060093F7F707230EF744D8 +:10CF3000B737002003C5574A8945EF600DCC83A75A +:10CF4000C447914613F7F7006318D700C19B93E7D6 +:10CF5000570023AEF4469DA08946E308D7F6C19B4F +:10CF600093E72700FDB703A7C447B7370020238CFA +:10CF700007449546937707FF3D8B631CD70493E7DF +:10CF80004700C1BF83A7C447C19B93E76700D1B7E0 +:10CF9000B734002083A7C4471831C19B1DE393E732 +:10CFA000470023AEF44632259305450028319146CB +:10CFB000EFF0AF86B7370020238C074403A5C447A2 +:10CFC00071BD93061003E312D7FC37370020230C02 +:10CFD000074493E73700B5BFEFF03F8137370020B4 +:10CFE0008327C747954613F6F700C19B13E5370023 +:10CFF0006314D60013E52700232EA74685B5B73462 +:10D00000002083A7C447183193F7F7F039E74D475D +:10D010006390E60493E707013737002023AEF44618 +:10D020008347374C93968701E18663DD060093F7CB +:10D03000F707A301F74CB737002003C5574A9145BE +:10D04000EF60ADBB83A7C447370500015D8D39B5DF +:10D0500093E7070223AEF446F5B793E70703DDBF76 +:10D06000373700208327C7477D761306F60FF18FE9 +:10D07000103105E26D46639BC60093E70710232E2F +:10D08000F7468327C74737050002C9B793E707204C +:10D09000FDB793E70730E5B78280182193061009A2 +:10D0A0006307D7009307000D6302F70482801431F1 +:10D0B0003947639FE6025621056713075740639976 +:10D0C000E60218459307F007830537006382F502EF +:10D0D000B737002083A707EA81CF03A3470063097E +:10D0E00003003C230833A2075D8D02836FF0FFCC61 +:10D0F000828001119397050126CA06CE22CCC187F2 +:10D10000AE8463D5070CB737002003C5574A973064 +:10D11000F91FE780E0172A8419C9B737002083C7B1 +:10D12000B74589EFEFF07FF72285EF501DF42165B9 +:10D13000258DF2406244D244056182801C21130790 +:10D14000000D639DE7043C2181E7EFF01FF501A886 +:10D150001547639EE7005825A147E395E7FCB737DD +:10D16000002003C5274CA285EF501DF5C9B7214704 +:10D17000E38DE7FC99466394D7007C31F9BF1D47E6 +:10D18000E392E7FA4A219740F91FE780E09049DDF2 +:10D190005825A1472285E317F7F8D1B71307200ACE +:10D1A000E382E7F813071009E391E7FA1831B9476A +:10D1B000E31DF7F85A21856793875740E317F7F87F +:10D1C00018453C230833A2075D8D75BF9397150161 +:10D1D00063D2070237360020130646EA914511450F +:10D1E000EF704D82B737002003C507DAEF60DDFC32 +:10D1F00011653DBF93F71500D1CFB737002083C726 +:10D200008745A5C3EF107EDCB737002083C7170B17 +:10D210008D8B636BF5048D475C82B737002083C725 +:10D2200097454C005C86B737002083C7874BDC8668 +:10D23000B737002003C5574AEFA05DF61DC1B737C9 +:10D24000002003A5C74741991365650023AEA74693 +:10D25000B737002083A707EA89C79C4399C3814554 +:10D26000829713C51400F1B5B737002083C7A745CF +:10D27000B735002019465C82B737002083C70748BE +:10D280009385054613056100DC829730F91FE7801E +:10D29000800A61B793F72500B1C3B737002083C771 +:10D2A000C745858B8DCBB737002003C5574AEFB0F4 +:10D2B000AD9D15C1B737002003A5C7471375F5F01D +:10D2C00023AEA746B737002083A707EA89C79C4348 +:10D2D00099C38145829713C52400A1BD93F74500EA +:10D2E0000145E38807E4B737002083C7374C9DCB5F +:10D2F000B737002003C5574AEFB0CD9C05C5373777 +:10D3000000200325C747FD779387F70F7D8DB7373B +:10D31000002083A707EA232EA74689C79C4399C309 +:10D320008145829713C5440029B5797122D426D24C +:10D3300006D6AA842EC6328436C43AC23EC097307E +:10D34000F91FE780607529C10358E500B24582479F +:10D350001247A246636BB800636904011229631681 +:10D36000D60032296145630CE600EC843E862C0829 +:10D370002685E085F486F887EF10BE890145B25016 +:10D3800022549254456182805145D5BF0111B7376F +:10D39000002006CEA380A72691C52E8532C6EFE0D9 +:10D3A000FFBA3246B737002083A7C747B1E309C6A3 +:10D3B000B737002023A0C7EA37360020B735002052 +:10D3C00037350020F2400346E64583C5454A03450C +:10D3D000554AB737002037370020B73600209387EB +:10D3E00047EA130747499386464805616FC0EDE455 +:10D3F000F240454505618280B737002083C7170B8F +:10D400008D8B91EB614582806145B240224492440C +:10D41000024941018280411126C2B734002022C452 +:10D4200003C4544A06C64AC09307F00FE31EF4FC37 +:10D4300037D506001305250FEF606DECA382A44AD3 +:10D44000E30485FCB737002023A007EAB7370020A4 +:10D45000114723AE0746B73700202382E74AB73487 +:10D460000020EF805DA541468145138544489730F3 +:10D47000F91FE780E0F2373400204146814513056B +:10D4800044499730F91FE780A0F1B7370020238D7A +:10D490000744B73700201D4723800748B7370020CF +:10D4A000A38CE74437390020B7370020138644485F +:10D4B000C1450945238C074A232209EAEF60FDAAEA +:10D4C00013064449C1450D45EF603DAA373500209C +:10D4D0004146938544481305854A9730F91FE780F4 +:10D4E00080E53735002041469305444913058546BC +:10D4F0009730F91FE78020E4130649EA914511456A +:10D50000EF60BDA6014511B7B73700207D5793875F +:10D51000C725D8B3F8A3B737002085462382074A2A +:10D52000B7370020238CD744B7370020994623A271 +:10D5300007EAB7370020239CD7468567938707C83B +:10D54000B73600202391F648B7370020238F0744D1 +:10D55000B7370020A38D0744B73700202381E74C5D +:10D56000373500209D4737370020A30EF744194672 +:10D57000373700208145130505462303F746173347 +:10D58000F91F6700E3E1930705D04111C20722C4E8 +:10D5900006C6C1835D472E846368F71037E706002F +:10D5A0008A0713074772BA979C438287B7370020D0 +:10D5B00083C7474A1CA03DA0B7350020414693854C +:10D5C000454822859730F91FE780E0D621A8B73576 +:10D5D0000020414693854549EDB7B737002083A722 +:10D5E00047EA9CC18147B24022443E854101828086 +:10D5F000B735002019469385C54BE1B7B7370020F2 +:10D6000083C7874545BF2E85EFB00DB1E1BF2E859D +:10D61000EFB0EDB2C1BFB737002083C7A74559BFF0 +:10D62000B737002083C7074871B7B73500201946C0 +:10D630009385054679B7B737002083C797459DBFC7 +:10D64000B737002083C7874BB5B7B737002083A70C +:10D65000C7478DB7B737002083C7E745A1BFB737A6 +:10D66000002083D787471EA0B5BFB737002083D7D8 +:10D670002748D5BFB737002083C7D74525BFB73761 +:10D68000002083C767463DB72E85EFB0ADAE99BF8A +:10D69000B737002083C7C74593F7F70721BFB737D0 +:10D6A000002083C7374C39B7130710048947E36C50 +:10D6B000A7F2EF802DF90AA035B79307F5CFC2077F +:10D6C000C183D9462A872E8863EFF62AB7E606007B +:10D6D0008A0793864678B6979C43411106C6B28561 +:10D6E000428582874147E1476310E80437350020CF +:10D6F0004146130545489730F91FE780C0C325A070 +:10D700004147E1476312E8023735002041461305DF +:10D710004549D5B71147E1476318E8001842B737C4 +:10D72000002023A2E7EA8147B2403E854101828082 +:10D730000547E147E31AE8FEB7370020182283C601 +:10D740008745238CE744814785C679FF373700201A +:10D750000327C74789463D8B6305D7009546E315E8 +:10D76000D7FCB737002003C5574AEFA0BDB965BF46 +:10D7700045DF373700200327C747630607013D8B86 +:10D780007517E363E8FA8545B737002003C5574AA4 +:10D79000EF50BDC649BF9307C01C63E2071F63007B +:10D7A000061EB24041016FA03DE99307C01C63E82B +:10D7B000071D6306061CB24041016FA09DF8054796 +:10D7C000E147E313E8F61822A946E3EFE6F4B7379A +:10D7D0000020238DE74481BF0547E147E316E8F4C5 +:10D7E00018228D46E3E2E6F4B73700202380E748AD +:10D7F0001DBF1947E147E319E8F237350020194604 +:10D8000013050546CDBD0547E147E31FE8F01822A3 +:10D810009D46E3EBE6F0B7370020A38CE74421B741 +:10D820000547E147E312E8F018228D46E3EEE6EE05 +:10D83000B7370020238CE74AFDB50547E147E315DC +:10D84000E8EE1822B7370020238FE744E9BD0947E7 +:10D85000E147E31BE8EC122205671307A7C793060D +:10D86000A6FFC206C182E361D7ECB7370020239C34 +:10D87000C74655BD0947E147E318E8EA12220567A4 +:10D880001307A7C79306A6FFC206C182E36ED7E8B7 +:10D89000B73700202391C74879B50C22B73700204D +:10D8A000A38EB744B737002003C667460145EF5043 +:10D8B000BE9B95BD1022B73700202383C746B737DC +:10D8C000002083C5D745DDB79307C01C63E9070B6C +:10D8D0005DC6B24041016FA07DF70547E147E31502 +:10D8E000E8E4373700208346C7451C22858A230E8B +:10D8F000F74413F6170091C6E31706E2EFA09DBBAD +:10D900001DB5E30206E2B736002083A6C647894567 +:10D91000B98AE39B06E693E707F8230EF74421B59F +:10D920000547E147E312E8E0373700201C22834631 +:10D93000374CA301F74C91C6E39707DEEFA07DBA01 +:10D94000DDB3E38207DEB736002083A6C64793F631 +:10D95000060F99C291450DBD93E707F8A301F74C57 +:10D96000D9B39307100463EEE70089468947E31DA6 +:10D97000D8DAB2400E223A8541016F805DA3E147BB +:10D9800065B3894755B39307100463E8A700894638 +:10D9900089476395D5000E22CDB789473E858280A1 +:10D9A0006F505E87011122CC41462A84AA850A85E0 +:10D9B00006CE9730F91FE7800098282093053400A1 +:10D9C000EF70BDAF48810A85EF503E91F24062444E +:10D9D000056182806F50FE906F507E9001488147B4 +:10D9E0006F501E85011106CE2AC69730F91FE780B9 +:10D9F000A00A01C9B245F24008214D4605616F8079 +:10DA00005D91F2404945056182806F503E866F50BE +:10DA10003E906F503E82411122C42A840A2106C6DC +:10DA20009730F91FE780400719CDB737002003C7AB +:10DA3000274C22852244B240B7370020A381E72635 +:10DA400041016F501E8CB240224409454101828041 +:10DA50006F50FE896F505E8A6F50DE8B6F509E8EC6 +:10DA6000011122CC06CE1C212A8489C73737002019 +:10DA7000A301F7261C3081EF08302C206244F240CD +:10DA8000B7370020238EA71A05616F501E847C24AF +:10DA90008348D4000348C4003EC038243C341624D4 +:10DAA00072204E202820EFB0AFF879D5F2406244C2 +:10DAB000056182806FC0FF886FC09F97411106C6C5 +:10DAC000EF209FC337E50400130545A9EF602D83C0 +:10DAD000EFF03DE4376504001305C545EF602D8286 +:10DAE000EF809D9337A504001305056BEF602D8132 +:10DAF000EFC0FDB83705050013056515EF602D80F3 +:10DB0000EF204EFB37D50600130525ADEF503DFF46 +:10DB1000EFE06FE737D5040013052505EF503DFE14 +:10DB2000EFF04DCFB24041016FF00FA4411106C696 +:10DB3000EF701EF537E50400130545A9EF503DFCD5 +:10DB4000EFF03DDD376504001305C545EF503DFBA3 +:10DB5000EF809D8C37A504001305056BEF503DFA4F +:10DB6000EFC0FDB13705050013056515EF503DF910 +:10DB7000EF204EF437D50600130525ADEF503DF8E4 +:10DB8000EFE06FE037D5040013052505EF503DF7B2 +:10DB9000EFF04DC8B24041016FC07FE3411106C6AE +:10DBA000EF30FFE137E50400130545A9EF503DF5DF +:10DBB000EFF03DD6376504001305C545EF503DF441 +:10DBC000EF809D8537A504001305056BEF503DF3ED +:10DBD000EFC0FDAA3705050013056515EF503DF2AE +:10DBE000EF204EED37D50600130525ADEF503DF182 +:10DBF000EFE06FD937D5040013052505EF503DF050 +:10DC0000EFF04DC1B24041016FF00FFF411106C668 +:10DC1000EFC06EA9B737002083C7574A1307D00F4C +:10DC2000FD1793F7F70F6372F70637E50400130546 +:10DC300045A9EF50DDECEFF0DDCD376504001305AD +:10DC4000C545EF50DDEBEF802DFD37A50400130532 +:10DC5000056BEF50DDEAEFC09DA237050500130507 +:10DC60006515EF50DDE9EF20EEE437D5060013052A +:10DC700025ADEF50DDE8EFE00FD137D504001305F7 +:10DC80002505EF50DDE7EFF0EDB8B24041016FD070 +:10DC90004F8741113707002006C6B707002013073A +:10DCA000077D98C3372700201307273DD8C3373790 +:10DCB0000020130747CE37360020B7050020370570 +:10DCC000040098C7130606D2938505041305052B97 +:10DCD0009720F91FE780003437360020B735002041 +:10DCE00037F50600130686DA938505D2130585926B +:10DCF0009720F91FE7800032B24041011723F91F36 +:10DD0000670063329761F91F9381C12F1721FA1FB2 +:10DD10001301412F1725FDFF1305C5569725F91F40 +:10DD20009385452F1726F91F1306C63163FCC500DE +:10DD30008322050023A0550011059105E3EAC5FEE5 +:10DD4000EFF03FF57300203011CE93070002918F62 +:10DD5000635BF0003355C500B397F50033D6C500BB +:10DD60005D8DB2858280130506FE014633D5A50080 +:10DD7000B285CDBF11CE93070002918F635BF00097 +:10DD8000B395C500B357F5003316C500DD8D328558 +:10DD90008280930506FE0146B315B5003285CDBFDE +:10DDA000B687B2882A832E88639B061463F8C50A57 +:10DDB0004167636BE61AB70700016360F634935658 +:10DDC0008601E147171700001307C7A136971823EC +:10DDD000BA97130700021D8F19CB3398E500B3578C +:10DDE000F500B318E60033E807013313E50013D656 +:10DDF00008013355C80293960801C1829357030165 +:10DE00003377C802B385A60242073368F700637A06 +:10DE1000B80046989307F5FF636418016365B8304E +:10DE20003E853308B8403357C802420313530301F9 +:10DE30003378C802B386E602420833686800637B21 +:10DE4000D80046989307F7FF636518017917636355 +:10DE5000D8003E874205598D8145828001E60547FD +:10DE6000B358C702416763E8E80EB707000163EAE9 +:10DE7000F82893D68801E147171700001307879603 +:10DE800036971423BE9693070002958FFDE7939E65 +:10DE900008013387154113DF080193DE0E01854524 +:10DEA000935703013355E7033377E703B306D503ED +:10DEB0004207D98F63FAD700C6971307F5FF63E4CB +:10DEC000170163E5D7263A85958F33D7E7034203D9 +:10DED00013530301B3F7E703B30ED703C207B3E746 +:10DEE000670063FBD701C6979306F7FF63E5170149 +:10DEF000791763E3D70136874205598D828063E144 +:10DF0000D504C16763E1F604B707000163E3F61EB9 +:10DF100013D786016148971700009387A78CBA979B +:10DF20009823130E00024297330EEE40631A0E0C34 +:10DF300063EDB61C3335C50013451500814582805D +:10DF40008145014582809307F00F63F3D71C13D7F7 +:10DF500086002148C9B71307F00FC686E37E17F184 +:10DF600093D68800A14709BF1307F00FB286E37B61 +:10DF7000C7E493568600A147B1B5B398F80033D6ED +:10DF8000D50013DF0801335EE6033397F500B3567F +:10DF9000D500558F939E080193DE0E013313F500D3 +:10DFA00093550701B376E603B387CE03C206CD8E41 +:10DFB00063FBF600C6961306FEFF63E4161763F2D2 +:10DFC000F616791EC6969D8E33D6E6039317070183 +:10DFD000C183B3F6E6033385CE02139706015D8F46 +:10DFE000637BA70046979307F6FF63681713637672 +:10DFF000A7127916469793150E01098FD18D4DB54D +:10E00000B357E600B396C601DD8E33D3E50013DFC8 +:10E010000601B357E303939E060193DE0E01339886 +:10E02000C5013357E50033680701935808013316DB +:10E03000C6013373E303B385FE024203B3681301E1 +:10E0400063FBB800B6981387F7FF63EAD80C63F850 +:10E05000B80CF917B698B388B84033D7E80342082C +:10E0600013580801B3F8E8033383EE02C208B3E59E +:10E07000080163FB6500B6951308F7FF63EDD5084B +:10E0800063FB65087917B695C207416FD98F1307EF +:10E09000FFFFB3F6E70093D80701718F4182B38E7B +:10E0A000E602B3856540B386C60213D80E013387F6 +:10E0B000E802BA96C2963386C80263F3E6007A96FF +:10E0C00093D80601469663E2C5026385C5003E8586 +:10E0D0008145828041677D17F98EC206B3FEEE004E +:10E0E0003315C501F696E374D5FE1385F7FF814518 +:10E0F000828013D70601414839BD93560601C147B6 +:10E10000D1B193D60801C14785BB814505458280C1 +:10E110003687014809B5428785BF3E86E9BDBA8783 +:10E120001DBF328E4DB579154698E5B97915C6975C +:10E1300061BBB3C7A5008D8B3307C50081E78D4751 +:10E1400063EDC700AA87637EE508942185078505EE +:10E15000A38FD7FEE3EBE7FE828093763500AA8794 +:10E1600089CA942185078505A38FD7FE93F63700CA +:10E17000C5BF9376C7FF138606FE63F0C70683A369 +:10E18000050083A2450083AF850003AFC50083AEC1 +:10E19000050103AE450103A3850183A8C50193854D +:10E1A000450223A0770003A8C5FF23A2570023A49C +:10E1B000F70123A6E70123A8D70123AAC70123ACAF +:10E1C000670023AE17019387470223AE07FF75B799 +:10E1D00090419107910523AEC7FEE3EBD7FEE3E63E +:10E1E000E7F68280F401FA00960064004B003200EA +:10E1F0001E001400FB349B5F8000008000100000B4 +:10E2000000000000709A0400909A04000C9B040027 +:10E21000A29A04000C9B04000C9B04000C9B0400BD +:10E22000C49A04000C9B04000C9B04000C9B04008B +:10E23000E89A04006C4C040082B104009E4C040077 +:10E24000EABE04000C4D0400BCBE0400B64D040040 +:10E250008EBE0400444E04001EC90400904E04000B +:10E260001EC90400E24E040084C80400B64D040038 +:10E270003ABE04007A4F040042C1040000000000CE +:10E2800000000000B84F0400CCC10400205004007E +:10E29000FCB10400F8F90400F8F904001AFA0400CB +:10E2A0002EFA040036FA04003EFA040046FA04008E +:10E2B0004EFA040056FA04005EFA040066FA0400FE +:10E2C0009CFA0400A4FA04006CFA040001010201A3 +:10E2D000020101020102040406010401010101011D +:10E2E0000404020104000000010102010201010214 +:10E2F00001010404060104010101010104010201FC +:10E300000100000014080500200805005E08050053 +:10E31000760905007E090500BE090500F60905001D +:10E32000300A0500620A050018090500960A050072 +:10E330001E0B05009E1605007C16050048190500F9 +:10E34000A2190500801C0500BA1A0500FE1A050076 +:10E35000381B05006E1B0500A81B05007C16050078 +:10E36000EA1B05005C1C0500000000000000000026 +:10E370000000000000000087070B0D1113171D1F80 +:10E3800025292B2F353B3D4347494F535961FF000A +:10E39000F4530500205405002A5505007A53050062 +:10E3A000C2550500A25605003E560500DE56050082 +:10E3B0001E5705008C530500DC54050086540500EB +:10E3C0008A560500DEAE050016C305008AAF0500BB +:10E3D0006CC30500A8AF050024B005004AB00500D5 +:10E3E00086B005008EC2050008C2050092B1050086 +:10E3F000B6B1050020B20500B2B2050080C105002B +:10E40000A4C00500CCBF0500C89E050052B305009E +:10E410009EB305004EC60500F0C50500CAB3050051 +:10E4200062B50500A8B6050022B7050046B705008D +:10E43000A2C605000ABE0500D4B705000EB8050047 +:10E44000A6C60500AAC60500AEC60500B2C60500F0 +:10E45000B6C405004CB8050018B90500B6C60500DD +:10E460009EC60500BCB90500D2BD0500D4BB0500A1 +:10E47000B0E205004ED9050006D9050088DF050089 +:10E480005ADF05002EDF0500F4DE0500C8DE0500BA +:10E490008AE005008EE00500BADA050092E005008A +:10E4A0008ADE050096E0050068DE05009AE00500BA +:10E4B00028DE050018DE0500E2DD05009EE005000F +:10E4C000C2DD0500A2E00500A6E00500AAE0050007 +:10E4D00064DD05000AD905001ED90500AEE005007F +:10E4E000B2E00500B6E00500BAE00500BEE00500B8 +:10E4F00004DD05008EDC0500C2E00500C6E0050075 +:10E50000CAE00500CEE005002ADC050082E0050037 +:10E5100086E00500D4D9050020E00500BEDF050037 +:10E5200022D9050043483332563230785F424C4599 +:10E530005F4C49425F56312E333000007266322EF6 +:10E5400034670000DCBA0600E8BA0600F4BA060038 +:10E55000FEBA060008BB060028BB060034BB060056 +:10E560003EBB06004ABB060054BB06005EBB06006D +:10E5700068BB060072BB06007EBB060088BB0600B7 +:10E5800092BB0600F6BB06009CBB0600A6BB0600BD +:10E59000B0BB0600BABB0600CEBB0600F6BB060049 +:10E5A000F6BB0600F6BB0600F6BB0600F6BB06008F +:10E5B000F6BB0600F6BB0600F6BB0600D6BB06009F +:10E5C000C4BB0600F6BB0600E0BB0600ECBB0600C1 +:10E5D00092C20600C4C20600E4C20600FCC20600E5 +:10E5E00012C306002EC306004CC306005EC306001D +:10E5F0007CC3060094C30600AEC30600C6C3060073 +:10E60000DCC30600F0C306000AC406001CC40600F2 +:10E610003AC40600F4C506000AC6060022C6060073 +:10E6200042C60600D0C7060090C606005EC40600BB +:10E63000A8C60600BAC60600B2C40600B2C40600E8 +:10E6400088C5060096C50600C2C6060066C6060056 +:10E65000D4C606004AC7060098C70600BACA060014 +:10E6600030C8060030C80600FEC90600CAC8060049 +:10E6700014C80600B2CA060030C80600A6C90600C3 +:10E680003CCA060030C8060030C8060030C8060084 +:10E6900030C8060030C8060030C8060030C8060082 +:10E6A00030C8060030C8060030C8060086C806001C +:10E6B000E2CD0600CACE0600A0CE060008CF0600B6 +:10E6C00008CF060090CF0600D8CF0600CACE0600BD +:10E6D000CACE0600CACE0600CACE0600CACE0600C2 +:10E6E000CACE0600CACE0600CACE0600CACE0600B2 +:10E6F000CACE0600CACE0600CACE0600FECF06006D +:10E70000FECF0600CACE0600CACE0600CACE06005C +:10E71000CACE0600CACE0600CACE060060D00600E9 +:10E7200060D00600ACD50600B8D50600CED50600F0 +:10E73000DAD50600F0D50600FCD5060006D60600A0 +:10E740000ED6060016D6060020D606002AD60600EB +:10E7500036D6060040D606004AD6060054D6060035 +:10E76000A8D60600A8D606005ED606006AD6060021 +:10E7700074D606007ED6060088D6060090D606001F +:10E780009ED60600E4D6060000D7060014D7060081 +:10E7900062D9060030D7060096D70600AAD7060031 +:10E7A000BED70600D8D70600F2D7060006D8060066 +:10E7B00020D8060062D906003AD8060062D90600C1 +:10E7C00062D906004ED8060074D806009AD8060012 +:10E7D000B4D80600C8D80600DAD8060020D906004A +:10E7E00000010202030303030404040404040404F8 +:10E7F00005050505050505050505050505050505C9 +:10E8000006060606060606060606060606060606A8 +:10E810000606060606060606060606060606060698 +:10E820000707070707070707070707070707070778 +:10E830000707070707070707070707070707070768 +:10E840000707070707070707070707070707070758 +:10E850000707070707070707070707070707070748 +:10E860000808080808080808080808080808080828 +:10E870000808080808080808080808080808080818 +:10E880000808080808080808080808080808080808 +:10E8900008080808080808080808080808080808F8 +:10E8A00008080808080808080808080808080808E8 +:10E8B00008080808080808080808080808080808D8 +:10E8C00008080808080808080808080808080808C8 +:10E8D00008080808080808080808080808080808B8 +:08E8E0000200000000E906003F +:02E8E800012A03 +:02E8EC00A62A5A +:02E8F0000328FB +:02E8F4000229F7 +:02E8F800002AF4 +:02E8FC00882B67 +:02E900000018FD +:02E904000118F8 +:02E908000228E3 +:02E90C00042ADB +:02E91000022AD9 +:02E914000028D9 +:02E91800C92A0A +:02E91C00032ACC +:02E920000128CC +:02E92400052AC2 +:10E92800FE8F04001891040000000000020000009F +:10E9380014E9060001000000942D002002000000E8 +:10E94800F0E80600010000009F2D002002000000F2 +:10E9580024E906000000000000000000020000009A +:10E96800F4E80600030000000000000000000000BA +:10E97800A2B3040000000000C3812F0102010202BB +:10E98800020202005000A0000000E803020802FF93 +:10E99800FF0000000200000004E906000100FF205B +:08E9A80001050201011001014B :0400000340000000B9 :00000001FF diff --git a/EVT/EXAM/BLE/LWNS/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/LWNS/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/LWNS/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/LWNS/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/LWNS/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/LWNS/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/LWNS/APP/app_main.c b/EVT/EXAM/BLE/LWNS/APP/app_main.c index 9d195ba..29b05e9 100644 --- a/EVT/EXAM/BLE/LWNS/APP/app_main.c +++ b/EVT/EXAM/BLE/LWNS/APP/app_main.c @@ -69,6 +69,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/LWNS/APP/ch32v20x_it.c b/EVT/EXAM/BLE/LWNS/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/LWNS/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/LWNS/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_blemesh_mac.c b/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_blemesh_mac.c index 0b1bdcb..dc25213 100644 --- a/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_blemesh_mac.c +++ b/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_blemesh_mac.c @@ -15,12 +15,9 @@ //每个文件单独debug打印的开关,置0可以禁止本文件内部打印 #define DEBUG_PRINT_IN_THIS_FILE 1 #if DEBUG_PRINT_IN_THIS_FILE - #define PRINTF(...) PRINT(__VA_ARGS__) + #define PRINTF(...) PRINT(__VA_ARGS__) #else - #define PRINTF(...) \ - do \ - { \ - } while(0) + #define PRINTF(...) do{} while(0) #endif /* @@ -68,6 +65,33 @@ static uint8_t ble_phy_channelmap_send_seq = 0, bl static struct blemesh_mac_phy_manage_struct *blemesh_phy_manage_list_head = NULL; //mac管理发送LIST列表指针 static struct blemesh_mac_phy_manage_struct blemesh_phy_manage_list[LWNS_MAC_SEND_PACKET_MAX_NUM]; //mac管理发送列表管理数组 +volatile uint8_t tx_end_flag=0; + +/********************************************************************* + * @fn RF_Wait_Tx_End + * + * @brief 手动模式等待发送完成,自动模式等待发送-接收完成,必须在RAM中等待,等待时可以执行用户代码,但需要注意执行的代码必须运行在RAM中,否则影响发送 + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void RF_Wait_Tx_End() +{ + uint32_t i=0; + while(!tx_end_flag) + { + i++; + __NOP(); + __NOP(); + // 约5ms超时 + if(i>(SystemCoreClock/1000)) + { + tx_end_flag = TRUE; + } + } +} + /********************************************************************* * @fn RF_2G4StatusCallBack * @@ -416,9 +440,12 @@ static uint16_t lwns_phyoutput_ProcessEvent(uint8_t task_id, uint16_t events) } RF_Shut(); RF_SetChannel(ble_phy_channelmap[ble_phy_channelmap_send_seq]); //周期性更改发送通道 - RF_Tx((uint8_t *)(blemesh_phy_manage_list_head->data + 1), + if(!RF_Tx((uint8_t *)(blemesh_phy_manage_list_head->data + 1), blemesh_phy_manage_list_head->data[0], USER_RF_RX_TX_TYPE, - USER_RF_RX_TX_TYPE); + USER_RF_RX_TX_TYPE)) + { + RF_Wait_Tx_End(); + } tmos_start_task(lwns_phyoutput_taskid, LWNS_PHY_OUTPUT_FINISH_EVT, MS1_TO_SYSTEM_TIME(LWNS_PHY_OUTPUT_TIMEOUT_MS)); //开始发送超时计数,防止有意外打断发送,导致无法继续发送 ble_phy_channelmap_send_seq++; } diff --git a/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_csma_mac.c b/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_csma_mac.c index a3e31ae..2ad76b7 100644 --- a/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_csma_mac.c +++ b/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_csma_mac.c @@ -15,12 +15,9 @@ //每个文件单独debug打印的开关,置0可以禁止本文件内部打印 #define DEBUG_PRINT_IN_THIS_FILE 1 #if DEBUG_PRINT_IN_THIS_FILE - #define PRINTF(...) PRINT(__VA_ARGS__) + #define PRINTF(...) PRINT(__VA_ARGS__) #else - #define PRINTF(...) \ - do \ - { \ - } while(0) + #define PRINTF(...) do{} while(0) #endif #if LWNS_USE_CSMA_MAC //是否使能模仿csma的mac协议,注意只能使能一个mac层协议。 @@ -61,6 +58,33 @@ static uint8_t ble_phy_manage_state, ble_phy_send_cnt static struct csma_mac_phy_manage_struct *csma_phy_manage_list_head = NULL; //mac管理发送列表指针 static struct csma_mac_phy_manage_struct csma_phy_manage_list[LWNS_MAC_SEND_PACKET_MAX_NUM]; //mac管理发送列表管理数组 +volatile uint8_t tx_end_flag=0; + +/********************************************************************* + * @fn RF_Wait_Tx_End + * + * @brief 手动模式等待发送完成,自动模式等待发送-接收完成,必须在RAM中等待,等待时可以执行用户代码,但需要注意执行的代码必须运行在RAM中,否则影响发送 + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void RF_Wait_Tx_End() +{ + uint32_t i=0; + while(!tx_end_flag) + { + i++; + __NOP(); + __NOP(); + // 约5ms超时 + if(i>(SystemCoreClock/1000)) + { + tx_end_flag = TRUE; + } + } +} + /********************************************************************* * @fn RF_2G4StatusCallBack * @@ -416,9 +440,12 @@ static uint16_t lwns_phyoutput_ProcessEvent(uint8_t task_id, uint16_t events) tmos_clear_event(lwns_adapter_taskid, LWNS_PHY_RX_OPEN_EVT); //停止可能已经置位的、可能会打开接收的任务 } RF_Shut(); - RF_Tx((uint8_t *)(csma_phy_manage_list_head->data + 1), + if(!RF_Tx((uint8_t *)(csma_phy_manage_list_head->data + 1), csma_phy_manage_list_head->data[0], USER_RF_RX_TX_TYPE, - USER_RF_RX_TX_TYPE); + USER_RF_RX_TX_TYPE)) + { + RF_Wait_Tx_End(); + } tmos_start_task(lwns_phyoutput_taskid, LWNS_PHY_OUTPUT_FINISH_EVT, MS1_TO_SYSTEM_TIME(LWNS_PHY_OUTPUT_TIMEOUT_MS)); //开始发送超时计数 return (events ^ LWNS_PHY_OUTPUT_EVT); } diff --git a/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_no_mac.c b/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_no_mac.c index 0aecbd9..962e3e5 100644 --- a/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_no_mac.c +++ b/EVT/EXAM/BLE/LWNS/APP/lwns_adapter_no_mac.c @@ -15,12 +15,9 @@ //每个文件单独debug打印的开关,置0可以禁止本文件内部打印 #define DEBUG_PRINT_IN_THIS_FILE 1 #if DEBUG_PRINT_IN_THIS_FILE - #define PRINTF(...) PRINT(__VA_ARGS__) + #define PRINTF(...) PRINT(__VA_ARGS__) #else - #define PRINTF(...) \ - do \ - { \ - } while(0) + #define PRINTF(...) do{} while(0) #endif #if LWNS_USE_NO_MAC //是否使能纯透传mac协议,即mac层不参与任何动作,注意只能使能一个mac层协议。 @@ -59,6 +56,33 @@ static lwns_fuc_interface_t ble_lwns_fuc_interface = { static uint8_t ble_phy_manage_state; //phy状态管理 +volatile uint8_t tx_end_flag=0; + +/********************************************************************* + * @fn RF_Wait_Tx_End + * + * @brief 手动模式等待发送完成,自动模式等待发送-接收完成,必须在RAM中等待,等待时可以执行用户代码,但需要注意执行的代码必须运行在RAM中,否则影响发送 + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void RF_Wait_Tx_End() +{ + uint32_t i=0; + while(!tx_end_flag) + { + i++; + __NOP(); + __NOP(); + // 约5ms超时 + if(i>(SystemCoreClock/1000)) + { + tx_end_flag = TRUE; + } + } +} + /********************************************************************* * @fn RF_2G4StatusCallBack * @@ -356,7 +380,10 @@ static uint16_t lwns_phyoutput_ProcessEvent(uint8_t task_id, uint16_t events) // Release the TMOS message,tmos_msg_allocate tmos_clear_event(lwns_adapter_taskid, LWNS_PHY_RX_OPEN_EVT); //停止可能已经置位的、可能会打开接收的任务 RF_Shut(); - RF_Tx((uint8_t *)(pMsg + 1), pMsg[0], USER_RF_RX_TX_TYPE, USER_RF_RX_TX_TYPE); + if(!RF_Tx((uint8_t *)(pMsg + 1), pMsg[0], USER_RF_RX_TX_TYPE, USER_RF_RX_TX_TYPE)) + { + RF_Wait_Tx_End(); + } tmos_start_task(lwns_phyoutput_taskid, LWNS_PHY_OUTPUT_FINISH_EVT, MS1_TO_SYSTEM_TIME(LWNS_PHY_OUTPUT_TIMEOUT_MS)); //开始发送超时计数,防止有意外打断发送,导致无法继续发送 tmos_msg_deallocate(pMsg); //释放内存 } diff --git a/EVT/EXAM/BLE/MESH/MESH_LIB/LIBMESH.a b/EVT/EXAM/BLE/MESH/MESH_LIB/LIBMESH.a index a070db2..4fb5078 100644 Binary files a/EVT/EXAM/BLE/MESH/MESH_LIB/LIBMESH.a and b/EVT/EXAM/BLE/MESH/MESH_LIB/LIBMESH.a differ diff --git a/EVT/EXAM/BLE/MESH/MESH_LIB/LIBMESHROM.a b/EVT/EXAM/BLE/MESH/MESH_LIB/LIBMESHROM.a index 92baad1..ab4333c 100644 Binary files a/EVT/EXAM/BLE/MESH/MESH_LIB/LIBMESHROM.a and b/EVT/EXAM/BLE/MESH/MESH_LIB/LIBMESHROM.a differ diff --git a/EVT/EXAM/BLE/MESH/MESH_LIB/MESH_LIB.h b/EVT/EXAM/BLE/MESH/MESH_LIB/MESH_LIB.h index 940498a..83b931f 100644 --- a/EVT/EXAM/BLE/MESH/MESH_LIB/MESH_LIB.h +++ b/EVT/EXAM/BLE/MESH/MESH_LIB/MESH_LIB.h @@ -1,10 +1,12 @@ /********************************** (C) COPYRIGHT ******************************* * File Name : mesh_lib.h * Author : WCH - * Version : V1.67 + * Version : V1.70 * Date : 2022/10/26 * Description : - * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Copyright (c) 2023 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #ifndef mesh_lib_H @@ -118,7 +120,7 @@ typedef signed int ssize_t; #endif /******************************************************************************/ -#define VER_MESH_FILE "MESH_LIB_V1.6" +#define VER_MESH_FILE "MESH_LIB_V1.7" extern const uint8_t VER_MESH_LIB[]; // Global_Error_Code @@ -3506,6 +3508,11 @@ void MeshDeamon_Init( void ); */ void hal_rf_init( void ); +/** + * @brief Weather wait for end when RF tx. + */ +void hal_rf_tx_wait_enable(uint8_t enable ); + /** * @brief Config the RF. * diff --git a/EVT/EXAM/BLE/MESH/MESH_LIB/wchble_rom_mesh.hex b/EVT/EXAM/BLE/MESH/MESH_LIB/wchble_rom_mesh.hex index 93e2f29..fbc0ffc 100644 --- a/EVT/EXAM/BLE/MESH/MESH_LIB/wchble_rom_mesh.hex +++ b/EVT/EXAM/BLE/MESH/MESH_LIB/wchble_rom_mesh.hex @@ -1,8105 +1,8239 @@ :020000024000BC -:10E000006FE0F152000000000018011800280128FC +:10E000006FF0A15A00000000001801180028012834 :10E0100002280328002901290229032904290529A6 :10E02000062907290829002A012A022A032A042A84 -:10E03000052AA62AB0D40600A2010500DC030020B0 -:10E0400020040020980300208603002052030020B3 -:10E050001A02050042020500100305000005050034 -:10E06000AA0505002E000500C0FF040002020020E2 -:10E07000ECFF0400140A050016050020F00105005D -:10E080003C070500C68E0600A49006000E9106000F -:10E09000B4590600C8590600FA190600980D060082 -:10E0A000268906006C070500EE5F060062B10500D8 -:10E0B000F2B105004CB2050084120500C212050041 -:10E0C00042110500EE730500146F0500540700208F -:10E0D0003E800500A483050038620500DA61050072 -:10E0E0009C65050084620500B8610500306205008A -:10E0F0006E610500FE6205005663050006630500BB -:10E100000A630500A06305005E6305008E630500D9 -:10E110005068050054680500FA62050002630500B6 -:10E120009E630500526805004C640500AE69050059 -:10E13000F0900500649105009E9105003A76050077 -:10E140005076050088760500165C0500F45C050035 -:10E15000585D0500742F0500162A05001C530500A4 -:10E16000922A0500644E05002AB2060032AF06006E -:10E17000A4B90600E6C80600BCC706009ACB060094 -:10E180008ACB060092CB0600D8CB060066A106001B -:10E19000D4CB060046C006006CC006008CC006004A -:10E1A00048CC0600BAC5060058C50600B8CC060023 -:10E1B00022A20600B6A20600D6A2060088A2060089 -:10E1C000EC710600406506008868060008660600D7 -:10E1D000A86E0600BA890600000000009AA1060099 -:10E1E000E00B0500D8590600CE5F0600C6600600A9 -:10E1F000000000000000000000000000107A050090 -:10E20000A0710600000000000000000000000000F7 -:10E21000F0640600F40600207C5A0600C0CB06001D -:10E2200000000000000000008ECB0600A6040500E0 -:10E230007A770500C8CB0600E47306003675060041 -:10E24000A2750600E2B90600C4CB0600CCCB0600DE -:10E25000240D0600D0CB06002A15002086190020C8 +:10E03000052AA62A6CDD06003808050042040020E7 +:10E04000BC040020CA0300209C03002032030020EF +:10E05000DA0905001A0A0500B80B0500380E05009C +:10E060001C0F0500980605004A0605008C020020DA +:10E0700036020020D6130500D0070020B0090500A5 +:10E08000DE1005008896060068980600D298060003 +:10E09000DC5A0600145B0600141406004A09060048 +:10E0A0000A9106000E1105000A610600AEAC0500DB +:10E0B0003EAD050098AD0500EE1B05002C1C0500CB +:10E0C000AC1A0500186F05003C6A0500480A0020DC +:10E0D0004E7B0500B47E0500705D0500145D0500F3 +:10E0E000D2600500BC5D0500F45C05006A5D0500BA +:10E0F000AA5C0500345E05008C5E05003C5E0500F0 +:10E10000405E0500D65E0500945E0500C45E050015 +:10E110007E63050082630500305E0500385E050001 +:10E12000D45E050080630500825F0500DA640500A7 +:10E130000E8C0500828C0500BC8C05006471050006 +:10E1400078710500AC7105009C520500C2540500B1 +:10E150009E550500D63805006C330500AA49050018 +:10E16000E83305002845050052BF0600FEB706004B +:10E17000C0BC0600C4D10600B0D006001ED4060004 +:10E180000ED4060016D4060058D4060056AA06007F +:10E19000000000000000000000000000000000007F +:10E1A000C8D40600B6CE060054CE0600000000001B +:10E1B000000000000000000000000000000000005F +:10E1C000E87906000E690600646C06004C6A0600D9 +:10E1D0002674060062910600000000008AAA06006C +:10E1E0004A150500245B0600EA600600E2610600AD +:10E1F000000000000000000000000000287505007D +:10E200002679060000000000000000000000000069 +:10E21000BE680600BA090020905B060044D40600E0 +:10E22000000000000000000012D40600C20D05002E +:10E230009C7205004CD40600D47B0600387D060095 +:10E24000A47D0600FEBC060048D4060050D406009B +:10E25000D608060054D40600EA190020EC2200205B :10E2600000000000000000000000000000000000AE :10E27000000000000000000000000000000000009E :10E280006373B60082801C419105110523AEF5FE33 -:10E29000C5BFB727002037270020938787DD1307E6 -:10E2A000C7346373F700828023A007009107D5BFAE -:10E2B0005DC5AA870145D5C58D07C207C183F19BFE -:10E2C000C207C18313074003636CF702372700209E -:10E2D0000325C7F537270020832647F56397A60255 -:10E2E000372700200327C7FE014525CF4111C2076C -:10E2F00006C60545DD8D0297B24001454101828089 -:10E3000037270020032587F5F1B77A2139E75A210D -:10E310006365F704B72600203306F740214893864B -:10E3200046F66375C8028328050003D86600138685 -:10E3300087001D8F2A9661175AA2232016012313E6 -:10E34000060010C15EA1130788FFFAA26EA1EE229B -:10E350002105B387F540FEA28280084141B70145FF -:10E360008280828009CDB727002003A3C7F5B72795 -:10E37000002083A847F581469A8763E317018280CE -:10E3800003A80700636BF5086369A8081387870073 -:10E39000E367E5FEF223216705076319E6003726E8 -:10E3A0000020034786E605072304E6E6372600201B -:10E3B000130546F6CE237A2123930700130646F66B -:10E3C0002E97420741837AA1638367023725002095 -:10E3D000032585F5630DF500EA2211E9DE2223A06D -:10E3E00006012107BE95A105CEA27AA2B687984361 -:10E3F000E30717F9B726002083A686F5E301D7F8CF -:10E400007623B5FED6234E231843A106AE96D6A397 -:10E4100098C37E22A1077EA28280BE86C287B1BF3A -:10E42000B7270020B726002083A7C7F503A646F527 -:10E430002A87B305B5406314F6003A8529A8938668 -:10E4400087009C43E369D7FEE377F7FE2E85E3E47C -:10E45000D5FEE3F2F5FE828023AC05FE1C4181E788 -:10E460000CC18280BA8703A787FF6DFF23ACB7FE7C -:10E470008280411126C2B724002083A704F622C45B -:10E480004AC006C60144014981EBA165970005E039 -:10E49000E780402E0DC819A803C7E7FF631CA70239 -:10E4A0001DCCA165970005E0E78060FE03A704F698 -:10E4B000832784FF6317E40223A0F4F6FD57232C7F -:10E4C00004FE230FF4FE2285B24022449244024906 -:10E4D0004101828011E03E8983A787FF75B73E84A2 -:10E4E000E5BF232CF9FED9BFB727002083A747FB40 -:10E4F00099E33E858280BA236315B7009823E30A27 -:10E50000A7FEDC47F5B70111680006CE22CC9710B4 -:10E5100006E0E780805FFD576307F508324741C397 -:10E5200037240020130444F61848630DF700B7277A -:10E53000002083A70700829732471C486373F700C7 -:10E54000BA873E95372400209307C4289C4F1304B4 -:10E55000C42899CBB727002083A6472F3707CDFFC4 -:10E560007D179C46F98F9CC6B727002083A707FE1E -:10E57000829719E91C4C85C7976006E0E78060EF39 -:10E58000975006E0E780A06D1C4C91CBB727002088 -:10E5900003A7472FB70633001C47D58F1CC7F2408F -:10E5A00062440561828037240020130444F61C482D -:10E5B000E387A7FEB727002083A7070082971C48A0 -:10E5C00049B709CD81CD19CA81473387F500142396 -:10E5D0003307F500850714A3E319F6FE828019C9F5 -:10E5E00091C909CA910583A7C5FF11057D16232E80 -:10E5F000F5FEC5BF828001C919C62A960505A30F7D -:10E60000B5FEE31DA6FE828081473307F5000307B0 -:10E61000070019E33E8582808507C5BF01112E865C -:10E6200026CAAA84131506019305F004418122CC61 -:10E6300006CE32C6B5392A8401C53246A685513781 -:10E640002285F2406244D24405618280854705C13B -:10E6500099CD11CE8147B306F5003387F50094229A -:10E6600018236398E6008507E317F6FE85473E8585 -:10E6700082808147EDBF9307F6FFBE952A9663130C -:10E68000C5008280FD159C310505A30FF5FEC5BFB1 -:10E69000AA87014581CF09CE3E96850703C7F7FFBC -:10E6A0006317B700E39BC7FE054582808280014562 -:10E6B000828079714AD03729002022D4032449FB73 -:10E6C00006D626D24ECE52CC56CA5AC85EC63DCCCD -:10E6D00037CAC901B72A0020B72900208144372B47 -:10E6E0000020130AFA37938A8AFB938949F63E2061 -:10E6F00099EB5C44BDE4232AF9FA832BC4002285FC -:10E7000095315E840DA883270B0082971C44330744 -:10E71000F540636AEA0423A809002E200820970028 -:10E7200005E0E780C0D654405C44E9D61844A28492 -:10E73000369718C43E8445FCB7270020938747F6D8 -:10E74000984B894663FEE602791798CBB250225463 -:10E7500092540259F249624AD24A424BB24B456145 -:10E760008280DCC459BF03A78A0201CB03A7090139 -:10E77000898F63F4E70023A8F900A284404465BFB1 -:10E7800023A80700E1B701114AC8372900208327D1 -:10E7900009F906CE22CC26CA4EC652C456C25AC069 -:10E7A00081C78297232809F8930709F9DC433724A6 -:10E7B0000020130404F991C38297832709F9639910 -:10E7C0000714B72400209387C428DC339384C4281B -:10E7D000858B99CFF830A3820400954763FAE70050 -:10E7E000EF106008FC30F5178A07A2979C438297C8 -:10E7F000372A00209307CA2CDC27130ACA2C918BD6 -:10E8000099C3EF1040681C4491C3829737240020BD -:10E81000B7290020930744F603A709FB9033930A16 -:10E8200044F6834744F693961700BA969622B5CAE3 -:10E83000834744F663EFC706832709F9230204F6EA -:10E84000E1EB9C3489CBFC3099E7A384040097501A -:10E8500006E0E780807DB727002083A70700CDCBA7 -:10E86000FD5723A8FA00B135B727002083A707FE7C -:10E87000C5C3F830954763EDE7088347CA00918B1D -:10E88000C1EB83C61A0003A609FB63CDD708624417 -:10E89000F240D2444249B249224A924A024B0561AF -:10E8A0009DB1850793F7F70F2302F4F6E3EBC7F664 -:10E8B00041B786073E970E2323100700034544F611 -:10E8C000B727002083A7C7F813172500372B002090 -:10E8D000BA979C4323160BFA82978357CBFA0347C8 -:10E8E00044F693C7F7FF7D8D9317170003A709FB25 -:10E8F0003E971E235D8D0AA3834744F681C7850793 -:10E900002302F4F6034744F683C71A00E376F7F2CE -:10E91000F2406244D2444249B249224A924A024BEE -:10E92000056182801397170032971A2375F38507C4 -:10E93000A9BFAD6737470240BD072326F720010076 -:10E940000100B7270020938747F6C84F8327872603 -:10E95000BD66BD0693C7F7FF99836A052326D720B6 -:10E960005D8D82808280B727002003C64715B727B8 -:10E97000002003A787E381476315F60081463685AB -:10E980008280BA8613078702835587FDE389A5FE37 -:10E99000850793F7F70FCDB7B727002003C65715A4 -:10E9A000B727002083A747E501476365C700814675 -:10E9B00036858280BE86990783D5A7FFE38AA5FEA8 -:10E9C0000507E5B7B727002003A7C7E419E3014609 -:10E9D00015A81C4703D8A700636B0501835847009F -:10E9E000B38608016355D500814663941601184328 -:10E9F000F1BF3E86C10703D3A7FF6317A30099C1E8 -:10EA000023900501328582808506C206C182F1BF4E -:10EA1000B727002003C64715B727002003A7071014 -:10EA200081476315F600814636858280BA861307D2 -:10EA3000C703835567FCE389A5FE850793F7F70FA6 -:10EA4000CDB7032785117DC7411122C406C65C25B9 -:10EA50008345C5042A8493F7C70F5CA51437522752 -:10EA600013958601618563F6C50663500506082780 -:10EA700093F6F60714B7054693E627006314C5001E -:10EA800093E6170054A45C4389075CC34CB8032584 -:10EA900004112E864C4309052D36832784115038E6 -:10EAA000D443DA27B296118FD4C3DAA789473CBC86 -:10EAB000B72700200347440383C7A7FC6371F7040B -:10EAC0005C2493E707015CA41DA893E717005CA4EE -:10EAD00075BF9376F60F635905020827854513E63F -:10EAE00027006314B50013E6170050A454B8A3041C -:10EAF000070085473CBC832784119C43D5FBB2406B -:10EB0000224401454101828093E717005CA454B878 -:10EB1000A3040700032504114C4309055D34832732 -:10EB200084115038D443DA27B296118FD4C3DAA7B0 -:10EB30008D47C9B705458280B727002083A747279F -:10EB4000411122C406C6858B2A84D5E3416513058D -:10EB500025F5972006E0E78040B751C93C253EA542 -:10EB600083270412ADE32320A4122322A412854795 -:10EB70002310F404232005007C2854415EA558345A -:10EB800018A5054718B5372700200327472A1385FE -:10EB9000170215811C437D151375F50F9CC25C434C -:10EBA000DCC21C479CC65C47DCC61C4B9CCA5C4B49 -:10EBB000DCCA1C4F9CCE5C4FDCCE19CD938606027E -:10EBC00013070702C1BF8327441288C38357040475 -:10EBD0002322A412850769BFB72700209387071651 -:10EBE0009A2705079AA7B2402244410182805C24FB -:10EBF00023090400054593C747005CA4EDB71C2D0D -:10EC000093F7E70FD5E71C3DC5E73029542509CA1E -:10EC100037270020834545030347B7FC63E7E5003A -:10EC200013F7060159C7014709C6C18A035785185A -:10EC300081C68356C51836972DCF411122C437247B -:10EC40000020130484FB6A2C1307C71237460F00F9 -:10EC5000B335A70213060624814626C206C633052D -:10EC6000A70297C006E0E780C03A7C387D54B384A1 -:10EC7000A700B727002003A7871E8327070963F390 -:10EC800087003E84184375FBB727002083A7070041 -:10EC9000829781476364A400B307A440B240224432 -:10ECA000B3B7970093C7170092443E854101828015 -:10ECB00081473E858280B72600209387061683A76A -:10ECC0008708638A0742797126D293860616B7248D -:10ECD0000020138784FB03A506090353E701374788 -:10ECE0000F0006D622D44AD04ECE52CC56CA5AC8AD -:10ECF0005EC662C40148FD58938484FB130EF7235B -:10ED00001306072403D7470883A5070933076702BB -:10ED100072973357C7023387E540637517013E8505 -:10ED2000BA8805489C43F9FF6304080023A8A60895 -:10ED300003A40609B7490F00938BF9233729002054 -:10ED4000930A0032130B204E054A93890924832726 -:10ED50000900032C040982976370852DF62C035754 -:10ED60004408FC38330CAC403307D7025E97335766 -:10ED700037033E97636087237E3CA30F0400228500 -:10ED800085077EBC83470414C5C7112922859710C7 -:10ED900006E0E780400449E1EA2C835744083747FE -:10EDA0000F009306F723B387A702130707248329CD -:10EDB0000409230A0402B697B3D7E7020547B387CD -:10EDC000F9402324F4088327C408BE993C3423283F -:10EDD00034096391E7060357E407363C63ECE60425 -:10EDE00014286399F60483278411A9E78327440A2A -:10EDF000B1E374349D47639FF6021E3CB387E7027C -:10EE00001307204EB387E70203274409B3D7E7026D -:10EE1000F828BA972312F408B25022549254025997 -:10EE2000F249624AD24A424BB24B224C456182803F -:10EE3000E124A9BF1E308DCF763C5A3037460F00F3 -:10EE400056B03387E640B387E7023A30130606240C -:10EE500081468145BA97C207C1833385A7023EB078 -:10EE600097C006E0E780E01A01C5AA992328340973 -:10EE7000832709008297AA89832709008297E30DD7 -:10EE800035FF832709008329840882973385A940A9 -:10EE900079C58327C4086374F50C37490F0013093B -:10EEA0000924B3352503F22C81463305250397C089 -:10EEB00006E0E78000163E30372700208326872AA9 -:10EEC0003E95B567BD07DCC6010001008327872A90 -:10EED00009678359240298C7E62C372700201307B7 -:10EEE000C728930600F854A30605E8D33385990292 -:10EEF0003D673D0737460F00D8C7130606248146F5 -:10EF0000814597C006E0E780C0100DC1B3372503E7 -:10EF100026868146B305B9023305A902BE9597C07E -:10EF200006E0E780000F3385A9402AB0975006E03D -:10EF3000E780600D975006E0E7806014383485471D -:10EF4000E31CF7EC375506008145130565E1970092 -:10EF500005E0E780C093930700FD7CA475BD3834BD -:10EF6000854703A344036317F7009545E30603EAC7 -:10EF7000154529A0E30203EA954519452254B250EC -:10EF800092540259F249624AD24A424BB24B224C45 -:10EF90004561028363580C047E3C85077EBC834731 -:10EFA000041499E32285892A2285971006E0E780D8 -:10EFB00080E2832704090327C408BA972328F408AA -:10EFC0003C34639747012285974006E0E78000C202 -:10EFD0007C3C854585077CBCDC58E38A07D6154513 -:10EFE0008297B5B35E3C130700328E07B387D70212 -:10EFF00093870719B3D7E702E3F087E3A14522859A -:10F00000971006E0E78000D52305A40203A344037C -:10F010008945E31F03F409B55E3CFA2C330C8541A6 -:10F020008E07B387E70293870719B3D75703637433 -:10F03000FC0A8327090082977E3C2A8C85077EBCC8 -:10F040008347041499E3228545282285971006E01A -:10F05000E78060D8E31205DC832704090327C4088E -:10F06000BA972328F4087C3C13F7070F21CF228599 -:10F07000971006E0E780C08CA30F040083270409E3 -:10F08000E379FCFA8356E4071E3C03274409B3875F -:10F09000D702B3876703B3D7E702F8280607BA9702 -:10F0A0002312F4083C34639247033E3CE3F1D7CA91 -:10F0B0002285974006E0E78060B3DC58E38907C803 -:10F0C0008D4531BF85077CBC55BFDC58E38107C83F -:10F0D0008D45194531B7E3410CD4A14522859710E0 -:10F0E00006E0E78020C72305A40203A34403E30549 -:10F0F00003D29145B5BD8280797126D206D622D43D -:10F100004AD04ECE52CC56CA5AC85EC68347350343 -:10F1100003447513AA843E941374F40F93074002BA -:10F1200063F687001304B4FD1374F40F03AA841369 -:10F1300083AAC413A38B841222865285D68597C0D6 -:10F1400006E0E78040EA058915E503CBD4120149C2 -:10F150008149337B6403930B50024A865285D685DE -:10F1600097C006E0E78020E8058915C5639169032B -:10F170001374F90F238B8412B25022549254025903 -:10F18000F249624AD24A424BB24B456182808509BC -:10F19000E20993D989410509E31179FDE1BF83278C -:10F1A0008509723D797193D60701BD8EC206C18271 -:10F1B000358E1357764093575640898B058B5D8F5C -:10F1C00093573640918B5D8F93571640A18B5D8F7F -:10F1D00093171600C18B5D8F9317360093F70702C4 -:10F1E0005D8F931756009355860093F707041E060C -:10F1F0005D8F1376F60F518F93D7554013D6354058 -:10F20000118A898BD18F13D67540D18F13D61540B3 -:10F21000218AD18F13961500418AD18F139635001C -:10F2200013760602D18F13965500137606049E05B9 -:10F23000D18F93F5F50FCD8FA20745465D8F33072C -:10F24000C70222D42A8426D252CC56CA032A841357 -:10F25000832AC4135AC806D6369742074183935768 -:10F260007740135557400989858BC98F135537400F -:10F270001189C98F135517402189C98F131517009C -:10F280004189C98F1315370013750502C98F1315EE -:10F29000570093558700137505041E07C98F137710 -:10F2A000F70FD98F13D5354013D755401189098BE6 -:10F2B000498F13D57540498F13D515402189498F42 -:10F2C000139515004189498F139535001375050273 -:10F2D000498F13955500137505049E05498F93F5C5 -:10F2E000F50F4D8F2207D98FB387C7024AD04ECE74 -:10F2F0005EC662C4B697C207C18313D7774013D5E1 -:10F3000057400989058B498F13D537401189498F9B -:10F3100013D517402189498F139517004189498FCB -:10F320001395370013750502498F1395570093D530 -:10F330008700137505049E07498F93F7F70FD98F40 -:10F3400013D5354013D755401189098B498F13D5F3 -:10F350007540498F13D515402189498F13951500A4 -:10F360004189498F1395350013750502498F13950F -:10F370005500137505049E05498F93F5F50F4D8FC4 -:10F380002207D98FB387C702130650025285D6854C -:10F39000B697BD8E93940601C18033F6C402137BE9 -:10F3A000F60F97C006E0E78000C405890DED83479E -:10F3B000D41201498149B3849702130C5002C180D1 -:10F3C0004A865285D68597C006E0E780C0C1058988 -:10F3D000937BF90F11C563863403850993F9F90FFF -:10F3E0000509E31F89FD230B6413B2502254925484 -:10F3F0000259F249624AD24A424BB24B224C456111 -:10F4000082805E8BCDB70111B727002022CC03A4E8 -:10F41000472126CA4AC84EC606CEAA84130925002B -:10F42000854905C09C303830858B6304F700405C0B -:10F43000CDBF1946930544004A85EFF02FA1E3188C -:10F4400035FF2285F2406244D2444249B249056107 -:10F4500082804111B727002022C403A4472126C27D -:10F460004AC006C693042500054901E82285B2403A -:10F4700022449244024941018280A6851305A402D8 -:10F48000973006E0E7804028E30225FF405CF1BFAB -:10F490004111B727002022C403A4472126C24AC035 -:10F4A00006C693042500054901E82285B24022449E -:10F4B0009244024941018280A6851305A401973038 -:10F4C00006E0E7806024E30225FF405CF1BF011104 -:10F4D000B727002022CC03A4C72026CA06CE2AC400 -:10F4E0002EC6854419E40145F2406244D2440561C8 -:10F4F00082809C841830858B6304F7000044DDB75C -:10F5000019469305A10013052400EFF02F94E3178B -:10F5100095FE0545D1BFB727002003A7872A011113 -:10F520002AC62EC432C206CE3C4B93E707083CCB1A -:10F53000975006E0E78020ADB726002083A7C627B6 -:10F540003245A24523A007001831034825002207B1 -:10F550004208429703480500429703483500620875 -:10F56000429798D7583103486500220742084297CE -:10F570000348450042970348750062084297D8D770 -:10F5800018350348A5002207420842970348850022 -:10F5900042970348B5006208429798DB5835034804 -:10F5A000E5002207420842970348C50068354297A4 -:10F5B00062052A97D8DB9831A821220742052A97AD -:10F5C00088212A97A83162052A9798CFD831E82157 -:10F5D000220742052A97C8212A97E83162052A970F -:10F5E000D8CF9835A825220742052A9788252A973B -:10F5F000A83562052A9798D3D835E8252207420511 -:10F600002A97C825EC352A97E2052E97D8D3D843F8 -:10F61000759BD8C3D84313671700D8C398431367A3 -:10F62000170098C3124603A7C6275C43858BADEB32 -:10F630001C4F01451CA283A7C6279C4FA1831CB267 -:10F6400083A7C6279C4FC1833CA283A7C6279C4F94 -:10F65000E1833CB283A7C627D84F58A2D84F218355 -:10F6600058B2D84F418378A2D84F618378B298536B -:10F6700018A69853218318B69853418338A69853F7 -:10F68000618338B6D85358A6D853218358B6D85377 -:10F69000418378A6DC53E1837CB6F2400561828029 -:10F6A000010051B7B727002003A7872A1605136565 -:10F6B00005083C4B93E707083CCBB727002083A7FE -:10F6C000C72703A7450E88C398CB03A7850E01451E -:10F6D000D8CB03A7C50B98CF03A7050CD8CF03A79A -:10F6E000450C98D303A7850CD8D303A7C50C98D78E -:10F6F00003A7050DD8D703A7450D98DB03A7850DF4 -:10F70000D8DB03A7C50D98C703A7050ED8C7984334 -:10F710001367070498C38280B727002003A7872AAE -:10F720001605136505083C4B93E707083CCBB72744 -:10F73000002083A7C72703A7C50E88C398CB03A7BC -:10F74000050F0145D8CB03A7C50B98CF03A7050C20 -:10F75000D8CF03A7450C98D303A7850CD8D303A70C -:10F76000C50C98D703A7050DD8D703A7450D98DB7F -:10F7700003A7850DD8DB03A7C50D98C703A7050E02 -:10F78000D8C798431367070498C3B7270020938707 -:10F79000C728130700F8F8A38280372700208326A4 -:10F7A0000728411126C29C5E06C622C499834AC01E -:10F7B000858BBA84B1CB93070006372900209CDEE5 -:10F7C0008347C9281304C92893F7070489CFB727AB -:10F7D000002083A70700829708C88347C92893F7AA -:10F7E000F70B2306F9285C2093F7070491EF854770 -:10F7F0005CB0B727002083A7872A096798C713073B -:10F8000000FC58A05844F8D303A704281C5F918338 -:10F81000858B89CBC1471CDFB72700209387C7287A -:10F820008546D4A31C5F9D83858B91CB93070008ED -:10F830001CDFB72700209387C7280547D8A3B72721 -:10F84000002083A7C727D8430583058B19C7D84352 -:10F85000759BD8C3D843799BD8C3B2402244924405 -:10F86000024941018280B7270020B726002003A665 -:10F87000872A9387C62803C7C628058B11C723820A -:10F880000700A382070082809833058B6DFB7852B6 -:10F890007DF3D833FDB737280020032708281C5FE5 -:10F8A0009583858BBDE701C61C5BBD831CA29DC6ED -:10F8B00083270828985B460793576701635607001C -:10F8C00093E707C0C207C18303970600C207C18739 -:10F8D00009C7BA970947B3C7E7029EA285C11C3181 -:10F8E00091CF3E951C350547194593F6F70663936E -:10F8F000E602E207E187394563CE0700832708283F -:10F900003727002001459C5FED838D8BA30BF728E3 -:10F91000828005458280411122C406C6372400201A -:10F9200026C20327842A3DE5AE877453FDFEB72423 -:10F9300000209384C4283E85B2852381040097402B -:10F9400006E0E7806049B727002083A70728B706AD -:10F9500080009843558F98C3D857719BD8D7832779 -:10F96000842AA3820400A3800400094798C3832645 -:10F97000842AB72700209387C728B823058B11E76F -:10F98000B833058B51C723820700B240224492440A -:10F99000410182808D47631FF500B727002083A7B0 -:10F9A0000728B70680009843558F98C3D857719B96 -:10F9B000D8D775BF8547E31CF5FAB567BD075CC7A7 -:10F9C000010001008327842A0967930600F898C77D -:10F9D000372700201307C72854A337270020832682 -:10F9E00007280946984231830D8B6319C700130716 -:10F9F000E043F8D33D673D07D8C795BF98423183B0 -:10FA00000D8B01E713076019EDB71307E01BD5B79E -:10FA1000F85225F79DBF5D7152DC372A002003277D -:10FA20000A2886C6A2C4A6C2CAC04EDE1C43B72995 -:10FA300000203729002093F7F7E793E707081CC356 -:10FA400083A6492F3707CEFF7D179C4613068002F9 -:10FA50002A84F98F9CC68327892A2800AE8423A88C -:10FA6000070493051008EFE01FB9974006E0E78010 -:10FA70008059974006E0E780806083270A289376C4 -:10FA8000F41F3706330023A40700984B370FFCFF01 -:10FA90004E881367F70398CBF84FCA88130510F800 -:10FAA000137707E0558FF8CF9843F576FD16758FDD -:10FAB00098C3372700208326892A1307C728A30263 -:10FAC0000700A3000700054798C29843D285B702F4 -:10FAD00004001377F7E798C398439303401F114935 -:10FAE0001377F7E71367071098C303A7492F7D1F04 -:10FAF00085491C47930F8002D18F1CC7930790053F -:10FB0000BCCA0147340013533700269383470300D0 -:10FB100013767700B3D7C740858BE1C383A7052849 -:10FB2000832E482F239C07042390070603AECE02A2 -:10FB3000137EDEFF23A6CE0383AE0700137EF707F6 -:10FB400093FE0EF833EECE0123A0C70103AE4702A9 -:10FB5000336E5E0023A2C70383AE882A014E23A220 -:10FB60007E0603DA070663074E0303AE0703038A24 -:10FB70000600135EFE00620E135E8E416358CA01DA -:10FB800003AE0703135EFE002380C60103DE0706F3 -:10FB9000137EFE0F03AA4E0663060A0003DA8705EA -:10FBA000E37F49FB03AE4702337EEE0123A2C70386 -:10FBB00083870600635CF400034E03003396C9009C -:10FBC0001346F6FF3376C6012300C3003E8663D397 -:10FBD000A7002A8613158601618505071377F70F9D -:10FBE0008506E312F7F3B640264496440649F259D7 -:10FBF000625A61618280372600208327862AD8478F -:10FC00009316170163D2060298479316170163DD16 -:10FC100006007D57B8D737270020130747F6544F03 -:10FC2000850654CF116798C798470D83058B11CF70 -:10FC3000372700201307C728342393E6160034A380 -:10FC4000930600F854A3214798C79847058B19CB12 -:10FC5000372700201307C728143393E6160014B380 -:10FC6000054798C798470983058B09E79847058397 -:10FC7000058B31CB94473727002037250020898218 -:10FC8000858AE5CE832605289442B1828D8AFDE2DD -:10FC9000AC4B9306C728944E93F505029432CDC51C -:10FCA000F9E69306D005D4CF8346C72893E616001D -:10FCB0002306D728114798C7032705285C57F19BCF -:10FCC00093E717005CD70327862A1C4793963701D2 -:10FCD00063D40602B72700209386071603C6C6061C -:10FCE00093870716418A55C283C7C60693E7070262 -:10FCF0002386F60685671CC71C479396270163DF9A -:10FD00000600B72700209387C728D423E206E186A0 -:10FD100063D406008546D4A389671CC71C47939605 -:10FD2000070163D20602B72700209387071683C610 -:10FD3000D706858ABDCA83C6D70693E62600A38662 -:10FD4000D706A1671CC78280A9DE85456395B600EA -:10FD50009306100689BF89456395B6009306500641 -:10FD600099B78D456395B600930690062DBF93060F -:10FD7000B00615BF9306C0063DB71307C728343336 -:10FD800093E6160034B309473DB783C6C706094654 -:10FD9000BD8A6388C60083C6C7060D46BD8AE39B3D -:10FDA000C6F491462386D706B1B783C6D706918A93 -:10FDB000C9DA83C6D70693E6860051B737270020F5 -:10FDC000B72600201386C62A1307C72C5C372C3EA3 -:10FDD000484AAE97FD8BB355F5001CB25CB78589D8 -:10FDE0008DE9183B814613080002B3F7E70201478B -:10FDF000B355E50085899378F70F89C96395D700D6 -:10FE0000A30016018280850693F6F60F0507E3111D -:10FE100007FF8280B727002083A70700011122CCAB -:10FE200026CA4EC606CE4AC88297B72400209387BA -:10FE3000C42C804781496300A4043727002093071E -:10FE4000C72ABC2F018D135455009384C42C937979 -:10FE5000F5011309C72A636DF4008D370347A90123 -:10FE6000944493175700BE96198C94C4E377E4FE2C -:10FE70001604B3693401F24062444E85D2444249CB -:10FE8000B24905618280B727002083A7070041118E -:10FE900022C44AC006C626C282973729002093078B -:10FEA000C92C80476307A404B72400209387C42A81 -:10FEB000BC2F018D135455001309C92C9384C42AF7 -:10FEC0006369F402E53DBC2C032789009396570033 -:10FED00036971D8C2324E900E376F4FE2244883013 -:10FEE000B2409244024981454101174306E0670050 -:10FEF000035CB24022449244024941018280B72708 -:10FF0000002003A7472FB75702009387079F832638 -:10FF100007091396560063580600832607091396AF -:0CFF2000660063440600FD17FDF38280BC -:10FF2C00B72700203727002083A7C7F5032747F5FD -:10FF3C0001456313F7008280F62399E2D6233695A8 -:10FF4C009C43C5BFB727002083A587FB372700201C -:10FF5C00938787FB13860522232EC7F4DA23938716 -:10FF6C0085FFB72600204111BA97056523AAF6F440 -:10FF7C0006C61D05935637006374E50093060020F2 -:10FF8C003307D60037250020232CE5F423A0E522E7 -:10FF9C00E11656A2231306001CC3998FE1175EA32A -:10FFAC0023130700B53FB240B72700202395A7F6CF -:10FFBC00410182801DC18346E5FF1307F00F914775 -:10FFCC00639EE600411106C69700FB1FE7800012F6 -:10FFDC00B24081473E854101828095473E858280B3 -:10FFEC0001E9014582800145B240224441018280F1 -:04FFFC0095654111B5 +:10E29000C5BFB7270020373700209387073B1307F8 +:10E2A000C7A76373F700828023A007009107D5BF3B +:10E2B000411122C4B747024006C603A4C72023A6C3 +:10E2C00007200F10000011C199E5B747024023A6AF +:10E2D0008720014545A093073500C207C183F19B04 +:10E2E000C207C183130740036366F7023727002084 +:10E2F0000325076337270020832687626391A602E0 +:10E30000372700200327C76B69D3C207DD8D05457A +:10E31000029765BF372700200325C762E1BF7A2136 +:10E3200031EF5A21636CF704B72600203306F7401B +:10E330002148938686636375C8028328050003D845 +:10E340006600138687001D8F2A9661175AA2232024 +:10E3500016012313060010C15EA1130788FFFAA25D +:10E360006EA1EE222105B387F540FEA2B747024019 +:10E3700023A68720B2402244410182800841BDBFCC +:10E38000B747024003A8C72023A607200F100000AC +:10E3900001E523A607218280B727002003AE07638B +:10E3A000B727002003A387628146F28763FE6708D0 +:10E3B00083A80700636DF50863EBA808138787003F +:10E3C0006364E508F223216705076319E600372631 +:10E3D00000200347064505072308E64437260020AA +:10E3E00013058663CE237A212393070013068663E1 +:10E3F0002E97420741837AA16383C7033725002004 +:10E400000325C562630DF500EA2211E9DE2223A08F +:10E4100016012107BE95A105CEA27AA2B687984320 +:10E4200063046702B726002083A6C662630ED70086 +:10E43000762399EAD6234E231843A106AE96D6A397 +:10E4400098C37E22A1077EA2B747024099B7BE8635 +:10E45000C687A9BFB7270020B726002083A7076378 +:10E4600003A686622A87B305B5406314F6003A8591 +:10E4700029A8938687009C43E369D7FEE377F7FEDC +:10E480002E85E3E4D5FEE3F2F5FE828023AC05FEA3 +:10E490001C4181E70CC18280BA8703A787FF6DFF0B +:10E4A00023ACB7FE8280411126C24AC0B744024065 +:10E4B00006C622C403A9C42023A604200F1000000E +:10E4C00009E923A62421B240224492440249410191 +:10E4D00082802A842105BD654205C18D4181C93BE9 +:10E4E00011C9FD572320050042A17CA123A62421A8 +:10E4F0002105D1BF23A624210145F1B701114AC846 +:10E500004EC6B747024006CE22CC26CA83A9C720F2 +:10E510002A8923A607200F10000037250020032496 +:10E5200045638144014609E889ECA1654A85971055 +:10E5300005E0E780A0B725A08347E4FF639D27039C +:10E54000A1C0A68513054563970005E0E780403527 +:10E5500069DCA1654A85970005E0E780406FF240DD +:10E560006244B747024023A6372126854249D24458 +:10E57000B2490561828091E02286032484FF65B759 +:10E58000A284E5BFB727002083A7476899E33E85AB +:10E590008280BA236315B7009823E30AA7FEDC47FD +:10E5A000F5B7B747024003A7C72023A607200F10DF +:10E5B000000001C599C1814711E6B747024023A673 +:10E5C000E7208280B386F50003C80600B306F50095 +:10E5D000850723800601E317F6FEC5B737470240DB +:10E5E0008327C720232607200F10000019C191C1DF +:10E5F00011E6374702402326F7208280910503A7C2 +:10E60000C5FF11057D16232EE5FEDDB73747024015 +:10E610008327C720232607200F10000001C53307DA +:10E62000C50011E6374702402326F7208280050502 +:10E63000A30FB5FEE31DE5FEF5B7B747024083A67D +:10E64000C72023A607200F10000081473307F500DD +:10E650000307070019E7374702402326D7203E85E6 +:10E6600082808507E5B7011126CA4AC8B74702402C +:10E6700006CE22CC83A4C7202A892E8623A6072073 +:10E680000F100000131506019305F004418132C6F6 +:10E6900005312A8401C53246CA8521372285F240D8 +:10E6A0006244B747024023A697204249D2440561FD +:10E6B0008280B747024003A7C72023A607200F1078 +:10E6C000000001C599C1814711EAB747024023A65E +:10E6D000E720054582808507E309F6FE3308F5004B +:10E6E000B386F500034808009422E306D8FEB74736 +:10E6F000024023A6E72001458280B747024003A7D6 +:10E70000C72023A607200F1000009307F6FFBE9531 +:10E710002A966317C500B747024023A6E7208280E8 +:10E72000FD159C310505A30FF5FEE5B737470240FF +:10E730008327C720232607200F10000001C53307B9 +:10E74000C50019E6374702402326F720014582809D +:10E7500005058346F5FFE397B6FEE31BE5FE374765 +:10E7600002402326F72005458280797126D2B724FE +:10E77000002022D403A4446806D64AD04ECE52CC00 +:10E7800056CA5AC85EC662C455C4372A0020372903 +:10E790000020B7290020814BB72A002037CBC901C0 +:10E7A000130A8A68130989639389096D3E2099EFDA +:10E7B0005C44639A0B0023A2F468032CC4002285F6 +:10E7C000C1366284A9A823A6FB00C5BF83A7CA6778 +:10E7D00082971C443307F5406376F50003A7490090 +:10E7E0001D8F2A979306FB3763EAE6062328090064 +:10E7F0002E200820970005E0E78060455C405844E3 +:10E80000B1C70C4403A64900AE97BE8663E4B700C7 +:10E8100063E4C700B386C74014C4A28B3A8459F49A +:10E82000B727002093878763984B854663FCE604EF +:10E830007D1798CBB250225492540259F249624A41 +:10E84000D24A424BB24B224C4561828063950B0009 +:10E8500023A2E4689DB723A6EB0085B703278A02AD +:10E8600019CB63EDA7003385A740832709016374A3 +:10E87000F5002328A900A28B404455B703A74900FF +:10E88000BA97D5B723A8070075B701114EC6B74789 +:10E89000024006CE22CC26CA4AC852C483A9C72049 +:10E8A00023A607200F100000372400209307046DD3 +:10E8B000C843DC271304046DB9CFB7370020938712 +:10E8C000878303D7870A21CB83A4470A6385A404DF +:10E8D000B727002013878763184B138A8763630F5A +:10E8E000A70E372900208327C967829763E5A40E06 +:10E8F0008327C967898C829703270A0163F3E400A1 +:10E900002687B307A7003E85544063E4E70063E42D +:10E91000D7003385D740B747024023A637215C4054 +:10E92000639DA702B7240020938484639848B72787 +:10E93000002083A7C7676315A70A82975440B7478B +:10E9400036FE938707C8B6973387A7003A85636476 +:10E95000F7006364D7003305D740B73400209387AE +:10E96000C497DC539384C49799CBB737002083A610 +:10E97000879F3707CDFF7D179C46F98F9CC611E115 +:10E9800048408547DCC4B727002083A7076B8297E0 +:10E9900005E1DC5089CFDC4499CB976006E0E78045 +:10E9A00060C1975006E0E780404023A60400753B15 +:10E9B000DC5091CBB737002003A7879FB706330001 +:10E9C0001C47D58F1CC7F2406244D2444249B24929 +:10E9D000224A056182805C40BE9419BF268525BF0E +:10E9E000829794485840B387A6003E8563E4D700D9 +:10E9F000E3E5E7F63385E7408DB7B727002023A886 +:10EA0000A73A11C5B72700200547238AE73A828035 +:10EA1000B727002003A7073B411122C406C6138471 +:10EA2000073B11C30297B727002083C7473B93F7E3 +:10EA3000F70F99E323200400B24022444101828071 +:10EA4000011126CAB724002022CC4AC89387046D3E +:10EA500006CE4EC652C456C2DC2737290020938406 +:10EA6000046D1304496695E3B73700209387C79771 +:10EA7000D833058B19CBF8339946639BE60AA382FA +:10EA80000700EF10C02C5C4482971C4491C382970E +:10EA900037240020B72900209307846303A709685F +:10EAA0009033130A84638347846393961700BA965E +:10EAB0009622C9CA8347846363EEC708230C0462A5 +:10EAC000373400209307C4979C371304C49763918D +:10EAD0000710B727002083A7C767F5C3DC402328AA +:10EAE000FA006131B727002083A7076BE9CB7C30A0 +:10EAF00011476366F70CB73700209387879CDC27A4 +:10EB0000918BD5EFB727002083C7473B93F7F70FCB +:10EB1000DDE783461A0003A6096863C7D70C624481 +:10EB2000F240D2444249B249224A924A0561B1BBFD +:10EB3000F8339D46E39BE6F4A3820700EF10202103 +:10EB40001C4899B7850793F7F70F230CF462E3ECA1 +:10EB5000C7F48DB786073E970E23231007000345A1 +:10EB60008463B727002083A7076613172500B72AF9 +:10EB70000020BA979C43239C0A66829783D78A67B2 +:10EB80000347846393C7F7FF7D8D9317170003A78F +:10EB900009683E971E235D8D0AA38347846381C75E +:10EBA0008507230CF4628327496681C78297232255 +:10EBB00009660347846383471A00E371F7F0F24064 +:10EBC0006244D2444249B249224A924A0561828053 +:10EBD0007C3093F7F70FE39E07EEA30404009750F1 +:10EBE00006E0E780804CF5B51397170032971A239B +:10EBF00079F785071DB7374702408326C720F1778D +:10EC0000FD17F58F2326F72001000100B72700200C +:10EC100093878763C84F832787262326D7206A05D3 +:10EC200093C7F7FF99835D8D8280B727002083C744 +:10EC3000B76389CFB727002083C7C76D91CBB727AC +:10EC4000002003A3076E630703000283054582804B +:10EC5000094582801305F00F8280B737002003C674 +:10EC60000783B727002003A7074281476315F600F3 +:10EC7000814636858280BA8613078702835587FDD1 +:10EC8000E389A5FE850793F7F70FCDB7B7370020C7 +:10EC900003C71783B727002083A7C7432A86050722 +:10ECA00081463E859E236388C700850693076500DD +:10ECB000E3E9E6FE01458280B727002003A747432A +:10ECC00019E3014615A81C4703D8A700636B05018B +:10ECD00083584700B38608016355D5008146639485 +:10ECE00016011843F1BF3E86C10703D3A7FF631780 +:10ECF000A30099C123900501328582808506C20652 +:10ED0000C182F1BFB737002003C60783B7270020B1 +:10ED100003A7077D81476315F6008146368582800B +:10ED2000BA861307C703835567FCE389A5FE8507E9 +:10ED300093F7F70FCDB7032785116DCB411122C48F +:10ED400006C65C258345E5042A8493F7C70F5CA5B6 +:10ED50001437522713958601618563F7C506635101 +:10ED60000506082793F6F60714B7054693E627002D +:10ED70006314C50093E6170054A45C4389075CC381 +:10ED80004CB8032504112E864C430905EFF07F8112 +:10ED9000832784115038D443DA27B296118FD4C315 +:10EDA000DAA789473CBCB72700200347640383C721 +:10EDB000A7696371F7045C2493E707015CA41DA8AD +:10EDC00093E717005CA46DBF9376F60F63590502B5 +:10EDD0000827854513E627006314B50013E61700DE +:10EDE00050A454B8A304070085473CBC8327841172 +:10EDF0009C43D5FBB240224401454101828093E708 +:10EE000017005CA454B8A3040700032504114C4365 +:10EE10000905EFF00FF9832784115038D443DA271E +:10EE2000B296118FD4C3DAA78D47C1B7054582804A +:10EE3000B737002083A7C795411122C406C6858B2A +:10EE40002A84D5E34165130525F5971006E0E78090 +:10EE5000802851C93C253EA583270412ADE3232019 +:10EE6000A4122322A41285472311F40423200500B1 +:10EE70007C2854415EA5583418A5054718B5373786 +:10EE800000200327079A1385170215811C437D155F +:10EE90001375F50F9CC25C43DCC21C479CC65C47E3 +:10EEA000DCC61C4B9CCA5C4BDCCA1C4F9CCE5C4F26 +:10EEB000DCCE19CD9386060213070702C1BF832754 +:10EEC000441288C3835724042322A412850769BFF0 +:10EED000B7370020938787839A2705079AA7B24000 +:10EEE0002244410182805C2423090400054593C724 +:10EEF00047005CA4EDB71C2D93F7E70FC5EB1C3D55 +:10EF0000D5E73029542509CA3727002083456503F2 +:10EF10000347B76963E7E50013F7060149CB0147EB +:10EF200009C6C18A0357E51B81C68356251C36973F +:10EF30003DCFB727002003D5876D1307C71237468B +:10EF40000F00B335A702411113060624814622C4DF +:10EF500026C206C67D543305A70297D006E0E78097 +:10EF60000093B727002083C7F769B384A700B7379A +:10EF7000002003A7878C8327070963F387003E845B +:10EF8000184375FBB727002083A7C767829781477F +:10EF90006364A400B307A440B2402244B3B797000F +:10EFA00093C7170092443E854101828081473E8588 +:10EFB0008280B737002003A7479A7C53FDFF8280E9 +:10EFC000011126CAB73400209387848322CC03A47E +:10EFD000870906CE4AC8835704044EC652C456C297 +:10EFE0005AC085072310F40483470414A30F0400B8 +:10EFF0009384848322856387071C6125228597007B +:10F0000006E0E78040726315051A372900201306D1 +:10F01000096D0A2683576408B7460F009385F623C7 +:10F02000B387A7029386062403270409230B04024F +:10F03000032A46001309096DAE97B3D7D70263655B +:10F04000F718B307F7408326C4082324F408814A3D +:10F05000B387E600BE8963E4D70063E44701B38960 +:10F0600047411E3023283409A1CB835604045A306B +:10F0700037460F0056B03387E640B387E7023A3091 +:10F080001306062481468145BA97C207C18333859A +:10F09000A7023EB097C006E0E780607F11CD4E9595 +:10F0A000B3393501AE99AA8763943A016364450187 +:10F0B000B30745412328F408372A00208327CA676D +:10F0C0008297AA898327CA678297E30D35FF832732 +:10F0D000CA6783298408829763EDA90E3385A94006 +:10F0E00063030510B727002083C7F769637DF50E1A +:10F0F000B7490F0093890924B3353503035B8900B1 +:10F10000035A240281465A863305350397C006E028 +:10F11000E780E077B30AAA0033056A0337460F0099 +:10F12000130606248146814597C006E0E7802076D5 +:10F130000DC1B33735035A868146B385B90233858D +:10F14000A902BE9597C006E0E78060743305AA4027 +:10F150002AB03545975006E0E780800223AC84084A +:10F1600038348547631DF700930700FD7CA4B7374B +:10F17000002003A587968347C900A5C3BD38B736CD +:10F18000002003A6469AB73700209387C7971547F4 +:10F19000F8B35846F977FD17F98F5CC60F100000D9 +:10F1A00083A7469A8966860A94C723A25707D8C7B9 +:10F1B000F2406244D2444249B249224A924A024B46 +:10F1C0000561828021291DBDB3064701B387F64042 +:10F1D0009DBD83274900BE9911B78145970005E081 +:10F1E000E780C00469BF8347C90023AC040885C316 +:10F1F000B737002003A54796970005E0E780A03DBC +:10F20000B7E700E03707000223A2E72055B783479E +:10F21000940285456244F240D2444249B249224AAE +:10F22000924A024BB395F500C205C18101450561C3 +:10F23000170305E06700A3A1011122CC4AC84EC6FE +:10F2400006CE26CA52C456C25AC0383585472A84CB +:10F250002E89832905096315F71E83570508035B6B +:10F26000C503372A002093060A6D83DA8600130A45 +:10F270000A6D63FF67191429639CE618032785113B +:10F28000631807180327450A6314071874351D47C8 +:10F290006390E6182A3D330BFB409307204E33055D +:10F2A00065038324440937460F001306062481466C +:10F2B0003305F502B727002083C7E769B3549502E9 +:10F2C000B3B5AA02BE94C204C18023139408338547 +:10F2D000AA0297C006E0E780805BAA9933B5A9002F +:10F2E0002E954E8783274A0019E163E4F90033879E +:10F2F000F940B3845403B7460F009387F6239386EF +:10F3000006242320E900BE94B3D4D40293171B0033 +:10F31000A6976369F70E1D8F2320E900B729002007 +:10F3200083A7C96783240900829763EEA4103385FD +:10F33000A440635D050A83A7C967372B0020130B20 +:10F340000B6D8297032709006365E510198D7E3CDC +:10F3500003578B008E07B387E702130700329387AA +:10F360000719B3D7E70263EBA70E374A0F00930ADA +:10F37000FA23130A0A248357040485072310F4048C +:10F380008347041499E32285912C2285970006E097 +:10F39000E78060396DE1832604098327C4080327C9 +:10F3A0004B00B6973E8563E4D70063E4E7003385FE +:10F3B000E7407C3C835464082328A40885077CBC70 +:10F3C00083578B00B384F402D694B3D444036363AD +:10F3D000950CB304954083A7C967232099008297B1 +:10F3E00063EEA40A3385A440E34705F8B72700205D +:10F3F00083C7F76963E2A708B737002023A8878C83 +:10F4000001459DA883264A00B387F6403E9729B759 +:10F410008357640837470F00B38457039307F723D4 +:10F42000A69793040724B3D4970263E79900B384A3 +:10F43000994023209900DDB583274A00BE99C5BFB6 +:10F4400023A03501E1BDB727002083A7476DBE94F7 +:10F45000F9BD83274B00998F3E95D5BDA1452285E7 +:10F46000970006E0E7806024A305A402B7270020E8 +:10F4700083A7C76B81EF7D55F2406244D244424975 +:10F48000B249224A924A024B05618280894515455C +:10F490008297D5B7B3049740AA9435BF83274B0012 +:10F4A000BE9489B721CD01116C0022CC06CE2A84EE +:10F4B000613339C1FD576307F502B72600209386F3 +:10F4C0008668FC3A9456324791C285836360F7029E +:10F4D000B307F7403EC6B24503459402970005E0E6 +:10F4E000E780C08CF240624405618280B72600202C +:10F4F00083A6466D3697E9BFE134EDB78280B73712 +:10F5000000207971138787834AD00329070906D61B +:10F5100022D426D24ECE52CC56CA094763000906E1 +:10F52000B7340020938A87839387C497FC3395462A +:10F530009384C4970D476383F604DC442A8A99CBED +:10F54000975006E0E7800007975006E0E780E085E7 +:10F5500023A60400FD596C004A85F93915E93715D1 +:10F560000020130505D5EFF04FC9A147DCA0B73740 +:10F57000002083A7479A0947F8D30D47B250225479 +:10F5800092540259F249624AD24A3A8545618280D0 +:10F59000637435013244AA8903290900E31D09FA7D +:10F5A000FD571307F00FE38BF9FC914763F18702D6 +:10F5B0009307B4FF2320FA0023A2FA0A0147DDFFD4 +:10F5C000B727002083A7476D2320FA0045BFB72740 +:10F5D000002083A7476DED17A297E9BF797126D266 +:10F5E00006D622D44AD04ECE52CC56CA5AC85EC68F +:10F5F0008347550303447513AA843E941374F40F90 +:10F600009307400263F687001304B4FD1374F40FEC +:10F6100003AA841383AAC413A38B8412228652855F +:10F62000D68597C006E0E780C023058915E503CBA2 +:10F63000D41201498149337B6403930B50024A86FB +:10F640005285D68597C006E0E780A021058915C5BB +:10F65000639169031374F90F238B8412B2502254FF +:10F6600092540259F249624AD24A424BB24B456126 +:10F6700082808509E20993D989410509E31179FD61 +:10F68000E1BF8327850903560504797193D60701E5 +:10F69000BD8EC206C182358E1357764093575640B1 +:10F6A000898B058B5D8F93573640918B5D8F935778 +:10F6B0001640A18B5D8F93171600C18B5D8F93173A +:10F6C000360093F707025D8F931756009355860017 +:10F6D00093F707041E065D8F1376F60F518F93D7AD +:10F6E000554013D63540118A898BD18F13D675407A +:10F6F000D18F13D61540218AD18F13961500418AD8 +:10F70000D18F1396350013760602D18F13965500CC +:10F71000137606049E05D18F93F5F50FCD8FA207C2 +:10F7200045465D8F3307C70222D42A8426D252CCA5 +:10F7300056CA032A8413832AC4135AC806D6369796 +:10F740004207418393577740135557400989858B6A +:10F75000C98F135537401189C98F13551740218917 +:10F76000C98F131517004189C98F131537001375F9 +:10F770000502C98F131557009355870013750504AB +:10F780001E07C98F1377F70FD98F13D5354013D7BD +:10F7900055401189098B498F13D57540498F13D571 +:10F7A00015402189498F139515004189498F13957B +:10F7B000350013750502498F13955500137505041F +:10F7C0009E05498F93F5F50F4D8F2207D98FB3878B +:10F7D000C7024AD04ECE5EC662C4B697C207C18386 +:10F7E00013D7774013D557400989058B498F13D517 +:10F7F00037401189498F13D517402189498F1395B7 +:10F8000017004189498F1395370013750502498FF9 +:10F810001395570093D58700137505049E07498FEC +:10F8200093F7F70FD98F13D5354013D7554011896A +:10F83000098B498F13D57540498F13D51540218900 +:10F84000498F139515004189498F1395350013751C +:10F850000502498F13955500137505049E05498FC0 +:10F8600093F5F50F4D8F2207D98FB387C702130683 +:10F8700050025285D685B697BD8E93940601C180FD +:10F8800033F6C402137BF60F97C006E0E78060FDF5 +:10F8900005890DED8347D41201498149B38497024C +:10F8A000130C5002C1804A865285D68597C006E067 +:10F8B000E78020FB0589937BF90F11C5638634032C +:10F8C000850993F9F90F0509E31F89FD230B6413DB +:10F8D000B250225492540259F249624AD24A424BDF +:10F8E000B24B224C456182805E8BCDB70111B73798 +:10F8F000002022CC03A4878F26CA4AC84EC606CE53 +:10F90000AA8413092500854905C09C303830858BB1 +:10F910006304F700405CCDBF1946930544004A8557 +:10F92000EFE03FD9E31835FF2285F2406244D2442C +:10F930004249B249056182804111B737002022C493 +:10F9400003A4878F26C24AC006C693042500054932 +:10F9500001E82285B240224492440249410182805A +:10F96000A6851305A402973006E0E780A0DFE30236 +:10F9700025FF405CF1BF4111B737002022C403A42A +:10F98000878F26C24AC006C693042500054901E8B0 +:10F990002285B24022449244024941018280A685D8 +:10F9A0001305A401973006E0E780C0DBE30225FFE2 +:10F9B000405CF1BF0111B737002022CC03A4078FB0 +:10F9C00026CA06CE2AC42EC6854419E40145F24053 +:10F9D0006244D244056182809C841830858B630424 +:10F9E000F7000044DDB719469305A1001305240074 +:10F9F000EFE03FCCE31795FE0545D1BFB7360020B9 +:10FA000083A7C6961307001098C323A007001831D8 +:10FA10000348250022074208429703480500429701 +:10FA2000034835006208429798D75831034865006B +:10FA30002207420842970348450042970348750051 +:10FA400062084297D8D718350348A5002207420814 +:10FA500042970348850042970348B50062084297E1 +:10FA600098DB58350348E5002207420842970348CF +:10FA7000C5006835429762052A97D8DB9831A821DE +:10FA8000220742052A9788212A97A83162052A97DA +:10FA900098CFD831E821220742052A97C8212A9712 +:10FAA000E83162052A97D8CF9835A8252207420564 +:10FAB0002A9788252A97A83562052A9798D3D8359A +:10FAC000E825220742052A97C825EC352A97E20542 +:10FAD0002E97D8D3D843759BD8C3D8431367170044 +:10FAE000D8C398431367170098C303A7C6965C430F +:10FAF000858BBDE71C4F01451CA283A7C6969C4F72 +:10FB0000A1831CB283A7C6969C4FC1833CA283A746 +:10FB1000C6969C4FE1833CB283A7C696D84F58A2A5 +:10FB2000D84F218358B2D84F418378A2D84F6183F0 +:10FB300078B2985318A69853218318B698534183E6 +:10FB400038A69853618338B6D85358A6D853218322 +:10FB500058B6D853418378A6DC53E1837CB68280C3 +:10FB6000010061B7B737002003A7479A1605136550 +:10FB700005083C4B93E707083CCBB737002083A729 +:10FB8000C79603A7450E88C398CB03A7850E0145EA +:10FB9000D8CB03A7C50B98CF03A7050CD8CF03A7D5 +:10FBA000450C98D303A7850CD8D303A7C50C98D7C9 +:10FBB00003A7050DD8D703A7450D98DB03A7850D2F +:10FBC000D8DB03A7C50D98C703A7050ED8C7984370 +:10FBD0001367070498C38280B737002003A7479AAA +:10FBE0001605136505083C4B93E707083CCBB73770 +:10FBF000002083A7C79603A7C50E88C398CB03A789 +:10FC0000050F0145D8CB03A7C50B98CF03A7050C5B +:10FC1000D8CF03A7450C98D303A7850CD8D303A747 +:10FC2000C50C98D703A7050DD8D703A7450D98DBBA +:10FC300003A7850DD8DB03A7C50D98C703A7050E3D +:10FC4000D8C798431367070498C3B7370020938732 +:10FC5000C797130700F8F8A38280B736002003A7E0 +:10FC6000069741114AC01C5F06C622C4998326C26A +:10FC7000858B3689B5CF93070006373400201CDF0B +:10FC80008347C4979304C49793F7070489CFB72792 +:10FC9000002083A7C7678297C8CC8347C49793F790 +:10FCA000F70B230EF4968347C49793F7070285C397 +:10FCB0008347C497373700200327479A93F7F70DF8 +:10FCC000230EF496DC48A16614C786077CD7DC2097 +:10FCD00093F7070491EF8547DCB0B737002083A77F +:10FCE000479A096798C7130700FCD8A09848F8D32B +:10FCF000032709971C5F9183858B89CBC1471CDF44 +:10FD0000B73700209387C7978546D4A31C5F9D8390 +:10FD1000858B91CB930700081CDFB73700209387B2 +:10FD2000C7970547D8A3B737002083A7C796D843FE +:10FD30000583058B19C7D843759BD8C3D843799BD6 +:10FD4000D8C3B24022449244024941018280B7376D +:10FD50000020B736002003A6479A9387C69703C7AB +:10FD6000C697058B19E79833058B01E7785265FB39 +:10FD7000D833A382070082803738002003270897F2 +:10FD80001C5F9583858BBDE701C61C5BBD831CA2F0 +:10FD90009DC683270897985B46079357670163566C +:10FDA000070093E707C0C207C18303970600C20795 +:10FDB000C18709C7BA970947B3C7E7029EA285C1A1 +:10FDC0001C3191CF3E951C350547194593F6F70632 +:10FDD0006393E602E207E187394563CE0700832794 +:10FDE00008973737002001459C5FED838D8BA30377 +:10FDF000F798828005458280411122C406C63734B7 +:10FE0000002026C20327449A3DE5AE877453FDFEC9 +:10FE1000B73400209384C4973E85B28523810400C3 +:10FE2000974006E0E780800CB737002083A707974C +:10FE3000B70680009843558F98C3D857719BD8D781 +:10FE40008327449AA3820400A3800400094798C32F +:10FE50008326449AB73700209387C797B823058B2A +:10FE600011E7B833058B19E3F8526DFBB240224419 +:10FE70009244410182808D47631FF500B73700200F +:10FE800083A70797B70680009843558F98C3D85724 +:10FE9000719BD8D775BF8547E31CF5FA5447F977AE +:10FEA000FD17F58F5CC70F1000000327449A896780 +:10FEB000130600F81CC7B73700209387C797D0A355 +:10FEC000B737002083A707979C43B1838D8B91E7B9 +:10FED000930760197CD354C7A5BF9307E01BDDBF10 +:10FEE0005D7152DC373A002003270A9786C6A2C408 +:10FEF000A6C2CAC04EDE1C43B739002037390020E5 +:10FF000093F7F7E793E707081CC383A6899F370792 +:10FF1000CEFF7D179C46130680022A84F98F9CC66B +:10FF20008327499A2800AE8423A807049305100864 +:10FF3000EFE0CFED3545974006E0E780602483276A +:10FF40000A979376F41F3706330023A40700984BD3 +:10FF5000370FFCFF4E881367F70398CBF84FCA881A +:10FF6000130510F8137707E0558FF8CF9843F5760F +:10FF7000FD16758F98C3373700208326499A1307DB +:10FF8000C797A3020700A3000700054798C298433C +:10FF9000D285B70204001377F7E798C39843930319 +:10FFA000802511491377F7E71367071098C303A754 +:10FFB000899F7D1F85491C47930F8002D18F1CC7E5 +:10FFC00093079005BCCA01473400135337002693AA +:10FFD0008347030013767700B3D7C740858BE1C30F +:10FFE00083A70597832E889F239C070423900706E9 +:10FFF00003AECE02137EDEFF23A6CE0383AE070040 :020000025000AC -:10000000938505D022C4C98D2A842105C2054205E5 -:10001000C181418106C69700FB1FE780A00271D90C -:10002000FD572320050042A17CA12105E1B7ADC108 -:10003000B727002083C757F6411122C406C62A8479 -:100040002E856375F400894763E88700953F0D4569 -:10005000B24022444101828083A785FF99E703C70C -:10006000E5FF9307F00F6305F700993F1545CDB7FE -:1000700037250020238F85FE130505F69700FB1F0B -:10008000E780C01622852244B240A165410171A2D9 -:1000900015458280B727002023A007F68280BDCDBA -:1000A000797122D406D626D24AD04ECE0144414799 -:1000B000B3D78540858BB1CF1205314722953305E3 -:1000C000E502B727002003A987FF8544B394840085 -:1000D000C204C180BE892A990327090011C70325DC -:1000E00049002EC60297B24531473304E40283A784 -:1000F00089FF3E941C4489E723200900232209003C -:10010000B2502254A58D02599254F2492E85456170 -:1001100082800504E31EE4F88144DDB72E858280E9 -:1001200041111397050122C406C626C24AC0418761 -:100130002E84635107029700FB1FE780C00C11C19A -:100140004135A1673D8C2285B24022449244024948 -:1001500041018280EDD9AA8701474146B356E44068 -:10016000858A9DCA9207BA97B146B387D702B72648 -:10017000002003A986FF8544B394E400C204C18033 -:100180003E9983270900032549008297232009000F -:1001900023220900258C45BF0507E311C7FC8144D4 -:1001A000D5BFB727002083A7C7FD411122C406C6CB -:1001B00037240020130484DA91C782971C403E95AF -:1001C00008C031A0B727002083A70700FDF708402B -:1001D000B74703009387D73F3305F502B7A726003B -:1001E000938737ECB2403E9508C02244410182809B -:1001F000B727002083A7C7FF411122C406C63724B2 -:100200000020130444F689C782975C483E9548C88D -:100210004848B240224441018280B727002083C76A -:1002200057F6637EF5003727002093171500032546 -:1002300007FB3E951E21DD8D0EA1014582800D45F7 -:100240008280B727002083C757F66370F5023727EF -:10025000002093171500032507FB93C5F5FF3E9576 -:100260001E21FD8D0EA1014582800D458280011168 -:100270004AC806CE22CC26CA4EC652C49307F00204 -:10028000094963EEA706B146B306D502B727002099 -:1002900003A787FF094936971C43B5C3135A450086 -:1002A00005443D893315A400131405014180AE8433 -:1002B0005285A2859700FB1FE78040FCAA8901496F -:1002C0001DCDA2855285B53FB727002083A7070023 -:1002D0008297B727002083D767FD2A84130600641E -:1002E000338797028146B3B7970213050732B335B8 -:1002F000E500BE95EFC0B12A229523A4A900F240E3 -:1003000062444A85D2444249B249224A0561828008 -:10031000B727002083C757F66364F5000145828044 -:100320000111B727002052C403AA070006CE22CC31 -:1003300026CA4AC84EC6630D0A0837290020130989 -:1003400089FBAE898355E9012A84B284B387C5024B -:100350008146B3B5C50213850732B337F5001306DE -:100360000064BE95EFC0B123B74736FE9387F7C749 -:1003700063E0A706029A8355E9012A8A13060064FE -:10038000B38795028146B3B5950213850732B3371B -:10039000F500BE95EFC0B1202A9ACE852285970040 -:1003A000FB1FE780A0ED09C523244501054515A0E5 -:1003B000936504F0C205C18141459700FB1FE780AA -:1003C00060C805E18327490381C7A285114582974B -:1003D0000145F2406244D2444249B249224A056191 -:1003E000828037270020832747FB85E3232AA7FA4B -:1003F000854723260500232445012311350100A14B -:100400001CB1232205005DB7BA87D84775FFC8C75E -:10041000C5B741C9797122D426D24AD04ECE52CC2A -:1004200056CA5AC85EC662C406D6B689B28A2E8A31 -:100430002A899304000C4144372B0020054C930B70 -:10044000000383278BFFA6979C43A1E79375F400D5 -:10045000B315BC00C2055686C181135544004D3DFD -:100460000DC983278BFF0145BE9423A0240123A23D -:1004700044016384090023808900B25022549254BD -:100480000259F249624AD24A424BB24B224C456170 -:10049000828005041374F40FB104E31474FB214546 -:1004A000E9BF09458280411122C426C24AC006C65E -:1004B0002A842E89B284A93DCA8522859700FB1F14 -:1004C000E780C0DB05CDB727002083D567FD2A84F0 -:1004D00013060064B38795028146B3B59502138570 -:1004E0000732B337F500BE95EFC0710B48C0014528 -:1004F000B240224492440249410182802145CDBF4D -:10050000411122C426C24AC006C62A892E849700F9 -:10051000FB1FE780A0D6AA8419C123110500A2857C -:100520004A850533B727002083C747F6639927011B -:10053000B727002003D7C7FA598C239687FA0145BD -:1005400091E01945B240224492440249410182801F -:100550009307F00263E8A7044111B14722C43304B2 -:10056000F50226C2B724002083A784FF06C6A297FF -:100570009843894715C39377F5008545B395F500F2 -:10058000C205C1811181AD3F83A784FFA29723A03B -:10059000070023A207008147B240224492443E85CF -:1005A0004101828089473E858280411106C622C46E -:1005B0009700FB1FE78080CC11E50145B240224443 -:1005C00041018280B727002083A70700004582975A -:1005D000B74736FE3305A4409387E7C7E3EFA7FC90 -:1005E00093070064B335F50237270020035667FDF3 -:1005F00081463305F502EFC0817AC9B74111B727AB -:10060000002006C623AEA7FE0295B240B727002001 -:1006100023AEA7F6014541018280994763E9B700FF -:10062000B72700208A05938707F9BE9588C1828085 -:10063000B727002023AA07FA37250020B727002074 -:10064000411123AE07FE7146B727002081451305EF -:1006500005F906C623A0070022C426C237240020BD -:100660009700FB1FE78060D2130544F61306800253 -:1006700081459700FB1FE78040D1D938B72700207C -:1006800083C7D7FC130444F6854513D527008D8B0B -:100690003E958D473305F5029947B724002039056B -:1006A0001375F50F28A03305F502130505249700EF -:1006B000FB1FE780209923ACA4FE25CD302099476D -:1006C00081453306F602130606249700FB1FE780D8 -:1006D000C0CB83A784FF3820B7240020938707244A -:1006E0000A0723A6F4F8BA97372700202328F7FA39 -:1006F00055327D2E1C3083A6C4F8370605001397AB -:10070000270036971306E60910C3138717001377DF -:10071000F70F0A073706050036971306061210C3AF -:1007200013873700890793F7F70F8A0718B0B69732 -:1007300090C3B24022449244410182803727002076 -:10074000130747F61C33342363FFD700B726002076 -:1007500083A6C6F81386170010B3139727003697A1 -:1007600008C33E8582809307F00FE5BF1C41E9CBAB -:1007700041777D8FB706002089476314D70C5A2133 -:1007800069C3411126C21946AA849305F00F610579 -:1007900006C622C49700FB1FE780C0C805478D47E7 -:1007A000630AE5089C4491C7985C994741C7D85CA7 -:1007B00051C337240020130600048145130584FB30 -:1007C0009700FB1FE78060BC13060004A685130595 -:1007D00084FB9700FB1FE78000B8930784FBDA27B0 -:1007E00001E713070010DAA7F82719E30547F8A770 -:1007F0009A2B19E36D479AABF83719E31547F8B709 -:10080000B82B19E30547B8ABB83B19E3F837B8BBC9 -:10081000D82B19E32547D8ABF82801E71307C00305 -:10082000F8ABDC5791C78297B72700202396A7F62D -:1008300001358147B240224492443E854101828085 -:1008400089473E858280B727002083A707000111D2 -:1008500006CE22CC26CA4EC64AC88297B7270020A9 -:1008600083D967FD93070064B335F5024E86814650 -:100870003305F502EFC0A152B7270020138747F6D2 -:10088000004FAA84014563049402138947F6338517 -:100890008440636C94004E8681461305009C93054A -:1008A000F063EFC0C14F018D2695232C9900F240D3 -:1008B0006244D2444249B24905618280011122CC8E -:1008C0002E84B7D506000A8541469385451E06CE7F -:1008D000EFC01106180806043A94B7270020035504 -:1008E00004FF83D787FDF2406244AA9737450F0083 -:1008F000130505243355F50205618280B7270020D2 -:1009000083D787FD51471D45637CF7027947194519 -:100910006378F7021307200315456373F702130783 -:10092000B0041145637EF700130740060D45637957 -:10093000F7001307600909456374F70013B5B70F93 -:100940008280011122CC06CE2A842EC6EFF07F854C -:10095000B245F240818D33A5A502229562441375FC -:10096000F50F05618280011122CC06CE2A842EC6A5 -:10097000EFF03F83B245F240818D33A5A502229569 -:1009800062444205418105618280011122CC06CE7C -:100990002A842EC6EFF0FF80B245F240818D33B538 -:1009A000A5022295624405618280B7270020138743 -:1009B00087FB585739CF411122C426C24AC006C608 -:1009C000138987FB0297B7270020138747F61A275A -:1009D0002A84938447F605CBBA876373A700AA8756 -:1009E000C207C183BA866373E400A286C206C182CD -:1009F000958F51476359F7008327090391C3829765 -:100A0000EF50616C82A4B2402244924402494101F9 -:100A100082808280011122CC37240020930784FB3E -:100A20009C5B06CE130484FB81C72AC6829732459D -:100A300029C57A2C85470DCF1A301DCBB72700204A -:100A400023A0A7007C3899EF6A2C9307805737467C -:100A50000F003305F5021306062481468145EFC0D9 -:100A6000013468B83715050013056584413E814798 -:100A7000F24062443E8505618280B727002093875B -:100A800047F623AE0700E17793C727A17EAC930713 -:100A900020031EB07D57B747024023A4E726B707BF -:100AA0000020372700209387276C2320F70059BFA9 -:100AB000011122CC37240020930784FB884706CEFF -:100AC00026CA4AC801E90545F2406244D244424977 -:100AD00005618280130484FB1C5CF5D7585C65D7E4 -:100AE0007000854582971844B247E30EF7FC4A240C -:100AF0009305E004B724002097F0FA1FE7808054A4 -:100B0000138744F608D3938444F655DD52249305A5 -:100B1000F00F01499700FB1FE78020877C2490504D -:100B2000634DF900328597F0FA1FE780E05C0145DC -:100B300023A0040223A2040241BF4E240844585CAF -:100B4000B3872503898105093E9508C20297F9B745 -:100B5000411122C437240020930784FB9C4726C2FE -:100B600006C6B72400204AC0938444F691EB88500F -:100B700039EDB2402244924402490145410182804C -:100B8000130484FB5C5CE5D79C5089EB4A249305F5 -:100B9000E00497F0FA1FE780E04A88D0885061D9D6 -:100BA00052249305F00F014997F0FA1FE780E07D8A -:100BB0007C249050E35DF9FA4E241C4433852503D0 -:100BC000898105093E955C5C08C28297D5B797F08C -:100BD000FA1FE780605223A0040223A2040251BF3F -:100BE00001114EC6B7290020938789FB9C4726CA6E -:100BF0004AC852C406CE22CC56C25AC02A8AAE84F3 -:100C000032896388071E938989FB03A789036302DE -:100C100007121307F01F6360A71237240020130781 -:100C200044F6832A0702130444F663980A0803D59E -:100C3000C9009565938515E097F0FA1FE78080401D -:100C400008D02A867DC583D5C90083A7890303A55B -:100C500089008981829783A78900832A04025CD056 -:100C600089476314FA08C1476395F40C83D5C9001A -:100C70009147938505FCB3C5F5028A05D695B82141 -:100C80009307A0056313F70A9E216390470B4A85DB -:100C90002686910597F0FA1FE780E06B1C50568579 -:100CA000639157130145F2406244D2444249B2492C -:100CB000224A924A024B056182805850E382E7FA49 -:100CC00003D5C9009565938525E097F0FA1FE78065 -:100CD0006037AA8A39CD83D5C9002A8683A78903BC -:100CE00003A5890089818297A5BF8D47631BFA0000 -:100CF000C1476390F40483D5C900938545FDF199FC -:100D0000B5BF91476318FA006395440383D5C900C2 -:100D1000A115F5B793070010631DFA00A14763EA18 -:100D2000970083D5C900C115D9BF1C505685639D56 -:100D3000570B29458DBF9D6A637A5509930A05E0D3 -:100D40001947B3CAEA0203D7C900372B0020B38A78 -:100D5000EA02BE9A93074BF6DC53130B4BF66395EE -:100D6000570103240B021DE003D5C9009305E004DD -:100D700097F0FA1FE780002D2A8445DD83D5C9004E -:100D800083A789032A86898156858297914513070F -:100D9000A005898193972500A297B4236391E60467 -:100DA0009623639C460385058A052686A2954A8577 -:100DB00097F0FA1FE780205A83270B02E38487EE1F -:100DC000228597F0FA1FE7802033E9BD2167791764 -:100DD000E361A7F6B30A5541BDB7AC335DBF8327C6 -:100DE0000B02E38887F4228597F0FA1FE780C03072 -:100DF00089B7B727002083A547F885DD914793067B -:100E0000A0058983139727002E973023E313D6F28A -:100E10001223631C460185078A072686BE954A85EC -:100E200097F0FA1FE7802053B5BD3C33D9BFB727F1 -:100E30000020938787FB984721C3D85F15CF85464D -:100E4000631CD502411122C437240020130444F648 -:100E5000105006C611CECE274850898102970850FF -:100E600097F0FA1FE780402923200402232204027E -:100E7000B2402244410182808280011122CC372479 -:100E80000020930784FB56C283AA870026CA4AC85B -:100E90004EC606CE52C42A89AE84B289130484FB9E -:100EA000638D0A1A5C5C99EB2945F2406244D24496 -:100EB0004249B249224A924A056182801C5CEDD7C0 -:100EC0009307F01F63E1A70C372A002093074AF627 -:100ED0009C53130A4AF6A9C7084483274A02639C15 -:100EE000A70489476313F906C147E39FF4FA4A242C -:100EF0009147130505FC3345F5029317250003259B -:100F00000A022686CE853E959307A0053CA12310B4 -:100F10002501110597F0FA1FE780E043014571B7FD -:100F20004A249305E00497F0FA1FE780A0112320DC -:100F3000AA025DF195BF4E241C5C03260A0289813A -:100F400082971C442322FA0269BF8D47631BF90074 -:100F5000C147E39BF4F44A24130545FD9377C5FF8D -:100F600079BF91476317F900E39024F54A242115CE -:100F7000F5B793070010E319F9F2A147E3E697F2FA -:100F80004A244115E1BF9D676375F506930705E0A7 -:100F90001947B3C7E7025A24372A0020B387E7026C -:100FA000BE9A93074AF69C53130A4AF6B1CB83279D -:100FB0004A026392570703250A0291461308A005C7 -:100FC0009305F00F93D72600139727002A97302315 -:100FD0006312060783580700303363992805B30668 -:100FE000D64063C4960485078A072686CE853E953B -:100FF00015B721677917E369A7EAB307F54061BF21 -:101000004A249305E00497F0FA1FE780A003232009 -:10101000AA0251FD51BD4E241C5C03260A0289819F -:101020005685829723225A0379B70EA39316060199 -:10103000C18249BF5224B38596009105130606FC70 -:10104000E3F4C5E613863400719A1106B2962301C3 -:1010500007012310270134B379B7372A00209307FB -:101060004AF69C53130A4AF695CF03250A02914685 -:101070001308A0059305F00F93D7260013972700B8 -:101080002A9730236310060583580700303363978F -:101090002801B306D640E3D896F40EA393160601B2 -:1010A000C182D9BF68245E249305E0043305F502AC -:1010B0004205418197F0FA1FE780C0F82320AA0279 -:1010C0004DF5DDB352246C24B385C50233869600FA -:1010D0001106E3EBC5DCBDB7014582809C211CA154 -:1010E000BE211CB1BE21A1833CA1DC213CB1114534 -:1010F0008280B727002023AE07DCB727002023AC6F -:1011000007DC82800DCD411126C206C622C4AA8406 -:1011100001458DC12E84B7D50600228541469385B1 -:10112000451F97F0FA1FE78000239C2005455CA42B -:101130009C305CB4B240224492444101828001451B -:101140008280011122CC26CA06CE0947AA843284A5 -:101150006381E50441468147639BC500638FE600D8 -:101160006397B6000DA841478147638EE600F240C1 -:101170006244D2443E85056182808A852285593742 -:1011800041468A8519A88A85B53F41468A852285C8 -:1011900031A0E39AB6FC2E86A285268597F0FA1F29 -:1011A000E7800024AA87E1B7B727002023ACA7DC9B -:1011B0008280B727002023AEA7DC8280011122CCD9 -:1011C000622106CE26CA4AC84EC62DCC8329850088 -:1011D000AE842A8803C909008147131789016187F2 -:1011E00063550702B147054563F78704511442046C -:1011F00003552800418033878900A2864E868545A5 -:10120000EFB08000B337A00085077D141355690047 -:10121000420405891379F90341809CA088B0238199 -:101220002401C2A0014719C01387190098C40947B7 -:101230006383E7000145F2406244D2444249B24927 -:10124000056182800545C5BFC167F917630AF502CC -:10125000D94763F7B702011122CC2EC606CE2A84E5 -:10126000EF80700CB2456368B50022856244F2409D -:1012700005616F90307BF2406244054505618280D4 -:1012800005458280C167F9176314F5006F80B009C6 -:10129000411106C6EF90906711E15D45B2404101F2 -:1012A00082809147639DF5001C211CA23C211831CE -:1012B000A207D98F3EA23C3101455CA28280114534 -:1012C00082804111814522C426C206C6AA84BD235C -:1012D0002A8409E9B727002083A787DD81C7F9455C -:1012E000268582972285B240224492444101828021 -:1012F00039714ED656D25AD006DE22DC26DA4AD8CA -:1013000052D4AA8A2E8BB28951EB36C6A53F91459D -:10131000EF801010AA844D493DC5B246054A23808E -:1013200034010544630A0B00B68513851400029B43 -:101330000505131405014180E20993D9894163D35E -:101340000902C1455685EF90D06A654915E5338697 -:101350008400A2852685EFA0503E2A8911ED310434 -:101360004204418091472C085685FC8426CEE085B6 -:10137000EF9090012A8901C963070A00268597F03A -:10138000FA1FE78060D7F25062544A85D25442591E -:10139000B259225A925A025B21618280BA84014A70 -:1013A000BDBF011122CC26CA4AC84EC606CE2A8924 -:1013B0003284B689353FAA840DE1B727002083A780 -:1013C000C7DD81CF05476317E40003C409000504A6 -:1013D0001374F40FA2854A858297F24062442685F1 -:1013E0004249D244B24905618280AE86B7150500F4 -:1013F000014705469385C50D6DB79E211CA19E2111 -:10140000A1831CB1094582809E211CA19E21A1833C -:101410001CB1BE213CA1BE21A1833CB111458280FB -:101420009E211CA19E21A1831CB1BE213CA1BE21F5 -:10143000A1833CB1DC315CA1FC215CB18A2519059A -:101440004205418182809E211CA19E21A1831CB165 -:10145000094582809E211CA19E21A1831CB1BE2131 -:101460003CA1BE21A1833CB111458280CA21060561 -:101470004205418182809E211CA19E21A1831CB135 -:10148000AA2109054205418182809E211CA19E213D -:10149000A1831CB1BE213CA1BE21A1833CB1CA21C4 -:1014A00011054205418182809C211CA10545828055 -:1014B0009E21411122C406C61CA19E212E84110525 -:1014C000A183A30EF5FEBE219505230FF5FE83D75C -:1014D000D5FFA183A30FF5FE03C6F5FF97F0FA1F12 -:1014E000E78060E74820B240224411054101828034 -:1014F00089476399F5001C3118210145A207D98F4E -:101500001EA28280114582809A21D94763FDE7029D -:10151000011122CC06CE2EC62A84EF80C060B246CE -:101520009E22636DF50022856244F240B7150500E6 -:10153000014709469385A53F05615DBBF2406244C2 -:1015400009450561828009458280914785C514213E -:10155000FD15C2058547C1816390F60213D72500AA -:101560008D89914781E9914711C7050534A21AA2D7 -:1015700048C281473E85828009479147E39CE6FE49 -:10158000C94733D7F502B3F5F502E1BFAE86B7150B -:101590000500014711469385854099BB93F73500B7 -:1015A00089EB8981914781C50EA248C281473E855A -:1015B00082809147EDBFD8218947631CF702011152 -:1015C00022CC2A84C84506CEAE86014709C92EC65C -:1015D0009D4597F0FA1FE780E0BDB2462A87228535 -:1015E0006244F240B715050019469385054205612E -:1015F00001B30945828099E1114582801C2105478C -:101600003EA2E37BF7FEFD1593F5F50F33D7F50208 -:10161000B387E702E392F5FE050548C21AA2014529 -:101620008280DC210947AE866385E70041476399E4 -:10163000E700B7150500014721469385054B4DB9D5 -:10164000094582800EA291E1014548C20145828090 -:10165000AE86B7150500014729469385654449B90B -:101660000EA291E1014548C201458280AE86B715C0 -:10167000050001473146938545459DB90EA291E18C -:10168000014548C201458280DA21854763FFE702B0 -:10169000011122CC2A84884106CE1DC12EC6854563 -:1016A00097F0FA1FE78000B12A8722856244B2468C -:1016B000F240B715050039469385C54605610DB959 -:1016C000F240624409450561828009458280914764 -:1016D00085C518218D46914763F0E602FD15C205C8 -:1016E000C181B3C6E5023308D7026397050105053A -:1016F00016A23AA248C281473E858280DC21094772 -:10170000AE866385E70041476399E700B71505009A -:10171000014741469385054BE1BE09458280B335BB -:10172000B000139525008280011122CC26CA06CE76 -:1017300098258547AA842E844946631FF700993669 -:101740003E2049151306200963C8A700F2406244F1 -:10175000D244094505618280183485476314F70037 -:1017600013660604484001C98D4532C697F0FA1F3A -:10177000E78040A43246A2866244F2402A8726854A -:10178000D244B715050093856547056195B68D4729 -:1017900063F8B7021C311821F115A207D98F1EA2D8 -:1017A0003C313821C205A207C181D98F3EA24EA289 -:1017B00089C5110508C60145828023240600E5BFBE -:1017C00011458280011122CC2A84884506CEAE863E -:1017D00001C92EC6954597F0FA1FE780A09DB24635 -:1017E0002A8722856244F240B71505005946938541 -:1017F000A5480561F5BCB335B0001395250082807E -:10180000AE86B7150500014761469385854ACDB47C -:101810008547114563F0D7021C320C22A207CD8FF9 -:101820001EA39387E6FF3EA389476386F600090659 -:1018300050C30145828023220700E5BF014781464E -:101840007946814575B49E211CA19E21A1831CB1BE -:1018500009458280BC2105471CA18A216397E700C6 -:101860000A050505420541818280C9473305F50215 -:10187000CDBF8A210A05420541818280BE211CA17B -:101880008A21BE213305F50205054205418182808A -:101890008A2182808A2182808A218280BE211CA1A5 -:1018A0008A21BE213305F50205054205418182806A -:1018B0009E211CA19E21A1831CB1BE213CA1BE2161 -:1018C000A1833CB1CA2111054205418182809E213C -:1018D0001CA19E21A1831CB1AA21090542054181B9 -:1018E0008280894711456398F6001C321422014515 -:1018F000A207D58F1EA382809A21D947AE8663F9AD -:10190000E700B725050001470D469385658451BC66 -:10191000094582801145639DA6001C3214220145B1 -:10192000A207D58F1EA33C323422A207D58F3EA337 -:101930008280BC210547FD1793F7F70F6361F70419 -:101940009E2195CF011122CC2A84C84106CE1DC10B -:101950002EC6894597F0FA1FE780C0852A87228521 -:101960006244B246F240B725050015469385458589 -:10197000056105BCF2406244094505618280094564 -:1019800082809547114563F1D706411122C426C2D2 -:101990004AC006C61C32BA841822A2073284D98FE4 -:1019A0009EA03C32382293054400A207D98FBEA0E6 -:1019B0008947DCA0094613855400368997F0FA1F41 -:1019C000E78060999307A9FF9EA49947631BF900DC -:1019D00023A60400B2402244924402490145410139 -:1019E00082801904C0C4FDB782809E2195CF011169 -:1019F00022CC2A84C84106CE1DC12EC6854597E05B -:101A0000FA1FE780207B2A8722856244B246F24093 -:101A1000B72505001D4693852587056159B2F2401B -:101A20006244094505618280094582809947639D2A -:101A3000F6028947411106C65CA31C321422B28506 -:101A4000A207D58F1EA33C3234225023A207D58F84 -:101A5000130557003EA3910597F0FA1FE780A08F6A -:101A6000B240014541018280D14711456394F6009F -:101A7000C147C9B782809E219DCF011122CC2A8403 -:101A8000C84106CE05C52EC6894597E0FA1FE780F6 -:101A900060722A8722856244B246F240B72505006B -:101AA00025469385C58705616FF0BF8FF24062447C -:101AB00009450561828009458280894711456398FF -:101AC000F6001C3214220145A207D58F1EA3828086 -:101AD000011122CC2A84C84106CEAE86014709C92D -:101AE0002EC6854597E0FA1FE780C06CB2462A876C -:101AF00022856244F240B72505002D46938505896D -:101B000005616FF01F8A1145639DA6001C321422E7 -:101B10000145A207D58F1EA33C323422A207D58FE0 -:101B20003EA38280011122CC2A84C84106CEAE8613 -:101B300001C92EC6854597E0FA1FE780A067B24627 -:101B40002A8722856244F240B725050035469385F1 -:101B5000458905616FF0FF8493F71600114581EB0D -:101B600089476386F600858256A310C301458280AB -:101B7000011122CC2A84C84106CE05C52EC6854552 -:101B800097E0FA1FE78000632A8722856244B24605 -:101B9000F240B72505003D469385858905616FF0C4 -:101BA0005F80F24062440945056182809E219DCF9D -:101BB000011122CC2A84C84106CE05C52EC689450E -:101BC00097E0FA1FE780005F2A8722856244B246C9 -:101BD000F240B725050045469385C58905616FF03C -:101BE0004FFCF240624409450561828009458280CC -:101BF000854763F6D70208A70CB71C320C22A20750 -:101C0000CD8F1EA39387E6FF3EA389476386F60028 -:101C1000090650C30145828023220700E5BF114514 -:101C20008280014781464D4681456FF08FF78D4791 -:101C3000114563F4D7021C320C22A207CD8F1EA3DC -:101C40003C322C22A207CD8F3EA39387C6FF5EA312 -:101C50006386A600110610C7014582802324070071 -:101C6000E5BF011122CC2A84884506CEAE8601C983 -:101C70002EC6954597E0FA1FE780C053B2462A87E3 -:101C800022856244F240B72505005D469385058BA9 -:101C900005616FF00FF1854711456395F6001C2231 -:101CA00001451CA3828001478146654681456FF04E -:101CB0004FEF011122CC2A84C84106CEAE860147DF -:101CC00009C92EC68D4597E0FA1FE780A04EB2469F -:101CD0002A8722856244F240B72505006D46938528 -:101CE000E58C05616FF0CFE0011122CC2A84C84158 -:101CF00006CEAE86014709C92EC68D4597E0FA1F6C -:101D0000E780404BB2462A8722856244F240B725DD -:101D1000050075469385E58C05616FF06FDD011157 -:101D200006CE2EC6EF90A03A19C5B245F2402A2140 -:101D300005616FD0A000F240494505618280B72758 -:101D40000020A38407E0B7270020238407E0B727FB -:101D5000002023A807DEB727002023AA07DEB72725 -:101D6000002023AC07DEB727002023AE07DEB7270D -:101D7000002023A607DEB727002023A407DEB7270D -:101D80000020239207021306403893874702B2B31C -:101D900071761307400B130606B8BAA3D2B31167C6 -:101DA0001D46930600059305000A1305007DDAA37E -:101DB000F2B341470546130810F8BAA7DAA7BAAB41 -:101DC000DAABFAAB9AAF9AB723960703EEA38EA7C6 -:101DD000F6A796ABAAAF239E0700239F0700239088 -:101DE0000702B2B7239707021308F00723980702E8 -:101DF0002392E7042393E704239FE7042390E70655 -:101E00002391E7062392E706239907031307C01CD3 -:101E1000D2BBF2BB239C0702239D0702239E07022D -:101E2000239F0702239007042391C70423940704E8 -:101E3000239507042396C7042397D7042398D70430 -:101E40002399A704239A0704239B0704239C0704D0 -:101E5000239DD704239ED7042393A7062394070624 -:101E600023950706239607062397B7062398B706F8 -:101E700023990706239AE7067D57239B070623909D -:101E8000E7088280011126CAAA84214522CC06CE09 -:101E90002E8432C636C43AC2EFE04F950DC5A24635 -:101EA00012473246930700FD1CA1994704B13CA19B -:101EB00074A178B152A1AA8522856244F240D2442D -:101EC00005616FE0CF96F2406244D24405618280A2 -:101ED000B727002023A8A7DE8280B727002023AAE7 -:101EE000A7DE8280B727002023ACA7DE8280B72739 -:101EF000002023AEA7DE8280011122CC4AC806CE84 -:101F000026CA2A890144B30489006368B400F240F8 -:101F10006244D2444249056182802EC6EFE06FA838 -:101F200093170501C183A183B2459CA093071400B8 -:101F300093F7F70F850463F8B700CA97090488A3DD -:101F40001374F40FC9B73E84C9B7411122C43724B2 -:101F50000020130444006A20C16706C6FD17630E03 -:101F6000F500B727002003C6C714B72500209385C6 -:101F700005E0EF80F077FD577EA0B240224441019A -:101F8000828009C925151375F50F1335850E134584 -:101F9000150082800145828023900500C1C67971B9 -:101FA00022D426D24ECE52CC5AC806D64AD056CAD1 -:101FB0005EC63684328AAE892A8B814463F2440736 -:101FC000B30794009C23138914004209939A0701D4 -:101FD00093DA0A011359090163840A04CA97634119 -:101FE000FA04B307240183CB07005E85593F0DC96E -:101FF0009387FAFF2390F90063906B031305190090 -:102000002295B250225492540259F249624AD24A5D -:10201000424BB24B45618280D694C204C18079BFE5 -:102020000145C5B701458280011122CC372400202B -:1020300026CA4AC84EC69307440006CE2E89D0CB86 -:102040008CCBC8C7AA8441469305F00F4A8597E018 -:10205000FA1FE780203D85491304440063193503C6 -:102060000848C145513D41469305F00F268597E04C -:10207000FA1FE780203B0549631525034844624465 -:10208000F240D2444249B249C1450561B5B5414625 -:1020900081454A8597E0FA1FE780C038E31535FD92 -:1020A000C1B741468145268597E0FA1FE780803712 -:1020B000E30625FDF2406244D2444249B24905613B -:1020C0008280411122C43724002026C24AC0AE8437 -:1020D0002A891306000281451305440006C697E0CD -:1020E000FA1FE780802A93074400A3812701B727BE -:1020F000002023889714EFC0B046854719C1814757 -:1021000049452302F400B24022449244024941016D -:102110008280814791C909C985476319F500DC317F -:1021200093E707FCDCB185473E85828089476316CB -:10213000F500DC3193F7F703F5B70D478547E31555 -:10214000E5FED8311377F70313670704D8B1E9BF69 -:10215000814785C119CDD8319306000C8547137787 -:10216000070C6308D700930600048D476303D7006C -:1021700089473E858280411122C4005D06C626C281 -:102180001DC8AA84085009C597E0FA1FE780C0F669 -:10219000485009C597E0FA1FE78000F6085409C5C2 -:1021A00097E0FA1FE78040F5228597E0FA1FE78065 -:1021B000A0F423AC0402B240224492444101828044 -:1021C00019E9B727002083C7670091C7372500208A -:1021D000130505DE8280372500201305C5018280A6 -:1021E000B727002003C567008280B727002003A51A -:1021F00007018280B727002003A547018280B72707 -:10220000002083A7870188438280B7270020938717 -:102210004700D44B9842050798C2A8339307F00FA4 -:102220006305F50091656FD05FFF8280011122CCBC -:1022300006CE2E8432C6EF80307A9147B2456310C5 -:10224000F502B727002083A7C7DF95C303A30700C4 -:10225000630F030022856244F24005610283B727C1 -:10226000002083A747DF81C703A34700D5B7F2400B -:102270006244054505618280011122CC2A844A21ED -:1022800006CE26CA4AC84EC697E0FA1FE78080519C -:102290002DC52A8904218349C500F13D4A85EF9067 -:1022A000E0314A20EF80906E37290020130989E041 -:1022B00083470900B9C763969704B727002083C5F1 -:1022C00097E02685A93C19E1230009004A20EF8008 -:1022D000B0709147631CF500B72700209387470033 -:1022E0005620FA236394E6007D57FAA3F240624435 -:1022F000D2444249B2490561828081499304F00F7A -:1023000065B79307F00FE383F4FC74205220282074 -:102310004E87A685853E5DBF79715EC6AA8B2E85E8 -:1023200052CC56CA5AC806D622D426D24AD04ECE4D -:10233000AE8A328B368A97E0FA1FE780A0466DC1DD -:10234000045D2A89F1CC9C50614599C31305400373 -:102350009C5481C751054205418163050A007105FE -:1023600042054181DC5081C7590542054181EFD0CA -:10237000FFC72A8455C56146814597E0FA1FE7806B -:10238000C000B727002083C947056394090083492B -:102390000900930700FD1CA0A947A30074013CA0FD -:1023A000230364018C50231254011305840191C945 -:1023B00008C47146930A440397E0FA1FE780A0F926 -:1023C00056858C5491C948C45146930A450197E0FB -:1023D000FA1FE78040F85685630C0A0008C871466A -:1023E000D285930AC50197E0FA1FE780C0F65685AB -:1023F000CC5099C548C8594697E0FA1FE780A0F528 -:10240000A2854E85EFD0BFC22254B2509254F249F9 -:10241000624AD24A424BB24B4A8502594561A1BB3E -:10242000B250225492540259F249624AD24A424B63 -:10243000B24B4561828001114EC6AA892E854AC8D9 -:1024400006CE22CC26CA2E8997E0FA1FE780803577 -:1024500029C5B727002083C4470591E00421194509 -:10246000EFD0DFB82A8415C98145194697E0FA1FD5 -:10247000E780A0F1930700FD1CA0B947A300340139 -:102480003CA023122401A2856244F2404249B24991 -:102490002685D24405616FD09FB9F2406244D24490 -:1024A0004249B2490561828039715ECEAA8B2E8580 -:1024B00026DA4ED652D456D25AD006DE22DC4AD87C -:1024C000AE84328BB68A3A8ABE8942C697E0FA1F3A -:1024D000E780402D29C92A894145EFD03FB12A84A0 -:1024E00039C14146814597E0FA1FE78000EAB727E6 -:1024F000002003C5470519E103450900930700FDC6 -:102500001CA0BD473CA0B247A300740146A0230411 -:102510006401A304540123054401A30534015CC4F0 -:10252000A285EFD0DFB0F2506254D2544259B25972 -:10253000225A925A025BF24B21618280797126D233 -:10254000AA8439454AD04ECE06D622D42EC6B289A8 -:102550003689EFD0BFA90DCDB2459307000D1EA15E -:10256000B1472A844EA13CA1CE851905194697E0B2 -:10257000FA1FE78040DE23062401A2852254B250D0 -:102580000259F24913F5F40F925445616FD03FAAF6 -:10259000B250225492540259F2494561828041114D -:1025A00026C2B724002093844400B83006C622C453 -:1025B0004AC09307F00F6306F7042A893945EFD024 -:1025C000FFA22A841DCD930700FDB72500201CA182 -:1025D000A3002501230105009385C5010D051946BA -:1025E00097E0FA1FE78020D79E24A285A8303EA45A -:1025F0009C305CA42244B2409244024941016FD015 -:102600001FA3B24022449244024941018280011139 -:102610005AC02A8B314526CA4EC652C456C206CE6F -:1026200022CC4AC8AE84B28A368ABA89EFD01F9CBF -:102630002DCD2A84268597E0FA1FE780A01609C5CC -:102640005825A1476311F704B727002003C9770075 -:10265000930700FD1CA09D47A30064013CA046A079 -:10266000231354012314440123153401A285624429 -:10267000F240D244B249224A924A024B4A85424928 -:1026800005616FD0DF9AB727002003C91715E31142 -:102690000BFCB727002083A707EC9C47D5DBCE8631 -:1026A0005286D6852685829765B7F2406244D24429 -:1026B0004249B249224A924A024B05618280011185 -:1026C00022CC2A84214506CE2EC6EFD03F9215C5D6 -:1026D000B245930700FD1CA1C5473CA1BC313CB1EC -:1026E000DE215EA1FC217CA1FC31AA857CB1228582 -:1026F0006244F24005616FD09F93F24062440561ED -:102700008280397162CC2A8C594526DA4AD84ED655 -:1027100052D456D25AD05ECE06DE22DCAE8432C609 -:1027200036C4BA8B3E8BC28A468A83590104034958 -:102730004104EFD0BF8B2DC53246930700FDA24662 -:102740001CA1954730B1A30085013CA12A841946FC -:102750001105A9C2B68597E0FA1FE780C0BF23061E -:102760006401230A2401231574012317540123183B -:10277000440123193401A2856254F2504259B259DE -:10278000225A925A025BF24B624C2685D254216146 -:102790006FD0FF89814597E0FA1FE78000BFC1B77E -:1027A000F2506254D2544259B259225A925A025BA0 -:1027B000F24B624C21618280411122C437240020F7 -:1027C000130444003C2006C626C285CBB724002053 -:1027D000AA851946138504DE97E0FA1FE780A0B7A3 -:1027E0002820938504DEEFF0DF922244B240138567 -:1027F00004DE924441016FC06057B24022449244CB -:10280000014541018280411126C2B72400209387EF -:10281000440006C622C44AC0B8339307F00F93841D -:102820004400630FF7022A892945EFD02FFC2A8440 -:1028300005C9930700FD1CA1A147A30025013CA1E8 -:10284000BC20B7250020938505DE3CB11946110553 -:1028500097E0FA1FE78020B0A830A285EFD02FFDC7 -:10286000B8208D476311F702B727002083A787DFC1 -:1028700099CB03A38700630803002244B24092442B -:10288000024941010283B24022449244024941017B -:102890008280797122D406D626D24AD04ECE52CC2E -:1028A00056CA09444DCD2A890A21AE89514497E080 -:1028B000FA1FE78020EFAA845DC137270020930725 -:1028C000C714DC238546BA8AFD1793F7F70F4944EE -:1028D00063F7F6085825A1476314F70063910908C8 -:1028E0009C5C4544ADEF9165938545711305C0022D -:1028F00097D0FA1FE780007588DC2A8A4D4425C1ED -:102900001306C002814597E0FA1FE78000A88357AD -:10291000090093064A0036852311FA007146930593 -:10292000490036C697E0FA1FE780E0A289472300F6 -:10293000FA00C824B2460356090083C5CA146115BB -:1029400013351500EF90E07F2A8463860900CE8559 -:102950002685EF80907401C42685EFF0DF81228503 -:10296000B250225492540259F249624AD24A456105 -:102970008280B727002083C707150547FD1793F707 -:10298000F70F6377F708894749C6011122CC26CA99 -:102990004AC84EC652C406CEAA89368AB2842E8947 -:1029A00097E0FA1FE78000E02A84D14731C54855F7 -:1029B00009C597D0FA1FE7802074F145268597E076 -:1029C000FA1FE780E09E48D4CD471DC55424214717 -:1029D0008147639DE600630B0A00382D1229930698 -:1029E0002501AA854E85EF80B071AA875820630E15 -:1029F00009001367670058A0F2406244D24442497C -:102A0000B249224A3E850561828013674700E5B7D7 -:102A1000C9473E8582809307F00363EAA700B72782 -:102A200000209387470206053E950A218280416572 -:102A30007D158280011122CC2A842E8526CA06CEDD -:102A4000AE8497E0FA1FE780E0D50DCDB7470F00C1 -:102A50009387F723094563E2870281450A8541464A -:102A600097E0FA1FE7806092A68560800A85418022 -:102A70004081A3010100EF90A05AF2406244D24489 -:102A8000056182804945D5BFB72700202387A71459 -:102A900082806F906065797152CC2A8A328522D407 -:102AA00026D24AD04ECE56CA5AC85EC606D662C490 -:102AB000AE8BB28A368BBA843E89C289468497E04F -:102AC000FA1FE78020CE0DC92A8C63130A02137700 -:102AD0004B005C2115CF93E727012302FC008DEC0E -:102AE000631C0902639A090205E8ED9B2302FC00BE -:102AF000832B8C0363910B08B250225492540259D9 -:102B0000F249624AD24A424BB24B224C4561828022 -:102B1000F59B93E70701D1B793E747002302FC0039 -:102B200001CC1C484146A2852324FC0213058C01DC -:102B300097E0FA1FE780208263930B02D5D8032524 -:102B4000CC0209C597D0FA1FE780005BF1452685C6 -:102B500097E0FA1FE780C0852326AC0251BFE30946 -:102B600009F80325CC0209C597D0FA1FE780C058A1 -:102B7000F1454A85F1BF9DC483A70B0299EB91658E -:102B800093853571714597D0FA1FE780A04B23A03C -:102B9000AB0203A50B0219C57146A68597D0FA1F93 -:102BA000E780607B6388090283A74B0299EB9165FC -:102BB00093852571594597D0FA1FE780A04823A235 -:102BC000AB0203A54B0219C55946CE8597D0FA1F13 -:102BD000E78060781DC483A78B0299EB916593858C -:102BE0001571514597D0FA1FE780C04523A4AB0269 -:102BF00003A58B0219C55146A28597D0FA1FE7801D -:102C000080752254B2509254F249B24B224CCA867B -:102C10005A860259424BD6855285D24A624A45614C -:102C20006FF08FEF011126CA52C406CE22CC4AC8DB -:102C30004EC62A8AAE8497E0FA1FE780A0B625C167 -:102C4000AA893945EFD08FBA2A8431C9B727002025 -:102C500003C947056314090003C909009307000D60 -:102C60001EA0AD473CA093856900130534001946AA -:102C700097D0FA1FE780206E93F71400858085882F -:102C80005CA444B423154401A2856244F240D244BA -:102C9000B249224A4A85424905616FD04FB9F24094 -:102CA0006244D2444249B249224A056182800111FC -:102CB0004EC652C456C206CE22CC26CA4AC8AA8ADA -:102CC0002E8AB28997E0FA1FE780C0AD3DC92A89F4 -:102CD0001305C002EFD08FB12A8425C5B727002085 -:102CE00083C4470599E0834409009307000D1EA0A3 -:102CF000E9473CA09305690013053400194697D0B5 -:102D0000FA1FE7804065D285231554011305C400DE -:102D1000414697D0FA1FE7800064CE851305C401B1 -:102D2000414697D0FA1FE7800063A2856244F240D3 -:102D30004249B249224A924A2685D24405616FD05F -:102D40000FAFF2406244D2444249B249224A924A09 -:102D500005618280411122C437240020130484DEDF -:102D6000084006C619C597D0FA1FE780E03823202F -:102D70000400B240224441018280011106CE22CCDF -:102D800026CA4AC82EC697E0FA1FE780A0A121CD27 -:102D9000B245B727002003C947050CD5AA846314A0 -:102DA0000900034905004145EFD04FA42A8405CD11 -:102DB0009307000D1EA1A5473CA1DC30938564005C -:102DC0001105A30FF5FE194697D0FA1FE780A0580A -:102DD0009C54A285F2405CC46244D2444A85424974 -:102DE00005616FD0CFA4F2406244D24442490561EC -:102DF00082801D71A2CC86CE2A842EC697E0FA1F4F -:102E0000E780409A15C954251147AA87494563911F -:102E1000E6029C5FB24591C3EC2BB7D605002308B0 -:102E2000B1009386A6FE100889452285EF80101E0A -:102E3000F6406644256182805145DDBFB7270020FA -:102E400083C707150547FD1793F7F70F637AF70454 -:102E5000894721CA411122C426C24AC006C6B2848B -:102E60002E8997E0FA1FE780E0932A84D14715C1A5 -:102E7000630609005C2193E727005CA14146A68513 -:102E80001305840197D0FA1FE780E04C9C481CD4BE -:102E90008147B2402244924402493E8541018280EA -:102EA000C9473E858280797122D406D62A842EC6EF -:102EB00097E0FA1FE780008F01CDB2452285230EEF -:102EC000B1006C08EF80101AB25022544561828024 -:102ED0005145DDBF6F802025C1671387E7FF6395EC -:102EE000E502B727002083A747DF91EB49458280A1 -:102EF0004945B2402244924402494101828003A3E1 -:102F00000700E30503FE0283411122C426C24AC022 -:102F100006C6FD172A892E84B284639AF502B72764 -:102F2000002083A747DF91CF9C4381CF829711E98F -:102F3000B7270020238427E1B7270020A38497E048 -:102F40004DBFA6854A85EFE09FDD45F5D5B72E85B7 -:102F500097E0FA1FE780008541DD1C210D45E39ACB -:102F600027F922852244B2400249A68592444101B4 -:102F70006FB0D05C9307F00363E1A7064111C1670E -:102F800022C406C626C2FD172A8409456381F502BC -:102F9000C547AE846312F4022E85EFB0B0613725C9 -:102FA00000201305450206042A9406A00145B240FC -:102FB00022449244410182809307A0036316F400E7 -:102FC0002E85EFB07058E1BF9307B003E319F4FC0E -:102FD00013F5F50FEFB09057D9B70945828001116D -:102FE00006CE2AC6EFE0BFD5EF208048EF10B00034 -:102FF000EF906174B727002093874700130700F014 -:10300000BAA323820700B727002032451387C714CD -:10301000FD5634A3F2402386A714954505616F60E1 -:10302000D039597193970501CAD086D6A2D4A6D2B9 -:10303000CECED2CCD6CADAC8DEC6E2C4E6C2EAC078 -:103040006EDEC1872E8963DB074EB724002003C5DF -:10305000C414B7290020372B002097D0FA1FE7802F -:10306000801A2A8426CEB72A0020372C0020938489 -:103070004900B72C00201DE021653345A900B6505A -:10308000265496540659F649664AD64A464BB64BDC -:10309000264C964C064DF25D656182801C2013071C -:1030A000200A639BE70003CA34002A20C1652286F8 -:1030B000FD15EFF0AF97A1AA72471307C714034A93 -:1030C000270013071009639FE7141C30154763910D -:1030D000E7022285EFF04F9A2285EFC07FEEF2479C -:1030E00003C5C71497D0FA1FE780E0112A8461B79F -:1030F00039476391E7164A208567A5076315F504EC -:103100000C4483CB0500639D0B00850591C93725D1 -:10311000002019461305C50197D0FA1FE780A023A8 -:1031200003C749008547631FF70E63880B0023829E -:1031300009005E85EFF0AFC645B789472382F900E5 -:10314000EFB0904251BF8967138727006318E504E9 -:10315000832B840063880B0C83C70B0099EB83C718 -:103160002B0003C71B00A207D98F9EA483C73B0077 -:103170009CB003C7490089476316F70A83C70B0051 -:1031800091C72382090003C50B006DB78C308A24D8 -:103190008D472382F900EF601025F5B79507631777 -:1031A000F5001C448823EFF00FE63DB7F97713874D -:1031B000A7FF2A9742074183914663F1E60493876C -:1031C000A7FCAA97C207C18371476371F702896799 -:1031D0001387B7006310E50483A70ADFE38E07EEC9 -:1031E0009C43A285E38A07EE829715A03707001853 -:1031F0001307F770B357F700858BB9C783278BDFA9 -:10320000E38C07EC9C43E38907EC22858297E31566 -:1032100005EC09A81387C700631FE5001C449C2325 -:10322000E38C07EA9307F00FE308FAEAA2855285D8 -:10323000EFC0FFDF6DB5B9076318F50083A74CDF5A -:10324000E38C07E8DC4371BF896793871704E305C4 -:10325000F5F8C9BF3D476397E7044A20896713879C -:10326000D700E30DE5FC13879701E309E5FCCD07E3 -:10327000E31AF5FAFA20C167FD17631DF70083A76B -:103280004CDFE38B07E4DC43E38807E40965A285B0 -:103290004D0599BFB727002083A7C7DFE38E07E25C -:1032A0009C43DDB71307E003E39EE7F63C200547A8 -:1032B000639AE70C7C2037270020930D87DEDDE73B -:1032C00083A70D00CDC383CB0700214A6830130DBF -:1032D0008400EA85EFE0DFE75C2868B083580401EA -:1032E0000358E4005A202A8628303EC23E28EA8647 -:1032F000DE853EC0D287EFF0CFC03C3095E3DD479E -:10330000835804010358E40074304E203EC23E2826 -:103310003EC06A87D28705465E85EF80C00228B02E -:1033200083A70D0081C71145EFF0DFA2930B8CE05E -:1033300003C50B00E30205DAB727002083C597E039 -:10334000EFE0FF9DE30A05D834309307100363894B -:10335000F600522083C50B0052873685EFE09FB2FE -:1033600023040CE095BB83CB340085B783278BDF28 -:1033700083CB3400114AB9DBDC43A9DB814501452D -:103380008297A9B729476396E7087C203727002052 -:10339000930D87DEBDE383A70D00A9CF83CB070084 -:1033A000214A6830130D84009377250013761500A9 -:1033B00089E7EA85EFE0DFD92A868347040270B007 -:1033C0008358C4010358A4015A2028303EC27E2CE1 -:1033D000EA86DE853EC0D287EFF0AFB23C30A9F37B -:1033E000DD478358C4010358A40174304E203EC207 -:1033F0007E2C39BF83CB340065B783278BDF83CB2B -:103400003400114AD9DFDC43C9DF81450145829789 -:1034100049BF0947639CE70083A70ADFE38E07CA19 -:10342000DC43E38B07CA228582977DB12D476398E1 -:10343000E70083A70ADFE38107CA9C47DDB70D4792 -:103440006396E70022868D454A20A5B11947639C03 -:10345000E7049305610213051031EF9021362C101B -:1034600013052031EF9081357220835781024A2065 -:1034700063E7C70016240357610263F7E60093056C -:103480000002EFB0301289B96373E6007AA063F3EB -:10349000D7001EA45A24362412246E2001488147E6 -:1034A000EFB0101015B91D47E38EE7D6314763958D -:1034B000E7002286B14549BF35476398E70083A7F7 -:1034C0000ADFE38B07C0DC47A9BF39476396E700F3 -:1034D0002285EF00207909B13D476398E70083A773 -:1034E0000ADFE38B07BE9C4B2DBF41476396E70085 -:1034F0002285EF005000CDB645476396E7000145B1 -:10350000EF00F00ED1BE4947639DE70083278BDFB4 -:10351000E38A07D0DC43E38707D0814505458297DE -:1035200011B34D47E390E7D083278BDFE38C07CEC1 -:10353000DC43E38907CEA2850945D5B793F715008B -:1035400089CFB727002083A707DF89C7DC4399C34A -:1035500001458297134519001DB693F7250091CFB9 -:10356000B727002083A787DF91C7DC4381C7814548 -:10357000054582971345290019B693F74500014583 -:10358000E38F07AEB727002083A7C7DE37240020CC -:103590001304440089CF85475CA0B727002083A788 -:1035A00087DF91C7DC4381C7814505458297484441 -:1035B0002C10EF8090132810EFF00FA0B7270020F9 -:1035C00083D7670481CF130600643386C702B72709 -:1035D000002003C5C7149145EFC09FD31345490090 -:1035E00079BC011122CC2A84554506CE26CAEFF0BB -:1035F0008FC2AA8413054002EFF0EFC12AC613055B -:103600005002EFF04FC1AA86228562443246F24052 -:10361000B3359000D24405616FB0E07E797122D459 -:1036200006D68D472E84631AF500BA259625F22119 -:103630002830CE21EFE0BFFD01A889671387D700AE -:10364000631EE502A82119E58547B25022543E8544 -:1036500045618280B727002083A687DEF5D6B03289 -:103660008C22814802C202C001488147014791066D -:10367000EFF02F890545EFF0EFEDF9B71387E7007D -:10368000E304E5FC138737016319E500A8214DDD4C -:10369000014781460146814571BFE507E306F5FA1A -:1036A000B1476319F500B727002003C57700EFF095 -:1036B0000F8159BF41677D178147E318E5F8D8317D -:1036C000C947E313F7F8F625D2250A24AE25EFB053 -:1036D00040752DC15D45EFF00FB43335A000E8848F -:1036E0004C202A203008EF701002BC84B1FF6C0817 -:1036F00013051031EF90810C9305E1011305203182 -:10370000EF90C10BBC861A246373F7001EA4BC871C -:103710003A2463F3E7003EA40E243E2463F3B7008B -:103720002EA47A24562432242A2001488147EFB05F -:10373000206519BF8547FC8465B7B727002013872C -:10374000C71474331307F00F638DE6063DC94111AA -:1037500022C426C24AC006C6AA8428251389C714D3 -:103760004105EFC0BF882A8439C59307000D1EA10B -:10377000D9473CA1DE205EA1FC207CA1FC307CB1BD -:103780009C241CA59C341CB5B02430A515C2CC4487 -:10379000410548C497D0FA1FE780E0BBA2852244C8 -:1037A00003457900B2409244024941016FC03F880D -:1037B00023260500E5B7B240224492440249410164 -:1037C00082808280C1671387E7FF639DE500B7278A -:1037D000002083A787DE95C39C230D47639DA70028 -:1037E0006FB04059FD1749476397F500B727002090 -:1037F00083A787DEF5F73A8582804947EDBF3971A7 -:1038000022DC06DE26DA4AD84ED652D456D25AD018 -:103810005ECE62CC182185472A846309F7041025FF -:10382000930695009305E1000545EFE0EFF681472B -:1038300011C11C21142011476382E60437270020A0 -:103840000327C7E08D461833630AD70285CB1DC70F -:103850000DE10145F2506254D2544259B259225AF4 -:10386000925A025BF24B624C216182808147014592 -:10387000D1B78546631ED7088D8BE1DF0830130A68 -:103880002400D285EFE0DF8C3729002008B08327A1 -:1038900009E12A8B130909E18149C1C3B72A002034 -:1038A0009304F00F83C7AAE0138CAAE063FAF9022D -:1038B00003250900939B49005E951C2163819706AF -:1038C0001C31639E67051946D285090597D0FA1FFA -:1038D000E78000B129C5832409001820DE94B1E4F3 -:1038E00014209147E387F6F683270900BDD30346EA -:1038F0000C0001479305F00FE30DE6F4BE84C10709 -:1039000003C507FF6301B50C05071377F70FEDB784 -:103910008946E310D7F4858B8DB7054525BF85090A -:1039200093F9F90F41B788C4C9A891476312F70604 -:10393000C8440DC11C241021630EF60418209147C1 -:103940006318F706C84419C597C0FA1FE780C07A04 -:1039500023A60400082491659385E571050597C0A9 -:10396000FA1FE780206E0DC118209147631BF704F2 -:10397000C8C41C24930594000505A30FF5FE10246C -:1039800097D0FA1FE780209D08243335A000D9B5D1 -:10399000884445B793059400050597D0FA1FE78042 -:1039A00020A48547E31CF5F85545EFF0CF86ADA080 -:1039B00088444DD197C0FA1FE780007423A4040007 -:1039C00051BF88C47DB794A01C30D28513852400D4 -:1039D0009CB0194697D0FA1FE780E09708249165BC -:1039E0009385F571050597C0FA1FE780A0650DC1A5 -:1039F00018209147E319F7F2C8C41C2493059400DA -:103A00000505A30FF5FE102497D0FA1FE780A094B8 -:103A10001C2481F708207D151335150025BD39714B -:103A200022DC26DA4ED652D406DE4AD856D25AD0F6 -:103A30005ECE2A84930925000831CE85B724002064 -:103A4000EFE00FF108B09384C4E09C400D472A8A50 -:103A50009C336390E70437290020832709E1814ADA -:103A6000130909E163810714B72B002003C7ABE0FA -:103A700093970A01C18303250900138BABE063E030 -:103A8000E70C83460B000327090081471306F00F5C -:103A9000BDAAF1D3144C70389305E1000545EFE061 -:103AA000AFCF15C9984085461C2118336310D70243 -:103AB0008D8BD5F30145F2506254D2544259B2591C -:103AC000225A925A025BF24B216182808946858B91 -:103AD000E313D7F8F9BF1C2011476385E7002D4792 -:103AE000E39AE7FCB724002083A704E1938404E170 -:103AF000F1D3814A0149B72B002005A88840139BC8 -:103B00004A001C205A9518216310F7021C31639D4E -:103B100047011946CE85090597D0FA1FE780408CEA -:103B200001C503A904005A99850A03C7ABE093971E -:103B30000A01C183E3E4E7FCE31F09F0A5BF939406 -:103B40004A00269518211C206318F70A1C3163953A -:103B5000470B1946CE85090597D0FA1FE7804088A4 -:103B600041CD832709001147BE941C206385E700DF -:103B70002D47639CE70203AAC4007C3803460A0071 -:103B80006308F602528597C0FA1FE780E05668384E -:103B900091659385E571050597C0FA1FE780804A16 -:103BA0001DE5E38004EE054539B703AA8400F1B7AB -:103BB0000C4C13051A0097D0FA1FE78060828547E6 -:103BC000E312F5FC5545EFE01FE561DDE5B51C208E -:103BD00011476385E7002D47639EE700C8C47C3822 -:103BE0000505A30FF5FE70380C4C97C0FA1FE7804F -:103BF000807645BF88C4E5B7850A8DBDBA84410784 -:103C0000834507FF638AC5008507C207C183E3E7D1 -:103C1000D7FE51BF88C425A81C20CE85138524005B -:103C20009CA01C3019469CB097C0FA1FE780A07278 -:103C3000683891659385F571050597C0FA1FE7808F -:103C4000604035D118209147E316F7FCC8C47C3892 -:103C50000505A30FF5FE70380C4C97C0FA1FE780DE -:103C6000806F91B701114AC8372900201309C91480 -:103C70000347790006CE22CC26CA4EC69307F00F22 -:103C80006304F70635C1AA845145EFC02FB62A84D4 -:103C900021CD9307000D1EA1D5473CA1BC309389CF -:103CA0008400CE853CB1DE205EA1FC207CA1E83002 -:103CB000EFE00FCA68B0CE8513058400194697C09F -:103CC000FA1FE7804069FC24A285034579007CA4A3 -:103CD0009E281EA8BC283CA86244F240D244424917 -:103CE000B24905616FC0AFB4F2406244D244424968 -:103CF000B24905618280411122C437240020130497 -:103D0000C414783006C626C29307F00F6307F70283 -:103D10000DC5AA841945EFC06FADAA8519CD9307CB -:103D2000000D1EA1DD473CA1DE20B24092445EA101 -:103D30006830224441016FC08FAFB24022449244A8 -:103D400041018280011122CC37240020832704E125 -:103D500006CE26CA4AC84EC652C48DC3130404E117 -:103D60002E8AAA840149084063129902630C0A044E -:103D700097C0FA1FE780403823200400F2406244D5 -:103D8000D2444249B249224A0561828093194900CE -:103D9000B3073501884709C997C0FA1FE780C035C6 -:103DA0001C40CE9723A407001C40CE97C84709C9E2 -:103DB00097C0FA1FE78040341C40BE9923A6090033 -:103DC000050955B745DD13964400814597C0FA1F94 -:103DD000E780A05B144081477D5613F7F70FE37F20 -:103DE00097F813974700369710A38507FDB77971A9 -:103DF0004AD0372900208327C9E006D622D426D20C -:103E00004ECE52CC56CA5AC85EC6C5C3B72A002089 -:103E1000AA891309C9E0938AAAE0014405E1B727FA -:103E2000002083A607E199CA03C60A002A848147B5 -:103E30009305F00F13F7F70F6364C70813153400E9 -:103E40002105EFC0AF9AAA8401E92145EFC00F9A7E -:103E5000AA8421C10144CD49930700FD9CA0854758 -:103E6000A3803401BCA0A0B045C49389840023A2E0 -:103E70003401014A372B0020930BF00F83C70A004F -:103E80006373FA0029E883270900A6858823EFC019 -:103E90000F9A03C50A00814575350325090097C0AF -:103EA000FA1FE780602523200900B2502254925463 -:103EB0000259F249624AD24A424BB24B4561828072 -:103EC00013974700369718236305B700050413744A -:103ED000F40F850785B783270BE193154A00BE953C -:103EE0009C21638377032380F9009C31138529008B -:103EF0007D14A380F900194689051374F40F97C047 -:103F0000FA1FE7804045A109050A137AFA0FBDB7E9 -:103F100023A204008DBFB727002083A7C7E0B1C745 -:103F2000411122C406C62A841DE10945EFE0BFAE57 -:103F30002A8601C9B727002003C5C7148545EFC0ED -:103F40002FBD0545EFF0EFE92A84054519C8B727CD -:103F5000002003C5C7148545EFC08FDA2285413D97 -:103F60000545B24022444101828001458280896733 -:103F70009386B7006315D5009C45882369BF938657 -:103F8000C7006317D5009C458546882319C9FDB72E -:103F900093861704E302D5FE938727048146E30442 -:103FA000F5FE36858280797106D622D426D24AD093 -:103FB0004ECE52CC56CA5AC85EC662C469C53C31A0 -:103FC000AA8985C7404115C05945EFE0DFA4931A7F -:103FD000850193DA8A410149372A0020130B000D2D -:103FE000B54B83C73900636EF900B2502254925426 -:103FF0000259F249624AD24A424BB24B224C4561C5 -:1040000082808307840263C757078327CAE0130CA3 -:10401000CAE0ADC32285EFF08FFE29CD08245105FB -:10402000EFB0DFFCAA8439C52310650123017501B7 -:104030001C201946930524003CB183078402150512 -:104040007CA11C30A30FF5FE97C0FA1FE780A030BB -:104050001024D0A415C61385440188C89305940084 -:1040600097C0FA1FE780202F83270C00A68588239E -:10407000EFB0FFFB0509130494021379F90F95B70C -:1040800023A80400D5B7B727002083A7C7E0B1DF76 -:10409000B93B2254B25092540259F249624AD24A70 -:1040A000424BB24B224C014545616FF08FD3797181 -:1040B00006D622D426D24AD04ECE52CC56CA5AC8A0 -:1040C0005EC662C44DCD3C31AA8985C7444195C0C6 -:1040D0005945EFE05F94931A850193DA8A410149CB -:1040E000372B0020930B00FD414C83C73900636ED2 -:1040F000F900B250225492540259F249624AD24A0B -:10410000424BB24B224C456182808387F40063C3EB -:104110005707130ACBE083270A00A9CF5145EFB018 -:10412000FFEC2A8421C923007501A30005002301A7 -:1041300085019C201946938524003CB18387F400B7 -:1041400015055CB59C30A30FF5FE97C0FA1FE780FC -:1041500080209C24938594001305C4003CB4194628 -:1041600097C0FA1FE780201F83270A00A2858823B3 -:10417000EFB0FFEB0509C1041379F90FBDB7B727FD -:10418000002083A7C7E0B5D79D312254B250925486 -:104190000259F249624AD24A424BB24B224C014583 -:1041A00045616FF00FC45D7186C6A2C4A6C2CAC0C5 -:1041B0004EDE52DC56DA5AD85ED662D466D26AD067 -:1041C0006ECE630D05203C31AA8485CB832A450041 -:1041D00063850A025945EFE01F8493178501E18743 -:1041E0003EC60144372900209309000D354C9D4CF3 -:1041F000294D994DB8306361E402B6402644964497 -:104200000649F259625AD25A425BB25B225C925C16 -:10421000025DF24D616182800387CA00B247634C40 -:10422000F7100327C9E0130AC9E06306071083CB20 -:104230000A0013F70B014DCB4D47639AEB06238021 -:104240000A005685EFF0AFFD7DC503C70A00914710 -:1042500003C57A0163E6E70E5105EFB03FD92A8B1B -:1042600079C9231035012301850183C60A00194647 -:1042700093852A0034B18386CA00150574A183C6CC -:104280001A00A30FD5FE97C0FA1FE780C00C03C623 -:104290007A012306CB0041CA13054B012328AB004A -:1042A00083A58A0197C0FA1FE780E00ABDA8554799 -:1042B0006398EB0005472380EA00A38B0A0051B7FF -:1042C0007547E389EBFE49476396EB000947238076 -:1042D000EA0085BF41476394EB000D47CDBF6D47B2 -:1042E000E391EBF61147E5B713F78B0019C32D47A0 -:1042F000F9BF13F61B0013F74B0011C619C315477E -:104300005DBF2147E9B713F62B0019C619C325472E -:104310005DB72380BA0135B701C72380AA0115B75D -:1043200023809A0139BF23280B0083260A00DA85EF -:104330008822EFB0DFCF0504F10A1374F40F5DBDDE -:1043400013050502EFB09FCA2A8B75D5C9473CA15A -:104350002310350103C60A0093F60B0693852A0045 -:10436000D18E34B183C61A0019461505A30FD5FEA8 -:1043700097C0FA1FE78020FE83C68A0019469385FE -:104380001A01A305DB0083C69A0013053B0123062F -:10439000DB0083C6AA00A306DB0083C6BA0023079E -:1043A000DB008386CA00A307DB0083D6EA0023185C -:1043B000DB0083C60A012309DB0097C0FA1FE780F0 -:1043C00080F903C67A01A30CCB0011C613050B02BA -:1043D000232EAB00F1B5232E0B0081BFB7270020A1 -:1043E00083A7C7E0E38B07E0EFF07FA02644B64049 -:1043F00096440649F259625AD25A425BB25B225C39 -:10440000925C025DF24D014561616FF08F9DB727AF -:10441000002083A7C7E09DC798238D476315A70297 -:10442000B727002003C5C7144111854506C6EFC054 -:104430002F8D13050003EFF09F9BB2400145410112 -:104440006FF02F9AC9473E85828079714AD037290B -:1044500000201309C9E08327090006D622D426D2FA -:104460004ECE6393070E372400201304C414582043 -:10447000C947298B55C39165AA849385D571114588 -:1044800097C0FA1FE78000BC2320A900CD4749C58B -:104490009C201146A6857CB097C0FA1FE780A0EB50 -:1044A000930531001305F041EF60B128B7270020D4 -:1044B00093874700A02398813334800011C30904F7 -:1044C00013051002EFE02FD51379F50F937719003C -:1044D00093794900B1CB1545EFE0EFD3BC20688458 -:1044E00019455C82EFE02FD36886638E0900BC20FB -:1044F00013052002DC82EFE00FD26885130530023D -:10450000EFE06FD16887AC307C00380054004A86F9 -:104510002285EFA0100FAA87B2502254925402595C -:10452000F2493E8545618280E147E38709FEBC2070 -:10453000130520025C82EFE00FCE68841305300281 -:10454000EFE06FCD6886C1B7C547F9B7757126C36F -:10455000B724002022C506C74AC1CEDED2DC938430 -:10456000C414DC204944A18B63810724B7270020B1 -:1045700083A7C7E04144639A0722AA89EFE09F9589 -:104580009C2455446373F522B724002083A784DE5E -:1045900026894544639B072091659385C57129450C -:1045A00097C0FA1FE78000AA23A4A4DE4D44630E3F -:1045B000051E2946CE8597C0FA1FE780C0D913058E -:1045C0006002EFE04FC5137AF50F93775A0061440C -:1045D000638D071C130600038145880097C0FA1FEE -:1045E000E780A0DA93771A0093692A000144B9CFD3 -:1045F0004145EFE04FC22316A1043D45EFE0AFC1B6 -:104600002319A1043545EFE00FC1231CA10439454E -:10461000EFE06FC0231FA1042145EFE0CFBF2312BD -:10462000A1061D45EFE02FBF83A784DE2315A10659 -:104630009C33638507182D45EFE0EFBD2310A104DF -:104640003145EFE04FBD2313A10405441305C0021B -:10465000EFE06FBC981893171400BA97239EA7FC3D -:104660001305B002EFE02FBB930484009C1886046E -:10467000BE942399A4FC13059002EFE0CFB9239CCC -:10468000A4FC1305A002EFE00FB9239FA4FC1305BF -:104690008002EFE04FB8930404019C188604BE9496 -:1046A000239AA4FC13057002EFE0EFB6239DA4FC4F -:1046B000137A4A0063040A0813056003EFE0AFB5FC -:1046C00005049C1893141400BE94239EA4FC1305A7 -:1046D0005003EFE04FB4130A84009C18060A3E9A78 -:1046E0002319AAFC13053003EFE0EFB2231CAAFC48 -:1046F00013054003EFE02FB2231FAAFC1305E002CD -:10470000EFE06FB141049C1806043E94231AA4FC08 -:104710001305D002EFE02FB0832789DE231DA4FC10 -:104720009C33C5C713051003EFE0EFAE2398A4FC3C -:1047300013052003EFE02FAE239BA4FC832789DE23 -:10474000A83393854700EFD0DF9C2AD69305F10369 -:104750001305F041EF60E17DB72700209387470004 -:10476000AC230347F1033256B335B00011C38905BA -:10477000832689DEFC009308A106A8223EC8930781 -:1047800021053EC6BC083EC49307E1053EC2DC10CD -:104790003EC0130861049C004E879106EFA0E066BE -:1047A0002A8401C50D45EFE0EFDA2285BA402A449C -:1047B0009A440A49F659665A496182802545EFE0D4 -:1047C0008FA52310A1042945ADBD1305F002EFE02C -:1047D0008FA42398A4FC13050003A9BFB7270020CA -:1047E00083C707150145A18B89C73725002013050D -:1047F000C50B6FD08FEEB72700207D57238507E0CC -:10480000B7270020A389E714B727002023A807E0D3 -:1048100037470500B72700201307E7F623A607E070 -:10482000B727002023A4E70A374705009387870AA4 -:10483000130767FAD8C3374705001307E70A98C775 -:10484000374705001307671AD8C73737050013071E -:10485000A77398CB37370500B72700201307477C8D -:1048600023AEE70A373705009387C70B1307C761E5 -:10487000D8C38280411122C4372400201304A4E04D -:1048800026C2AA840820854506C6EFF0AFCBB7271D -:10489000002083C70715A98BBDC73725002004A0BA -:1048A0001305850AB7240020EFD08FE2938404E13A -:1048B0009C4099C74D45B2402244924441018280B8 -:1048C000082019E10145C5BF91659385B5711205B1 -:1048D00097B0FA1FE780007788C069DD1020814516 -:1048E000120697C0FA1FE78040AA14209040814723 -:1048F000FD5513F7F70FE377D7FC1397470032976F -:104900000CA38507FDB7014523000400EFD04FDC61 -:1049100055BF411122C4372400200325C4DE06C63A -:1049200019C597B0FA1FE780207D232604DEB24028 -:104930002244410182805971A2D437240020832768 -:10494000C4DE86D6A6D2CAD0CECED2CCD6CADAC8DB -:1049500005456389070C9305F1041305F041EF60E9 -:10496000415D9305F1041305F041EF60815CB727C9 -:10497000002093874700BC230347F104B337F000BE -:1049800011C389070327C4DE3EDE283393054700A1 -:10499000EFD02FF80327C4DE2ADC0D452C232EDAB6 -:1049A000EFE06F872AD81145EFE0EF860324C4DEDD -:1049B0002AD665453824034BB4003AD4EFE0AF85DE -:1049C000AA846945EFE02F852A897145EFE0AF841D -:1049D000AA896D45EFE02F842A8A7545EFE0AF8301 -:1049E000AA8A7945EFE02F83E2046258F2572257F2 -:1049F000B2564256D2551375F50F93FAFA0F137A41 -:104A0000FA0F93F9F90F1379F90FE1842ACC56CAFA -:104A100052C84EC64AC426C25AC09308440005452F -:104A2000EFA0003AB650265496540659F649664A05 -:104A3000D64A464B65618280011122CC06CE26CA39 -:104A40008D472E84631AF504B831B7240020E94756 -:104A5000CA21938444006315F700FE206389A704EC -:104A600097C0FA1FE78000D419C17E207EA53A24A2 -:104A7000162472204E202830EFD07FB95A20FE2015 -:104A80006309F7008547F2406244D2443E850561E0 -:104A90008280FD57FEA0FDB78967CD07631CF50036 -:104AA000BC2131476385E7004547E39DE7FCEFD034 -:104AB000CFC9C9BFB1476319F500B727002003C5A7 -:104AC0001715EFD0DFBF7DBF41677D178147E31C1E -:104AD000E5FAD4314947E398E6FACC212A203000A0 -:104AE00023140100EF60203D71BF411122C437241F -:104AF0000020834744E126C24AC006C61307E00FE0 -:104B0000AA842E896380E7041307F00F130444E19D -:104B10006382E7021145EFB06FCD09CD930700FD29 -:104B20001CA18947A30025013CA124B1AA85082026 -:104B3000EFB0EFCFF9571CA0B24022449244024993 -:104B4000410182801145EFB06FCA7DD5930700FD0A -:104B50001CA189473CA1A300250124B12244B72709 -:104B60000020B24092440249AA8503C557E14101A1 -:104B70006FB0EFCB79714AD0372900208327C9DE87 -:104B800022D406D626D24ECE52CC56CA4544C5EBC8 -:104B9000B72400209387C414DC234944958BC5C3F4 -:104BA000B72700202E8A9165A38AA7E0AA8993855A -:104BB0007571314597B0FA1FE780C0482326A9DEFA -:104BC0004D4435CD23003501A30005002946D2858B -:104BD000090597B0FA1FE78000788327C9DE914660 -:104BE000B82363E9E60835E74D47B8A3B823136750 -:104BF0000701B8A3930571001305F041EF6061331D -:104C00009C83F1E7B727002003C767008D47631037 -:104C1000F70CEFD08FDD2C00EF70202D2800EFD0A7 -:104C2000BFB94545EFD03FDF014411C91306006409 -:104C30003306C50203C5C4149145EFB06FED22855C -:104C4000B250225492540259F249624AD24A456102 -:104C5000828085466314D700754741BF8946631437 -:104C6000D700494759B78D466314D7004147B5BFB0 -:104C70005547A5BF9546CA8A630DD7009946631567 -:104C8000D7000947B8A331A01D466312C70223818C -:104C900007006545EFD03FD89307F007E30CF5F424 -:104CA00003A7CADE3C2393E707043CA3A1B7214630 -:104CB0006314C7000547F9B725466314C700B4A3BA -:104CC000C9BFA9460544E31CD7F6114765BFEFF0FD -:104CD0009FC62A842DD5EFF0DFC395B7011126CAF0 -:104CE000B724002083A7C4DE22CC06CE4AC849449C -:104CF000B9C39C230D446390A704372900200345C2 -:104D0000C9148945EFB0CFFF0345C914B727002068 -:104D10009145239B07E0EFB0AFFE83A7C4DE0147B8 -:104D2000814680B31306F100854785450145DC8740 -:104D3000EFA0600C2A842285F2406244D2444249AA -:104D400005618280011106CE22CC26CA4AC8854759 -:104D5000631AF50637240020130464E11E20B9C746 -:104D6000372700200347870031E31307B003636B45 -:104D7000F702B724002003C5C4148945EFB04FF8EB -:104D800012209307006403C5C4143306F602894554 -:104D9000EFB00FD823100400F2406244D2444249DD -:104DA00005618280938747FC1EA0FDB7B7270020CE -:104DB00083A7C7DEF5D36244F240D2444249882338 -:104DC000056129BFB724002083A7C4DEF1D73727A8 -:104DD00000201309C71483474900918BD5DF894709 -:104DE000631EF5042D452EC6EFB04FA02A844DD585 -:104DF000B245930700FD1CA1E547A30005003CA1B7 -:104E0000BC3115051946230FF5FEDC219505A30FCE -:104E1000F5FE97B0FA1FE780005403455900930749 -:104E2000F00F6315F50083A7C4DE8823A2856244D2 -:104E3000F240D244424905616FB06F9F0345C714E9 -:104E40008945EFB0EFEB6244F240D2444249B727C4 -:104E50000020239B07E005616FF0BFAB49458280CE -:104E600049458280B727002083C70715958B638C3F -:104E700007129307C01C63FCC70009458280F240FB -:104E80006244D2444249B249094505618280B7274C -:104E9000002083A7C7DE63880710B7270020938709 -:104EA00047E103C807001307E00F631EE80E011176 -:104EB00022CC4AC806CE26CA4EC688A31305860051 -:104EC0004205368932844181A5C991659385657112 -:104ED00097B0FA1FE7800017AA8955D1B7240020A0 -:104EE00003A5C4E19384C4E109C597B0FA1FE78024 -:104EF000A0201385890023A0A9002286814523A034 -:104F0000340197B0FA1FE78040489C402286CA854A -:104F1000884397B0FA1FE78000449C40A286F24085 -:104F2000C2A36244D2444249B249984305468D45E2 -:104F3000054505616F90B06B91659385557197B08C -:104F4000FA1FE7802010AA891DD9B724002003A5E5 -:104F500044E2938444E209C597B0FA1FE780C01980 -:104F60001385890023A0A9002286814523A034014E -:104F700097B0FA1FE78060419C402286CA8588432B -:104F800097B0FA1FE780203D9C40A286F240C2A362 -:104F90006244D2444249B249984305468D4505458D -:104FA00005616F901065494582809307C01C63FCC2 -:104FB000A700094582800945F2406244D244424933 -:104FC000B2490561828055C9011122CC2A8421058C -:104FD0004EC64205AE8991659385657141814AC887 -:104FE00006CE26CA97B0FA1FE780C0052A8961D588 -:104FF000B724002003A5C4E19384C4E109C597B098 -:10500000FA1FE780600F130589002320A90022867C -:10501000814523A0240197B0FA1FE78000379C4008 -:105020002286CE85884397B0FA1FE780C0329C4025 -:10503000C2A3B727002083A7C7DE85CFB7270020EC -:1050400083C70715958B85CBB727002083A7C7E1BA -:1050500091CF9843D6236244F240D2444249B249A8 -:1050600005468D45054505616F907058014781469D -:10507000DDB7014591B7494581B7B727002083A720 -:10508000C7DE8DC7B727002083C70715958B8DC353 -:10509000B727002083A7C7E199C79843D6230546C1 -:1050A0008D450545D1B701478146D5BF0145828071 -:1050B000494582809307C01C63FCA7000945828094 -:1050C0000945F2406244D2444249B24905618280B6 -:1050D00055C9011122CC2A8421054EC64205AE894C -:1050E00091659385557141814AC806CE26CA97B00D -:1050F000FA1FE78020F52A8961D5B724002003A58F -:1051000044E2938444E209C597B0FA1FE780C0FEE9 -:10511000130589002320A9002286814523A02401AC -:1051200097B0FA1FE78060269C402286CE85884390 -:1051300097B0FA1FE78020229C40C2A3B727002027 -:1051400083A7C7DE85CFB727002083C70715958BB8 -:1051500085CBB727002083A747E291CF9843D6237A -:105160006244F240D2444249B24905468D45054564 -:1051700005616F90104801478146DDB7014591B741 -:10518000494581B7B727002083A7C7DE8DC7B7275A -:10519000002083C70715958B8DC3B727002083A7F1 -:1051A00047E299C79843D62305468D450545D1B7B3 -:1051B00001478146D5BF01458280494582809307DA -:1051C000C01C63F4A70009458280797122D44ECEB9 -:1051D00006D626D24AD0AE892A8425C121059165FA -:1051E000420593857571418197B0FA1FE78080E58C -:1051F0002A89094563040908B724002003A504E2AD -:10520000938404E209C597B0FA1FE780E0EE130526 -:1052100089002320A9002286814523A0240197B07C -:10522000FA1FE78080169C402286CE85884397B07F -:10523000FA1FE78040129C40C2A3B727002083A733 -:10524000C7DE014585CFB727002083C7071549452D -:10525000958B8DC76C001305D030EF702156B24787 -:10526000014593F7070F99CBB727002083A707E2E3 -:105270008D4505459443D223EF903038B2502254E7 -:1052800092540259F24945618280B727002083A7D2 -:10529000C7E189CFD2238C43411106C697B0FA1FCC -:1052A000E780600BB2400145410182800945828060 -:1052B000B727002083A7C7E185C7B727002003A72A -:1052C00047E2894719CF52230C43411106C697B0D4 -:1052D000FA1FE7804008B24081473E854101828045 -:1052E00089473E858280B727002083A7C7E185C70D -:1052F000B727002003A707E2894719CF52230C43A1 -:10530000411106C697B0FA1FE780E004B24081471A -:105310003E854101828089473E858280797106D62B -:1053200022D426D24AD04ECE52CC8D4763FCA70061 -:105330008944B2502254268502599254F249624A55 -:10534000456182803729002003474900C144E312A8 -:10535000F7FE9307F5FF9309490093F7F70F85468A -:10536000AE842A8403CA29001309490063EAF606B9 -:105370008DE199452800EFC03FB8B729002003C54B -:10538000C914914523018900EFB08F9735E481441A -:105390004DB719468145280097B0FA1FE780E0FE17 -:1053A00019462C00268597B0FA1FE780600349F163 -:1053B00019469305F00F280097B0FA1FE780E0FC2C -:1053C00019462C00268597B0FA1FE78060012DF161 -:1053D0001946A685280097B0FA1FE780C0F771BF6D -:1053E000E31DE5F803A5C9002C00EF601030AA8486 -:1053F00049D52381490135BF2800EFD0EFBBAA84EE -:1054000005ED930571001305F041EF50913284834F -:10541000BDFC8D47E31DF4F64545EFD0CFDF25D920 -:10542000B7771800938707A03306F50203C5C914A0 -:105430009145EFB04F87F5BD23014901DDBDB72789 -:10544000002083C70715918B8DC33725002041119C -:10545000130585E106C6EFC09FA9B240B72700201B -:105460007D572395E7004101828001456FC03FA829 -:10547000B72700207D57A38AE7E0B7270020795798 -:10548000238AE7E0B7270020239B07E0B727002007 -:1054900023AE07E0B727002023A207E2B7270020AA -:1054A00023A007E237570500B7270020938747ED71 -:1054B0001307476698C337570500130747D4D8C367 -:1054C000375705001307679398C7B7570500372765 -:1054D0000020938787A3232CF7E08280411126C206 -:1054E000B724002083A7C4DE06C622C48DCB2A843D -:1054F0000D45EFA0BFAFAA8501CD930700FD1CA10C -:105500008D4700B13CA183A7C4DE8823EFA03FB242 -:1055100019C42244B240924441016FF08FBFB2409F -:105520002244924441018280797152CC372A002072 -:105530008327CADE4AD006D622D426D24ECE56CAF9 -:105540000149B1C303C91700B72400208547AA89C0 -:10555000938444006303F904DC2005498DE70D457D -:10556000EFA0DFA8AA8509CD930700FD1CA19147F4 -:10557000A30035013CA18327CADE8823EFA03FABFF -:10558000EFF02FB90549B25022544A85925402597E -:10559000F249624AD24A45618280B727002083A738 -:1055A000C7E1D28A85E30145EFD0EFC62A8601CA5A -:1055B000B727002003C5C7148945EFA07FD583A76F -:1055C000CADEB1A09443D2239305E1000545EFC0A4 -:1055D000BF9C71D91C21858BF9D70545EFD0AFC38E -:1055E0009307B0032A8463FEA702B727002003C5F0 -:1055F000C7145D66130606708945EFA0DFEAB7277A -:105600000020130444FC239B87E08327CADE09475C -:1056100098B3DC2081C723820400B5B74E857D3D59 -:105620009DB7130600643306C50251B7411122C469 -:105630002A840D4506C6EFA07F9B0DC1930700FD90 -:105640001CA1CD473CA100B12244B7270020B240A5 -:10565000AA8503C557E141016FA07F9DB240224456 -:105660004101828056210111896706CE22CC26CACB -:10567000138667002A876398C6001C4701458C2360 -:10568000EFF0AFC61DA8138687006396C6001C47BF -:1056900005458C23F5B7138697006392C602B7279A -:1056A000002083A7C7DE014595C31847082349E1B9 -:1056B000054798B30545EF90A06B054501A81386F3 -:1056C000A700639AC6001C478823B93DF240624494 -:1056D000D2440561828013866703E380C6FA13868D -:1056E0007703E386C6FA138687036395C604B72457 -:1056F000002083A7C4DE0145F1DB1C4788230DE9A8 -:1057000005447D454085EFD00FB168861305000242 -:10571000EFD06FB083A7C4DEC8851307B10080B394 -:1057200074001306A10085450545EF90C06C71B764 -:10573000753361B713869703E387C6F81386E703CB -:105740006396C6001C4509458C231DBF9387F7034C -:105750000145E39DF6F61C4788231DE56C00130503 -:10576000D030EF70A105B247414793F7070FE386AA -:10577000E7F49305B10013056031EF7021048885CB -:105780008545EF90C06715BF553505BFB727002089 -:1057900083C70715411106C6958B99CB3725002085 -:1057A000130545EDEFC00FF44D45B2404101828035 -:1057B0000145EFC02FF30145CDBF98219376250019 -:1057C0009377D70F99C29367270013188501135851 -:1057D000884113F7F7076354080013E70708937627 -:1057E00085009377770F99C2936787001377050237 -:1057F00093F6F70D19C393E6070294A163450800D9 -:105800009377A50291C71C2293E7C7001CA2828050 -:105810007DFD1C22CD9BDDBF2D45631B071003C8FA -:10582000050009476312E810C84118310821220712 -:10583000498F42070D654187930825A06303170B25 -:10584000011122CC26CA4AC84EC606CEBE89B684ED -:1058500032842E8963CEE800930705A0630AF7021D -:10586000130515A0630CA704239004000545B9A8EF -:10587000930745A0630EF7066341F706130565AA73 -:10588000E314A7FE85479EA2DC459C231CA235A8F5 -:10589000C84597B0FA1FE78060B0420541814E8647 -:1058A000637335012A8692A0420641828325C9008E -:1058B000228597B0FA1FE78000AA01A8DC459E2345 -:1058C000239006011CA2A1831CB20145F240624450 -:1058D000D2444249B2490561828099479EA2194645 -:1058E000F1B785479EA2DC4501459C231CA282801E -:1058F000DC4585CB21479AA29A2318A29A232183BB -:1059000018B2BA2338A2BA23218338B2DA2358A2B4 -:10591000DA23218358B2FA2378A2FE23A1837CB232 -:105920006DB72390060055B7239006000545828089 -:10593000828083C8050089476395F814DC4179713A -:1059400022D406D626D24AD04ECE52CC03C8170057 -:105950009C232E8422083368F80042088D67135870 -:105960000841138327A0630168102A8A3A89B68404 -:10597000B285634C0301138707A0630AE80293878B -:1059800017A06309F808854711A8138737A0630893 -:10599000E80A138767AA8D47E317E8FEB25022543E -:1059A00092540259F249624A3E85456182804844D8 -:1059B00032C697B0FA1FE780609E420541819D473D -:1059C000E36E25FDB3099900D547B24563D437018D -:1059D000B547E9B748442686C2094A9597B0FA1FE9 -:1059E000E7806097484493D9090159463306364108 -:1059F00081454E9597B0FA1FE7802099B727002080 -:105A000083A7C7E299E3814751BF9C438145E5DF06 -:105A1000528525A0AD47E31309F8E39B16FB1C3222 -:105A200014225844A207D58F1EA3B727002083A7AE -:105A3000C7E2F1DB9C438545F9D78297E9B7AD47CB -:105A4000E31E09F49947E395F6F84844194697B0E0 -:105A5000FA1FE7804090B727002083A7C7E2C5D789 -:105A60009C43D5D38D456DB7AD470DFB8547E3917D -:105A7000F6F6182293070008E3E2E6F2DC4598A365 -:105A800059B785473E858280B727002037270020F9 -:105A900023A607E2B72E00208947A307F7DA130FE2 -:105AA000F7DA8147938E4EEE5947B386FE00238086 -:105AB00006008507E39BE7FEB7250020B707A00097 -:105AC000938545DB938707059CC1B707E803DCC1D5 -:105AD000B7270020238507E237E60600B727002016 -:105AE0009387C7CB13068686D0C3372E002037E6B0 -:105AF00006000947130ECEDA1306C6832300EE0014 -:105B0000D0C723AEE70123AEC70337230020B72851 -:105B10000020372800203725002037E6060037EF21 -:105B2000060037EE060085461306C684938808DB18 -:105B3000130383E21308E8DA1305D5DA130F4F8550 -:105B4000130E4E842380E80098A398AB2380E702CD -:105B50002388E7022380E7042300E80094A7239525 -:105B60000700D0CB94AF239D070023A2E703238433 -:105B7000D7022395070223A6D703D0DB238CD702B5 -:105B8000239D070223A2C7052384D7042395070476 -:105B90002310030014A123A667042388E70423AE7F -:105BA00017052380E7062388E7062380E708B7E880 -:105BB000060037E70600130787849388488623A2E8 -:105BC000E708F0CB238CD704239D070423A21707F3 -:105BD0002384D70623950706ECD7F0DB238CD70662 -:105BE000239D070623AE07072384D70823950708BC -:105BF00023A6A70837670500B72700209387C7D4D7 -:105C00001307878198C33767050013072793D8C305 -:105C100023A407008280A54763ECA70CB7D7060032 -:105C2000938747200A053E951C41411122C426C294 -:105C300006C64AC0B2842E848287D547614563E593 -:105C4000B7023729002059468145130549EE97A030 -:105C5000FA1FE78080732286A685130549EE97A078 -:105C6000FA1FE780406F0145B24022449244024946 -:105C70004101828089476145E398F5FE1A22B727E2 -:105C800000202394E7E2C5B7A1476145E39EF5FCF8 -:105C9000372500202146A685130545DBEF704149D5 -:105CA000D9B785476145E391F5FCB7250020938579 -:105CB000C5CBD04D938585028820EFF01FB065B726 -:105CC00085476145E392F5FAB72500209385C5CB5A -:105CD000D05D93858504CDB785476145E396F5F89A -:105CE0001822B7270020A386E7DAB5BF0945ADBF64 -:105CF000094582800547630CE5024111AA8706C663 -:105D00002E8599CB1147638BE70225476380E70413 -:105D10000945B24041018280B72500205546938550 -:105D200045EE97A0FA1FE78000630145DDB7B7276E -:105D3000002083D787E201459EA18280B7250020FD -:105D40002146938545DBEF70A13EC5B7B7270020FC -:105D500083C7D7DA9CA1D1BFB72700209387A7E2DA -:105D600098230DE3054798A3058909CDB7260020A0 -:105D7000372500209386C6D44146A5451305C5CBDB -:105D80006F3000370145828001111388F5FF06CE80 -:105D900022CC26CA4AC84EC652C41378F80FAD4565 -:105DA00063ED050BB7D506000A089385C5222E982A -:105DB0003E8A83270800BA893689B284828785455E -:105DC000EFC02FB02A8419E1EFF05F9C2285F240EA -:105DD0006244D2444249B249224A056182808945DF -:105DE000EFC02FAE2A847DF12685EFE0BFA8F9BF72 -:105DF0009145EFC00FAD2A8471F95286CE854A8550 -:105E0000EFC08FA2EFF09F98EFF06FE3EF60E068D4 -:105E100075BFA145EFC0EFAA2A844DF95286CE8501 -:105E20004A85EFC06FA02685EFE0DFA4EFE01F9B5F -:105E3000EF60A06461BFB145EFC0AFA82A8459F5F7 -:105E40005286CE854A85EFC02F9E2685EFE09FA221 -:105E5000EFE0DF98EF60606275B7094485BF797144 -:105E60004ECEAE896C0022D426D24AD006D62A89DC -:105E7000B284EF00F0682A840DE1CE854A85EFB048 -:105E80002FFD2A8419E93245B71605002687938627 -:105E900046642D468145EF10C0002285B250225441 -:105EA00092540259F2494561828079714ECEAE8991 -:105EB0006C0022D426D24AD006D62A89B284EF00BA -:105EC00030642A840DE1CE854A85EFB0FF852A84AF -:105ED00019E93245B716050026879386E6714D46C7 -:105EE0008145EF00107C2285B25022549254025911 -:105EF000F24945618280397126DAAE844C0022DC99 -:105F00004AD84ED652D406DEAA893289368AEF00A4 -:105F1000305F2A8421E9A685630D09009E202C00AC -:105F20007C84BE207C85930720307C86930780028A -:105F30005C874E85EFB0EFEE2A840DE55946A685C5 -:105F40001305A1002304210197A0FA1FE780A040B8 -:105F50001245B716050052879386665F25462C00CA -:105F6000EF0030742285F2506254D2544259B25933 -:105F7000225A21618280797126D2AE846C0022D4AB -:105F80004AD04ECE06D6AA893289EF0070572A84AD -:105F90000DE1A6854E85EFB06FED2A8419E93245F3 -:105FA000B71605004A87938606663546A685EF0034 -:105FB000506F2285B250225492540259F2494561E1 -:105FC0008280BD47638CF50663E9B702A547638706 -:105FD000F50663EDB7009947638CF5049D47638F21 -:105FE000F5049547638CF50401458280B5476387C6 -:105FF000F50463E1B704AD47F5B7DD47638EF502FD -:1060000063EAB700C947638BF502D9476386F50297 -:10601000C547C9BFF5476383F50263E4B700ED47A1 -:10602000D1B793072005638BF5009307200D5DBF63 -:1060300048458280084182800845828048418280AC -:106040009307F00F630DF506011126CAAA84130504 -:10605000000222CC4AC84EC652C456C206CE3A8965 -:10606000B689B28A2E8AEF907FF82A844D450DC8F2 -:10607000930700FB1CA0A300540123114401230239 -:10608000340113058400614663050902CA8597A09F -:10609000FA1FE780402CA2852685EF905FF9014525 -:1060A000F2406244D2444249B249224A924A0561CE -:1060B0008280814597A0FA1FE780202DE9BF09451E -:1060C0008280011122CC06CE2A844C86D08697A0ED -:1060D000FA1FE780206D05C15425B727002021470E -:1060E0009387C714639DE600E82378009306E007D2 -:1060F0000146A285B137F240624405618280780092 -:106100009306E0070146A285C833EDB79307006404 -:106110003306F6026FA0EFAF15C518218546930729 -:10612000270093F7F70F63FFF600411122C42A847A -:106130003A8506C6EFA0CFC1FD571CA0B24022444D -:106140004101828082801A219307000B6310F702BD -:106150005C214947639AE700183985476398E7004F -:106160002A2185456F30D01C6D47CDBF828001113B -:106170006C846C0022CC26CA4AC806CE2A89B68412 -:106180007085EF00F0372A840DE12C004A85EFB0CE -:10619000EFBF2A8419E93245B71605002687938692 -:1061A000A65415462C00EF00D04F2285F2406244E1 -:1061B000D2444249056182807971930720306C8412 -:1061C00070857C862C0093078002014606D65C878A -:1061D000EFF07FD2B25045618280C1777971850737 -:1061E0003EC4894726D27C86AE84930780024C0049 -:1061F00022D44AD006D62A895C87EF0070302A84E0 -:106200000DE12C004A85EFB06FCF2A8419E91245C1 -:10621000B716050026879386E66C45462C00EF00EE -:1062200050482285B25022549254025945618280CE -:10623000B28605466FF03FCC797126D2AE846C00F1 -:1062400022D44AD04ECE06D6AA893289EF00502BEE -:106250002A840DE1A6854E85EFB00FAB2A8419E99B -:106260003245B71605004A879386064F0D46A68528 -:10627000EF0030432285B250225492540259F24921 -:10628000456182807971930720206C8470857C86BB -:106290002C0093078002014606D65C87EFF0BFC54D -:1062A000B25045618280011122CC06CE2A842EC6CE -:1062B00032C436C297A0FA1FE780C04E15C94825E0 -:1062C000B7270020A1469387C71412472246B2453C -:1062D000631BD500E823B2862E86A2856244F24075 -:1062E00005616FF0FFD5B286C8332E86A285FDB753 -:1062F000F24062440545056182806FF05FB66FF041 -:106300001FB66FF05FC76FF01FC779714ECEAE89B1 -:106310006C0022D426D24AD006D62A89B284EF0055 -:10632000301E2A840DE1CE854A85EFB0EFB52A8470 -:1063300019E93245B716050026879386C6673D469C -:106340008145EF0010362285B250225492540259F2 -:10635000F24945618280B28601466FF0DFB90111D2 -:1063600022CC2E846C0026CA06CEAA84EF005019D7 -:10637000DD476309F500930710101EA4A28526854A -:10638000EFB08FBAF2406244D24405618280239418 -:1063900005009E2599E36FF05FB109458280C5BF76 -:1063A000B727002003C767E6854763F8E7020111B6 -:1063B00022CC2E846C0026CA06CEAA84EF0050148C -:1063C00001E9930700101EA4A2852685EFB0CFB582 -:1063D000F2406244D2440561828059458280B727E9 -:1063E000002023A8A7E28280B727002023AAA7E2E3 -:1063F0008280011122CC26CA06CE2A84AE8497A0C0 -:10640000FA1FE780203AA6852285EFA0FFE305E981 -:106410002285648697A0FA1FE780C0380DC15425F5 -:10642000B727002021479387C714639FE600E8231E -:1064300078009306F0070146A285EFF07FC0F24096 -:106440006244D24405618280C833DDB7011126CA97 -:1064500006CEB68422CCDD4663E3B608D94663FF98 -:10646000D50AA5466382D50A63EFB6049546638DC7 -:10647000D50899466388D50A054441687D18631795 -:1064800006093AC6EFA01FE03306854032474206B0 -:106490004182420441803305C4004205BA854181EE -:1064A00032C6EF30E076AA8751C199C0324692A039 -:1064B000B30580406244F240D2443E85056117A393 -:1064C000FA1F670023CFC5466380D504C9460D4433 -:1064D000E394D5FAC167FD17E31DF6FA5DB7F546FB -:1064E0006380D50463E4B600ED46D5B79306200576 -:1064F0006388D5029306200DE390D5F8C167FD1798 -:106500000D446319F600B5BF094485BF9306200DFD -:10651000E391D5F8310642064182A5BF15445DBF1F -:106520000D444DBFC167FD171D447DB7F240624465 -:10653000D24405618280011122CC26CA06CED02128 -:106540002E841307000281469945AA8401372AC682 -:1065500021C51E205020930554007C803E207C8164 -:1065600089477C82930780025C8397A0FA1FE780AB -:1065700080DE5C208A8526857C84EFB0CF832A84E8 -:1065800011C5324597A0FA1FE78000B72285F24077 -:106590006244D244056182804D44CDBF5D7186C6A0 -:1065A000A2C4A6C2CAC04EDE89476306F600C14730 -:1065B00009446318F6040144A9C52E894C0832C663 -:1065C000B689AA84352F2A84324605EDC17785071E -:1065D000CA851305D1013ECC230EC10097A0FA1F36 -:1065E000E78060D72C082685B9372A8419E95245F7 -:1065F000B71605004E879386C6591D462C08EF0036 -:10660000500A2285B640264496440649F2596161F3 -:106610008280797122D436844AD04ECE52CCB2894F -:106620002E8A3A898146130710022286D94526D23E -:1066300006D6AA84EFF09FE12AC621C12286CA8528 -:106640006084231241012313310197A0FA1FE780D0 -:1066500080D04C002685EFB0EF962A8411C53245D4 -:1066600097A0FA1FE78040A92285B2502254925485 -:106670000259F249624A456182804D44F5B70111E1 -:1066800022CC26CA06CE4AC8DD472A84AE84638956 -:10669000F50281470A206C005C86EFB06F960545D5 -:1066A0006381A4080824B165938505B8EF903FBCC9 -:1066B000E5473CA0B71705009387677F5CC08DA0B6 -:1066C00058393149B2863306270318499C4232971C -:1066D0001043E310F6FCDE225223E31CF6FA8C464C -:1066E000084797A0FA1FE780A0CF45D55C38582807 -:1066F000850793F7F70F5CB863FBE702B3872703BF -:1067000018480A20BA979847D623B2238E23EFF071 -:106710005FF041F10824B165938505B8EF903FB56E -:106720005945F2406244D2444249056182807C2846 -:1067300095B7011122CC26CA06CEDD472A84AE8445 -:106740006394F5060A21EFA0FFB3522C36285A288D -:106750006D162A9642064182B307D640C20752AC54 -:10676000C18363FAE7069305C5FF3308F740635911 -:10677000B802BA96918EC206184C0E280A20C18221 -:106780003E97EFF01FE90DE10824B165938505B848 -:10679000EF90FFAD5945F2406244D24405618280DA -:1067A0006D1593160501C9BF81470A206C005C86F0 -:1067B000EFB00F850545E380A4FE0824B1659385FD -:1067C00005B8EF90DFAAE5473CA0B717050093870F -:1067D000677F5CC0C1B78547C9BF397126DAAE840F -:1067E0002C0022DC4AD84ED606DE2A89B289092B33 -:1067F0002A8439E54A85EFA0FFA8D6206D1563C528 -:10680000A60093160501C1829844B2208E204A85C5 -:10681000EFF03FE02A840DE53146A68508082306FF -:10682000010097A0FA1FE78000B3BE202245B716EB -:1068300005004E879386E6785D466C00FC869525BC -:106840002285F2506254D2544259B2592161828059 -:1068500069B761B7797126D206D622D44AD04ECE16 -:1068600052CC56CA5AC88944D9C951CA2E842A89D9 -:10687000BA8A368B328AEFA0FFA093054400814785 -:1068800071159A21635EA708850793F7F70FB10585 -:10689000E319FAFE8A854A85A521AA842DE13145AE -:1068A0003305AA02916593851570CD449790FA1F20 -:1068B000E7804079AA8921C531463306CA02A285FC -:1068C00097A0FA1FE78020A91844562032200E20F6 -:1068D0004A85EFF01FD4AA8415ED0245B7160500CE -:1068E000854756879386E6785D464C005C824EC4A9 -:1068F00023064101A3060100230761015D23B25075 -:106900002254268502599254F249624AD24A424B95 -:10691000456182804E859790FA1FE780E07DC5B77C -:10692000ED44F1BF79714ECE37E60600AE89C16500 -:1069300026D20147AA84894613060687FD15054518 -:1069400022D406D64AD0EF10007A054429C92A89F4 -:106950001307300281461146F5452685EFF01FAF3B -:106960002AC655440DCD8357A900CE8601467C84A6 -:1069700091477C8585471CA1B2472C002685A380C2 -:1069800007003247FD573CA332473CB3EF10206B62 -:106990002A8411C532459790FA1FE780E075228559 -:1069A000B250225492540259F249456182804111F9 -:1069B00006C6EFF00FE119C5B24041011793FA1F67 -:1069C00067008373B24041018280011106CE2AC65E -:1069D000EFA02FF23245B727002023A807E2B72700 -:1069E000002023AA07E29145B7270020A386A71419 -:1069F000EF30A01CF24005616F20F0039397050172 -:106A0000C18763D40712B727002003C5D714797153 -:106A100022D44AD006D626D22E899790FA1FE78034 -:106A2000807E2A8449C918219307000A6312F70857 -:106A300085474C08DC85EFA06FF8AA8405ED8347F5 -:106A4000610171476372F708138717FE1377F70F19 -:106A50009306000263F1E608858BCDC3B7270020BB -:106A600083A707E3994499C72A201306B1004C086D -:106A70008297AA849C8599C7084409C59790FA1FF4 -:106A8000E780806795E05247B7070001938707F0DA -:106A90007D8FB707120093870710630BF70003473A -:106AA0006101ED476316F7002A208545EF30400865 -:106AB0002285EF90EFD0B250225421653345A900D2 -:106AC00092540259456182803707301405073357C5 -:106AD000F700058B51D337270020032747E359DB05 -:106AE0000347510141FB5C8699472308F1002A20A6 -:106AF0006C0023170100EFA05F8FADBFB727002008 -:106B000083A747E38DC32A201306B1004C08829760 -:106B100035D1AA8483475101B1FF8347610123081E -:106B200091005C86E9B79944F5B7014582803971D7 -:106B300022DC26DA06DE4AD84ED652D456D25AD0B5 -:106B4000A5472A84B2846398F50E834745021A222A -:106B5000835A260085072302F5029307F7FFB387C0 -:106B6000FA025442C207C183B69703C917009C2397 -:106B7000542522093369F90085476390F6023307EB -:106B80005703231006008149014A130B3501931A5C -:106B9000070193DA0A0163EA5905C167FD17630328 -:106BA000F90A1E286370F90A050942095424135989 -:106BB00009012317240105470A209305E400639C7B -:106BC000E6007C85930720307C869307800223149F -:106BD00021015C872C00EFA0DFA40824B165938518 -:106BE00005B8EF90CFE85945B9A8B620DC402C286D -:106BF000ED1613865900C206C1823E965A85EFA053 -:106C00004FD405C5630B3A01C840B220B305350126 -:106C100052959790FA1FE7800074BE203E9A9E20FE -:106C2000420A135A0A0185079EA0BE20BE99C209D6 -:106C300093D909018DB75822A9476310F7028347FA -:106C4000450281CF0145F2506254D2544259B259A3 -:106C5000225A925A025B216182803428130934013E -:106C600037E506004A86894513058586EFA06FCD76 -:106C700019C10545C9BF342837E506004A8689454C -:106C80001305C586EFA0EFCB6DF5342837E5060078 -:106C90004A86894513050586EFA0AFCA79F93428DD -:106CA00037E506004A8689451305C584EFA06FC9FC -:106CB00069F1D820BD47E3EEE7FAA567938747124D -:106CC000B3D7E700858BD5D78347440285072302D6 -:106CD000F40203D92400D1B5011106CE2EC697A027 -:106CE000FA1FE78080A111C93C25B2451387170020 -:106CF0006395E50093F707F83CA5F24005618280B3 -:106D0000011106CE2EC697A0FA1FE780009F1DC175 -:106D1000B24591C188C11C251307E00F5D4563880A -:106D2000E7001307F00F01456383E7005945F24080 -:106D3000056182800945E5BF411122C42A842105ED -:106D400006C626C24AC0EFF02FBD3C20A51793F718 -:106D5000D70F89EB58248547631EF7041C488144EC -:106D60003149A1E3FD57230104001CB423020402AE -:106D70001305C4002244B240924402496146814551 -:106D800041011793FA1F67004360B38724033E95C0 -:106D9000084509C59790FA1FE7800036850493F4EB -:106DA000F40F5C280848E3E2F4FE9790FA1FE780AE -:106DB000A0344DBF084C75F975B7411122C4416428 -:106DC00006C626C29307E4FF6301F502AA849DE18B -:106DD00097A0FA1FE780609209E91305F4FF97A0D6 -:106DE000FA1FE780809111C106A1B240224492446B -:106DF0004101828085476392F50497A0FA1FE780DE -:106E0000C08F2A847DD1FD571EA11C241307F00FCB -:106E10006382E7021307E00F6389E7003420083438 -:106E200001475146A685EFF0AFA12285EFF0DFF0D4 -:106E3000FD571CA4230504004DBF8947E397F5FACD -:106E40008545EF40003B55F1268597A0FA1FE78066 -:106E5000C08A2A845DF951BF21C518259307F00F18 -:106E60006300F704011122CC06CE2A8434210E21BE -:106E7000083501475D46EFF0AF9C3820E1476318C5 -:106E8000F7000A206C0023060100EFA07F97F95756 -:106E90001CA42285EFF05FEAF24062440561828023 -:106EA00082809307F00F6306F706011122CC26CAF1 -:106EB0002A844EC6AE84B689AA85930685003775A6 -:106EC00005004AC852C43A89328A130585E57946D5 -:106ED00006CEEFF0AFA3A304240123014401232233 -:106EE000340185C01305C4006244F2404249B249EE -:106EF000224AA685D244614605611793FA1F6700AE -:106F00008345F2406244D2444249B249224A056173 -:106F100082808280B7270020238EA7E28280954757 -:106F20006394F50683474502854685072302F502EB -:106F30001E2258423022FD17C207C1836312D604B5 -:106F40008A07BA9798339C232207D98F7A2563F54D -:106F5000E704411106C622C485075EA52A8493056D -:106F6000C5000A21EFA08FE20824B165938505B81A -:106F7000EF90EFAFB2402244D9473E854101828075 -:106F8000C946B387D70275BF542229478547639600 -:106F9000E6000347450211C381473E8582809D4735 -:106FA000639BF50483474502762585072302F50296 -:106FB0001E225842FD178A073E971C331823A2074A -:106FC000D98F014763F2D704411106C622C4850751 -:106FD0002A845EA59305C5000A21EFF0CFD50824C9 -:106FE000B165938505B8EF908FA8B2402244594708 -:106FF0003A85410182805422A94705476396F600ED -:1070000003474502133717003A858280411122C495 -:1070100006C626C2B5472A846395F5048347450210 -:10702000B28485072302F5020A21EFA0AFA59E20B6 -:107030001307F5FF014563C1E7027A240A2093058F -:10704000C400BA977EA4EFA06FE20824B1659385CF -:1070500005B8EF90CFA15945B24022449244410176 -:10706000828058229D470545E318F7FE03454402F8 -:1070700013351500D5B7C5476396F5061E223A228B -:10708000FD17B387E7020347450205072302E50220 -:107090005842C207C1833E973C333823A207D98F99 -:1070A00041677D176395E70081473E85828013879E -:1070B00017005AA57A25E3F9E7FE411122C493058A -:1070C000C5002A840A2106C6EFA04FE30824B16553 -:1070D000938505B8EF90AF99B2402244D9473E85D9 -:1070E00041018280542229478547E390E6FC03470B -:1070F00045025DFB5DBF011122CC26CA4AC852C4BD -:1071000006CE4EC6BC2115472A8AAE843284368903 -:10711000639AE7043686A2852685EFF05FE0AA89A8 -:1071200055E585476314F40A03474900A9476300FE -:10713000F70288344A8785460146D285EFE05FF042 -:1071400019E585454A85EFE0DFE713341500B420E3 -:10715000883401476946D285EFE09FEE2685EFF03F -:10716000BFBD49A01D476398E7003686A2852685E6 -:10717000EFF0FFE26DB725476398E7003686A285FA -:107180002685EFF0DF9A61BF35476398E7003686C2 -:10719000A2852685EFF09FE759B745476398E7003A -:1071A0003686A2852685EFF01FED95BF5D47639E6D -:1071B000E700D82585473686A2852685631DF70218 -:1071C000EFF0EFCB8547631AF5048549A5476317B0 -:1071D000F402835709009DE30544E38A09F6D94781 -:1071E000E39EF9F62285F2406244D2444249B24914 -:1071F000224A05618280EFF0CFD3E9B788344A870D -:10720000A2860146D285EFE0BFE379F5A2854A85E3 -:10721000EFE03FDB13341500C9B70544E1B739711E -:1072200022DC06DE26DA4AD84ED652D456D29E2129 -:107230001944B9E783C925002A89328A938759FE00 -:1072400093F7D70FAE84DDE3B727002083C6C7E3EB -:107250001307F00F938AC7E319446383E602F547E7 -:107260006395F9049790FA1FE7802049AA891DCDFC -:1072700030250DCE93178601E18763DD07000144B9 -:107280002285F2506254D2544259B259225A925A2B -:1072900021618280F5454A85EFE0BFE283C7A900FE -:1072A00093E707F82385F900D9BF8149D620904498 -:1072B0008C3088203800EFA0AFD52A8471F1B4203B -:1072C00003C50A0038000146CA85EFE07FD72A844B -:1072D00045F9B24799C323000A00BC207547E390E3 -:1072E000E7FAE38E09F82385F90059BF9790FA1F52 -:1072F000E780A040AA8A41D58547639AF908CE2045 -:1073000088443000EF90FFF92A843DF903C72A0032 -:10731000C54763FAE708DD476308F70AB727002087 -:1073200003C59A0083C7D7146393A70A014403C710 -:107330002A008D476319F7043C8403D7CA0063F41D -:10734000E7002396FA0083D5CA004A85EFF06F8ADA -:10735000B727002083D787FC6D476376F70283D673 -:10736000CA005D476371D7021307B00FBE8563740F -:10737000F7009305B00F1166C20513060629C181F7 -:107380004A85EF70301C5685EFF01F9BD5BD3C2120 -:107390001144E39737EF5C41E38407EECE20884445 -:1073A0003000829795B7B72702009387072AB3D793 -:1073B000E700858BA5D7B0203400D6854A85EFF04D -:1073C0009FD32300AA006DBD83A70A01E5B7B420AF -:1073D00038000146CA85EFE0BFC62A8429F9AC20EF -:1073E0002800EFE01FBE39D123000A0089B7011140 -:1073F00022CC3724002006CE26CA4AC84EC652C424 -:107400009309C41403C5890093078002916533056D -:10741000F5029385657037290020930489E39790DE -:10742000FA1FE78020C203C68900930780028145C6 -:107430003306F60288C09790FA1FE78000F59C405B -:107440004D459DCF9304C414130989E30144130AE5 -:107450008002FD599C24636DF40237750500130505 -:10746000E521EFE0DFF737750500130585CDEF90D7 -:10747000BFD3377505001305A5DBEF30904E0145EE -:10748000F2406244D2444249B249224A05618280B4 -:10749000B3074403032509006146814505041374BD -:1074A000F40F3E9523103501230105002314350107 -:1074B000230505002302050231059790FA1FE78096 -:1074C000C0EC49BF01458280B727002083C657150D -:1074D000814763E5D70001473A8582802E87910571 -:1074E00003D6C5FFE30AA6FE8507E5B70DC93C2113 -:1074F0000547890793F7F70F6373F702411122C419 -:1075000006C62A840E2128310147F9465D46EFE080 -:107510003FB3F9573EA0B2402244410182808280AD -:10752000B727002003C75715FD56814763E3E700DF -:10753000828016A12301050085071105C5BF0145FD -:107540008280372600201306B6DC930700021CA2B7 -:1075500037270020FD572305F7DC37270020A30E2F -:10756000F7DA37270020230EF7DA8545B727002002 -:107570002394B7DCB7270020239F07E2B72700201A -:1075800023A407E4B727002023AC07E4B727002093 -:1075900023A607E4B7260020B7E70600938606DC9B -:1075A0009387C785DCC2B7270020238007E4B7276D -:1075B0000020938787D5094798A298A398AB23808A -:1075C000E7022388E70237E7060013070785D4C7D9 -:1075D000D8DBB7E606000D47238CE7029386C68406 -:1075E00037270020D4CB032747E437E50600B7E66A -:1075F00006001305858693860687C8C38CA7239546 -:1076000007008CAF239D0700D0CFD4D3238407027B -:107610002395070223A60702239D0702D8DFB72779 -:10762000002037770500938787D91307476E23A07B -:107630000700D8C323A407008280411106C6EFF0DB -:10764000BFE809C52821B240410182800145E5BF5C -:10765000411122C426C24AC006C6AA842E89328499 -:10766000EFF09FE609E94165CA857D15EFF0DFE59A -:10767000C54701C506A120A18147B24022449244DA -:1076800002493E854101828039E38948354763914B -:107690001605011106CE22CC26CA1832102293C735 -:1076A000F7FF2207598EF18F32C68DE7C4452A8431 -:1076B000A685EFF09FF832460147630FA6002285AA -:1076C0006244F240A685D24405616FF07FF82D47F1 -:1076D0003A85828013070008F2406244D2443A851A -:1076E0000561828083C8050009486395080303A8E3 -:1076F00045008347180003480800A207B3E70701C5 -:10770000C2070D68C1871308289063950701894750 -:107710006FF09FF705458280011122CC37240020AD -:107720001304D4DB182006CE26CA4AC84EC69307D7 -:10773000F00F630DF702AA892945B2842E89EF80E4 -:10774000FF8A0DC59307100B1EA12302050023110C -:1077500035012313250106A5AA8508206244F240BD -:10776000D2444249B24905616F807F8CF240624445 -:10777000D2444249B249056182804111B7270020B5 -:1077800026C2AE8483A547E422C406C62A84EFF04D -:10779000DFEA098909C922852244B240A6859244BC -:1077A00041016FF02F98B2402244924405454101B7 -:1077B0008280411122C426C24AC006C6AA8413048C -:1077C00045001309850B1E209DC3084409C59790E9 -:1077D000FA1FE78060922285314681459790FA1F13 -:1077E000E780A0BA3104231A04FEE31E24FDB24050 -:1077F0002244FD579EA00249924441018280B7274E -:10780000002003C65715B727002003A707E58147C7 -:107810006315F600814636858280BA861307870B8A -:10782000835587F4E389A5FE850793F7F70FCDB756 -:10783000B727002083A787E581CBDA236314A7004D -:10784000884782809C43CDBF01458280411106C696 -:10785000EFF01FFE09C50845B24041018280014595 -:10786000E5BF011126CA9384450022CC4EC606CE40 -:107870004AC852C456C25AC026878149014481462B -:1078800081473D45122345CABDEE42233E23B286C1 -:10789000A297C207C18385093107E395A9FE35C4C4 -:1078A0002E8991659385457022859780FA1FE78020 -:1078B00060792A8B39C9814A014A8C4495C1D2200A -:1078C00033054B019790FA1FE780E0A8DE2088443B -:1078D0003E9A420A135A0A019790FA1FE780C08124 -:1078E00063890A003146814526859790FA1FE78013 -:1078F000C0A9850AB104E3E23AFD232669012314F5 -:107900008900054521A0630DD6000145F24062447F -:10791000D2444249B249224A924A024B05618280CE -:107920003223E314F6FE52233294B2974204C20784 -:107930004180C1838DB70545E37A35FD8DB7B72703 -:10794000002083A7C7E499E30145828098473A273E -:107950006315A7001385470082809C43EDB7411152 -:1079600006C6EFF0DFFD09C50A21B2404101828061 -:107970000145E5BF411106C6EFF07FFC09C528218E -:10798000B240410182804145E5BF411122C42A84B1 -:107990002E8506C6EFF01FFEAA8505462285EF302C -:1079A000406595476305F500BD476313F500214524 -:1079B000B2402244410182804111B727002022C4F5 -:1079C00006C603A4C7E481469387C7E421C01844D0 -:1079D000322718406317A60285CA98C22E8581C92E -:1079E0002146930544009790FA1FE780C0962285B0 -:1079F0009780FA1FE78040700145B2402244410160 -:107A00008280A2863A84D9B798C3C9BF0545F5B725 -:107A100037270020832787E50146130787E5A9C795 -:107A200003D847009443631CA802011106CE22CC60 -:107A300026CA0DCA14C2AA843E852E849780FA1FD6 -:107A4000E780806B2C002685EFF01FF701E519C059 -:107A5000B2471CC0F2406244D244056182803E8637 -:107A6000B68775BF14C3C1BF05458280411122C4CA -:107A70002A84090506C6EFE02FEAFD573CB0B24064 -:107A8000224441018280411122C4416406C626C2BB -:107A90009307E4FF6301F502AA849DE19790FA1F22 -:107AA000E780C0C809E91305F4FF9790FA1FE78043 -:107AB000E0C711C106A1B240224492444101828034 -:107AC00085476392F5049790FA1FE78020C62A84C1 -:107AD0007DD1FD571EA13C201307F00F6382E70202 -:107AE0001307E00F6389E70028300147F946514644 -:107AF000A685EFE0EFD42285EFF05FF7FD573CA0BD -:107B0000230204004DBF8947E397F5FA8545EF301E -:107B1000406E55F126859790FA1FE78020C12A8490 -:107B20005DF951BF1D71A6CACEC686CEA2CCCAC809 -:107B3000D2C4D6C2DAC05EDEAE84AC21F947AA89CF -:107B40006397F5049790FA1FE78040BE2A8411EDF1 -:107B500001442285F6406644D6444649B649264A41 -:107B6000964A064BF25B256182803C2105478907D6 -:107B700093F7F70FE37EF7FC28310147F9460146FA -:107B8000CE85EFE0EFCB2285EFF05FEED1B703AB10 -:107B90000400B7070001938707F037071200B37797 -:107BA000FB0013070710B28A0149638BE7022EC658 -:107BB0009790FA1FE78080B72A89B24515C15021F6 -:107BC00005C293178601E187E3C407F84E85EFE00D -:107BD0004FCF8347490093E707F82302F9008DBF91 -:107BE000372A00200347AADC9307F00F130AAADC08 -:107BF0001944E300F7F6E147E3EDB7F493D7150036 -:107C0000FD1713973700B7D706009387C725BA9794 -:107C100003A80700E30F08F283AB4700E38B0BF2E6 -:107C2000420B135B0B0163050B00C947E393F5F2AD -:107C3000D62090448C308820380802982A8411F984 -:107C40002C084E85829B2A8431C19C30E39307F037 -:107C5000BC20230AA10039472308F1006396E702FC -:107C600062471C331823A207D98F0C084E85FC816C -:107C7000EF90AFF7E30E05EC14080546D9454E85A5 -:107C8000EFE06FE22A84F1B5BC84C5B7B420914718 -:107C9000E380F6EC03450A0038080146CE85EFE0A4 -:107CA0002FBA2A84E31705EAAC202808EFE06FB169 -:107CB00019C123800A009840B7070001938707F095 -:107CC0007D8FB707120093870710E303F7E8E301FE -:107CD00009E8BC202302F900ADBD011106CE2EC675 -:107CE0009790FA1FE78080A411C95C21B2451387E1 -:107CF00017006395E50093F707F85CA1F240056172 -:107D00008280397152D42E8A4ED69305E101AA8918 -:107D1000528522DC4AD856D206DE26DA328936C6A9 -:107D20003AC4BE8A9790FA1FE78000A3054435C184 -:107D3000AA84A8873944EFF0BFAF21CD03284500BE -:107D4000630908042247B246D6874A86A6854E852F -:107D500002982A841DED9307E00F638CFA029820A5 -:107D600089476318F702D8401C331823A207D98F1C -:107D7000C2070D67C18713072790639CE7008347FD -:107D8000190003460900D285A2075D8E4E85EFF0EB -:107D9000BF982285F2506254D2544259B259225AA5 -:107DA000925A21618280797122D422214ECEAA89F1 -:107DB000228556CA06D626D24AD052CC5AC85EC6AA -:107DC00062C4AE8AEFF0BFA301E92285EF90BFED58 -:107DD000594431E50144A1A003C789008547AA841D -:107DE00001446317F702AA8513858900EFF07FA786 -:107DF00029C9FA209624D044CE2003D52900E14792 -:107E0000EFF03FF0D9472A846318F50223A6040057 -:107E10002685EFF01F9A41C0D947E30DF4FA228579 -:107E2000B250225492540259F249624AD24A424B09 -:107E3000B24B224C4561828061DDDE202390FA0046 -:107E4000C1BF13894400014AB94B594C3D4B83557E -:107E50000900DDDDE14763067A010357C90011C35C -:107E6000D94703572900835649000326890003D5C3 -:107E70002900EFF01FE92A846319850123240900F2 -:107E8000050A3109E3156AFD61B77DD983570900F9 -:107E90002390FA00F5B703D529000DBF01117087B3 -:107EA0009307E00F1306E1000147894606CEEFF085 -:107EB0005FE5F24005618280797122D42A840A2527 -:107EC00026D2AE849305210106D64AD09790FA1F98 -:107ED000E780808879C51C252AC693F707029DC7CD -:107EE000A881EFF0BF96AA87B24511E91E24394553 -:107EF0009EA0B250225492540259456182802A2099 -:107F00004946829701C51E249EA0E5B70359240067 -:107F10004A85EFF0DF8E01ED41657D15EFF03F8E74 -:107F200009E51E2425459EA0E9B723102501130766 -:107F300045008147BD46122339EE3147B387E7023A -:107F4000130984003146CA8591073E959780FA1F30 -:107F5000E78060403146CA8548089780FA1FE7806D -:107F6000803F52242A2041478146DD45EFE00FCE75 -:107F70002ACE09E51E2445459EA0A5BF0C485224E3 -:107F80009780FA1FE780203D2A204C08EF907FCD94 -:107F90002DD15945B9BF85073107E39ED7F825454F -:107FA0009DB705458DB7797122D42A840A2526D23A -:107FB000AE849305E1014AD006D632899780FA1F34 -:107FC000E78080792DC91C2593F7070295EF1838B3 -:107FD0009307200511E35C20362450440E242A2008 -:107FE0000147EFF01FD2AA8729E11C3891E72A2028 -:107FF000EF903FC3D94711E18147B25022549254C8 -:1080000002593E85456182802AC6A887EFF01F8409 -:10801000AA8705C5B2452A2049468297AA8745D92D -:108020001A249AA0183869FBC9BF5947E31AE5FE1C -:1080300023000900D1B78547E5B7B947D5B73971EE -:1080400022DC4AD84ED652D406DE26DAAA892E8AF7 -:1080500032C636899780FA1FE780406D09440DC506 -:108060003C211307E00FAA845D44638FE7001307E8 -:10807000F00F5944639AE700324605E2D2854E85F7 -:10808000EF909FC62A841DCD2285F2506254D254AF -:108090004259B259225A2161828003550A00930540 -:1080A000E101231F01009780FA1FE780E06AA8879B -:1080B000EFF05F8CAA8505464E85EF2090732A84E9 -:1080C00055DDD9B79307F00FE300F9FC37750500CC -:1080D000938624007946A6851305C54EEFE00F83ED -:1080E000A381240155B73971B727002026DA83A46C -:1080F000C7E452D45AD05ECE62CC06DE22DC4AD827 -:108100004ED656D266CA2A8BAE8B328C368A99E00E -:108110008149A9A0804483DC44000149835AA4001A -:10812000631499018440E5B73E24A28963F867018E -:1081300005094209135909014104DDB7E3EAFBFED1 -:10814000630B0A000C204840D28662863AC6EF8054 -:108150005FFF324771DD19C323105701F25062549B -:108160004E85D2544259B259225A925A025BF24B6E -:10817000624CD24C216182809A21B621854763E509 -:10818000E60439C34111D42126C237E506009384A1 -:10819000550022C426862E8413058586894506C689 -:1081A000EF803FFAC14719C954202E200A20014709 -:1081B0002686EFF05FF3814711E1A947B2402244E0 -:1081C00092443E85410182803E8582802E860A222D -:1081D000AE21854763E1A50219CD54224111014723 -:1081E000150606C6EFF03FF0814711E1A947B240FE -:1081F0003E85410182803E8582802E860A22AE2104 -:10820000854763E1A50219CD5422411101471506A6 -:1082100006C6EFF05FED814711E1A947B2403E8508 -:10822000410182803E85828039714ED6BE2183D93C -:10823000050006DE22DC26DA4AD852D456D25AD0BD -:108240005ECE62CC66CA6AC863EA37158547638822 -:108250000912416BAE8A2A8A2314010002C6014426 -:1082600001497D1B894B054CC94C054D83D52A001E -:108270000147814601464E8523130100EFF0BFE61A -:10828000AA84630B050E09EC130720029306610014 -:108290005A8695455285EFE06F9B2A84630205104C -:1082A00038849C2041CB18856305A7074147638527 -:1082B000E7022C005285EF90CFE709CD3400154638 -:1082C000D9455285EFD03FFE11C532459780FA1F40 -:1082D000E78080E2814765A0BE2441461305240063 -:1082E0001CA0BE24A1831CB0CC409780FA1FE7805D -:1082F000800649043C848507C207C1837C8463FDF2 -:108300002707BE24638A67078509C20993D9090133 -:10831000B1BFE39077FBBE240946130524001CA0DF -:10832000BE24A1831CB0CC409780FA1FE780A00236 -:108330001104C9B722C603596100B82413052400EB -:10834000638F7701335999032305710118A0BE2467 -:108350004146A1831CB0CC401379F90F79B72305AE -:10836000810118A0BE24135929001379F90FA183A4 -:108370001CB00946CC404DBF3C8485FFA947F25054 -:108380006254D2544259B259225A925A025BF24B69 -:10839000624CD24C424D3E85216182808547C5B7F3 -:1083A000C547F1BFB727002003C767E6854763F4D9 -:1083B000E706011122CC26CA4AC806CE2A84328991 -:1083C000AE849780FA1FE780603619C5382193077D -:1083D000E00F5D456308F700631C0900A685228550 -:1083E000EF903F8DF2406244D24442490561828061 -:1083F0008A209305E100231701009780FA1FE78088 -:10840000A0352887EFF00FD7AA8505462285EF20F3 -:10841000503E69D5C1BF5945828013F7050201C797 -:10842000B2856FF08FD6411126C24AC006C622C45B -:1084300013F98500AA8463170900139785016187E2 -:10844000635B070232853684EFF0CFD2AA850546FA -:108450006313090001462685EF20B03901E9014583 -:10846000B240224492440249410182801C34EDDB37 -:108470001C24F5F7F5B793F72500F5F30D45CDB7B7 -:108480007971AE8622D42A848A229305E10106D628 -:1084900036C69780FA1FE780202C19C90C25B246F2 -:1084A000B0872285EFF07FF7B25022544561828079 -:1084B0000545DDBF13F7050201C7B2856FF0EFCCAC -:1084C000411122C426C206C693F485002A8491E491 -:1084D000139785016187635007023285EFF08FC9DA -:1084E000AA85054691E0014622852244B240924485 -:1084F00041016F20103093F72500014591E30D45B0 -:10850000B24022449244410182807971AE8622D4E5 -:108510002A848A229305E10136C606D69780FA1F7F -:10852000E7808023B24611C90C25B0872285EFF081 -:108530007FF8B2502254456182800545DDBF7971D4 -:1085400026D2AA842A25C16722D44AD04ECE06D686 -:1085500023170100FD173284B6890149630CF50029 -:1085600005059420D04042051307E1004181EFF05A -:108570009FB72A899420D04037E506008945130526 -:108580008586EF801FBC15C5A2242285EFF02FBD84 -:1085900009C57D142A944204418063840900239014 -:1085A0008900B25022544A8592540259F2494561D9 -:1085B00082809420D04037E5060089451305C586A2 -:1085C000EF803FB871F19420D04037E5060089452F -:1085D0001305C584EF80FFB611C9E30809FA3C878B -:1085E000E39587FA0354A9007D1475B7A22475B7E3 -:1085F000397122DC26DA4AD84ED652D456D25AD015 -:1086000062CC06DE5ECEBE899C252A8AAE84C18BF2 -:10861000328C36843A89C28A468B9DE783CB04002C -:108620008947638BFB046285EFF08FA01DC183280F -:108630000500638008025A88D6874E87CA8622863C -:10864000A6855285829839A03285EFF02FA0AA879F -:1086500011ED3945F2506254D2544259B259225A5E -:10866000925A025BF24B624C216182802946A685B8 -:108670005285829745D5F9BFD8401C331823A207ED -:10868000D98FC2070D67C187930607906383D71EF2 -:1086900063CCF60693062780638ED70A63C0F60282 -:1086A00013070780E3C1E7F82D45E39509FADC4499 -:1086B0009023CC432310C9002285B9A21307378029 -:1086C000E393E7F62D45E39709F885472310F90072 -:1086D000DC4481459C231CA0AA2405054205418158 -:1086E0009780FA1FE7804007835709006310051041 -:1086F00091072310F9001146814513051400978056 -:10870000FA1FE78080C8F1A8930627906386D714E4 -:1087100063C1D71093063790638DD7141307479022 -:10872000E393E7F02D45E39709F2DC441D4723105E -:10873000E900982318A0983318B0BA2338A0BA23B8 -:10874000218338B0D82358A0FA2358B0FE23A18340 -:108750007CA041A82D45E39F09EEDC446C0083C951 -:1087600017009823A209B3E9E90011472310E90093 -:108770009C234E851CA0DC449C331CB09780FA1FC0 -:10878000E78080FDAA8425C13086C1659306E1009B -:10879000FD158329C500EFF09FDA09ED9420D04044 -:1087A00037E5060089451305C586EF809F9919E1D5 -:1087B000FD577C8703C7090089476310F70283A52B -:1087C00049000946130544009780FA1FE780A0B8C6 -:1087D0008357090089072310F9003C873CA0A18337 -:1087E0003CB0014585BD23173101C5BF182189075C -:1087F000BA972310F9003E251CB03E25A1833CA06A -:1088000010214C41130534009780FA1FE780A0B473 -:10881000C9BFC8449780FA1FE78040B89317050185 -:10882000C1832A871D45E3E737E36399F9002310E5 -:108830000900CC4403560900CE95BDBD4207B3865E -:108840003A01418363C7E600B38737412310F9003B -:10885000CDB723105901F1BF2D45E39D09DECC446E -:108860005285EFE09FDD2310790108A0218108B037 -:108870008DBF2D45E39009DEDC44231079019C2354 -:108880001CA0DC449C331CB0A9BF1D71CAC82A8936 -:108890002A21A2CCCEC6D2C4D6C2DAC05EDE62DC49 -:1088A00066DA6ED686CEA6CA6AD8AE8AEF809F9D5B -:1088B000130CF5FF93170C01B72B0020C1832A8AF4 -:1088C00081491384CBEF3EC6372B0020B72C002004 -:1088D000C16D8357C90063F5F9001E2063CC870181 -:1088E000035529009385CBEFEF908FA82A8D15CDE6 -:1088F000594D25A883278900139719009305E10195 -:10890000BA9784339C23A204DD8C26859780FA1FB6 -:10891000E78080E4AA8515E923909A004840054D38 -:1089200009C59770FA1FE780207DF64066446A8586 -:10893000D6444649B649264A964A064BF25B625CE3 -:10894000D25C425DB25D2561828032488348490035 -:1089500083A68CE4B0870355290081471307EBE316 -:10896000EFF01FC92A8D13888CE409C523909A0063 -:1089700048407DB75C4085E7035529005147814653 -:108980001386FDFFBD45EFD07FACB727002048C060 -:10899000138887E409E523909A00454D79B71E2096 -:1089A0000357EBE39304EBE33E976346470113C79A -:1089B000F7FF52979AA048409220832508003E95E1 -:1089C00085099780FA1FE78000991E209A20C20926 -:1089D00093D90901BA971EA0EDBD397122DC2A8412 -:1089E0002A2106DE26DA4AD84ED652D45AD05ECE96 -:1089F00062CC66CA2E8B56D26AC8EF80BF882A8A9C -:108A000054242E240A2478001306D400130CBAFF31 -:108A1000651AEFF04FED420A37290020AA898144F8 -:108A2000135A0A01B72B0020B72C00201309C9EFF5 -:108A30006382090463D08405938A8CE483484400EC -:108A400083A60A0030862A20528881471387EBE3E9 -:108A5000CE85138DEBE3EFF0BFB91DC1814A30869F -:108A60002E244E859306E100EFF07FADAA8963992D -:108A70000A065DFDF1E41E2429452310FB0035A8FC -:108A800083570D001228E31BF6FC83A50A00484813 -:108A90009780FA1FE780C09471D18327490095EF32 -:108AA0002A204166454781467D169D45EFD01F9A95 -:108AB0001DE11E2445452310FB00F2506254D254A0 -:108AC0004259B259225A925A025BF24B624CD24C32 -:108AD000424D216182802322A90083DAA90041B797 -:108AE00083274900A6972380570193871400139783 -:108AF000070183274900418393DA8A00BA972380CC -:108B000057011387240083264900938734004207C6 -:108B100091044183C207C204C183C180369711C941 -:108B2000348714A303274900BA973887218398A371 -:108B300001B7FD5614A303274900BA9794A31DBF9C -:108B40002A20B72500208980239E95EE9385C5EFC6 -:108B5000EF80BFE93DD159458DB7411122C406C60A -:108B600093F705012A84328585C3EFE0BFE0AA852B -:108B700005462285EF20E04795476305F500BD4790 -:108B8000631DF502214515A893F7450099CBEFE049 -:108B90007FDE0546AA8522852244B24041016F202E -:108BA000404593F7050489C7EFE0DFDC0146DDB7F8 -:108BB00013F51500133515000605B2402244410196 -:108BC000828079714AD04ECE52CC06D622D426D29B -:108BD0002A8AAE89014983D749006364F9000145B7 -:108BE00081A083A70900131419009304140033878C -:108BF00097001823A297882322079305E100598D37 -:108C00009780FA1FE78040B505E583A70900054571 -:108C10003E94182098A383A70900BE94982098B387 -:108C2000B250225492540259F249624A45618280FC -:108C30000C2530875285EFF05FF201CD83A7090044 -:108C40003E94182098A383A70900BE94982098B357 -:108C5000C1BF0509420913590901B5BF011122CC51 -:108C60002A848A219305E10006CE9780FA1FE780C7 -:108C7000A0AE11C90C2530872285EFF01FEEF2401F -:108C80006244056182800545DDBF1D71CAC82A891D -:108C90002A2186CEA2CCA6CAD2C4D6C2DAC05EDE53 -:108CA00062DC66DA2E8ACEC66AD86ED6EF808FDD99 -:108CB0002AC68346C9008355A90003558900780850 -:108CC0001306D900EFF02FC2B247B7240020416B42 -:108CD000938AA7FFC20AAA8B014493DA0A01372CB0 -:108CE0000020B72C00209384C4EF7D1B63820B18F7 -:108CF000B08683C58B0003552900EFF01FE6AA8DCF -:108D0000631305168348490083A68CE4B086035597 -:108D10002900568881471307ECE3DE85EFF05F8D6D -:108D2000AA8D9309ECE3138D8CE4631E051215CC18 -:108D300003D70900BE2011076397E7003247A297C7 -:108D40006D1763C7E706B72500209387C5EFBA23E1 -:108D5000035529009385C5EF3354E40282A3EF80C5 -:108D6000FFE4AA8D15C1D94D05A003552900494737 -:108D700081465A86C545EFD06FEDC8C015E583D74B -:108D8000AB00C54D2310FA00F64066446E85D6440C -:108D90004649B649264A964A064BF25B625CD25C6B -:108DA000425DB25D2561828083D709009107BEA034 -:108DB000DC4003D7AB009306E101A29798A3930789 -:108DC000140013970701DC4041835E85BA9703D7EF -:108DD000AB00218398A3B0868355A900EFF02FF64E -:108DE00013072400D4409307340042071104418341 -:108DF000C2074204AA8BC1834180369715EDFD5608 -:108E000014A3D84083250D00BA9794A3C84003D675 -:108E1000090022959770FA1FE780E05383D7090075 -:108E20003E944204418005F0835789002310FA00E4 -:108E3000E39C0DF4A94D89BFB48783250D0014A3CD -:108E4000D840BA97B887218398A3C84003D60900B1 -:108E500022959770FA1FE780005083D709003E944F -:108E60004204418061B583D7AB002310FA0065BF8F -:108E7000814D55BF5D71A6C2CAC0AA840359850041 -:108E80002A21A2C44EDE52DC5AD85ED662D466D203 -:108E900086C656DA6AD06ECE2E8BEF80AFBE930BAD -:108EA000D5FF7115131A0501B72900200144135A83 -:108EB0000A01372C0020B72C00209389C9EF635B8F -:108EC0007413D424AE241307E1001386D4004A851A -:108ED000EFF06FA12A8D630F05100359A5000C2533 -:108EE0003087AA20EFF07FC7631B051083C84400BA -:108EF00083A68CE43087AA20528881471307ECE3CD -:108F0000EA85EFF0EFEE930DECE313888CE465E96E -:108F100005C883D70D0003D7290089076308F70622 -:108F2000B72500201387C5EF3E23AA209385C5EF00 -:108F30003354F40202A3EF801FB40DC559451DA0A0 -:108F4000AA2041664D4781467D16A545EFD00FD03A -:108F5000B727002023A2A900138887E41DE123106E -:108F60002B014545B640264496440649F259625ABB -:108F7000D25A425BB25B225C925C025DF24D61614F -:108F8000828083D70D0089072391F90083D70D00D4 -:108F9000A29763D1770783A749000357AD00930ACF -:108FA0002400A29798A305049317040103A4490081 -:108FB000C183C20A3E948357AD008325080093DA2B -:108FC0000A01A1831CA003A5490003D60D005695F4 -:108FD0009770FA1FE780203803D40D00C167FD1792 -:108FE000569442044180E30CF9EC050942091359F7 -:108FF0000901F1B529450DF423102B01A5B76DDC4E -:1090000005B71E2199E309458280411126C24441DA -:1090100022C406C64AC09420D0402A8437E5060000 -:10902000894513058586EF80CF9141C53C202547B2 -:109030006145E51793F7F70F6368F70837290020B4 -:10904000035789DC0545130989DC3DCF1E20BA97FB -:109050004167634BF706916593852570314597709D -:10906000FA1FE78020FEAA844D45B9CC1E20835507 -:10907000090001460147B386E500C206C182636B61 -:10908000F704AE97C207C18319C22310F90023A0C9 -:1090900004002146A285138544009770FA1FE780DB -:1090A000802BB72700209387C7E498430DEF84C334 -:1090B00035A89420D04037E5060089451305C586BC -:1090C000EF802F8825F50945B24022449244024999 -:1090D0004101828050401315470005072A9636A6A5 -:1090E000054651BF3E871C43F5FF04C30145E9BF58 -:1090F000011106CE22CC26CA4AC809E98944F240A9 -:10910000624426854249D244056182802AC62A8467 -:10911000280036896C845085EFF0BFEEAA8465F193 -:10912000E30F09FC3E24F9DB9165938555703145C9 -:109130009770FA1FE78000F105C53E242320050043 -:10914000232425015EA1B7270020938787E5984354 -:1091500001E788C36DB73E871C43F5FF08C345B7D9 -:10916000CD4471BFB7270020938707E498230DE310 -:10917000054798A3058909CDB7260020372500208B -:10918000938686D941469145130585D56FF05FF6E4 -:1091900001458280B7270020A38EA7DA8280C167AD -:1091A000FD176315F5002E856FE08FB7411106C6D8 -:1091B000EFE08FB109C5FD571EA123010500B240A4 -:1091C0004101828001114AC806CE22CC26CA8547B9 -:1091D0002A896392F5044A85EFE06FE231E9C164C0 -:1091E00037E606009385F4FF1307E100894613066E -:1091F00006850545EFE03FEF2A84FD1405C44C4485 -:109200004A85EFF0DFF9308722858146A685EFF0A9 -:109210000FB32A84E5B789476396F5008545EF10BB -:10922000507D55D9F2406244D24442490561828062 -:10923000EFE02FD86DB7011126CAB7240020938420 -:10924000C41422CC883437240020130404E5B72743 -:1092500000203727002006CE4AC84EC6232004002F -:1092600023AA07E4232207E459C1138947E593079A -:10927000200C3305F502916593851570930947E439 -:109280001905420541819770FA1FE780A0DB9034F1 -:109290009307200C81453306F60208C01906977023 -:1092A000FA1FE780800E1C40983481459386870B17 -:1092B0007D5563E8E5069306800BB306D7020146A9 -:1092C000FD550507B6972320F900BE868EA2ACB2E5 -:1092D000ACA22382060005069906E369E6FEF9566C -:1092E00096A399463307D702BA9723A0F90037858A -:1092F0000500130545B2EFD02F8F37850500130504 -:10930000A5CDEF701FEB37850500130565A8EF109D -:109310005065F2406244D2444249B2490145056178 -:1093200082802394A6F41386C6F423100600232417 -:1093300006003106E31BD6FE85059386860B95BF96 -:10934000411106C622C42A84EFC00FF4EFE06F9FDC -:10935000B7270020238E87DAB727002003A547E42C -:10936000EFE00F9CB7270020238587DC2244B24022 -:10937000379505001305451C41016F10905E9397CA -:109380000501C18763D10730B727002003C5C7DBBC -:10939000797122D45AC806D626D24AD04ECE52CCA3 -:1093A00056CA2E8B9770FA1FE780E0E52A8429C5FC -:1093B00018219307000B631EF702B724002085478E -:1093C000938484E4DC849C4023150100B9E3EF001E -:1093D00080759165938535709770FA1FE78080C618 -:1093E00088C005E99C8491C74C2013058400EFD008 -:1093F0000FDC2285EF60DFBCB2502254216533457B -:10940000AB0092540259F249624AD24A424B45613A -:109410008280372A0020614681451305CAEF977084 -:10942000FA1FE78080F60349440089479304CAEF96 -:10943000D289930ACAEF631AF904F5258AA02A2073 -:109440009305CAEFEF804FCB3A209E20162401ED02 -:1094500063E3F6001EA40E243A85EFC09FF922852F -:10946000EFC07FCE41B763E3F6001EA41E24D945AA -:109470009386C9EF0D463A852390FA00EFC0BFE20C -:109480008D4571DD1385C9EF65A899476319F90208 -:109490009305A1002285EFF04FD4AA8469D1D94762 -:1094A000639EF40C05092A201379F90FD945938698 -:1094B000C9EF4A86EFC03FDFCA8555D1E1B7A14762 -:1094C0006318F9009305A1002285EFF0BF9AF1B768 -:1094D000A947631AF9060A246C009770FA1FE780FF -:1094E000A0272A89630905122A2041669306E10014 -:1094F00055477D16AD45EFC07FF5C8C0AA8625CD7E -:10950000834844000358E10030862A20814713072E -:10951000CAEFCA85EFF0CF8DAA84631F050C2A20FD -:109520009305CAEFEF80CFDA1DD92A209306CAEF40 -:109530002D46D945EFC03FD71DD1AD451305CAEF24 -:10954000EFD0EFC629BFB147631BF90C0A246C00AA -:109550009770FA1FE7804020AA8455CD2A204166E3 -:109560009306E10059477D16B545EFC03FEE23A2B3 -:10957000AA00AA8631E11E24C5447C851830D14753 -:10958000E30FF7EC5C202A209385C9EF2380FA00D3 -:109590003C8523829A002391FA00EF701FE5E300D7 -:1095A00005EC2A209386C9EF0546D945EFC0BFCF09 -:1095B000E30705EA8545F9B5834844000358E1000F -:1095C0003E2430862A20A6851307CAEFEFF04F828B -:1095D000AA841DE12A209305CAEFEF80AFD4E300EF -:1095E00005E82A20D9459306CAEF3546EFC0BFCB20 -:1095F000B545E30605E679B5D9476393F4008144A0 -:1096000003A54A009770FA1FE78000AFE38904E4DE -:109610001E247C85A5B71E2485447C8585B7B94763 -:109620006318F9009305A1002285EFF00FA6B5B5E8 -:10963000C1476318F9009305A1002285EFF0EFE41C -:10964000A9BDC947631AF900130691009305A1004B -:109650002285EFE05F9591B5D947631DF900930529 -:10966000A1002285EFE05F85AA84E31A05E2A30446 -:109670000100F5B3E147E314F9DE9305A10022856B -:10968000EFE06FF219BD01458280F9CE011152C49D -:109690002E8A854522CC4EC656C206CE26CA4AC858 -:1096A000AA8AB6893284EF10D034D1471DC5B727B6 -:1096B00000203727002083C747E6834657E68144CA -:1096C00019E0B684BE86372700200327C7E59397A5 -:1096D0004400BA9763EDD400D547F2406244D244C7 -:1096E0004249B249224A924A3E85056182803E89BA -:1096F000C10703D727FF09C7850493F4F40FD9BF27 -:1097000031CC9565938525C0130500029770FA1F2B -:10971000E78040932326A90061D11306000281450A -:10972000938404049770FA1FE78020C623119900E0 -:1097300023000900231359010DC4372700201C34CE -:109740000326470C2304F900118C8327C9001184D8 -:109750001180C0AF23A02901814741B7232609000A -:10976000C1BF23044901FDB785473E858280B727E5 -:10977000002083C547E6B727002003A7C7E5814738 -:109780006395F5008146368582803223BA8619C2F8 -:10979000E30BA6FE850793F7F70F4107D5B7B72769 -:1097A000002003C647E6B727002003A7C7E5814787 -:1097B0006315F6008146368582802E23BA8681C5E0 -:1097C0004C23E38AA5FE850793F7F70F4107CDB732 -:1097D000B727002083C577E6B727002003A7470CEB -:1097E00081476395F5008146368582801223BA86CB -:1097F00019C2E30BA6FE850793F7F70F4107D5B70C -:10980000B727002003C857E6B727002083A7C7E57E -:1098100001476315E800814636858280B223BE8603 -:1098200009CAF2236317A600D04701C63222E30516 -:10983000B6FE05071377F70FC107E1BF411122C438 -:10984000404526C206C6AA8415C0484409C597707B -:10985000FA1FE780608A484809C59770FA1FE780B9 -:10986000A08922859770FA1FE780008926854146E6 -:1098700081459770FA1FE78040B1B2402244FD57FE -:109880009CB4924441018280011122CC2A842A2175 -:1098900006CE2EC6EF104063324622858145EF008A -:1098A000505222856244F24005616FF03FF905C5D0 -:1098B0003A21411122C406C62A8411CBDD45EF00AE -:1098C000505322852244B24041016FF03FF7B2402D -:1098D0002244410182808280411126C2B146930414 -:1098E000C5FFB386D402B72700201387C70C06C66E -:1098F00022C4369736276397B602484305C51384BA -:10990000C70C9307F00F6305F6001C21639CC7008A -:109910009760FA1FE780407EB147B387F402A297B1 -:1099200023A20700B24022449244410182804111A7 -:1099300022C42E8426C24946AA848145228506C6B1 -:109940009770FA1FE78060A495CCDC2C1397470032 -:10995000B727002083A7470CBA979A231AA0BA23E7 -:10996000FE233AA037270020035727E65AA09A2063 -:109970007AA0BA201AA4DA203AA4FA205AA49A2487 -:109980001EA87AA4B2402244924441018280B727A3 -:10999000002083C547E6B727002003A8470CB72758 -:1099A000002003A6C7E5014781476394E5003E8593 -:1099B0008280142299CA544689CAD42E9206C2962D -:1099C0006315D500850793F7F70F05071377F70F92 -:1099D0004106E1BF130600643386C5029306950075 -:1099E000AA8537A505001305E58A6F609FA241117E -:1099F00022C406C62A840835EF609FB5FD571CB403 -:109A0000B240224441018280011122CC4AC84EC694 -:109A100052C456C25AC006CE26CA2A89AE8901440B -:109A2000372A0020B72A00201D4B83475AE663657A -:109A3000F40463990902B7290020372A0020930A09 -:109A4000F00F83C749E66364F4061144A1442285FC -:109A5000050442041306F00FCA854180EFF0DFE7EA -:109A6000E31794FEF2406244D2444249B249224A8A -:109A7000924A024B0561828083A7CAE59314440091 -:109A8000BE949C208DC3FE20639F270163956901CE -:109A9000AA20EF10604326854E868145EF00703284 -:109AA0002685EFF0BFD905041374F40FBDBF8327DB -:109AB000CAE593144400BE949C208DC39C34638FEC -:109AC0005701FE20639C27012685EFF05FF2268573 -:109AD000D145EF0010322685EFF05FD605041374F0 -:109AE000F40F85B741677917630BE502411122C472 -:109AF00006C685472A846399F50022852244B24030 -:109B0000814541016FF05FF089476396F500854517 -:109B1000EF10206E7DD1B2402244410182808280CC -:109B20009D456FF07FEEB727002003D527E68280A2 -:109B3000B727002003C707E6011106CE68876C86A9 -:109B400085476318F70070009305E1000545EF5065 -:109B50002020F24005618280A947631DF6029C31F6 -:109B60009821A207D98F1EA1BC31B821A207D98F95 -:109B70003EA1DC31D821A207D98F5EA1FC31F821AA -:109B8000A207D98F7EA19C359825A207D98F1EA543 -:109B900001458280054582809147631EF6009C3115 -:109BA0009821A207D98F1EA1BC31B821A207D98F55 -:109BB0003EA101458280054582809387C5FF93962B -:109BC0000701C1820D47636ED7003147B387E702B3 -:109BD000372700201307C70CBA97A8A38EA3014507 -:109BE0008280094582809306402037270020AA877B -:109BF00063F4A60093074020F1172311F7E6B72777 -:109C000000202383B7E6B72700202384B7E68280AD -:109C10001905956542054111938535C0418106C6F8 -:109C20009760FA1FE780004201C9B240E95541013F -:109C30001763FA1F67000358B24041018280B727BB -:109C40000020238307E6B72700200547238007E687 -:109C5000B7270020A384E70CB7270020A38407E6DA -:109C6000B72700200111239107E6B727002023849E -:109C7000A70C4EC637250020B72900201305C50CB8 -:109C800022CC26CA4AC837240020B724002037290E -:109C90000020130600038145938979E606CE52C45D -:109CA000230204E6A38204E6232E09E423800900AC -:109CB000372A00209760FA1FE780206DEF10602997 -:109CC0000345CA0F130444E6938454E61309C9E517 -:109CD00005CD9565938545C012059760FA1FE7800D -:109CE0006036372700202322A70C19CD0346CA0F60 -:109CF0009307CA0F9C332380C900814512069CA09C -:109D00009760FA1FE7806068B727002003C54715F2 -:109D10009C209565938555C03E951375F50F08A059 -:109D200012059760FA1FE780E0312320A90039C1AE -:109D30001020814512069760FA1FE780006503270F -:109D400009001420814725077D56639FF600624471 -:109D5000F240D2444249B249224A37A505001305D0 -:109D600045AE05616F10E03F850710A393F7F70F2D -:109D70004107E1BF2300040023800400C9BF411153 -:109D80009397050126C206C622C44AC0C187AE8485 -:109D900063DE0708372900200345890C9760FA1F06 -:109DA000E78060462A8429C91821930700096312B5 -:109DB000F7041831CD476319F706B726002003488A -:109DC000250003C576FC37270020834767E6130686 -:109DD000640081458146130767E6AA886316D802A6 -:109DE00091C11CA31C2391C70345890C8545EF60D5 -:109DF000CFC22285EF60CF9C2165258DB2402244E1 -:109E000092440249410182800C22AE9793F5F70FEC -:109E100093F7F80F63F4A50093F7F50F850693F613 -:109E2000F60F090685455DBF092BE1B793F71500CD -:109E30000145E9D7EF00705109CDB727002083C74E -:109E400067E681CBB727002003C5870C8545EF6007 -:109E5000CFBC13C514005DB785462A8763FFC602D1 -:109E60009C319021A207D18F1EA16399D700BC31EC -:109E7000B421A207D58F3EA10145828089460145C4 -:109E8000639ED700BC31B421A207D58F3EA3DC313D -:109E9000D421A207D58F5EA3828005458280914799 -:109EA000631EF6009C319821A207D98F1EA1BC31F8 -:109EB000B821A207D98F3EA1014582800545828045 -:109EC0009147631EF6009C319821A207D98F1EA1ED -:109ED000BC31B821A207D98F3EA10145828005453A -:109EE0008280A1476318F6029C319821A207D98F7E -:109EF0001EA1BC31B821A207D98F3EA1DC31D821E7 -:109F0000A207D98F5EA1FC31F821A207D98F7EA1CB -:109F1000014582800545828089476319F6009C319E -:109F20009821A207D98F1EA1014582800545828014 -:109F30003E2279714ECE06D622D426D24AD01307BD -:109F4000F007AE896371F70209473AC47C86300096 -:109F500093F5F50FEF003076B25022549254025927 -:109F6000F249456182805A22D9462A89328463F7B0 -:109F7000E6007E2263F4F6006379F7002314010003 -:109F8000300093F5F90F4A85F1B70A2202C4EFF0C9 -:109F90003F84AA8435C5EFF09F9F9C246369F50038 -:109FA0001146A246CE854A85EF00B06775B73400EA -:109FB00026869305F00F4A85EFF02FED75F1A24745 -:109FC0001A24DC479AA33A20BAA35A20DAA37A20AB -:109FD000FAA3DA209AA7DC4495C793F4F90F2286F6 -:109FE000A6854A858297C167FD172A86E31BF5FA85 -:109FF00022459947F9451CA144A1EFF0BF9DA9BF97 -:10A00000094645B7014671BFA947631DF6029C3159 -:10A010009821A207D98F1EA1BC31B821A207D98FE0 -:10A020003EA1DC31D821A207D98F5EA1FC31F821F5 -:10A03000A207D98F7EA19C359825A207D98F1EA58E -:10A0400001458280054582809C211CA19C311CB168 -:10A05000BC31B821A207D98F3EA1828023220500FE -:10A06000D82189476304F70005458280F6210D4712 -:10A07000E37CD7FE9C45011106CE22CC26CA4AC8F5 -:10A080004EC684339023A204D18C138644006311FE -:10A09000D604A033BC23AE8922045D8C9307C4FF91 -:10A0A000C207C1832A896361F70203A589002311CE -:10A0B000990023108900F1559760FA1FE780800FFF -:10A0C0002322A900014531A02285EFF04FEA71FD5E -:10A0D0000545F2406244D2444249B249056182805A -:10A0E000397122DC2E841C204AD806DE26DA4ED6B0 -:10A0F00019472A89B2856392E70630202800EFF0DD -:10A100001FDAAA8405E92884EFF06FE6AA890C30EB -:10A1100015C937B705002E861307A7E034009D4503 -:10A120004A85EF00B02E4E850946814559294E8556 -:10A13000EFF0CFF0F250625426854259D254B25912 -:10A140002161828089477C803C840A867C813C85B1 -:10A150007C824A85EF003056F1BF49476398E70299 -:10A1600032202800EFF0FFD7AA8469F537250020B8 -:10A170001305C50C5E2599E381446DBF183014208A -:10A1800068253C000146CA85FD246DB75147639E92 -:10A19000E70032202800EFF03F9CAA8441FD0C30FC -:10A1A00030004A85EFF0DFD871B75947639BE70469 -:10A1B00032202800EFF05F9EAA842DFD2C844A8572 -:10A1C000EFF00FE405C9584534851E23B697C20742 -:10A1D000C1831EA3D5D35C47C5D3B727002083C74F -:10A1E00067E6D9DBB727002003C5870C8545EF60FC -:10A1F000CF8289B789473EC03C840A860C307C8276 -:10A2000089BF0C300A8623100100EF00D04AADB799 -:10A210005D71A6C256DA86C6A2C4CAC04EDE52DC42 -:10A22000AA8A8831AE8432C6EFF06FD7B24501ED0D -:10A230008144B6402644268506499644F259625A1E -:10A24000D25A61618280230205002311050083C96F -:10A25000040085472A846399F900B0202808EFF0AC -:10A26000BFBFAA8405491DA09D476391F904182129 -:10A270008D47E31FF7FAB02028080549EFF05FC4C7 -:10A28000AA8409E5054681452285252E2285EFF021 -:10A290000FF608243C080147CE862686D685E12A9B -:10A2A000E30909F82285EFF06FD961B7CD47639BC9 -:10A2B000F90018219147E31DF7F6B0202808EFF0C8 -:10A2C000BFC545B7D547E395F9F6034A0500894769 -:10A2D000E310FAF6B02028080549EFF0FFD2AA846F -:10A2E00055F583570102A1EBB8841306F0035C44D3 -:10A2F000930607FCC206C182636AD600B085D946C0 -:10A3000063F6C600B486D94563EDD5002A20BAA30A -:10A310000549EF00703B03560102D2852285892C46 -:10A32000B5B7AC87BAA3D2A38EA3F6A385471CA06A -:10A33000014A0149CDB7014AF9BF7971AA8522D4F2 -:10A3400026D22221AA84280806D6EFF03FD1F24572 -:10A3500099E53DE185452285EFF08FFD75A0BC8430 -:10A3600015476395E706B8858D4763F7E7046800EE -:10A37000EFF09FCD3887DD4763FBE7008C86B7079A -:10A3800017008507100822853EC8EF00D0323C87B1 -:10A39000B88591076305F7002285EFF06FF81C86FA -:10A3A00072466C00858B1106228591CFEFF05FE637 -:10A3B00001C52285EFF0CFF6884449DD9760FA1F8A -:10A3C000E78080D341BFEFF0BFD1DDB7114763898C -:10A3D000E7001387A7FF42074183854663EBE60248 -:10A3E0003147F117B387E702372700201307C70C5F -:10A3F000BA979A2371D3A8233008A28505204DFD72 -:10A40000B8849147E318F7F4B2502254925445614E -:10A4100082802C082285DD2445F1FDB701114AC850 -:10A420002A89314526CA06CE22CC2EC6B284EF50E8 -:10A43000FFBB21C1B2459307000A1EA12EA12A84A9 -:10A44000214611058DC0A6859760FA1FE780A0F010 -:10A45000A2854A85EF50BFBD0145F2406244D24417 -:10A4600042490561828081459760FA1FE780E0F1EB -:10A47000C5B70545DDB7797126D2AA841305000258 -:10A4800006D622D42ECE32CC36CA3AC83EC6EF50BB -:10A49000FFB529C56246F2454247D246B2472A84F3 -:10A4A000130520FA08A010B02EA058A054B0130530 -:10A4B0008400614691CFBE859760FA1FE780A0E9CE -:10A4C000A2852254B2502685925445616F503FB602 -:10A4D00081459760FA1FE78040EBDDB7B250225408 -:10A4E0009254456182805845797122D406D62A84D7 -:10A4F000AE862DC73E23FC85930720066397F5049F -:10A50000B727002003D627E67E236373F600B287C1 -:10A5100013F6F70F2E2B1C2B8D8F93F7F70F81E57A -:10A52000890793F7F70FB297FD17B3C7C702FC86E9 -:10A530003E206E200824FC8401473C080146EFF0D1 -:10A540009FF3B250225445618280582FB7270020D4 -:10A5500083A7470C1207BA97FE23D1BF2EC6194610 -:10A56000814528089760FA1FE78020E2B246C9B704 -:10A57000797122D406D626D22A8499CD8147014703 -:10A58000930600062E866E200824EFF0DFEEB25010 -:10A590002254925445618280B284280059469760C3 -:10A5A000FA1FE78080DE648499E43E2048446C0012 -:10A5B0007C85EFF0CFB73C000147930600060146CB -:10A5C000D9B7797106D6814791E93E215845708601 -:10A5D0007C843C0001C73E237C853C002E866E2196 -:10A5E0000825014793060006EFF0FFE8B2504561E9 -:10A5F0008280411122C406C61C2111472A8463921D -:10A60000E7022E866E21082581470147CD46EFF0EF -:10A610009FE649466E202244B240154541016FF045 -:10A62000AFAB13F7B70F89466317D7000146EFF0BA -:10A630003FF45146C5B70D476398E7002244B24046 -:10A64000014641016FF0FFF7B24022444101828090 -:10A650009A21B146B727002071173307D702938795 -:10A66000C70CBA97D84301EBD841AAA70145D8C374 -:10A67000BA219AA7828059458280797122D44045B7 -:10A6800026D24AD006D6AA842E8931C4484419C598 -:10A690009760FA1FE78040A6232604001E20EE20C4 -:10A6A00088247C853E200147930640067C861E2434 -:10A6B0004A867C871C483EC8BE207C843C00EFF064 -:10A6C0009FDBA30E240123280400B250225492548D -:10A6D0000259456182802800314681459760FA1F02 -:10A6E000E780A0CABE20EE2088247C8401473C007D -:10A6F000930640064A86EFF01FD8C1BF797152CC4D -:10A700002A8A8A2126D206D622D44AD04ECE56CACA -:10A71000AE84EFF0CF8519E1854795A84045AA8919 -:10A7200065DC7E21E39A47FF1E2463890710542CC1 -:10A73000B72A002003A74A0C9206FD173697C207D6 -:10A740007A23C1831EA46316F70093053006EFF049 -:10A750009FD95C48A5EFC840034915001C21220978 -:10A760003369F900BE2013072900631CF702F9556D -:10A770009760FA1FE78000A4C8C02391240103C595 -:10A7800089002686D285EFF07FC9814721E1B2504A -:10A79000225492540259F249624AD24A3E85456196 -:10A7A00082809565938515C04A859760FA1FE7807A -:10A7B000608948C8C840231C2401F9559760FA1FD6 -:10A7C000E780409FBE20C8C0F917BEA0484825CDED -:10A7D000B220362C1E2C3308D60063C80707582C2D -:10A7E00083A74A0C95451207BA97BE2363C907058C -:10A7F000CC4036959760FA1FE780E0B53A2CBE2032 -:10A80000BA97C2071A2CC1833EACE397E7F003D78F -:10A81000290003C58900300078845848D2857C859A -:10A820003AC6EFF0BFBF11C548489760FA1FE780EE -:10A83000A08C232A0400232C0400F9BD99454E85E1 -:10A84000EFF08F84D1BDA545DDBF9145CDBFBA21C5 -:10A8500061CBB727002083D627E6ED4763E3E60CFC -:10A86000011122CC2E8426CAAA844840914506CEE6 -:10A870009760FA1FE78000943E20AA861CA13E2024 -:10A88000A1831CB11E203CA11E20A1833CB132201B -:10A89000C167F9171106420641826392F4042AC483 -:10A8A000314532C6EF508FF4AA85CD471DC19307BD -:10A8B00000F91CA13246F957A2463EA189475CA186 -:10A8C000B727002072A114C503C5870CEF502FF6DF -:10A8D0008147F2406244D2443E85056182808145D1 -:10A8E0002685EF40C053AA8711E9B726002003C789 -:10A8F00066E665D37D172383E6E6E1BF0947630477 -:10A90000E5021D476303E50249476302E5027D470F -:10A91000E311E5FCB726002003C766E68147D1BFF7 -:10A92000ED473E858280D1476DB791475DB7894736 -:10A930004DB701114AC831471309C5FF3307E90272 -:10A94000B727002026CA9384C70C06CE22CCBA941F -:10A95000D84029C71384C70CB727002083C667E6F1 -:10A96000854795C668849E24AA242C003AC67C8517 -:10A97000EFF0FFED11C5C8409750FA1FE780C07790 -:10A98000B147B307F902A29723A207008547F24017 -:10A990006244D24442493E85056182808147C5BFF9 -:10A9A000797126D24445372700204AD0FE2003592A -:10A9B00027E652CC06D622D44ECE56CA2A8A63F354 -:10A9C00027013E89BA284209135909019E2835CF2B -:10A9D000998F4A8463D527011394070141808945E3 -:10A9E0002285EFF0EFA2AA89CD4A31C5BE202AC642 -:10A9F00060857C84BE2899EB9E28930925001CA1C4 -:10AA00009E28A1831CB1637424058228BE28CC44EF -:10AA100022864E85BE959760FA1FE780C093035546 -:10AA20006A002C00EFF0BFE2AA8A15C54E85975048 -:10AA3000FA1FE780606CB250225456859254025936 -:10AA4000F249624AD24A45618280890759B779142E -:10AA50004204418065BFBA289E203A94FD17C20780 -:10AA600042049A28C18341809EA0A2A86376E40094 -:10AA7000F9F3FD57DCBCC1B781455285EFF0FFBF4C -:10AA80005DBF79714AD03729002052CC034A99E63C -:10AA900022D456CA5AC85EC662C406D626D24ECE44 -:10AAA0005284B72A0020054B930BF00F372C00205F -:10AAB00083A7CAE593144400BE9483C90400639B32 -:10AAC0006907DC44A5CBD84735C79A2329CBB727DC -:10AAD000002083C767E699CF2685EFF07FECAA8533 -:10AAE00015E9B727002083C757E605046351F40230 -:10AAF000A30489E6B25022544E8592540259F24979 -:10AB0000624AD24A424BB24B224C45618280A30436 -:10AB100009E6CDB72685EFF05FB68149E1BFDC3F9E -:10AB2000639A7701930520062685EFF0DF9BDC44CE -:10AB3000A38E070083475CE605041374F40F636378 -:10AB4000F4000144E31644F7C9BF4111154506C698 -:10AB5000EFF03FDE09C50545B2404101828019454D -:10AB6000EFF03FDD6DF91145EFF0BFDC6DF51D45F0 -:10AB7000EFF03FDC6DF1B727002083C757E6E9DF30 -:10AB8000B24041016FF0FFEF9E210D47F117C20760 -:10AB9000C1836363F706DC41A5C3411122C42E843F -:10ABA000854526C206C6AA84A92529C92685B92BAA -:10ABB000C167F917638FF40009ED3E2099CB162089 -:10ABC00019476393E60437270020035727E663FD00 -:10ABD000E702B727002083C767E6A285268599C7C5 -:10ABE0002244B240924441016FF07FC62244B240F9 -:10ABF000924441016FF0DFA5094582805145B24082 -:10AC000022449244410182806D45D5BF397126DAD4 -:10AC10004ED6AA84AE895D4589454AD806DE22DC37 -:10AC2000328936C63AC4EFE0BFFE35C122472A84D6 -:10AC3000014511C7B24613054400B68502979357E4 -:10AC4000850023003401A30024013CB09547FC8417 -:10AC5000B727002083C767E628A01105E88522CE24 -:10AC60002C08268595C3EFF09FBEAA8411C52285C6 -:10AC70009750FA1FE7804048F250625426854259A7 -:10AC8000D254B25921618280EFF09F9CF9BFCD442C -:10AC9000E5B7797126D24AD052CC56CA06D6BA8ABE -:10ACA00022D44ECE19472E89B284368A6395E506A2 -:10ACB0002A220944EFE0BFAB2AC635C55C4583595B -:10ACC0006500BE239EA0B247B7260020154723800B -:10ACD000570103C6960CBAA3130716001377F70F94 -:10ACE000A384E60CD0A301E70547A384E60C5147F3 -:10ACF0006317E9001547BAA0DC479A249AA7528740 -:10AD0000A686CA854E85EFF07FF02A84324515C4A9 -:10AD1000EFE0DFB209A842867400BE85AA89EFE0A1 -:10AD2000DF962A844DD12285B25022549254025982 -:10AD3000F249624AD24A45618280F945EFE09FC9F3 -:10AD4000DDB79E211CA19E21A1831CB1BE213CA187 -:10AD5000BE21A1833CB1114582809E211CA19E2170 -:10AD6000A1831CB1BE213CA1BE21A1833CB1DE2147 -:10AD70005CA1DE21A1835CB1FE217CA1FE21A18327 -:10AD80007CB1214582809E211CA19E21A1831CB102 -:10AD9000094582809E211CA19E21A1831CB1BE2158 -:10ADA0003CA1BE21A1833CB1DE215CA1DE21A183B7 -:10ADB0005CB1FE217CA1FE21A1837CB19E251CA556 -:10ADC0009E25A1831CB5294582809A218546AA87A4 -:10ADD00018A19A21218318B19A216319D700BA21A9 -:10ADE00038A1BA21218338B1114582800945631DFC -:10ADF000A700BA211945B8A3BA212183B8B3DA2133 -:10AE0000D8A3DA212183D8B382809E211CA19E2160 -:10AE1000A1831CB1BE213CA1BE21A1833CB111453F -:10AE20008280797126D24AD04ECEB2842A89AE89E8 -:10AE300029468145480022D406D636849750FA1F09 -:10AE4000E780A05464868DE43E207C82B7270020F2 -:10AE500083D727E67C845C4481CFD42F372700201A -:10AE60000327470C92069E2736973A237C857883E2 -:10AE700037B705004A85130747D9540013F6F90F71 -:10AE8000D545EFF0BFD82A8911C195E085471CA0B0 -:10AE900023020400014681452285EFF06FEDB25098 -:10AEA00022544A8592540259F24945618280228592 -:10AEB000EFE0DF98EDB737B70500B2861307A7DCE0 -:10AEC0002E8685456FF09FD401116887B7B60500BF -:10AED0004165700001489307F00F0D47938626D413 -:10AEE00099457D1506CEEFF0DFDAF24005618280EC -:10AEF000B7B60500B28701482E8611479386A6D5BE -:10AF0000C9456FF01FD937B70500B286130767D858 -:10AF10002E86CD456FF09FCF011122CC3724002023 -:10AF20001304441026CA4AC84EC606CE2A89AE89E2 -:10AF3000930404031C4081C7CE854A85829711047F -:10AF4000E31A94FEF2406244D2444249B249056198 -:10AF50008280B727002003C5D7FC411122C43724C3 -:10AF60000020937735001304C41409811CB4AA97F8 -:10AF700006C626C21CA4ADCB1305C0033385A702A9 -:10AF8000A5658505B72400209750FA1FE780800B40 -:10AF900010249307C00381453306F60223A0A410B2 -:10AFA0009750FA1FE780603E83A7041014240147DE -:10AFB00089077D566341D7022244B2409244372527 -:10AFC0000020130600038145130545104101175366 -:10AFD000FA1F6700833B92A32381070023A5070282 -:10AFE00005079387C703F9B7B24022449244410151 -:10AFF0008280011122CC2EC632C406CE2A849750FC -:10B00000FA1FE780207A2246B24511E9C167F91795 -:10B010006303F4005145F240624405618280545557 -:10B020005C218DC213F7270141456314A700154524 -:10B030007DF2C18B3D45E5D3BC2E0145E3FDB7FC58 -:10B040003145D1BFC18B0145F9F71545E9B7797194 -:10B0500026D24AD0B7240020416922D44ECE52CC09 -:10B0600056CA5AC806D6AA8901449384C414372AFA -:10B070000020930AC0037D19054B9C246364F400EF -:10B08000014525A8B307540303270A10BA97BA232A -:10B090006316270105041374F40FC5B7C8333000D5 -:10B0A00093856700EF00C1091946CE8528009750A7 -:10B0B000FA1FE780E032E31F65FDB250225492543C -:10B0C0000259F249624AD24A424B45618280B7270F -:10B0D000002083C54715C166B727002003A70710C6 -:10B0E000FD1681476395F50001463285828003583D -:10B0F00027003A866306D80003480700E307A8FE46 -:10B10000850793F7F70F1307C703E9BF411106C679 -:10B110009750FA1FE780006909C54A29B2404101EA -:10B1200082800145E5BFB727002083C64715B727B2 -:10B13000002003A707100145814711076393F6001C -:10B140008280102301C605051375F50F850793F757 -:10B15000F70F1307C703DDB7B727002003C547154F -:10B160008280372700209306471081471307471036 -:10B1700031468C4291E58A07BA9788C3014582809F -:10B1800085079106E397C7FE4D458280411106C6AB -:10B1900022C49750FA1FE780E0600DCD2A842A214F -:10B1A0008545EFF07FD7485409C59750FA1FE780CF -:10B1B000A0F422851306C00381459750FA1FE7804B -:10B1C000C01CFD573EA0230204000145B2402244AA -:10B1D000410182800945DDBF411106C69750FA1F23 -:10B1E000E780405C09C54825B240410182800145A5 -:10B1F000E5BFC167F9176305F502411122C406C610 -:10B200002E849750FA1FE780E059AA87014589C725 -:10B21000C823698C33358000B240224441018280CA -:10B2200005458280011106CE2EC69750FA1FE78091 -:10B230006057854701C95A29B24585476304B7005D -:10B240004EA98147F2403E850561828029CD0111DA -:10B250004AC84EC637290020C16922CC26CA52C42A -:10B2600056C206CE0144AA841309C914372A002005 -:10B27000930AC003FD1983478900634BF400F24031 -:10B280006244D2444249B249224A924A05618280CC -:10B290003305540383270A103E953E21638337010B -:10B2A00082940504C9BF8280B727002003C64715D2 -:10B2B000B727002083A70710C1660145890701470A -:10B2C000FD1691456313E600828003D807006309E9 -:10B2D000D80003C8A7006315B80005051375F50F5E -:10B2E00005071377F70F9387C703E9BFB727002038 -:10B2F00003C64715B727002083A6071001478147DB -:10B3000091066310E602858393C7F7FFC207C183E6 -:10B3100005456362E50285473395A70042054181F3 -:10B3200082808C2299C1CE36CD8F05071377F70F17 -:10B330009386C603F9B793F61700F1FE05058583DA -:10B340001375F50FF9B7797156CAAA8A2E8526D2D8 -:10B350004AD04ECE52CC5AC85EC662C406D622D45B -:10B36000AE84328B368CBA8B3E8AC289468997501E -:10B37000FA1FE78020433DED41657D159750FA1F88 -:10B38000E78040422A84554531C81946DE851305B9 -:10B390006400A30284019750FA1FE780C0FB835723 -:10B3A000010326A0230264013EA883574103230022 -:10B3B0005401232604025EA8230644012317340106 -:10B3C00023182401EFF09FF20AB8232A04022685ED -:10B3D000232C04028145EFF03FB40145B2502254C2 -:10B3E00092540259F249624AD24A424BB24B224C21 -:10B3F000456182804545DDB7B727002083C64715E4 -:10B40000B727002003A7071081476395F600416521 -:10B410007D1582803A861307C703835547FF6394DF -:10B42000A5002A228280850793F7F70FF9BFB72777 -:10B43000002003C84715B727002083A607104166E0 -:10B4400001477D16954811436314E8000145828049 -:10B45000BE223685638EC702CC5A9DC9BC31AC2151 -:10B4600089CD938597FD93F5F50FE372B3FE93872E -:10B47000D7FA93F7D70F89EF82809385F7FD93F57D -:10B48000F50FE3F6B8FC9387D7FA93F7D70FE1D31C -:10B4900005071377F70F9386C6037DB7B7270020FC -:10B4A00083C547154166B727002003A707107D16FF -:10B4B000814725486394F5000145828036233A850B -:10B4C000638BC600545B81CAB4329386E6FD93F663 -:10B4D000F60FE374D8FE850793F7F70F1307C7033A -:10B4E000D1BF011122CC2A84494506CEEF70AFD2DC -:10B4F0001DC12AC622859750FA1FE780A02A01CDD8 -:10B500006244B727002032460E39F24003C5F714D3 -:10B5100005616F40FFDFF24062440561828039714E -:10B520004ED652D4AE892A8A93053005414526DA93 -:10B530004AD856D206DE22DC32C63689BA8A9750FD -:10B54000FA1FE78020B0CD4429C92A848944638149 -:10B55000090432468145F08241469750FA1FE78040 -:10B56000C0E25686CE8522859750FA1FE780A0DE7E -:10B570002146630E0902CA8528089750FA1FE78002 -:10B5800080DDA28650082C085285EF303000AA8456 -:10B5900022859750FA1FE78020B6F2506254268524 -:10B5A0004259D254B259225A925A2161828081451D -:10B5B00028089750FA1FE78040DDE1B7411122C407 -:10B5C000405926C206C6AA8429CC085409C59750FA -:10B5D000FA1FE78060B2285809C59750FA1FE78024 -:10B5E000A0B1685809C59750FA1FE780E0B0285C01 -:10B5F00009C59750FA1FE78020B0685C09C59750CD -:10B60000FA1FE78060AF0325040809C59750FA1FA9 -:10B61000E78080AE22859750FA1FE780E0AD23AA2D -:10B6200004022244B72700208E38B240924403C55A -:10B63000F71441016F40DFEC411126C206C622C457 -:10B64000AE849750FA1FE780E01529C14C592A842F -:10B6500095CD83A8C50703A88507FC59B859F421DF -:10B660009221AC212685EF700FC32285EFF01FF5E4 -:10B67000EFF0DFE201CD2244B7270020B240924430 -:10B6800003C5F714854541016F403FB9B2402244DC -:10B69000924441018280011122CC06CE2A842EC61A -:10B6A0009750FA1FE78000105C5989CF9E23B2455E -:10B6B000639A870085476397F5006244F24005610D -:10B6C0006FF0DFEFF240624405618280411106C6EF -:10B6D00022C426C2EFF0BFD529C14059AA8415CC97 -:10B6E0003C209DC7B727002083A707E789C7DC4315 -:10B6F00099C32285829738309307F002631FF700C1 -:10B700002244AA20B2409244814541016FF0DFF209 -:10B71000B727002083A747E7D1BFB2402244924415 -:10B7200041018280411126C24AC006C622C4AA84B1 -:10B730002E899750FA1FE780E00605CD405955C481 -:10B740001E206394970A3C30130710026395E708A4 -:10B750003C20ADCF7C5403270408DE2B15E313F700 -:10B76000170019CF18545A23058B19CB93072002C1 -:10B770003CB0B240224492440249054541018280D6 -:10B7800013F7270001CB18545A23098B01C79307DD -:10B790004002F9BF918B81CB1C54DE23918B81C772 -:10B7A00093076002F1B7B727002083A707E7F1D31B -:10B7B000DC43E1D32285829738309307F00281453C -:10B7C000E319F7FA2685EFF03FE765B7B7270020C2 -:10B7D00083A747E7E9BF1307A0026398E700630464 -:10B7E000090013092003CA85F1BF631C09002685DF -:10B7F0009750FA1FE78000FB09C55C2193E707011A -:10B800005CA1A6854A85EF601FC3A5B7797126D2D2 -:10B810009947EC85AA842E858D4522D406D632C65A -:10B8200036C4FC84EFE0CFBE2ACE4D441DC1324663 -:10B83000A246AA85328582962A8419E52C08268597 -:10B84000EFF08FB42A8411C572459750FA1FE78034 -:10B85000A08A2685EFF0FFC82285B2502254925468 -:10B86000456182804111B7D6050022C42E862E8400 -:10B87000938666FD894506C626C24AC02A89EFF02E -:10B88000FFF80C20AA844A85EFF01FDBB240224467 -:10B8900026850249924441018280B727002083A770 -:10B8A00047E785CB9C4395C71D71A2CC86CE9841B6 -:10B8B00010082A843AC8D84185453ACA829711C5EA -:10B8C00048862A206C00EFF0FFF9F64066442561B7 -:10B8D00082808280AE8711CD785501CF142394A148 -:10B8E000143394B1342BB4A1142F584BB4B1D8C134 -:10B8F0008280414681453E851753FA1F6700E3A8C1 -:10B90000B727002083A707E791C703A38700630336 -:10B910000300028309458280372700200327C72FB1 -:10B920001DC75843AA8705450DC703A50708411140 -:10B9300006C6930605021306050C930505061305B6 -:10B9400005040297B2401375F50F41018280054549 -:10B95000828082804DC9357122CD2A840A2126CB6E -:10B960004AC94EC756C306CF52C55AC1DEDEB68A93 -:10B97000B2892E899750FA1FE780C0E2AA8431C5A8 -:10B980000C182285EFF01FF53C20138A6400A9CB28 -:10B99000EF601F852A8B014583CB5400EF605F82E7 -:10B9A000AA840C100818EF10A04608542C10EF10B1 -:10B9B000C046D288268A56C05E88D2875A8714101D -:10B9C0003010CE854A85EF20406DFA406A44DA4453 -:10B9D0004A49BA492A4A9A4A0A4BF65B0D61828063 -:10B9E000EF601F80AA8B014503CB5400EF604FFD31 -:10B9F0002ACE08540C10EF10A0412C100818EF109C -:10BA0000C041F2484DBF8280C14719C91455C14792 -:10BA100081CA785511C7BC32BD4663F3F6001C2FAE -:10BA20003E858280894779C9F1C9411106C622C481 -:10BA300026C21C312E849CA13C219CB13C31BCA16E -:10BA40005C21BCB15C31858B93968700DE2193F736 -:10BA5000F7EFD58FDEA1543193F7F7DFA20693F607 -:10BA60000620DD8ED6A1583193F6F6BF2207137754 -:10BA70000740558FDAA15C31FD769386F67F8D877E -:10BA8000858B758FAE07D98FDEA17421F99B858ACE -:10BA9000DD8ED6A178219377270013F7D6FF5D8F2F -:10BAA000DAA17C2193F647009377B7FFD58FDEA10B -:10BAB0007821DD9B4D45218BD98FDEA1EF60BFF54D -:10BAC000AA845145EF603FF5383093F4F40FC9472D -:10BAD000636097021375F50F636CE500142011473E -:10BAE000E1476367D700143005476363D700814798 -:10BAF000B240224492443E85410182803E8582804C -:10BB000015C1AA8709458DC141112E8541469385EE -:10BB1000170006C69750FA1FE780E083B240014540 -:10BB20004101828009458280828089470DC585C593 -:10BB3000411106C61831AE87194698A19305250014 -:10BB4000138517009750FA1FE780E080B2408147C5 -:10BB50003E85410182803E85828015C1AA870945C4 -:10BB60008DC141112E8541469385170006C6974029 -:10BB7000FA1FE780407EB2400145410182800945BD -:10BB800082808280894705C99DC5411106C638213A -:10BB90001431AE872207558F9AA1214693053500AF -:10BBA000138527009740FA1FE780E07AB24081476B -:10BBB0003E85410182803E85828015C1AA87094564 -:10BBC0008DC141112E8541469385170006C69740C9 -:10BBD000FA1FE7804078B240014541018280094563 -:10BBE00082808280894709C981C91831BD46E147F1 -:10BBF00063E4E60098A181473E85828015C1AA874B -:10BC000009458DC141112E8541469385170006C611 -:10BC10009740FA1FE7802074B240014541018280BD -:10BC200009458280828015C1AA8709458DC14111CD -:10BC30002E8541469385170006C69740FA1FE78078 -:10BC40008071B24001454101828009458280828035 -:10BC50001DC1AA87094595C141112E85130600040F -:10BC60009385170006C69740FA1FE780C06EB24062 -:10BC700001454101828009458280828015C1AA87E1 -:10BC800009458DC141112E8541469385170006C691 -:10BC90009740FA1FE780206CB24001454101828045 -:10BCA0000945828082801D71A2CC2A84084586CEF7 -:10BCB000A6CA23060100042135479387F4FF93F7B2 -:10BCC000F70F6364F70C37D706008A071307C72BF3 -:10BCD000BA979C4382870C08EFF0DFD4C947631002 -:10BCE000F50299475C862A206C00EFF0BFB7F6405A -:10BCF0006644D644256182800C08EFF01FEC31C504 -:10BD00001C86F5F32A20EFF0CFFDD5B70C08EFF035 -:10BD1000FFEEF5B70C08EFF0FFECD5B70C08EFF02D -:10BD20003FDEF1BF0C08EFF0FFE5D1BF0C08EFF0EC -:10BD3000DFE2F1B70C08EFF05FDFD1B70C08EFF0EE -:10BD40009FEE75BF1C312308F1002A209750FA1F7F -:10BD5000E78040A5A14705C15825631AF702B72718 -:10BD6000002003A707E79D4719C7184309C7100814 -:10BD7000A6850297AA875C8661B70C08EFF05FED95 -:10BD8000BDBF0C08EFF09FEF9DBF9D47A1BFB72738 -:10BD9000002003A747E7C1BF011122CC06CE26CA67 -:10BDA0004AC84EC61821930720092A84631FF7103A -:10BDB0001C313947639FE7085621096761078147AE -:10BDC000639DE60EB72400209389C4E603A509000D -:10BDD0009384C4E67DC10C4403C90500631D0900BA -:10BDE0001C2185052146B9C729059740FA1FE78020 -:10BDF00080569C40A9CF4945EF404F9F2A841DC1E2 -:10BE0000930710FC1CA1A30025018C4009054146A5 -:10BE100089059740FA1FE78000549C40A28588332B -:10BE2000EF40EFA088409740FA1FE780E02C23A066 -:10BE3000040031A809059740FA1FE780C051EF20A0 -:10BE4000B07405495DF583A7090023802701854764 -:10BE5000ADA01307E0036398E70838219547631CFA -:10BE6000F7024A21EFF04FB79147E312F5FEB727EB -:10BE7000002083A747E7E1DF03A38700E30903FC72 -:10BE800072244A20930564006244F240D24442493D -:10BE9000B24905610283A147631CF7006C204A2068 -:10BEA0006244F240D2444249B24905616FF09F8733 -:10BEB000930600038147E303D7FEF2406244D24475 -:10BEC0004249B2493E85056182809306000A814756 -:10BED000E315D7FEEFF03FDD084435D99740FA1F50 -:10BEE000E7808021ADB78147C9BF011126CA06CEC0 -:10BEF00022CC89440DCD85CDAA842E8468008D4541 -:10BF0000EF509FFF1C872685228693F7F70393E760 -:10BF100007046C005C87EF20400FAA8409E90D46F6 -:10BF20006C00130534009740FA1FE780C042F240CE -:10BF300062442685D244056182805D714EDE86C6EC -:10BF4000A2C4A6C2CAC052DC56DA5AD85ED6894903 -:10BF500045CD5DCA138B4500420B135B0B01AE8AC6 -:10BF60002A8A930530055A85B2849740FA1FE780E4 -:10BF7000600D2A84CD4949C9EF606FA82A89568689 -:10BF8000D285935A8900135A0901937BF90F13053F -:10BF9000440093FAFA0F137AFA0F13598901974064 -:10BFA000FA1FE7808046A301740123015401A30016 -:10BFB000440123002401EF60EFA3AA85414608084D -:10BFC0009740FA1FE7806044214734005A86A285D3 -:10BFD0000808EF20002AAA891DE121462C002380B1 -:10BFE0007401A380540123814401A381240113859A -:10BFF00044009740FA1FE7804041EF600FA122857F -:10C000009740FA1FE780400FB64026444E8596447D -:10C010000649F259625AD25A425BB25B6161828030 -:10C0200001114AC82A892E8506CE22CC26CA2EC6E0 -:10C030009740FA1FE780007745C5405945C45C30FA -:10C040000947B24593F6B70F6386E60011474945A5 -:10C05000639CE7041E2009456398B7049304840099 -:10C060004146CA8526859740FA1FE780C02E414683 -:10C07000CA85130584019740FA1FE780C02D3C3024 -:10C0800045476391E7041306C4033285C14532C6B0 -:10C09000EF509FE632469306C402A6852285EFF054 -:10C0A0007F8B3C2081EB0145F2406244D2444249FF -:10C0B0000561828022856244F240D2444249056192 -:10C0C0006F00B07913071005E39FE7FC3C20E1DF28 -:10C0D00022856244F240D244424905616F00307EBD -:10C0E0000945D9B74945C9B739C9011126CA06CE8C -:10C0F00022CCAA8409459DCD0D4628002E848D05AD -:10C100009740FA1FE78020251C8570002C0093F7CC -:10C11000F70393E7070426855C85EF10106F19E994 -:10C120000D46A28568009740FA1FE780602B7D15B9 -:10C130003335A000F2406244D24405618280094553 -:10C140008280011152C42A8A32854EC656C25AC014 -:10C1500006CE22CC26CA4AC82E8BB28AB689974010 -:10C16000FA1FE780206409ED8944F2406244268585 -:10C170004249D244B249224A924A024B0561828026 -:10C180005C592A89C544F5F34D45EF60DF88137487 -:10C19000F50F5145EF603F88E38809FC83C78901AB -:10C1A000E3E487FC1375F50FE360F5FC93053005B8 -:10C1B000130540089740FA1FE780C0E8232AA90228 -:10C1C0002A84CD445DD11306400881459740FA1F6B -:10C1D000E780A01BA30104002301440123026401A2 -:10C1E000231054012326340723240402A30204004D -:10C1F0008144E30C0AF62285EF007060AA8435D5ED -:10C200004A85EFF0AFBB95B7397122DC06DE26DA3E -:10C210004AD84ED652D456D25AD05ECE62CC66CAD6 -:10C220000944630D0610630B0710AA8B3A89368BFD -:10C23000B28A2E8C9740FA1FE780C0562A8A514452 -:10C24000630E050E9305300541459740FA1FE780C0 -:10C2500060DFAA894D447DC18344190083472900CA -:10C26000A204C207BE9483470900BE9483473900E5 -:10C27000E207BE9483278A0263E697007D5709444C -:10C280006399E70A63070C0083474A000544898BDA -:10C29000CDC3930C4B00214681450A85C20C9740C3 -:10C2A000FA1FE780800E93DC0C019305300566854C -:10C2B0009740FA1FE78000D92A8C4D443DC95A8621 -:10C2C000D68511059740FA1FE78020141146CA85CC -:10C2D00062859740FA1FE7804013414693058A0123 -:10C2E0004E859740FA1FE780401221478A8666866E -:10C2F000E2854E85EF10F0772A841DE521468A8578 -:10C3000028009740FA1FE780401021469305490016 -:10C3100028009740FA1FE780A00C8547631EF502AE -:10C32000A6855E85EF607FA562859740FA1FE7804E -:10C33000A0DC4E859740FA1FE78000DC2285F25092 -:10C340006254D2544259B259225A925A025BF24B69 -:10C35000624CD24C216182800544F9B77971939780 -:10C36000050122D406D626D24AD04ECEC1872E84CD -:10C3700063D50704B72400209384C414A8309740E1 -:10C38000FA1FE78040E82AC609CDEFF0FFA0B245CA -:10C3900011E5A8209307F00F631EF5002E85EF30FE -:10C3A0003FC22165218DB250225492540259F24964 -:10C3B00045618280EF30BFC7EDB793F7150091C795 -:10C3C000EFF0CFB013451400F9BFA1E10145E1BF83 -:10C3D000850493F4F40FEFE03FD8E3F9A4FE33951E -:10C3E00099001319050113590901B3772401EDD3FD -:10C3F0004A85EFF06F80C167FD176305F500DD45E5 -:10C40000EFF08FA33345240179BF85448549E1B717 -:10C41000B727002023A607E6B727002023A807E6B2 -:10C4200037D70500B72700201307C79B23AA07E6C5 -:10C43000B727002023A0E71437C705009387071408 -:10C4400013070771D8C337B705001307E75198C71B -:10C4500037E70500B72700201307078423AAE71250 -:10C4600037D70500938747131307A73ED8C337D79D -:10C4700005001307E76898C78280B727002083C7A5 -:10C480000715A18B89C7B727002093870714372783 -:10C4900000202328F7E601458280B727002083C7C4 -:10C4A0000715918B89C7B727002093874713372734 -:10C4B0000020232AF7E601458280011106CE2AC614 -:10C4C000EFF01FF53245B72700209945A387A71441 -:10C4D000EFD0AFEEF24037B5050013056569056191 -:10C4E0006FE03FC81C5581C7A1473E85828001117E -:10C4F00022CC26CA2A84AE84130500049305300595 -:10C5000006CE9740FA1FE780E0B308D475C1130642 -:10C510000004A6859740FA1FE780E0E378543C2B9F -:10C5200093F68700F5CA1454B422A18AF5C683276E -:10C530000408DDEF93053005130500109740FA1F3E -:10C54000E78040B02320A4088D4745C5A30204001E -:10C5500078549C30143391EB91EABC20918BC5E365 -:10C560003C2B918BC9EF854701A881C6214758B064 -:10C5700089C75C3093E707015CB06C54BC29858B9C -:10C5800099CB1C540547BC238D8B6396E7007C2018 -:10C5900093E717007CA08327040889C77C2093E7D2 -:10C5A00087007CA05C300547639AE70A9304840007 -:10C5B0004146814526859740FA1FE78000DD4146C8 -:10C5C0008145130584019740FA1FE78000DC1306BC -:10C5D000C4033285C14532C6EF501F928327040839 -:10C5E0003246B9CF2285EF00902D9307000525C56F -:10C5F000A147F2406244D2443E85056182809C207E -:10C6000014231547B387E70237D70600130707310E -:10C61000BA97B6979C238DB7943089C6143399C2C4 -:10C62000E14799BFB420D58F918B95DF9C201423CF -:10C630001547B387E70237D706001307472FC9BF4F -:10C640009306C402A6852285EFF0CFB02285EF00C5 -:10C65000D020C14751FD3CB0814761BF13F787012E -:10C660002DCFC18B930484004146A9C78905268537 -:10C670009740FA1FE78020CE41468145130584018B -:10C680009740FA1FE78060D07C201306C4033285F0 -:10C6900093E747007CA0C14532C6EF50FF85832752 -:10C6A0000408324699CF2285EF00702193072005B8 -:10C6B0005DD13DBF814526859740FA1FE780E0CCDC -:10C6C00065BF9306C402A6852285EFF0AFA8228538 -:10C6D000EF00B018C94741D121BF09478545638A9A -:10C6E000E700114789456386E70019476396E7002D -:10C6F0008D450A20EF600FD37C2093E747007CA094 -:10C700008327040881C793071005B1B7C547A1B7B0 -:10C710003C2163880722797122D406D626D24AD0DA -:10C720003C31130750052A84639DE70603497500D1 -:10C730001306C503C14593573900AA97328584274C -:10C7400032C6EF506FFBB727002083A7C72FA1C7C2 -:10C750009C47B1C30325040893767900B3D6D4402F -:10C760003246858A93050504180893E606081305E2 -:10C77000050882971375F50F19ED41460C0813054E -:10C78000C4029740FA1FE78000BD2285EF00F00C3D -:10C79000930760053CB0B25022549254025945614F -:10C7A0008280130710026392E7021C5503270508D5 -:10C7B000DE234DEF13F7071055CB78555A2B13771F -:10C7C00007104DC7930770023CB03C30130770024E -:10C7D0006394E70C3C5885E3930530057145974019 -:10C7E000FA1FE780208628D819C5714681459740F1 -:10C7F000FA1FE78080B92458B1C4BC2C89E7228590 -:10C80000EFF08FA0A8AC2858814541469740FA1F09 -:10C81000E780A0B728583D472C2D9387F5FF93F765 -:10C82000F70F6364F700EF502FEDEF309F973C5800 -:10C83000A1458AAB13852701EF500FEC2C580A2035 -:10C84000EF00F030930780020A203CB09740FA1FB7 -:10C85000E78040F5414611C17225B727002003C586 -:10C86000F71406068545EF30BFAA35B713F7072042 -:10C8700009CB78545A2B1377072001C793079002EE -:10C88000A1B793F70740B1D37C54DE2B93F7074051 -:10C890008DDF9307B0020DBF130780026397E70295 -:10C8A0003C5899C78E2B0A2013862701EF00902F42 -:10C8B0001C54DE2313F7072029CF78545A2B137703 -:10C8C000072021CB9307900241B713079002639B87 -:10C8D000E700EF509F91AA850A20EF00B02B930745 -:10C8E000A0029DB71307A0026390E704EF505F8F8B -:10C8F000AA85854701456384F500814505452EC617 -:10C90000EF501F8C2A86B2450A20EF0050251C5498 -:10C91000DE2393F707409DC37C54DE2B93F707403B -:10C9200091CF9307B0020DB71307B0026398E700E9 -:10C93000EF505F8CAA850A20EF00302A9307F0029F -:10C9400091BD8280411122C4405926C206C67C5442 -:10C95000AA84DE2B13F7071011C718545A23137734 -:10C9600007100DE313F7072011C718545A23137744 -:10C97000072009EB93F707408DCB1C54DE2393F778 -:10C98000074085C7930710023CB02285EFF05FD8BF -:10C9900038309307F002631EF7002244AA20B24009 -:10C9A0009244814541016FE03FC99307F0023CB0DA -:10C9B000EDB7B2402244924441018280397122DCB9 -:10C9C000405926DA4AD84ED606DEAA89AE84328984 -:10C9D000630F04382A211E206384A700A14421A0EC -:10C9E0003C2091EB9D44F250625426854259D2542A -:10C9F000B259216182809387E5FF93F7F70F2D47A6 -:10CA0000E362F7FE37D706008A071307C732BA97E3 -:10CA10009C438287B2852285EFF0DFACAA84E1B720 -:10CA20004146CA851305C4049740FA1FE780A092C7 -:10CA30002285A92DAA8411C1A1443C3013074005C9 -:10CA40006396E700930790053CB071BF130760053C -:10CA50006395E7009307A005C5BFCD47F5B79309D8 -:10CA6000C4054E854146CA859740FA1FE780A08ECF -:10CA70000325040845C53C30130790056398E7007B -:10CA80002285712D9307E0053CB079A01307A0051E -:10CA90006390E7087C3013D73700229714279D8BCB -:10CAA000B3D6F640B727002083A7C72F858A93E621 -:10CAB00006F893F6F60F9DD39C478DD39305050892 -:10CAC00018084E861305050482979374F50FE397B3 -:10CAD00004F041460C081305C4049740FA1FE78090 -:10CAE00020907C304D47850793F7F70F7CB0637734 -:10CAF000F70022852D259307E005B9B7B727002059 -:10CB000003C5F7148545EF304FF1930750052DBF4E -:10CB10001307C005E386E7F68144F1B513098400E5 -:10CB20004E86CA8522851408EFE0DFE24146930570 -:10CB3000C40408089740FA1FE780808AE30505EAE5 -:10CB40008A861306C403CE854A85EF10206905E165 -:10CB50002285EFE07FEBB72700202A8783A7871481 -:10CB60000A20814601468A858297AA8411C1A14480 -:10CB700093072002D1BD0C22EFE01FAC71BF38300B -:10CB800093072002E310F7E67C5889EB9305300504 -:10CB900071459730FA1FE780E04A68D86858E30388 -:10CBA00005E44146CA859730FA1FE780C07A645889 -:10CBB0002285EFE07FE5A8AC93073002F1B538306D -:10CBC00093073002E310F7E21E22685821469305CE -:10CBD00029001EA949059730FA1FE780C0777C54C9 -:10CBE000DE2B13F7270035C318545A23098B31CF96 -:10CBF0009307400251BD383093074002E314F7DE3B -:10CC00003C5C81EB854559459730FA1FE7808043AE -:10CC100028DC285CE30205F04146CA859730FA1FFC -:10CC2000E78060739307500285B538309307500250 -:10CC3000E31AF7DA285C1946930519004105973085 -:10CC4000FA1FE78040717C54DE2B918B95CF1C54EA -:10CC5000DE23918B95CB930760023DB57C5C89EB1D -:10CC60009305300551459730FA1FE780A03D68DCF9 -:10CC7000685CE30505D64146CA859730FA1FE78010 -:10CC8000806D7C5C7D5798CB4E85EFF0BFCB69B54E -:10CC90000325040813060004CA851305050497300C -:10CCA000FA1FE780406B2285EFE01FC73C30130777 -:10CCB00000056395E70093074005F9B313071005D6 -:10CCC000639CE700B727002003C5F7148545EF30C4 -:10CCD000CFD4930750054DBB13072005E39EE7E231 -:10CCE000B727002083A7C72FE38A07CE9C47E38797 -:10CCF00007CE83250408930484001808938505084B -:10CD0000814626862E8582970A201008A685EF5038 -:10CD10001FFA9307B0058DBB38309307E005E31386 -:10CD2000F7CC8325040841464A859730FA1FE780EF -:10CD3000206BAD44E30905CA032504084146CA85B2 -:10CD40009730FA1FE78020612285EFE0FFCBB727FD -:10CD500000202A8783A787142C580A208146014681 -:10CD60008297AA8411C1A14493071002F1B9AD477B -:10CD7000E394F5DA14222E21130665000821EF5002 -:10CD8000EFFB59BB894759C2D1C108A29C211CB2F3 -:10CD90009C313CA2BC213CB2BC31A30206005CA287 -:10CDA000DE21A183858B5CB2DA211377072001C7CE -:10CDB00093E727005CB2DE2193F7074089C75C3216 -:10CDC00093E747005CB2DE211397470163560700E3 -:10CDD0005C3293E787005CB223030600DC21858B7D -:10CDE0007CA2DA21098B01C793E727007CA2DE2110 -:10CDF000918B89C77C2293E747007CA2DA21814787 -:10CE0000218B09C778221367870078A23E8582802C -:10CE10002E86AA8505456FF0FFF62E86AA85094560 -:10CE20006FF05FF6894785C51DC1411106C6AE8703 -:10CE30000D47AA8598A31385170041469730FA1F1E -:10CE4000E7806051B24081473E85410182803E8546 -:10CE50008280894785C51DC1411106C6AE8711472D -:10CE6000AA8598A31385170041469730FA1FE780DB -:10CE7000804EB24081473E85410182803E8582805E -:10CE8000894785C51DC1411106C6AE871947AA85C8 -:10CE900098A31385170041469730FA1FE780A04BEF -:10CEA000B24081473E85410182803E85828089472C -:10CEB00095C90DC9411106C61D4798A11A21AE8713 -:10CEC000214698B11A212183B8A193052500138525 -:10CED00037009730FA1FE7800048B24081473E850F -:10CEE000410182803E858280894785C51DC14111EF -:10CEF00006C6AE872147AA8598A313851700414629 -:10CF00009730FA1FE7802045B24081473E854101B6 -:10CF100082803E85828089479DC515C5411106C620 -:10CF2000254798A11821AE87194698B19305150099 -:10CF3000138527009730FA1FE780E041B240814710 -:10CF40003E85410182803E858280894785C51DC11D -:10CF5000411106C6AE872947AA8598A313851700F5 -:10CF600041469730FA1FE780003FB24081473E8537 -:10CF7000410182803E85828089478DC505C541116A -:10CF800006C6AE873147AA8598A3138517001306F6 -:10CF900000049730FA1FE780003CB24081473E858D -:10CFA000410182803E858280894785C51DC141112E -:10CFB00006C6AE873547AA8598A313851700414654 -:10CFC0009730FA1FE7802039B24081473E85410102 -:10CFD00082803E858280894799C511C595479CA16D -:10CFE0001C219CB181473E858280894799C511C526 -:10CFF000AD479CA11C219CB181473E8582800DC517 -:10D000005D718A8586C6A2C42A84EFE0BF8C0A209F -:10D01000B7D605000A86938606E19D45EFE00FFF2F -:10D02000B640264461618280054582800DC55D71F0 -:10D030008A8586C6A2C42A84EFE0DF890A20B7D693 -:10D0400005000A869386A6E19D45EFE02FFCB640D9 -:10D05000264461618280054582805D71A2C493058A -:10D06000C5022A8441460A8586C69730FA1FE780A2 -:10D07000802E0A20B7D605000A86938646E2C5456B -:10D08000EFE0CFF8B6402644616182805D71A2C4B2 -:10D090009305C5032A8441460A8586C69730FA1F40 -:10D0A000E780602B0A20B7D605000A86938626E51E -:10D0B000C545EFE0AFF5B640264461618280B727F1 -:10D0C000002083A7C72FA9CB9C435D71A2C486C64D -:10D0D0002A841305E00F8DCF032504089305050C62 -:10D0E00013050508829783250408130600040A85A2 -:10D0F000938505089730FA1FE780E0250A20B7D608 -:10D100000500938686F70A8693051004EFE00FF07A -:10D11000B6402644616182801305E00F8280317140 -:10D1200022DD2A840A2126DB06DF4AD94ED752D5D2 -:10D1300056D35AD15ECF62CD9730FA1FE780806612 -:10D140003C58AA8489EB9305300571459730FA1F46 -:10D15000E78040EF28D82858CD4705C9714681455A -:10D160009730FA1FE7806022032904072285EFE049 -:10D17000BF89230DA9003C203729002063810712B5 -:10D180008327C92F85E39307E00FFA506A54DA54D6 -:10D190004A59BA592A5A9A5A0A5BFA4B6A4C3E853E -:10D1A0002961828083AB0701E38F0BFC032B04080A -:10D1B000EF500F832A8C0145EF508F80DC303858B8 -:10D1C000130B0B029309C403130AC405938A64006A -:10D1D0003AC0B337F0002A87930801045688B33663 -:10D1E00080015286CE855A85829B1C54B823230722 -:10D1F000E1029833A306E1029C232306F102832770 -:10D20000C92FD1D303AB4701E30F0BF6DC30B337A3 -:10D21000F0003ECEEF40DFFCAA8B0145EF405FFA05 -:10D2200003270408F2472AC03AC2B338700156886F -:10D230007810930684004E86D2858800029B7C5429 -:10D24000B82B2305E1029833A304E1029C232304B5 -:10D25000F1028327C92F03A94701EF407FF82A8BEA -:10D260000145EF40FFF583C854009C082A883EC260 -:10D27000B3381001B3376001381093068401528629 -:10D28000CE8556C0880002990A20B7D6050093863D -:10D2900086FA9008C545EFE06FD7AA87FDB5D43070 -:10D2A0008327C92F032B0408B336D00083AB0701B3 -:10D2B00036CEEF40FFF22A8C0145EF407FF03C581C -:10D2C000F246130B0B02130AC4059309C403938A95 -:10D2D00064002A88930801044E86D2853EC0568792 -:10D2E000B33780015A85829B1C54130B0103B8236A -:10D2F0002307E1029833A306E1029C232306F102EF -:10D300008327C92F83AB4701DC30B337F0003ECE13 -:10D31000EF401FED2A8C0145EF409FEAF2472AC0FB -:10D32000B338800156887810930684004E86D285E3 -:10D330005AC28800829B8325040841465A8597304B -:10D34000FA1FE780E009AD47E31B05EE3DBDB7D608 -:10D3500005002E86938606E8C5456FE02FCB5D71EC -:10D36000B287A2C44C802A84BE85130511001946D9 -:10D3700086C69730FA1FE78000FEB7D605000A86FA -:10D380002285938666F1A145EFE04FC8B64026445A -:10D3900061618280B7D605002E86938686EEC545EC -:10D3A0006FE0CFC65D71B287A2C46C802A84BE854F -:10D3B00013052100214686C69730FA1FE780A0F9A1 -:10D3C000B7D605000A8622859386E6EAAD45EFE0EA -:10D3D000EFC3B640264461618280B7D605002E8631 -:10D3E0009386A6F4C5456FE06FC2797122D406D644 -:10D3F00026D23C31130730052A846381E7081307DE -:10D4000050056392E7089307A0053CB17C31C14504 -:10D4100013D737002A9714279D8B1305C503B3D65E -:10D42000F640858A93E606F893F6F60F36C6EF4087 -:10D43000BFACB246B727002083A7C72F9DCB9C4720 -:10D440008DCB0325040818081306C40393050504AF -:10D450001305050882971375F50F01ED1305C40236 -:10D4600041460C089730FA1FE780E0EE2285EFF086 -:10D47000DFBEB250225492544561828093079005DA -:10D480003CB1814645BF130710026391E7027C550A -:10D4900003270508DE2B71EF13F7170079CB18551A -:10D4A0005A23058B79C7930720023CB03C30130701 -:10D4B00020026396E70E3C5889EB930530057145D1 -:10D4C0009730FA1FE78000B828D82458ADCC2285C1 -:10D4D000EFE08FD3A8AC2858814541469730FA1F1A -:10D4E000E780A0EA28583D472C2D9387F5FF93F756 -:10D4F000F70F636DF702B727002083C77730C9CFD6 -:10D500004146814508089730FA1FE78000E8B725B3 -:10D51000002019469385C50108089730FA1FE78057 -:10D5200080E330580C082E85EF80C048EF207FC77D -:10D530003C58A1458AAB13852701EF40FF9B2C582F -:10D540000A20EFF0DFE0930730020A203CB097306A -:10D55000FA1FE7802025414609C57E2513D617000E -:10D560003E96B727002003C5F7148545EF205FDA04 -:10D5700009B713F7270001CB18545A23098B01C7A9 -:10D58000930740021DB7918B95D31C54DE23918BDA -:10D5900091DF9307600211BFEF401F9641BF130751 -:10D5A00030026396E7023C5899C78E2B0A201386F7 -:10D5B0002701EFF03FDF7C54DE2B13F7270021CB50 -:10D5C00018545A23098B21C793074002BDBF130784 -:10D5D0004002639BE700EF405FC1AA850A20EFF09D -:10D5E0007FDB9307500295B713075002639DE70254 -:10D5F000EF401FBF15E5814505452EC6EF405FBCD6 -:10D600002A86B2450A20EFF09FD57C54DE2B918B01 -:10D610008DC71C54DE23918B8DC39307600235B7F1 -:10D6200085450145D9BF130760026398E700EF40C5 -:10D630007FBCAA850A20EFF05FDA7C540327040838 -:10D64000DE2B09EF13F7071011CB18545A23137769 -:10D65000071009C7930770023CB021BD13F70720DC -:10D6600009CB18545A231377072001C79307900258 -:10D67000E5B793F7074089CB1C54DE2393F70740A7 -:10D6800081C79307B002C9BF9307F002F1B73971A0 -:10D6900022DC26DA4ED652D406DE4AD8AE89328A49 -:10D6A000AA849730FA1FE780E00F40594146814530 -:10D6B0000A859730FA1FE78040CD35C4035904002E -:10D6C00063139906383093071002631FF70283270C -:10D6D000040899CF2C58A1C94A85EF10E06B054585 -:10D6E000F2506254D2544259B259225A2161828076 -:10D6F0008A861306C4059305C40313058400EF004E -:10D70000F02D15E18A85C9BF2C5891CD9E29639CC7 -:10D7100047012146C9054E859730FA1FE78040CC66 -:10D7200019C12C5855BF26859730FA1FE78080070E -:10D730002A84054555D44C54B1C59E2963944705A8 -:10D740002146C9054E859730FA1FE78060C9854795 -:10D75000631AF502B727002083C737DD89C74C5409 -:10D76000BC3D639AA70CBD452685EF10605DB727C9 -:10D77000002083A7C7FE0145A5D71D45894582978F -:10D780000145B9BFB727002003C78730B72900205C -:10D79000938989FB058B3E8929C3B7270020583020 -:10D7A00083C70730631BF702B7250020194693850E -:10D7B0001530130564009730FA1FE78060C2854773 -:10D7C000631DF50083A7490381C791451D458297D5 -:10D7D000BD452685EF10C05619B7372700200347EF -:10D7E000773083A7490331CB03478930098B09CBB5 -:10D7F00081C795451D4582972685EF10205AC5B5EE -:10D8000081C78D451D45829741468145080897305F -:10D81000FA1FE78080B7B725002019469385C50118 -:10D8200008089730FA1FE78000B30C082E850A8697 -:10D83000EF8040188A8526854DB58545C5FF6DBFAB -:10D84000797122D440594AD04ECE52CC06D626D237 -:10D85000AA892E8A3289630F04602A211E20638CD4 -:10D86000A700A144B2502254268502599254F2498D -:10D87000624A45618280242099C09D44E5B7938720 -:10D88000F5FF93F7F70F3147E369F7FE37D7060047 -:10D890008A071307C735BA979C4382871C54F1F354 -:10D8A00093053005130500049720FA1FE78080795F -:10D8B00008D445D903470900914763F4E7008D4434 -:10D8C00055B7034719008547E3EBE7FE130600044D -:10D8D000CA859730FA1FE78000A80C547054A30241 -:10D8E0000400D4415C4A858AFD8E5E2AF99BD58F5F -:10D8F0005EAAD841544AF59B0583058B8582F98E33 -:10D900008606DD8E56AADC41584AED9A8983858BBE -:10D9100009837D8F0A07558F5AAAD4415C4A5D9BC3 -:10D920008D82858A8D83F58F8E07D98F5EAAD84127 -:10D93000544A93F7F7EF2183058BA182F98EA20653 -:10D94000DD8E56AADC41584AA583858B25837D8FC1 -:10D950009317970013F7F6DF5D8F5AAAD4415C4AFC -:10D96000A982858AA983F58F9396A7009377F7BF3D -:10D97000D58F5EAAD441584AAD82858A2D83758F92 -:10D98000FD769386F67F2E07F58FD98F5EAA3C2A07 -:10D9900003250408A18BF1CFBC21A18BF9CBE312A5 -:10D9A00005EC93053005130500109720FA1FE7805A -:10D9B00060692320A40801D57C54A3020400034716 -:10D9C0001900943399E63DCF5C3093E707015CB0D2 -:10D9D00021A0A1475CB06DFB2285EFF02FE56C54D0 -:10D9E000BC29858B89CB1C54BC238D8B89C77C209B -:10D9F00093E717007CA08327040889C77C2093E75E -:10DA000087007CA05C3005476398E70A4146814562 -:10DA1000130584009730FA1FE7802097414681451F -:10DA2000130584019730FA1FE7802096C14513053E -:10DA3000C403EF406FCC83270408ADCF93070005E4 -:10DA40003CB00DB5B82B118B19E703472900118B9A -:10DA500019E38547ADBF9C23154783460900B3876B -:10DA6000E70237D7060013070731BA97B6979C230A -:10DA7000B9BF19C59720FA1FE78000682320040862 -:10DA80007C54983311C70347190019C3E14781B784 -:10DA9000B82B118B09E703472900118B5DDB9C2311 -:10DAA000154783460900B387E70237D706001307F7 -:10DAB000472F65BFC14769B713F7870131CBC18BCA -:10DAC0001305840041468DCF89059730FA1FE78002 -:10DAD000808841468145130584019730FA1FE7800D -:10DAE000C08A7C20C1451305C40393E747007CA08E -:10DAF000EF408FC08327040891CB9307200589B797 -:10DB000081459730FA1FE7804088E1B7C9470DBFCC -:10DB100009478945638AE700114785456386E70021 -:10DB200019476396E7008D450A20EF50AF8F7C20A0 -:10DB300093E747007CA08327040881C7930710055B -:10DB400001B7C547F5BD4146CA851305C4049730E2 -:10DB5000FA1FE7804080383093076005631CF700A8 -:10DB6000B727002003C5F7148545EF200FEB930777 -:10DB70005005F9B59306C4021306C4039305840047 -:10DB80002285EFD03FDD2285EFF02FCDAA8411C191 -:10DB9000A144CD4775B59309C4054E854146CA8554 -:10DBA0009720FA1FE780207B0325040869C53C30D5 -:10DBB000130790056398E7002285EFF02FCD9307B8 -:10DBC000E005BDBD1307A0056399E706B727002050 -:10DBD00083A7C72FE38307CA03A88700E30F08C8FA -:10DBE0007C30930505084E8613D7370022971427FB -:10DBF0009D8B0A87B3D6F640858A93E606081305FF -:10DC00000504029841468A851305C4049720FA1F2B -:10DC1000E780007D11E1D2842285EFF02FC77C30B0 -:10DC2000CD461307E005850793F7F70F7CB063E453 -:10DC3000F6001307600538B035B11307C005E3934C -:10DC4000E7C2B727002083A7C72FE38807C29C47F6 -:10DC5000E38507C293050508130984000A878146F6 -:10DC60004A862E8582970A200A86CA85EF502F841D -:10DC70009307B005F1B38A864E869305840022850A -:10DC8000EFD05FCD41469305C4040A859720FA1F63 -:10DC9000E78000758547D284E316F5BC2285EFF056 -:10DCA000EFBEAA84E31F05BA9307100251BB3830B8 -:10DCB00093077002E313F7BC7C5889EB930530059A -:10DCC00071459720FA1FE780E03768D86858E30667 -:10DCD00005BACA8541469720FA1FE780C067032925 -:10DCE00044072285EFD05FD2230DA900930780025D -:10DCF00081BB383093078002E311F7B81E226858C1 -:10DD00002146930529001EA949059720FA1FE7809F -:10DD100080647C54DE2B13F7072025C718545A2340 -:10DD20001377072039CF9307900219BB3830930738 -:10DD30009002E314F7B43C5C89EB93053005594538 -:10DD40009720FA1FE780003028DC285CE30705B243 -:10DD50004146CA859720FA1FE780E05F9307A0023B -:10DD6000C5B138309307A002E319F7B0285C194613 -:10DD70009305190041059720FA1FE780C05D7C5488 -:10DD8000DE2B93F70740A1C71C54DE2393F707400F -:10DD90009DCF9307B0026DB138309307B002E31EF8 -:10DDA000F7AC7C5C89EB9305300551459720FA1F51 -:10DDB000E780402968DC685CE30505AA4146CA851E -:10DDC0009720FA1FE78020597C5C7D5798CB03D5BC -:10DDD00029008145EFD05F8671B438309307F00495 -:10DDE000E3F1E7A803250408E30D05A613060004E4 -:10DDF000CA85130505049720FA1FE780C0552285C0 -:10DE0000EFF0EFABAA842285EFD01FB13C301307AF -:10DE10000005639FE700B727002003D6E90003C58C -:10DE2000F71485450606EF20AFCE9307300509B9F4 -:10DE3000130710056395E7009307600511B11307F9 -:10DE40002005E391E7A29307C005DDBE38309307B4 -:10DE5000E005E318F7A0032504084146CA8597208A -:10DE6000FA1FE780404F2285EFF06FABAA842DBDEB -:10DE70000C228DB785478144E396F59E0328460022 -:10DE80003C32382214322E2110220145EF40CFE1DE -:10DE9000D1BA8147C1463307F500B388F50018238E -:10DEA00083C808003308F6008507334717012300AD -:10DEB000E800E392D7FE82800147BD471308F00FC8 -:10DEC0003306F5001422B388F500FD178606558F3A -:10DED0002380E800182293F7F70F1D83E39207FFD2 -:10DEE00082808147930800F8414893F6F70F338703 -:10DEF000F50063FAC600B306F500942214A3850763 -:10DF0000E39507FF82806395C60023001701C5BF14 -:10DF100023000700EDB701114AC856C22E89AA8A0C -:10DF200093053005414506CE22CC26CA4EC652C4C2 -:10DF3000328A9720FA1FE780E010AA849305300503 -:10DF400041459720FA1FE780E00F2A84CD49A5C4F8 -:10DF500031CD414681459720FA1FE7800043268650 -:10DF6000A2855685EF701025AA8929E183870400D0 -:10DF700063D30706A2852685EFF01FF4B7D5060008 -:10DF80004A86938505392285EFF0BFF083070900A3 -:10DF900063D80704A2854A85EFF01FF2B7D50600C3 -:10DFA0005286938505392285EFF0BFEE26859720AE -:10DFB000FA1FE780601411C422859720FA1FE780BA -:10DFC000A013F24062444E85D2444249B249224AEB -:10DFD000924A05618280CA852685EFF0FFED7DB704 -:10DFE000D2854A85EFF05FEDD1B781474146B30650 -:10DFF000F5003387F500182303C80600850733476B -:10E00000070198A2E395C7FE8280011126CA4EC679 -:10E01000AE84AA8993053005130500034AC806CECD -:10E0200022CC32899720FA1FE780C0012DC5130644 -:10E03000000381452A849720FA1FE7800035414676 -:10E04000CE8522859720FA1FE780203CA6850D46C5 -:10E050001305D4019720FA1FE780203B1306040222 -:10E06000930504012285EF70F014AA840D469305F0 -:10E07000D4024A859720FA1FE7802039228597200D -:10E08000FA1FE7806007F240624426854249D24485 -:10E09000B24905618280CD44FDB75D714EDE62D428 -:10E0A000AE892A8C9305300513050003A6C2CAC0A9 -:10E0B00052DC56DA5AD85ED686C6A2C4B28B368BEC -:10E0C000BA84BE8A4289468A9720FA1FE78080F781 -:10E0D000630405101306000381452A849720FA1F64 -:10E0E000E780A02A4146E28522859720FA1FE78033 -:10E0F000C031414681450A859720FA1FE780E02814 -:10E100001D46DE850A859720FA1FE78000301D46F0 -:10E11000DA85130571009720FA1FE780002F333945 -:10E120002001B334900041468145080823072101AE -:10E13000C4879720FA1FE78040251946D6854808EE -:10E140009720FA1FE780602C1946D2851305A1019C -:10E150009720FA1FE780602B930404014146CE8587 -:10E1600026859720FA1FE780402A8A852685EFF0CA -:10E17000DFE7930904024E86A6852285EF7090039F -:10E180002A890DE94146CE8526859720FA1FE7802A -:10E19000801C0C082685EFF05FE54E86A68522855B -:10E1A000EF7050012A8946454146CE859720FA1FD7 -:10E1B000E780A02522859720FA1FE780E0F3B6408C -:10E1C00026444A8596440649F259625AD25A425B1D -:10E1D000B25B225C616182804D49D5B7011126CACC -:10E1E00052C4AA842E8A13050003930530054AC839 -:10E1F0004EC606CE22CC3289B6899720FA1FE78018 -:10E2000060E435C52A84A68541469720FA1FE78039 -:10E21000C01F930404012146D28526859720FA1F4A -:10E22000E780A01ECA852146130584019720FA1FA6 -:10E23000E780A01D13090402A6854A862285EF7097 -:10E240006077AA844146CA854E859720FA1FE780E9 -:10E25000C01B22859720FA1FE78000EAF240624443 -:10E2600026854249D244B249224A05618280CD4482 -:10E27000F5B739715AD05ECE2A8BAE8B41459305E6 -:10E28000300506DE26DA52D456D262CC66CA6AC897 -:10E29000368C328DBA8C22DC4AD84ED69720FA1FA3 -:10E2A000E78040DAAA8A9305300541459720FA1F96 -:10E2B000E78040D92A8ACD44638E0A0859C52A8648 -:10E2C000D6855A85EFF03FC5AA8441E19305300514 -:10E2D00041459720FA1FE780E0D62A89930530054B -:10E2E00041459720FA1FE780E0D5AA89630A090E05 -:10E2F0006306050E1304FD0011841376FD0049C06A -:10E300007D144204418035EE131544004E86D685B7 -:10E310005E95EFF01FB8414681454A859720FA1F68 -:10E32000E780A006014D93170D01C18363F48708B0 -:10E33000BDC04A859720FA1FE78000DC638709008B -:10E340004E859720FA1FE78020DB56859720FA1F1D -:10E35000E78080DA63070A0052859720FA1FE7807A -:10E36000A0D9F250625426854259D254B259225A49 -:10E37000925A025BF24B624CD24C424D2161828038 -:10E380000144131544008A855E95EFF09FB54E86D3 -:10E39000D2850A85BDBF93154D000A86DE954A8554 -:10E3A000EFF03FAF4A868A855A85EF70A060AA8455 -:10E3B000050D95BFBDFC0A86CE854A85EFF07FAD81 -:10E3C0004A868A855A85EF70E05EAA846686CA8589 -:10E3D00062859720FA1FE78000F8A1BFCD4491BF66 -:10E3E000CD44A9BF397162CC2A8C594526DA4AD866 -:10E3F0004ED652D456D25AD05ECE06DE22DCAE8B3A -:10E40000328BB68A3AC63E8AC28946898344010461 -:10E41000EF10DFBD2DCD9167938717E91EA18547CA -:10E420003CA12A8432472105630A0C049307100398 -:10E430003CB0194681459720FA1FE78000F5230379 -:10E440006401A303540144A8231274012317440157 -:10E450002318340123192401A285B7270020625410 -:10E46000F250D2544259B259225A925A025BF24B9C -:10E47000624C03C5C71421616F107FBBA301040068 -:10E480001946BA859720FA1FE780E0EC4DBFF2509D -:10E490006254D2544259B259225A925A025BF24BF8 -:10E4A000624C21618280011122CC2A84314506CE42 -:10E4B0002EC632C436C23AC0EF105FB315C9916799 -:10E4C000938717E91EA1B2452246924602478D471F -:10E4D0003CA120B16244B72700204EA172A116A52D -:10E4E0003AA5F240AA8503C5C71405616F103FB471 -:10E4F000F24062440561828001114AC82A89394587 -:10E5000026CA06CE22CC2EC6B284EF103FAE1DCD59 -:10E51000B2459167938727E91EA191473CA1A301CA -:10E5200025014EA12A84A685190521469720FA1FA8 -:10E53000E78060E2A285B72700206244F240D2441F -:10E54000424903C5C71405616F107FAEF2406244B3 -:10E55000D24442490561828001114AC82A89414555 -:10E5600026CA06CE22CC2EC6B284EF103FA815CD07 -:10E570009167B245938727E91EA195472A843CA15C -:10E5800023122501214619059720FA1FE780A0DCF8 -:10E59000A28566A4B72700206244F240D2444249D3 -:10E5A00003C5F71405616F109FA8F2406244D2447E -:10E5B000424905618280011122CC2A84394506CE68 -:10E5C0002EC632C436C23AC0EF105FA215C9916799 -:10E5D000938717E91EA1B245224692460247994702 -:10E5E0003CA142A1B727002062446EA112A536A526 -:10E5F0005AA5F240AA8503C5C71405616F103FA351 -:10E60000F240624405618280797122D406D62A8460 -:10E610002EC632C436C23AC09720FA1FE78080184F -:10E6200019CDB245224692460247EC84F0852C086B -:10E630001306F00F2285F486F887EFC07F8BB25067 -:10E64000225445618280011122CC2A84394506CEAC -:10E650002EC632C436C23AC0EF105F9915C9916711 -:10E66000938717E91EA1B2452246924602479D476D -:10E670003CA142A1B727002062446EA112A536A595 -:10E680005AA5F240AA8503C5C71405616F103F9AC9 -:10E69000F2406244056182805D712AC61305200242 -:10E6A000CAC04EDE52DC56DA5AD85ED662D466D282 -:10E6B0006AD086C6A2C4A6C26ECE2E8CB28B368B12 -:10E6C0003AC43E8DC28CC68A035A0105835941055E -:10E6D00003498105EF109F9171C191663243938682 -:10E6E00016E9A9472A8416A13CA1930DE40021054F -:10E6F000930444012247630C0306930710033CB0C4 -:10E70000194681459720FA1FE78020C819468145A0 -:10E710006E859720FA1FE78040C7194681452685F8 -:10E720009720FA1FE78060C623037401A3036401E6 -:10E730002300240323128401231D5401231E4401BA -:10E74000231F3401A285B72700202644B6409644F3 -:10E750000649F259625AD25A425BB25B225C925C21 -:10E76000025DF24D03C5C71461616F105F8CBA85FD -:10E77000A301040019469720FA1FE780C0BDEA856F -:10E780006E8519469720FA1FE780E0BC1946E6859A -:10E7900026859720FA1FE78000BC79B7B64026444B -:10E7A00096440649F259625AD25A425BB25B225CE5 -:10E7B000925C025DF24D61618280011122CC2A845B -:10E7C000214506CE2EC632C436C2EF103F8205C99F -:10E7D000224692469167938717E91EA1B245B14739 -:10E7E0003CA120B170A174B16244B72700204EA1B2 -:10E7F000F240AA8503C5C71405616F105F83F2401C -:10E8000062440561828041110D4506C6EF100FFE7E -:10E8100015C1930710F91CA19307E0031CB1C5476C -:10E820003CA1B7270020B240AA8503C5C714410107 -:10E830006F10EFFFB24041018280011122CC2A8487 -:10E84000294506CE2EC632C436C2EF102FFA05C9AE -:10E85000B24592469167938717E91EA12246C947A0 -:10E860003CA14CA120B114A56244B727002072A19D -:10E87000F240AA8503C5C71405616F104FFBF24033 -:10E8800062440561828001114AC82A892D4526CA41 -:10E8900006CE22CC2EC6B284EF104FF529C1B24568 -:10E8A000930710F91CA19307E0031CB1CD473CA1CD -:10E8B000A30125014CA12A84A68515051946972098 -:10E8C000FA1FE78040A9A285B72700206244F240E2 -:10E8D000D244424903C5C71405616F104FF5F24099 -:10E8E0006244D244424905618280011122CC2A84CB -:10E8F000214506CE2EC6EF106FEF05C5B2459167D4 -:10E90000938717E91EA1D1473CA16CA142A1B7276B -:10E9100000206244F240AA8503C5C71405616F1048 -:10E920000FF1F240624405618280011122CC2A84F9 -:10E93000214506CE2EC632C4EF104FEB1DC1224634 -:10E94000B245930710591EA120A170A16244B727B8 -:10E9500000204EA1F240AA8503C5C71405616F10BF -:10E960000FEDF240624405618280011122CC2A84BD -:10E97000214506CE2EC632C4EF104FE715C52246FC -:10E980009167938727E91EA1B245A1473CA160A1E9 -:10E9900070B16244B72700204EA1F240AA8503C59A -:10E9A000F71405616F10AFE8F240624405618280A0 -:10E9B000011122CC2A84314506CE2EC632C436C27D -:10E9C0003AC0EF10AFE205C922468567B2459246CC -:10E9D0000247938717C91EA120A170A16244B727DF -:10E9E00000204EA116A53AA5F240AA8503C5C7147A -:10E9F00005616F10CFE3F24062440561828001112E -:10EA000026CAAE844AC82A891385C40006CE22CC01 -:10EA100032C6EF10AFDD0DCD8567938717E9B2459C -:10EA20001EA124A1231225012A84310508C42686AB -:10EA30009720FA1FE7802092A285B7270020624422 -:10EA4000F240D244424903C5C71405616F102FDE5E -:10EA5000F2406244D244424905618280011122CCD5 -:10EA60002A84194506CE2EC6EF104FD805C58567F6 -:10EA7000938717F91EA1B24585473CB120A1624496 -:10EA8000B72700204EA1F240AA8503C5C71405612F -:10EA90006F10EFD9F240624405618280411122C4B7 -:10EAA0002A840D4506C6EF106FD40DC1930710F9E7 -:10EAB0001CA1E9471CB120A12244B7270020B24085 -:10EAC000AA8503C5C71441016F106FD6B240224416 -:10EAD00041018280011122CC2A84214506CE2EC616 -:10EAE000EF10CFD00DC59167938727E91EA1B245DE -:10EAF000930700033CA160A16244B72700204EA108 -:10EB0000F240AA8503C5F71405616F104FD2F24099 -:10EB10006244056182800111214506CE2EC632C4B1 -:10EB2000EF10CFCC05C58567B245224693870739DC -:10EB30001EA185473CA1B72700204EA172A1F2403B -:10EB4000AA8503C5870C05616F106FCEF240056181 -:10EB50008280397122DC4ED652D45AD006DE26DAB3 -:10EB60004AD856D25ECE094B2A8A3284B68963943B -:10EB7000651337290020834789E6CA8A8944C1C3BF -:10EB80009C3298229306C6FFA207D98F3727002010 -:10EB9000231EF714BA84639BD70831452EC6EF10A5 -:10EBA000EFC4AA8435CDB245420441804CA162A194 -:10EBB000930700F91504A1651EA1231145018505E0 -:10EBC00022859710FA1FE780E04788C429C583474C -:10EBD00089E69385E9FF13562400FD172304F9E61F -:10EBE0009710FA1FE780E0789C44A68589079CC4AB -:10EBF000B727002003C5870CEF106FC38144F25084 -:10EC0000625426854259D254B259225A925A025B12 -:10EC1000F24B2161828026859710FA1FE780C04D54 -:10EC2000B7270020239F07148544D1BF1307D6FFC1 -:10EC3000E3C8E7FEB727002003C787E7138A87E703 -:10EC40003729002001CB0325891509C59710FA1F24 -:10EC5000E780804A03D5C415A165850511054205E5 -:10EC600041819710FA1FE780E03D232CA9144DDD68 -:10EC700083C78AE62286CE85FD172384FAE697109D -:10EC8000FA1FE780406DB7270020239F8714854730 -:10EC90002300FA00A5B7372900208357E915CA8B4E -:10ECA000C1D7B724002003D7C415B72A0020B386E4 -:10ECB000C700110703A58A156346D7063E95CE8582 -:10ECC0009710FA1FE78020690356E91583D7C4150A -:10ECD0008144329442044180231F89149107E31038 -:10ECE000F4F23145EF108FB0AA851DC9930700F9E2 -:10ECF0001EA18357E91523114501230265017EA159 -:10ED000083A78A151CC5B727002003C5870CEF1001 -:10ED10000FB2B7270020231F0914238C07E6C5B5BF -:10ED200003A58A1509C59710FA1FE780E03CB727AD -:10ED30000020239F0B14238C07E6FDB56F90E05F46 -:10ED40006F9020616F907007054582800545828035 -:10ED5000411106C6EF902060B2400145410182801A -:10ED60006F9040626F9020646F90E0666F90C06813 -:10ED70006F90806A6F90406C6F90006E6F90C06F64 -:10ED80006F9080716F9020736F90E0741C3210222E -:10ED9000A2075D8E6F9040766F9080776F90E079DC -:10EDA0006F90407C6F90A07E6F90F0036F90D005C5 -:10EDB0006F90B0076F9090096F90700B6F90500D2F -:10EDC00003430100030E4100834E8100034FC10045 -:10EDD000834F010183424101834381017EC816CAEA -:10EDE0001ECC7AC676C472C21AC06F90700C6F9037 -:10EDF00070116F9050136F90301505458280054556 -:10EE000082800545828005458280054582800545D2 -:10EE100082806FA0107705458280054582806FA0B3 -:10EE2000707C1307A5FF420785672A8841831385F5 -:10EE3000A7C7636CE502138707C801456368B7027B -:10EE400063E605031307301F6362C702138766FF7B -:10EE500042074183938767C763EAE70005063306E5 -:10EE6000B6028E063325D600828001458280B7D651 -:10EE7000060081479386063A1308F00F3387F600A1 -:10EE800010231317060141836364E5006313060131 -:10EE9000828092216364C7009AA18280850793F7DC -:10EEA000F70FE9BF41119397050122C406C626C298 -:10EEB000C1872E8463D607029710FA1FE780A0341B -:10EEC000AA8401CD1C21054793C707086364F70096 -:10EED000EF5000392685EF10AF8E2165218D21A8D6 -:10EEE00093F7150091CFB727002083A7471C91C344 -:10EEF000829713451400B24022449244410182801B -:10EF000093F7250091CBB727002083A7871C91C3D7 -:10EF1000829713452400C5B793F7850099CBB7278F -:10EF2000002083A7071DFC5791C3829713458400D7 -:10EF3000D9B793F7450099CBB727002083A7071DC2 -:10EF4000BC5791C382971345440075B793F70502E8 -:10EF500081CFB727002083A7071E83A7070991C386 -:10EF600082971345040241BF93F7050181CFB7276C -:10EF7000002083A7071E83A7C70891C38297134564 -:10EF8000040195BF939725010145E3D607F6B727FE -:10EF9000002093870716F433F023CC33C823EF9077 -:10EFA0003006096525BF411126C2B7240020B727C6 -:10EFB000002013060011814522C42A8413850416FB -:10EFC00006C623AA07264AC09710FA1FE780E03B2F -:10EFD0000145EF1030550145EF10105CB7270020B8 -:10EFE000A38387F6B707D70713840416B1075CC855 -:10EFF000B7B70C0C938707121CCCB7B7D70793870A -:10F0000007125CCCED77938707121EB081477D47CE -:10F010002326F40C8327840B2324E40C6167130755 -:10F02000F79F37290020D98F130989FB232CF40A75 -:10F030002320F40C8347E9000327C40BA30C04022C -:10F04000A304F40AA308F40AF977FD172317F40EB2 -:10F050002318F40EFD472309F40E85679387F7F014 -:10F060003EBC5EBC2322E40CEF105F899307C01CFA -:10F070002317F4068547A30FF4028357490028B0ED -:10F0800023220404A983A30CF4068D472311F4045E -:10F09000835709019306B00F1387041663F4F60033 -:10F0A0009307B00F139607013EB77EB78347C70398 -:10F0B0004182918BD1C7931766009387073D8346A2 -:10F0C000D703C207C1835EB7918ABDCE931666008F -:10F0D0009386063DC206C18216BB6D459385041614 -:10F0E000B2866373A600ED46B6B113068014BE86E1 -:10F0F00063F4C70093068014139606018567418266 -:10F1000056B3938787849384041663F3C700BE863F -:10F110009307C01C2310F704B707160093870790C6 -:10F12000F6B012B75CDBEF704007EF30E055EF60F0 -:10F13000806E2244B2409244024941016F50C05F48 -:10F140009307E6008E07A5BF9306E6008E0659B723 -:10F15000397122DC3704400026DA4ED6AE84AA8903 -:10F160009305E4FF054506DE4AD8EF101F82498C5F -:10F170001317040141832183931784001359040159 -:10F18000D98F231601001379F90F10088A854E854F -:10F190007C87A306210102C002C202C402C802CABF -:10F1A00002CC02CEEF6010018347E1010347D10199 -:10F1B000A0B0A2074207BA970347F1012180C0A07F -:10F1C000BA97F25062549CA013D78700C183A382E0 -:10F1D000240198B0BCA04259D254B2592161828016 -:10F1E000B72500203725002001111946938505FD1C -:10F1F0001305052306CE22CC26CA4AC891644EC602 -:10F200009710FA1FE78020159385F4FF0145EF1052 -:10F210008FF52A84FD550145EF102FF7A287FD14C5 -:10F220007D5933F79700B366E500D5CA631425010D -:10F230006307970A37240020130704162300F70EEC -:10F24000A18393E707FC9169C164232EA70CA30057 -:10F25000F70E13040416FD19FD14CE850145EF10B9 -:10F260008FF02A89FD550145EF102FF2B367250174 -:10F27000EDD7FD576314F500E30139FF93570501FE -:10F280002302F40E93578501A302F40E8317040D95 -:10F290002311A40E2303240F420513598900137967 -:10F2A000F9034185A303240F658DE58F6312F502F1 -:10F2B0000317440E8317240D658FE58F631AF7003B -:10F2C0000317640E8317440D658FE58FE307F7F886 -:10F2D000F2406244D2444249B24905618280A68527 -:10F2E0000145EF104FE82A84FD550145EF10EFE985 -:10F2F000A28705BF411126C2B724002006C622C43A -:10F300004AC09387041603C7E70383C7F703636AFA -:10F31000F70001442285B24022449244024941014F -:10F3200082802A8993051020130580079710FA1F01 -:10F33000E78040D12A8471DD1306800781459384DC -:10F3400004169710FA1FE780400463140900C157A0 -:10F350005CA0BC48B1E3E0C4A0C8E0C8232004001E -:10F360008547238FF40285475CB0930700F97CB092 -:10F37000B72700209387C728D84B9C4F38C47CC43C -:10F38000FD573CA8B727002003C5C7FC2302A406ED -:10F39000EF60E07008B8BDBFFC4880C3E0C8232020 -:10F3A000040083C7E40385076DBF3C2D411122C4CF -:10F3B00006C699075CB53C45114758A598A33C453E -:10F3C00058352A8498B383471503858B91E7034703 -:10F3D000050389476317F70038441C2393E70704A4 -:10F3E0001CA3284493052403194609059710FA1F06 -:10F3F000E78060F62844322C0C5421059710FA1F40 -:10F40000E78060F5930730F97CB0B24022444101B7 -:10F41000828041114AC0372900209307091683A72B -:10F42000070A06C622C426C299E3054531AAAA8462 -:10F4300013090916EF60701D8327090A8297EF30C0 -:10F4400000002A847DD19C50EC442324F508F83038 -:10F450009307A0096310F71085472300F51483C7AD -:10F46000F4052303F514A303F514FC35982901488A -:10F47000A2074207BA97F8251546F905BA9703C7B8 -:10F4800035FF130584136207BA97232CF40883C74A -:10F4900055FF03C765FFA2074207BA9703C745FF99 -:10F4A000BA97232EF40883C775FFA30AF40283C713 -:10F4B00095FF03C785FFA207D98F7EB883C7B5FF25 -:10F4C00003C7A5FFA207D98F1EBC83C7D5FF03C7FB -:10F4D000C5FFA207D98F3EBC83C7F5FF03C7E5FF71 -:10F4E000232E0413A207D98F5EBC8147232CF4126C -:10F4F0009710FA1FE78020E6F84483473702FD8B18 -:10F50000A309F40203473702ED1793F7F70F1583AA -:10F51000A307E4022D476365F7021E3C05679306C7 -:10F52000A7C7E917C207C18363ECF600363C93070F -:10F53000301F63E7D7005E3C130707C8637BF70201 -:10F540000A24EF30C00C0145B240224492440249E3 -:10F55000410182808327090C13971701E35707F0B5 -:10F56000BC4498239C21F98F9583858B2300F51447 -:10F57000EDBD8327490A228582978327890C0A24B7 -:10F58000294693F7072091E3054693050008EF40CD -:10F59000D0648327090C13971701635807000A24C6 -:10F5A000514693050008EF4050638327C904BC4BC4 -:10F5B00013974700E35B07E6C820A3890400494688 -:10F5C00093050008EF4070618DB5B727002083C711 -:10F5D0001716411122C406C626C24AC02A8485EBEA -:10F5E000582485476316F710834794030347140490 -:10F5F000858B631DF70E1946930524041305A40398 -:10F600009710FA1FE780C0DDB334A00089A88347B4 -:10F610001504E1C7834775041307000493F7070C2B -:10F62000639DE70A485539C113092404CA851305A7 -:10F63000A502EF4030668547AA846319F502485455 -:10F6400089472300F4043C311946CA8593E7270013 -:10F65000A300F40451059710FA1FE780C0CFB24011 -:10F6600022442685024992444101828058248547DC -:10F670006305F7068347C405918BA5E3834784039D -:10F68000A9EF130504049720FA1FE780C0B548D4FA -:10F6900029C58944230094043C3119469305240468 -:10F6A00093E72700A300F40451059710FA1FE780A1 -:10F6B00080CA83471403898B99E385444DB74C5422 -:10F6C000BC25E5DF230894021946B1051305240380 -:10F6D0009710FA1FE78020C8CDB783478403898B32 -:10F6E000E38007F05C549C33E39C07EE814485BFC4 -:10F6F0008347C405918BE39907EE1C3413F7170079 -:10F7000005C374340D47639DE60028406C402244D5 -:10F71000B2409244024941011723FA1F670063B4C3 -:10F72000898BC1DF78349547E319F7F8F9BF4111A8 -:10F73000B727002022C406C693870716238607062C -:10F74000930710F97CB1B727002003A407270DC049 -:10F75000B727002003C577F68545EF001FE593071F -:10F7600010273305F50222832244B240410102836F -:10F77000B2402244410182807C2991C778216314E0 -:10F78000F7006FF0DFFA583901CF7421638FE6007C -:10F7900078A1B727002003C577F689456F00FFA73A -:10F7A000EDD3782179FF7CA1EDB7E1DFEDBF6C45AA -:10F7B00031479C3193F7F7037CA56386E7009307F5 -:10F7C00000083E8582809C210D47BD8B7CB5E39867 -:10F7D000E7FE41114AC01309250322C419462A84B1 -:10F7E000A1054A8506C626C29710FA1FE78040BFCA -:10F7F0009147630705126C441946130524049C21A4 -:10F8000089059987858BA300F4049710FA1FE78078 -:10F8100080B42285EFF07FDBA14763030510244409 -:10F820009D475CA49CA08547BCA0BCB01946CA8576 -:10F83000138544009710FA1FE780E0B1BC20B83070 -:10F84000990793F7F70F13678700BCA0B8B0384447 -:10F85000BA9703576406B8B3BC2038448346D4052E -:10F860003E97835764069206A183BD8BD58F5CA318 -:10F87000B820814709071377F70FB8A0322C8346C9 -:10F88000C40501CA93F70604DDE3F957998F93F78E -:10F89000F70F93F6060481CEB030344413660604A5 -:10F8A000B0B03697143834B3B8200507B8A0322C5E -:10F8B000014709CE63ECC700BC2028440C548D07D7 -:10F8C0003E959710FA1FE78000A9382CB42093F7D3 -:10F8D000F60385073E9758B4B4A083471403858B7D -:10F8E00091E70347040389476317F70038441C2353 -:10F8F00093E707041CA33C444C348CB30345F40544 -:10F90000930790F97CB0EF60E02550348345F4050F -:10F910000D459720FA1FE78040D9EF60004F8147DF -:10F92000B2402244924402493E8541018280F5570B -:10F93000B1BF6C45130720029C3193F7F7037CA5F8 -:10F94000639AE710411122C406C626C29C211547BE -:10F950002A84BD8B7CB5639AE7021946A10513057D -:10F9600025039710FA1FE780A0A7914771CD6C443B -:10F970001946130524049C2189059987858BA300CA -:10F98000F4049710FA1FE780009D2285EFF0FFC373 -:10F99000A1475DC9B727002083A7070082972444A9 -:10F9A000A14708D05CA49CA08547BCA0BCB0194668 -:10F9B00093052403138544009710FA1FE780A0994C -:10F9C000BC209907BCA0BC3093E72700BCB083479C -:10F9D000140491C738441C2393E707F81CA3194665 -:10F9E000930524041385A4009710FA1FE780A096BE -:10F9F000BC20990793F7F70F13F7F703050758B4DF -:10FA0000BCA083471403858B91E703470403894710 -:10FA10006317F70038441C2393E707041CA33C44F6 -:10FA20004C348CB30345F4059307A0F97CB0EF6028 -:10FA3000601350348345F4050D459720FA1FE78085 -:10FA4000C0C6EF60803C8147B240224492443E856C -:10FA500041018280930700083E85828041114AC09F -:10FA6000372900200326892A22C426C206C6930706 -:10FA7000000A7CD2B727002083A70728B7053300E8 -:10FA80002A84D857719B13671700D8D798431377E8 -:10FA9000F7E798C398431377F7E71367071098C3FE -:10FAA000372700200327472F1447CD8E14C793060E -:10FAB000A00534CA5457F59A54D70347E505937601 -:10FAC000F7079843137707F8558F98C324459D4748 -:10FAD0005CA585469CA0A3810400B4A08347B5051E -:10FAE0000D476385E7001947639EE7188547BCB05B -:10FAF000194693052403138544009710FA1FE780E5 -:10FB00008085BC209907BCA00347B4059947631FB3 -:10FB1000F702BC301385A40093E72700BCB08347ED -:10FB20001403898B638107124C54BC29638D071021 -:10FB30001946D1059710FA1FE780E08138441C234D -:10FB400093E707F81CA3BC209907BCA0BC30B820E1 -:10FB500093E78700BCB03C44BA9703576406B8B338 -:10FB6000BC2038448346D4053E97835764069206EA -:10FB7000A183BD8BD58F5CA3B8208147090713777C -:10FB8000F70FB8A0122C8346C40501CA93F70604E8 -:10FB9000F9EBF957998F93F7F70F93F6060481CE97 -:10FBA000B030344413660604B0B03697143834B31A -:10FBB000B8200507B8A0122C4DEA0147B0208347B2 -:10FBC000A4059376F603850636979A07D18F58B425 -:10FBD000BCA083471403858B91E70347040389473F -:10FBE0006317F70038441C2393E707041CA33C4425 -:10FBF000583437050600814598B3930760F97CB007 -:10FC000038448327892A13052573B8DBEF00FFA04A -:10FC1000B72700200327892A9387C728A3810700D5 -:10FC2000238207005C43014593E717005CC350340F -:10FC30008345F4052244B24092440249410117230E -:10FC4000FA1F670083A68347940391C738441C2397 -:10FC500093E707F81CA319469305A4039700FA1F1E -:10FC6000E780606FCDB5F55735B7E3E8C7F4BC2042 -:10FC700028444C508D073E959700FA1FE780A06DF1 -:10FC8000182C2DBF1387E7FF1377D70F79EF930554 -:10FC90002503B4B01946138544009700FA1FE78086 -:10FCA000806BBC20B8301146990793F7F70F1367A4 -:10FCB0008700BCA0B8B03844BA9703576406B8B3FD -:10FCC000BC2038448346D4053E9783576406920689 -:10FCD000A183BD8BD58F5CA3B8208147090713771B -:10FCE000F70FB8A08345B4058346C4056399C500E2 -:10FCF00093F70604ADEBF957998F93F7F70F93F647 -:10FD0000060481CEB43093E60604B4B0344436978A -:10FD1000143834B3B8200507B8A00346B40591469B -:10FD200001476310D602122C09CE63ECC700BC2039 -:10FD300028444C508D073E959700FA1FE780A0613C -:10FD4000182C0346B4059146B72700209387071661 -:10FD50006315D61483C6C70693F6060F93E65600BE -:10FD60002386D706A1BDF55741BF93F7B70F0547C7 -:10FD7000E395E7E4BCB093052503194613854400D9 -:10FD80009700FA1FE780205DBC209907BCA0BC301B -:10FD900093E72700BCB08347940391C738441C23E2 -:10FDA00093E707F81CA3834714031385A400898BEA -:10FDB000F9C34C54BC29E1C31946D1059700FA1F79 -:10FDC000E780605938441C2393E707F81CA3BC2044 -:10FDD000B8300546990793F7F70F13678700BCA063 -:10FDE000B8B03844BA9703576406B8B3BC20384457 -:10FDF0008346D4053E97835764069206A183BD8B44 -:10FE0000D58F5CA3B820814709071377F70FB8A0F7 -:10FE10008345B4058346C4056399C50093F706047A -:10FE2000BDEBF957998F93F7F70F93F6060481CE40 -:10FE3000B43093E60604B4B034443697143834B37F -:10FE4000B8200507B8A00346B405854601476310EE -:10FE5000D602122C09CE63ECC700BC2028444C50BB -:10FE60008D073E959700FA1FE780E04E182C034659 -:10FE7000B4058546D1BD8347940391C738441C23FC -:10FE800093E707F81CA319469305A4039700FA1FEC -:10FE9000E780604C2DBFF55771B783C6C70693F650 -:10FEA000060F93E666006DBD011152C4372A00208B -:10FEB00093070A1683A7470906CE22CC26CA4AC84A -:10FEC0004EC6639F074A372900208327892A130AD1 -:10FED0000A1698430D8B05C3B84B619BB8CB98436A -:10FEE0001367870098C39C438D83858B89C7010066 -:10FEF0000100010001000326892A9307000AB7299F -:10FF000000207CD283A70928B70533002A84D8575C -:10FF1000719B13671700D8D798431377F7E798C3F7 -:10FF200098431377F7E71367071098C33727002024 -:10FF30000327472F1447CD8E14C79306A00534CA54 -:10FF40005457F59A54D778219376F7079843137747 -:10FF500007F8558F98C33C253845BD8B5CA51CA37D -:10FF60001D4724456399E7368547A3810400BCA05B -:10FF70008345B5058D466390D5221A2D631C071263 -:10FF8000BCB0930525031946138544009700FA1F5A -:10FF9000E780603CBC20990793F7F70FBCA00347AC -:10FFA000C4051377070401CFB83013670704B8B04E -:10FFB0003844BA971838B8B3BC208507BCA02306CC -:10FFC0000A06B4208347A40513F7F60305079A072A -:10FFD000D58F58B4BCA0930740F97CB08347140375 -:10FFE000858B91E70347040389476317F70038447B -:10FFF0001C2393E707041CA33C445834B706008233 +:10000000137EF70793FE0EF833EECE0123A0C7014F +:1000100003AE4702336E5E0023A2C70383AE489A45 +:10002000014E23A27E0603DA070663074E0303AEE2 +:100030000703038A0600135EFE00620E135E8E4104 +:100040006358CA0103AE0703135EFE002380C60196 +:1000500003DE0706137EFE0F03AA4E0663060A00A0 +:1000600003DA8705E37F49FB03AE4702337EEE01E7 +:1000700023A2C70383870600635CF400034E0300DA +:100080003396C9001346F6FF3376C6012300C3003A +:100090003E8663D3A7002A8613158601618505076E +:1000A0001377F70F8506E312F7F3B640264496441C +:1000B0000649F259625A61618280B737002083A7EE +:1000C000479AD8479316170163D2060298479316AA +:1000D000170163DD06007D57B8D7372700201307C7 +:1000E0008763544F850654CF116798C798470D838F +:1000F000058B11CF373700201307C797342393E6BA +:10010000160034A3930600F854A3214798C79847D4 +:10011000058B19CB373700201307C797143393E6A5 +:10012000160014B3054798C798470983058B09E75C +:1001300098470583058B31CB373700201306C797C7 +:10014000A30206009447B735002083A5059789824E +:10015000858AE5C69441B1828D8AE9EEA84B545256 +:100160001376050294324DC2F9E29306D005D4CF3E +:100170008346C79793E61600230ED796114798C774 +:10018000D855719B13671700D8D598479316370138 +:1001900063D40602373700209306878303C6060719 +:1001A00013078783418A45C203C7060713670702FF +:1001B0002388E606056798C798479316270163DFEB +:1001C0000600373700201307C7975423E206E1865D +:1001D00063D40600854654A3096798C798479316C9 +:1001E000070163D20602373700201307878383464F +:1001F0001707858AADCA8346170793E62600A3082A +:10020000D706216798C78280ADD205466395C600A0 +:1002100093061006A9BF09466395C60093065006CB +:10022000B9B70D466395C6009306900689B7930645 +:10023000B00635BF9306C0061DBF383213671700DE +:1002400038B209472DBF834607070946BD8A638830 +:10025000C600834607070D46BD8AE39DC6F4914656 +:100260002308D70681BF83461707918AD9DA8346C8 +:10027000170793E6860061B7B737002083A7479A30 +:10028000B73600201387C697904710CF90470D824E +:10029000058A11CA30231366160030A3130600F82E +:1002A00050A3214690C79047058A19C6103313669C +:1002B000160010B3054690C790470982058A09E6E3 +:1002C00090470582058A31C6A30207009047B735DB +:1002D000002083A505970982058A59CA9041318279 +:1002E0000D8A41E6A84B505313750502103221C9FF +:1002F00035EA1306D005D0CF03C6C697136616009D +:10030000238EC696914694C7D455F19A93E616006B +:10031000D4D5944713962601635B06005423E20666 +:10032000E18663D40600854654A3096798C79847B9 +:100330009316070163D40600216798C7828055DAB7 +:1003400005456315A6001306100675B70945631524 +:10035000A6001306500645B70D456315A600130603 +:10036000900651BF1306B00679B71306C00661B7F1 +:10037000343393E6160034B3894671B7373700201B +:10038000B73600201386869A1307879C5C372C3E6D +:10039000484AAE97FD8BB355F5001CB25CB7858912 +:1003A0008DE9183B814613080002B3F7E7020147C5 +:1003B000B355E50085899378F70F89C96395D70010 +:1003C000A30016018280850693F6F60F0507E31158 +:1003D00007FF8280B73700209387C797DC3393F7F6 +:1003E000F70FD9E7B727002083A7C767411122C4B9 +:1003F0004AC006C626C28297373900209307899CD7 +:1004000080471309899C630FA40463658504018DEB +:10041000B73400209387849ABC2F135455009384DB +:10042000849A6361F404993FBC2C03278900939656 +:10043000570036971D8C2324E900E376F4FE22440E +:100440008830B2409244024981454101174306E099 +:100450006700031AB727002083A7476D33848740BE +:1004600022957DB7B24022449244024941018280E4 +:100470008280B727002083A7C767011122CC26CA34 +:1004800052C406CE4AC84EC68297B734002093871E +:10049000849C8047014A6300A4069384849C63651E +:1004A0008506018D373700209307879ABC2F135498 +:1004B0005500137AF5011309879A636BF402B72983 +:1004C00000209389096D5D3D8346A90103A884003E +:1004D00083A54900139756004297158C3A866364AA +:1004E00007016364B7003306B74090C4E37DD4FCD2 +:1004F0001604336A4401F24062445285D2444249B0 +:10050000B249224A05618280B727002083A7476D40 +:1005100033848740229579B7B737002003A7479ADD +:100520008567938707777CD3B737002083A7879F9A +:1005300083A60709139656006358060083A6070989 +:1005400013966600634406007453FDF28280000037 +:10055000EFE00FCC730000000000000097020000E5 +:100560009382820C0383020023800200630F030046 +:10057000F32510342EC0970500009385A5FD7390D8 +:100580001534EFF07FCF7300203086DCEFF0FFB240 +:08059000E6508280000000002B +:10059800B72700203727002083A707630327876230 +:1005A80001456313F7008280F62399E2D623369536 +:1005B8009C43C5BFB727002083A58768372700203D +:1005C80093878768138605222328C762DA239387CF +:1005D80085FFB72600204111BA97056523A4F66266 +:1005E80006C61D05935637006374E5009306002080 +:1005F8003307D600372500202326E56223A0E5220D +:10060800E11656A2231306001CC3998FE1175EA3B7 +:1006180023130700B53FB240B7270020239FA762E6 +:1006280041018280184183A785FF6319B7001CC167 +:10063800FD5723AC05FE238FF5FE8280232CF6FEA2 +:10064800C5BF411122C426C23744024006C68324CE +:10065800C420232604200F10000009E92326942033 +:100668001545B24022449244410182800347E5FF88 +:100678009307F00F6306F700232694201145D5B79A +:100688009700FB1FE78080A8014523269420D1BF4F +:10069800411126C24AC0B744024006C622C403A973 +:1006A800C42023A604200F10000089E523A62421D6 +:1006B800154515A0B727002083C797632A842E8580 +:1006C8006375F400894763EE8700A53FB74702408A +:1006D80023A627210D45B2402244924402494101F4 +:1006E800828083A785FF99E703C7E5FF9307F00F8B +:1006F8006308F700B937B747024023A627214DBF43 +:1007080037250020238F85FE130545639700FB1FBF +:10071800E78080B0A16522856D2C014523A62421A0 +:100728005DBFB727002023AA07628280BDCD7971FB +:1007380022D406D626D24AD04ECE01444147B3D75A +:100748008540858BB1CF1205314722953305E502E7 +:10075800B727002003A9876C8544B3948400C2049A +:10076800C180BE892A990327090011C703254900BA +:100778002EC60297B24531473304E40283A7896C39 +:100788003E941C4489E72320090023220900B25023 +:100798002254A58D02599254F2492E8545618280D2 +:1007A8000504E31EE4F88144DDB72E8582804111FB +:1007B8001397050122C406C626C24AC041872E8463 +:1007C800635107029700FB1FE78000AC11C1953DFC +:1007D800A1673D8C2285B2402244924402494101DE +:1007E8008280EDD9AA8701474146B356E440858AFD +:1007F8009DCA9207BA97B146B387D702B726002099 +:1008080003A9866C8544B394E400C204C1803E9970 +:100818008327090003254900829723200900232202 +:100828000900258C45BF0507E311C7FC8144D5BFE6 +:10083800411126C2B747024006C622C483A4C72076 +:1008480023A607200F100000B727002083A7C76A38 +:10085800372400201304043891C782971C403E9522 +:1008680008C031A0B727002083A7C767FDF71C4041 +:10087800374703001307D73FB387E70237A7260098 +:10088800130737ECB240BA971CC0B747024023A6FB +:10089800972008402244924441018280797126D2EF +:1008A800B747024006D622D44AD04ECE52CC56CABA +:1008B8005AC85EC662C483A4C72023A607200F10A7 +:1008C800000005E123A697200945B250225492540E +:1008D8000259F249624AD24A424BB24B224C456114 +:1008E8008280B727002083A7C767BA8A368AB28B67 +:1008F8002E8BAA898297B727002003A7876C3E8989 +:100908000144B146C147330CD40233068701104273 +:1009180059E2C165938505F0414597F0FA1FE780D4 +:10092800E07119EDB727002083A7C76B81C7814500 +:1009380011458297B747024023A697202D4571B7E6 +:10094800B727002003A7476839E323A2A768230035 +:1009580005008327896C0547331787002326050080 +:10096800232475013AA123225501E29723A03701D8 +:1009780023A2670123A4570163040A0023008A0005 +:10098800B747024023A69720014581B73E875C47B9 +:10099800F5FF48C76DBF0504E317F4F6B7470240F3 +:1009A80023A69720214515B7B727002083A7C76C32 +:1009B800411122C406C6372400201304846389C762 +:1009C80082975C483E9548C84848B2402244410155 +:1009D8008280B747024083A6C72023A607200F10AE +:1009E800000037270020034797636370E502372626 +:1009F800002013171500032506683A951A21D98D8A +:100A08000EA123A6D7200145828023A6D7200D4515 +:100A18008280B747024083A6C72023A607200F106D +:100A2800000037270020034797636372E5023726E3 +:100A38000020131715000325066893C5F5FF3A959E +:100A48001A21F98D0EA123A6D7200145828023A65D +:100A5800D7200D45828001114AC83747024006CE8B +:100A680022CC26CA4EC652C40329C72023260720F3 +:100A78000F100000130705FF1377F70FFD4763E317 +:100A8800E70AB146B306D502B727002003A7876C4B +:100A980036971C43C1CB9354450005443D89331513 +:100AA800A400131405014180AE892685A28597000C +:100AB800FB1FE780E0852A8A29C9A2852685913F00 +:100AC800B727002083A7C767B72400209384046D45 +:100AD80082979E242A848146B385370313060064CF +:100AE800B3B7370313850532B335B500BE95EFC0EC +:100AF8005132B30785003E87D44063E4A70063E41E +:100B0800D7003387D7402324EA00B747024023A6FB +:100B180027210145F2406244D2444249B249224A5F +:100B280005618280B747024023A627210945DDB722 +:100B380001114AC8B747024006CE22CC26CA4EC683 +:100B480003A9C72023A607200F100000BD4763EBA9 +:100B5800A70431473307E502B727002083A7876C2E +:100B6800BA979C43A1C305443314A40042044180AE +:100B7800AE840145A28597F0FA1FE7806079AA89BB +:100B880011C5A2850145713523A49900B7470240D4 +:100B980023A627210145F2406244D2444249B24982 +:100BA80005618280B747024023A627210945E5B79A +:100BB800797126D252CCB744024006D622D44AD004 +:100BC8004ECE56CA5AC85EC603AAC42023A604201D +:100BD8000F100000B727002083C797636378F500DC +:100BE800B727002083ABC76763970B00B74702405E +:100BF80023A6472199A0372900201309096DAE8A39 +:100C0800032B490083558900B74736FE938707C8E9 +:100C18003E9BB387C5022A84B2898146B3B5C50213 +:100C280013850732B337F50013060064BE95EFC08D +:100C3800511E6370AB0223A644210145B2502254D1 +:100C480092540259F249624AD24A424BB24B456128 +:100C58008280829B83558900AA8413060064B38727 +:100C680035038146B3B5350313850732B337F5002D +:100C7800BE95EFC0111AB3079500BE84032749003B +:100C880063E4A70063E4E700B384E740D6852285E0 +:100C980097F0FA1FE780C06701C904C5B74702404B +:100CA80023A64721054559BF936504F0C205C181B4 +:100CB800414597F0FA1FE780603811E9B72700200F +:100CC80083A7C76B85D7A2851145829705B73727B4 +:100CD80000208327476899EF2322A76885472326A2 +:100CE800050004C52311550100A11CB123220500EC +:100CF80075B7BA87D84775FFC8C7CDB779714ECED3 +:100D0800B747024006D622D426D24AD052CC56CA79 +:100D18005AC85EC662C466C26AC083A9C72023A631 +:100D280007200F10000025C141443689B28A2E8A57 +:100D3800AA84B14C372B0020054D130C0003B30BCC +:100D4800940303278B6C5E971C43B9EF9375F400EB +:100D5800B315BD0013554440C2055686C1811375AD +:100D6800F50FB93531C183278B6CDE9784C323A275 +:100D780047016304090023008900B747024023A6FE +:100D88003721014521A023A637210945B250225415 +:100D980092540259F249624AD24A424BB24B224C0F +:100DA800924C024D456182800504E31A84F9B747E5 +:100DB800024023A637212145D1BF011122CC26CAE2 +:100DC8004AC84EC6B747024006CE03A9C7202A84A0 +:100DD800AE89B28423A607200F100000D13B2285DC +:100DE800CE8597F0FA1FE780A0522A8405C5B72759 +:100DF800002083D5876D130600648146B38795026A +:100E0800B3B5950213850732B337F500BE95EFC029 +:100E1800510048C013351400F2406244B7470240FD +:100E280023A62721D2444249B2490E050561828092 +:100E3800011122CC4AC84EC6B747024006CE26CA80 +:100E480083A9C7202A892E8423A607200F10000013 +:100E580097F0FA1FE780C04BAA8419C12311050037 +:100E6800A2854A857D36B727002083C787636399A3 +:100E78002701B727002003D78767598C239C8766EB +:100E8800B747024023A63721014591E01945F240B2 +:100E98006244D2444249B24905618280011126CA9E +:100EA8004AC8B744024006CE22CC4EC603A9C42085 +:100EB80023A604200F1000009307F00263E6A7049E +:100EC800B1473304F502B729002083A7896CA2979C +:100ED8009C439DCB9377F5008545B395F500C205F6 +:100EE800C1811181B13783A7896C0145A29723A0DD +:100EF800070023A2070023A62421F2406244D2441B +:100F08004249B24905618280B747024023A627219A +:100F18000945E5B7411126C206C622C4B7470240B3 +:100F280083A4C72023A607200F10000097F0FA1FFC +:100F3800E780003E19E90145B2402244B747024024 +:100F480023A69720924441018280B727002083A7D7 +:100F5800C76700458297B72700209387076D6367A7 +:100F6800A402D843B74636FE938606C83305A44084 +:100F78003697E372E5FC13070064B335E502922760 +:100F880081463305E502EFC0C1687DB7D8433A947E +:100F9800C9BF4111B727002006C623A6A76C029532 +:100FA800B240B727002023A8A764014541018280E9 +:100FB800914763E9B700B72700208A0593874766FA +:100FC800BE9588C18280B727002023A207683725ED +:100FD8000020B7270020411123A6076C5146B727E8 +:100FE800002081451305456606C623AE076622C460 +:100FF80026C23724002097F0FA1FE780E03913054E +:10100800846313068002814597F0FA1FE780C03891 +:10101800EFF04FDAB727002083C7D769130484633A +:10102800854513D527008D8B3E958D473305F502F1 +:101038009947B724002039051375F50F28A0330503 +:10104800F5021305052497F0FA1FE78020FF23A473 +:10105800A46C2DCD3020994781453306F60213063E +:10106800062497F0FA1FE780203383A7846C382082 +:10107800B7240020938707240A0723A0F466BA97A9 +:10108800372700202320F768EFF0AFE919291C3033 +:1010980083A60466370605001397270036971306BC +:1010A800467310C3138717001377F70F0A0737061D +:1010B800050036971306667B10C313873700890728 +:1010C80093F7F70F8A0718B0B69790C3B240224437 +:1010D80092444101828037270020130787631C331D +:1010E800342363FFD700B726002083A6066613863D +:1010F800170010B313972700369708C33E858280E0 +:101108009307F00FE5BF1C41F1CF41777D8FB706FC +:10111800002089476319D70C5A2171C7411126C28B +:101128001946AA849305F00F610506C622C497F0F4 +:10113800FA1FE780603805478D47630FE5089C4430 +:1011480091C7985C994749CBD85C59C73724002088 +:101158001306000481451305846897F0FA1FE78099 +:10116800A02313060004A6851305846897F0FA1FC8 +:10117800E780E01B93078468DA2701E7130700106C +:10118800DAA7F82719E30547F8A79A2B19E36D475B +:101198009AABF83719E31547F8B7B82B19E30547A1 +:1011A800B8ABB83B19E3F837B8BBD82B19E32547D8 +:1011B800D8ABF82801E71307C003F8ABDC5791C791 +:1011C8008297B72700202390A764B73700207D5760 +:1011D800A38EE7A4CD3B8147B240224492443E858A +:1011E8004101828089473E85828001114AC837299A +:1011F80000208327096D06CE22CC26CA52C456C2C7 +:101208004EC68297130A0064B33545031309096D66 +:10121800835A89008146568633054503EFC0613FEE +:10122800B727002013878763004FAA840145630608 +:1012380094029389876333858440636E9400032501 +:10124800490056868146B335AA023305AA02EFC083 +:10125800413C018D269523AC9900F2406244D2446A +:101268004249B249224A924A05618280011122CC40 +:101278002E84B7E506000A854146938505A606CE65 +:10128800EFC04172180806043A94B72700200355A6 +:1012980004FF83D7A76DF2406244AA9737450F0031 +:1012A800130505243355F50205618280B727002010 +:1012B80083D7A76D51471D45637CF70279471945C8 +:1012C8006378F7021307200315456373F7021307C2 +:1012D800B0041145637EF700130740060D45637996 +:1012E800F7001307600909456374F70013B5B70FD2 +:1012F8008280011122CC06CE2A842EC6EFF04FD36D +:10130800B245F240818D33A5A5022295624413753A +:10131800F50F05618280011122CC06CE2A842EC6E3 +:10132800EFF00FD1B245F240818D33A5A502229589 +:1013380062444205418105618280011122CC06CEBA +:101348002A842EC6EFF0CFCEB245F240818D33B558 +:10135800A5022295624405618280B727002023A058 +:10136800A76E8280B727002013878768585739CF20 +:10137800411122C426C24AC006C61389876802974B +:10138800B7270020138787631A272A8493848763E3 +:1013980005CBBA876373A700AA87C207C183BA8639 +:1013A8006373E400A286C206C182958F51476359D0 +:1013B800F7008327090391C38297EF40116282A443 +:1013C800B240224492440249410182808280011144 +:1013D80022CC37240020930784689C5B06CE26CA5B +:1013E800AA851304846881C72AC68297B245A5CD09 +:1013F8009C410545A5C7DC41B5C39E25A5C3BE25AF +:10140800B1CFB72400201385046D41469384046D41 +:1014180097F0FA1FE780A0F123860400B727002081 +:1014280083A6076D37270020232ED76678380DE36B +:101438009387076D8A279307805737460F00330530 +:10144800F5021306062481468145EFC0811C68B861 +:10145800371505001305251F2D3E0145F24062444E +:10146800D24405618280B7270020938787633717A6 +:10147800002023AE070013076798B727002023A88A +:10148800E76C378732009387076DFD56130727A14E +:10149800D4C398C723860700B747024023A4D7269A +:1014A800B5BF011122CC37240020930784688847F0 +:1014B80006CE26CA4AC801E90545F2406244D2442C +:1014C800424905618280130484681C5CF5D7585C26 +:1014D80065D77000854582971844B247E30EF7FC3C +:1014E8004A249305E004B724002097F0FA1FE78008 +:1014F800E0B41387846308D39384846355DD52244E +:101508009305F00F014997F0FA1FE780E0E87C2483 +:101518009050634DF900328597F0FA1FE78000BFBD +:10152800014523A0040223A2040241BF4E2408441B +:10153800585CB3872503898105093E9508C202973F +:10154800F9B701114EC6B7290020938789689C47CF +:1015580026CA4AC852C406CE22CC56C25AC02A8AC3 +:10156800AE8432896388071E9389896803A7890333 +:10157800630207121307F01F6360A71237240020C5 +:1015880013078463832A07021304846363980A0891 +:1015980003D5C9009565938515E097F0FA1FE78094 +:1015A800E0A908D02A867DC583D5C90083A7890309 +:1015B80003A589008981829783A78900832A040269 +:1015C8005CD089476314FA08C1476395F40C83D546 +:1015D800C9009147938505FCB3C5F5028A05D695E0 +:1015E800B8219307A0056313F70A9E216390470B60 +:1015F8004A852686910597F0FA1FE78040D31C504C +:101608005685639157130145F2406244D2444249DA +:10161800B249224A924A024B056182805850E382BD +:10162800E7FA03D5C9009565938525E097F0FA1F79 +:10163800E780C0A0AA8A39CD83D5C9002A8683A7A6 +:10164800890303A5890089818297A5BF8D47631BFC +:10165800FA00C1476390F40483D5C900938545FD1A +:10166800F199B5BF91476318FA006395440383D590 +:10167800C900A115F5B793070010631DFA00A1472B +:1016880063EA970083D5C900C115D9BF1C50568598 +:10169800639D570B29458DBF9D6A637A5509930A47 +:1016A80005E01947B3CAEA0203D7C900372B00205F +:1016B800B38AEA02BE9A93078B63DC53130B8B63DE +:1016C8006395570103240B021DE003D5C900930558 +:1016D800E00497F0FA1FE78060962A8445DD83D5F9 +:1016E800C90083A789032A868981568582979145EF +:1016F8001307A005898193972500A297B4236391C6 +:10170800E6049623639C460385058A052686A295EA +:101718004A8597F0FA1FE78080C183270B02E3848C +:1017280087EE228597F0FA1FE780409EE9BD216782 +:101738007917E361A7F6B30A5541BDB7AC335DBF6E +:1017480083270B02E38887F4228597F0FA1FE78046 +:10175800E09B89B7B727002083A5876585DD91477A +:101768009306A0058983139727002E973023E31348 +:10177800D6F21223631C460185078A072686BE9582 +:101788004A8597F0FA1FE78080BAB5BD3C33D9BFC8 +:10179800B727002093878768984721C3D85F15CF5C +:1017A8008546631CD502411122C437240020130446 +:1017B8008463105006C611CECE27485089810297FF +:1017C800085097F0FA1FE780609423200402232230 +:1017D8000402B2402244410182808280011122CC5D +:1017E800372400209307846856C283AA870026CA34 +:1017F8004AC84EC606CE52C42A89AE84B28913049A +:101808008468638D0A1A5C5C99EB2945F24062444E +:10181800D2444249B249224A924A056182801C5CFC +:10182800EDD79307F01F63E1A70C372A0020930731 +:101838008A639C53130A8A63A9C7084483274A0208 +:10184800639CA70489476313F906C147E39FF4FA29 +:101858004A249147130505FC3345F50293172500E3 +:1018680003250A022686CE853E959307A0053CA14E +:1018780023102501110597F0FA1FE78040AB0145B9 +:1018880071B74A249305E00497E0FA1FE780007BCC +:101898002320AA025DF195BF4E241C5C03260A0290 +:1018A800898182971C442322FA0269BF8D47631BF2 +:1018B800F900C147E39BF4F44A24130545FD9377E7 +:1018C800C5FF79BF91476317F900E39024F54A24CF +:1018D8002115F5B793070010E319F9F2A147E3E6DC +:1018E80097F24A244115E1BF9D676375F506930792 +:1018F80005E01947B3C7E7025A24372A0020B387FF +:10190800E702BE9A93078A639C53130A8A63B1CB92 +:1019180083274A026392570703250A029146130850 +:10192800A0059305F00F93D72600139727002A9751 +:10193800302363120607835807003033639928055C +:10194800B306D64063C4960485078A072686CE85E3 +:101958003E9515B721677917E369A7EAB307F540FC +:1019680061BF4A249305E00497E0FA1FE780006D01 +:101978002320AA0251FD51BD4E241C5C03260A02F5 +:1019880089815685829723225A0379B70EA3931625 +:101998000601C18249BF5224B385960091051306FA +:1019A80006FCE3F4C5E613863400719A1106B29674 +:1019B800230107012310270134B379B7372A002000 +:1019C80093078A639C53130A8A6395CF03250A02F7 +:1019D80091461308A0059305F00F93D72600139797 +:1019E80027002A97302363100605835807003033F1 +:1019F80063972801B306D640E3D896F40EA393164E +:101A08000601C182D9BF68245E249305E00433052A +:101A1800F5024205418197E0FA1FE7802062232002 +:101A2800AA024DF5DDB352246C24B385C502338672 +:101A380096001106E3EBC5DCBDB7014582809C2109 +:101A48001CA1BE211CB1BE21A1833CA1DC213CB15B +:101A580011458280B727002023AE073AB727002018 +:101A680023AC073A82800DCD411126C206C622C496 +:101A7800AA8401458DC12E84B7E50600228541461A +:101A8800938505A797F0FA1FE780608A9C20054593 +:101A98005CA49C305CB4B2402244924441018280F0 +:101AA80001458280011122CC26CA06CE0947AA84A4 +:101AB80032846381E50441468147639BC500638F97 +:101AC800E6006397B6000DA841478147638EE6009C +:101AD800F2406244D2443E85056182808A8522852F +:101AE800593741468A8519A88A85B53F41468A856E +:101AF800228531A0E39AB6FC2E86A285268597F02A +:101B0800FA1FE780C093AA87E1B7B727002023AC64 +:101B1800A73A8280B727002023AEA73A8280011116 +:101B280022CC622106CE26CA4AC84EC62DCC8329AD +:101B38008500AE842A8803C90900814713178901E3 +:101B4800618763550702B147054563F78704511458 +:101B5800420403552800418033878900A2864E86B7 +:101B68008545EFA06020B337A00085077D14135585 +:101B78006900420405891379F90341809CA088B063 +:101B880023812401C2A0014719C01387190098C4F2 +:101B980009476383E7000145F2406244D244424961 +:101BA800B249056182800545C5BFC167F917630A57 +:101BB800F502D94763F7B702011122CC2EC606CE2B +:101BC8002A84EF70B027B2456368B5002285624465 +:101BD800F24005616F904019F24062440545056185 +:101BE800828005458280C167F9176314F5006F701C +:101BF800F024411106C6EF90A00511E15D45B24001 +:101C0800410182809147639DF5001C211CA23C2163 +:101C18001831A207D98F3EA23C3101455CA28280CF +:101C2800114582804111814522C426C206C6AA8474 +:101C3800BD232A8409E9B727002083A7873B81C7EA +:101C4800F945268582972285B24022449244410173 +:101C5800828039714ED656D25AD006DE22DC26DA78 +:101C68004AD852D4AA8A2E8BB28951EB36C6A53FE0 +:101C78009145EF70502BAA844D493DC5B246054A9F +:101C8800238034010544630A0B00B68513851400CC +:101C9800029B0505131405014180E20993D9894186 +:101CA80063D30902C1455685EF90E008654915E5FB +:101CB80033868400A2852685EF90F05C2A8911ED91 +:101CC80031044204418091472C085685FC8426CE75 +:101CD800E085EF80B0212A8901C963070A002685BB +:101CE80097E0FA1FE7808042F25062544A85D25446 +:101CF8004259B259225A925A025B21618280BA84AF +:101D0800014ABDBF011122CC26CA4AC84EC606CE1A +:101D18002A893284B689353FAA840DE1B727002085 +:101D280083A7C73B81CF05476317E40003C40900B5 +:101D380005041374F40FA2854A858297F240624421 +:101D480026854249D244B24905618280AE86B725CC +:101D5800050001470546938565A46DB79E211CA122 +:101D68009E21A1831CB1094582809E211CA19E2130 +:101D7800A1831CB1BE213CA1BE21A1833CB1114568 +:101D880082809E211CA19E21A1831CB1BE213CA161 +:101D9800BE21A1833CB1DC315CA1FC215CB18A2568 +:101DA80019054205418182809E211CA19E21A183A3 +:101DB8001CB1094582809E211CA19E21A1831CB1D2 +:101DC800BE213CA1BE21A1833CB111458280CA211C +:101DD80006054205418182809E211CA19E21A18386 +:101DE8001CB1AA2109054205418182809E211CA1BE +:101DF8009E21A1831CB1BE213CA1BE21A1833CB17F +:101E0800CA2111054205418182809C211CA10545FA +:101E180082809E21411122C406C61CA19E212E84C7 +:101E28001105A183A30EF5FEBE219505230FF5FE2E +:101E380083D7D5FFA183A30FF5FE03C6F5FF97E06F +:101E4800FA1FE780C04E4820B240224411054101E4 +:101E5800828089476399F5001C3118210145A20742 +:101E6800D98F1EA28280114582809A21D94763FDAD +:101E7800E702011122CC06CE2EC62A84EF70007C20 +:101E8800B2469E22636DF50022856244F240B72572 +:101E9800050001470946938545D605615DBBF240BB +:101EA800624409450561828009458280914785C55C +:101EB8001421FD15C2058547C1816390F60213D729 +:101EC80025008D89914781E9914711C7050534A2FD +:101ED8001AA248C281473E85828009479147E39C00 +:101EE800E6FEC94733D7F502B3F5F502E1BFAE8682 +:101EF800B725050001471146938525D799BB93F768 +:101F0800350089EB8981914781C50EA248C2814776 +:101F18003E8582809147EDBFD8218947631CF7022F +:101F2800011122CC2A84C84506CEAE86014709C9CC +:101F38002EC69D4597E0FA1FE780802AB2462A8779 +:101F480022856244F240B725050019469385A5D835 +:101F5800056101B30945828099E1114582801C2100 +:101F680005473EA2E37BF7FEFD1593F5F50F33D742 +:101F7800F502B387E702E392F5FE050548C21AA207 +:101F880001458280DC210947AE866385E700414729 +:101F98006399E700B7250500014721469385A5E128 +:101FA8004DB9094582800EA291E1014548C201451B +:101FB8008280AE86B725050001472946938505DB53 +:101FC80049B90EA291E1014548C201458280AE8619 +:101FD800B7250500014731469385E5DB9DB90EA27B +:101FE80091E1014548C201458280DA21854763FFB6 +:101FF800E702011122CC2A84884106CE1DC12EC6D3 +:10200800854597E0FA1FE780A01D2A87228562444C +:10201800B246F240B72505003946938565DD05616E +:102028000DB9F24062440945056182800945828004 +:10203800914785C518218D46914763F0E602FD1545 +:10204800C205C181B3C6E5023308D702639705010B +:10205800050516A23AA248C281473E858280DC2146 +:102068000947AE866385E70041476399E700B725CE +:102078000500014741469385A5E1E1BE09458280F7 +:10208800B335B000139525008280011122CC26CAF1 +:1020980006CE98258547AA842E844946631FF700F3 +:1020A80099363E2049151306200963C8A700F24057 +:1020B8006244D24409450561828018348547631417 +:1020C800F70013660604484001C98D4532C697E0FB +:1020D800FA1FE780E0103246A2866244F2402A875F +:1020E8002685D244B7250500938505DE056195B69A +:1020F8008D4763F8B7021C311821F115A207D98F53 +:102108001EA23C313821C205A207C181D98F3EA247 +:102118004EA289C5110508C6014582802324060000 +:10212800E5BF11458280011122CC2A84884506CE5C +:10213800AE8601C92EC6954597E0FA1FE780400A8A +:10214800B2462A8722856244F240B72505005946DF +:10215800938545DF0561F5BCB335B00013952500BF +:102168008280AE86B725050001476146938525E143 +:10217800CDB48547114563F0D7021C320C22A20763 +:10218800CD8F1EA39387E6FF3EA389476386F6009B +:10219800090650C30145828023220700E5BF014795 +:1021A80081467946814575B49E211CA19E21A18353 +:1021B8001CB109458280BC2105471CA18A2163976F +:1021C800E7000A050505420541818280C9473305B4 +:1021D800F502CDBF8A210A05420541818280BE21D0 +:1021E8001CA18A21BE213305F5020505420541815E +:1021F80082808A2182808A2182808A218280BE21EF +:102208001CA18A21BE213305F5020505420541813D +:1022180082809E211CA19E21A1831CB1BE213CA1CC +:10222800BE21A1833CB1CA211105420541818280AA +:102238009E211CA19E21A1831CB1AA21090542054A +:1022480041818280894711456398F6001C32142227 +:102258000145A207D58F1EA382809A21D947AE8651 +:1022680063F9E700B725050001470D469385051B6F +:1022780051BC094582801145639DA6001C32142279 +:102288000145A207D58F1EA33C323422A207D58F61 +:102298003EA38280BC210547FD1793F7F70F6361C2 +:1022A800F7049E2195CF011122CC2A84C84106CE7D +:1022B8001DC12EC6894597E0FA1FE78060F22A877C +:1022C80022856244B246F240B7250500154693853B +:1022D800E51B056105BCF240624409450561828041 +:1022E800094582809547114563F1D706411122C4FB +:1022F80026C24AC006C61C32BA841822A2073284F3 +:10230800D98F9EA03C32382293054400A207D98F6A +:10231800BEA08947DCA0094613855400368997E09A +:10232800FA1FE780C0009307A9FF9EA49947631B83 +:10233800F90023A60400B240224492440249014510 +:10234800410182801904C0C4FDB782809E2195CFC7 +:10235800011122CC2A84C84106CE1DC12EC685454E +:1023680097E0FA1FE780C0E72A8722856244B246D1 +:10237800F240B72505001D469385C51D056159B274 +:10238800F240624409450561828009458280994787 +:10239800639DF6028947411106C65CA31C321422CC +:1023A800B285A207D58F1EA33C3234225023A20740 +:1023B800D58F130557003EA3910597E0FA1FE780D4 +:1023C80000F7B240014541018280D147114563942D +:1023D800F600C147C9B782809E219DCF011122CC4A +:1023E8002A84C84106CE05C52EC6894597E0FA1F3E +:1023F800E78000DF2A8722856244B246F240B7258B +:10240800050025469385651E05616FF0BF8FF24074 +:1024180062440945056182800945828089471145E2 +:102428006398F6001C3214220145A207D58F1EA31B +:102438008280011122CC2A84C84106CEAE8601478B +:1024480009C92EC6854597E0FA1FE78060D9B246CC +:102458002A8722856244F240B72505002D469385D8 +:10246800A51F05616FF01F8A1145639DA6001C32E8 +:1024780014220145A207D58F1EA33C323422A2079D +:10248800D58F3EA38280011122CC2A84C84106CE72 +:10249800AE8601C92EC6854597E0FA1FE78040D46D +:1024A800B2462A8722856244F240B72505003546A0 +:1024B8009385E51F05616FF0FF8493F716001145BA +:1024C80081EB89476386F600858256A310C30145D0 +:1024D8008280011122CC2A84C84106CE05C52EC6A9 +:1024E800854597E0FA1FE780A0CF2A8722856244B6 +:1024F800B246F240B72505003D4693852520056183 +:102508006FF05F80F24062440945056182809E2138 +:102518009DCF011122CC2A84C84106CE05C52EC6FE +:10252800894597E0FA1FE780A0CB2A872285624475 +:10253800B246F240B72505004546938565200561FA +:102548006FF04FFCF24062440945056182800945FD +:102558008280854763F6D70208A70CB71C320C2285 +:10256800A207CD8F1EA39387E6FF3EA38947638604 +:10257800F600090650C30145828023220700E5BF03 +:1025880011458280014781464D4681456FF08FF79E +:102598008D47114563F4D7021C320C22A207CD8F58 +:1025A8001EA33C322C22A207CD8F3EA39387C6FFE1 +:1025B8005EA36386A600110610C701458280232406 +:1025C8000700E5BF011122CC2A84884506CEAE86D5 +:1025D80001C92EC6954597E0FA1FE78060C0B2464C +:1025E8002A8722856244F240B72505005D46938517 +:1025F800A52105616FF00FF1854711456395F60038 +:102608001C2201451CA382800147814665468145FD +:102618006FF04FEF011122CC2A84C84106CEAE8656 +:10262800014709C92EC68D4597E0FA1FE78040BBD0 +:10263800B2462A8722856244F240B72505006D46D6 +:102648009385852305616FF0CFE0011122CC2A84A0 +:10265800C84106CEAE86014709C92EC68D4597E00A +:10266800FA1FE780E0B7B2462A8722856244F24023 +:10267800B725050075469385852305616FF06FDDE5 +:10268800011106CE2EC6EF80C05819C5B245F240DA +:102698002A2105616FC0E02CF2404945056182801E +:1026A800B7270020A384073EB72700202384073ECE +:1026B800B727002023A8073CB727002023AA073CF8 +:1026C800B727002023AC073CB727002023AE073CE0 +:1026D800B727002023A6073CB727002023A4073CE0 +:1026E800B727002023920770130640389387477056 +:1026F800B2B371761307400B130606B8BAA3D2B368 +:1027080011671D46930600059305000A1305007D11 +:10271800DAA3F2B341470546130810F8BAA7DAA7B7 +:10272800BAABDAABFAAB9AAF9AB723960703EEA324 +:102738008EA7F6A796ABAAAF239E0700239F070094 +:1027480023900702B2B7239707021308F0072398CC +:1027580007022392E7042393E704239FE7042390C7 +:10276800E7062391E7062392E70623990703130751 +:10277800C01CD2BBF2BB239C0702239D0702239EE9 +:102788000702239F0702239007042391C704239479 +:102798000704239507042396C7042397D70423988F +:1027A800D7042399A704239A0704239B0704239C8F +:1027B8000704239DD704239ED7042393A7062394B5 +:1027C800070623950706239607062397B706239837 +:1027D800B70623990706239AE7067D57239B070622 +:1027E80023900708239107082392E70882800111A4 +:1027F80026CAAA84214522CC06CE2E8432C636C4E7 +:102808003AC297E0FA1FE780C0A20DC5A246124758 +:102818003246930700FD1CA1994704B13CA174A15D +:1028280078B152A1AA8522856244F240D24405615A +:102838006FD01FE6F2406244D24405618280B72718 +:10284800002023ACA73C8280B727002023AEA73CFA +:102858008280011122CC4AC806CE26CA2A890144A0 +:10286800B30489006368B400F2406244D244424928 +:10287800056182802EC6EFD0BFFB93170501C18387 +:10288800A183B2459CA09307140093F7F70F850422 +:1028980063F8B700CA97090488A31374F40FC9B77B +:1028A8003E84C9B7411122C4372400201304446E62 +:1028B8006A20C16706C6FD17630EF500B73700200A +:1028C80003C68782B72500209385053EEF80A017B1 +:1028D800FD577EA0B24022444101828009C92515D6 +:1028E8001375F50F1335850E1345150082800145C4 +:1028F800828023900500C1C6797122D426D24ECE9B +:1029080052CC5AC806D64AD056CA5EC63684328ACF +:10291800AE892A8B814463F24407B30794009C2351 +:10292800138914004209939A070193DA0A0113598B +:10293800090163840A04CA976341FA04B3072401AE +:1029480083CB07005E85593F0DC99387FAFF239013 +:10295800F90063906B03130519002295B2502254B5 +:1029680092540259F249624AD24A424BB24B4561EB +:102978008280D694C204C18079BF0145C5B701459C +:102988008280011122CC3724002026CA4AC84EC6AC +:102998009307446E06CE2E89D0CB8CCBC8C7AA84A9 +:1029A80041469305F00F4A8597E0FA1FE780C0B0CB +:1029B80085491304446E631935030848C145513DE0 +:1029C80041469305F00F268597E0FA1FE780C0AED1 +:1029D80005496315250348446244F240D2444249FC +:1029E800B249C1450561B5B5414681454A8597E07B +:1029F800FA1FE78060ACE31535FDC1B74146814554 +:102A0800268597E0FA1FE78020ABE30625FDF24014 +:102A18006244D2444249B24905618280411122C4CC +:102A28003724002026C24AC0AE842A891306000231 +:102A380081451305446E06C697E0FA1FE780C095E6 +:102A48009307446EA3812701B73700202386978216 +:102A5800EFB07073854719C1814749452302F46E69 +:102A6800B24022449244024941018280814791C97F +:102A780009C985476319F500DC3193E707FCDCB128 +:102A880085473E85828089476316F500DC3193F7D8 +:102A9800F703F5B70D478547E315E5FED8311377FA +:102AA800F70313670704D8B1E9BF814785C119CD7A +:102AB800D8319306000C85471377070C6308D700B5 +:102AC800930600048D476303D70089473E858280BB +:102AD800411122C4005D06C626C21DC8AA8408503A +:102AE80009C597D0FA1FE7806062485009C597D09A +:102AF800FA1FE780A061085409C597D0FA1FE7803C +:102B0800E060228597D0FA1FE780406023AC04027A +:102B1800B240224492444101828019E9B72700203B +:102B280083C7676E91C7372500201305053C82804F +:102B3800372500201305C56F8280B727002003C5FD +:102B4800676E8280B727002003A5076F8280B727AA +:102B5800002003A5476F8280B727002083A7876FCF +:102B680088438280B72700209387476ED44B9842CA +:102B7800050798C2A8339307F00F6305F500916520 +:102B88006FD03FE58280011122CC06CE2E8432C65A +:102B9800EF80C0189147B2456310F502B7270020AF +:102BA80083A7C73D95C303A30700630F03002285CE +:102BB8006244F24005610283B727002083A7473D9E +:102BC80081C703A34700D5B7F240624405450561B4 +:102BD8008280011122CC2A844A2106CE26CA4AC8FC +:102BE8004EC697E0FA1FE780A0EA2DC52A8904217E +:102BF8008349C500F13D4A85EF8080504A20EF8027 +:102C0800200D372900201309893E83470900B9C7D9 +:102C180063969704B727002083C5973E26858D3491 +:102C280019E1230009004A20EF80400F9147631CF7 +:102C3800F500B72700209387476E5620FA23639440 +:102C4800E6007D57FAA3F2406244D2444249B249B1 +:102C58000561828081499304F00F65B79307F00FEF +:102C6800E383F4FC7420522028204E87A685413641 +:102C78005DBF79715EC6AA8B2E8552CC56CA5AC8DA +:102C880006D622D426D24AD04ECEAE8A328B368A87 +:102C980097E0FA1FE780C0DF7DC1045D2A89E5C09F +:102CA8009C50614599C3130540039C5481C7510545 +:102CB8004205418163050A00710542054181DC50E6 +:102CC80081C75D054205418197D0FA1FE7806056AC +:102CD8002A8455C56146814597D0FA1FE780C06BA5 +:102CE800B727002083C94773639409008349090003 +:102CF800930700FD1CA0A947A30074013CA023036F +:102D080064018C50231254011305840191C908C42D +:102D18007146930A440397D0FA1FE78040615685AD +:102D28008C5491C948C45146930A450197D0FA1F5B +:102D3800E780E05F5685630C0A0008C87146D285B3 +:102D4800930AC50197D0FA1FE780605E5685CC507C +:102D580099C548C85D4697D0FA1FE780405DA285AF +:102D68004E85EFD0FF922254B2509254F249624AF3 +:102D7800D24A424BB24B4A850259456191BBB25087 +:102D8800225492540259F249624AD24A424BB24BF7 +:102D98004561828001114EC6AA892E854AC806CE91 +:102DA80022CC26CA2E8997E0FA1FE78060CE39C563 +:102DB800B727002083C4477391E00421194597D0B1 +:102DC800FA1FE78000472A8415C98145194697D01C +:102DD800FA1FE780605C930700FD1CA0B947A300B9 +:102DE80034013CA023122401A2856244F2404249E6 +:102DF800B2492685D24405616FD09F89F24062446A +:102E0800D2444249B2490561828039715ECEAA8BAB +:102E18002E8526DA4ED652D456D25AD006DE22DC79 +:102E28004AD8AE84328BB68A3A8ABE8942C697E0BF +:102E3800FA1FE780E0C539C92A89414597D0FA1FAA +:102E4800E780203F2A8439C14146814597D0FA1F3F +:102E5800E7808054B727002003C5477319E103456D +:102E68000900930700FD1CA0BD473CA0B247A30082 +:102E7800740146A023046401A304540123054401FA +:102E8800A30534015CC4A285EFD09F80F250625440 +:102E9800D2544259B259225A925A025BF24B2161DA +:102EA8008280797126D2AA8439454AD04ECE06D678 +:102EB80022D42EC6B289368997D0FA1FE7806037A8 +:102EC8000DCDB2459307000D1EA1B1472A844EA12E +:102ED8003CA1CE851905194697D0FA1FE7802045F1 +:102EE80023062401A2852254B2500259F24913F54F +:102EF800F40F925445616FD0AFF9B25022549254F6 +:102F08000259F24945618280411126C2B724002046 +:102F18009384446EB83006C622C44AC09307F00FA3 +:102F28006308F7042A89394597D0FA1FE78060308B +:102F38002A841DCD930700FDB72500201CA1A300FE +:102F48002501230105009385C56F0D05194697D006 +:102F5800FA1FE780C03D9E24A285A8303EA49C307D +:102F68005CA42244B2409244024941016FD04FF21E +:102F7800B2402244924402494101828001115AC060 +:102F88002A8B314526CA4EC652C456C206CE22CC1A +:102F98004AC8AE84B28A368ABA8997D0FA1FE780BF +:102FA80040292DCD2A84268597E0FA1FE78040AE78 +:102FB80009C55825A1476311F704B727002003C99D +:102FC800776E930700FD1CA09D47A30064013CA0F9 +:102FD80046A0231354012314440123153401A28568 +:102FE8006244F240D244B249224A924A024B4A858C +:102FF800424905616FD0CFE9B737002003C9D782AE +:10300800E3110BFCB727002083A707499C47D5DBB2 +:10301800CE865286D6852685829765B7F240624469 +:10302800D2444249B249224A924A024B05618280FF +:10303800011122CC2A84214506CE2EC697D0FA1F2C +:10304800E780201F15C5B245930700FD1CA1C547A1 +:103058003CA1BC313CB1DE215EA1FC217CA1FC314C +:10306800AA857CB122856244F24005616FD04FE2A7 +:10307800F24062440561828001114AC82A8961458B +:1030880026CA4EC606CE22CCAE89B28497D0FA1F85 +:10309800E780201A25C1930700FD1CA1BC302A84B3 +:1030A800938584001CB195473CA1FC301105194655 +:1030B800A30FF5FE97D0FA1FE7806027DE202306CE +:1030C8003401A2853EA4BE2C4A857EA4DE2C1EA80F +:1030D800FE2C3EA883C704025CA883C714025CB810 +:1030E800BE30F240D2447EA862444249B2490561EA +:1030F8006FD00FDAF2406244D2444249B2490561C6 +:103108008280411122C4372400201304446E3C20DD +:1031180006C626C285CBB7240020AA851946138582 +:10312800043C97D0FA1FE780802028209385043C30 +:10313800EFF0DF932244B2401385043C92444101EE +:103148006FB03005B240224492440145410182806B +:10315800411126C2B72400209387446E06C622C4B4 +:103168004AC0B8339307F00F9384446E6301F704A1 +:103178002A89294597D0FA1FE780A00B2A8405C918 +:10318800930700FD1CA1A147A30025013CA1BC2079 +:10319800B72500209385053C3CB11946110597D009 +:1031A800FA1FE780C018A830A285EFD06FCEB820EC +:1031B8008D476311F702B727002083A7873D99CB76 +:1031C80003A38700630803002244B24092440249E3 +:1031D80041010283B2402244924402494101828063 +:1031E800797122D406D626D24AD04ECE52CC56CAAF +:1031F80009444DCD2A890A21AE89514497E0FA1F26 +:10320800E7800089AA845DC1373700209307878249 +:10321800DC238546BA8AFD1793F7F70F494463F70D +:10322800F6085825A1476314F700639109089C5CC8 +:103238004544ADEF9165938545711305C00297D05C +:10324800FA1FE780A0DF88DC2A8A4D4425C11306CF +:10325800C002814597D0FA1FE78000148357090000 +:1032680093064A0036852311FA00714693054900F2 +:1032780036C697D0FA1FE780800B89472300FA00EB +:10328800C824B2460356090083C58A8261151335DE +:103298001500EF8010212A8463860900CE852685D3 +:1032A800EF80E01301C42685EFF09F822285B2509B +:1032B800225492540259F249624AD24A45618280A4 +:1032C800B737002083C7C7820547FD1793F7F70F65 +:1032D8006377F708894749C6011122CC26CA4AC82C +:1032E8004EC652C406CEAA89368AB2842E8997D091 +:1032F800FA1FE780E0792A84D14731C5485509C5C6 +:1033080097D0FA1FE78080E0F145268597D0FA1F0D +:10331800E780200E48D4CD471DC554242147814756 +:10332800639DE600630B0A00382D122993062501D8 +:10333800AA854E85EF800011AA875820630E0900E0 +:103348001367670058A0F2406244D2444249B24928 +:10335800224A3E850561828013674700E5B7C94761 +:103368003E8582809307100463EAA700B7270020F0 +:103378009387477006053E950A21828041657D1531 +:103388008280011122CC2A842E8526CA06CEAE84DC +:1033980097D0FA1FE780C06F0DCDB7470F0093870E +:1033A800F723094563E2870281450A85414697D09C +:1033B800FA1FE78060FEA68560800A85418040810B +:1033C800A3010100EF80807AF2406244D244056193 +:1033D80082804945D5BFB73700202385A7828280E0 +:1033E8006F809006797152CC2A8A328522D426D2EF +:1033F8004AD04ECE56CA5AC85EC606D662C4AE8BEE +:10340800B28A368BBA843E89C289468497D0FA1F1D +:10341800E78000680DC92A8C63130A0213774B00F2 +:103428005C2115CF93E727012302FC008DEC631C78 +:103438000902639A090205E8ED9B2302FC00832B2D +:103448008C0363910B08B250225492540259F249EA +:10345800624AD24A424BB24B224C45618280F59B6C +:1034680093E70701D1B793E747002302FC0001CC9B +:103478001C484146A2852324FC0213058C0197D0E1 +:10348800FA1FE780C0EA63930B02D5D80325CC0264 +:1034980009C597D0FA1FE78060C7F145268597D000 +:1034A800FA1FE78000F52326AC0251BFE30909F8AB +:1034B8000325CC0209C597D0FA1FE78020C5F1453E +:1034C8004A85F1BF9DC483A70B0299EB916593854B +:1034D8003571714597D0FA1FE78040B623A0AB023B +:1034E80003A50B0219C57146A68597D0FA1FE78078 +:1034F80000E46388090283A74B0299EB91659385E1 +:1035080025715D4597D0FA1FE78040B323A2AB022F +:1035180003A54B0219C55D46CE8597D0FA1FE780F3 +:1035280000E11DC483A78B0299EB91659385157102 +:10353800514597D0FA1FE78060B023A4AB0203A5DA +:103548008B0219C55146A28597D0FA1FE78020DE65 +:103558002254B2509254F249B24B224CCA865A862F +:103568000259424BD6855285D24A624A45616FF06C +:103578004FF0011126CA52C406CE22CC4AC84EC604 +:103588002A8AAE8497D0FA1FE780805035C1AA896D +:10359800394597D0FA1FE780C0C92A8431C9B727AF +:1035A800002003C947736314090003C9090093077E +:1035B800000D1EA0AD473CA093856900130534009B +:1035C800194697D0FA1FE78080D693F714008580B4 +:1035D80085885CA444B423154401A2856244F24062 +:1035E800D244B249224A4A85424905616FD04F8A7E +:1035F800F2406244D2444249B249224A056182807B +:1036080001114EC652C456C206CE22CC26CA4AC89A +:10361800AA8A2E8AB28997D0FA1FE78060472DCDF3 +:103628002A891305C00297D0FA1FE78080C02A8430 +:1036380025C5B727002083C4477399E08344090050 +:103648009307000D1EA0E9473CA0930569001305E8 +:103658003400194697D0FA1FE78060CDD28523152C +:1036680054011305C400414697D0FA1FE78020CCC7 +:10367800CE851305C401414697D0FA1FE78020CBB9 +:10368800A2856244F2404249B249224A924A2685BA +:10369800D24405616FC0DFFFF2406244D244424920 +:1036A800B249224A924A05618280411122C43724D4 +:1036B80000201304843C084006C619C597D0FA1F99 +:1036C800E780C0A423200400B24022444101828044 +:1036D800011106CE22CC26CA4AC82EC697D0FA1F98 +:1036E800E780003B31CDB245B727002003C94773B7 +:1036F8000CD5AA846314090003490500414597D0F5 +:10370800FA1FE78000B32A8405CD9307000D1EA198 +:10371800A5473CA1DC30938564001105A30FF5FE95 +:10372800194697D0FA1FE78080C09C54A285F240C2 +:103738005CC46244D2444A85424905616FC05FF562 +:10374800F2406244D2444249056182801D71A2CC94 +:1037580086CE2A842EC697D0FA1FE780603315C913 +:1037680054251147AA8749456391E6029C5FB245F3 +:1037780091C3EC2BB7D605002308B1009386E6B3B6 +:10378800100889452285EF70B03CF64066442561F3 +:1037980082805145DDBFB737002083C7C782054700 +:1037A800FD1793F7F70F637AF704894721CA411188 +:1037B80022C426C24AC006C6B2842E8997D0FA1FF0 +:1037C800E780002D2A84D14715C1630609005C21D2 +:1037D80093E727005CA14146A6851305840197D08D +:1037E800FA1FE780C0B49C481CD48147B2402244E9 +:1037F800924402493E8541018280C9473E858280C4 +:10380800797122D406D62A842EC697D0FA1FE7806B +:10381800202801CDB2452285230EB1006C08EF7037 +:10382800B038B2502254456182805145DDBF6F7077 +:10383800C043C1671387E7FF6395E502B7270020F8 +:1038480083A7473D91EB494582804945B2402244D0 +:10385800924402494101828003A30700E30503FE65 +:103868000283411122C426C24AC006C6FD172A890E +:103878002E84B284639AF502B727002083A7473DB8 +:1038880091CF9C4381CF829711E9B72700202384E9 +:10389800273FB7270020A384973E4DBFA6854A85BA +:1038A800EFE01FDE45F5D5B72E8597D0FA1FE780E4 +:1038B800201E41DD1C210D45E39A27F9228522446B +:1038C800B2400249A685924441016FB0800993072E +:1038D800100463E1A7064111C16722C406C626C2C7 +:1038E800FD172A8409456381F502C547AE84631232 +:1038F800F4022E85EFB0200E372500201305457001 +:1039080006042A9406A00145B2402244924441018B +:1039180082809307A0036316F4002E85EFB020057C +:10392800E1BF9307B003E319F4FC13F5F50FEFB00B +:103938004004D9B709458280011106CE2AC6EFE0B6 +:103948003FD6EF10401BEF90416EB72700209387BA +:10395800476E130700F0BAA323820700B737002089 +:10396800324513878782FD5634A3F2402384A78209 +:10397800954505616F50D05575719397050126C31C +:1039880006C722C54AC1CEDED2DCD6DADAD8DED600 +:10399800E2D4E6D2EAD0EECEC187AE8463D0075631 +:1039A800373400200345848237290020372A002035 +:1039B80097D0FA1FE780408DAA8C22CCB72A002026 +:1039C800372B0020372D00201304496E372C002098 +:1039D80063930C022165258DBA402A449A440A490A +:1039E800F659665AD65A465BB65B265C965C065D07 +:1039F800F64D4961828083C70C001307200A639C37 +:103A0800E7008349340003D52C00C1656686FD159F +:103A1800EFF06F9785A262471307878283492700D3 +:103A2800130710096394E71683C71C0015476391B1 +:103A3800E7026685EFF0EF996685EFC09FC0E24721 +:103A480003C5878297D0FA1FE7800084AA8C49B7FC +:103A580039476395E71603D54C008567A5076316B4 +:103A6800F50483A58C0083CB0500639D0B008505B9 +:103A780091C93725002019461305C56F97D0FA1F3D +:103A8800E780E08A0347496E85476311F71063882A +:103A98000B002302096E5E85EFF00FC771BF8947DF +:103AA8002302F96EEFA0B06E41BF89671387270024 +:103AB8006318E50483AB8C00638A0B0C83C70B0087 +:103AC80099EB83C72B0003C71B00A207D98F1EA43D +:103AD80083C73B001CB00347496E89476318F70A40 +:103AE80083C70B0091C72302096E03C50B006DB78E +:103AF8000C300A248D472302F96EEF503040F5B799 +:103B080095076318F50083A78C008823EFF04FE42E +:103B180025B7F9771387A7FF2A974207418391466C +:103B280063F1E6049387A7FCAA97C207C18371478C +:103B38006371F70289671387B7006310E50483A7E9 +:103B48000A3DE38B07EE9C43E685E38707EE829701 +:103B580015A0370700181307F770B357F700858BC0 +:103B6800A1CB83278A3DE38907EC9C43E38607ECD6 +:103B780066858297E31205EC11A81387C7006310C6 +:103B8800E50283A78C009C23E38807EA9307F00FDC +:103B9800E384F9EAE6854E85EFC09FAF4DB5B907D6 +:103BA8006318F50083274C3DE38807E8DC4369BFC9 +:103BB800896793871704E304F5F8C9BF3D476398FD +:103BC800E70403D54C0089671387D700E30CE5FCAD +:103BD80013879701E308E5FCCD07E319F5FA7A2086 +:103BE800C167FD17631DF70083274C3DE38607E493 +:103BF800DC43E38307E40965E6854D0589BFB727FC +:103C0800002083A7C73DE38907E29C43DDB713077C +:103C1800E003E39DE7F683C72C000547639EE712A0 +:103C280083C76C0037270020930D873C63980710E3 +:103C380083A70D006381071083CB0700A14903C543 +:103C48007C0013878C00BA853ACEEFE01FE6A38389 +:103C5800AC00130640028145681097C0FA1FE78040 +:103C6800A07383C73C0072471946A307F10283C7B4 +:103C78007C00BA854818A309F10297C0FA1FE780AB +:103C8800006B83D74C007010CE852318F10283D7C0 +:103C9800EC005E852313F10483D70C012314F1048F +:103CA80083D72C012315F10483C74C012306F104A3 +:103CB800FD57A306F104FD572317F104EFF0CFBB1E +:103CC80083C73C0072478DE7DD4783D80C0103D8D2 +:103CD800EC0083C67C0083D54C003EC283D72C0100 +:103CE8003EC00546CE875E85EF70201AA381AC00E2 +:103CF80083A70D0081C71145EFF03F9B03458B3E1D +:103D0800930B8B3EE30A05D283459D3EEFE05F9718 +:103D1800E30405D283C63C0093071003638AF600C8 +:103D280003D64C0083C50B004E873685EFE03FACC9 +:103D380023800B0011B3834B340009B783278A3DD6 +:103D4800834B34009149E38C07EEDC43E38907EEAB +:103D5800814501458297E5B5130790026397E70807 +:103D680083C76C0037270020930D873CB9EB83A7E6 +:103D78000D00A9C783CB0700A14903C57C00937731 +:103D88002500A1CF058913874C01A383AC00668663 +:103D9800CE855E853ACEEFF02FAE83C73C007247E2 +:103DA800A1FBDD4783D8CC0103D8AC0183C67C00D6 +:103DB80083D54C003EC283D7EC011DB7834B34003A +:103DC80065BF83278A3D834B34009149DDD7DC43A7 +:103DD800CDD78145014582974DB713878C00BA85A9 +:103DE8003ACEEFE09FCC72474DB70947639CE70096 +:103DF80083A70A3DE38207C4DC43E38F07C26685D5 +:103E080082971DB92D476398E70083A70A3DE3858C +:103E180007C29C47DDB70D476397E70066868D4567 +:103E280003D54C00F5B619476395E7069305A1023B +:103E380013051031EF9041276C1013052031EF90D6 +:103E4800A12603D66C008357C10203D54C0063E852 +:103E5800C70083D68C000357A10263F7E6009305D9 +:103E68000002EFA05036C9BE6374E6002393EC004D +:103E780063F4D7002394FC0003D7CC0083D6AC00AE +:103E880003D68C0083D56C0001488147EFA07033BE +:103E980065B61D47E38CE7CE31476395E700668634 +:103EA800B145BDBF35476398E70083A70A3DE38561 +:103EB80007B8DC4799B74947639DE70083278A3DE0 +:103EC800E38607CCDC43E38307CC8145054582972D +:103ED80075B94D47639CE70083278A3DE38807CA85 +:103EE800DC43E38507CAE6850945D5B713076002B1 +:103EF800E39EE7C86686930560021DB793F7150031 +:103F080089CFB727002083A7073D89C7DC4399C31A +:103F18000145829713C51400C1B493F7250091CFCA +:103F2800B727002083A7873D91C7DC4381C7814518 +:103F38000545829713C5240045B493F7450001450C +:103F4800E38C07A8B727002083A7C73C37240020A5 +:103F58001304446E89CF85475CA0B727002083A748 +:103F6800873D91C7DC4381C7814505458297484411 +:103F78006C10EF70502C6810EFF0AF98B727002046 +:103F880083D7677281CF130600643386C702B737B9 +:103F9800002003C587829145EFC09FC113C5440027 +:103FA80025BC411122C4372400200325C43C06C681 +:103FB80019C597C0FA1FE78060152326043CB24054 +:103FC800224441018280757122C53724002083274D +:103FD800C43C06C726C34AC1CEDED2DCD6DADAD85C +:103FE800DED6E2D405456389070E9305F10513056E +:103FF800F041EF7051009305F1051305F041EF70A2 +:10400800817FB72700209387476EBC230347F105BC +:10401800B337F00011C389070327C43CBEC6283351 +:1040280093054700EFE09FA40327C43CAAC40D45AD +:104038002C23AEC2EFF00FB3AAC01145EFF08FB238 +:104048000324C43C2ADE65453824034CB4003ADC1A +:10405800EFF04FB1AA846945EFF0CFB02A897145D6 +:10406800EFF04FB0AA896D45EFF0CFAF2A8A7545BA +:10407800EFF04FAFAA8A7945EFF0CFAE2A8B130540 +:104088000004EFF02FAEAA8B13051004EFF08FADEC +:10409800E2042648B6476257F25606469645137517 +:1040A800F50F93FBFB0F137BFB0F93FAFA0F137AB1 +:1040B800FA0F93F9F90F1379F90FE1842AD05ECE3C +:1040C8005ACC56CA52C84EC64AC426C262C09308C1 +:1040D80044000545EFA0F010BA402A449A440A4922 +:1040E800F659665AD65A465BB65B265C49618280A9 +:1040F800011122CC06CE26CA8D472E84631AF504F8 +:10410800B831B7240020E947CA219384446E631567 +:10411800F700FE206389A70497D0FA1FE78040972D +:1041280019C17E207EA53A24162472204E202830FC +:10413800EFE0DFE45A20FE206309F7008547F240EC +:104148006244D2443E8505618280FD57FEA0FDB7DA +:104158008967CD07631CF500BC2131476385E700FB +:104168004547E39DE7FCEFE0EFF3C9BFB1476319AB +:10417800F500B737002003C5D782EFE07FEB7DBF9E +:1041880041677D178147E31CE5FAD4314947E39835 +:10419800E6FACC212A20300023140100EF60100732 +:1041A80071BF411122C4372400208347A43E26C290 +:1041B80006C64AC01307E00FAE846382E7041307FC +:1041C800F00F1304A43E6384E702114597C0FA1F59 +:1041D800E780200609CD930700FD1CA189473CA173 +:1041E800854704B13CB1AA850820EFC06FCAF957CA +:1041F8001CA0B240224492440249410182802A898B +:10420800114597C0FA1FE780C00265D5930700FDE6 +:104218001CA189473CA104B1A30125012244B72769 +:104228000020B24092440249AA8503C5B73E410125 +:104238006FC00FC679714AD0372900208327C93C3F +:1042480022D406D626D24ECE52CC56CA4544C5EB09 +:10425800B734002093878482DC234944958BC5C3F7 +:10426800B72700202E8A9165A385A73EAA89938542 +:104278007571314597C0FA1FE78040DC2326A93CB9 +:104288004D4435CD23003501A30005002946D285CC +:10429800090597C0FA1FE78080098327C93C914622 +:1042A800B82363E9E60835E74D47B8A3B823136791 +:1042B8000701B8A3930571001305F041EF70A153EE +:1042C8009C83F1E7B727002003C7676E8D4763100B +:1042D800F70CEFE03F872C00EF70E0752800EFE067 +:1042E8005FE24545EFF00F88014411C913060064E9 +:1042F8003306C50203C584829145EFC07F8B2285B2 +:10430800B250225492540259F249624AD24A456143 +:10431800828085466314D700754741BF8946631478 +:10432800D700494759B78D466314D7004147B5BFF1 +:104338005547A5BF9546CA8A630DD70099466315A8 +:10434800D7000947B8A331A01D466312C7022381CD +:1043580007006545EFF00F819307F007E30CF5F4CC +:1043680003A7CA3C3C2393E707043CA3A1B7214613 +:104378006314C7000547F9B725466314C700B4A3FB +:10438800C9BFA9460544E31CD7F6114765BF2539BF +:104398002A8435D53931A5B7011126CAB72400209A +:1043A80083A7C43C22CC06CE4AC84944B9C39C233F +:1043B8000D446390A7043739002003458982894555 +:1043C800EFC01FA703458982B72700209145239690 +:1043D800073EEFC0FFA583A7C43C0147814680B3D1 +:1043E8001306F100854785450145DC87EFA0406449 +:1043F8002A842285F2406244D2444249056182807F +:10440800011106CE22CC26CA4AC88547631AF5068A +:10441800372400201304C43E1E20B9C737270020C4 +:104428000347876E31E31307B003636BF702B734B2 +:10443800002003C584828945EFC09F9F12209307FF +:10444800006403C584823306F6028945EFC04FF63F +:1044580023100400F2406244D2444249056182803C +:10446800938747FC1EA0FDB7B727002083A7C73C4A +:10447800F5D36244F240D24442498823056129BFFA +:10448800B724002083A7C43CF1D73737002013098D +:10449800878283474900918BD5DF89476310F506EA +:1044A8002D452EC697C0FA1FE780A0D82A845DD173 +:1044B800B245930700FD1CA1E547A30005003CA1F8 +:1044C800BC3115051946230FF5FEDC219505A30F10 +:1044D800F5FE97C0FA1FE78080E50345590093076A +:1044E800F00F6315F50083A7C43C8823A2856244B6 +:1044F800F240D244424905616FC08F9903458782D3 +:104508008945EFC0FF926244F240D2444249B7273E +:1045180000202396073E05616FF0BFA849458280B9 +:10452800B737002083C7C782958B638C0712930720 +:10453800C01C63FCC70009458280F2406244D24433 +:104548004249B249094505618280B727002083A7FF +:10455800C73C63880710B72700209387A73E03C886 +:1045680007001307E00F631EE80E011122CC4AC8AA +:1045780006CE26CA4EC688A313058600420536898C +:1045880032844181A5C991659385657197C0FA1FE9 +:10459800E780C0AAAA8955D1B724002003A5443FC3 +:1045A8009384443F09C597C0FA1FE78020B6138556 +:1045B800890023A0A9002286814523A0340197C041 +:1045C800FA1FE78060DD9C402286CA85884397C031 +:1045D800FA1FE780C0D59C40A286F240C2A362447D +:1045E800D2444249B249984305468D45054505617F +:1045F8006FA0804391659385557197C0FA1FE78036 +:10460800E0A3AA891DD9B724002003A5C43F938439 +:10461800C43F09C597C0FA1FE78040AF13858900DA +:1046280023A0A9002286814523A0340197C0FA1F40 +:10463800E78080D69C402286CA85884397C0FA1FA7 +:10464800E780E0CE9C40A286F240C2A36244D244F6 +:104658004249B249984305468D45054505616FA015 +:10466800E03C494582809307C01C63FCA7000945CC +:1046780082800945F2406244D2444249B249056108 +:10468800828055C9011122CC2A8421054EC64205D3 +:10469800AE8991659385657141814AC806CE26CA5F +:1046A80097C0FA1FE78080992A8961D5B72400202E +:1046B80003A5443F9384443F09C597C0FA1FE78088 +:1046C800E0A4130589002320A9002286814523A0A0 +:1046D800240197C0FA1FE78020CC9C402286CE8513 +:1046E800884397C0FA1FE78080C49C40C2A3B727BD +:1046F800002083A7C73C85CFB737002083C7C78270 +:10470800958B85CBB727002083A7473F91CF984348 +:10471800D6236244F240D2444249B24905468D4507 +:10472800054505616FA0403001478146DDB7014569 +:1047380091B7494581B7B727002083A7C73C8DC7E4 +:10474800B737002083C7C782958B8DC3B727002052 +:1047580083A7473F99C79843D62305468D45054506 +:10476800D1B701478146D5BF01458280494582803E +:104778009307C01C63FCA700094582800945F240E5 +:104788006244D2444249B2490561828055C9011147 +:1047980022CC2A8421054EC64205AE8991659385AF +:1047A800557141814AC806CE26CA97C0FA1FE780CC +:1047B800E0882A8961D5B724002003A5C43F9384E3 +:1047C800C43F09C597C0FA1FE780409413058900C4 +:1047D8002320A9002286814523A0240197C0FA1F1F +:1047E800E78080BB9C402286CE85884397C0FA1F0D +:1047F800E780E0B39C40C2A3B727002083A7C73C4B +:1048080085CFB737002083C7C782958B85CBB7275D +:10481800002083A7C73F91CF9843D6236244F24034 +:10482800D2444249B24905468D45054505616FA008 +:10483800E01F01478146DDB7014591B7494581B77A +:10484800B727002083A7C73C8DC7B737002083C789 +:10485800C782958B8DC3B727002083A7C73F99C709 +:104868009843D62305468D450545D1B7014781466E +:10487800D5BF01458280494582809307C01C63F4F7 +:10488800A70009458280797122D44ECE06D626D259 +:104898004AD0AE892A8425C12105916542059385B0 +:1048A8007571418197B0FA1FE78040792A890945D7 +:1048B80063040908B724002003A5843F9384843F38 +:1048C80009C597C0FA1FE780608413058900232073 +:1048D800A9002286814523A0240197C0FA1FE780FA +:1048E800A0AB9C402286CE85884397C0FA1FE780FC +:1048F80000A49C40C2A3B727002083A7C73C01455A +:1049080085CFB737002083C7C7824945958B8DC7A8 +:104918006C001305D030EF802179B247014593F739 +:10492800070F99CBB727002083A7873F8D450545FB +:104938009443D223EFA00010B2502254925402594B +:10494800F24945618280B727002083A7473F89CF76 +:10495800D2238C43411106C697C0FA1FE780209DD9 +:10496800B24001454101828009458280B727002075 +:1049780083A7473F85C7B727002003A7C73F8947B5 +:1049880019CF52230C43411106C697C0FA1FE7807E +:10499800009AB24081473E854101828089473E8521 +:1049A8008280797106D622D426D24AD04ECE52CCF5 +:1049B8008D4763FCA7008944B250225426850259CA +:1049C8009254F249624A45618280372900200347A0 +:1049D800496EC144E312F7FE9307F5FF9309496E48 +:1049E80093F7F70F8546AE842A8403CA2900130972 +:1049F800496E63EAF6068DE199452800EFD07FE518 +:104A0800B739002003C58982914523018900EFC089 +:104A18002FC235E481444DB719468145280097C017 +:104A2800FA1FE780609719462C00268597C0FA1F61 +:104A3800E780E0A049F119469305F00F280097C0D8 +:104A4800FA1FE780609519462C00268597C0FA1F43 +:104A5800E780E09E2DF11946A685280097C0FA1F29 +:104A6800E780E08C71BFE31DE5F803A5C9002C00C1 +:104A7800EF60707CAA8449D52381490135BF28009D +:104A8800EFE02FE8AA8405ED930571001305F041C6 +:104A9800EF6071568483BDFC8D47E31DF4F64545F0 +:104AA800EFE05F8C25D9B7771800938707A0330606 +:104AB800F50203C589829145EFC02FB0F5BD2301EA +:104AC8004901DDBDB737002083C7C782918B8DC3ED +:104AD8003725002041111305053F06C6EFD0DFD664 +:104AE800B240B72700207D572395E76E41018280A9 +:104AF80001456FD07FD5B72700207D57A385E73EB6 +:104B0800B727002079572385E73EB727002023855C +:104B18000778B72700202396073EB727002023AA47 +:104B2800073EB727002023AE073EB727002023AC57 +:104B3800073E37570500B727002093878749130793 +:104B480067D098C33747050013078740D8C337474E +:104B580005001307E7FC98C7B7470500372700206B +:104B68009387870F2328F73E8280411126C2B724F6 +:104B7800002083A7C43C06C622C49DCB2A840D45C9 +:104B880097B0FA1FE780E06AAA8501CD930700FD78 +:104B98001CA18D4700B13CA183A7C43C8823EFB07A +:104BA8003FAF19C42244B240924441016FF06FBF35 +:104BB800B2402244924441018280797152CC372A12 +:104BC80000208327CA3C4AD006D622D426D24ECE0D +:104BD80056CA0149A1C703C91700B7240020854751 +:104BE800AA899384446E6305F904DC2005499DE78E +:104BF8000D4597B0FA1FE780C063AA8509CD9307D2 +:104C080000FD1CA19147A30035013CA18327CA3CA4 +:104C18008823EFB0FFA7EFF0CFB80549B250225470 +:104C28004A8592540259F249624AD24A45618280C1 +:104C3800B727002083A7473FD28A85E30145EFE0E5 +:104C48006FF22A8601CAB737002003C587828945D3 +:104C5800EFB01FF683A7CA3CB1A09443D2239305B3 +:104C6800E1000545EFD0FFC871D91C21858BF9D724 +:104C78000545EFE02FEF9307B0032A8463FEA702F0 +:104C8800B737002003C587825D661306067089451D +:104C9800EFC0AF92B7270020130444FC2396873E49 +:104CA8008327CA3C094798B3DC2081C723820400C4 +:104CB800B5B74E855D3D9DB7130600643306C50242 +:104CC80051B7411122C42A840D4506C697B0FA1F70 +:104CD800E78020560DC1930700FD1CA1CD473CA1DC +:104CE80000B12244B7270020B240AA8503C5B73EC9 +:104CF80041016FB0FF99B2402244410182805621A0 +:104D08000111896706CE22CC26CA138667002A8736 +:104D18006398C6001C4701458C23EFF08FC81DA877 +:104D2800138687006396C6001C4705458C23F5B794 +:104D3800138697006392C602B727002083A7C73C53 +:104D4800014595C31847082371E5054798B30545FC +:104D5800EF907044054501A81386A700639AC60022 +:104D68001C478823993DF2406244D2440561828001 +:104D780013866703E380C6FA13867703E386C6FAC9 +:104D880013868703639AC6081C4537240020130737 +:104D9800E00F84238347A43E1304A43E638BE702F9 +:104DA8001307F00F6384E702114597B0FA1FE780F5 +:104DB8004048AA8501CD930700FD1CA1894704B18D +:104DC8003CA1A30105000820EFB09F8CF9571CA057 +:104DD80051B7B727002003A7C73C3E84014541D7F8 +:104DE8008DE885447D454485EFE0CFD76886130577 +:104DF8000002EFE02FD78327C43CC8851307B10012 +:104E080084B374001306A10085450545EF90504210 +:104E180091B72685993B3DBF13869703E382C6F475 +:104E28001386E7036396C6001C4509458C23F5B530 +:104E38009387F7030145E398F6F21C4788231DE59D +:104E48006C001305D030EF802126B247414793F715 +:104E5800070FE381E7F09305B10013056031EF8098 +:104E6800A12488858545EF90303DEDB5993DDDB5A8 +:104E7800B737002083C7C782411106C6958B99CBE7 +:104E88003725002013058549EFD07F9B4D45B2405B +:104E9800410182800145EFD09F9A0145CDBF9821FD +:104EA800937625009377D70F99C293672700131835 +:104EB80085011358884113F7F7076354080013E76F +:104EC8000708937685009377770F99C293678700D1 +:104ED8001377050293F6F70D19C393E6070294A119 +:104EE800634508009377A50291C71C2293E7C70082 +:104EF8001CA282807DFD1C22CD9BDDBF2D45631B3E +:104F08000710882109476313E51001114EC6BE89B1 +:104F1800DC4122CC26CA4AC806CE98339C23B684E4 +:104F280022075D8F42078D664187938736A03284BA +:104F38002E89630BF70A63C0E702938716A06307FD +:104F4800F70863CAE70A938606A0630BD704239081 +:104F58000400054559A0938766AA630EF70893874E +:104F680086B86301F70A938646A0E312D7FEDC45AC +:104F7800C1C321479AA09A2318A29A23218318B261 +:104F8800BA2338A2BA23218338B2DA2358A2DA2303 +:104F9800218358B2FA2378A2FE23A1837CB22DA8DC +:104FA800C84597B0FA1FE7800042420541814E8606 +:104FB800637335012A8692A0420641828325C9007F +:104FC800228597B0FA1FE780803639A0DC459E23FA +:104FD8008AA01CA2A1831CB20145F2406244D244BB +:104FE8004249B2490561828099479EA01946F9B79E +:104FF80023900400D5B785479EA08327C9009C232A +:105008001CA0D9BFE1479EA061464DBF2390060072 +:1050180005458280828083C805008947639BF8160E +:10502800DC41797122D406D626D24AD04ECE52CC53 +:1050380056CA03C817009C232E8422083368F80038 +:1050480042088D6713580841138327A0630F68101F +:105058002A8A3A89B684B285634C0301138707A06C +:10506800630BE802938717A06301F80A854711A824 +:10507800138737A06300E80C138767AA8D47E317E7 +:10508800E8FEB250225492540259F249624AD24A76 +:105098003E8545618280484432C697B0FA1FE78052 +:1050A8008032420541819D47E36D25FDB72A0020E6 +:1050B800938A3A4083C70A00B3099900B24563D47A +:1050C8003701B5477DBF48442686C2094A9597B03F +:1050D800FA1FE780C02503C60A00484493D909018E +:1050E80005063306364181454E9597B0FA1FE7808D +:1050F800A02AB727002083A7874099E3814751B7A3 +:105108009C438145E5DF528525A0AD47E31B09F6A1 +:10511800E39916FB1C3214225844A207D58F1EA30C +:10512800B727002083A78740F1DB9C43E1DB854557 +:105138008297E9B7B727002003C7C7408D4731D307 +:10514800AD47E31009F49947E39DF6F6484419463C +:1051580097B0FA1FE780A01DB727002083A78740D4 +:10516800D1DF9C43C1DF8D4579BFB727002083C5B8 +:1051780047398D47A18991D5AD4701F78547E39216 +:10518800F6F4182293070008E3EDE6EE5C4498A3D2 +:10519800B5B785473E858280B7270020411123A4F3 +:1051A8000740B727002022C4238307400944B727B4 +:1051B8000020A3838738B7270020A3810740B7279B +:1051C800002023828738B727002023900740B7277D +:1051D8000020238A873837250020B7270020214759 +:1051E800238607401946B727002081451305054146 +:1051F80006C6A38AE73897B0FA1FE780E019B727F1 +:105208000020238587383707A000B7270020938719 +:10521800C7381307070598C33707E803D8C3B72764 +:105228000020238387380547B7270020A382E73863 +:10523800B7270020238B873837250020B727002081 +:10524800238B07406146B727002081451305854A0F +:105258002384873897B0FA1FE7800014B727002007 +:10526800A3848738B7270020A38207403757050053 +:10527800B727002093878732130747F098C3B240B7 +:105288002244375705001307E701D8C323A40700B2 +:105298004101828095476302F51A797122D426D29A +:1052A80006D64AD04ECE52CCB2842E8463E4A704EC +:1052B8008947630DF51463EFA7004DC50547630FD4 +:1052C800E5120945B250225492540259F249624AF1 +:1052D800456182808D476304F5149147E313F5FE19 +:1052E800A1476395F508372500202146A6851305B3 +:1052F800C5383DAA930720046305F51663E1A702A4 +:105308009D476306F514A147E31DF5FA8547639F9A +:10531800F5041822B7270020A382E740F1A89307D5 +:1053280010086309F51493072008630DF514930713 +:105338000008E318F5F88547639AF502B7270020B7 +:1053480083C747401387F7FFB72500209385054C8F +:1053580012072E97920750478820A107BE95EFF0B5 +:105368001FB459A89307800F63F4B700614599BF2C +:10537800372A002083464A40B72700201387074C66 +:105388009206369748479389074C130A4A4009C939 +:1053980097B0FA1FE78080D7B7270020A38107407E +:1053A80013061400916593850571328503490A0037 +:1053B80032C697B0FA1FE78060C883470A0012090F +:1053C8004E9992072326A900CE97C84745D1324661 +:1053D800814597B0FA1FE78020FC83470A002286A0 +:1053E800A6859207CE97C84797B0FA1FE78020F4A2 +:1053F800B7270020A38187400145E9B5E398F5F672 +:105408001A22B72700202390E740FDB78547E39F7E +:10541800F5F41822B72700202386E740F1BF994703 +:10542800E396F5F4372500201946A68513050541AE +:1054380097B0FA1FE780A0EFC1B78547639DF506CF +:105448001822B72700200145A382E7388280E14768 +:10545800E39EF5F0372500206146A6851305854AA9 +:10546800C1BF8547E394F5F01822B7270020238AA7 +:10547800E73859B78547E39BF5EEB727002083C780 +:105488002740C9B58547E393F5EE082293772500B1 +:10549800E39E07ECB727002083C7D740B725002035 +:1054A8009385054C1387F7FF120792072E97A107DC +:1054B8005047BE956DB5614582804111AA8706C6E1 +:1054C80011472E856386E70A6361F7020547638EF5 +:1054D800E706A9C709476381E7080D476384E7081A +:1054E8008947B2403E85410182801D47638AE708AB +:1054F800636AF7001547E395E7FEB727002083C7DF +:105508005738B9A821476383E70813072004E399AC +:10551800E7FCB727002083C7473999A0B7270020A1 +:1055280083C7474013974700B72700209387074C46 +:10553800BA97CC478947D5D5B727002003C6374047 +:1055480097B0FA1FE780A0DE31A0B727002083D7E5 +:1055580007409EA1814771B7B727002083C7C7407E +:105568001CA1CDBFB7250020194693850541C9BFA9 +:10557800B725002021469385C538EF80A142D9BFC1 +:10558800B725002061469385854A5DBFB72700206F +:1055980083C75740F1B7630F0538B72700209387B3 +:1055A800674098236318073885463728002094A356 +:1055B80009479307084C98A337E706001307C71154 +:1055C800D8C337E706001307870ED8C794A72395D3 +:1055D80007007D57630DE53413771500854539C3FA +:1055E800B7E606009386860FD4CBB72600209386AD +:1055F80076380947D4CFB726002098AB2382E640F7 +:105608002380E70237E7060005461307071090AF27 +:10561800239D0700D8D32384C7022395070223A616 +:1056280007028D45137725002DC313974500B7E66C +:1056380006003E979386860F54C3B72600208948F4 +:1056480005469386463854C72300170110A723152B +:1056580007001387150042074183B72600202381DE +:10566800E6401207B7E606003E979386060F54C336 +:105678008905B726002093860640C2052300170136 +:1056880010A72315070054C7C181137745002DC300 +:1056980013974500B7E606003E979386860F54C3D6 +:1056A800B7260020894805469386463954C7230003 +:1056B800170110A723150700138715004207418318 +:1056C800B7260020A386E6401207B7E606003E97F5 +:1056D8009386861154C38905B72600209386C64051 +:1056E800C2052300170110A72315070054C7C1815D +:1056F8001377850021CF13974500B7E606003E973C +:105708009386860F54C3854614A7B72600200946FA +:105718009386563954C710A323150700138715001D +:10572800420741831207B7E606003E979386461262 +:1057380054C3A14614A78905B726002093860641BD +:10574800C20510A32315070054C7C18113770501AB +:1057580029CF13974500B7E606003E979386860F34 +:1057680054C3B7260020894805469386A63854C7EF +:105778002300170110A723150700138715004207F8 +:1057880041831207B7E606003E979386461154C335 +:105798008905B72600209386C638C205230017015D +:1057A80010A72315070054C7C1811377050229CF15 +:1057B80013974500B7E606003E979386860F54C3B5 +:1057C800B7260020894805469386663854C72300C3 +:1057D800170110A7231507001387150042074183F7 +:1057E8001207B7E606003E979386460F54C389050D +:1057F800B726002093865638C2052300170110A744 +:105808002315070054C7C1811377050429CF1397BF +:105818004500B7E606003E979386860F54C3B72621 +:105828000020894805469386663954C72300170126 +:1058380010A7231507001387150042074183120795 +:10584800B7E606003E979386061254C38905B72625 +:10585800002093866641C2052300170110A723156F +:10586800070054C7C1811377050821CF1397450056 +:10587800B7E606003E979386860F54C3D14614A711 +:10588800B726002009469386863854C710A32315E7 +:10589800070013871500420741831207B7E6060081 +:1058A8003E979386461054C3854614A78905B726A4 +:1058B80000209386864AC20510A32315070054C703 +:1058C800C1811375051039C913974500B7E606005D +:1058D8003E979386860F54C3B72600200945054690 +:1058E8009386963808A310A72315070054C7138773 +:1058F8001500420741831207BA9737E706001307D6 +:105908004710D8C389053727002013075740C20519 +:1059180088A390A723950700D8C7C181B726002080 +:105928009386863241461305084C6F30C02D130507 +:1059380030037DB101458280011106CE22CC054697 +:10594800638CC50211460944639EC5023EC63AC42B +:1059580036C2EFD0AF8C2A8492462247B2471DE167 +:105968003E86BA853685EFD0CF81EFF06FD0EFF065 +:105978006F95EF60806639A0EFD04F8A2A8419E1CD +:10598800EFF00FCF2285F240624405618280797181 +:105998004ECEAE896C0022D426D24AD006D62A89A9 +:1059A800B284EF0030682A840DE1CE854A85EFC0C5 +:1059B8004FE02A8419E93245B726050026879386E1 +:1059C800E6FA2D468145EF00D07F2285B250225459 +:1059D80092540259F2494561828079714ECEAE895E +:1059E8006C0022D426D24AD006D62A89B284EF0087 +:1059F80070632A840DE1CE854A85EFC00FE92A84B9 +:105A080019E93245B72605002687938686084D464C +:105A18008145EF00107B2285B250225492540259DE +:105A2800F24945618280397126DAAE844C0022DC65 +:105A38004AD84ED652D406DEAA893289368AEF0071 +:105A4800705E2A8421E9A685630D09009E202C003A +:105A58007C84BE207C85930720307C869307800257 +:105A68005C874E85EFC00FD22A840DE55946A6857E +:105A78001305A1002304210197B0FA1FE780208BAA +:105A88001245B72605005287938606F625462C0050 +:105A9800EF0030732285F2506254D2544259B25901 +:105AA800225A21618280797126D2AE846C0022D478 +:105AB8004AD04ECE06D6AA893289EF00B0562A843B +:105AC8000DE1A6854E85EFC08FD02A8419E93245AD +:105AD800B72605004A879386A6FC3546A685EF00BB +:105AE800506E2285B250225492540259F2494561AF +:105AF8008280BD47638CF50663E9B702A5476387D3 +:105B0800F50663EDB7009947638CF5049D47638FED +:105B1800F5049547638CF50401458280B547638792 +:105B2800F50463E1B704AD47F5B7DD47638EF502C9 +:105B380063EAB700C947638BF502D9476386F50264 +:105B4800C547C9BFF5476383F50263E4B700ED476E +:105B5800D1B793072005638BF5009307200D5DBF30 +:105B68004845828008418280084582804841828079 +:105B78009307F00F630FF506011126CAAA841305CF +:105B8800000222CC4AC84EC652C456C206CE3A8932 +:105B9800B689B28A2E8A97A0FA1FE78080692A847C +:105BA8004D450DC8930700FB1CA0A3005401231109 +:105BB8004401230234011305840061466305090288 +:105BC800CA8597A0FA1FE7808076A2852685EFA070 +:105BD8003FAC0145F2406244D2444249B249224AAC +:105BE800924A05618280814597A0FA1FE780C07AB2 +:105BF800E9BF09458280011122CC06CE2A844C8651 +:105C0800D08697B0FA1FE780A0E805C15425B737BA +:105C18000020214793878782639DE600E823780068 +:105C28009306E0070146A285A137F2406244056168 +:105C3800828078009306E0070146A285C833EDB755 +:105C4800930700643306F6026FB04F8B15C5182111 +:105C580085469307270093F7F70F63FFF600411176 +:105C680022C42A843A8506C6EFB04FA3FD571CA06C +:105C7800B24022444101828082801A219307000B9E +:105C88006310F7025C214947639AE7001839854792 +:105C98006398E7002A2185456F30F01A6D47CDBF1C +:105CA800828001116C846C0022CC26CA4AC806CEB8 +:105CB8002A89B6847085EF00F0362A840DE12C001D +:105CC8004A85EFC0CFA22A8419E93245B7260500D4 +:105CD8002687938646EB15462C00EF00904E2285CA +:105CE800F2406244D2444249056182807971930747 +:105CF80020306C8470857C862C00930780020146D6 +:105D080006D65C870D33B25045618280C1777971C0 +:105D180085073EC4894726D27C86AE8493078002D5 +:105D28004C0022D44AD006D62A895C87EF00902FEF +:105D38002A840DE12C004A85EFC06FB22A8419E944 +:105D48001245B726050026879386860345462C000C +:105D5800EF0030472285B2502254925402594561CF +:105D68008280B2860546C1B1797126D2AE846C00B4 +:105D780022D44AD04ECE06D6AA893289EF00902A7C +:105D88002A840DE1A6854E85EFC02F8E2A8419E955 +:105D98003245B72605004A879386A6E50D46A685AF +:105DA800EF0030422285B250225492540259F249EF +:105DB800456182807971930720206C8470857C8688 +:105DC8002C0093078002014606D65C87EFF0BFC51A +:105DD800B25045618280011122CC06CE2A842EC69B +:105DE80032C436C297B0FA1FE78080CA0DC9482569 +:105DF800B7370020A1469387878212472246B245CB +:105E0800631AD500E823B2862E86A2856244F24042 +:105E18000561B9BBB286C8332E86A285C5BFF240DC +:105E280062440545056182806FF07FB66FF03FB62A +:105E38006FF07FC76FF03FC779714ECEAE896C00A7 +:105E480022D426D24AD006D62A89B284EF00901DE1 +:105E58002A840DE1CE854A85EFC02F992A8419E955 +:105E68003245B72605002687938666FE3D4681455E +:105E7800EF0030352285B250225492540259F2492B +:105E880045618280B28601466FF0FFB9011122CCCC +:105E98002E846C0026CA06CEAA84EF00B018DD470F +:105EA8006309F500930710101EA4A2852685EFC08C +:105EB800CF9DF2406244D24405618280239405005C +:105EC8009E2599E36FF07FB109458280C5BFB7274A +:105ED800002003C7E744854763F8E702011122CC95 +:105EE8002E846C0026CA06CEAA84EF00B01301E9FE +:105EF800930700101EA4A2852685EFC00F99F240D3 +:105F08006244D2440561828059458280B7270020C7 +:105F180023ACA7408280B727002023AEA740828009 +:105F2800011122CC26CA06CE2A84AE8497B0FA1F65 +:105F3800E78000B6A6852285EFB03FC705E9228530 +:105F4800648697B0FA1FE780A0B40DC15425B7370F +:105F58000020214793878782639FE600E823780023 +:105F68009306F0070146A285EFF09FC0F240624415 +:105F7800D24405618280C833DDB7011126CA06CE36 +:105F8800B68422CCDD4663E3B608D94663FFD50A5A +:105F9800A5466382D50A63EFB6049546638DD50896 +:105FA80099466388D50A054441687D186317060930 +:105FB8003AC6EFB05FC33306854032474206418296 +:105FC800420441803305C4004205BA85418132C686 +:105FD800EF306075AA8751C199C0324692A0B305C7 +:105FE80080406244F240D2443E85056117A3FA1FFF +:105FF8006700031FC5466380D504C9460D44E39472 +:10600800D5FAC167FD17E31DF6FA5DB7F54663805B +:10601800D50463E4B600ED46D5B79306200563883A +:10602800D5029306200DE390D5F8C167FD170D44FE +:106038006319F600B5BF094485BF9306200DE391A7 +:10604800D5F8310642064182A5BF15445DBF0D440F +:106058004DBFC167FD171D447DB7F2406244D2446D +:1060680005618280011122CC26CA06CED0212E8459 +:106078001307000281469945AA8401372AC621C51B +:106088001E205020930554007C803E207C81894747 +:106098007C82930780025C8397A0FA1FE7802029FF +:1060A8005C208A8526857C84EFB01FE72A8411C589 +:1060B800324597A0FA1FE78060052285F2406244C6 +:1060C800D244056182804D44CDBF5D7186C6A2C4AD +:1060D800A6C2CAC04EDE89476306F600C147094416 +:1060E8006318F6040144A9C52E894C0832C6B6893E +:1060F800AA840D2F2A84324605EDC1778507CA8503 +:106108001305D1013ECC230EC10097A0FA1FE780EA +:1061180000222C082685B9372A8419E95245B72662 +:1061280005004E87938666F01D462C08EF0070091F +:106138002285B640264496440649F2596161828018 +:10614800797122D436844AD04ECE52CCB2892E8A66 +:106158003A898146130710022286D94526D206D6E7 +:10616800AA84213D2AC621C12286CA8560842312B9 +:1061780041012313310197A0FA1FE780401B4C000F +:106188002685EFB05FFA2A8411C5324597A0FA1F19 +:10619800E780C0F72285B250225492540259F2493E +:1061A800624A456182804D44F5B7011122CC26CA66 +:1061B80006CE4AC8DD472A84AE846389F502814742 +:1061C8000A206C005C86EFB0DFF905456380A408FF +:1061D8000824B165938505B8EFA0FF87E5473CA083 +:1061E800B7270500938707165CC085A05839314941 +:1061F800B2863306270318499C4232971043E310AE +:10620800F6FCDE225223E31CF6FA8C46084797A0D8 +:10621800FA1FE780C02245D55C385828850793F7D0 +:10622800F70F5CB863FAE702B387270318480A2018 +:10623800BA979847D623B2238E23193749F10824F1 +:10624800B165938505B8EFA01F815945F2406244B6 +:10625800D2444249056182807C289DB7011122CC35 +:1062680026CA06CEDD472A84AE846393F5060A2142 +:10627800EFB07F97522C36285A286D162A96420678 +:106288004182B307D640C20752ACC18363F9E7061F +:106298009305C5FF3308F7406358B802BA96918E44 +:1062A800C206184C0E280A20C1823E97513D0DE1C6 +:1062B8000824B165938505B8EFA0EFF95945F24078 +:1062C8006244D244056182806D1593160501D1BFE1 +:1062D80081470A206C005C86EFB0BFE80545E38083 +:1062E800A4FE0824B165938505B8EFA0CFF6E5476D +:1062F8003CA0B7270500938707165CC0C1B7854740 +:10630800C9BF397126DAAE842C0022DC4AD84ED6B1 +:1063180006DE2A89B28939232A8431E54A85EFB015 +:106328009F8CD6206D1563C5A60093160501C18202 +:106338009844B2208E204A8521352A840DE53146BD +:10634800A68508082306010097A0FA1FE78020FE0B +:10635800BE202245B72605004E879386860F5D46E8 +:106368006C00FC86B92D2285F2506254D2544259F1 +:10637800B2592161828071B769B7797126D206D680 +:1063880022D44AD04ECE52CC56CA5AC88944D1C912 +:1063980049CA2E842A89BA8A368B328AEFB0BF84DA +:1063A80093054400814771159A21635DA708850705 +:1063B80093F7F70FB105E319FAFE8A854A859D21FF +:1063C800AA8425E131453305AA02916593851570A4 +:1063D800CD4497A0FA1FE78060C6AA8939C1314623 +:1063E8003306CA02A28597A0FA1FE78040F4184432 +:1063F800562032200E204A85A133AA8415ED024585 +:10640800B7260500854756879386860F5D464C005C +:106418005C824EC423064101A306010023076101E3 +:106428004D23B2502254268502599254F249624AA9 +:10643800D24A424B456182804E8597A0FA1FE78079 +:10644800E0CCC5B7ED44F1BF79714ECE37E6060012 +:10645800AE89C16526D20147AA8489461306C612A9 +:10646800FD15054522D406D64AD0EF1040780544DC +:1064780029C92A891307300281461146F545268520 +:10648800EFF0BFAF2AC655440DCD8357A900CE867D +:1064980001467C8491477C8585471CA1B2472C0026 +:1064A8002685A38007003247FD573CA332473CB3FB +:1064B800EF1060692A8411C5324597A0FA1FE7805A +:1064C800E0C42285B250225492540259F2494561DF +:1064D8008280411106C6EFF0CFE119C5B2404101F3 +:1064E80017A3FA1F670083C2B240410182800111DD +:1064F80006CE2AC6EFB00FD63245B727002023AC08 +:106508000740B727002023AE07409145B737002042 +:10651800A384A782EF30C01BF24005616F201003EF +:1065280093970501C18763D40712B737002003C5C5 +:106538009782797122D44AD006D626D22E8997A07E +:10654800FA1FE78060D42A8449C918219307000AF2 +:106558006312F70885474C08DC85EFB04FDCAA8446 +:1065680005ED8347610171476372F708138717FECA +:106578001377F70F9306000263F1E608858BCDC306 +:10658800B727002083A78741994499C72A20130673 +:10659800B1004C088297AA849C8599C7084409C50C +:1065A80097A0FA1FE78080B695E05247B707000129 +:1065B800938707F07D8FB707120093870710630B47 +:1065C800F70003476101ED476316F7002A20854568 +:1065D800EF3060072285EFA0CF86B25022542165A4 +:1065E8003345A90092540259456182803707301417 +:1065F80005073357F700058B51D3372700200327AA +:10660800C74159DB0347510141FB5C869947230881 +:10661800F1002A206C0023170100EFB02FF3ADBF63 +:10662800B727002083A7C7418DC32A201306B100CE +:106638004C08829735D1AA8483475101B1FF83471B +:106648006101230891005C86E9B79944F5B70145D3 +:106658008280397122DC26DA06DE4AD84ED652D438 +:1066680056D25AD0A5472A84B2846398F50E834738 +:1066780045021A22835A260085072302F50293074A +:10668800F7FFB387FA025442C207C183B69703C91A +:1066980017009C23542522093369F9008547639024 +:1066A800F60233075703231006008149014A130BEA +:1066B8003501931A070193DA0A0163EA5905C1679C +:1066C800FD176303F90A1E286370F90A05094209D0 +:1066D8005424135909012317240105470A20930557 +:1066E800E400639CE6007C85930720307C86930752 +:1066F8008002231421015C872C00EFB0BF88082496 +:10670800B165938505B8EFA00FB55945B9A8B6206E +:10671800DC402C28ED1613865900C206C1823E962D +:106728005A85EFB02FB805C5630B3A01C840B220AF +:10673800B3053501529597A0FA1FE78040BFBE20E8 +:106748003E9A9E20420A135A0A0185079EA0BE203F +:10675800BE99C20993D909018DB75822A947631078 +:10676800F7028347450281CF0145F2506254D25463 +:106778004259B259225A925A025B216182803428C6 +:106788001309340137E506004A8689451305C51102 +:10679800EFB04FB119C10545C9BF342837E5060028 +:1067A8004A86894513058512EFB0CFAF6DF53428B9 +:1067B80037E506004A86894513050511EFB08FAE07 +:1067C80079F9342837E506004A8689451305850F87 +:1067D800EFB04FAD69F1D820BD47E3EEE7FAA56702 +:1067E80093874712B3D7E700858BD5D783474402F1 +:1067F80085072302F40203D92400D1B5011106CE7E +:106808002EC697A0FA1FE780001E11C93C25B24585 +:10681800138717006395E50093F707F83CA5F24046 +:1068280005618280011106CE2EC697A0FA1FE78067 +:10683800801B1DC1B24591C188C11C251307E00FFB +:106848005D456388E7001307F00F01456383E700A0 +:106858005945F240056182800945E5BF411122C4CE +:106868002A84210506C626C24AC0EFF02FBE3C2066 +:10687800A51793F7D70F89EB58248547631EF704AC +:106888001C4881443149A1E3FD57230104001CB48D +:10689800230204021305C4002244B2409244024970 +:1068A80061468145410117A3FA1F6700E3AEB3872C +:1068B80024033E95084509C597A0FA1FE78000857F +:1068C800850493F4F40F5C280848E3E2F4FE97A0EB +:1068D800FA1FE780A0834DBF084C75F975B74111C1 +:1068E80022C4416406C626C29307E4FF6301F50289 +:1068F800AA849DE197A0FA1FE780E00E09E9130535 +:10690800F4FF97A0FA1FE780000E11C106A1B2405C +:10691800224492444101828085476391F50497A0FF +:10692800FA1FE780400C2A847DD1FD571EA11C2444 +:106938001307F00F6381E7021307E00F6389E7008D +:106948003420083401475146A685EFF06FA222850E +:106958003137FD571CA42305040055BF8947E39828 +:10696800F5FA8545EF40203D5DF1268597A0FA1F91 +:10697800E78060072A8445FD59BF39C11825930768 +:10698800F00F630FF702011122CC06CE2A843421BE +:106998000E21083501475D46EFF08F9D3820E1470D +:1069A8006318F7000A206C0023060100EFB06FFBA4 +:1069B800F9571CA422855D35F24062440561828046 +:1069C80082809307F00F6306F706011122CC26CACE +:1069D8002A844EC6AE84B689AA8593068500377583 +:1069E80005004AC852C43A89328A1305259879465F +:1069F80006CEEFF0EFA4A3042401230144012322CF +:106A0800340185C01305C4006244F2404249B249CA +:106A1800224AA685D2446146056117A3FA1F67007A +:106A28000391F2406244D2444249B249224A056184 +:106A380082808280B72700202382A74282809547E0 +:106A48006394F50683474502854685072302F502C8 +:106A58001E2258423022FD17C207C1836312D60492 +:106A68008A07BA9798339C232207D98F7A2563F52A +:106A7800E704411106C622C485075EA52A8493054A +:106A8800C5000A21EFB0AFC60824B165938505B8E3 +:106A9800EF907FFCB2402244D9473E854101828075 +:106AA800C946B387D70275BF5422294785476396DD +:106AB800E6000347450211C381473E8582809D4712 +:106AC800639BF50483474502762585072302F50273 +:106AD8001E225842FD178A073E971C331823A20727 +:106AE800D98F014763F2D704411106C622C485072E +:106AF8002A845EA59305C5000A21EFF0AFD60824C5 +:106B0800B165938505B8EF901FF5B2402244594707 +:106B18003A85410182805422A94705476396F600C9 +:106B280003474502133717003A858280411122C472 +:106B380006C626C2B5472A846395F50483474502ED +:106B4800B28485072302F5020A21EFB0CF899E207F +:106B58001307F5FF014563C1E7027A240A2093056C +:106B6800C400BA977EA4EFB08FC60824B165938598 +:106B780005B8EF905FEE5945B24022449244410176 +:106B8800828058229D470545E318F7FE03454402D5 +:106B980013351500D5B7C5476396F5061E223A2268 +:106BA800FD17B387E7020347450205072302E502FD +:106BB8005842C207C1833E973C333823A207D98F76 +:106BC80041677D176395E70081473E85828013877B +:106BD80017005AA57A25E3F9E7FE411122C4930567 +:106BE800C5002A840A2106C6EFB06FC70824B1651C +:106BF800938505B8EF903FE6B2402244D9473E85D9 +:106C080041018280542229478547E390E6FC0347E7 +:106C180045025DFB5DBF011122CC26CA4AC852C499 +:106C280006CE4EC6BC2115472A8AAE8432843689E0 +:106C38006399E7043686A28526851135AA895DE120 +:106C480085476311F40A03474900A9476300F7021F +:106C580088344A8785460146D285EFE07FF119E5F9 +:106C680085454A85EFE0FFE813341500B4208834E1 +:106C780001476946D285EFE0BFEF2685EFF01FBEDA +:106C8800B5A81D476397E7003686A2852685053D8A +:106C980075B725476398E7003686A2852685EFF005 +:106CA8005F9B69BF35476397E7003686A2852685CF +:106CB800B53D69B745476397E7003686A2852685BF +:106CC800D93DADBF5D47639EE700D8258547368629 +:106CD800A2852685631DF702EFF02FCD8547631A3D +:106CE800F5048549A5476317F402835709009DE316 +:106CF8000544E38D09F6D947E391F9F82285F24076 +:106D08006244D2444249B249224A05618280EFF086 +:106D1800EFD4E9B788344A87A2860146D285EFE0E6 +:106D28003FE579F5A2854A85EFE0BFDC133415000D +:106D3800C9B70544E1B7397122DC06DE26DA4AD83C +:106D48004ED652D456D29E211944B9E783C925009C +:106D58002A89328A938759FE93F7D70FAE84DDE3E9 +:106D6800B727002083C647421307F00F938A47428C +:106D780019446383E602F5476395F90497A0FA1F5F +:106D8800E78060C6AA891DCD30250DCE93178601F0 +:106D9800E18763DD070001442285F2506254D25432 +:106DA8004259B259225A925A21618280F5454A8540 +:106DB800EFE07FE483C7A90093E707F82385F9008C +:106DC800D9BF8149D62090448C3088203800EFB054 +:106DD8004FBA2A8471F1B42003C50A00380001466D +:106DE800CA85EFE0FFD82A8445F9B24799C3230042 +:106DF8000A00BC207547E390E7FAE38E09F823857B +:106E0800F90059BF97A0FA1FE780E0BDAA8A41D5CB +:106E18008547639FF908CE2088443000EFA09FDEA5 +:106E28002A843DF903C72A00C54763FFE708DD4701 +:106E3800630DF70AB737002003C59A0083C7978206 +:106E48006398A70A014403C72A008D47631EF70405 +:106E58003C8403D7CA0063F4E7002396FA0083D57D +:106E6800CA004A85EFF0CF8BB727002083D7876900 +:106E78006D47637BF70283D5CA005D476376B70227 +:106E88001387350091056349F7001307B00FBE85D6 +:106E98006374F7009305B00F1166C205130606293F +:106EA800C1814A85EF70702C5685EFF03F9BEDB598 +:106EB8003C211144E39237EF5C41E38F07ECCE208D +:106EC800884430008297A9BFB72702009387072A12 +:106ED800B3D7E700858BB9DFB0203400D6854A8563 +:106EE800EFF07FD32300AA0045BD83A70A01E5B7C9 +:106EF800B42038000146CA85EFE09FC72A8421F5EF +:106F0800AC202800EFE0FFBE15DD23000A0025BFF6 +:106F1800011122CC3734002006CE26CA4AC84EC6F4 +:106F280052C49309848203C589009307800291653E +:106F38003305F502938565703729002093040942CB +:106F48009790FA1FE780800F03C689009307800295 +:106F580081453306F60288C09790FA1FE780C04340 +:106F68009C404D459DCF93048482130909420144F6 +:106F7800130A8002FD599C24636DF40237750500DD +:106F88001305E5D3EFE09FF8377505001305458035 +:106F9800EFA0BFB7377505001305658EEF30B05009 +:106FA8000145F2406244D2444249B249224A05614D +:106FB8008280B3074403032509006146814505041F +:106FC8001374F40F3E952310350123010500231493 +:106FD8003501230505002302050231059790FA1FA4 +:106FE800E780803B49BF01458280B737002083C6D0 +:106FF8001783814763E5D70001473A8582802E874A +:10700800910503D6C5FFE30AA6FE8507E5B70DC9B6 +:107018003C210547890793F7F70F6373F70241117E +:1070280022C406C62A840E2128310147F9465D4646 +:10703800EFE01FB4F9573EA0B240224441018280DC +:107048008280B737002003C71783FD56814763E363 +:10705800E700828016A12301050085071105C5BF39 +:1070680001458280372600201306763A93070002EE +:107078001CA237270020FD572303F73A37270020A3 +:10708800230CF73837270020A30BF7388545B72797 +:1070980000202392B73AB727002023930742B72747 +:1070A800002023A80742B727002023A00744B727BA +:1070B800002023AA0742B7260020B7E706009386D8 +:1070C800C6399387C710DCC2B7270020238407423C +:1070D800B727002093874733094798A298A398AB0E +:1070E8002380E7022388E70237E706001307C70F64 +:1070F800D4C7D8DBB7E606000D47238CE702938692 +:10710800860F37270020D4CB0327C74237E5060070 +:10711800B7E606001305C5119386C612C8C38CA727 +:10712800239507008CAF239D0700D0CFD4D32384A9 +:1071380007022395070223A60702239D0702D8DF2B +:10714800B72700203777050093874737130747206D +:1071580023A00700D8C323A407008280411106C6D4 +:10716800693509C52821B240410182800145E5BF42 +:10717800411122C426C24AC006C6AA842E89328476 +:10718800AD3501E94165CA857D158535C54701C518 +:1071980006A120A18147B2402244924402493E857B +:1071A8004101828029E389483547639F160301110D +:1071B80006CE22CC26CA1832102293C7F7FF220720 +:1071C800598EF18F32C69DE3C4452A84A685793746 +:1071D80032460147630EA60022856244F240A68526 +:1071E800D244056171B72D473A858280130700089C +:1071F800F2406244D2443A850561828083C8050022 +:1072080009486394080303A8450083471800034806 +:107218000800A207B3E70701C2070D68C187130872 +:107228002890639407018947B5BF054582800111FD +:1072380022CC3724002013048439182006CE26CA0D +:107248004AC84EC69307F00F630FF702AA8929456B +:10725800B2842E899790FA1FE780A0FD0DC5930789 +:10726800100B1EA12302050023113501231325014C +:1072780006A5AA8508206244F240D2444249B24990 +:1072880005616F90EFC0F2406244D2444249B2496E +:10729800056182804111B727002026C2AE8483A5EC +:1072A800C74222C406C62A84553D098909C92285D0 +:1072B8002244B240A685924441016FF0EF98B24053 +:1072C80022449244054541018280411122C426C2CC +:1072D8004AC006C6AA84130445001309850B1E205C +:1072E8009DC3084409C59790FA1FE78020E22285CC +:1072F800314681459790FA1FE780000A3104231A26 +:1073080004FEE31E24FDB2402244FD579EA002491C +:10731800924441018280B737002003C61783B727FC +:10732800002003A7874381476315F6008146368509 +:107338008280BA861307870B835587F4E389A5FEF5 +:10734800850793F7F70FCDB7B727002083A7074422 +:1073580081CBDA236314A700884782809C43CDBF82 +:1073680001458280411106C6C53709C50845B240A6 +:10737800410182800145E5BF011126CA9384450079 +:1073880022CC4EC606CE4AC852C456C25AC0268718 +:1073980081490144814681473D45122345CABDEED6 +:1073A80042233E23B286A297C207C18385093107CB +:1073B800E395A9FE35C42E8991659385457022858C +:1073C8009790FA1FE78080C72A8B39C9814A014AFA +:1073D8008C4495C1D22033054B019790FA1FE78062 +:1073E80000F5DE2088443E9A420A135A0A01979013 +:1073F800FA1FE780A0D163890A00314681452685B6 +:107408009790FA1FE78040F9850AB104E3E23AFD54 +:107418002326690123148900054521A0630DD600A0 +:107428000145F2406244D2444249B249224A924A52 +:10743800024B056182803223E314F6FE5223329414 +:10744800B2974204C2074180C1838DB70545E37AEC +:1074580035FD8DB7B727002083A7474399E301453A +:10746800828098473A276315A700138547008280D2 +:107478009C43EDB7411106C6F13F09C50A21B24048 +:10748800410182800145E5BF411106C6E13709C5C2 +:107498002821B240410182804145E5BF411122C403 +:1074A8002A842E8506C6CD37AA8505462285EF3063 +:1074B800806895476305F500BD476313F5002145CE +:1074C800B2402244410182804111B727002022C4E2 +:1074D80006C603A4474381469387474321C01844FF +:1074E800322718406317A60285CA98C22E8581C91B +:1074F8002146930544009790FA1FE78040E32285D0 +:107508009790FA1FE78080C00145B24022444101AC +:107518008280A2863A84D9B798C3C9BF0545F5B712 +:107528003727002083270744014613070744A1C7CC +:1075380003D847009443631BA802011106CE22CC4E +:1075480026CA05CA14C2AA843E852E849790FA1FBB +:10755800E780C0BB2C002685853F01E519C0B247EE +:107568001CC0F2406244D244056182803E86B687E0 +:107578007DBF14C3C9BF05458280411122C42A8436 +:10758800090506C6EFE08FECFD573CB0B240224437 +:1075980041018280411122C4416406C626C2930774 +:1075A800E4FF6301F502AA849DE19790FA1FE78042 +:1075B800A04609E91305F4FF9790FA1FE780C04534 +:1075C80011C106A1B24022449244410182808547FC +:1075D8006391F5049790FA1FE78000442A847DD1CF +:1075E800FD571EA13C201307F00F6381E702130724 +:1075F800E00F6389E70028300147F9465146A68520 +:10760800EFE00FD72285953FFD573CA023020400E9 +:1076180055BF8947E398F5FA8545EF30C0715DF1AC +:1076280026859790FA1FE780203F2A8445FD59BF99 +:107638001D71A6CACEC686CEA2CCCAC8D2C4D6C22E +:10764800DAC05EDEAE84AC21F947AA896396F504F8 +:107658009790FA1FE780403C2A8411ED0144228567 +:10766800F6406644D6444649B649264A964A064BE9 +:10767800F25B256182803C210547890793F7F70F64 +:10768800E37EF7FC28310147F9460146CE85EFE055 +:107698002FCE2285DD35D9B703AB0400B70700012B +:1076A800938707F037071200B377FB00130707101B +:1076B800B28A0149638BE7022EC69790FA1FE780CA +:1076C800A0352A89B24515C1502105C293178601F4 +:1076D800E187E3C507F84E85EFE0EFD1834749001E +:1076E80093E707F82302F90095BF372A00200347DC +:1076F8006A3A9307F00F130A6A3A1944E301F7F656 +:10770800E147E3EEB7F493D71500FD171397370059 +:10771800B7E70600938707A8BA9703A80700E3000E +:1077280008F483AB4700E38C0BF2420B135B0B01AD +:1077380063050B00C947E394F5F2D62090448C30DA +:107748008820380802982A8419F92C084E85829BCB +:107758002A8431C19C30E39407F0BC20230AA1009D +:1077680039472308F1006396E70262471C33182360 +:10777800A207D98F0C084E85FC81EFA02FDDE30FFF +:1077880005EC14080546D9454E85EFE0CFE42A8478 +:10779800F9B5BC84C5B7B4209147E381F6EC03453D +:1077A8000A0038080146CE85EFE08FBC2A84E3182A +:1077B80005EAAC202808EFE0CFB319C123800A00FE +:1077C8009840B7070001938707F07D8FB70712002D +:1077D80093870710E304F7E8E30209E8BC202302D3 +:1077E800F900B5BD011106CE2EC69790FA1FE780A5 +:1077F800A02211C95C21B245138717006395E500E3 +:1078080093F707F85CA1F24005618280397152D480 +:107818002E8A4ED69305E101AA89528522DC4AD8E0 +:1078280056D206DE26DA328936C63AC4BE8A979020 +:10783800FA1FE7802021054435C1AA84A887394466 +:10784800EFF09FB021CD03284500630908042247C3 +:10785800B246D6874A86A6854E8502982A841DEDAB +:107868009307E00F638CFA02982089476318F702A0 +:10787800D8401C331823A207D98FC2070D67C187C8 +:1078880013072790639CE700834719000346090004 +:10789800D285A2075D8E4E85EFF07F992285F25042 +:1078A8006254D2544259B259225A925A2161828062 +:1078B800797122D422214ECEAA89228556CA06D6AB +:1078C80026D24AD052CC5AC85EC662C4AE8AEFF0FD +:1078D8009FA401E92285EFA03FD3594429E501443B +:1078E80099A003C789008547AA8401446316F70253 +:1078F800AA8513858900EFF03FA821C9FA209624AC +:10790800D044CE2003D52900E1470937D9472A8436 +:107918006318F50223A604002685EFF01F9B41C0DB +:10792800D947E30EF4FA2285B250225492540259F0 +:10793800F249624AD24A424BB24B224C456182809C +:1079480061DDDE202390FA00C1BF13894400014A9B +:10795800B94B594C3D4B83550900DDDDE1476306C2 +:107968007A010357C90011C3D94703572900835621 +:1079780049000326890003D52900EFF03FE92A844E +:107988006319850123240900050A3109E3156AFDF5 +:1079980061B77DD9835709002390FA00F5B703D55D +:1079A800290015BF011170879307E00F1306E10046 +:1079B8000147894606CEEFF07FE5F24005618280F7 +:1079C800797122D42A840A2526D2AE84930521010E +:1079D80006D64AD09790FA1FE780C00679C51C25BD +:1079E8002AC693F707029DC7A881EFF0BF97AA8719 +:1079F800B24511E91E2439459EA0B2502254925432 +:107A08000259456182802A204946829701C51E2471 +:107A18009EA0E5B7035924004A85EFF0DF8F01EDFA +:107A280041657D15EFF03F8F09E51E2425459EA091 +:107A3800E9B723102501130745008147BD461223E6 +:107A480039EE3147B387E702130984003146CA8506 +:107A580091073E959790FA1FE780608D3146CA8559 +:107A680048089790FA1FE780808C52242A204147C3 +:107A78008146DD45EFE06FD02ACE09E51E24454555 +:107A88009EA0A5BF0C4852249790FA1FE780208A31 +:107A98002A204C08EFA01FB32DD15945B9BF85073F +:107AA8003107E39ED7F825459DB705458DB7797110 +:107AB80022D42A840A2526D2AE849305E1014AD02D +:107AC80006D632899790FA1FE780C0F72DC91C2582 +:107AD80093F7070295EF18389307200511E35C2008 +:107AE800362450440E242A200147EFF03FD2AA87BB +:107AF80029E11C3891E72A20EFA0DFA8D94711E136 +:107B08008147B2502254925402593E854561828081 +:107B18002AC6A887EFF01F85AA8705C5B2452A207F +:107B280049468297AA8745D91A249AA0183869FB2A +:107B3800C9BF5947E31AE5FE23000900D1B78547B5 +:107B4800E5B7B947D5B7397122DC4AD84ED652D4F1 +:107B580006DE26DAAA892E8A32C636899790FA1F57 +:107B6800E78080EB09440DC53C211307E00FAA8488 +:107B78005D44638FE7001307F00F5944639AE700E9 +:107B8800324605E2D2854E85EFA03FAC2A841DCD52 +:107B98002285F2506254D2544259B259225A216174 +:107BA800828003550A009305E101231F0100979085 +:107BB800FA1FE78020E9A887EFF01F8DAA85054600 +:107BC8004E85EF2050772A8455DDD9B79307F00FFB +:107BD800E300F9FC37750500938624007946A685ED +:107BE80013056501EFE0CF85A381240155B73971ED +:107BF800B727002026DA83A4474352D45AD05ECE52 +:107C080062CC06DE22DC4AD84ED656D266CA2A8B09 +:107C1800AE8B328C368A99E08149A9A0804483DCF6 +:107C280044000149835AA400631499018440E5B7CC +:107C38003E24A28963F8670105094209135909011D +:107C48004104DDB7E3EAFBFE630B0A000C20484061 +:107C5800D28662863AC6EF90FFE4324771DD19C3D7 +:107C680023105701F25062544E85D2544259B259EA +:107C7800225A925A025BF24B624CD24C21618280AA +:107C88009A21B621854763E5E60439C34111D42119 +:107C980026C237E506009384550022C426862E8422 +:107CA8001305C511894506C6EF90DFDFC14719C91D +:107CB80054202E200A2001472686EFF05FF38147E3 +:107CC80011E1A947B240224492443E854101828095 +:107CD8003E8582802E860A22AE21854763E1A50271 +:107CE80019CD542241110147150606C6EFF03FF0A1 +:107CF800814711E1A947B2403E85410182803E8516 +:107D080082802E860A22AE21854763E1A50219CD1D +:107D1800542241110147150606C6EFF05FED814771 +:107D280011E1A947B2403E85410182803E858280AB +:107D380039714ED6BE2183D9050006DE22DC26DA4B +:107D48004AD852D456D25AD05ECE62CC66CA6AC8D5 +:107D580063EA3715854763880912416BAE8A2A8A18 +:107D68002314010002C6014401497D1B894B054CBF +:107D7800C94C054D83D52A000147814601464E85E9 +:107D880023130100EFF0BFE6AA84630B050E09EC8C +:107D980013072002930661005A8695455285EFE045 +:107DA800CF9D2A846302051038849C2041CB188516 +:107DB8006305A70741476385E7022C005285EFA0BA +:107DC8006FCD09CD34001546D9455285EFE0AF8017 +:107DD80011C532459780FA1FE7804033814765A077 +:107DE800BE244146130524001CA0BE24A1831CB058 +:107DF800CC409780FA1FE780805349043C8485076C +:107E0800C207C1837C8463FD2707BE24638A670792 +:107E18008509C20993D90901B1BFE39077FBBE2454 +:107E28000946130524001CA0BE24A1831CB0CC4025 +:107E38009780FA1FE780A04F1104C9B722C60359DB +:107E48006100B82413052400638F7701335999031F +:107E58002305710118A0BE244146A1831CB0CC4063 +:107E68001379F90F79B72305810118A0BE24135996 +:107E780029001379F90FA1831CB00946CC404DBFE6 +:107E88003C8485FFA947F2506254D2544259B259F2 +:107E9800225A925A025BF24B624CD24C424D3E85BA +:107EA800216182808547C5B7C547F1BFB727002044 +:107EB80003C7E744854763F4E706011122CC26CAC5 +:107EC8004AC806CE2A843289AE849790FA1FE78082 +:107ED800A0B419C538219307E00F5D456308F70082 +:107EE800631C0900A6852285EFA0CFF2F240624408 +:107EF800D2444249056182808A209305E100231714 +:107F080001009790FA1FE780E0B32887EFF0CFD7FA +:107F1800AA8505462285EF20104269D5C1BF59457B +:107F2800828013F7050201C7B2856FF02FD7411180 +:107F380026C24AC006C622C413F98500AA8463175C +:107F48000900139785016187635B070232853684D0 +:107F5800EFF08FD3AA8505466313090001462685ED +:107F6800EF20703D01E90145B240224492440249A4 +:107F7800410182801C34EDDB1C24F5F7F5B793F73B +:107F88002500F5F30D45CDB77971AE8622D42A8444 +:107F98008A229305E10106D636C69790FA1FE78034 +:107FA80060AA11C90C25B246B08722859D3FB25000 +:107FB8002254456182800545DDBF13F7050201C7DC +:107FC800B2856FF0AFCD411122C426C206C693F424 +:107FD80085002A8491E4139785016187635007021D +:107FE8003285EFF06FCAAA85054691E001462285E1 +:107FF8002244B240924441016F20F03393F72500A8 +:10800800014591E30D45B2402244924441018280EA +:108018007971AE8622D42A848A229305E10136C674 +:1080280006D69790FA1FE780E0A1B24609C90C2549 +:10803800B08722855937B250225445618280054560 +:10804800DDBF797126D2AA842A25C16722D44AD0F5 +:108058004ECE06D623170100FD173284B689014992 +:10806800630CF50005059420D04042051307E10094 +:108078004181EFF0DFB72A899420D04037E5060028 +:1080880089451305C511EF90FFA115C5A2242285C6 +:10809800EFF04FBE09C57D142A94420441806384E1 +:1080A800090023908900B25022544A8592540259FB +:1080B800F249456182809420D04037E50600894521 +:1080C80013058512EF901F9E71F19420D04037E57B +:1080D800060089451305850FEF90DF9C11C9E30859 +:1080E80009FA3C87E39587FA0354A9007D1475B70C +:1080F800A22475B7397122DC26DA4AD84ED652D472 +:1081080056D25AD062CC06DE5ECEBE899C252A8A1B +:10811800AE84C18B328C36843A89C28A468B9DE7FD +:1081280083CB04008947638BFB046285EFF0CFA102 +:108138001DC183280500638008025A88D6874E87A8 +:10814800CA862286A6855285829839A03285EFF0A4 +:108158006FA1AA8711ED3945F2506254D2544259A1 +:10816800B259225A925A025BF24B624C21618280C8 +:108178002946A6855285829745D5F9BFD8401C3334 +:108188001823A207D98FC2070D67C18793060790E6 +:108198006383D71E63CCF60693062780638ED70ABF +:1081A80063C0F60213070780E3C1E7F82D45E3959E +:1081B80009FADC449023CC432310C9002285B9A2D4 +:1081C80013073780E393E7F62D45E39709F88547CA +:1081D8002310F900DC4481459C231CA0AA24050532 +:1081E800420541819790FA1FE780C08583570900AF +:1081F8006310051091072310F900114681451305F6 +:1082080014009780FA1FE7802019F1A89306279099 +:108218006386D71463C1D71093063790638DD7143C +:1082280013074790E393E7F02D45E39709F2DC4401 +:108238001D472310E900982318A0983318B0BA23D3 +:1082480038A0BA23218338B0D82358A0FA2358B0CD +:10825800FE23A1837CA041A82D45E39F09EEDC44C1 +:108268006C0083C917009823A209B3E9E9001147F4 +:108278002310E9009C234E851CA0DC449C331CB0D1 +:108288009780FA1FE780007CAA8425C13086C165E3 +:108298009306E100FD158329C500EFF09FDA09ED8B +:1082A8009420D04037E50600894513058512EF90E4 +:1082B8006FFF19E1FD577C8703C7090089476310E1 +:1082C800F70283A549000946130544009780FA1F61 +:1082D800E780E0058357090089072310F9003C87E8 +:1082E8003CA0A1833CB0014585BD23173101C5BF22 +:1082F80018218907BA972310F9003E251CB03E259E +:10830800A1833CA010214C41130534009780FA1F2B +:10831800E780E001C9BFC8449780FA1FE780A00A38 +:1083280093170501C1832A871D45E3E737E363995E +:10833800F90023100900CC4403560900CE95BDBDB1 +:108348004207B3863A01418363C7E600B3873741E2 +:108358002310F900CDB723105901F1BF2D45E39D36 +:1083680009DECC445285EFE07FDF2310790108A0B5 +:10837800218108B08DBF2D45E39009DEDC44231030 +:1083880079019C231CA0DC449C331CB0A9BF1D713F +:10839800CAC82A892A21A2CCCEC6D2C4D6C2DAC07B +:1083A8005EDE62DC66DA6ED686CEA6CA6AD8AE8A89 +:1083B800EF907F83130CF5FF93170C01B72B002068 +:1083C800C1832A8A814913840B5F3EC6372B00205C +:1083D800B72C0020C16D8357C90063F5F9001E2032 +:1083E80063CC87010355290093850B5FEFA06F8E3F +:1083F8002A8D15CD594D25A8832789001397190073 +:108408009305E101BA9784339C23A204DD8C268569 +:108418009780FA1FE7800063AA8515E923909A00E0 +:108428004840054D09C59780FA1FE78020CEF640E1 +:1084380066446A85D6444649B649264A964A064B52 +:10844800F25B625CD25C425DB25D2561828032483B +:108458008348490083A60C43B08703552900814708 +:1084680013076B42EFF01FC92A8D13880C4309C507 +:1084780023909A0048407DB75C4085E70355290062 +:10848800514781461386FDFFBD45EFD01FAFB72783 +:10849800002048C01388074309E523909A00454DFA +:1084A80079B71E2003576B4293046B423E9763468D +:1084B800470113C7F7FF52979AA048409220832597 +:1084C80008003E9585099780FA1FE78040E61E2040 +:1084D8009A20C20993D90901BA971EA0EDBD397136 +:1084E80022DC2A842A2106DE26DA4AD84ED652D43D +:1084F8005AD05ECE62CC66CA2E8B56D26AC8EF902E +:108508008FEE2A8A54242E240A2478001306D400D5 +:10851800130CBAFF651AEFF08FED420A37290020D5 +:10852800AA898144135A0A01B72B0020B72C0020CE +:108538001309095F6382090463D08405938A0C4395 +:108548008348440083A60A0030862A20528881473F +:1085580013876B42CE85138D6B42EFF0BFB91DC1F7 +:10856800814A30862E244E859306E100EFF07FADD8 +:10857800AA8963990A065DFDF1E41E2429452310A2 +:10858800FB0035A883570D001228E31BF6FC83A5D2 +:108598000A0048489780FA1FE78060EA71D183276C +:1085A800490095EF2A204166454781467D169D453D +:1085B800EFD0BF9C1DE11E2445452310FB00F2505F +:1085C8006254D2544259B259225A925A025BF24B1F +:1085D800624CD24C424D216182802322A90083DA69 +:1085E800A90041B783274900A6972380570193879D +:1085F80014001397070183274900418393DA8A00FF +:10860800BA9723805701138724008326490093874C +:108618003400420791044183C207C204C183C18068 +:10862800369711C9348714A303274900BA973887A6 +:10863800218398A301B7FD5614A303274900BA97CD +:1086480094A31DBF2A20B725002089802398955E12 +:108658009385055FEF909FCF3DD159458DB7411167 +:1086680022C406C693F705012A84328585C3EFE044 +:10867800BFE1AA8505462285EF20E04B95476305B3 +:10868800F500BD47631DF502214515A893F7450080 +:1086980099CBEFE07FDF0546AA8522852244B240C8 +:1086A80041016F20404993F7050489C7EFE0DFDDFA +:1086B8000146DDB713F51500133515000605B24060 +:1086C80022444101828079714AD04ECE52CC06D6DE +:1086D80022D426D22A8AAE89014983D74900636405 +:1086E800F900014581A083A7090013141900930418 +:1086F8001400338797001823A2978823220793052D +:10870800E100598D9780FA1FE780C03305E583A7FC +:10871800090005453E94182098A383A70900BE9434 +:10872800982098B3B250225492540259F249624A9E +:10873800456182800C2530875285EFF05FF201CDCC +:1087480083A709003E94182098A383A70900BE9424 +:10875800982098B3C1BF0509420913590901B5BF4B +:10876800011122CC2A848A219305E10006CE978044 +:10877800FA1FE780202D11C90C2530872285EFF0DC +:108788001FEEF2406244056182800545DDBF1D7120 +:10879800CAC82A892A2186CEA2CCA6CAD2C4D6C2E1 +:1087A800DAC05EDE62DC66DA2E8ACEC66AD86ED69B +:1087B800EF906FC32AC68346C9008355A9000355A5 +:1087C800890078081306D900EFF06FC2B247B724C2 +:1087D8000020416B938AA7FFC20AAA8B014493DA4F +:1087E8000A01372C0020B72C00209384045F7D1BDE +:1087F80063820B18B08683C58B0003552900EFF000 +:108808001FE6AA8D631305168348490083A60C4307 +:10881800B086035529005688814713076C42DE85C8 +:10882800EFF05F8DAA8D93096C42138D0C43631E84 +:10883800051215CC03D70900BE2011076397E7007E +:108848003247A2976D1763C7E706B72500209387BD +:10885800055FBA23035529009385055F3354E40265 +:1088680082A3EF90DFCAAA8D15C1D94D05A0035583 +:108878002900494781465A86C545EFD00FF0C8C040 +:1088880015E583D7AB00C54D2310FA00F6406644C2 +:108898006E85D6444649B649264A964A064BF25B47 +:1088A800625CD25C425DB25D2561828083D709003B +:1088B8009107BEA0DC4003D7AB009306E101A29765 +:1088C80098A39307140013970701DC4041835E8542 +:1088D800BA9703D7AB00218398A3B0868355A90024 +:1088E800EFF02FF613072400D44093073400420713 +:1088F80011044183C2074204AA8BC1834180369781 +:1089080015EDFD5614A3D84083250D00BA9794A3FE +:10891800C84003D6090022959780FA1FE78020A156 +:1089280083D709003E944204418005F083578900AB +:108938002310FA00E39C0DF4A94D89BFB487832561 +:108948000D0014A3D840BA97B887218398A3C840CC +:1089580003D6090022959780FA1FE780409D83D7A8 +:1089680009003E944204418061B583D7AB002310CF +:10897800FA0065BF814D55BF5D71A6C2CAC0AA8401 +:10898800035985002A21A2C44EDE52DC5AD85ED68D +:1089980062D466D286C656DA6AD06ECE2E8BEF9037 +:1089A8008FA4930BD5FF7115131A0501B729002061 +:1089B8000144135A0A01372C0020B72C0020938950 +:1089C800095F635B7413D424AE241307E100138694 +:1089D800D4004A85EFF0AFA12A8D630F0510035923 +:1089E800A5000C253087AA20EFF07FC7631B051070 +:1089F80083C8440083A60C433087AA205288814745 +:108A080013076C42EA85EFF0EFEE930D6C42138882 +:108A18000C4365E905C883D70D0003D729008907EA +:108A28006308F706B72500201387055F3E23AA20B1 +:108A38009385055F3354F40202A3EF90FF990DC5A7 +:108A480059451DA0AA2041664D4781467D16A5457A +:108A5800EFD0AFD2B727002023A2A900138807437D +:108A68001DE123102B014545B6402644964406498E +:108A7800F259625AD25A425BB25B225C925C025D46 +:108A8800F24D6161828083D70D0089072391F90037 +:108A980083D70D00A29763D1770783A749000357AF +:108AA800AD00930A2400A29798A305049317040124 +:108AB80003A44900C183C20A3E948357AD008325AD +:108AC800080093DA0A01A1831CA003A5490003D674 +:108AD8000D0056959780FA1FE780608503D40D0036 +:108AE800C167FD17569442044180E30CF9EC05096F +:108AF800420913590901F1B529450DF423102B0139 +:108B0800A5B76DDC05B71E2181E789473E858280C0 +:108B1800411126C2444122C406C64AC09420D0400E +:108B28002A8437E5060089451305C511EF809FF7AC +:108B380011C93C202547E51793F7F70F6376F7022D +:108B4800E14721A89420D04037E506008945130560 +:108B58008512EF803FF571FD8947B2402244924467 +:108B680002493E8541018280372900208356493ACF +:108B780085471309493AF5D21A203697C166E3CEDC +:108B8800E6FC91659385257031459770FA1FE7805B +:108B9800E04AAA84CD4771D1314681459770FA1FC2 +:108BA800E780807F1E208355090001460147B38670 +:108BB800E500C206C182636BF702AE97C207C183A4 +:108BC80019C22310F90023A004002146A2851385A9 +:108BD80044009770FA1FE7808075B72700209387B5 +:108BE8004743984309EF84C3814785BF5040131515 +:108BF800470005072A9636A6054655BF3E871C43FB +:108C0800F5FF04C399BF011106CE22CC26CA4AC873 +:108C180009E98944F240624426854249D244056103 +:108C280082802AC62A84280036896C845085EFF011 +:108C38009FEDAA8465F1E30F09FC3E24F9DB9165F9 +:108C48009385557031459770FA1FE780203F05C519 +:108C58003E2423200500232425015EA1B7270020F8 +:108C680093870744984301E788C36DB73E871C4341 +:108C7800F5FF08C345B7CD4471BFB72700209387D8 +:108C8800874298230DE3054798A3058909CDB726A0 +:108C98000020372500209386463741469145130525 +:108CA80045336FF05FF601458280B7270020238C9B +:108CB800A7388280C167FD176315F5002E856FE020 +:108CC8004FB8411106C6EFE04FB209C5FD571EA1C6 +:108CD80023010500B2404101828001114AC806CE35 +:108CE80022CC26CA85472A896392F5044A85EFE093 +:108CF8008FE231E9C16437E606009385F4FF130774 +:108D0800E10089461306C60F0545EFE05FEE2A84A9 +:108D1800FD1405C44C444A85EFF0DFF930872285FD +:108D28008146A685EFF0EFB12A84E5B789476396B7 +:108D3800F5008545EF20200055D9F2406244D24421 +:108D4800424905618280EFE04FD86DB7011126CA0C +:108D5800B73400209384848222CC883437240020BE +:108D680013048443B72700203727002006CE4AC8BB +:108D78004EC62320040023AE07422326074259C1CA +:108D88001389C7439307200C3305F5029165938532 +:108D980015709309C7421905420541819770FA1F5A +:108DA800E780C02990349307200C81453306F602EA +:108DB80008C019069770FA1FE780005E1C409834B7 +:108DC80081459386870B7D5563E8E5069306800BFE +:108DD800B306D7020146FD550507B6972320F900CB +:108DE800BE868EA2ACB2ACA2238206000506990606 +:108DF800E369E6FEF95696A399463307D702BA9770 +:108E080023A0F9003775050013058563EFD0AF90EF +:108E1800377505001305C57EEF80DFCF3775050070 +:108E28001305C559EF103068F2406244D2444249F4 +:108E3800B2490145056182802394A6F41386C6F4DD +:108E480023100600232406003106E31BD6FE850501 +:108E58009386860B95BF411106C622C42A84EFC0AB +:108E6800AFB3EFE02FA0B7270020A38B8738B72731 +:108E7800002003A5C742EFE0CF9CB727002023833B +:108E8800873A2244B24037950500130525CE4101A3 +:108E98006F10706193970501C18763D10730B727B9 +:108EA800002003C57739797122D45AC806D626D24C +:108EB8004AD04ECE52CC56CA2E8B9770FA1FE780F6 +:108EC800A03C2A8429C518219307000B631EF702CA +:108ED800B7240020854793840443DC849C402315F1 +:108EE8000100B9E3EF00807591659385357097703F +:108EF800FA1FE780A01488C005E99C8491C74C201C +:108F080013058400EFD0EFDC2285EF708FF3B250A9 +:108F1800225421653345AB0092540259F249624A02 +:108F2800D24A424B45618280372A002061468145FA +:108F380013050A5F9770FA1FE7800046034944004B +:108F4800894793040A5FD289930A0A5F631AF9046E +:108F5800F5258AA02A2093050A5FEF900FB03A20E2 +:108F68009E20162401ED63E3F6001EA40E243A8524 +:108F7800EFC01FFB2285EFC05FD041B763E3F60067 +:108F88001EA41E24D9459386095F0D463A85239071 +:108F9800FA00EFC05FE48D4571DD1385095F65A8B0 +:108FA80099476319F9029305A1002285EFF02FD3A1 +:108FB800AA8469D1D947639EF40C05092A2013793C +:108FC800F90FD9459386095F4A86EFC0DFE0CA8565 +:108FD80055D1E1B7A1476318F9009305A10022858F +:108FE800EFF09F99F1B7A947631AF9060A246C00B4 +:108FF8009780FA1FE78000A52A89630905122A20AD +:1090080041669306E10055477D16AD45EFC0FFF672 +:10901800C8C0AA8625CD834844000358E10030869D +:109028002A20814713070A5FCA85EFF0AF8CAA840C +:10903800631F050C2A2093050A5FEF908FBF1DD987 +:109048002A2093060A5F2D46D945EFC0DFD81DD1E7 +:10905800AD4513050A5FEFD0CFC729BFB147631BE2 +:10906800F90C0A246C009780FA1FE780A09DAA8457 +:1090780055CD2A2041669306E10059477D16B5452E +:10908800EFC0BFEF23A2AA00AA8631E11E24C5447F +:109098007C851830D147E30FF7EC5C202A209385B4 +:1090A800095F2380FA003C8523829A002391FA0005 +:1090B800EF80DFC9E30005EC2A209386095F0546A7 +:1090C800D945EFC05FD1E30705EA8545F9B583487F +:1090D80044000358E1003E2430862A20A685130761 +:1090E8000A5FEFF02F81AA841DE12A2093050A5F09 +:1090F800EF906FB9E30005E82A20D94593060A5F87 +:109108003546EFC05FCDB545E30605E679B5D947E5 +:109118006393F400814403A54A009770FA1FE7801F +:10912800E0FEE38904E41E247C85A5B71E2485445B +:109138007C8585B7B9476318F9009305A100228596 +:10914800EFF0EFA4B5B5C1476318F9009305A10086 +:109158002285EFF0CFE3A9BDC947631AF9001306CA +:1091680091009305A1002285EFE07F9491B5D9473E +:10917800631DF9009305A1002285EFE07F84AA848E +:10918800E31A05E2A3040100F5B3E147E314F9DEAD +:109198009305A1002285EFE0AFF119BD014582805A +:1091A800F9CE011152C42E8A854522CC4EC656C22C +:1091B80006CE26CA4AC8AA8AB6893284EF10B037C2 +:1091C800D1471DC5B72700203727002083C7C744CC +:1091D8008346D744814419E0B684BE8637270020E9 +:1091E8000327474493974400BA9763EDD400D547C3 +:1091F800F2406244D2444249B249224A924A3E85E8 +:10920800056182803E89C10703D727FF09C7850406 +:1092180093F4F40FD9BF31CC9565938525C0130518 +:1092280000029770FA1FE78060E12326A90061D148 +:10923800130600028145938404049770FA1FE7809F +:10924800A0152311990023000900231359010DC407 +:10925800372700201C340326C7782304F900118C13 +:109268008327C90011841180C0AF23A02901814739 +:1092780041B723260900C1BF23044901FDB785472B +:109288003E858280B727002083C5C744B7270020C2 +:1092980003A7474481476395F50081463685828058 +:1092A8003223BA8619C2E30BA6FE850793F7F70F98 +:1092B8004107D5B7B727002003C6C744B727002002 +:1092C80003A7474481476315F600814636858280A7 +:1092D8002E23BA8681C54C23E38AA5FE850793F71A +:1092E800F70F4107CDB7B727002083C5F744B72745 +:1092F800002003A7C77881476395F5008146368526 +:1093080082801223BA8619C2E30BA6FE850793F75B +:10931800F70F4107D5B7B727002003C8D744B727A9 +:10932800002083A7474401476315E8008146368536 +:109338008280B223BE8609CAF2236317A600D047EB +:1093480001C63222E305B6FE05071377F70FC107FA +:10935800E1BF411122C4404526C206C6AA8415C0F1 +:10936800484409C59770FA1FE78040DA484809C59C +:109378009770FA1FE78080D922859770FA1FE780D7 +:10938800E0D82685414681459770FA1FE780C000DE +:10939800B2402244FD579CB492444101828001119D +:1093A80022CC2A842A2106CE2EC6EF1040673246E8 +:1093B80022858145EF00F05622856244F24005611E +:1093C8006FF03FF905C53A21411122C406C62A8427 +:1093D80011CBDD45EF00F05722852244B240410110 +:1093E8006FF03FF7B24022444101828082804111F0 +:1093F80026C2B1469304C5FFB386D402B72700201E +:109408001387C77906C622C4369736276397B602EC +:10941800484305C51384C7799307F00F6305F60021 +:109428001C21639CC7009770FA1FE78020CEB147C4 +:10943800B387F402A29723A20700B24022449244C1 +:1094480041018280411122C42E8426C24946AA8441 +:109458008145228506C69770FA1FE780E0F395CC10 +:10946800DC2C13974700B727002083A7C778BA9743 +:109478009A231AA0BA23FE233AA0372700200357BD +:10948800A7445AA09A207AA0BA201AA4DA203AA4AB +:10949800FA205AA49A241EA87AA4B24022449244DC +:1094A80041018280B727002083C5C744B727002021 +:1094B80003A8C778B727002003A647440147814778 +:1094C8006394E5003E858280142299CA544689CA6D +:1094D800D42E9206C2966315D500850793F7F70F29 +:1094E80005071377F70F4106E1BF130600643386BB +:1094F800C50293069500AA85379505001305C53C56 +:109508006F70CFFF411122C406C62A840835EF7058 +:10951800FF98FD571CB4B2402244410182800111DA +:1095280022CC4AC84EC652C456C25AC006CE26CA13 +:109538002A89AE890144372A0020B72A00201D4B0A +:109548008347DA446365F40463990902B729002064 +:10955800372A0020930AF00F83C7C9446364F406CE +:109568001144A1442285050442041306F00FCA855C +:109578004180EFF0DFE7E31794FEF2406244D24403 +:109588004249B249224A924A024B0561828083A726 +:109598004A4493144400BE949C208DC3FE20639FCC +:1095A800270163956901AA20EF10604726854E863A +:1095B8008145EF0010372685EFF0BFD905041374F5 +:1095C800F40FBDBF83274A4493144400BE949C20E3 +:1095D8008DC39C34638F5701FE20639C2701268529 +:1095E800EFF05FF22685D145EF00B0362685EFF023 +:1095F8005FD605041374F40F85B741677917630BB9 +:10960800E502411122C406C685472A846399F500FC +:1096180022852244B240814541016FF05FF08947BD +:109628006396F5008545EF1000717DD1B240224464 +:109638004101828082809D456FF07FEEB727002030 +:1096480003D5A7448280B727002003C787440111A8 +:1096580006CE68876C8685476318F7007000930507 +:10966800E1000545EF502031F24005618280A947AD +:10967800631DF6029C319821A207D98F1EA1BC3127 +:10968800B821A207D98F3EA1DC31D821A207D98FF2 +:109698005EA1FC31F821A207D98F7EA19C359825BF +:1096A800A207D98F1EA50145828005458280914772 +:1096B800631EF6009C319821A207D98F1EA1BC31E8 +:1096C800B821A207D98F3EA1014582800545828035 +:1096D8009387C5FF93960701C1820D47636ED70034 +:1096E8003147B387E702372700201307C779BA97AE +:1096F800A8A38EA301458280094582809306402055 +:1097080037270020AA8763F4A60093074020F117A3 +:109718002315F744B72700202387B744B72700202D +:109728002388B744828019059565420541119385C0 +:1097380035C0418106C69770FA1FE780209001C99D +:10974800B240E95541011773FA1F670063A9B24097 +:1097580041018280B727002023870744B7270020CC +:109768007971054723840744B7270020238CE778BD +:109778004ECEB7270020B729002022D426D24AD0BF +:1097880037240020B7240020A38807443729002065 +:10979800B72700209389F94406D652CC2AC6230657 +:1097A8000444A386044423950744232209442380C0 +:1097B8000900EF10402E3245B7270020130600039A +:1097C8002388A778372500201305C5798145977028 +:1097D800FA1FE78060BC372A00200345CA7C1304BF +:1097E800C4449384D4441309494405CD95659385AD +:1097F80045C012059770FA1FE7804084372700207C +:109808002326A77819CD0346CA7C9307CA7C9C33C4 +:109818002380C900814512069CA09770FA1FE78033 +:10982800A0B7B737002003C507839C2095659385AB +:1098380055C03E951375F50F08A012059760FA1FDD +:10984800E780C07F2320A90051C11020814512065E +:109858009770FA1FE78040B4032709001420814756 +:1098680025077D56639EF604EF104043B147330544 +:10987800F5029565938565C0420541819760FA1F99 +:10988800E780C07BB727002023AAA7782A8401CDC8 +:10989800EF10C04031463306C502814522859770D6 +:1098A800FA1FE78060AF2254B25092540259F2492D +:1098B800624A379505001305256045616F10A03E83 +:1098C800850710A393F7F70F410769BF230004002A +:1098D8002380040051BF41119397050126C206C693 +:1098E80022C44AC0C187AE8463DE07083729002036 +:1098F800034509799770FA1FE78000992A8429C9D6 +:109908001821930700096312F7041831CD4763192A +:10991800F706B72600200348250003C576693727D0 +:1099280000208347E74413066400814581461307F6 +:10993800E744AA886316D80291C11CA31C2391C7C7 +:10994800034509798545EF70CF882285EF607FCF81 +:109958002165258DB240224492440249410182800A +:109968000C22AE9793F5F70F93F7F80F63F4A50061 +:1099780093F7F50F850693F6F60F090685455DBF43 +:10998800092BE1B793F715000145E9D7EF003052ED +:1099980009CDB727002083C7E74481CBB72700202C +:1099A80003C507798545EF70CF8213C514005DB7ED +:1099B80085462A8763FFC6029C319021A207D18F72 +:1099C8001EA16399D700BC31B421A207D58F3EA14F +:1099D8000145828089460145639ED700BC31B42188 +:1099E800A207D58F3EA3DC31D421A207D58F5EA371 +:1099F8008280054582809147631EF6009C3198213C +:109A0800A207D98F1EA1BC31B821A207D98F3EA1C8 +:109A180001458280054582809147631EF6009C318E +:109A28009821A207D98F1EA1BC31B821A207D98FCE +:109A38003EA10145828005458280A1476318F60250 +:109A48009C319821A207D98F1EA1BC31B821A20749 +:109A5800D98F3EA1DC31D821A207D98F5EA1FC3174 +:109A6800F821A207D98F7EA1014582800545828011 +:109A780089476319F6009C319821A207D98F1EA146 +:109A880001458280054582803E2279714ECE06D6F8 +:109A980022D426D24AD01307F007AE896371F702A1 +:109AA80009473AC47C86300093F5F50FEF0010762D +:109AB800B250225492540259F249456182805A2286 +:109AC800D9462A89328463F7E6007E2263F4F600D9 +:109AD8006379F70023140100300093F5F90F4A85E4 +:109AE800F1B70A2202C4EFF01F80AA8435C5EFF04F +:109AF8007F9B9C246369F5001146A246CE854A8562 +:109B0800EF00906775B7340026869305F00F4A85F5 +:109B1800EFF00FE975F1A2471A24DC479AA33A201F +:109B2800BAA35A20DAA37A20FAA3DA209AA7DC4447 +:109B380095C793F4F90F2286A6854A858297C1674F +:109B4800FD172A86E31BF5FA22459947F9451CA11A +:109B580044A1EFF09F99A9BF094645B7014671BFD7 +:109B6800A947631DF6029C319821A207D98F1EA12F +:109B7800BC31B821A207D98F3EA1DC31D821A20778 +:109B8800D98F5EA1FC31F821A207D98F7EA19C351F +:109B98009825A207D98F1EA5014582800545828098 +:109BA8009C211CA19C311CB1BC31B821A207D98FC2 +:109BB8003EA1828023220500D82189476304F7004B +:109BC80005458280F6210D47E37CD7FE9C450111AF +:109BD80006CE22CC26CA4AC84EC684339023A20495 +:109BE800D18C138644006311D604A033BC23AE89FC +:109BF80022045D8C9307C4FFC207C1832A8963616D +:109C0800F70203A589002311990023108900F15553 +:109C18009760FA1FE780C05C2322A900014531A0A4 +:109C28002285EFF02FE671FD0545F2406244D244EB +:109C38004249B24905618280397122DC2E841C2098 +:109C48004AD806DE26DA4ED619472A89B2856392A3 +:109C5800E70630202800EFF01FDAAA8405E92884F7 +:109C6800EFF04FE2AA890C3015C937B705002E86E8 +:109C78001307879634009D454A85EF00702F4E855F +:109C88000946814579294E85EFF0AFECF2506254D0 +:109C980026854259D254B2592161828089477C80F5 +:109CA8003C840A867C813C857C824A85EF0010567C +:109CB800F1BF49476398E70232202800EFF0FFD749 +:109CC800AA8469F5372500201305C5795E2599E32F +:109CD80081446DBF1830142068253C000146CA85B0 +:109CE800CD2C6DB75147639EE70032202800EFF076 +:109CF8001F98AA8441FD0C3030004A85EFF0DFD868 +:109D080071B75947639BE70432202800EFF03F9A68 +:109D1800AA842DFD2C844A85EFF0EFDF05C958454C +:109D280034851E23B697C207C1831EA3D5D35C47CB +:109D3800C5D3B727002083C7E744D9DBB72700205E +:109D480003C507798545EF60DFC889B789473EC0F5 +:109D58003C840A860C307C8289BF0C300A8623102A +:109D68000100EF00B04AADB75D71A6C256DA86C6EB +:109D7800A2C4CAC04EDE52DCAA8A8831AE8432C67A +:109D8800EFF04FD3B24501ED8144B6402644268515 +:109D980006499644F259625AD25A61618280230276 +:109DA80005002311050083C9040085472A846399A7 +:109DB800F900B0202808EFF0BFBFAA8405491DA00C +:109DC8009D476391F90418218D47E31FF7FAB020E6 +:109DD80028080549EFF05FC4AA8409E505468145CE +:109DE800228581262285EFF0EFF108243C080147FF +:109DF800CE862686D685F12AE30909F82285EFF072 +:109E08004FD561B7CD47639BF90018219147E31DF2 +:109E1800F7F6B0202808EFF0BFC545B7D547E3955A +:109E2800F9F6034A05008947E310FAF6B020280836 +:109E38000549EFF0FFD2AA8455F583570102A1EB3B +:109E4800B8841306F0035C44930607FCC206C1827B +:109E5800636AD600B085D94663F6C600B486D9458C +:109E680063EDD5002A20BAA30549EF00503B0356FD +:109E78000102D2852285A92CB5B7AC87BAA3D2A393 +:109E88008EA3F6A385471CA0014A0149CDB7014A14 +:109E9800F9BF7971AA8522D426D22221AA8428085A +:109EA80006D6EFF03FD1F24599E53DE1854522859B +:109EB800EFF06FF975A0BC8415476395E706B88580 +:109EC8008D4763F7E7046800EFF09FCD3887DD47DB +:109ED80063FBE7008C86B707170085071008228503 +:109EE8003EC8EF00B0323C87B88591076305F7009C +:109EF8002285EFF04FF41C8672466C00858B1106A4 +:109F0800228591CFEFF05FE601C52285EFF0AFF231 +:109F1800884449DD9760FA1FE780401F41BFEFF092 +:109F2800BFD1DDB711476389E7001387A7FF420751 +:109F38004183854663EBE6023147F117B387E702B1 +:109F4800372700201307C779BA979A2371D3A82314 +:109F58003008A28505204DFDB8849147E318F7F431 +:109F6800B25022549254456182802C082285FD24E7 +:109F780045F1FDB701114AC82A89314526CA06CEDE +:109F880022CC2EC6B2849760FA1FE780802A21C1AE +:109F9800B2459307000A1EA12EA12A842146110565 +:109FA8008DC0A6859760FA1FE7806038A2854A852C +:109FB800EF600FEE0145F2406244D2444249056128 +:109FC800828081459760FA1FE780003DC5B7054547 +:109FD800DDB7797126D2AA841305000206D622D4E9 +:109FE8002ECE32CC36CA3AC83EC69760FA1FE780F2 +:109FF800402429C56246F2454247D246B2472A84E0 +:10A00800130520FA08A010B02EA058A054B01305CC +:10A018008400614691CFBE859760FA1FE7802031A2 +:10A02800A2852254B2502685925445616F604FE64E +:10A0380081459760FA1FE7802036DDB7B250225479 +:10A048009254456182805845797122D406D62A8473 +:10A05800AE862DC73E23FC85930720066397F5043B +:10A06800B727002003D6A7447E236373F600B28780 +:10A0780013F6F70F2E2B1C2B8D8F93F7F70F81E517 +:10A08800890793F7F70FB297FD17B3C7C702FC8686 +:10A098003E206E200824FC8401473C080146EFF06E +:10A0A8005FF3B250225445618280582FB7270020B1 +:10A0B80083A7C7781207BA97FE23D1BF2EC61946C1 +:10A0C800814528089760FA1FE780002DB246C9B776 +:10A0D800797122D406D626D22A8499CD81470147A0 +:10A0E800930600062E866E200824EFF09FEEB250ED +:10A0F8002254925445618280B28428005946976060 +:10A10800FA1FE7806029648499E43E2048446C0083 +:10A118007C85EFF02FB33C0001479306000601460B +:10A12800D9B7797106D6814791E93E21584570869D +:10A138007C843C0001C73E237C853C002E866E2132 +:10A148000825014793060006EFF0BFE8B2504561C5 +:10A158008280411122C406C61C2111472A846392B9 +:10A16800E7022E866E21082581470147CD46EFF08C +:10A178005FE649466E202244B240154541016FF022 +:10A188000FA713F7B70F89466317D7000146EFF0FB +:10A198003FF45146C5B70D476398E7002244B240E3 +:10A1A800014641016FF0FFF7B2402244410182802D +:10A1B8009A21B146B727002071173307D702938732 +:10A1C800C779BA97D84301EBD841AAA70145D8C3A4 +:10A1D800BA219AA7828059458280797122D4404554 +:10A1E80026D24AD006D6AA842E8931C4484419C535 +:10A1F8009760FA1FE78080F1232604001E20EE20D6 +:10A2080088247C853E200147930640067C861E24D0 +:10A218004A867C871C483EC8BE207C843C00EFF000 +:10A228005FDBA30E240123280400B2502254925469 +:10A238000259456182802800314681459760FA1F9E +:10A24800E7808015BE20EE2088247C8401473C00EE +:10A25800930640064A86EFF0DFD7C1BF797152CC2A +:10A268002A8A8A2126D206D622D44AD04ECE56CA67 +:10A27800AE84EFF02F8119E1854795A84045AA895A +:10A2880065DC7E21E39A47FF1E2463890710542C5E +:10A29800B72A002003A7CA789206FD173697C20787 +:10A2A8007A23C1831EA46316F70093053006EFF0E6 +:10A2B8009FD95C48A5EFC840034915001C21220915 +:10A2C8003369F900BE2013072900631CF702F9550A +:10A2D8009760FA1FE780C0F0C8C02391240103C526 +:10A2E80089002686D285EFF0FFC8814721E1B25068 +:10A2F800225492540259F249624AD24A3E85456133 +:10A3080082809565938515C04A859760FA1FE78016 +:10A31800E0D248C8C840231C2401F9559760FA1FA9 +:10A32800E78000ECBE20C8C0F917BEA0484825CD7C +:10A33800B220362C1E2C3308D60063C80707582CC9 +:10A3480083A7CA7895451207BA97BE2363C907053C +:10A35800CC4036959760FA1FE78060FD3A2CBE2006 +:10A36800BA97C2071A2CC1833EACE397E7F003D72C +:10A37800290003C58900300078845848D2857C8537 +:10A388003AC6EFF03FBF11C548489760FA1FE7800B +:10A39800E0D7232A0400232C0400F9BD99454E85F3 +:10A3A800EFE0FFFFD1BDA545DDBF9145CDBFBA2187 +:10A3B80071CBB727002083D6A744ED4763E5E60CA9 +:10A3C800011122CC2E8426CAAA844840914506CE83 +:10A3D8009760FA1FE780C0E03E20AA861CA13E20B5 +:10A3E800A1831CB11E203CA11E20A1833CB13220B8 +:10A3F800C167F9171106420641826394F4042AC41E +:10A40800314532C69760FA1FE780A0E2AA85CD479A +:10A418001DC1930700F91CA13246F957A2463EA177 +:10A4280089475CA1B727002072A114C503C5077925 +:10A43800EF600FA68147F2406244D2443E85056131 +:10A44800828081452685EF406060AA8711E9B7269A +:10A45800002003C7E64465D37D172387E644E1BFA0 +:10A4680009476304E5021D476303E50249476302A0 +:10A47800E5027D47E311E5FCB726002003C7E64463 +:10A488008147D1BFED473E858280D1476DB791475F +:10A498005DB789474DB701114AC831471309C5FF50 +:10A4A8003307E902B727002026CA9384C77906CE66 +:10A4B80022CCBA94D84029C71384C779B72700207B +:10A4C80083C6E744854795C668849E24AA242C0041 +:10A4D8003AC67C85EFF0BFED11C5C8409760FA1FFA +:10A4E800E780C0C2B147B307F902A29723A20700C9 +:10A4F8008547F2406244D24442493E8505618280E4 +:10A508008147C5BF797126D24445372700204AD0F4 +:10A51800FE200359A74452CC06D622D44ECE56CAA2 +:10A528002A8A63F327013E89BA2842091359090187 +:10A538009E2835CF998F4A8463D527011394070144 +:10A54800418089452285EFF00F9EAA89CD4A31C501 +:10A55800BE202AC660857C84BE2899EB9E28930974 +:10A5680025001CA19E28A1831CB1637424058228A0 +:10A57800BE28CC4422864E85BE959760FA1FE78098 +:10A5880000DB03556A002C00EFF07FE2AA8A15C5AC +:10A598004E859760FA1FE78060B7B25022545685FF +:10A5A80092540259F249624AD24A45618280890727 +:10A5B80059B779144204418065BFBA289E203A945D +:10A5C800FD17C20742049A28C18341809EA0A2A811 +:10A5D8006376E400F9F3FD57DCBCC1B781455285C9 +:10A5E800EFF0BFBF5DBF79714AD03729002052CC48 +:10A5F800034A194522D456CA5AC85EC662C406D64A +:10A6080026D24ECE5284B72A0020054B930BF00F6A +:10A61800372C002083A74A4493144400BE9483C96E +:10A628000400639B6907DC44A5CBD84735C79A2348 +:10A6380029CBB727002083C7E74499CF2685EFF0B9 +:10A648007FECAA8515E9B727002083C7D7440504FE +:10A658006351F402A3088944B25022544E8592549F +:10A668000259F249624AD24A424BB24B224C4561E6 +:10A678008280A3080944CDB72685EFF01FB681492B +:10A68800E1BFDC3F639A7701930520062685EFF04A +:10A698009F9BDC44A38E07008347DC4405041374A6 +:10A6A800F40F6363F4000144E31644F7C9BF411192 +:10A6B800154506C6EFF03FDE09C50545B240410124 +:10A6C80082801945EFF03FDD6DF91145EFF0BFDCF1 +:10A6D8006DF51D45EFF03FDC6DF1B727002083C70E +:10A6E800D744E9DFB24041016FF0FFEF9E210D47EB +:10A6F800F117C207C1836363F706DC41A5C34111A3 +:10A7080022C42E84854526C206C6AA842D2529C9B9 +:10A7180026853D2BC167F917638FF40009ED3E20AC +:10A7280099CB162019476393E6043727002003576F +:10A73800A74463FDE702B727002083C7E744A28543 +:10A74800268599C72244B240924441016FF03FC622 +:10A758002244B240924441016FF09FA5094582808E +:10A768005145B24022449244410182806D45D5BF93 +:10A77800397126DA4ED6AA84AE895D4589454AD80C +:10A7880006DE22DC328936C63AC4EFE0DFF935C18D +:10A7980022472A84014511C7B24613054400B685ED +:10A7A80002979357850023003401A30024013CB08D +:10A7B8009547FC84B727002083C7E74428A01105E4 +:10A7C800E88522CE2C08268595C3EFF05FBEAA84C3 +:10A7D80011C522859760FA1FE7804093F2506254B2 +:10A7E80026854259D254B25921618280EFF05F9C8C +:10A7F800F9BFCD44E5B7797126D24AD052CC56CAB2 +:10A8080006D6BA8A22D44ECE19472E89B284368A01 +:10A818006395E5062A220944EFE0DFA62AC635C576 +:10A828005C4583596500BE239EA0B247B726002029 +:10A8380015472380570103C68679BAA31307160064 +:10A848001377F70F238CE678D0A301E70547238C0D +:10A85800E67851476317E9001547BAA0DC479A2400 +:10A868009AA75287A686CA854E85EFF07FF02A847C +:10A87800324515C4EFE0FFAD09A842867400BE85D5 +:10A88800AA89EFE0FF912A844DD12285B250225443 +:10A8980092540259F249624AD24A45618280F94586 +:10A8A800EFE0BFC4DDB79E211CA19E21A1831CB18E +:10A8B800BE213CA1BE21A1833CB1114582809E21CD +:10A8C8001CA19E21A1831CB1BE213CA1BE21A18354 +:10A8D8003CB1DE215CA1DE21A1835CB1FE217CA11B +:10A8E800FE21A1837CB1214582809E211CA19E214D +:10A8F800A1831CB1BE213CA1BE21A1833CB1DE21B4 +:10A908005CA1DE21A1835CB1FE217CA1FE21A18393 +:10A918007CB19E251CA59E25A1831CB52945828056 +:10A928009A218546AA8718A19A21218318B19A21CC +:10A938006319D700BA2138A1BA21218338B111454A +:10A9480082800945631DA700BA211945B8A3BA2119 +:10A958002183B8B3DA21D8A3DA212183D8B382803E +:10A968009E211CA19E21A1831CB1BE213CA1BE2118 +:10A97800A1833CB111458280797126D24AD04ECE4E +:10A98800B2842A89AE8929468145480022D406D650 +:10A9980036849760FA1FE78020A064868DE43E2005 +:10A9A8007C82B727002083D7A7447C845C4481CF6E +:10A9B800D42F372700200327C77892069E2736977B +:10A9C8003A237C85788337B705004A851307278F94 +:10A9D800540013F6F90FD545EFF09FD92A8911C114 +:10A9E80095E085471CA02302040001468145228585 +:10A9F800EFF00FEEB25022544A8592540259F249B0 +:10AA0800456182802285EFE0DF94EDB737B7050016 +:10AA1800B286130787922E8685456FF07FD5011180 +:10AA28006887B7B605004165700001489307F00FC5 +:10AA38000D479386E68A99457D1506CEEFF0BFDB74 +:10AA4800F24005618280B7B60500B28701482E86BC +:10AA580011479386668CC9456FF0FFD9011122CC46 +:10AA6800372400201304447D26CA4AC84EC606CEA1 +:10AA78002A89AE89930404031C4081C7CE854A8580 +:10AA880082971104E31A94FEF2406244D244424988 +:10AA9800B24905618280B727002003C5D7694111F3 +:10AAA80022C4373400209377350013048482098147 +:10AAB8001CB4AA9706C626C21CA4ADCB1305C003B6 +:10AAC8003385A702A5658505B72400209750FA1F8E +:10AAD800E780C05610249307C00381453306F60269 +:10AAE80023A8A47C9760FA1FE780008B83A7047DC6 +:10AAF8001424014789077D566341D7022244B24096 +:10AB08009244372500201306000381451305457D2F +:10AB180041011763FA1F6700238892A32381070066 +:10AB280023A5070205079387C703F9B7B240224454 +:10AB3800924441018280011122CC2EC632C406CE35 +:10AB48002A849760FA1FE780A0F42246B24511E9EB +:10AB5800C167F9176303F4005145F2406244056187 +:10AB6800828054555C218DC213F727014145631437 +:10AB7800A70015457DF2C18B3D45E5D3BC2E0145A7 +:10AB8800E3FDB7FC3145D1BFC18B0145F9F7154548 +:10AB9800E9B7797126D24AD0B7340020416922D466 +:10ABA8004ECE52CC56CA5AC806D6AA8901449384B6 +:10ABB8008482372A0020930AC0037D19054B9C2400 +:10ABC8006364F400014525A8B307540303270A7DED +:10ABD800BA97BA236316270105041374F40FC5B78F +:10ABE800C833300093856700EF00D1611946CE85E0 +:10ABF80028009760FA1FE7808084E31F65FDB25044 +:10AC0800225492540259F249624AD24A424B45614F +:10AC18008280B737002083C50783C166B727002025 +:10AC280003A7077DFD1681476395F5000146328528 +:10AC38008280035827003A866306D8000348070035 +:10AC4800E307A8FE850793F7F70F1307C703E9BFC4 +:10AC5800411106C69760FA1FE78080E309C54A29B3 +:10AC6800B240410182800145E5BFB737002083C665 +:10AC78000783B727002003A7077D014581471107F0 +:10AC88006393F6008280102301C605051375F50F3E +:10AC9800850793F7F70F1307C703DDB7B73700200A +:10ACA80003C507838280372700209306477D8147A5 +:10ACB8001307477D31468C4291E58A07BA9788C3C6 +:10ACC8000145828085079106E397C7FE4D4582803E +:10ACD800411106C622C49760FA1FE78060DB0DCDDC +:10ACE8002A842A218545EFF07FD7485409C5975013 +:10ACF800FA1FE780A04122851306C00381459750BB +:10AD0800FA1FE7806069FD573EA023020400014551 +:10AD1800B2402244410182800945DDBF411106C687 +:10AD28009760FA1FE780C0D609C54825B24041019F +:10AD380082800145E5BFC167F9176305F502411136 +:10AD480022C406C62E849760FA1FE78060D4AA87BB +:10AD5800014589C7C823698C33358000B240224435 +:10AD68004101828005458280011106CE2EC697607A +:10AD7800FA1FE780E0D1854701C95A29B2458547BE +:10AD88006304B7004EA98147F2403E850561828081 +:10AD980029CD01114AC84EC637390020C16922CCD5 +:10ADA80026CA52C456C206CE0144AA84130989820F +:10ADB800372A0020930AC003FD1983478900634B93 +:10ADC800F400F2406244D2444249B249224A924ACB +:10ADD800056182803305540383270A7D3E953E2111 +:10ADE8006383370182940504C9BF8280B737002086 +:10ADF80003C60783B727002083A7077DC1660145DF +:10AE080089070147FD1691456313E600828003D840 +:10AE180007006309D80003C8A7006315B800050533 +:10AE28001375F50F05071377F70F9387C703E9BF66 +:10AE3800B737002003C60783B727002083A6077DFE +:10AE48000147814791066310E602858393C7F7FFA0 +:10AE5800C207C18305456362E50285473395A700AC +:10AE68004205418182808C2299C1CE36CD8F05075B +:10AE78001377F70F9386C603F9B793F61700F1FE19 +:10AE8800050585831375F50FF9B7797156CAAA8A2E +:10AE98002E8526D24AD04ECE52CC5AC85EC662C43F +:10AEA80006D622D4AE84328B368CBA8B3E8AC289BF +:10AEB80046899760FA1FE780A0BD3DED41657D1585 +:10AEC8009760FA1FE780C0BC2A84554531C81946E7 +:10AED800DE8513056400A30284019750FA1FE780FA +:10AEE80000458357010326A0230264013EA8835727 +:10AEF800410323005401232604025EA823064401CB +:10AF08002317340123182401EFF09FF20AB8232AEB +:10AF180004022685232C04028145EFF03FB4014545 +:10AF2800B250225492540259F249624AD24A424BD0 +:10AF3800B24B224C456182804545DDB7B7370020CA +:10AF480083C60783B727002003A7077D814763953A +:10AF5800F60041657D1582803A861307C70383553D +:10AF680047FF6394A5002A228280850793F7F70F8D +:10AF7800F9BFB737002003C80783B727002083A687 +:10AF8800077D416601477D16954811436314E80023 +:10AF980001458280BE223685638EC702CC5A9DC980 +:10AFA800BC31AC2189CD938597FD93F5F50FE372FC +:10AFB800B3FE9387D7FA93F7D70F89EF82809385EB +:10AFC800F7FD93F5F50FE3F6B8FC9387D7FA93F7F7 +:10AFD800D70FE1D305071377F70F9386C6037DB71D +:10AFE800B737002083C507834166B727002003A72A +:10AFF800077D7D16814725486394F50001458280C9 +:10B0080036233A85638BC600545B81CAB432938673 +:10B01800E6FD93F6F60FE374D8FE850793F7F70F6E +:10B028001307C703D1BF011122CC2A84494506CE94 +:10B03800EF804FB31DC12AC622859760FA1FE780AB +:10B0480020A501CD6244B737002032460E39F240C0 +:10B0580003C5B78205616F50BFB5F2406244056110 +:10B06800828039714ED652D4AE892A8A930530052A +:10B07800414526DA4AD856D206DE22DC32C636895F +:10B08800BA8A9750FA1FE78060FBCD4429C92A8401 +:10B0980089446381090432468145F08241469750CC +:10B0A800FA1FE780602F5686CE8522859750FA1FB3 +:10B0B800E780E0272146630E0902CA8528089750D1 +:10B0C800FA1FE780C026A28650082C085285EF3068 +:10B0D800100EAA8422859750FA1FE7802003F250A9 +:10B0E800625426854259D254B259225A925A216141 +:10B0F8008280814528089750FA1FE780E029E1B748 +:10B10800411122C4405926C206C6AA8429CC085433 +:10B1180009C59750FA1FE78060FF285809C597505E +:10B12800FA1FE780A0FE685809C59750FA1FE78004 +:10B13800E0FD285C09C59750FA1FE78020FD685C90 +:10B1480009C59750FA1FE78060FC0325040809C564 +:10B158009750FA1FE78080FB22859750FA1FE780F7 +:10B16800E0FA23AA04022244B73700208E38B240FE +:10B17800924403C5B78241016F509FCB411126C24B +:10B1880006C622C4AE849760FA1FE780609029C182 +:10B198004C592A8495CD83A8C50703A88507FC596F +:10B1A800B859F4219221AC212685EF80AFA32285DE +:10B1B800EFF01FF5EFF0DFE201CD2244B7370020B2 +:10B1C800B240924403C5B782854541016F507F80E4 +:10B1D800B2402244924441018280011122CC06CE21 +:10B1E8002A842EC69760FA1FE780808A5C5989CF27 +:10B1F8009E23B245639A870085476397F5006244AA +:10B20800F24005616FF0DFEFF24062440561828031 +:10B21800411106C622C426C2EFF0BFD529C1405944 +:10B22800AA8415CC3C209DC7B737002083A7878008 +:10B2380089C7DC4399C32285829738309307F00287 +:10B24800631FF7002244AA20B2409244814541017D +:10B258006FF0DFF2B737002083A74780D1BFB24035 +:10B268002244924441018280411126C24AC006C646 +:10B2780022C4AA842E899760FA1FE780608105CDD1 +:10B28800405955C41E206394970A3C301307100296 +:10B298006395E7083C20ADCF7C5403270408DE2BD8 +:10B2A80015E313F7170019CF18545A23058B19CB38 +:10B2B800930720023CB0B24022449244024905451B +:10B2C8004101828013F7270001CB18545A23098BB8 +:10B2D80001C793074002F9BF918B81CB1C54DE2331 +:10B2E800918B81C793076002F1B7B737002083A716 +:10B2F8008780F1D3DC43E1D32285829738309307E6 +:10B30800F0028145E319F7FA2685EFF03FE765B7C4 +:10B31800B737002083A74780E9BF1307A0026398C7 +:10B32800E7006304090013092003CA85F1BF631C01 +:10B33800090026859750FA1FE780807509C55C21AA +:10B3480093E707015CA1A6854A85EF70BFA4A5B75E +:10B35800797126D29947EC85AA842E858D4522D409 +:10B3680006D632C636C4FC84EFE0EFBB2ACE4D4485 +:10B378001DC13246A246AA85328582962A8419E5DD +:10B388002C082685EFF08FB62A8411C57245975090 +:10B39800FA1FE780A0D72685EFF0FFC82285B250B4 +:10B3A80022549254456182804111B7D6050022C4C7 +:10B3B8002E862E849386A6B2894506C626C24AC022 +:10B3C8002A89EFF0FFF80C20AA844A85EFF01FDBEA +:10B3D800B240224426850249924441018280B7370F +:10B3E800002083A7478085CB9C4395C71D71A2CCBD +:10B3F80086CE984110082A843AC8D84185453ACA69 +:10B40800829711C548862A206C00EFF0FFF9F640B4 +:10B418006644256182808280AE8711CD785501CF40 +:10B42800142394A1143394B1342BB4A1142F584B82 +:10B43800B4B1D8C18280414681453E851753FA1F71 +:10B44800670083F5B737002083A7878091C703A3D8 +:10B458008700630303000283094582803737002091 +:10B46800032707A01DC75843AA8705450DC703A58D +:10B478000708411106C6930605021306050C930535 +:10B488000506130505040297B2401375F50F41012F +:10B4980082800545828082804DC9357122CD2A84FB +:10B4A8000A2126CB4AC94EC756C306CF52C55AC130 +:10B4B800DEDEB68AB2892E899750FA1FE780405D92 +:10B4C800AA8431C50C182285EFF01FF53C20138A99 +:10B4D8006400A9CBEF706FE62A8B014583CB54003B +:10B4E800EF70AFE3AA840C100818EF102047085437 +:10B4F8002C10EF104047D288268A56C05E88D28723 +:10B508005A8714103010CE854A85EF20606EFA40B5 +:10B518006A44DA444A49BA492A4A9A4A0A4BF65BC3 +:10B528000D618280EF706FE1AA8B014503CB540057 +:10B53800EF70AFDE2ACE08540C10EF1020422C100A +:10B548000818EF104042F2484DBF8280C14719C920 +:10B558001455C14781CA785511C7BC32BD4663F33B +:10B56800F6001C2F3E858280894779C9F1C94111AF +:10B5780006C622C426C21C312E849CA13C219CB143 +:10B588003C31BCA15C21BCB15C31858B93968700B2 +:10B59800DE2193F7F7EFD58FDEA1543193F7F7DF6C +:10B5A800A20693F60620DD8ED6A1583193F6F6BF93 +:10B5B800220713770740558FDAA15C31FD76938611 +:10B5C800F67F8D87858B758FAE07D98FDEA17421A5 +:10B5D800F99B858ADD8ED6A178219377270013F70A +:10B5E800D6FF5D8FDAA17C2193F647009377B7FFEA +:10B5F800D58FDEA17821DD9B4D45218BD98FDEA12A +:10B60800EF705FD6AA845145EF70DFD5383093F4D8 +:10B61800F40FC947636097021375F50F636CE50073 +:10B6280014201147E1476367D70014300547636367 +:10B63800D7008147B240224492443E85410182802E +:10B648003E85828015C1AA8709458DC141112E8585 +:10B6580041469385170006C69750FA1FE78020CD0C +:10B66800B240014541018280094582808280894734 +:10B678000DC585C5411106C61831AE87194698A172 +:10B6880093052500138517009750FA1FE78020CAF5 +:10B69800B24081473E85410182803E85828015C146 +:10B6A800AA8709458DC141112E854146938517000A +:10B6B80006C69750FA1FE78080C7B240014541018E +:10B6C8008280094582808280894705C99DC54111CC +:10B6D80006C638211431AE872207558F9AA1214614 +:10B6E80093053500138527009750FA1FE78020C47B +:10B6F800B24081473E85410182803E85828015C1E6 +:10B70800AA8709458DC141112E85414693851700A9 +:10B7180006C69750FA1FE78080C1B2400145410133 +:10B728008280094582808280894709C981C9183188 +:10B73800BD46E14763E4E60098A181473E858280E3 +:10B7480015C1AA8709458DC141112E8541469385AA +:10B75800170006C69750FA1FE78060BDB240014542 +:10B768004101828009458280828015C1AA870945E6 +:10B778008DC141112E8541469385170006C6975005 +:10B78800FA1FE780C0BAB2400145410182800945ED +:10B79800828082801DC1AA87094595C141112E85E5 +:10B7A800130600049385170006C69750FA1FE78012 +:10B7B80000B8B240014541018280094582808280FB +:10B7C80015C1AA8709458DC141112E85414693852A +:10B7D800170006C69750FA1FE78060B5B2400145CA +:10B7E800410182800945828082801D71A2CC2A8411 +:10B7F800084586CEA6CA230601000421354793874B +:10B80800F4FF93F7F70F6364F70C37E706008A072E +:10B81800130707AEBA979C4382870C08EFF0DFD472 +:10B82800C9476310F50299475C862A206C00EFF03F +:10B83800BFB7F6406644D644256182800C08EFF015 +:10B848001FEC31C51C86F5F32A20EFF0CFFDD5B7E4 +:10B858000C08EFF0FFEEF5B70C08EFF0FFECD5B7EA +:10B868000C08EFF03FDEF1BF0C08EFF0FFE5D1BFA9 +:10B878000C08EFF0DFE2F1B70C08EFF05FDFD1B7AB +:10B888000C08EFF09FEE75BF1C312308F1002A2049 +:10B898009750FA1FE780C01FA14705C15825631AB2 +:10B8A800F702B737002003A787809D4719C71843B9 +:10B8B80009C71008A6850297AA875C8661B70C0895 +:10B8C800EFF05FEDBDBF0C08EFF09FEF9DBF9D4708 +:10B8D800A1BFB737002003A74780C1BF011122CC01 +:10B8E80006CE26CA4AC84EC61821930720092A84BC +:10B8F8006313F7121C3139476393E70A5621096726 +:10B90800610781476391E610B739002003A5898153 +:10B91800CE84630A050E0C4403C90500631E0900A2 +:10B928001C2185052146A9CF29059750FA1FE780D4 +:10B9380000A083A78481B5C349459750FA1FE780C3 +:10B94800408F2A840DC5930710FC1CA1A300250174 +:10B9580083A584810905414689059750FA1FE78028 +:10B96800009D83A78481A2858833EF407FD203A5F9 +:10B9780084819740FA1FE780607923AC048031A85E +:10B9880009059750FA1FE780809AEF3000020549B1 +:10B998004DF183A78981238027018547ADA013072F +:10B9A800E0036398E70838219547631CF7024A21AA +:10B9B800EFF0CFB69147E312F5FEB737002083A723 +:10B9C8004780E1DF03A38700E30903FC72244A20D0 +:10B9D800930564006244F240D2444249B249056189 +:10B9E8000283A147631CF7006C204A206244F2409E +:10B9F800D2444249B24905616FF01F87930600039C +:10BA08008147E303D7FEF2406244D2444249B24937 +:10BA18003E85056182809306000A8147E315D7FEBB +:10BA2800EFF0BFDC084435D99740FA1FE780006E75 +:10BA3800ADB78147C9BF011126CA06CE22CC8944B9 +:10BA48000DCD85CDAA842E8468008D45EF607FE0FA +:10BA58001C872685228693F7F70393E707046C0073 +:10BA68005C87EF20E00FAA8409E90D466C001305F6 +:10BA780034009750FA1FE780808BF2406244268595 +:10BA8800D244056182805D714EDE86C6A2C4A6C21C +:10BA9800CAC052DC56DA5AD85ED6894945CD5DCA45 +:10BAA800138B4500420B135B0B01AE8A2A8A930560 +:10BAB80030055A85B2849740FA1FE78020582A84B7 +:10BAC800CD4949C9EF704F892A895686D285935A3C +:10BAD8008900135A0901937BF90F1305440093FA5F +:10BAE800FA0F137AFA0F135989019750FA1FE78052 +:10BAF8008099A301740123015401A3004401230088 +:10BB08002401EF70CF84AA85414608089750FA1F90 +:10BB1800E7806097214734005A86A2850808EF20FD +:10BB2800A02AAA891DE121462C0023807401A38044 +:10BB3800540123814401A3812401138544009750B3 +:10BB4800FA1FE7804094EF70EF8122859740FA1F33 +:10BB5800E780C05BB64026444E8596440649F259B4 +:10BB6800625AD25A425BB25B6161828001114AC853 +:10BB78002A892E8506CE22CC26CA2EC69750FA1FB1 +:10BB8800E78000F155CD405955CC5C300947B245A6 +:10BB980093F6B70F6386E60011474945639DE706AC +:10BBA8001E2009456399B706930484004146CA8557 +:10BBB80026859740FA1FE78080774146CA85130596 +:10BBC80084019740FA1FE7808076383085469307CE +:10BBD800F7FE93F7F70F63E6F6041306C4033285FE +:10BBE800C14532C6EF60FFC632469306C402A68539 +:10BBF8002285EFF07F8A3C2089CB22856244F2407F +:10BC0800D244424905616F00107A3830C947E306CB +:10BC1800F7FE3CB00145F2406244D2444249056116 +:10BC28008280930710050145E317F7FE3C20E5D70E +:10BC380022856244F240D244424905616F00F07C9B +:10BC48000945D1BF4945C1BF39C9011126CA06CE28 +:10BC580022CCAA8409459DCD0D4628002E848D0549 +:10BC68009740FA1FE780A06C1C8570002C0093F7A2 +:10BC7800F70393E7070426855C85EF10706E19E9D2 +:10BC88000D46A28568009740FA1FE780407B7D1526 +:10BC98003335A000F2406244D244056182800945F0 +:10BCA8008280011152C42A8A32854EC656C25AC0B1 +:10BCB80006CE22CC26CA4AC82E8BB28AB68997509D +:10BCC800FA1FE780E0DC09ED8944F24062442685EA +:10BCD8004249D244B249224A924A024B05618280C3 +:10BCE8005C592A89C544F5F34D45EF70AFE71374E5 +:10BCF800F50F5145EF700FE7E38809FC83C7890109 +:10BD0800E3E487FC1375F50FE360F5FC9305300554 +:10BD1800130540089740FA1FE7804032232AA902FA +:10BD28002A84CD445DD11306400881459740FA1F07 +:10BD3800E7808066A3010400230144012302640113 +:10BD4800231054012326340723240402A3020400E9 +:10BD58008144E30C0AF62285EF00305FAA8435D5CA +:10BD68004A85EFF0EFB995B7397122DC06DE26DA9D +:10BD78004AD84ED652D456D25AD05ECE62CC66CA73 +:10BD88000944630D0610630B0710AA8B3A89368B9A +:10BD9800B28A2E8C9750FA1FE78080CF2A8A5144A6 +:10BDA800630E050E9305300541459740FA1FE7805D +:10BDB800E028AA894D447DC183441900834729009E +:10BDC800A204C207BE9483470900BE948347390082 +:10BDD800E207BE9483278A0263E697007D570944E9 +:10BDE8006399E70A63070C0083474A000544898B77 +:10BDF800CDC3930C4B00214681450A85C20C974060 +:10BE0800FA1FE780605993DC0C01930530056685BD +:10BE18009740FA1FE78080222A8C4D443DC95A86F4 +:10BE2800D68511059740FA1FE780E0651146CA8557 +:10BE380062859740FA1FE7800065414693058A01AD +:10BE48004E859740FA1FE780006421478A866686F8 +:10BE5800E2854E85EF1050772A841DE521468A85B4 +:10BE680028009740FA1FE7800062214693054900A1 +:10BE780028009740FA1FE780805C8547631EF5021B +:10BE8800A6855E85EF70DF8462859740FA1FE7809C +:10BE9800E0274E859740FA1FE78040272285F25019 +:10BEA8006254D2544259B259225A925A025BF24B06 +:10BEB800624CD24C216182800544F9B7797193971D +:10BEC800050122D406D626D24AD04ECEC1872E846A +:10BED80063D50704B734002093848482A830974040 +:10BEE800FA1FE780603A2AC609CDEFF03F9FB245B6 +:10BEF80011E5A8209307F00F631EF5002E85EF408B +:10BF08004FF42165218DB250225492540259F249BE +:10BF180045618280EF40CFF7EDB793F7150091C7E1 +:10BF2800EFF00FAF13451400F9BFA1E10145E1BFE0 +:10BF3800850493F4F40FEFE07FD6E3F9A4FE33957C +:10BF480099001319050113590901B3772401EDD399 +:10BF58004A85EFE0BFFEC167FD176305F500DD45C3 +:10BF6800EFF0CFA13345240179BF85448549E1B776 +:10BF7800B737002023AC0780B737002023A40780F9 +:10BF880037C70500B73700201307A75023A207803B +:10BF9800B737002023AEE78037C705009387C781EE +:10BFA80013078725D8C337B705001307A70698C70F +:10BFB80037D70500B73700201307073923A6E780CE +:10BFC80037D705009387C7801307E7F3D8C337D758 +:10BFD80005001307E71D98C78280B737002083C77D +:10BFE800C782918B89C7B73700209387C7803737B7 +:10BFF80000202322F78001458280011106CE2AC63F +:10C00800EFF01FF73245B73700209945A385A7827F +:10C01800EFD00FECF24037B505001305251E05617A +:10C028006FE07FC81C5581C7A1473E8582800111FA +:10C0380022CC26CA2A84AE84130500049305300551 +:10C0480006CE9740FA1FE78060FF08D475C1130633 +:10C058000004A6859740FA1FE780602D78543C2B92 +:10C0680093F68700F5CA1454B422A18AF5C683272B +:10C078000408DDEF93053005130500109740FA1FFB +:10C08800E780C0FB2320A4088D4745C5A302040010 +:10C0980078549C30143391EB91EABC20918BC5E322 +:10C0A8003C2B918BC9EF854701A881C6214758B021 +:10C0B80089C75C3093E707015CB06C54BC29858B59 +:10C0C80099CB1C540547BC238D8B6396E7007C20D5 +:10C0D80093E717007CA08327040889C77C2093E78F +:10C0E80087007CA05C300547639AE70A93048400C4 +:10C0F8004146814526859740FA1FE780E029414659 +:10C108008145130584019740FA1FE780E02813064C +:10C11800C4033285C14532C6EF60AFF383270408F4 +:10C128003246B9CF2285EF00502E9307000525C56A +:10C13800A147F2406244D2443E85056182809C203A +:10C1480014231547B387E70237E70600130747B3F9 +:10C15800BA97B6979C238DB7943089C6143399C281 +:10C16800E14799BFB420D58F918B95DF9C2014238C +:10C178001547B387E70237E70600130787B1C9BF3A +:10C188009306C402A6852285EFF00FB12285EF0041 +:10C198009021C14751FD3CB0814761BF13F787012A +:10C1A8002DCFC18B930484004146A9C789052685F4 +:10C1B8009740FA1FE780A01741468145130584017F +:10C1C8009740FA1FE780401D7C201306C403328580 +:10C1D80093E747007CA0C14532C6EF608FE783270D +:10C1E8000408324699CF2285EF00302293072005B4 +:10C1F8005DD13DBF814526859740FA1FE780C0196C +:10C2080065BF9306C402A6852285EFF0EFA82285B4 +:10C21800EF007019CD4741D121BF09478545638A91 +:10C22800E700114789456386E70019476396E700E9 +:10C238008D450A20EF70EFB37C2093E747007CA080 +:10C248008327040881C793071005B1B7C547A1B76D +:10C258003C21638B0722797122D406D626D24AD094 +:10C268003C31130750052A84639DE706034975008E +:10C278001306C503C14593573900AA973285842709 +:10C2880032C6EF600FDDB737002083A707A0A1C72C +:10C298009C47B1C30325040893767900B3D6D440EC +:10C2A8003246858A93050504180893E6060813059F +:10C2B800050882971375F50F19ED41460C0813050B +:10C2C800C4029740FA1FE78080062285EF00B00D70 +:10C2D800930760053CB0B25022549254025945610C +:10C2E8008280130710026392E7021C550327050892 +:10C2F800DE2361E313F707104DCF78555A2B1377D8 +:10C30800071045CB930770023CB03C30130770020E +:10C318006397E70C3C5885E39305300571459740D2 +:10C32800FA1FE780A0D128D819C5714681459740E2 +:10C33800FA1FE78060062458B1C4BC2C89E722851F +:10C34800EFF0CFA0A8AC2858814541469740FA1F86 +:10C35800E780800428583D472C2D9387F5FF93F7F5 +:10C36800F70F6364F700EF60CFCEEF406FCC3C5817 +:10C37800A1458AAB13852701EF60AFCD2C580A2061 +:10C38800EF00B031930780020A203CB09740FA1FB3 +:10C39800E7800070414609C57E2513D617003E96F2 +:10C3A800B737002003C5B78206068545EF405F8092 +:10C3B8001DB713F7072009CB78545A2B137707209A +:10C3C80001C79307900289B793F707409DDF7C5414 +:10C3D800DE2B93F7074095DB9307B00235B71307B9 +:10C3E80080026397E7023C5899C78E2B0A20138670 +:10C3F8002701EF00F02F1C54DE2313F7072029CF65 +:10C4080078545A2B1377072021CB93079002ADBF9E +:10C4180013079002639BE700EF60CFF2AA850A201A +:10C42800EF00102C9307A00285B71307A0026390B2 +:10C43800E704EF608FF0AA85854701456384F5001E +:10C44800814505452EC6EF604FED2A86B2450A2084 +:10C45800EF00B0251C54DE2393F707409DC37C549E +:10C46800DE2B93F7074091CF9307B00231BF130734 +:10C47800B0026398E700EF608FEDAA850A20EF000D +:10C48800902A9307F002B9B58280411122C440591D +:10C4980026C206C67C54AA84DE2B13F7071011C7E0 +:10C4A80018545A23137707100DE313F7072011C701 +:10C4B80018545A231377072009EB93F707408DCBBD +:10C4C8001C54DE2393F7074085C7930710023CB03E +:10C4D8002285EFF0FFD738309307F002631EF7008C +:10C4E8002244AA20B2409244814541016FE01FC90D +:10C4F8009307F0023CB0EDB7B240224492444101A8 +:10C508008280397122DC405926DA4AD84ED606DEB6 +:10C51800AA89AE8432896302043A2A211E206384E0 +:10C52800A700A14421A03C2091EB9D44F250625405 +:10C5380026854259D254B259216182809387E5FFFA +:10C5480093F7F70F2D47E362F7FE37E706008A07F0 +:10C55800130707B5BA979C438287B2852285EFF007 +:10C568007FACAA84E1B74146CA851305C404974045 +:10C57800FA1FE780C0DB22858525AA8411C1A14462 +:10C588003C30130740056396E700930790053CB0DD +:10C5980071BF130760056395E7009307A005C5BF42 +:10C5A800D147F5B79309C4054E854146CA859740DA +:10C5B800FA1FE780C0D70325040845C53C30130798 +:10C5C80090056398E70022854D259307E0053CB068 +:10C5D80079A01307A0056390E7087C3013D73700CC +:10C5E800229714279D8BB3D6F640B737002083A730 +:10C5F80007A0858A93E606F893F6F60F9DD39C4725 +:10C608008DD39305050818084E86130505048297EF +:10C618009374F50FE39704F041460C081305C4041E +:10C628009740FA1FE780A0E17C304D47850793F7D4 +:10C63800F70F7CB06377F7002285052D9307E00597 +:10C64800B9B7B737002003C5B7828545EF406FB843 +:10C65800930750052DBF1307C005E386E7F681440D +:10C66800F1B5130984004E86CA8522851408EFE0C7 +:10C67800BFE241469305C40408089740FA1FE780C3 +:10C6880000DCE30505EA8A861306C403CE854A85DD +:10C69800EF10206A05E12285EFE05FEBB737002055 +:10C6A8002A8783A747820A20814601468A8582977E +:10C6B800AA8411C1A14493072002D1BD0C22EFE046 +:10C6C800FFAB71BF383093072002E310F7E67C58C0 +:10C6D80089EB9305300571459740FA1FE78000966E +:10C6E80068D86858E30305E44146CA859740FA1FAD +:10C6F800E780E0C364582285EFE05FE5A8AC9307C4 +:10C708003002F1B5383093073002E310F7E21E2209 +:10C7180068582146930529001EA949059740FA1F24 +:10C72800E780E0C07C54DE2B13F727002DC7185490 +:10C738005A23098B2DC39307400251BD3830930704 +:10C748004002E314F7DE3C5C81EB85455D4597408C +:10C75800FA1FE780A08E28DC285CE30205F08347F7 +:10C7680009004146CA857CA99740FA1FE78020BC8A +:10C7780093075002A9BD383093075002E317F7DA40 +:10C78800285C19469305190041059740FA1FE78070 +:10C7980000BA7C54DE2B918B95CF1C54DE23918BF1 +:10C7A80095CB9307600225B57C5C89EB9305300532 +:10C7B80051459740FA1FE780608868DC685CE302AF +:10C7C80005D64146CA859740FA1FE78040B67C5C8B +:10C7D8007D5798CB4E85EFF05FCB51B50325040804 +:10C7E80013060004CA85130505049740FA1FE7805D +:10C7F80000B42285EFE09FC63C301307000563951F +:10C80800E70093074005E1B313071005639CE700B1 +:10C81800B737002003C5B7828545EF408F9B930744 +:10C82800500575B313072005E39BE7E2B7370020EF +:10C8380083A707A0E38707CE9C47E38407CE832519 +:10C848000408930484001808938505088146268601 +:10C858002E8582970A201008A685EF607FDA930755 +:10C86800B005B5B338309307E005E310F7CC83255E +:10C87800040841464A859740FA1FE78040BCAD440A +:10C88800E30605CA032504084146CA859740FA1FEE +:10C89800E780E0A92285EFE07FCBB73700202A8721 +:10C8A80083A747822C580A20814601468297AA848A +:10C8B80011C1A14493071002D9B9AD47E391F5DA44 +:10C8C80014222E21130665000821EF608FDD41BB7D +:10C8D800894759C2D1C108A29C211CB29C313CA2F3 +:10C8E800BC213CB2BC31A30206005CA2DE21A183BC +:10C8F800858B5CB2DA211377072001C793E72700FD +:10C908005CB2DE2193F7074089C75C3293E74700A2 +:10C918005CB2DE2113974701635607005C3293E748 +:10C9280087005CB223030600DC21858B7CA2DA2118 +:10C93800098B01C793E727007CA2DE21918B89C769 +:10C948007C2293E747007CA2DA218147218B09C723 +:10C9580078221367870078A23E8582802E86AA8572 +:10C9680005456FF0FFF62E86AA8509456FF05FF63C +:10C97800894785C51DC1411106C6AE870D47AA85E1 +:10C9880098A31385170041469740FA1FE780209A1D +:10C99800B24081473E85410182803E858280894739 +:10C9A80085C51DC1411106C6AE871147AA8598A342 +:10C9B8001385170041469740FA1FE7804097B24019 +:10C9C80081473E85410182803E858280894785C5B1 +:10C9D8001DC1411106C6AE871947AA8598A31385BC +:10C9E800170041469740FA1FE7806094B24081479C +:10C9F8003E85410182803E858280894795C90DC95F +:10CA0800411106C61D4798A11A21AE87214698B143 +:10CA18001A212183B8A19305250013853700974073 +:10CA2800FA1FE780C090B24081473E85410182806D +:10CA38003E858280894785C51DC1411106C6AE87DE +:10CA48002147AA8598A31385170041469740FA1FE6 +:10CA5800E780E08DB24081473E85410182803E8576 +:10CA6800828089479DC515C5411106C6254798A1ED +:10CA78001821AE87194698B193051500138527002C +:10CA88009740FA1FE780A08AB24081473E8541015E +:10CA980082803E858280894785C51DC1411106C6B1 +:10CAA800AE872947AA8598A3138517004146974062 +:10CAB800FA1FE780C087B24081473E8541018280E6 +:10CAC8003E85828089478DC505C5411106C6AE875A +:10CAD8003147AA8598A313851700130600049740C9 +:10CAE800FA1FE780C084B24081473E8541018280B9 +:10CAF8003E858280894785C51DC1411106C6AE871E +:10CB08003547AA8598A31385170041469740FA1F11 +:10CB1800E780E081B24081473E85410182803E85C1 +:10CB28008280894799C511C595479CA11C219CB154 +:10CB380081473E858280894799C511C5AD479CA12B +:10CB48001C219CB181473E8582800DC55D718A8517 +:10CB580086C6A2C42A84EFE03F8C0A20B7D6050017 +:10CB68000A86938646969D45EFE08FFEB64026449A +:10CB780061618280054582800DC55D718A8586C6A2 +:10CB8800A2C42A84EFE05F890A20B7D605000A8686 +:10CB98009386E6969D45EFE0AFFBB640264461617B +:10CBA8008280054582805D71A2C49305C5022A84EE +:10CBB80041460A8586C69730FA1FE78040770A20E3 +:10CBC800B7D605000A8693868697C545EFE04FF8E5 +:10CBD800B6402644616182805D71A2C49305C50395 +:10CBE8002A8441460A8586C69730FA1FE780207452 +:10CBF8000A20B7D605000A869386669AC545EFE0EF +:10CC08002FF5B640264461618280B737002083A79C +:10CC180007A0A9CB9C435D71A2C486C62A841305CC +:10CC2800E00F8DCF032504089305050C13050508AF +:10CC3800829783250408130600040A85938505084E +:10CC48009730FA1FE780A06E0A20B7D605009386B2 +:10CC5800C6AC0A8693051004EFE08FEFB640264471 +:10CC6800616182801305E00F8280317122DD2A84A0 +:10CC78000A2126DB06DF4AD94ED752D556D35AD1D8 +:10CC88005ECF62CD9740FA1FE78080E03C58AA84C7 +:10CC980089EB9305300571459730FA1FE780003A14 +:10CCA80028D82858CD4705C9714681459730FA1FBD +:10CCB800E780806E032904072285EFE03F89230D72 +:10CCC800A9003C203739002063810712832709A077 +:10CCD80085E39307E00FFA506A54DA544A59BA596F +:10CCE8002A5A9A5A0A5BFA4B6A4C3E852961828015 +:10CCF80083AB0701E38F0BFC032B0408EF50FFE322 +:10CD08002A8C0145EF507FE1DC303858130B0B02B9 +:10CD18009309C403130AC405938A64003AC0B3375D +:10CD2800F0002A87930801045688B336800152869A +:10CD3800CE855A85829B1C54B8232307E102983379 +:10CD4800A306E1029C232306F102832709A0D1D37D +:10CD580003AB4701E30F0BF6DC30B337F0003ECEF0 +:10CD6800EF50BFDDAA8B0145EF503FDB03270408D6 +:10CD7800F2472AC03AC2B338700156887810930631 +:10CD880084004E86D2858800029B7C54B82B2305EC +:10CD9800E1029833A304E1029C232304F1028327D0 +:10CDA80009A003A94701EF505FD92A8B0145EF502D +:10CDB800DFD683C854009C082A883EC2B3381001C5 +:10CDC800B33760013810930684015286CE8556C069 +:10CDD800880002990A20B7D605009386C6AF900846 +:10CDE800C545EFE0EFD6AA87FDB5D430832709A063 +:10CDF800032B0408B336D00083AB070136CEEF50BF +:10CE0800DFD32A8C0145EF505FD13C58F246130B13 +:10CE18000B02130AC4059309C403938A64002A8881 +:10CE2800930801044E86D2853EC05687B3378001E9 +:10CE38005A85829B1C54130B0103B8232307E10274 +:10CE48009833A306E1029C232306F102832709A055 +:10CE580083AB4701DC30B337F0003ECEEF50FFCD57 +:10CE68002A8C0145EF507FCBF2472AC0B3388001A6 +:10CE780056887810930684004E86D2855AC2880058 +:10CE8800829B8325040841465A859730FA1FE7801C +:10CE9800005BAD47E31B05EE3DBDB7D605002E860A +:10CEA8009386469DC5456FE0AFCA5D71B287A2C43F +:10CEB8004C802A84BE8513051100194686C6973012 +:10CEC800FA1FE780C046B7D605000A8622859386F2 +:10CED800A6A6A145EFE0CFC7B6402644616182808F +:10CEE800B7D605002E869386C6A3C5456FE04FC604 +:10CEF8005D71B287A2C46C802A84BE8513052100A7 +:10CF0800214686C69730FA1FE7806042B7D60500EB +:10CF18000A862285938626A0AD45EFE06FC3B6400A +:10CF2800264461618280B7D605002E869386E6A9DD +:10CF3800C5456FE0EFC1797122D406D626D23C31BF +:10CF4800130730052A846381E708130750056392A5 +:10CF5800E7089307A0053CB17C31C14513D73700DA +:10CF68002A9714279D8B1305C503B3D6F640858AE7 +:10CF780093E606F893F6F60F36C6EF509F8DB24645 +:10CF8800B737002083A707A09DCB9C478DCB0325EF +:10CF9800040818081306C4039305050413050508B7 +:10CFA80082971375F50F01ED1305C40241460C086D +:10CFB8009730FA1FE780A0372285EFF0DFBEB25026 +:10CFC8002254925445618280930790053CB1814672 +:10CFD80045BF130710026391E7027C550327050834 +:10CFE800DE2B61EF13F7170069CB18555A23058B11 +:10CFF80069C7930720023CB03C30130720026394B2 +:10D00800E70E3C5889EB9305300571459730FA1FB8 +:10D01800E780C00228D82458ADCC2285EFE00FD392 +:10D02800A8AC2858814541469730FA1FE780C0369A +:10D0380028583D472C2D9387F5FF93F7F70F636D1D +:10D04800F702B737002083C7B7A0D9CB414681453F +:10D0580008089730FA1FE7802034B72500201946C2 +:10D068009385C56F08089730FA1FE780402C305821 +:10D078000C082E85EF801026EF308FFB3C58A14519 +:10D088008AAB13852701EF50CFFC2C580A20EFF00C +:10D09800DFE0930730020A203CB09740FA1FE78090 +:10D0A800209F414611C17225B737002003C5B782BA +:10D0B80006068545EF30DFAF19B713F7270001CB18 +:10D0C80018545A23098B01C7930740022DB7918B37 +:10D0D80085D71C54DE23918B85D39307600221BF2B +:10D0E800EF502FF751BF130730026396E7023C5801 +:10D0F80099C78E2B0A2013862701EFF07FDF7C5417 +:10D10800DE2B13F7270021CB18545A23098B21C78C +:10D118009307400249B713074002639BE700EF50AB +:10D128007FA2AA850A20EFF0BFDB93075002A5B7BC +:10D1380013075002639DE702EF503FA015E58145B4 +:10D1480005452EC6EF507F9D2A86B2450A20EFF08E +:10D15800DFD57C54DE2B918B8DC71C54DE23918B3D +:10D168008DC39307600205BF85450145D9BF1307E5 +:10D1780060026398E700EF509F9DAA850A20EFF0B0 +:10D188009FDA7C5403270408DE2B09EF13F70710F6 +:10D1980011CB18545A231377071009C79307700245 +:10D1A8003CB031BD13F7072009CB18545A23137725 +:10D1B800072001C793079002E5B793F7074089CB8B +:10D1C8001C54DE2393F7074081C79307B002C9BFF9 +:10D1D8009307F002F1B7397122DC26DA4ED652D421 +:10D1E80006DE4AD8AE89328AAA849740FA1FE780B9 +:10D1F800208A4059414681450A859730FA1FE780C1 +:10D20800A01935C4035904006313990638309307ED +:10D218001002631FF7028327040899CF2C58A1C96D +:10D228004A85EF1080790545F2506254D25442592C +:10D23800B259225A216182808A861306C405930551 +:10D24800C40313058400EF00D02E15E18A85C9BFF9 +:10D258002C5891CD9E29639C47012146C9054E85CE +:10D268009730FA1FE780A01D19C12C5855BF268595 +:10D278009740FA1FE780C0812A84054555D44C544D +:10D28800B1C59E29639447052146C9054E85973047 +:10D29800FA1FE780C01A8547631AF502B7270020EE +:10D2A80083C7F73A89C74C54BC3D639AA70CBD4560 +:10D2B8002685EF10406BB727002083A7C76B014571 +:10D2C800A5D71D45894582970145B9BFB7370020C5 +:10D2D80003C7C7A0B729002093898968058B3E89B1 +:10D2E80029C3B7370020583083C747A0631BF7020C +:10D2F800B73500201946938555A01305640097306B +:10D30800FA1FE780C0138547631DF50083A749030B +:10D3180081C791451D458297BD452685EF10A064BC +:10D3280019B7373700200347B7A083A7490331CB84 +:10D338000347C9A0098B09CB81C795451D4582972D +:10D348002685EF10C067C5B581C78D451D458297F5 +:10D358004146814508089730FA1FE780E003B72562 +:10D36800002019469385C56F08089730FA1FE78093 +:10D3780000FC0C082E850A86EF80C0758A852685F4 +:10D388004DB58545C5FF6DBF797122D440594AD046 +:10D398004ECE52CC06D626D2AA892E8A3289630668 +:10D3A80004622A211E20638CA700A144B250225493 +:10D3B800268502599254F249624A456182802420A6 +:10D3C80099C09D44E5B79387F5FF93F7F70F314769 +:10D3D800E369F7FE37E706008A07130707B8BA9725 +:10D3E8009C4382871C54F1F3930530051305000410 +:10D3F8009730FA1FE78080C408D445D9034709004D +:10D40800914763F4E7008D4455B7034719008547F2 +:10D41800E3EBE7FE13060004CA859730FA1FE7809E +:10D4280000F10C547054A3020400D4415C4A858A6C +:10D43800FD8E5E2AF99BD58F5EAAD841544AF59B8A +:10D448000583058B8582F98E8606DD8E56AADC411A +:10D45800584AED9A8983858B09837D8F0A07558FF2 +:10D468005AAAD4415C4A5D9B8D82858A8D83F58F4B +:10D478008E07D98F5EAAD841544A93F7F7EF2183D4 +:10D48800058BA182F98EA206DD8E56AADC41584A88 +:10D49800A583858B25837D8F9317970013F7F6DF78 +:10D4A8005D8F5AAAD4415C4AA982858AA983F58FDF +:10D4B8009396A7009377F7BFD58F5EAAD441584AB1 +:10D4C800AD82858A2D83758FFD769386F67F2E072C +:10D4D800F58FD98F5EAA3C2A03250408A18BF1CFCA +:10D4E800BC21A18BF9CBE31205EC9305300513059C +:10D4F80000109730FA1FE78060B42320A40801D5F4 +:10D508007C54A302040003471900943399E63DCFE5 +:10D518005C3093E707015CB021A0A1475CB06DFBCC +:10D528002285EFF06FE56C54BC29858B89CB1C54A0 +:10D53800BC238D8B89C77C2093E717007CA08327A9 +:10D54800040889C77C2093E787007CA05C300547E6 +:10D558006398E70A41468145130584009730FA1F0E +:10D56800E78080E341468145130584019730FA1F1F +:10D57800E78080E2C1451305C403EF508FAD8327D0 +:10D588000408ADCF930700053CB00DB5B82B118B3F +:10D5980019E703472900118B19E38547ADBF9C2381 +:10D5A800154783460900B387E70237E706001307E4 +:10D5B80047B3BA97B6979C23B9BF19C59730FA1FD6 +:10D5C800E780C0B4232004087C54983311C703476C +:10D5D800190019C3E14781B7B82B118B09E7034735 +:10D5E8002900118B5DDB9C23154783460900B3870F +:10D5F800E70237E70600130787B165BFC14769B778 +:10D6080013F7870131CBC18B1305840041468DCFB9 +:10D6180089059730FA1FE78080D141468145130577 +:10D6280084019730FA1FE78020D77C20C145130575 +:10D63800C40393E747007CA0EF50AFA183270408F9 +:10D6480091CB9307200589B781459730FA1FE7806A +:10D65800A0D4E1B7CD470DBF09478945638AE700E4 +:10D66800114785456386E70019476396E7008D45AE +:10D678000A20EF501FF07C2093E747007CA0832707 +:10D68800040881C79307100501B7C547F5BD414692 +:10D69800CA851305C4049730FA1FE78040C93C3097 +:10D6A80013076005639CE700B737002003C5B782FE +:10D6B8008545EF300FB293075005F9B545476383A9 +:10D6C800E7029306C4021306C40393058400228567 +:10D6D800EFD09FDC2285EFF00FCDAA8411C1A144C1 +:10D6E800D1475DB5C9474DB59309C4054E85414637 +:10D6F800CA859730FA1FE78080C30325040869C5E7 +:10D708003C30130790056398E7002285EFF0CFCCF3 +:10D718009307E00595BD1307A0056399E706B7379A +:10D72800002083A707A0E38E07C803A88700E30AA1 +:10D7380008C87C30930505084E8613D73700229712 +:10D7480014279D8B0A87B3D6F640858A93E6060888 +:10D7580013050504029841468A851305C4049730C9 +:10D76800FA1FE780C0CD11E1D2842285EFF0CFC641 +:10D778007C30CD461307E005850793F7F70F7CB09B +:10D7880063E4F6001307600538B00DB11307C00550 +:10D79800E39EE7C0B737002083A707A0E38307C24B +:10D7A8009C47E38007C293050508130984000A878C +:10D7B80081464A862E8582970A200A86CA85EF50B6 +:10D7C8003FE49307B005C9B38A864E869305840063 +:10D7D8002285EFD07FCC41469305C4040A85973053 +:10D7E800FA1FE780C0C58547D284E311F5BC2285BE +:10D7F800EFF08FBEAA84E31A05BA9307100269B343 +:10D80800383093077002E31EF7BA7C5889EB93050A +:10D81800300571459730FA1FE780408268D868580C +:10D82800E30105BACA8541469730FA1FE78020B060 +:10D83800032944072285EFD07FD1230DA900930740 +:10D84800800299B3383093078002E31CF7B61E2292 +:10D8580068582146930529001EA949059730FA1FE3 +:10D86800E780E0AC7C54DE2B13F7072035C718544B +:10D878005A23137707202DC39307900231B338300A +:10D8880093079002E31FF7B23C5C89EB93053005E0 +:10D898005D459720FA1FE780607A28DC285CE30260 +:10D8A80005B24146CA859730FA1FE78040A893071A +:10D8B800A002D9B938309307A002E314F7B01C22AC +:10D8C800285C1946930519007CA941059730FA1F71 +:10D8D800E780E0A57C54DE2B93F70740A1C71C54D2 +:10D8E800DE2393F707409DCF9307B00271B9383014 +:10D8F8009307B002E317F7AC7C5C89EB930530051E +:10D9080051459720FA1FE780607368DC685CE30E76 +:10D9180005A84146CA859730FA1FE78040A17C5C7C +:10D928007D5798CB03D529008145EFD03F85BDBCF5 +:10D9380038309307F004E3FAE7A603250408E30662 +:10D9480005A613060004CA85130505049730FA1FB7 +:10D95800E780E09D2285EFF04FABAA842285EFD0C7 +:10D96800FFAF3C3013070005639FE700B73700207F +:10D9780003D6E90003C5B78285450606EF304FA3F5 +:10D988009307300511B1130710056395E700930756 +:10D998006005DDBE13072005E39AE7A09307C005DD +:10D9A800E5B638309307E005E311F7A0032504082E +:10D9B8004146CA859730FA1FE78060972285EFF0C5 +:10D9C800CFAAAA841DBD0C228DB785478144E39F49 +:10D9D800F59C032846003C32382214322E211022AE +:10D9E8000145EF508FC2D9B28147C1463307F500D0 +:10D9F800B388F500182383C808003308F6008507A4 +:10DA0800334717012300E800E392D7FE82800147DD +:10DA1800BD471308F00F3306F5001422B388F5004C +:10DA2800FD178606558F2380E800182293F7F70F15 +:10DA38001D83E39207FF82808147930800F84148DD +:10DA480093F6F70F3387F50063FAC600B306F500BF +:10DA5800942214A38507E39507FF82806395C60087 +:10DA680023001701C5BF23000700EDB701114AC8FD +:10DA780056C22E89AA8A93053005414506CE22CC86 +:10DA880026CA4EC652C4328A9720FA1FE780005B26 +:10DA9800AA849305300541459720FA1FE780005A6C +:10DAA8002A84CD49A5C431CD414681459730FA1F16 +:10DAB800E780808E2686A2855685EF80A001AA89F8 +:10DAC80029E18387040063D30706A2852685EFF042 +:10DAD8001FF4B7E506004A86938545BB2285EFF01B +:10DAE800BFF08307090063D80704A2854A85EFF0D1 +:10DAF8001FF2B7E506005286938545BB2285EFF0F5 +:10DB0800BFEE26859720FA1FE780406011C4228562 +:10DB18009720FA1FE780805FF24062444E85D24426 +:10DB28004249B249224A924A05618280CA852685BD +:10DB3800EFF0FFED7DB7D2854A85EFF05FEDD1B705 +:10DB480081474146B306F5003387F500182303C81B +:10DB5800060085073347070198A2E395C7FE828030 +:10DB6800011126CA4EC6AE84AA899305300513054D +:10DB780000034AC806CE22CC32899720FA1FE780D4 +:10DB8800E04B2DC51306000381452A849730FA1F00 +:10DB9800E78080804146CE8522859730FA1FE7804E +:10DBA800808EA6850D461305D4019730FA1FE780AD +:10DBB800808D13060402930504012285EF7090718D +:10DBC800AA840D469305D4024A859730FA1FE78048 +:10DBD800808B22859720FA1FE7804053F2406244E9 +:10DBE80026854249D244B24905618280CD44FDB7B9 +:10DBF8005D714EDE62D4AE892A8C9305300513051B +:10DC08000003A6C2CAC052DC56DA5AD85ED686C607 +:10DC1800A2C4B28B368BBA84BE8A4289468A9720C0 +:10DC2800FA1FE780A041630405101306000381452D +:10DC38002A849720FA1FE78020764146E2852285CC +:10DC48009730FA1FE7802084414681450A8597204E +:10DC5800FA1FE78060741D46DE850A859730FA1F33 +:10DC6800E78060821D46DA85130571009730FA1F38 +:10DC7800E780608133392001B33490004146814503 +:10DC8800080823072101C4879720FA1FE780C0707E +:10DC98001946D68548089720FA1FE780C07E19469E +:10DCA800D2851305A1019720FA1FE780C07D930450 +:10DCB80004014146CE8526859720FA1FE780A07C7F +:10DCC8008A852685EFF0DFE7930904024E86A6854C +:10DCD8002285EF7030602A890DE94146CE85268578 +:10DCE8009720FA1FE780A0640C082685EFF05FE50F +:10DCF8004E86A6852285EF70F05D2A894645414605 +:10DD0800CE859720FA1FE780007822859720FA1F92 +:10DD1800E780C03FB64026444A8596440649F259F2 +:10DD2800625AD25A425BB25B225C616182804D4981 +:10DD3800D5B7011126CA52C4AA842E8A1305000336 +:10DD4800930530054AC84EC606CE22CC3289B6891C +:10DD58009720FA1FE780802E35C52A84A68541467C +:10DD68009720FA1FE7802072930404012146D28588 +:10DD780026859720FA1FE7800071CA85214613057A +:10DD880084019720FA1FE780007013090402A68512 +:10DD98004A862285EF701054AA844146CA854E856A +:10DDA8009720FA1FE780206E22859720FA1FE780C8 +:10DDB800E035F240624426854249D244B249224ABB +:10DDC80005618280CD44F5B739715AD05ECE2A8B71 +:10DDD800AE8B41459305300506DE26DA52D456D27D +:10DDE80062CC66CA6AC8368C328DBA8C22DC4AD8B4 +:10DDF8004ED69720FA1FE7806024AA8A930530053B +:10DE080041459720FA1FE78060232A8ACD44638E14 +:10DE18000A0859C52A86D6855A85EFF03FC5AA84CF +:10DE280041E19305300541459720FA1FE78000211D +:10DE38002A899305300541459720FA1FE78000207D +:10DE4800AA89630A090E6306050E1304FD001184EE +:10DE58001376FD0049C07D144204418035EE131548 +:10DE680044004E86D6855E95EFF01FB84146814541 +:10DE78004A859720FA1FE7802052014D93170D011C +:10DE8800C18363F48708BDC04A859720FA1FE780DD +:10DE9800E027638709004E859720FA1FE78000274F +:10DEA80056859720FA1FE780602663070A00528587 +:10DEB8009720FA1FE7808025F25062542685425940 +:10DEC800D254B259225A925A025BF24B624CD24C4B +:10DED800424D216182800144131544008A855E9574 +:10DEE800EFF09FB54E86D2850A85BDBF93154D00CC +:10DEF8000A86DE954A85EFF03FAF4A868A855A85BD +:10DF0800EF70503DAA84050D95BFBDFC0A86CE85ED +:10DF18004A85EFF07FAD4A868A855A85EF70903B37 +:10DF2800AA846686CA8562859720FA1FE780204002 +:10DF3800A1BFCD4491BFCD44A9BF397162CC2A8C11 +:10DF4800594526DA4AD84ED652D456D25AD05ECE41 +:10DF580006DE22DCAE8B328BB68A3AC63E8AC2898E +:10DF68004689834401049720FA1FE780802C2DCD31 +:10DF78009167938717E91EA185473CA12A843247F8 +:10DF88002105630A0C04930710033CB01946814528 +:10DF98009720FA1FE780404023036401A30354013C +:10DFA80044A82312740123174401231834012319A8 +:10DFB8002401A285B73700206254F250D254425946 +:10DFC800B259225A925A025BF24B624C03C58782BD +:10DFD80021616F20EFEBA30104001946BA85972051 +:10DFE800FA1FE780C0344DBFF2506254D2544259F0 +:10DFF800B259225A925A025BF24B624C21618280DA +:10E00800011122CC2A84314506CE2EC632C436C22E +:10E018003AC09720FA1FE780C02115C991679387F6 +:10E0280017E91EA1B2452246924602478D473CA1F8 +:10E0380020B16244B73700204EA172A116A53AA5B7 +:10E04800F240AA8503C5878205616F206FE4F2401C +:10E0580062440561828001114AC82A89394526CA65 +:10E0680006CE22CC2EC6B2849720FA1FE780601C09 +:10E078001DCDB2459167938727E91EA191473CA121 +:10E08800A30125014EA12A84A685190521469720BA +:10E09800FA1FE780C029A285B73700206244F24002 +:10E0A800D244424903C5878205616F206FDEF24082 +:10E0B8006244D24442490561828001114AC82A89D2 +:10E0C800414526CA06CE22CC2EC6B2849720FA1F16 +:10E0D800E780201615CD9167B245938727E91EA1E1 +:10E0E80095472A843CA1231225012146190597202A +:10E0F800FA1FE780C023A28566A4B73700206244D0 +:10E10800F240D244424903C5B78205616F204FD817 +:10E11800F2406244D244424905618280011122CC16 +:10E128002A84394506CE2EC632C436C23AC0972054 +:10E13800FA1FE780001015C99167938717E91EA198 +:10E14800B24522469246024799473CA142A1B737B9 +:10E15800002062446EA112A536A55AA5F240AA85F0 +:10E1680003C5878205616F20AFD2F2406244056122 +:10E178008280797122D406D62A842EC632C436C249 +:10E188003AC09730FA1FE780A09019CDB2452246D1 +:10E1980092460247EC84F0852C081306F00F22857E +:10E1A800F486F887EFC03F8AB250225445618280D6 +:10E1B800011122CC2A84394506CE2EC632C436C275 +:10E1C8003AC09720FA1FE780C00615C99167938760 +:10E1D80017E91EA1B2452246924602479D473CA137 +:10E1E80042A1B737002062446EA112A536A55AA5F0 +:10E1F800F240AA8503C5878205616F206FC9F24086 +:10E208006244056182805D713EC2835701062AC659 +:10E21800130540024EDE52DC56DA5AD85ED662D476 +:10E2280066D26AD06ECE86C6A2C4A6C2CAC02E8DD9 +:10E23800B28C368C3AC4C28DC68B035B0105835AF7 +:10E248004105034A81058349C1053EC09720FA1F4D +:10E25800E78020FE61CD1166130616E9324312A14C +:10E26800130690022A8930A19304E90021051304BA +:10E278004901924722476302030893071003A30149 +:10E28800F900194681459720FA1FE780E0101946E2 +:10E29800814526859720FA1FE78000101946814599 +:10E2A80022859720FA1FE780200F824723039901D0 +:10E2B800A303890123004903A30039032311F902A9 +:10E2C8002644B73700202312A901231D7901231EF4 +:10E2D8006901231F5901B6409644F259625AD25A2D +:10E2E800425BB25B225C925C025DF24DCA8503C55B +:10E2F8008782064961616F20AFB9BA85A301090019 +:10E3080019463EC29720FA1FE78060029247268589 +:10E318001946BE859720FA1FE78060011946EE85E9 +:10E3280022859720FA1FE780800041B7B64026442F +:10E3380096440649F259625AD25A425BB25B225C51 +:10E34800925C025DF24D61618280011122CC2A84C7 +:10E35800214506CE2EC632C436C29720FA1FE78062 +:10E3680040ED05C9224692469167938717E91EA199 +:10E37800B245B1473CA120B170A174B16244B7372E +:10E3880000204EA1F240AA8503C5878205616F204F +:10E398002FB0F24062440561828041110D4506C6E6 +:10E3A8009720FA1FE780E0E815C1930710F91CA130 +:10E3B8009307E0031CB1C5473CA1B7370020B24022 +:10E3C800AA8503C5878241016F208FACB240410105 +:10E3D8008280011122CC2A84294506CE2EC632C459 +:10E3E80036C29720FA1FE780C0E405C9B2459246B5 +:10E3F8009167938717E91EA12246C9473CA14CA102 +:10E4080020B114A56244B737002072A1F240AA8552 +:10E4180003C5878205616F20AFA7F240624405619A +:10E42800828001114AC82A892D4526CA06CE22CCE7 +:10E438002EC6B2849720FA1FE780A0DF29C1B24513 +:10E44800930710F91CA19307E0031CB1CD473CA129 +:10E45800A30125014CA12A84A685150519469720F4 +:10E46800FA1FE780C0ECA285B73700206244F2406B +:10E47800D244424903C5878205616F206FA1F240EB +:10E488006244D244424905618280011122CC2A8427 +:10E49800214506CE2EC69720FA1FE78080D905C5EC +:10E4A800B2459167938717E91EA1D1473CA16CA19A +:10E4B80042A1B73700206244F240AA8503C587828B +:10E4C80005616F20EF9CF240624405618280011172 +:10E4D80022CC2A84214506CE2EC632C49720FA1FA4 +:10E4E800E78020D51DC12246B245930710591EA1C9 +:10E4F80020A170A16244B73700204EA1F240AA853E +:10E5080003C5878205616F20AF98F24062440561B8 +:10E518008280011122CC2A84214506CE2EC632C41F +:10E528009720FA1FE780E0D015C5224691679387A8 +:10E5380027E91EA1B245A1473CA160A170B1624480 +:10E54800B73700204EA1F240AA8503C5B7820561FE +:10E558006F200F94F240624405618280011122CC41 +:10E568002A84314506CE2EC632C436C23AC0972018 +:10E57800FA1FE78000CC05C922468567B245924656 +:10E588000247938717C91EA120A170A16244B7371B +:10E5980000204EA116A53AA5F240AA8503C5878298 +:10E5A80005616F20EF8EF24062440561828001119F +:10E5B80026CAAE844AC82A891385C40006CE22CC4E +:10E5C80032C69720FA1FE780C0C60DCD85679387AE +:10E5D80017E9B2451EA124A1231225012A84310579 +:10E5E80008C426869720FA1FE78060D4A285B7372B +:10E5F80000206244F240D244424903C58782056143 +:10E608006F200F89F2406244D244424905618280FA +:10E61800011122CC2A84194506CE2EC69720FA1F4E +:10E62800E78020C105C58567938717F91EA1B24504 +:10E6380085473CB120A16244B73700204EA1F24083 +:10E64800AA8503C5878205616F208F84F2406244E2 +:10E6580005618280411122C42A840D4506C697208F +:10E66800FA1FE78000BD0DC1930710F91CA1E94707 +:10E678001CB120A12244B7370020B240AA8503C5A7 +:10E68800878241016F20CF80B240224441018280BD +:10E69800011122CC2A84214506CE2EC69720FA1FC6 +:10E6A800E78020B90DC59167938727E91EA1B24578 +:10E6B800930700033CA160A16244B73700204EA134 +:10E6C800F240AA8503C5B78205616F107FFCF2404E +:10E6D8006244056182800111214506CE2EC632C4EE +:10E6E8009720FA1FE780E0B405C58567B245224642 +:10E6F800938707391EA185473CA1B72700204EA163 +:10E7080072A1F240AA8503C5077905616F105FF809 +:10E71800F24005618280397122DC1304F5FF4AD882 +:10E7280052D456D25ECE420406DE26DA4ED65AD0EF +:10E73800894B2A8A3289B68A418063937515B72B2B +:10E74800002083C70B455E8B894495CF83C916008B +:10E758009C229144A209B3E9F900B727002083D786 +:10E768008769F51763D1F9029307C6FF639DF90816 +:10E7780031452EC69720FA1FE780A0AB2A84B24500 +:10E7880019ED9304F00FF250625426854259D25481 +:10E79800B259225A925A025BF24B21618280420995 +:10E7A800135909014CA123132501930700F91509F1 +:10E7B800A1651EA12311450185054A859720FA1FE9 +:10E7C800E780C08708C415C983C70B459385EAFF4E +:10E7D80013562900FD172388FB449720FA1FE7806A +:10E7E800A0B81C44A28589071CC4B727002003C50C +:10E7F8000779EF10FFE9814479B722859720FA1F3E +:10E80800E780C090BDBF9307D6FFE3CCF9F6B147C8 +:10E818003304F402B724002083A74479A297B827C9 +:10E8280019C7884309C59720FA1FE780208E1385EA +:10E838004900A16542058505418103AA44799710DD +:10E84800FA1FE780A07F83A74479229A2320AA0091 +:10E85800A29788431DD50547B8A783470B454A8625 +:10E86800D685FD172308FB449720FA1FE78020ACC4 +:10E8780083A744793E942313240123123401A5BFAE +:10E88800B1473304F402372B002083274B79DA8908 +:10E89800A297FA2388435DC3DE23B306C700910716 +:10E8A80063CED7083A95D6859720FA1FE78020A827 +:10E8B80003274B79814422977E23CA97C207C183D5 +:10E8C8007EA35A231107E390E7EC31459720FA1FFE +:10E8D800E7802096AA850DCD930700F91EA183270E +:10E8E8004B792302750123114501A297FA239C4312 +:10E8F8007AA11CC5B727002003C50779EF105FD997 +:10E9080083274B793E942313040023050400A5BDF7 +:10E9180083274B79A297884311C99710FA1FE7807C +:10E92800E07E83274B79A29723A0070083A7497924 +:10E938003E94231304002305040075BD11C99710E4 +:10E94800FA1FE780A07C83A74979A29723A0070034 +:10E9580083A7497985443E942313040023050400C2 +:10E968001DB56FA0201D6FA0401E6FA00042054579 +:10E97800828005458280411106C6EFA0401DB24045 +:10E988000145410182806FA0601F6FA020216FA008 +:10E99800C0236FA080256FA020276FA0E0286FA05C +:10E9A800A02A6FA0602C6FA0002E6FA0C02F1C3271 +:10E9B8001022A2075D8E6FA020316FA060326FA079 +:10E9C800C0346FA020376FA080396FA0C03E6FA001 +:10E9D800A0406FA080426FA060446FA040466FA027 +:10E9E8002048411122C60344C10226C483440103BE +:10E9F80003430101030E4101834E8101034FC1010D +:10EA0800834F0102834241028343810222D632446A +:10EA180026D8A2441ED416D27ED07ACE76CC72CA1C +:10EA28001AC841016FA0204C6FA080456FA06047B5 +:10EA38006FA0404905458280054582800545828052 +:10EA48006FB0103D05458280054582806FB07042E9 +:10EA5800B7E606008147938646BC1308F00F338754 +:10EA6800F60010231317060141836364E50063135E +:10EA78000601828092216364C7009AA1828085077B +:10EA880093F7F70FE9BF41119397050122C406C612 +:10EA980026C2C1872E8463D607029710FA1FE78023 +:10EAA800A07EAA8401CD1C21054793C7070863648B +:10EAB800F700EF50607B2685EF10BFB82165218DE8 +:10EAC80021A893F7150091CFB737002083A7C789EE +:10EAD80091C3829713451400B240224492444101E5 +:10EAE800828093F7250091CBB737002083A7078A48 +:10EAF80091C3829713452400C5B793F7850099CB36 +:10EB0800B737002083A7C78AFC5791C3829713455C +:10EB18008400D9B793F7450099CBB737002083A76E +:10EB2800C78ABC5791C382971345440075B793F7BA +:10EB3800050281CFB737002083A7078C83A7070971 +:10EB480091C382971345040241BF93F7050181CF12 +:10EB5800B737002083A7078C83A7C70891C382977C +:10EB68001345040195BF939725010145E3D607F6A0 +:10EB7800B737002093878783F433F023CC33C82337 +:10EB8800EFA0C045096525BF411126C2B734002052 +:10EB9800B737002013060012814522C42A84138542 +:10EBA800848306C623AE07944AC09710FA1FE780ED +:10EBB800A07E0145EF10B0510145EF109058B727DE +:10EBC8000020A38D8762B707D70713848483B5070E +:10EBD8005CC8B7B70D0D938707131CCCB7B7D70719 +:10EBE800938707135CCCED77938707137D471EB097 +:10EBF800232CE40C81470327840C232EF40CE167B3 +:10EC08009387F79F5D8F8327C40C8966938606B028 +:10EC180037290020D58F130989682326F40C232A65 +:10EC2800F40C8347E9002324E40C2328E40CA30A0A +:10EC3800F40AA30EF40AF977FD17231FF40E231024 +:10EC4800F410FD472301F41085679387F7F03EBC65 +:10EC58005EBCA30C0402EF206FE59307C01C2319C8 +:10EC6800F4068547A30FF4028357490003570901A7 +:10EC780028B0A983A30EF4068D472311F404232298 +:10EC880004049306B00F9387848363F4E6001307A4 +:10EC9800B00F93150701BAB7FAB703C7C703C18105 +:10ECA8001386E500118B35CB1387A5080E0783C69D +:10ECB800D70342074183DAB7918ABDC29386A50874 +:10ECC8008E06C206C18296BB6D4593848483AE8648 +:10ECD80063F3A500ED46B6B093058014BA86637455 +:10ECE800B700930680141307C01C2390E704370766 +:10ECF80016000E0613070790D6B3F2B396B7D8DB03 +:10ED0800EF70205CEF30803BEF6010442244B2404B +:10ED18009244024941016F50B0271317360041BF92 +:10ED28009316360079BF397122DC3704400026DAA1 +:10ED38004ED6AE84AA899305E4FF054506DE4AD877 +:10ED4800EF20AFDF498C1317040141832183931708 +:10ED5800840013590401D98F231601001379F90F80 +:10ED680010088A854E857C87A306210102C002C24D +:10ED780002C402C802CA02CC02CEEF60B055834773 +:10ED8800E1010347D101A0B0A2074207BA970347A0 +:10ED9800F1012180C0A0BA97F25062549CA013D709 +:10EDA8008700C183A382240198B0BCA04259D254E1 +:10EDB800B25921618280B725002037350020011122 +:10EDC80019469385056A1305859106CE22CC26CA75 +:10EDD8004AC891644EC69710FA1FE780405593853C +:10EDE800F4FF0145EF202FD32A84FD550145EF207C +:10EDF800CFD4A287FD147D5933F79700B366E50099 +:10EE0800D5CA631425016307970A3734002013070E +:10EE180084832308F70EA18393E707FC9169C164F3 +:10EE28002326A70EA308F70E13048483FD19FD14E7 +:10EE3800CE850145EF202FCE2A89FD550145EF20CB +:10EE4800CFCFB3672501EDD7FD576314F500E30174 +:10EE580039FF93570501230AF40E93578501A30A36 +:10EE6800F40E8317040E2319A40E230B240F420556 +:10EE7800135989001379F9034185A30B240F658D74 +:10EE8800E58F6312F5020317440F8317240E658F6D +:10EE9800E58F631AF7000317640F8317440E658F15 +:10EEA800E58FE307F7F8F2406244D2444249B24999 +:10EEB80005618280A6850145EF20EFC52A84FD55AE +:10EEC8000145EF208FC7A28705BF411126C2B7347D +:10EED800002006C622C44AC09387848303C7E70379 +:10EEE80083C7F703636AF70001442285B2402244CE +:10EEF80092440249410182802A899305102413050E +:10EF080080079710FA1FE78060132A8471DD1306C3 +:10EF180080078145938484839710FA1FE780C04750 +:10EF280063140900C1575CA0BC48B1E3E0C4A0C8A1 +:10EF3800E0C8232004008547238FF40285475CB08E +:10EF4800930700F97CB0B73700209387C797985389 +:10EF5800DC5338C47CC4FD573CA8B727002003C540 +:10EF6800C7692302A406EF60504408B8BDBFFC4837 +:10EF780080C3E0C82320040083C7E40385076DBF6E +:10EF88003C2D411122C406C699075CB53C45114782 +:10EF980058A598A33C4558352A8498B38347150348 +:10EFA800858B91E70347050389476317F7003844C2 +:10EFB8001C2393E707041CA328449305240319463C +:10EFC80009059710FA1FE78080362844322C0C5424 +:10EFD80021059710FA1FE7808035930730F97CB038 +:10EFE800B24022444101828041114AC03739002091 +:10EFF8009307898383A7C70A06C622C426C299E352 +:10F00800054531AAAA8413098983EF60906783278D +:10F01800C90A8297EF20F0622A847DD19C50EC4483 +:10F028002324F508F8309307A0096310F7108547E3 +:10F038002300F51483C7F4052303F514A303F5147B +:10F04800FC3598290148A2074207BA97F8251546C2 +:10F05800F905BA9703C735FF130584136207BA97F2 +:10F06800232CF40883C755FF03C765FFA20742078F +:10F07800BA9703C745FFBA97232EF40883C775FFCD +:10F08800A30BF40283C795FF03C785FFA207D98F97 +:10F098001EBC83C7B5FF03C7A5FFA207D98F3EBC17 +:10F0A80083C7D5FF03C7C5FFA207D98F5EBC83C737 +:10F0B800F5FF03C7E5FF232E0413A207D98F7EBCF3 +:10F0C8008147232CF4129710FA1FE7804026F84452 +:10F0D80083473702FD8BA30AF40203473702ED1773 +:10F0E80093F7F70F15832308E4022D476365F702AA +:10F0F8003E3C05679306A7C7E917C207C18363ECBF +:10F10800F600563C9307301F63E7D7007E3C130791 +:10F1180007C8637BF7020A24EF20B0720145B240AA +:10F12800224492440249410182808327090D1397A2 +:10F138001701E35707F0BC4498239C21F98F958366 +:10F14800858B2300F514EDBD8327090B2285829753 +:10F158008327890D0A24294693F7072091E305465A +:10F1680093050008EF50C0278327090D139717014F +:10F17800635807000A24514693050008EF504026BB +:10F188008327C904BC4B13974700E35B07E6C820F5 +:10F19800A3890400494693050008EF5060248DB503 +:10F1A800B737002083C79783411122C406C626C2F9 +:10F1B8004AC02A8485EB582485476312F70E834793 +:10F1C800940303471404858B6319F70C19469305B8 +:10F1D80024041305A4039710FA1FE7804026B334CC +:10F1E800A00089A883471504D5C38347750413076E +:10F1F800000493F7070C639BE708485539C11309C6 +:10F208002404CA851305A502EF50002E8547AA8459 +:10F218006319F502485489472300F4043C31194620 +:10F22800CA8593E72700A300F40451059710FA1F35 +:10F23800E780E00FB240224426850249924441010A +:10F248008280582485476303F7048347C405918B5C +:10F2580095EF834784039DEB130504049720FA1F59 +:10F26800E780404648D41DC189472300F4043C3157 +:10F2780019469305240493E72700A300F4045105D5 +:10F288009710FA1FE780A00A85446DB78347840367 +:10F29800898B95D35C549C3399FF814461BF834724 +:10F2A800C405918B89FF1C3413F7170005C3743408 +:10F2B8000D47639DE60028406C402244B2409244CA +:10F2C800024941011723FA1F67008347898BCDDF65 +:10F2D80078349547E31AF7FAF9BF4111B737002098 +:10F2E80022C406C69387878323880706930710F9E5 +:10F2F8007CB1B737002003A487950DC0B72700203D +:10F3080003C5B7638545EF10FFC093071027330582 +:10F31800F50222832244B24041010283B2402244D2 +:10F32800410182807C2991C778216314F7006FF02E +:10F33800DFFA583901CF7421638FE60078A1B72727 +:10F34800002003C5B76389456F10AFE8EDD3782176 +:10F3580079FF7CA1EDB7E1DFEDBF6C4531479C310A +:10F3680093F7F7037CA56386E700930700083E85BB +:10F3780082809C210D47BD8B7CB5E398E7FE411147 +:10F388004AC01309250322C419462A84A1054A85BF +:10F3980006C626C29710FA1FE780600A91476309DC +:10F3A80005126C441946130524049C218905998784 +:10F3B800858BA300F4049710FA1FE78040F7228595 +:10F3C800EFF01FDEA1476305051024449D475CA4A8 +:10F3D8009CA08547BCA0BCB01946CA8513854400CB +:10F3E8009710FA1FE780A0F4BC20B830990793F76C +:10F3F800F70F13678700BCA0B8B03844BA97035713 +:10F408008406B8B3BC2038448346D4053E97835756 +:10F4180084069206A183BD8BD58F5CA3B820814753 +:10F4280009071377F70FB8A0322C8346C40501CA21 +:10F4380093F70604CDE7F957998F93F7F70F93F6EB +:10F44800060481CEB030344413660604B0B0369753 +:10F45800143834B3B8200507B8A0322C014709CEB8 +:10F4680063ECC700BC2028440C548D073E959710C8 +:10F47800FA1FE780C0EB382CB42093F7F603850712 +:10F488003E9758B4B4A083471403858B91E703478C +:10F49800040389476317F70038441C2393E70704DC +:10F4A8001CA33C444C348CB3930790F97CB00345BF +:10F4B800F405834774065D8DEF60807B01468145C6 +:10F4C8000D459720FA1FE780E06BEF60901B81479E +:10F4D800B2402244924402493E8541018280F55758 +:10F4E800A1BF6C45130720029C3193F7F7037CA555 +:10F4F800639CE710411122C406C626C29C21154709 +:10F508002A84BD8B7CB5639AE7021946A1051305C9 +:10F5180025039710FA1FE78080F2914765C16C4474 +:10F528001946130524049C2189059987858BA30016 +:10F53800F4049710FA1FE78080DF2285EFF05FC69A +:10F54800A1474DCDB727002083A7C76782972444DA +:10F55800A14708D05CA49CA08547BCA0BCB01946B4 +:10F5680093052403138544009710FA1FE78020DCD5 +:10F57800BC209907BCA0BC3093E72700BCB08347E8 +:10F58800140491C738441C2393E707F81CA31946B1 +:10F59800930524041385A4009710FA1FE78020D947 +:10F5A800BC20990793F7F70F13F7F703050758B42B +:10F5B800BCA083471403858B91E70347040389475D +:10F5C8006317F70038441C2393E707041CA33C4443 +:10F5D8004C348CB39307A0F97CB00345F4058347FA +:10F5E80074065D8DEF60C068014681450D45972022 +:10F5F800FA1FE7802059EF60D0088147B2402244C3 +:10F6080092443E8541018280930700083E858280AE +:10F6180041114AC0373900208326499A22C426C29C +:10F6280006C69307000AFCD2B737002083A70797BE +:10F63800B70533002A84D857719B13671700D8D7AA +:10F6480098431377F7E798C398431377F7E7136757 +:10F65800071098C3373700200327879F10474D8E20 +:10F6680010C71306A005B0CA5057759A50D703475C +:10F67800E5051376F7079843137707F8518F98C372 +:10F68800DC420D4793E71700DCC224459D475CA583 +:10F6980085469CA0A3810400B4A08347B505638573 +:10F6A800E7001947639EE7188547BCB019469305DC +:10F6B8002403138544009710FA1FE78040C7BC2035 +:10F6C8009907BCA00347B4059947631FF702BC30EC +:10F6D8001385A40093E72700BCB083471403898BE4 +:10F6E800638107124C54BC29638D07101946D10554 +:10F6F8009710FA1FE780A0C338441C2393E707F844 +:10F708001CA3BC209907BCA0BC30B82093E7870095 +:10F71800BCB03C44BA9703578406B8B3BC203844FD +:10F728008346D4053E97835784069206A183BD8BF2 +:10F73800D58F5CA3B820814709071377F70FB8A0C6 +:10F74800122C8346C40501CA93F70604F9EBF9574E +:10F75800998F93F7F70F93F6060481CEB0303444AF +:10F7680013660604B0B03697143834B3B8200507CA +:10F77800B8A0122C4DEA0147B0208347A405937620 +:10F78800F603850636979A07D18F58B4BCA08347ED +:10F798001403858B91E70347040389476317F70030 +:10F7A80038441C2393E707041CA33C44583498B3FB +:10F7B800930760F97CB038448327499AB8DBB727A8 +:10F7C800002083C7C76D81EB370506008145130507 +:10F7D800452CEF10EFFDB73700209387C797A3811B +:10F7E80007008345F4058347740650342244B24029 +:10F7F80092440249DD8D014541011723FA1F670034 +:10F8080063388347940391C738441C2393E707F868 +:10F818001CA319469305A4039710FA1FE78020B18B +:10F82800CDB5F55735B7E3E8C7F4BC2028444C50AC +:10F838008D073E959710FA1FE78060AF182C2DBFF3 +:10F848001387E7FF1377D70F79EF93052503B4B034 +:10F858001946138544009710FA1FE78040ADBC2075 +:10F86800B8301146990793F7F70F13678700BCA0C4 +:10F87800B8B03844BA9703578406B8B3BC203844A4 +:10F888008346D4053E97835784069206A183BD8B91 +:10F89800D58F5CA3B820814709071377F70FB8A065 +:10F8A8008345B4058346C4056399C50093F70604E8 +:10F8B800ADEBF957998F93F7F70F93F6060481CEBE +:10F8C800B43093E60604B4B034443697143834B3ED +:10F8D800B8200507B8A00346B40591460147631050 +:10F8E800D602122C09CE63ECC700BC2028444C5029 +:10F8F8008D073E959710FA1FE78060A3182C0346E2 +:10F90800B4059146B7370020938787836315D614CB +:10F9180083C6070793F6060F93E656002388D70693 +:10F92800A1BDF55741BF93F7B70F0547E395E7E446 +:10F93800BCB0930525031946138544009710FA1F98 +:10F94800E780E09EBC209907BCA0BC3093E7270065 +:10F95800BCB08347940391C738441C2393E707F846 +:10F968001CA3834714031385A400898BF9C34C5443 +:10F97800BC29E1C31946D1059710FA1FE780209BDF +:10F9880038441C2393E707F81CA3BC20B83005466D +:10F99800990793F7F70F13678700BCA0B8B03844EE +:10F9A800BA9703578406B8B3BC2038448346D405B5 +:10F9B8003E97835784069206A183BD8BD58F5CA39F +:10F9C800B820814709071377F70FB8A08345B40516 +:10F9D8008346C4056399C50093F70604BDEBF95740 +:10F9E800998F93F7F70F93F6060481CEB43093E618 +:10F9F8000604B4B034443697143834B3B820050735 +:10FA0800B8A00346B405854601476310D602122CF8 +:10FA180009CE63ECC700BC2028444C508D073E95A6 +:10FA28009710FA1FE780A090182C0346B405854666 +:10FA3800D1BD8347940391C738441C2393E707F843 +:10FA48001CA319469305A4039710FA1FE780208E7C +:10FA58002DBFF55771B783C6070793F6060F93E6D0 +:10FA680066006DBD011152C4373A002056C2930A90 +:10FA78008A8383A7CA0906CE22CC26CA4AC84EC69C +:10FA88006395071C2A840945EF60C0473739002071 +:10FA98000326499A9307000AB73900207CD283A726 +:10FAA8000997B7053300130A8A83D857719B1367E0 +:10FAB8001700D8D798431377F7E798C39843137775 +:10FAC800F7E71367071098C3373700200327879F86 +:10FAD8001447CD8E14C79306A00534CA5457F59A17 +:10FAE80054D778209376F7079843137707F8558FFC +:10FAF80098C33C243844BD8B5CA41CA31D472444F4 +:10FB08006390E7348547A3810400BCA00345B4058E +:10FB18008D45631AB5221A2C63120714BCB0194616 +:10FB280093052403138544009710FA1FE78020806B +:10FB3800BC20990793F7F70FBCA00347C4051377B8 +:10FB4800070401CFB83013670704B8B03844BA9730 +:10FB58001838B8B3BC208507BCA023080A06B4200F +:10FB68008347A40513F7F60305079A07D58F58B4FA +:10FB7800BCA0930740F97CB083471403858B91E7B9 +:10FB88000347040389476317F70038441C2393E7A6 +:10FB980007041CA33C444C34370500827D158CB304 +:10FBA8008326499AB7340020DC4293E71700DCC269 +:10FBB8008347440603A6099793F7F703139797011A +:10FBC8005C56E98FD98F5CD6B7C7898E938767ED66 +:10FBD8001CC6B7575500938757555CC283476406C0 +:10FBE800034A04060947336AFA009387C497F8B3AF +:10FBF800A38107003C449384C497BCDAB72700204C +:10FC080083C7C76D638C072CFC52FDFF5285238187 +:10FC18000400EF60E005370506001305452C971032 +:10FC2800FA1FE78040B683A70997B7068000984374 +:10FC3800558F98C3D857719BD8D78327499AA382E1 +:10FC48000400A3800400094798C3F2406244D244E8 +:10FC58004249B249224A924A05618280A147BCB012 +:10FC680083578406DCA0835784060347D4053444AD +:10FC7800A1831207BD8BD98FDCB2B4200547890652 +:10FC880093F6F60FB4A083470A070326499A631030 +:10FC9800F7060347040689476311F71A0347640602 +:10FCA800938766008E07630607189387770D860784 +:10FCB8002318F406835704075828F9459387070A39 +:10FCC800B387E70209452308AA06056508C693878E +:10FCD80007FBC207C18393877716B3C7B702139789 +:10FCE8000701B387B702418386073CD205A0385283 +:10FCF800F94705833357F7023C526C528583FD8BD5 +:10FD0800AE977CD22388AA0642074183BC3093E78A +:10FD18000701BCB03C44BE968347E40593E707045B +:10FD2800BCB2B4203C44B697D8A3B4203C44218349 +:10FD38007D8BB6978346F4059606558FD8B3BC20BD +:10FD48008D07BCA029BD1947631AE5081A2C59E785 +:10FD5800BCB0138544001946930524039700FA1F85 +:10FD6800E780E05CBC201385A4009907BCA0BC30E8 +:10FD780093E72700BCB083471403898BA1C34C5475 +:10FD8800BC298DCF1946D1059700FA1FE780205A64 +:10FD980038441C2393E707F81CA3BC20990793F762 +:10FDA800F70FBCA00347C40513770704E30707DA76 +:10FDB800B430384493E60604B4B051BB8347940387 +:10FDC80091C738441C2393E707F81CA319469305E9 +:10FDD800A4039700FA1FE7808055C1B7A147BCB0BC +:10FDE80083578406DCA0835784060347D40534442C +:10FDF800A1831207BD8BD98FDCB2B42005478906D1 +:10FE080093F6F60FB4A083470A070326499AE3023C +:10FE1800F7E83852F94705833357F7023C526852DE +:10FE28008583FD8BAA977CD22388BA064207418333 +:10FE3800F1BD9387A7048E07A5BD9387E600E5BFAC +:10FE480005476393E708B1475CB483471403898B7C +:10FE5800B9CB4C54BC29A1CB1946D10513858400D4 +:10FE68009700FA1FE780A04C38441C2393E707F853 +:10FE78001CA3284419469305240309059700FA1F73 +:10FE8800E780E04A83270A0D13971701635A070092 +:10FE98003C24B98B91E738441C2393E707021CA341 +:10FEA800930720F9C9B98347940389C79C2093E72E +:10FEB80007F89CA0284419469305A4032105970038 +:10FEC800FA1FE780C04675B7122C4C501385840082 +:10FED8009307660093F7F7035CB4D5B737050600B8 +:10FEE80081451305452CEF10AF8C50346244F24025 +:10FEF800D2444249B249924AD285224A0145056113 +:10FF08001723FA1F670003C8B737002041119387EA +:10FF1800878322C4A04F06C6054714246390E602CF +:10FF280083C7070711476315F7002285EFF0EFBA7B +:10FF380022852244B24041016FF0DFB2B240224430 +:10FF480041018280B737002083A7878899E33E85DF +:10FF58008280D823E30DA7FE9C43CDBF011106CEB6 +:10FF680022CC26CA4AC84EC6EFF0DFFD11E981440B +:10FF7800F240624426854249D244B24905618280F2 +:10FF880083471503373900202A849304898389EF2E +:10FF9800B7350020194693858591130524039700EA +:10FFA800FA1FE780C038B5A005476397E700BC2073 +:10FFB800639C0716C9446DBF5C55B9E78347850341 +:10FFC8002308050291EB0347140385472308F4022D +:10FFD8008947E31EF7FC6DBF130585039710FA1FC9 +:10FFE800E780806948D40DC1EF40E0554C54BC25EA +:08FFF80081CF89472308F402C0 :0200000260009C -:10000000FD1698B30327892A5C4393E717005CC366 -:100010008347440603A6092893F7F703139797012C -:100020005C56F58FD98F5CD6371700409307700563 -:100030002300F704930780FA2300F704830644069D -:10004000A54763D8D7323E3393E707013EB303A7F2 -:100050000928B7C7898E938767ED1CC7B757550026 -:10006000938757555CC38327892A38443705060090 -:10007000834404068145B8DB13052573EF00EFD9EF -:10008000EF503051B72700209387C728A38107007E -:100090000947F8B32382070050346244F2404249D2 -:1000A000B249224AA685D244014505611713FA1FB9 -:1000B0006700A35FA147BCB083576506DCA08357E8 -:1000C00065060347D5053445A1831207BD8BD98F3B -:1000D000DCB2B020054709061376F60FB0A08347BF -:1000E000CA068326892A6318F70803470506894745 -:1000F000631FF706931766009387073D5828231759 -:10010000F40693872708B387E702F94509452306D4 -:10011000AA06056588C69387E7FCC207C183938753 -:100120007716B3C7B70213970701B387B7024183A6 -:100130008607BCD2BC3093E70701BCB03C443E9676 -:100140008347E40593E707043CB2B4203C44B697E8 -:10015000D8A3B4203C4421837D8BB6978346F40515 -:100160009606558FD8B3BC208D07BCA099BD9307C8 -:10017000E6008E0761B7B852F94705833357F70297 -:10018000BC52E8528583FD8BAA97FCD22306BA069F -:100190004207418345B71947639AE5081A2D59E785 -:1001A000BCB0930525031946138544009700FA1F38 -:1001B000E780601ABC201385A4009907BCA0BC305E -:1001C00093E72700BCB083471403898BA1C34C5429 -:1001D000BC298DCF1946D1059700FA1FE780A017DB -:1001E00038441C2393E707F81CA3BC20990793F716 -:1001F000F70FBCA00347C40513770704E30107DC2E -:10020000B430384493E60604B4B065B3834794032E -:1002100091C738441C2393E707F81CA3194693059C -:10022000A4039700FA1FE7800013C1B7A147BCB031 -:1002300083576406DCA0835764060347D405304423 -:10024000A1831207BD8BD98F5CB2B0200547090688 -:100250001376F60FB0A08347CA068325892A631C4C -:10026000F7040347040689476313F70493176600EE -:100270009387073D58282317F4069387C708B38749 -:10028000E702F94609452306AA06056588C593874E -:1002900047FCC207C18393877716B3C7D70213976A -:1002A0000701B387D70241838607BCD161B59307A5 -:1002B000F6008E07C1B7B851F94705833357F702E7 -:1002C000BC51E8518583FD8BAA97FCD12306DA0641 -:1002D0004207418385B505476393E708B1475CB59D -:1002E00083471503898BB9CB4C55BC29A1CB194643 -:1002F000D105138584009700FA1FE780C0053844B4 -:100300001C2393E707F81CA32844194693052403EC -:1003100009059700FA1FE780000483270A0C13974A -:100320001701635A07003C24B98B91E738441C231A -:1003300093E707021CA3930720F945B18347940371 -:1003400089C79C2093E707F89CA028441946930589 -:10035000A40321059700FA1FE780E0FF75B7122D6F -:100360004C519307660093F7F7035CB5138584003F -:10037000D5B73E33C207C183BD9BC207C183F9B164 -:10038000F2406244D2444249B249224A0561828025 -:10039000B727002041119387071622C4A04F06C635 -:1003A000054714246390E60283C7C7061147631507 -:1003B000F7002285EFF0AFB722852244B240410119 -:1003C0006FF09FAEB240224441018280B7270020E7 -:1003D00083A7071B99E33E858280D823E30DA7FE00 -:1003E0009C43CDBF411106C622C426C24AC0EFF0CD -:1003F000FFFD6306051A83471503372900202A8469 -:100400009304091689EFB725002019469385052323 -:10041000130524039700FA1FE780E0F39DA8054722 -:10042000639CE700BC204945638C0716B725002074 -:10043000194693856523E9BF5C55B9E78347850372 -:100440002308050291EB0347140385472308F402B0 -:100450008947E319F7FC45BF130585039710FA1F79 -:10046000E780A0D348D40DC1EF4060084C54BC25B0 -:1004700081CF89472308F4021946B10513052403E7 -:100480009700FA1FE78020ED034704038947E31C28 -:10049000F7FA9C3095CB834784039DC78347F403C9 -:1004A000130700041305840393F7070C6390E71008 -:1004B0009710FA1FE78020D348D45C5491C7BC2B17 -:1004C00081C78947230CF40285471CA45CB0B72779 -:1004D0000020138787FB743B2424230009161397FD -:1004E00006012318D40693F5F40099464183138638 -:1004F00087FB63F5B6068346040689471309470060 -:100500006394F6001309C703162C8345F405B72737 -:1005100000201305A00F03C767292318240793970A -:100520003600B3D6A6026A2E09469387B7026394B3 -:10053000C5088E07130767233E979397A600BA97BF -:1005400037460F00130606248146B3A5A7023305DC -:10055000F502EFC0D0044A952318A40683578406F9 -:1005600023150406B9CF28289307F00F6306F5007A -:10057000EFF01EFEFD573CA80356840693062401A7 -:10058000120637150600A285130585C9EFF07EE82F -:10059000B727002003C577F68545EFF01EC8014553 -:1005A000B240224492440249410182809710FA1FCE -:1005B000E780A0BE11B71307E70B3E97939796000D -:1005C000BDBF8547E396F4FC28289307F00F630628 -:1005D000F500EFF0FEF7FD573CA8056693062401F1 -:1005E0001306068079BF411106C622C426C22A849A -:1005F000EF50B001228523040400A3030400A302EA -:100600000400B7240020EFF08F92938444F6A830C2 -:100610008545EFF0FEEEA8308945EFF07EEE282804 -:100620009307F00F6306F500EFF09EF2FD573CA82C -:10063000B24022449244410182806C45411106C679 -:1006400022C426C24AC09C317D4793F7F7037CA59C -:10065000E91793F7F70F637BF70093040008B240A4 -:100660002244268502499244410182809C21BD8B0F -:100670007CB5F51793F7D70FEDF32A841946A1053A -:10068000130525039700FA1FE78080D5914461D9AF -:100690006C4485472300F4049C21194689059987F9 -:1006A000858BA300F404130524049700FA1FE78048 -:1006B00080CA2285EFE07FF185472A89E31FF5F89C -:1006C00078349547631EF702EF009040B72700206B -:1006D00083C7D7FC8D8B6375F5025C24E36FF9F655 -:1006E000B727002083A707008144829708D022857E -:1006F000EFE03FD2E31525F72285EFF0DFEE85B777 -:100700005C2481C71947E39AE7F42285EFE0FFC92B -:100710004C34034504068144EF50C04450348345B3 -:1007200004060D459710FA1FE78020F8EF50E06DA2 -:100730003DB779714AD0372900209307091622D492 -:10074000A04F26D252CC56CA37DA0600B724002072 -:10075000B72A00204ECE5AC806D613090916130A26 -:100760008A3B9384C428B7290020938A8AFB130B01 -:1007700004017C302D479387E70693F7F70F636EEC -:10078000F7148A07D2979C43828711478347C9068B -:10079000E31EF7FE2285EFF06FACE1BF0146930543 -:1007A00050020145EF50C04D1306500281450545EA -:1007B0009710FA1FE78060EFBC30858BB9C368449F -:1007C00081465A868145A38104009710FA1FE7806D -:1007D000C0E501E52285EFF05FE678309307300948 -:1007E000E309F7F8EF5060622285EFE0FFF8B250BE -:1007F000225492540259F249624AD24A424B45610C -:10080000828023820400F9BFBC20858BFDDB5C2441 -:100810002381040005476375F7001947E394E7FC5B -:100820009307B0F97CB0B1B7BC20858B638C0724EB -:1008300023810400EF50605D2285EFE05FEFB72475 -:10084000002083A7C4E785CBDC4395C789475C823A -:1008500083471404130561001946DC821C289305A4 -:1008600024045C869700FA1FE780E0AE83A7C4E704 -:100870004800DC43829783473406B5DB8345140484 -:10088000482013062404EF90C06695B70345F4058D -:10089000014693055002EF50A03E8345F405130630 -:1008A000500205459710FA1FE78020E0BC30858B89 -:1008B000638F071C684481465A868145A3810400E2 -:1008C0009710FA1FE78060D601E52285EFF06F866A -:1008D00078309307A009E30EF7E8EF5000537DA8A6 -:1008E0000345F405014693055002EF5060398345F6 -:1008F000F4051306500205459710FA1FE780E0DA69 -:10090000BC30858B63850718684481465A868145CB -:10091000A38104009710FA1FE78020D101E522850A -:10092000EFE0FFE878309307900975B7BC20858B1E -:10093000638A071423810400EF50204D8347C906C2 -:1009400009476307F7008347C9060D47631FF70090 -:1009500083A7892A0357E406BC531307C71285836C -:1009600063F5E700930750F975BD58387C281DCB17 -:1009700074206306D7146386F60078A02285EFF012 -:10098000AFD2FC30E39707DE8347C9060947E30B84 -:10099000F7FC8347C9060D47E306F7FC2285EFE025 -:1009A0001FD9B1B5F9DF782069FF7CA0C1BFBC2099 -:1009B000858BE9CB238104008347C9061547BD8B8E -:1009C000639CE700EF00D01083C75A018D8BE3765C -:1009D000F5F09307D0F9B9B58347C9061947BD8B20 -:1009E000E39DE7EE9307C0F935BDBC20858BE3821C -:1009F00007D8238104008347C9061547BD8BE38AC6 -:100A0000E7FC8347C9061947BD8BE38DE7FCEF5030 -:100A1000C03FF1BBBC30858B8DC7EF50003FB7277F -:100A2000002003A707287C53ED9B7CD3238504007B -:100A3000372702408347870493F7D70F2304F7042F -:100A4000B1BF83A7892AFC53E39507D2EF50E03B5F -:100A5000B727002003A707287C53ED9B7CD3238571 -:100A60000400372702408347870493F7D70F2304F6 -:100A7000F704238204001DB7BC20858B81C7238126 -:100A800004005DBB83A7892AFC53E39407CE23822D -:100A90000400A1B5B72700209387C728B823058B8A -:100AA00001CF23810700EF5040362285EFE07F968B -:100AB0002285EFF05FB325BB2382070039BDE382B7 -:100AC00007ECE5B5411126C2B72400209387041630 -:100AD00022C4E04706C64AC0630A041A18248547A0 -:100AE0006316F71A562C1307006483C7041633479E -:100AF000D70213890416850793F7F70F232C89046F -:100B00002380F41663C6E700EFF03EEA2380041664 -:100B100038249D47631FF702834754069DCB8356B5 -:100B2000A40663E5F6024C20930730043CB8130595 -:100B3000300493F6F60F0146EF90603B2285224485 -:100B4000B2409244024941016FF0FFA98506231586 -:100B5000D40685479305300205452306F906EFF0D4 -:100B60005EDE5828230FA4048D476319F708EFF0C1 -:100B70004EE30D8911E9930770027CA093075002A0 -:100B80005CB89307600221A885476313F5069307B5 -:100B900060027CA0930750025CB8930770027CA8A7 -:100BA0003824B727002083C477F685476315F70CF0 -:100BB000522C85452685EFF0AEF583471403898BCB -:100BC000F1C34C54E1C1BC25D5CF89472308F402B9 -:100BD0001946B1051305240397F0F91FE780A077A4 -:100BE00022852244B2409244024941016FF0CFABCA -:100BF000930750027CA09307700259B789463C3492 -:100C00006316D70213F7170001CF1307500278A01D -:100C1000898B91CB930760025CB8230B040049B722 -:100C2000930760027CA093077002FDB795C313F78A -:100C3000170019C7930750027CA0A30A0400F1BF54 -:100C4000898B81C793076002C5BF93077002EDB718 -:100C50005C38130740026365F7009307500201A850 -:100C6000850793F7F70F13077002E368F7FE5CB888 -:100C70005C387CA05DB7B9450545EFF09ECC522CA1 -:100C80002A9605BF85472308F40299BFB240224443 -:100C90009244024941018280011122CCFD5706CEC7 -:100CA0003CA9835785062A8495C38346A5064C2113 -:100CB0009307C0033CB901461305C003EF902023FE -:100CC00022856244F24005616FF0FF913C250547A3 -:100CD000BD8B6386E7008347C505918BF5D3B727A6 -:100CE000002083A7872293F7072085C302C402C28E -:100CF00002C0814801488147014781460546814538 -:100D00001305C003EF90C01C65BF02C081480148B5 -:100D1000814701478146054681451305C003EF9091 -:100D2000001979BFB727002023A8A7268280B727FC -:100D3000002083C777F6411106C689EB37F5050019 -:100D4000130545EAEFF09E9FEFE0EFA5B7270020DF -:100D500037F70500938707161307472FF8CF370794 -:100D600006001307473EB8D337170600130747ACF2 -:100D7000F8D3B2403707060013070739B8D7410147 -:100D8000828011C98327050A93E707082320F50A03 -:100D9000FD572303F5028280B727002023ACA72646 -:100DA0008280B727002083A7871A9C5799E33E8546 -:100DB00082809A2FE30DA7FE93878705C5BF011197 -:100DC00022CC06CE2A84034565029307F00F2E86B7 -:100DD0006309F5002EC6EFF0AEF73246FD57230348 -:100DE000F40283479402035764049306640293E772 -:100DF0000706A304F4027E3CA285F240BA972312B0 -:100E0000F404624437150600130525D805616FF018 -:100E10004EE0011122CC06CE2A84034575029307C9 -:100E2000F00F2E866309F5002EC6EFF06EF2324603 -:100E3000FD57A303F40293067402A2856244F240B4 -:100E4000372506001305E5E005616FF08EDC011122 -:100E500022CC06CE2A84034585029307F00F2E8606 -:100E60006309F5002EC6EFF0AEEE3246FD572304BF -:100E7000F40293068402A2856244F24037250600FC -:100E8000130585E305616FF0CED83727002093075F -:100E90000716ED46AE33F2372311D518231FD516AA -:100EA000963B03487514231DB516231BC516231C3A -:100EB000D5168947130707166306F80693078014AB -:100EC000834865142312F5180948639108071A37F7 -:100ED000231EE5160567130707A92310E5186D48BB -:100EE0002E876373B8006D47931507012315E51826 -:100EF0006D48C18132876373C8006D472313E518BD -:100F00000356C517035705186373E6003287231687 -:100F1000E518368763F3D7003E872314E5182306C8 -:100F2000B50482808567938707A959BF7A33231E4A -:100F3000E5161307801455B7034765148946835790 -:100F4000C518631ED70283568514938787E899C610 -:100F5000B3C7E702938757FD214731A02147B3C7A5 -:100F6000E702938757FDB3C7E7020357A518C207E7 -:100F7000C18363F3E7003E872306E504828085464C -:100F80006316D7009387C7FB1147F1BF938707FB11 -:100F9000E1B78357651703572518411106C663F358 -:100FA000E7003E87931807018357451803578517B5 -:100FB00093D808016373F700BA8713980701835623 -:100FC000E5178357A5171358080163F3D700BE86AA -:100FD0000357C517835705181393060113530301CD -:100FE0006373F700BA8783467514C2070947C18344 -:100FF000639AE6000566130606A942876370C80275 -:10100000328729A8032705109316470163CC0600F1 -:101010000566130686844287E36406FF13180701FA -:1010200013580801834665140947639DE6061A3D77 -:101030009306204E3307D70293F6F80F9A061386CD -:10104000F63C9386C64F634406019306C812158F7B -:1010500063D3E7003E87420705664183130606A96E -:10106000BA876373C700B287C207C1830356651886 -:1010700013F7F80F9376F30F6316E60403568518FB -:10108000631206050356A518631ED6020356C5183B -:10109000631AF602230D0506EFF01FEA0945B24078 -:1010A000410182800327051093164701E3C006FC27 -:1010B000056613068684BE856373F600B285939732 -:1010C000050165B70546230DC5062313E51823144E -:1010D00005192315D5182316F518EFF0FFE501457E -:1010E0007DBF0357C51783570518411106C66373A3 -:1010F000F700BA87034665141397070189464183B1 -:10110000631BD6068566938606A96373D700B687E8 -:101110001397070141838357C5186387E700854705 -:101120002316E518230DF506035785178357451831 -:101130006373F700BA87034675141397070189464E -:1011400041836317D6048566938606A96373D70027 -:10115000B687139707014183835785186387E70094 -:1011600085472314E518230DF506EFF0FFDCB240A8 -:10117000014541018280856713868784E37DE6F817 -:101180008326051093870780F58FD1F7328761B7E3 -:10119000856713868784E371E6FC832605109387B1 -:1011A0000780F58FD5FB328745BF035785049547E8 -:1011B000523DB307F702163D93D537406355B6004D -:1011C000118F93173700B3C7D702C207C183231308 -:1011D000F5048280832745110D469306F00F98236E -:1011E0000D8B58B56313C700B42374B99823418B92 -:1011F00038A99C337CA982805C25CD9B5CA582802C -:101200008327451158259C23935637408987B58FEE -:10121000858B91C71347870058A5014582800545F6 -:1012200082808327451158259C23935627408D871C -:10123000B58F858B91E71347470058A501458280FC -:10124000054582808327450E85072322F50E91E709 -:101250008327850E85072324F50E8327850E93F7B4 -:10126000070891C785472322F50E2324050E8347DF -:10127000950293F7070489CF7E3D03576504BA971B -:101280002312F5048327450A93F7F7BF2322F50AB3 -:1012900082808327C50E85072326F50E91E78327D5 -:1012A000050F85072328F50E8327050F93F70708F9 -:1012B00091C785472326F50E2328050E83479502FF -:1012C00013F7070409C793E70702A304F502828016 -:1012D000B727002083A7871E0145054791E3828039 -:1012E000B4376393E60005059C43CDBF411122C48A -:1012F00026C22A8491450145B724002006C693845E -:101300000416EFF00EE403D7C409231AA40485479A -:1013100063FCE7040355C41883578418372700205B -:1013200037460F00AA97035567FD938717271306C3 -:101330000624B3A5A70281463305F502EFB0302697 -:101340007E3C0357C4058355640583A884081D8F1C -:101350003307B7028327040905461383F5FF130EED -:1013600080023E9763676600B24022449244410186 -:1013700082803308C603C687FD563A9881E7231A50 -:10138000C404DDB76314F4001C40F5DB83AEC7086A -:101390006398BE0083A60709B306D840B3F6B60229 -:1013A00063E4A6009C43D9BF09066DBF411126C264 -:1013B000B72400209384041603D7C40906C622C4A8 -:1013C000854763F3E7042A84835785180355C518B6 -:1013D0003727002037460F00AA97035567FD9387EC -:1013E000172713060624B3A5A70281463305F50285 -:1013F000EFB0F01A0346340583A8840885467D16AD -:101400001303800263E7C600B240224492444101C4 -:1014100082803387660283270409FD553E97C6877D -:1014200081E7231AD404CDB76314F4001C40F5DB24 -:1014300003AEC7080328C408631A0E0103A80709EE -:10144000B305E84063640701B305074163E4A50001 -:101450009C43F9B785067DB7B72700209387071609 -:1014600083D6C70905476372D70C411122C403A470 -:10147000870806C626C2A28789EB01EC230E050069 -:10148000B2402244924441018280D83F75FB9C4384 -:10149000E5B76314A400004075D03C34C9E70327C6 -:1014A000C4088327C5086300F708582D9307000870 -:1014B000AA846316F7041E3C1946930500082319F5 -:1014C000F506231AF5063E3C231CF5045E3C231D5D -:1014D000F5040A25EF2070708547DCBCDC2C93F7FF -:1014E000F707DCAC130564062244B240924431464F -:1014F0009305F00F410117F3F91F670003E91E3D43 -:101500001946930500082319F406231AF4063E3DF4 -:10151000231CF4045E3D0A24231DF404EF20F06B29 -:1015200089475CBCC1B7004089BF230E050082809B -:10153000B72700209387071683D6C709411126C213 -:1015400006C622C40547AA84637FD71603278510E1 -:10155000098B630A071683A78708BE85B5E503D6FE -:10156000A41801447D581306260205862D067D55D4 -:10157000A5E3630004103C341A3CC5E78947231BEC -:10158000E404A309F4040357E4057E3C2285BA97DA -:10159000C1071D8B998F231EF4043E3C231CF404C9 -:1015A0005E3C231DF404EFF07FD48327440A93E7C5 -:1015B00017002322F40A85475CA88D475CBCB24023 -:1015C0002244924441018280D83D75FB8C4179B719 -:1015D00098436394970051DFBA8783A6070903A74E -:1015E000040963E2E6023387E64083A6C40863F495 -:1015F000E6003377D7026376A7003A856373C700A6 -:10160000BE859C43B5B7158F83A6C70863F4E60073 -:101610003377D702E37707FF3A88E374C7FE3E8447 -:10162000CDB79E3CB3F7E702D9FB9D46994763F5DA -:10163000E600935717008D0705672319F406130773 -:1016400007C88A076353F700BA87231AF4063E3C9B -:101650000A245D46231CF4045E3C93050008231D08 -:10166000F404C9475CBC2244B240924441016F205B -:10167000D056B1C99A3C9E3DB3F7E702A9E78387EC -:10168000C40163D207049D46994763F5E60093576A -:1016900017008D0705672399F406130707C88A0703 -:1016A0006353F700BA87239AF406BE3C8A245D464A -:1016B000239CF404DE3C93050008239DF404CD47ED -:1016C000DCBCEF209051238E0400D5BDB72700204D -:1016D0009387071683D6C7090547637DD71A5D71BF -:1016E000A2C46AD003A487082A8D8357851803559E -:1016F000C5184EDEB7290020138789FBAA976A2FE9 -:101700009387172737460F00B3A5A70213060624B1 -:101710008146A6C2CAC09304006452DC56DA5AD885 -:101720005ED63305F50262D466D286C66ECE0569F2 -:10173000938989FB130909C8130C0032930A0064CA -:10174000EFB0E065B385B4022A8A054B9D4CB38B9C -:10175000A402B3B4A402AE9405E0B6402644964475 -:101760000649F259625AD25A425BB25B225C925CE1 -:10177000025DF24D6161828063158D0003240D00CE -:1017800069DC5C3CCDE38327C4080327CD08636C88 -:10179000F70803250D09032704096366E50803D844 -:1017A000E901198D330728031307071933578703F6 -:1017B000637BE50663F4A7003375F502637545079F -:1017C00085836373FA00D2873E954286814642C67E -:1017D000B335550333055503EFB0605C050563046D -:1017E00065053C34835D84033248A1E33E3C0581BA -:1017F000231BB405231CF4045E3C231AA404231DFC -:10180000F4048947A309F4048357ED03230A640110 -:10181000A907231EF4048327440A93E71700232211 -:10182000F40A91475CBC004005BF83578D0363F405 -:10183000B703B3F7B703428681465E85A6853EC6E9 -:10184000EFB0E055B2470505058163E6A700338593 -:10185000AD40E37AF5FC994763F6BC0193DD1D00CA -:1018600093873D002319F406939D27006353B90124 -:10187000CA8D3E3C0A24231AB407231CF4045E3CA0 -:101880005D4693050008231DF404D1475CBCEF209E -:10189000D03451BF8280B727002083C777F6638C8E -:1018A00007145D7152DC86C62A8AA2C4A6C2CAC0C9 -:1018B0004EDE56DA5AD85ED662D466D26AD06ECE82 -:1018C0007D5563040A0EB727002003A4871E71CC40 -:1018D000B7270020938787FBB74B0F0037490F00CE -:1018E00003DCE70183CD6701138DFB237D5B854C12 -:1018F000938B0B249D471307204E1309092481491C -:10190000343403280409639B96070355E407835A7C -:10191000A403637B550B14286398960B83268411CC -:10192000C5E68326440ACDE27434639FF608B38A81 -:10193000AA400A3C832444094A8633055503CE86CF -:1019400042C63305E502B3549502EE94C204C18049 -:1019500023129408B3848403EA94B3D47403B33594 -:10196000AC023305AC02EFB0804332481307204E7F -:101970009D47B30A5841AA9A33889A406373680115 -:10198000428B004035FCB727002083A707008297D1 -:101990006366AB04B307AB402320FA0083270A0039 -:1019A00029476364F70423200A00B640264496447E -:1019B0000649F259625AD25A425BB25B225C925C8F -:1019C000025DF24D6161828083564408B3868603CE -:1019D000EA96B3D676033308D8404DB7B3076541CE -:1019E000E3CA07FA23200A0055BFD9172320FA00BB -:1019F00013056BFF5DBF7D558280411106C6EF0068 -:101A0000102419C983278511014581E7B24041019E -:101A100082809C430505D5BF7D55CDBFB7270020EB -:101A200003A7872701114AC806CE22CC26CA4EC674 -:101A300052C456C22A8949C3BE8AB727002003D799 -:101A4000C71F8547631AF706B7290020138789FB4C -:101A5000622F8357450837470F00032A0509B387CC -:101A600087021304F72313070724938989FBA2979E -:101A700033D4E702B727002083A707008297B30477 -:101A80008A4063E8A4043384A44083C4790103AA90 -:101A90008A270145858063F0840237450F00058C55 -:101AA00013050524B335A40203D6E90181463305A5 -:101AB000A402EFB0C02E029AF2406244930700FBEA -:101AC0002307F900D2444249B249224A924A0561A9 -:101AD0008280330444412A947D84898C658C75B757 -:101AE000411126C2B72400209387041683A7470913 -:101AF00022C44AC006C62A842E899384041663949D -:101B0000A70023AA04088327041299C70A240146C0 -:101B100093050008EF20700C8357240499C70A240A -:101B20004D4693051008EF20500B0A2415469305E7 -:101B30001008EF20900A230504002308040023095D -:101B4000240503D7C409854763E6E70085450145B9 -:101B5000EFE0BEACB240224492440249014541014B -:101B600082803C256383072A8357E507411122C4FD -:101B700006C626C28507231FF5067C35230C050003 -:101B80002A8413F727001DE37A3D954763E4E700B5 -:101B9000014501A89305E003EFF09FF42305A4029B -:101BA0000945B240224492444101828013F7070262 -:101BB00021CF93F7F7FD7CB58327050A3835230538 -:101BC000050293E747002320F50A8547631EF702C5 -:101BD0001E3D1306204E03274509B387C702B3D71E -:101BE000E702372700208346E7FC03475503938627 -:101BF00006053307C702B697C207C1832311F5084C -:101C00008607BA972310F5081C38858BDDCB8357E0 -:101C1000C4057A3C639EE71A3E3C8355A405034500 -:101C20008402231FF404834734054EBC9205A30AA3 -:101C3000F40283574405F915B72400207EB8835772 -:101C40008405938484FB3EBCEFE06EE23834231FAE -:101C500004067E3883566405631B0714FA2C16BCF1 -:101C6000B387E7021307003293870719B3D7E70258 -:101C7000032704095107BA972328F4085C3C81C75D -:101C80002285EFF0AFF2FA2C1E3C930600322311AE -:101C90000402B387E70233D6D702B3F7D70293061D -:101CA000204E2326C408B387D702B3C7E7021EB06D -:101CB0007E3C5EB07C3493E707027CB41C38F99B11 -:101CC0001CB81C38898BA1C70357E4127E3CB306AD -:101CD000F7401396060163420610631AF702814724 -:101CE000014893048413232CF412232E0413154665 -:101CF00093058412268597E0F91FE780C065268545 -:101D0000EF00D0191C38A306A412F59B1CB81C3890 -:101D100013F7070125C78356C4147A3C3386E6407F -:101D20009315060163CB050A639AE604BD9B1CB8B4 -:101D30008347A41499C713F7270055CB854723037E -:101D4000F4148347B41499C713F7270045CB85478C -:101D5000A303F4142285EFF0CFB88347A40799C7F3 -:101D60008327040A93E707102320F40A8327040A31 -:101D70002305040293E707202320F40A83479402F3 -:101D800093F70704E38607E0035744047E3CE3111E -:101D9000F7E018289307A0046314F70085471CA8F0 -:101DA0008327440A93E707402322F40AD5B399CF47 -:101DB000FA2CB307F7021307003293870719B3D73A -:101DC000E70203270409BA972328F40816BC65BD67 -:101DD000998F13970701E35607EE9305800222853A -:101DE000EFF01FD02305A402130580025DBB918B89 -:101DF00099C38947A9B723030414A1B7918B99C349 -:101E00008947B9B7A3030414B1B70545828005C556 -:101E100041119305200222C406C62A84EFF05FCC4C -:101E2000FD572305A40223080400A303F402B240D3 -:101E3000224441018280828005C9411122C406C624 -:101E40007C352A849305E003898B91C3A145EFF08B -:101E50003FC9FD572305A402230804002304F4020C -:101E6000B24022444101828082808327050A4111C9 -:101E700022C406C626C24AC02A846384073213F7E6 -:101E8000270011CBF59B2320F50A0A251946930557 -:101E90000008EF2080548327040A13F7470041CF3E -:101EA000ED9B2320F40A8347940293F7070491CB18 -:101EB0008327440A228593E707402322F40AEFF0A0 -:101EC000CFAE38348547502883560406631FF74445 -:101ED0001E3C1307204EB387E70203274409B3D7FC -:101EE000E702372700200347E7FC13070705BA97E7 -:101EF000C207C1830347A4022311F40886072310F5 -:101F0000F4089307000819C3930700045CAC19E6B2 -:101F10008347940293E71700A304F40299E60A2486 -:101F20000D4693050008EF20404B23100406230ABA -:101F30000400A30E04008327040A13F7870005C3D7 -:101F40000A24DD9B2320F40A154693050008EF20A0 -:101F5000C0488347940293E74700A304F402832711 -:101F6000040A13F7070131C7BD9B2320F40A8347F6 -:101F7000B4040A24214689C7A305040413060003F8 -:101F800093051008EF2060458347A40489CF832779 -:101F90008410C18B89CB8355840422859205C205A8 -:101FA000C181EFE0DFE18347940293E71700A304C8 -:101FB000F4028327040A13F7070405CB0347D4046C -:101FC00093F7F7FB2320F40AA14763FAE7003C34B8 -:101FD00099E78327440A93E707012322F40A0A2496 -:101FE000314693051008EF20403F8327040A13F77A -:101FF000070251CF343493F7F7FD2320F40A032767 -:10200000C4108327841099EA1377070801CB0327AC -:10201000440A37064000518F2322E40A93F707024F -:10202000638E0732A9EA83467414894703578417DD -:102030006390F6328567938707A963FAE7008327E1 -:10204000440A056713070780D98F2322F40A8346C1 -:10205000641489470357C417639FF62E85679387D7 -:1020600007A963FAE7008327440A05671307078077 -:10207000D98F2322F40A0A24114693050008EF2081 -:10208000C0358347940293E71700A304F402832723 -:10209000040A13F707101DC30A2493F7F7EF232050 -:1020A000F40A230D04061D4693050008EF20E032D4 -:1020B0008347940293E71700A304F4028327040ADA -:1020C00013F7070801CF0A2493F7F7F72320F40A40 -:1020D0001306700593051008EF2020308327040AAB -:1020E00013F7072015C793F7F7DF2320F40A22859B -:1020F000230F0400EFE05FE40A2431469305000853 -:10210000EF20A02D8347940293E71700A304F40265 -:102110008327040A139727016357070079777D17F0 -:10212000F98F2320F40A8327040A139707016359C0 -:102130000704B727002003C537168345F402EFE0F4 -:10214000EEF71E3C1307204E232AA408B387E702AC -:1021500037270020B3D7A7020345E7FC61777D1737 -:1021600013050505AA972311F4088347940293E702 -:102170001700A304F4028327040AF98F2320F40A2A -:102180008327040A858B91CF8347940283452405D6 -:10219000228593E71700A304F402EFF07F94230550 -:1021A000A4023C2485CB8327041281CF3C2C91EBE5 -:1021B0000A24014693050008EF20202219E18547F3 -:1021C0003CAC8357240499C70A244D469305100854 -:1021D000EF20A02083479402E9C7918B89CF102874 -:1021E000C165938505A02285EFE0BFC283479402B5 -:1021F000ED9BA304F40283479402858B8DC30345B2 -:1022000074029307F00F6307F500EFE06EB4FD571B -:10221000A303F40283479402F99BA304F4028347C7 -:102220009402898B89CF4E3C034584029205F915AF -:10223000EFE0EE8383479402F59BA304F402834707 -:102240009402A18B99CF4E3C0D4622859205F9153B -:10225000C205C181EFE0FFBB83479402DD9BA3046D -:10226000F4028347940213F7070101CF0345640288 -:1022700093F7F7F8A304F402EFE08EADFD572303C4 -:10228000F4028347940213F7070201CF83558404B5 -:102290000345640293F7F7FDA304F4029205EFD01F -:1022A0001EFD5C2C93F7070C81CB383485472285C3 -:1022B000631DF70AEFF0CFA77E3CB5C313074006B6 -:1022C000B3F7E702A9EFB727002083A74727B72472 -:1022D000002093840416898B9DCF37290020130991 -:1022E00089FB0327490305CB9E28AE282545C20755 -:1022F000DD8D029783274903EE24294582978327A2 -:102300004903831504032D458297832749038305D9 -:102310002403314582972397040023A80400B24088 -:1023200022449244024941018280930700045CAC3C -:1023300019E68347940293E71700A304F402E39895 -:1023400006BE0A240D4693050008EF200009C5B615 -:1023500093078014DDB19307801421B38327440AC7 -:102360007D771307F77FF98F29B3EFF0EF8EA9B7C9 -:10237000411122C406C62A8483278411C9E3832716 -:102380000412D1EF0325041109C597E0F91FE78076 -:10239000A0D6034574029307F00F6304F500EFE045 -:1023A0002E9B034564029307F00F6304F500EFE0F2 -:1023B0002E9A034584029307F00F6304F500EFE0C3 -:1023C0002E990A24A924B727002083A707FC85C7D4 -:1023D000B727002083D7C71F99EF372400201304A5 -:1023E00044F6085009C997E0F91FE780E0D02320A0 -:1023F000040223220402B240224441018280C843E5 -:1024000009C597E0F91FE78020CF83278411BA27F9 -:10241000136707F0BAA79C43232CF410B1BFBA2767 -:10242000C843136707F0BAA709C597E0F91FE7800B -:10243000A0CC832704129C432320F41289B7B7272A -:10244000002083A7871E99E33E8582809A27E30DAB -:10245000A7FE9C43CDBFB727002083A7871F372740 -:102460000020C166834577FCFD160147B227630B48 -:10247000A6006309D60005071377F70FC107E3F736 -:10248000E5FE81473E858280411122C43724002029 -:10249000130404168327840906C626C2A1EBB724B9 -:1024A00000206A34938484FBFC34130515021585DF -:1024B0008507160592073E95420541819305B02098 -:1024C00097E0F91FE78000B815C1F434232CA40865 -:1024D0008147138716001207939506012A97C18139 -:1024E000130840F5930820F563D7F600B240224464 -:1024F0009244410182808DE32315150158C1A30444 -:10250000050041052A8663E3B70001468507C20737 -:102510002328C5FEC183C9BF231505012322050059 -:10252000F9BF41119305A0201305001906C622C466 -:1025300026C297E0F91FE780E0B013060019814535 -:102540002A8497E0F91FE78040E4014549C0B72499 -:1025500000209387041603A68708938404161DCED3 -:1025600083A6C4089E2613871700931707019315A7 -:102570000701C18363D30500854732870E27E384B3 -:10258000F5FE184365FF1EA48DCF83D7C40980C212 -:1025900023A684088507239EF40819A885471EA44E -:1025A00023A4840823A68408239EF408EFF0DFED1B -:1025B00083A7C40823A00700230504002307040001 -:1025C00031A0228597E0F91FE78000B30A24B240CA -:1025D0002244924441018280B72700204111138791 -:1025E000071626C28324870922C406C61384071649 -:1025F00081E8232C0408B2402244924441018280A5 -:10260000268597E0F91FE78020AF8440D5B74111B8 -:1026100022C4372400209307041683A6870806C621 -:102620000147B68713040416A9CB9227631BA6049F -:1026300005EB98422324E4083E8597E0F91FE780E4 -:10264000A0AB8327C40823A007008357C4099DE3D8 -:10265000EFF09FF823240408B24022444101828015 -:102660008326C4086395F6002326E408F1B7944353 -:1026700014C3D9B7FD17231EF4088357C409E9FF13 -:10268000C1BF3E879C434DB7372500206146814539 -:102690001305851E17E3F91F670023CF1C3138216E -:1026A0005421A2074207BA971821FD8A0548BA9714 -:1026B00038319305000201456207BA970147331686 -:1026C000E8007D8E01C605051375F50F0507E318B3 -:1026D000B7FE8147214633D7F640058B01C7050574 -:1026E0001375F50F8507E398C7FE8280011152C666 -:1026F00056C4032A8513832AC51322CC26CA4AC886 -:1027000006CE2A84A30B0512A306051281441309E1 -:10271000500226865285D685EFA0A065058911C591 -:102720008347D4128507A306F4128504E39324FF9C -:10273000F2406244D2444249324AA24A0561828050 -:1027400074290D47AA876384E60005458280032724 -:10275000451150232305C50238336313D70238359A -:102760006DF71829930600026307D700930630021D -:1027700001456316D7001307600298AB01458280BC -:10278000BD46631ED7001829930600040145137740 -:10279000B70FE316D7FE1307500498AB8280B946F3 -:1027A0006319D700142913070003E390E6FA0547DD -:1027B000E9B7D1466316D700142913070005F5B70A -:1027C000D9466314D702142913075005E39FE6F690 -:1027D0000327050A136707202320E50A054718A9E0 -:1027E000983B136707F898BB51BFE946631AD700B7 -:1027F000142913075006E39AE6F41307A006B5BFA1 -:10280000FD46631AD70014291307A007E39FE6F2D9 -:10281000130710F89DB793063002E318D7F2142976 -:1028200013075008E393E6F2054718A903479502FA -:1028300013671700A304E50265B78327051109474D -:1028400058B999CFB8A303472505B8B38347950274 -:1028500093E78700A304F502F1471CA90145828094 -:102860001D45828085475CB98327051181CB1547BB -:10287000B8A39307B0021CA9014582800545828058 -:1028800085475CB98327051181CB1947B8A3930706 -:10289000D0021CA9014582800545828089475CB928 -:1028A0008327051191CB1D47B8A383270511034743 -:1028B000C5020145B8B382800545828085475CB971 -:1028C0008327051181CB2D47B8A3930770031CA95B -:1028D00001458280054582800327051199475CB92F -:1028E000B1473CA3B727002093870716D62B34B3F4 -:1028F000F42B54A3F62BA18254B3942F74A39C3FC2 -:102900007CB38347D50213F7070401CF9307A003D5 -:102910001CA98347D50293F7F707A306F5020145E3 -:102920008280858BFDD78327050A23050502A30630 -:10293000050293E707042320F50AE1BF89475CB944 -:102940008327051191CB3547B8A38327051103478A -:10295000A5020145B8B38280054582808D475CB9E8 -:102960008327051199CB4547B8A30347B502B8B3F0 -:102970000347A5020145D8A382800545828085478B -:102980005CB98327051191CF4947B8A39307A004E9 -:102990001CA98347950293E74700A304F50201456C -:1029A00082800545828085475CB98327051189C7E8 -:1029B0004D47B8A301458280054582800327051154 -:1029C0008D475CB9D9473CA38346451434B383474C -:1029D0005514918A5CA30357C518A9C69306F03411 -:1029E000814763FDE600930787E8035785140DCB05 -:1029F0008587938757FD8D87C207C1830357A51825 -:102A000063F3E7003E87834795022306E50493E7D7 -:102A10004700A304F502930750051CA901458280D5 -:102A20008D87C1BF858B99C7930707FB2147B3C724 -:102A3000E702D9B79307C7FB1147D5BF0327051195 -:102A40008D475CB9DD473CA3834745143CB38346BF -:102A5000551454A30347B514F98F93F64700035751 -:102A6000C518A9C69306F034814763FDE6009307B5 -:102A700087E8035785140DCB8587938757FD8D878E -:102A8000C207C1830357A51863F3E7003E87930786 -:102A900080051CA9834795022306E50493E74700B8 -:102AA000A304F502014582808D87C1BF858B99C73C -:102AB000930707FB2147B3C7E702D9B79307C7FBC3 -:102AC0001147D5BF832605118D475CB9E547BCA2E8 -:102AD00083477514034665140547B317F70033178A -:102AE000C700D98FBCB283471514DCA28347950277 -:102AF00093E74700A304F502930700061CA90145CC -:102B00008280411126C28324051106C622C4B5471E -:102B10005CB99DCC91472A84BCA09305A51621469B -:102B20001385340097E0F91FE780E0821385B40035 -:102B300011469305241797E0F91FE780C08193079A -:102B400020021CA80145B2402244924441018280E7 -:102B50000545D5BF83270511A9C3411122C406C667 -:102B6000254758B9B8A32A84032505119305840F76 -:102B700021460D0597D0F91FE780E07D8327040AE1 -:102B800023050402014593E707022320F40A854741 -:102B90001CA8B24022444101828005458280A5479D -:102BA0005CB9832705119DCF411122C406C6394760 -:102BB000B8A32A84032505119305840F21460D052A -:102BC00097D0F91FE780207983479402014593E766 -:102BD0004700A304F402930700031CA8B240224458 -:102BE0004101828005458280E1475CB98327051158 -:102BF000C9C3411122C406C63D47B8A303472507F0 -:102C00002A8493056506B8B3035725073146218307 -:102C1000D8A303474507D8B303475507F8A303478D -:102C20008505F8B30347950598A70347A50598B709 -:102C30000357A5052183B8A703572506B8B703474F -:102C40004506D8A7034755061385E700D8B797D0A0 -:102C5000F91FE780407083479402014593E74700DE -:102C6000A304F402930700041CA8B24022444101CB -:102C7000828005458280E1475CB983270511BDCB81 -:102C8000411122C406C64147B8A3034725072A8439 -:102C900093056506B8B30357250731462183D8A3AA -:102CA00003474507D8B303475507F8A303478505EE -:102CB000F8B30347950598A70347A50598B70357A9 -:102CC000A5052183B8A703572506B8B703474506CE -:102CD000D8A7034755061385E700D8B797D0F91F43 -:102CE000E7806067930740041CA8B2402244014576 -:102CF000410182800545828083254511411126C20C -:102D000006C622C4DC21B8310568A207D98F138713 -:102D1000A7FF420741839306A8C7F94463E9E60A7F -:102D2000F821D431130808C82207558FF94463608D -:102D3000E80A636EF7089025F4312206558E930653 -:102D4000301F63E6C608B42583C89500A206B3E623 -:102D50001601636ED806130816003308F80293981C -:102D600036006356180783C8B50013980801135836 -:102D7000080163840800636C070583588503814458 -:102D8000639C1701631AF7008358A5036396C80074 -:102D9000463D958C93B41400231CC5042319F506F5 -:102DA000231AE506231DD50423110507DC35D82594 -:102DB0002A84A207D98F2312F5063146B9051305D7 -:102DC000650697D0F91FE780005991475CBCB24077 -:102DD00022442685924441018280832745111303B2 -:102DE000000ED023B8332206598E130756FE420731 -:102DF00041836363E306F423D8331168A206D98EB6 -:102E0000138786EB42074183130888146366E8043E -:102E1000982783C87700220733671701930857FE66 -:102E2000C20893D808016369130383C89700BC27BD -:102E3000A207B3E71701938887EBC20893D808016C -:102E4000636C1801231FC5162310D5182311E5182C -:102E50002312F5186FE0EF9305458280343505475E -:102E6000AA8705456391E60AF42B31470545639C23 -:102E7000E60803A747113433A389D70454335023FA -:102E8000A206D18E239AD7046C337423A205D58D64 -:102E9000239BB704103714272206558E239CC704A2 -:102EA00034372827A206C98E239DD70448275837D0 -:102EB0002207498F8A3F239EE70401476319B50023 -:102EC000AE3F6396C500DA3F158F13371700239086 -:102ED000E706982B930600046300D702930640048C -:102EE0006314D700054798AB983B9546D4BF13674A -:102EF00017F898BB0145828003C797021367170034 -:102F0000A384E702C5B7828078298947631BF7004D -:102F100083274511BC332309F504F5471CA9014556 -:102F200082801D4582803C352A87B5EB7429B547E0 -:102F300005456397F606142B930700026392F60685 -:102F4000832747110145D433D023A2064206B29607 -:102F5000F023B296B0336206B2962320D70C943792 -:102F60009027A2064206B296B027B296F0336206C8 -:102F7000B296232ED70AD427D037A2064206B2969D -:102F8000B037FC27B296E207B6972320F70E1C3B1A -:102F900093E787001CBB930730021CAB828005457A -:102FA00082803C3585E378298547631BF700142927 -:102FB000130730026396E6009307C0021CA98147FD -:102FC0003E8582808547EDBF74290547AA87054560 -:102FD0006399E602982B9306B0026319D700130792 -:102FE000E00298AB23850702014582809306D00258 -:102FF00005456318D7001307E0022385070298AB45 -:10300000E5B78280782989476319F704E9472305E2 -:10301000F502832745113947BC336390E70218292D -:1030200093070003631BF7028327050A93E7070250 -:103030002320F50A85471CA999A03D476391E70223 -:10304000832785101829F59B2324F5109307000486 -:103050006315F700930760041CA901458280494766 -:103060006394E70218299307A004E318F7FE854745 -:103070001CA98347950293E71700A304F5021C39A6 -:1030800093E707F81CB9D1BF51476390E7021829AD -:1030900093070005E313F7FC85471CA98327050A5E -:1030A00093E707102320F50AD9BF5947639CE7002F -:1030B000182993075005E312F7FA8327050A93E7C7 -:1030C0000720BDB76947639EE7001829930750069C -:1030D000E315F7F88327050A056713070780D98FDB -:1030E00081BF7147E38BE7F67547639BE7001829BB -:1030F00093075007E313F7F68327050A2167C5B73F -:1031000013073002E39BE7F4182993075008B1BF77 -:1031100038358547631EF70078296319F7001829A9 -:103120006316F700930760031CA981473E858280E0 -:103130008547EDBF74290547AA8705456390E606D4 -:10314000982B930670036314D70203C79702238555 -:1031500007049376070499C61377F7FB13670701F3 -:10316000A384E7021307800398AB0145828093068E -:10317000500305456314D7021307800398AB03C7B8 -:1031800097022385070401459376070481CA1377C4 -:10319000F7FB13670701A384E70282808280782906 -:1031A00099476315F708032745113C33A306F50437 -:1031B0005C335423A207D58F2317F5047C33742383 -:1031C0001307A003A207D58F14292318F5048347FA -:1031D000D5026392E604858B99CB8327050A2305E4 -:1031E0000502A306050293E707042320F50A834797 -:1031F000950293E71700A304F50285471CA91C3923 -:1032000093E707F81CB98347D50293F7F7FBA306AA -:10321000F50201458280E207E187E3D207FE8327BA -:10322000450A93E707042322F50AD1BF05458280AA -:10323000782989476304F700054582808327451173 -:1032400013070004BC332305F5021C2993F6B70FBE -:103250006396E600930750041CA90DA013075005C0 -:103260006390E7028327050A93E707202320F50AE6 -:1032700085471CA91C3993E707F81CB901458280D2 -:10328000130750066395E7009307A006F1B71307ED -:103290005008639BE70085471CA98347950293E785 -:1032A0001700A304F502F9B7383559F713070002E0 -:1032B0006386E700130730026395E7009307600217 -:1032C00061BF1307A007E399E7F6930710F869B702 -:1032D00074290547AA8705456391E60403A787106B -:1032E0000545418B1DCB982B6317A7001307B0042E -:1032F00098AB014582801306A0046319C70003C779 -:10330000970294AB13671700A384E70203A7870A09 -:103310001367070423A4E70AE9BF828074290547DD -:10332000AA8705456391E602942B1307A00405457F -:10333000639BE60003C7970288AB0145136717003C -:10334000A384E7028280828078298D476315F7186D -:103350001C398D8B89EB14292147938706FC93F741 -:10336000F70F636EF70085679387A7623EB58327E3 -:10337000850A93E727002324F50A014582803C351E -:1033800003264511639D0712930750056396F600C7 -:10339000856793873762D9BFB727002093870716C1 -:1033A0004C2203C7A70383C7B703834865146D8FF7 -:1033B0002305E5143032F18F0546A305F5143316C5 -:1033C00016016314C70023050514034875148545C9 -:1033D000B39505016394B700A30505140347A5142D -:1033E0008347B51455CFD1CB93752700A9C113F6E8 -:1033F000270015CE930720202315F5140347A514A5 -:103400008547B39717016314F70023050514034795 -:10341000B5148547B39707016314F700A305051496 -:1034200085476397F608930760051CA9B9B713761B -:10343000470001CA13F347006305030093074040A8 -:1034400065BF058B19C713F7170001C79307101045 -:1034500065B7094781E5114711E205472305E514E2 -:1034600013F7270009C78947A305F51441BF918BBE -:1034700099C39147D5BF8547C5BFB3570741858BD2 -:1034800081C72305B5149DBF9377270089C7894756 -:103490002305F514A5B7118B91477DFB8547CDBF5B -:1034A000B1DF33D71741058B45DFA305C514B9B785 -:1034B0008327450A0967D98F2322F50A7DBD8547F1 -:1034C0006396F6005C22A305F514B1BF8327850A35 -:1034D00093E707104DB50545828074290D47AA87EB -:1034E0000545639EE612942B130750050545639826 -:1034F000E612B8376315071283C6471403C757147B -:1035000003A6471133F5E6004C2209ED6395B6009A -:1035100028326309E500239507141307700598AB5B -:1035200001458280ED8E2385D714303203C867149D -:10353000718F0546A385E714331606016394C60010 -:103540002385071403C577148545B395A500631437 -:10355000B700A385071483C6A71403C7B714C5CA49 -:1035600041C793F526009DC91376270005CA1307A6 -:1035700020202395E71483C6A714054733170701B6 -:103580006394E6002385071483C6B71405473317F1 -:10359000A700E394E6F8A385071441B713F64600A5 -:1035A00001CA937847006385080013074040D1B7EC -:1035B000858A99C69376170081C61307101055BFE8 -:1035C000894681E5914611E285462385D714937695 -:1035D000270089C60947A385E71471BF118B19C35A -:1035E0001147D5BF0547C5BF33D7A640058B01C7D7 -:1035F0002385B71449B713F7260009C70947238560 -:10360000E71495BF918A1147FDFA0547CDBF25D72D -:10361000B3560741858AC5DEA385C714A9BF82803A -:1036200034350547AA8705456398E606F42B154708 -:1036300005456393E606982B930650056306D7006D -:1036400093068005631AD70403C7970283A5471121 -:1036500013671700A384E702D0211147636DC700E9 -:10366000B431636AD7001307F6FF1385F6FF718F35 -:10367000758D498F09C7054798AB01458280F821B0 -:10368000C8312385C7142207498F2396E714A385E1 -:10369000D7141307A005CDB782803C3599EF742964 -:1036A0000D4785476399E60018296316F7009307CD -:1036B00010061CA981473E8582808547EDBF832780 -:1036C0000511C5CB254758B95147B8A3034765171E -:1036D000835585170356C517B8B303576517CCB381 -:1036E0002183D8A313D78500F8A30347A517F8B300 -:1036F0000357A51790B7218398A713578600B8A73B -:103700008346751409476384E60203270510931660 -:10371000470163CE06008566938686842E8763F311 -:10372000B600368742074183D8B32183F8A3834686 -:10373000651409476384E6020327051093164701C1 -:1037400063CE0600856693868684328763F3C6005F -:1037500036874207418398B72183B8A783479502EC -:1037600093E74700A304F502930700051CA9014550 -:1037700082800545828083270511C5C3254758B936 -:103780005547B8A303476517835585170356C517D3 -:10379000B8B303576517CCB32183D8A313D78500DB -:1037A000F8A30347A517F8B30357A51790B72183CC -:1037B00098A713578600B8A7834675140947638EE8 -:1037C000E6008566938686842E8763F3B600368787 -:1037D00042074183D8B32183F8A383466514094780 -:1037E000638EE600856693868684328763F3C6001F -:1037F00036874207418398B72183B8A78347A50737 -:103800002305050299C78327050A93E7071023209C -:10381000F50A85471CA901458280054582803C3513 -:10382000E9EB411122C406C67829E1472A840545FF -:10383000631DF70A1828930700046318F70A832505 -:10384000441105659306A5C7D821BC3122075D8FB9 -:103850009307A7FFC207C18363E5F608FC21D431B3 -:10386000130505C8A207D58F636DF50663EBE70660 -:103870009025F4312206558E9306301F63E3C60669 -:10388000B42503C89500A206B3E60601636BD50410 -:10389000130516003305E502139836006343A804A8 -:1038A00003C8B5001315080141816304080063EAE9 -:1038B000A702231CC4042311A4062319E406231A17 -:1038C000F406231DD404DC35D8253146A207D98F50 -:1038D0002312F406B9051305640697D0F91FE78093 -:1038E00080A7930770041CA80145B24022444101FF -:1038F000828005458280411126C206C622C47829ED -:10390000E14785446314F704832785102A8485449E -:10391000898B8DCF3C35639C9704EFF0EFBD1C285D -:103920002305A40263969700930710041CA831A8EE -:10393000130700046392E702930710041CA883474F -:10394000940293E71700A304F4028144B240224496 -:1039500026859244410182808327040A93E7270049 -:103960002320F40A1C3893E707F81CB8F9BF1C3968 -:103970008D8B81CF85679387A7F23EB48327840A16 -:1039800093E727002324F40AC9B71C2963979700FB -:10399000EFF08FB62305A40241BF13070002639026 -:1039A000E702EFF06FB52305A402814445F18327B8 -:1039B000440A37070080D98F2322F40A41BF130736 -:1039C0000004E395E7F88567938737F27DB74111E7 -:1039D00026C206C622C43C358544ADE37829A547F6 -:1039E0008544631DF7048327850FA18BA1CB832515 -:1039F00045112A8421468D051305051097D0F91F1E -:103A0000E780609583270410B73678089386060D03 -:103A1000DD8E8327441013E707018327840FF58F7A -:103A20002324F4108327C40FF98F2326F4101C28B5 -:103A3000639C9700930710031CA88144B240224462 -:103A400026859244410182808327840A93E70701F7 -:103A50002324F40ADDB7411126C206C622C4782900 -:103A6000A54785446316F706182993070003854484 -:103A70006310F706832545112A8421468D05130519 -:103A8000051097D0F91FE780008D83270410B73603 -:103A900078089386060DDD8E8327441004A823053D -:103AA000040213E707018327840F8144F58F232441 -:103AB000F4108327C40FF98F2326F4108327040AF8 -:103AC00093E707022320F40A1C3893E707F81CB891 -:103AD000B240224426859244410182803835854790 -:103AE000631CF706411122C406C67829A5472A841B -:103AF00005456318F7041C286399A704832544111E -:103B00002146130504108D0597D0F91FE780A08486 -:103B100083270410B73678089386060DDD8E832739 -:103B2000441013E707018327840FF58F2324F41033 -:103B30008327C40FF98F2326F410930710031CA8C2 -:103B40000145B2402244410182808327840A93E7E1 -:103B500007012324F40AEDB70545828038358547EF -:103B60006317F704411122C406C626C27829A1476B -:103B70002A8405456318F70283244411130584122F -:103B800015469385340097C0F91FE780C07C9C34AC -:103B900098240145A207D98F2317F4121C3893E704 -:103BA00027F81CB8B2402244924441018280054566 -:103BB0008280383585476310F71474295D47639D0B -:103BC000E612011126CA8324451122CC21462A84FB -:103BD000938534001305151506CE97C0F91FE780AD -:103BE0008077DC24B834A207D98FA30CF414A18306 -:103BF000230DF414EFC0EEDA2AC4EFC08EDA2AC621 -:103C00002C001305A416214697C0F91FE780A07465 -:103C1000FC34F82413052417A2074207BA97982802 -:103C20002C001146BA97D8346207BA972324F40CB3 -:103C3000BC38B828A2074207BA97D828BA9798384C -:103C40006207BA972322F40C0347B4168347C416BD -:103C50004207A207BA970347D416BA970347A41698 -:103C60006207BA972320F40C0347F416834704171E -:103C70004207A207BA9703471417BA970347E416F7 -:103C80006207BA97232EF40AA247374703001307A7 -:103C9000D73FB387E70237A72600130737ECBA9759 -:103CA0003EC497C0F91FE780006BFC28F838A207D4 -:103CB0004207BA97D838BA97982C6207BA97232E3A -:103CC000F40C03474417834734174207A207BA97F7 -:103CD00003472417BA97034754176207BA9723205C -:103CE000F40E930710021CA8F24062448147D244AC -:103CF0003E850561828085473E8582807829A5477B -:103D0000631AF704411122C406C6142913070005DB -:103D10002A8485476394E602EFF02F8C0DE5832714 -:103D2000040A2305040293E707102320F40A1C3831 -:103D300093E707F81CB885471CA88147B240224486 -:103D40003E85410182808347940293E71700A304D4 -:103D5000F402F1BF85473E8582807829A547630933 -:103D6000F700054582800545B2402244410182802A -:103D700083278510411122C406C693F707022A84BF -:103D8000FDD3EFF08F858547E30FF5FC1828631707 -:103D9000F700930710051CA80145F9B78327840A8B -:103DA00093E707082324F40AC5BF5C25A30A05008E -:103DB000F19B93E717005CA503250511133515004A -:103DC000828001458280411106C6EFE04FE705C1C0 -:103DD0000357A505835685050356450783552507D3 -:103DE0000A25EF60600E0145B2404101828009451D -:103DF000E5BF011106CE22CCEFE06FE425CD3035D2 -:103E0000B727002005472A84938707166312E60424 -:103E1000B84F094515CB0346F4028346170483586F -:103E2000C4030358A4031E3C0E240345A402130735 -:103E3000270432C00546EF6080077C342305040266 -:103E4000014593E717007CB4F2406244056182802B -:103E500003A7070809456DDB834657078358C4034A -:103E60000358A4031E3C0E240345A402130767074E -:103E700002C0D1B70945C9BF411106C6EFE02FDC2A -:103E800011C9834505140A25EF60E0060145B240DB -:103E9000410182800945E5BF9375F50F01112E851B -:103EA00006CE22CC2EC6EFC06FD205C12A8483462F -:103EB000A506B24528390546EF6060030145A30910 -:103EC0000400F2406244056182800945DDBF411172 -:103ED00006C6EF608001B240014541018280411178 -:103EE00006C622C4EFE0AFD505C983467514034664 -:103EF00065142A840E250345A5028506050693F65A -:103F0000F60F1376F60FEF50107E014523050402DD -:103F1000B2402244410182800945DDBF397106DE8D -:103F200022DC26DA4AD8EFE08FD1630D0514343550 -:103F3000B727002005472A84938707166398E60A67 -:103F4000A44F0945B5CC83C704031946898BBDCF5F -:103F500093852403280897C0F91FE780C03F83C7D3 -:103F60001404138924041946898BA5CBCA8508102B -:103F700097C0F91FE780203ECC54194691052810C0 -:103F800097C0F91FE780203D8347F40283588403DC -:103F900083C6140430340E240345A4023EC45E3CA0 -:103FA0001308010238103EC23E3C3EC03C08EF50B0 -:103FB00030727C3423050402014593E717007CB47A -:103FC000F2506254D25442592161828081452808BE -:103FD00097C0F91FE780603B59B78145081097C02B -:103FE000F91FE780803A1946CA8551BF83A40708A4 -:103FF0000945F9D483C744061946898BB9CF9385FF -:104000006406280897C0F91FE780E03483C7440797 -:10401000138964071946898BA1CBCA85081097C0FC -:10402000F91FE780403383A54408194628109105FD -:1040300097C0F91FE780203283A74408BC3393E779 -:104040002700A38AF4068358840383C654073034B8 -:104050000E240345A40202C499B78145280897C0DD -:10406000F91FE78080325DB70810814597C0F91FBE -:10407000E780A0311946CA85281097C0F91FE7804C -:10408000802DD1B709452DBF411106C6EFE02FBBEA -:1040900005C103578518835665180356C5188355FF -:1040A000A5180A25EF5090620145B2404101828077 -:1040B0000945E5BF411106C622C4EFE04FB815C55A -:1040C0002A840357A505835685050356450783555E -:1040D00025070A25EF50105F1C38014593E747007C -:1040E0001CB8B2402244410182800945DDBF411124 -:1040F00006C6EFE0CFB419CD032685159305151537 -:104100000A25218242064182EF50905B0145B24070 -:10411000410182800945E5BF411106C622C4EFE096 -:104120000FB205C12A84130605100E250345A5020A -:10413000EF50D058014523050402B240224441010A -:1041400082800945DDBF411106C622C4EFE02FAFD2 -:1041500005C52A840357A5058356850503566505BD -:104160000E250345A502EF503055014523050402F5 -:10417000B2402244410182800945DDBF011113751F -:10418000F50F06CEEFC08FA429C9B727002083A75B -:10419000872293F707209DC302C402C202C0814850 -:1041A0000148814701478146054681451305C00303 -:1041B000EF5010520145F24005618280834695031D -:1041C0001307A50302C08148014881470546814580 -:1041D0001305C003EF50B04DF1BF0945E9BFB72744 -:1041E00000209387071603A70708094529CB83A753 -:1041F000870C011106CE93F707208DC302C402C2BB -:1042000002C08148014881470147814601468145F6 -:10421000EF50104CF240014505618280835807023F -:104220000358A7018357070583465707014602C075 -:104230001307670781450945EF507047E1BF82804A +:100000001946B105130524039700FA1FE780A032B3 +:10001000034704038947E31CF7FA9C3095CB8347D9 +:1000200084039DC78347F403130700041305840367 +:1000300093F7070C6394E7109710FA1FE7800069A5 +:1000400048D45C5491C7BC2B81C78947230CF40268 +:10005000042495F085471CA45CB0B727002003C793 +:10006000F769230C09820349A40093170701231998 +:10007000E4069376F9001947C1836379D70683466E +:1000800004060947938947006394E6009389C703F0 +:10009000B737002003C76798162C8345F40513056E +:1000A000A00F372600209307E70B23193407138787 +:1000B0002600B3D6A6020355866D09460E07639443 +:1000C000C5081307A7040E073E979397A600BA9793 +:1000D00037460F00130606248146B3A5A702330551 +:1000E000F502EFD080534E952319A4068357A4063A +:1000F00023160406B1CF28289307F00F6306F500F6 +:10010000EF005FDAFD573CA80356A40693062401CE +:10011000120637150600A28513054584EF009FBE21 +:10012000B727002003C5B7638545EF001F8BA9B52E +:10013000B735002019469385E591A5B59710FA1FAC +:10014000E7800054F5BD6D073E979397960041B741 +:100150008547E317F9FC28289307F00F6306F5009D +:10016000EF005FD4FD573CA80566930624011306F3 +:10017000068045B7411106C622C426C22A84EF5024 +:10018000D050228523040400A3030400A30204002A +:10019000B7240020EFF0EF9493848463A830854562 +:1001A000EF009FC9A8308945EF001FC92828930791 +:1001B000F00F6306F500EF00FFCEFD573CA8B240FC +:1001C00022449244410182806C45411106C622C4FA +:1001D00026C24AC09C317D4793F7F7037CA5E917F7 +:1001E00093F7F70F637BF70093040008B2402244B3 +:1001F000268502499244410182809C21BD8B7CB5B9 +:10020000F51793F7D70FEDF32A841946A1051305C7 +:1002100025039700FA1FE7800023914461D96C44BD +:1002200085472300F4049C21194689059987858B0D +:10023000A300F404130524049700FA1FE780A00F1D +:100240002285EFE07FF685472A89E31FF5F87834A9 +:100250009547631EF702EF00D03FB727002083C702 +:10026000D7698D8B6375F5025C24E36FF9F6B727C8 +:10027000002083A7C7678144829708D02285EFE0DA +:100280003FD7E31525F72285EFF0DFEE85B75C2435 +:1002900081C71947E39AE7F42285EFE0FFCE834751 +:1002A0006406034504064C3481445D8DEF50D01C38 +:1002B000014681450D459720FA1FE780208DEF50BC +:1002C000D03C2DB779714AD0373900209307898304 +:1002D00022D4A04F26D252CC56CA37EA0600B734F1 +:1002E0000020B72A00204ECE5AC806D613098983AB +:1002F000130ACABD9384C497B7390020938A8A68C9 +:10030000130B04017C302D479387E70693F7F70F13 +:100310006360F7168A07D2979C4382871147834709 +:100320000907E31EF7FE2285EFF00FAFE1BF01469C +:10033000930550020145EF50B01E1306500281454F +:1003400005459720FA1FE7806084BC30858B85C700 +:10035000684481465A868145A38104009710FA1F9C +:10036000E780C07A01E52285EFF01FE67830930739 +:100370003009E309F7F8EF5050312285EFE01FFB19 +:10038000B250225492540259F249624AD24A424B24 +:1003900045618280BC20858B91CF5C242381040041 +:1003A00005476375F7001947E397E7FC9307B0F932 +:1003B0007CB089BF83A7499AFC53A9F76DBFBC20C5 +:1003C000858B6380072423810400EF50102C228545 +:1003D000EFE03FF1B724002083A7844585CBDC43C1 +:1003E00095C789475C828347140413056100194649 +:1003F000DC821C28930524045C869700FA1FE780A2 +:1004000080F383A784454800DC4382978347340602 +:10041000A5DB83451404482013062404EFA0203CE8 +:1004200085B7834774060345F405014693055002DA +:100430005D8DEF50F00E0146814505459710FA1F7E +:10044000E780C074BC30858B85C7684481465A8676 +:100450008145A38104009710FA1FE780206B01E516 +:100460002285EFF08F8878309307A009E30CF7E836 +:10047000EF50B02151A8834774060345F4050146A7 +:10048000930550025D8DEF50B00901468145054549 +:100490009710FA1FE780806FBC30858BF1DB6844D2 +:1004A00081465A868145A38104009710FA1FE78090 +:1004B000E06501E52285EFE0DFEA783093079009F7 +:1004C00075B7BC20858B638E071223810400EF5023 +:1004D000D01B8347090709476307F70083470907CC +:1004E0000D476317F70283A6499A03570407BC52C6 +:1004F0001307C712858363FDE700930750F97CB0AB +:10050000BC528583E39007E02285EFE09FDD8DBD3F +:1005100058387C2805CF7420630ED7106386F60008 +:1005200078A02285EFF08FD4FC3093F7F70FE39B90 +:1005300007DC8347090709476307F7008347090773 +:100540000D47E313F7FC930750F99DB5F1DF7820D1 +:1005500061FF7CA0F9B7BC20858BC5C7238104004F +:10056000834709071547BD8B639CE700EF00700EBA +:1005700083C75A018D8BE37DF5EE9307D0F90DBD4E +:10058000834709071947BD8BE394E7EE9307C0F94A +:1005900005B5BC20858BE38707D6238104008347FC +:1005A00009071547BD8BE38AE7FC8347090719470D +:1005B000BD8BE38DE7FCEF50500DD9B3BC30858B7C +:1005C0008DC7EF50900CB737002003A707977C53D7 +:1005D000ED9B7CD3238504003727024083478704A3 +:1005E00093F7D70F2304F70405B783A7499AFC5361 +:1005F000E39A07D0F9B7BC20858B81C7238104001B +:10060000F9B383A7499AFC53E39E07CE95B5B73754 +:1006100000209387C797B823058BE30B07E423815A +:100620000700EF5090062285EFE09F9C2285EFF0B7 +:100630007FB4B9B3E38A07EE29BF411126C2B734AC +:1006400000209387848322C4E04706C64AC063051E +:10065000041E182485476311F71EB73700209387BF +:10066000C797F8339546638AE600F8338D4663866C +:10067000E600FC332D47631EF7002244B727002015 +:10068000B2409244024903C5B763854541016F00FA +:10069000CFB4562C1307006483C784833347D70233 +:1006A00013898483850793F7F70F232C8904238C00 +:1006B000F48263C6E700EF007FCB238C04823824EA +:1006C0009D476312F704834754069DCB8356C406A7 +:1006D00063E5F6024C20930730043CB81305300460 +:1006E00093F6F60F0146EFA0400F22852244B24058 +:1006F0009244024941016FF0FFA785062316D406F4 +:100700009547230FF40485472308F90658288D4799 +:10071000631CF708EF004F920D8911E993077002EF +:100720007CA0930750025CB89307600221A885471C +:100730006316F506930760027CA0930750025CB82D +:10074000930770027CA83824B727002083C4B763BE +:1007500085476318F70C522C85452685EF00CFC5D9 +:1007600083471403898BE9C783478403F1C34C543F +:10077000E1C1BC25D5CF89472308F4021946B1054C +:10078000130524039700FA1FE780E0BA228522446C +:10079000B2409244024941016FF04FAD93075002BD +:1007A0007CA09307700241B789463C346316D70298 +:1007B00013F7170001CF1307500278A0898B91CB54 +:1007C000930760025CB8230B0400B5BF9307600277 +:1007D0007CA093077002FDB795C313F7170019C7E4 +:1007E000930750027CA0A30A0400F1BF898B81C744 +:1007F00093076002C5BF93077002EDB75C3813071B +:1008000040026365F7009307500201A8850793F73C +:10081000F70F13077002E368F7FE5CB85C387CA042 +:100820005DB7B9450545EF005FAD522C2A962DB74F +:1008300085472308F40299BFB240224492440249FA +:1008400041018280011122CCFD5706CE3CA983577D +:10085000A5062A848DC78346C5064C219307C0038D +:100860003CB901461305C003EF9030770945EF50BE +:10087000E06922856244F24005616FF0BF8F3C253C +:100880000547BD8B6386E7008347C505918BF9DF7C +:10089000B737002083A7079193F7072085C302C4C9 +:1008A00002C202C08148014881470147814605468E +:1008B00081451305C003EF90306D4DBF02C08148E4 +:1008C0000148814701478146054681451305C0031C +:1008D000EF90706961BFB737002023ACA794828086 +:1008E000B727002083C7B763411106C689EB37F5E8 +:1008F00005001305E5A8EF008FFEEFE06FA9B737FD +:10090000002037F7050093878783130727EDF8CF7B +:1009100037070600130747F6B8D337070600130753 +:10092000A763F8D3B24037070600130707F1B8D71B +:100930004101828011C98327050A93E70708232014 +:10094000F50AFD572303F5028280B737002023A064 +:10095000A7968280B737002083A707889C5799E322 +:100960003E8582809A2FE30DA7FE93878705C5BF3A +:10097000011122CC06CE2A84034565029307F00FAD +:100980002E866309F5002EC6EF00CFD13246FD5703 +:100990002303F4028347A4020357840493066402EA +:1009A00093E707062305F40283570404A285F24067 +:1009B000BA972313F40462443715060013054593D0 +:1009C00005616F002FB4011122CC06CE2A840345A5 +:1009D00075029307F00F2E866309F5002EC6EF000F +:1009E0006FCC3246FD57A303F40293067402A2852E +:1009F0006244F240371506001305C57C05616F009F +:100A00006FB0011122CC06CE2A84034585029307DC +:100A1000F00F2E866309F5002EC6EF00AFC83246F0 +:100A2000FD572304F40293068402A2856244F24037 +:100A3000371506001305657F05616F00AFACB7374A +:100A4000002093878783AE33F2379A3BF633B7079C +:100A50004801ED07232AF51A232CF51A2318B51A95 +:100A60002316C51A2317E51A2319D51A6D48AE8720 +:100A70006373B800ED47939507012310F51C6D488B +:100A8000C181B2876373C800ED47231EF51A1306B0 +:100A90008014B6876374D600930780142311F51C65 +:100AA00093068014BA8763F4E60093078014231F2B +:100AB000F51A2307B50482800347651489468357D6 +:100AC000251C631ED70283568514938787E899C631 +:100AD000B3C7E702938757FD214731A02147B3C72A +:100AE000E702938757FDB3C7E7020357051CC20708 +:100AF000C18363F3E7003E872307E50482808546D0 +:100B00006316D7009387C7FB1147F1BF938707FB95 +:100B1000E1B78357C51A0357851B411106C663F316 +:100B2000E7003E87931807018357A51B0357E51A73 +:100B300093D808016373F700BA87139807018356A7 +:100B4000451B8357051B1358080163F3D700BE8666 +:100B50000357251B8357651B13930601135303018A +:100B60006373F700BA8783467514C2070947C183C8 +:100B7000639AE6000566130606A942876370C802F9 +:100B8000328729A8032705109316470163CC060076 +:100B90000566130686844287E36406FF131807017F +:100BA00013580801834665140947639DE6063A3DDC +:100BB0009306204E3307D70293F6F80F9A06138652 +:100BC000F63C9386C64F634406019306C812158F00 +:100BD00063D3E7003E87420705664183130606A9F3 +:100BE000BA876373C700B287C207C1830356C51BA8 +:100BF00013F7F80F9376F30F6316E6040356E51B1D +:100C0000631206050356051C631ED6020356251CF7 +:100C1000631AF602230E0506EFF01FEA0945B240FB +:100C2000410182800327051093164701E3C006FCAB +:100C3000056613068684BE856373F600B2859397B6 +:100C4000050165B70546230EC506231EE51A231FB9 +:100C5000051B2310D51C2311F51CEFF0FFE5014502 +:100C60007DBF0357251B8357651B411106C6637360 +:100C7000F700BA8703466514139707018946418335 +:100C8000631BD6068566938606A96373D700B6876D +:100C90001397070141838357251C6387E700854726 +:100CA0002311E51C230EF5060357E51A8357A51BF0 +:100CB0006373F700BA8703467514139707018946D3 +:100CC00041836317D6048566938606A96373D700AC +:100CD000B6871397070141838357E51B6387E700B6 +:100CE0008547231FE51A230EF506EFF0FFDCB2401F +:100CF000014541018280856713868784E37DE6F89C +:100D00008326051093870780F58FD1F7328761B767 +:100D1000856713868784E371E6FC83260510938735 +:100D20000780F58FD5FB328745BF0357A50495474C +:100D3000723DB307F702363D93D537406355B60091 +:100D4000118F93173700B3C7D702C207C18323148B +:100D5000F5048280832745110D469306F00F9823F2 +:100D60000D8B58B56313C700B42374B99823418B16 +:100D700038A99C337CA982805C25CD9B5CA58280B0 +:100D80008327451158259C23935637408987B58F73 +:100D9000858B91C71347870058A50145828005457B +:100DA00082808327451158259C23935627408D87A1 +:100DB000B58F858B91E71347470058A50145828081 +:100DC000054582808327450E85072322F50E91E78E +:100DD0008327850E85072324F50E8327850E93F739 +:100DE000070891C785472322F50E2324050E834764 +:100DF000A50293F7070491CF835705040357850491 +:100E0000BA972313F5048327450A93F7F7BF2322E4 +:100E1000F50A82808327C50E85072326F50E91E704 +:100E20008327050F85072328F50E8327050F93F7E2 +:100E3000070891C785472326F50E2328050E83470B +:100E4000A50213F7070409C793E707022305F50274 +:100E50008280B737002083A7878C0145054791E33F +:100E60008280B4376393E60005059C43CDBF4111F2 +:100E700022C426C22A8491450145B734002006C603 +:100E800093848483EF006FC703D7840A231BA404D1 +:100E9000854763FDE7040355241C8357E41B37276C +:100EA000002037460F00AA970355876D93871727B1 +:100EB00013060624B3A5A70281463305F502EFC049 +:100EC000C075835704040357E4058355840583A83C +:100ED00004091D8F3307B7028327040905461383CE +:100EE000F5FF130E80023E9763676600B24022440E +:100EF0009244410182803308C603C687FD563A9862 +:100F000081E7231BC404DDB76314F4001C40F5DB48 +:100F100083AEC7086398BE0083A60709B306D8400E +:100F2000B3F6B60263E4A6009C43D9BF09066DBFC1 +:100F3000411126C2B73400209384848303D7840AE6 +:100F400006C622C4854763F3E7042A848357E51B5A +:100F50000355251C3727002037460F00AA97035555 +:100F6000876D9387172713060624B3A5A70281462A +:100F70003305F502EFC0606A0346540583A80409EF +:100F800085467D161303800263E7C600B240224403 +:100F90009244410182803387660283270409FD550C +:100FA0003E97C68781E7231BD404CDB76314F400B2 +:100FB0001C40F5DB03AEC7080328C408631A0E0102 +:100FC00003A80709B305E84063640701B3050741B7 +:100FD00063E4A5009C43F9B785067DB7B7370020C9 +:100FE0009387878383D6870A05476372D70C41119D +:100FF00022C403A4070906C626C2A28789EB01EC16 +:10100000230E0500B2402244924441018280D83F21 +:1010100075FB9C43E5B76314A400004075D03C34D5 +:10102000C9E70327C4088327C5086300F708582DBC +:1010300093070008AA846316F7043E3C19469305FB +:101040000008231AF506231BF5065E3C231DF50454 +:101050007E3C231EF5040A25EF3000398547DCBCB1 +:10106000DC2C93F7F707DCAC130584062244B2406E +:10107000924431469305F00F410117F3F91F6700C1 +:1010800023323E3D194693050008231AF406231B1C +:10109000F4065E3D231DF4047E3D0A24231EF40461 +:1010A000EF30803489475CBCC1B7004089BF230E54 +:1010B00005008280B73700209387878383D6870A0D +:1010C000411126C206C622C40547AA846372D718F6 +:1010D00003278510098B630D071683A70709BE85B3 +:1010E000BDE503D6041C01447D581306260205867F +:1010F0002D067D55ADE3630204103C343A3CCDE748 +:101100008947231CE404A30AF40403570406835705 +:1011100004042285BA97C1071D8B998F231FF404FD +:101120005E3C231DF4047E3C231EF404EFF03FD408 +:101130008327440A93E717002322F40A85475CA813 +:101140008D475CBCB2402244924441018280D83D2C +:1011500075FB8C4171B798436394970049DFBA8758 +:1011600083A6070903A7040963E2E6023387E64082 +:1011700083A6C40863F4E6003377D7026376A7003A +:101180003A856373C700BE859C43ADB7158F83A6B0 +:10119000C70863F4E6003377D702E37707FF3A889E +:1011A000E374C7FE3E84CDB7BE3CB3F7E702D9FB7C +:1011B0009D46994763F5E600935717008D0705672D +:1011C000231AF406130707C88A076353F700BA8780 +:1011D000231BF4065E3C0A241306C002231DF404FC +:1011E0007E3C93050008231EF404C9475CBC2244DE +:1011F000B240924441016F30201FB9C9BA3CBE3D94 +:10120000B3F7E702B1E78387C40163D307049D46C0 +:10121000994763F5E600935717008D070567239AF2 +:10122000F406130707C88A076353F700BA87239B9E +:10123000F406DE3C8A241306C002239DF404FE3C1F +:1012400093050008239EF404CD47DCBCEF30C019A1 +:10125000238E0400C5BD372700201307076D5027D4 +:10126000B7370020B73600209387878315CE03A6B3 +:101270004696411106C611EA584323A2E70A3717DA +:1012800000201307E72823A2E69603A5469623AC81 +:101290000708EF000F8DB240B7E700E03707000204 +:1012A00023A2E72041018280122723AC070883573D +:1012B0006508AA8523A20696B387C70237460F00A2 +:1012C000832605091305F62313060624AA97B3D728 +:1012D000C702372600200346F6693E9663EEC60035 +:1012E00003A7C508371500203386C64013054523DC +:1012F000938695026FF00EDB5C43BE96D5B7B73789 +:10130000002003A70796011126CA4AC8B724002067 +:1013100006CE22CC4EC62A899384046D3DCFBE8969 +:10132000B737002003D7078E85476318F7069E243A +:1013300003546908032505093304F402B7470F0075 +:101340001387F723938707243A943354F40263688E +:101350008508B727002083A7C76733048540829795 +:101360006362A408B307A440372700200344F76949 +:1013700083A90996014505806370F40237450F0083 +:101380003384874013050524B335A4029224814693 +:101390003305A402EFC060288299930700FB23075E +:1013A000F900DC24A1CB014597F0F91FE780203E2E +:1013B000B737002023A8078CB737002003A547962E +:1013C000EFF03EFAF2406244B7E700E03707000270 +:1013D00023A2E720D2444249B24905618280DC4021 +:1013E0003E9585BF330785408147E35F07F6DC40C4 +:1013F0003E948DBF8347990262448545F240D244B2 +:101400004249B249B395F500C205C1810145056164 +:101410006FF0AEDC411106C6EF00302319C98327F7 +:101420008511014581E7B240410182809C43050559 +:10143000D5BF7D55CDBFB73700209387878303A7DE +:10144000C709411122C426C206C62A84AE84631489 +:10145000A70023AE07088327041299C70A24014670 +:1014600093050008EF2050788357440499C70A2455 +:101470004D4693051008EF2030770A241546930552 +:101480001008EF207076B73700209387C797F8339E +:101490002305040023080400230A9404954663945A +:1014A000E600A3830700B240224492440145410173 +:1014B00082803C25638A073083570508411122C486 +:1014C00006C626C285072310F5087C35230C0500C7 +:1014D0002A8413F7270005E703570504954763E4BB +:1014E000E700014501A89305E003EFF0DFF4A30551 +:1014F000A4020945B240224492444101828013F77C +:10150000070221CF93F7F7FD7CB58327050A38350D +:10151000A305050293E747002320F50A8547631ECC +:10152000F7023E3D1306204E03274509B387C70245 +:10153000B3D7E702372700208346E76903477503DF +:10154000938606053307C702B697C207C1832312E5 +:10155000F5088607BA972311F5081C38858BE9C76B +:101560008357E405035704046393E7225E3C8355E5 +:10157000C405034584022310F406834754056EBC5A +:101580009205A30BF40283576405F915B7240020D4 +:101590001EBC8357A4059384046D5EBCEFF02ECC73 +:1015A0003834231004081E3C835684056318071A38 +:1015B0009A24CC40B387E7021307003293870719B8 +:1015C000B3D7E70203270409D1073E973A8663643D +:1015D000F7006364B7003306B7405C3C2328C408B7 +:1015E00036BC81C72285EFF0BF949A243E3C930617 +:1015F000003223110402B387E70233D6D702B3F7D0 +:10160000D7029306204E2326C408B387D702B3C758 +:10161000E7021EB0835704045EB07C3493E70702F0 +:101620007CB41C38F99B1CB81C38898BA9C703579C +:10163000E41283570404B306F74013960601634D82 +:101640000614631AF7028147014893048413232C7C +:10165000F412232E0413154693058412268597F061 +:10166000F91FE78040CD2685EF0010271C38A30620 +:10167000A412F59B1CB81C3813F707013DC783560D +:10168000C414035704043386E6409315060163C56A +:101690000510639CE604BD9B1CB88347A41481CB52 +:1016A00013F727006304071085472303F4148347C7 +:1016B000B41481CB13F72700630107108547A303F8 +:1016C000F4142285EFF0EFD98347C40799C7832725 +:1016D000040A93E707102320F40A8327040AA305CA +:1016E000040293E707202320F40A1C3813F70702AB +:1016F00005CF3737002003270788130680055423BA +:101700001857B386C6023697562F035704043387FB +:10171000E64013160701634906000357C414631516 +:10172000D70093F7F7FD1CB88347A40293F707048B +:10173000E38907DA0357640483570404E313F7DAF1 +:1017400018289307A0046314F70085471CA8832773 +:10175000440A93E707402322F40A61B39DC79A2401 +:10176000CC40B307F7021307003293870719B3D7AA +:10177000E702032704093E973A866364F70063642F +:10178000B7003306B7402328C40836BCB9BD998FCB +:1017900013970701E35A07E8930580022285EFF0CB +:1017A0009FC9A305A40213058002A9B3918B99C315 +:1017B0008947E5BD23030414DDBD918B99C3894797 +:1017C000FDBDA3030414F5BD0545828005C5411187 +:1017D0009305200222C406C62A84EFF0DFC5FD5718 +:1017E000A305A40223080400A303F402B240224488 +:1017F00041018280828005C9411122C406C67C3520 +:101800002A849305E003898B91C3A145EFF0BFC201 +:10181000FD57A305A402230804002304F402B240E8 +:1018200022444101828082808327050A411122C41B +:1018300006C626C24AC02A84638C073213F72700E3 +:1018400011CBF59B2320F50A0A25194693050008BC +:10185000EF2090398327040A13F7470041CFED9B0F +:101860002320F40A8347A40293F7070491CB83272C +:10187000440A228593E707402322F40AEFF0EFCAD7 +:1018800038348547502883562406631FF7463E3C6C +:101890001307204EB387E70203274409B3D7E702B3 +:1018A000372700200347E76913070705BA97C207E0 +:1018B000C1830347B4022312F40886072311F408F6 +:1018C0009307000819C3930700045CAC19E683472B +:1018D000A40293E717002305F40299E60A240D46B3 +:1018E00093050008EF20503023110406230A04005A +:1018F000A30E04008327040A13F7870005C30A24F4 +:10190000DD9B2320F40A154693050008EF20D02D17 +:101910008347A40293E747002305F4028327040AC0 +:1019200013F7070131C7BD9B2320F40A8347D40472 +:101930000A24214689C7A30604041306000393055D +:101940001008EF20702A8347C40489CF83278410AE +:10195000C18B89CB8355A40422859205C205C18120 +:10196000EFF00F818347A40293E717002305F402E9 +:101970008327040A13F7070405CB0347F40493F7FE +:10198000F7FB2320F40AA14763FAE7003C3499E708 +:101990008327440A93E707012322F40A0A243146E5 +:1019A00093051008EF2050248327040A13F7070239 +:1019B00055C7343493F7F7FD2320F40A0327C410E6 +:1019C0008327841099EA1377070801CB0327440A79 +:1019D00037064000518F2322E40A93F70702638EF3 +:1019E0000734ADE28357E41A0357E41B6304F7029C +:1019F000834674140947639CE6320567130707A9F9 +:101A0000637AF7008327440A056713070780D98F95 +:101A10002322F40A8357241B0357241C6304F70270 +:101A20008346641409476397E6300567130707A9DF +:101A3000637AF7008327440A056713070780D98F65 +:101A40002322F40A0A24114693050008EF20D01936 +:101A50008347A40293E717002305F4028327040AAF +:101A600013F707101DC30A2493F7F7EF2320F40A96 +:101A7000230E04061D4693050008EF20F016834749 +:101A8000A40293E717002305F4028327040A13F73F +:101A9000070801CF0A2493F7F7F72320F40A130667 +:101AA000700593051008EF2030148327040A13F7FC +:101AB000072015C793F7F7DF2320F40A2285230FA9 +:101AC0000400EFE07FFF0A24314693050008EF2071 +:101AD000B0118347A40293E717002305F40283277C +:101AE000040A139727016357070079777D17F98F49 +:101AF0002320F40A8327040A139707016359070474 +:101B0000B737002003C5B78383450403EFF08EF693 +:101B10003E3C1307204E232AA408B387E702372749 +:101B20000020B3D7A7020345E76961777D17130546 +:101B30000505AA972312F4088347A40293E7170028 +:101B40002305F4028327040AF98F2320F40A83274C +:101B5000040A858B91CF8347A402834544052285DF +:101B600093E717002305F402EFF0FF8CA305A4020E +:101B70003C249DCF8327041281CF3C2C91EB0A2477 +:101B8000014693050008EF20300619E185473CAC7B +:101B90008357440491CF8347140399EB0A244D469D +:101BA00093051008EF20500401E58547A308F402CF +:101BB0008347A402E9C7918B89CF1028C16593851B +:101BC00005A02285EFE03FE08347A402ED9B2305BB +:101BD000F4028347A402858B8DC3034574029307E7 +:101BE000F00F6307F500EFF0EEABFD57A303F4022F +:101BF0008347A402F99B2305F4028347A402898B3F +:101C000089CF6E3C034584029205F915EFE03EE56D +:101C10008347A402F59B2305F4028347A402A18B0A +:101C200099CF6E3C0D4622859205F915C205C181FA +:101C3000EFE07FD98347A402DD9B2305F4028347AD +:101C4000A40213F7070101CF0345640293F7F7F8E5 +:101C50002305F402EFF00EA5FD572303F40283479A +:101C6000A40213F7070201CF8355A40403456402BD +:101C700093F7F7FD2305F4029205EFE05EDE5C2C9E +:101C800093F7070C81CB383485472285631EF70A0A +:101C9000EFF04FC283570404B5C313074006B3F7F0 +:101CA000E702A9EFB737002083A7C795B734002014 +:101CB00093848483898B9DCF3729002013098968F9 +:101CC0000327490305CB9E28AE282545C207DD8D95 +:101CD000029783274903EE242945829783274903E6 +:101CE000831524032D4582978327490383054403E5 +:101CF000314582972397040023A80400B240224470 +:101D00009244024941018280930700045CAC19E6C9 +:101D10008347A40293E717002305F402E39806BC67 +:101D20000A240D4693050008EF20006CC1B6130786 +:101D30008014F9B113078014E5B98327440A7D772D +:101D40001307F77FF98FEDB9EFF04FA9A1B7411154 +:101D500022C406C62A8483278411C5EB8327041274 +:101D6000E9E70325041109C597E0F91FE780803AE8 +:101D7000034574029307F00F6304F500EFF08E92B1 +:101D8000034564029307F00F6304F500EFF08E91B2 +:101D9000034584029307F00F6304F500EFF08E9083 +:101DA000034594029307F00F6307F500EFF08E8F61 +:101DB000FD57A304F4020A24492CB7370020938767 +:101DC000878303D7870A15EF37370020232207962A +:101DD000372700200327476D23A2E70AB7270020F3 +:101DE00083A7076999CF3724002013048463085020 +:101DF00009C997E0F91FE780E0312320040223227C +:101E00000402B240224441018280C84309C597E0E0 +:101E1000F91FE780203083278411BA27136707F062 +:101E2000BAA79C43232CF4103DB7C84309C597E0DB +:101E3000F91FE780202E83270412BA27136707F0C3 +:101E4000BAA79C432320F41211BFB737002083A701 +:101E5000878C99E33E8582809A27E30DA7FE9C43F9 +:101E6000CDBF3727002083467769372700200346F8 +:101E7000C76DB737002083A7878D1387160019C257 +:101E8000139716001207C1663E97FD166315F700FB +:101E900081473E858280B227E30DA6FEE30BD6FE86 +:101EA000C107EDB701114EC6B7390020938789836A +:101EB00083A7070A06CE22CC26CA4AC852C4B5EB6D +:101EC0003727002093078768B7260020FC3783C692 +:101ED000C66D93898983130A87681389170099C28D +:101EE0001399170003D4E9023305F940931449000C +:101EF0001304140215841604420441803305A4021D +:101F00009305402426954205418197E0F91FE7801B +:101F1000601305C18346FA0023A0A90A3307950080 +:101F2000B306D9408147130640F5930520F563EACF +:101F30002701F2406244D2444249B249224A056133 +:101F4000828063FCD70058C12EA522978507C2075F +:101F5000A3040500C1834105D9BF32A52322050092 +:101F6000F5B74111930530261305801C06C622C41F +:101F700026C297E0F91FE780E00C1306801C81451C +:101F80002A8497E0F91FE780A04101450DC8B734C6 +:101F900000209387848383A60709938484839DC646 +:101FA0003687854712276301F606184365FF1EA48E +:101FB000A9E3228597E0F91FE780C0150A24B24003 +:101FC00022449244410182803687E9BF85471EA49E +:101FD00023A8840823AA84082394F40AEFF09FEC32 +:101FE00083A7440923A00700230504002307040056 +:101FF000F1B783A7440980C383D7840A23AA84083E +:1020000085072394F40AE9BF138717009317070184 +:1020100013160701C183E35906FA814749BFB73751 +:102020000020138787830325070A411122C406C6AF +:102030001384878309C597E0F91FE780A00D23204B +:10204000040AB240224441018280411122C4373443 +:1020500000209307848383A6070906C60147B68735 +:1020600013048483A9CB9227631BA60405EB984233 +:102070002328E4083E8597E0F91FE780A00983271D +:10208000440923A007008357840A9DE3EFF03FF93A +:1020900023280408B2402244410182808326440957 +:1020A0006395F600232AE408F1B7944314C3D9B723 +:1020B000FD172314F40A8357840AE9FFC1BF3E8742 +:1020C0009C434DB737350020714681451305858CFB +:1020D00017E3F91F6700C32C1C3138215421A207D4 +:1020E0004207BA971821FD8A0548BA9738319305F7 +:1020F000000201456207BA9701473316E8007D8E5A +:1021000001C605051375F50F0507E318B7FE8147EE +:10211000214633D7F640058B01C705051375F50F2A +:102120008507E398C7FE8280011152C656C4032A70 +:102130008513832AC51322CC26CA4AC806CE2A8410 +:10214000A30B0512A306051281441309500226862B +:102150005285D685EFB0A049058911C58347D412B1 +:102160008507A306F4128504E39324FFF24062443A +:10217000D2444249324AA24A0561828074290D47FD +:10218000AA876384E6000545828003274511502312 +:10219000A305C50238336313D70238356DF7182904 +:1021A000930600026307D7009306300201456316C9 +:1021B000D7001307600298AB01458280BD46631EBD +:1021C000D70018299306000401451377B70FE316CB +:1021D000D7FE1307500498AB8280B9466319D70025 +:1021E000142913070003E390E6FA0547E9B7D1463F +:1021F0006316D700142913070005F5B7D9466314F1 +:10220000D702142913075005E39FE6F60327050AB2 +:10221000136707202320E50A054718A9983B136791 +:1022200007F898BB51BFE946631AD7001429130772 +:102230005006E39AE6F41307A006B5BFFD46631AFD +:10224000D70014291307A007E39FE6F2130710F83D +:102250009DB793063002E318D7F2142913075008EC +:10226000E393E6F2054718A90347A5021367170091 +:102270002305E50265B783270511094758B999CFAA +:10228000B8A303474505B8B38347A50293E7870082 +:102290002305F502F1471CA9014582801D45828076 +:1022A00085475CB98327051181CB1547B8A39307F0 +:1022B000B0021CA9014582800545828085475CB932 +:1022C0008327051181CB1947B8A39307D0021CA916 +:1022D000014582800545828089475CB983270511C5 +:1022E00091CB1D47B8A3832705110347D5020145AC +:1022F000B8B382800545828085475CB98327051184 +:1023000081CB2D47B8A3930770031CA90145828098 +:10231000054582800327051199475CB9B1473CA365 +:10232000B737002093878783D62B34B3F42B54A37D +:10233000F62BA18254B3942F74A39C3F7CB38347A4 +:10234000E50213F7070401CF9307A0031CA98347F5 +:10235000E50293F7F7072307F50201458280858B95 +:10236000FDD78327050AA30505022307050293E786 +:1023700007042320F50AE1BF89475CB983270511CB +:1023800091CB3547B8A3832705110347B502014513 +:10239000B8B38280054582808D475CB983270511DB +:1023A00099CB4547B8A30347C502B8B30347B50265 +:1023B0000145D8A382800545828085475CB9832783 +:1023C000051191CF4947B8A39307A0041CA98347DF +:1023D000A50293E747002305F502014582800545E4 +:1023E000828085475CB98327051189C74D47B8A30B +:1023F0000145828005458280032705118D475CB920 +:10240000D9473CA38346451434B383475514918A76 +:102410005CA30357251CA9C69306F034814763FDCE +:10242000E600930787E8035785140DCB85879387CC +:1024300057FD8D87C207C1830357051C63F3E7006F +:102440003E878347A5022307E50493E7470023055A +:10245000F502930750051CA9014582808D87C1BFF5 +:10246000858B99C7930707FB2147B3C7E702D9B705 +:102470009307C7FB1147D5BF032705118D475CB9EB +:10248000DD473CA3834745143CB38346551454A30E +:102490000347B514F98F93F647000357251CA9C6C7 +:1024A0009306F034814763FDE600930787E80357FE +:1024B00085140DCB8587938757FD8D87C207C18310 +:1024C0000357051C63F3E7003E87930780051CA9AB +:1024D0008347A5022307E50493E747002305F50298 +:1024E000014582808D87C1BF858B99C7930707FB04 +:1024F0002147B3C7E702D9B79307C7FB1147D5BF39 +:10250000832605118D475CB9E547BCA28347751446 +:10251000034665140547B317F7003317C700D98F73 +:10252000BCB283471514DCA28347A50293E747009A +:102530002305F502930700061CA9014582808947FF +:102540005CB9832705117547B8A3373700200347C7 +:10255000B783B8B3930750071CA901458280894708 +:102560005CB9832705117947B8A30347F502B8B3CF +:102570008327050A2167D98F2320F50A85471CA9DF +:1025800001458280B737002003A70788930780059D +:102590005423B387F602145703270511BE96A547A7 +:1025A0005CB9930700023CA30356251C8357E51B27 +:1025B000B297D05A9387C71263F3C700B2873CB370 +:1025C00013D68700C18350A35CB39C5E7CA313D653 +:1025D0008700C18370B31CA7DC2E1CB7DC3E3CA770 +:1025E0009307C0071CA90145828083270511114666 +:1025F0001307300250B9B8A30347E514118B0DCB74 +:1026000003470515238207009306F7FF0547331795 +:10261000D700B8B303473514D8B38347A50293E76F +:1026200047002305F502930750F81CA90145828055 +:10263000834675140947639FE60037370020034738 +:10264000779801C72147B8B311A0B0B30347B515B8 +:10265000D8A3C9B705473317D700F5B795475CB975 +:102660008327051113074002B8A3A38107000307BE +:102670003514830655156394E6008946B4B3830682 +:1026800045156396E600B43393E61600B4B38306AB +:102690003515D4A303462515D8B3F0A38347E51415 +:1026A000858B81CB99C68327050A4167D98F232063 +:1026B000F50A01458280411126C28324051106C610 +:1026C00022C4B5475CB99DCC91472A84BCA0930530 +:1026D000051A21461385340097E0F91FE780A0C54D +:1026E0001385B40011469305841A97E0F91FE7801B +:1026F00080C4930720021CA80145B24022449244A2 +:10270000410182800545D5BF83270511A9C3411129 +:1027100022C406C6254758B9B8A32A840325051143 +:102720009305840F21460D0597E0F91FE780A0C0AF +:102730008327040AA3050402014593E70702232027 +:10274000F40A85471CA8B240224441018280054515 +:102750008280A5475CB9832705119DCF411122C412 +:1027600006C63947B8A32A84032505119305840FAB +:1027700021460D0597E0F91FE780E0BB8347A402DF +:10278000014593E747002305F402930700031CA8C3 +:10279000B24022444101828005458280E1475CB914 +:1027A00083270511D1C3411122C406C63D47B8A3F2 +:1027B000034745072A8493058506B8B303475507A1 +:1027C0003146D8A303476507D8B30357650721836C +:1027D000F8A30347A505F8B30357A505218398A7D8 +:1027E0000347C50598B70347D505B8A7035745065E +:1027F000B8B703476506D8A7035765061385E700F2 +:102800002183D8B797E0F91FE780E0B28347A4029D +:10281000014593E747002305F402930700041CA831 +:10282000B24022444101828005458280E1475CB983 +:1028300083270511A5CF411122C406C64147B8A37D +:10284000034745072A8493058506B8B30347550710 +:102850003146D8A303476507D8B3035765072183DB +:10286000F8A30347A505F8B30357A505218398A747 +:102870000347C50598B70347D505B8A703574506CD +:10288000B8B703476506D8A7035765061385E70061 +:102890002183D8B797E0F91FE780E0A993074004A8 +:1028A0001CA8B24022440145410182800545828036 +:1028B00083254511411126C206C622C4DC21B83148 +:1028C0000568A207D98F1387A7FF420741839306A4 +:1028D000A8C7F94463E9E60AF821D431130808C807 +:1028E0002207558FF9446360E80A636EF708902564 +:1028F000F4312206558E9306301F63E6C608B425D0 +:1029000083C89500A206B3E61601636ED8061308C5 +:1029100016003308F802939836006356180783C8E8 +:10292000B500139808011358080163840800636C0C +:1029300007058358A5038144639C1701631AF700B8 +:102940008358C5036396C800663D958C93B4140004 +:10295000231DC504231AF506231BE506231ED504F3 +:1029600023120507DC35D8252A84A207D98F231323 +:10297000F5063146B9051305850697E0F91FE7808E +:10298000809B91475CBCB240224426859244410121 +:102990008280832745111303000ED023B83322060B +:1029A000598E130756FE420741836363E306F423FF +:1029B000D8331168A206D98E138786EB420741836C +:1029C000130888146366E804982783C877002207F1 +:1029D00033671701930857FEC20893D8080163694B +:1029E000130383C89700BC27A207B3E71701938896 +:1029F00087EBC20893D80801636C1801231AC51A23 +:102A0000231BD51A231CE51A231DF51A6FE06F90BE +:102A10000545828034350547AA8705456391E60A56 +:102A2000F42B31470545639CE60803A7471134336F +:102A3000A38AD70454335023A206D18E239BD704F4 +:102A40006C337423A205D58D239CB704103714274B +:102A50002206558E239DC70434372827A206C98E27 +:102A6000239ED704482758372207498FAA3F239F20 +:102A7000E70401476319B500CE3F6396C500FA3FEE +:102A8000158F133717002391E706982B9306000440 +:102A90006300D702930640046314D700054798AB40 +:102AA000983B9546D4BF136717F898BB01458280C1 +:102AB00003C7A702136717002385E702C5B7828003 +:102AC00078298947631BF70083274511BC33230A04 +:102AD000F504F5471CA9014582801D4582803C35DF +:102AE0002A87B5EB7429B54705456397F606142B7D +:102AF000930700026392F606832747110145D433FA +:102B0000D023A2064206B296F023B296B0336206F4 +:102B1000B2962320D70C94379027A2064206B2968D +:102B2000B027B296F0336206B296232ED70AD42786 +:102B3000D037A2064206B296B037FC27B296E2071B +:102B4000B6972320F70E1C3B93E787001CBB930727 +:102B500030021CAB8280054582803C3585E37829B4 +:102B60008547631BF7001429130730026396E600BC +:102B70009307C0021CA981473E8582808547EDBF2F +:102B800074290547AA8705456399E602982B9306A1 +:102B9000B0026319D7001307E00298ABA3850702C0 +:102BA000014582809306D00205456318D7001307BC +:102BB000E002A385070298ABE5B7828078298947B0 +:102BC0006319F704E947A305F5028327451139473F +:102BD000BC336390E702182993070003631BF702D5 +:102BE0008327050A93E707022320F50A85471CA9D6 +:102BF00099A03D476391E702832785101829F59B2B +:102C00002324F510930700046315F700930760046D +:102C10001CA90145828049476394E702182993075C +:102C2000A004E318F7FE85471CA98347A50293E794 +:102C300017002305F5021C3993E707F81CB9D1BF2B +:102C400051476390E702182993070005E313F7FC47 +:102C500085471CA98327050A93E707102320F50A57 +:102C6000D9BF5947639CE700182993075005E31221 +:102C7000F7FA8327050A93E70720BDB76947639EE4 +:102C8000E700182993075006E315F7F88327050A8C +:102C9000056713070780D98F81BF7147E38BE7F67C +:102CA0007547639BE700182993075007E313F7F66E +:102CB0008327050A2167C5B713073002E39BE7F4B2 +:102CC000182993075008B1BF38358547631EF700B0 +:102CD00078296319F70018296316F7009307600332 +:102CE0001CA981473E8582808547EDBF7429054731 +:102CF000AA8705456390E606982B93067003631434 +:102D0000D70203C7A702238607049376070499C650 +:102D10001377F7FB136707012385E7021307800387 +:102D200098AB014582809306500305456314D70292 +:102D30001307800398AB03C7A70223860704014546 +:102D40009376070481CA1377F7FB1367070123857E +:102D5000E70282808280782999476315F708032764 +:102D600045113C33A307F5045C335423A207D58FE8 +:102D70002318F5047C3374231307A003A207D58F0F +:102D800014292319F5048347E5026392E604858B31 +:102D900099CB8327050AA30505022307050293E7BC +:102DA00007042320F50A8347A50293E717002305AC +:102DB000F50285471CA91C3993E707F81CB983471E +:102DC000E50293F7F7FB2307F50201458280E2074E +:102DD000E187E3D207FE8327450A93E7070423220E +:102DE000F50AD1BF05458280782989476304F70039 +:102DF000054582808327451113070004BC33A305D2 +:102E0000F5021C2993F6B70F6396E600930750046A +:102E10001CA90DA0130750056390E7028327050A3C +:102E200093E707202320F50A85471CA91C3993E75F +:102E300007F81CB901458280130750066395E70027 +:102E40009307A006F1B713075008639BE700854777 +:102E50001CA98347A50293E717002305F502F9B7DC +:102E6000383559F7130700026386E700130730026D +:102E70006395E7009307600261BF1307A007E3991A +:102E8000E7F6930710F869B774290547AA8705453F +:102E90006391E60403A787100545418B1DCB982B52 +:102EA0006317A7001307B00498AB0145828013068F +:102EB000A0046319C70003C7A70294AB13671700E8 +:102EC0002385E70203A7870A1367070423A4E70AF9 +:102ED000E9BF828074290547AA8705456391E60208 +:102EE000942B1307A0040545639BE60003C7A702C4 +:102EF00088AB0145136717002385E7028280828033 +:102F000078298D476318F7181C398D8B89EB1429A4 +:102F10002147938706FC93F7F70F6361F702D947C0 +:102F20002306F5029307A002A305F5028327850A6D +:102F300093E727002324F50A014582803C350326C8 +:102F40004511639D0712930750056398F600D94712 +:102F50002306F50293073002C1BFB73700209387DD +:102F600087834C2203C7A70383C7B703834865142D +:102F70006D8F2305E5143032F18F0546A305F51456 +:102F8000331616016314C70023050514034875148E +:102F90008545B39505016394B700A3050514034760 +:102FA000A5148347B51455CFD1CB93752700A9C17C +:102FB00013F6270015CE930720202315F514034799 +:102FC000A5148547B39717016314F700230505146B +:102FD0000347B5148547B39707016314F700A305AA +:102FE000051485476397F608930760051CA9A9B7E0 +:102FF0001376470001CA13F34700630503009307E4 +:10300000404065BF058B19C713F7170001C7930729 +:10301000101065B7094781E5114711E205472305FF +:10302000E51413F7270009C78947A305F51441BF25 +:10303000918B99C39147D5BF8547C5BFB35707410A +:10304000858B81C72305B5149DBF9377270089C75A +:1030500089472305F514A5B7118B91477DFB85475B +:10306000CDBFB1DF33D71741058B45DFA305C514AD +:10307000B9B78327850A93E707106DBD8547639627 +:10308000F6005C22A305F51485B78327850A93E72C +:1030900007204DB50545828074290D47AA8705454F +:1030A000639EE612942B1307500505456398E612BC +:1030B000B8376315071283C6471403C7571403A60E +:1030C000471133F5E6004C2209ED6395B60028322E +:1030D0006309E500239507141307700598AB0145B4 +:1030E0008280ED8E2385D714303203C86714718F28 +:1030F0000546A385E714331606016394C6002385AD +:10310000071403C577148545B395A5006314B7006C +:10311000A385071483C6A71403C7B714C5CA41C73C +:1031200093F526009DC91376270005CA13072020B2 +:103130002395E71483C6A714054733170701639443 +:10314000E6002385071483C6B71405473317A70085 +:10315000E394E6F8A385071441B713F6460001CAC5 +:10316000937847006385080013074040D1B7858AEC +:1031700099C69376170081C61307101055BF89466C +:1031800081E5914611E285462385D7149376270081 +:1031900089C60947A385E71471BF118B19C311476D +:1031A000D5BF0547C5BF33D7A640058B01C72385CB +:1031B000B71449B713F7260009C709472385E71451 +:1031C00095BF918A1147FDFA0547CDBF25D7B35664 +:1031D0000741858AC5DEA385C714A9BF828034351F +:1031E0000547AA8705456398E606F42B154705456C +:1031F0006393E606982B930650056306D700930663 +:103200008005631AD70403C7A70283A54711136774 +:1032100017002385E702D0211147636DC700B43141 +:10322000636AD7001307F6FF1385F6FF718F758D5C +:10323000498F09C7054798AB01458280F821C831FD +:103240002385C7142207498F2396E714A385D71433 +:103250001307A005CDB782803C3599EF74290D473F +:1032600085476399E60018296316F700930710064F +:103270001CA981473E8582808547EDBF7829894713 +:103280006319F702832745111829BC332308F50277 +:1032900085476317F700930760071CA901458280E3 +:1032A0008327850A056713070780D98F2324F50A2A +:1032B000F5B70545828074290947AA870545639AB1 +:1032C000E602942B1307500701456394E60203A717 +:1032D0004711A16638332388E70203A7070A558FF1 +:1032E00023A0E70A054798AB983B136707F898BBFC +:1032F0008280828074291547AA8705456391E60C70 +:10330000942B130750080545639BE60A03A7471152 +:103310003433A388D71483064700A38DD71403063C +:103320005700238BC7147823238DE71403C7E714B2 +:1033300093754700ADC98946A387D71483A6070AAA +:10334000C1656D9BCD8E23A0D70A2387E71403C7E1 +:1033500007169376170085C29306F0076306D6001A +:10336000136727002380E71603A7070AB7060200A2 +:10337000558F23A0E70A373700200347B78301455D +:10338000A387E70203C74703A38BE714054798AB5E +:1033900003C7A702136717002385E702983B13674B +:1033A00007F898BB8280098B5DD3D5D203A7070AA3 +:1033B000C166A387A714558F23A0E70A49BF82805F +:1033C00074291547AA870545639DE60883A647111A +:1033D0000145B0321377060F49E73737002003471E +:1033E0005787718F3DCFF8221148238BE7148385CF +:1033F00056000147A38DB714130517003357E64055 +:10340000058B9378F50F0DCF23881715D822A38845 +:10341000E71403C7E714937647009DC68946A38740 +:10342000D71483A6070A41666D9BD18E23A0D70AC5 +:103430002387E71403C747030145A38BE714828062 +:103440002A87E31B05FBD9B7098B6DD7E5D505475F +:10345000A387E71403A7070AC166558F23A0E70ACD +:10346000D1BF828083270511D5C7254758B9514759 +:10347000B8A30347C51A8355E51A0356251BB8B3ED +:103480000347D51ACCB3D8A313D78500F8A30347B5 +:10349000051BF8B30347151B90B798A71357860071 +:1034A000B8A78346751409476384E602032705100D +:1034B0009316470163CE06008566938686842E8721 +:1034C00063F3B600368742074183D8B32183F8A35C +:1034D0008346651409476384E602032705109316A3 +:1034E000470163CE0600856693868684328763F340 +:1034F000C60036874207418398B72183B8A7834720 +:10350000A50293E747002305F502930700051CA9D0 +:10351000014582800545828083270511C1CB25475F +:1035200058B95547B8A30347C51A8355E51A8566A8 +:10353000B8B30347D51A938686840356251BD8A3B0 +:103540000347051BF8B30347151B98A72E8763F3A2 +:10355000B600368742074183D8B385662183F8A336 +:1035600093868684328763F3C60036874207418399 +:1035700098B72183B8A78347C507A305050299C754 +:103580008327050A93E707102320F50A8327450AB6 +:1035900013974701635807007D771307F77FF98F6B +:1035A0002322F50A85471CA90145828005458280B2 +:1035B0003C35E9EB411122C406C67829E1472A844B +:1035C0000545631DF70A1828930700046318F70AD6 +:1035D0008325441105659306A5C7D821BC31220770 +:1035E0005D8F9307A7FFC207C18363E5F608FC213F +:1035F000D431130505C8A207D58F636DF50663EBBB +:10360000E7069025F4312206558E9306301F63E3BA +:10361000C606B42503C89500A206B3E60601636B8F +:10362000D504130516003305E502139836006343ED +:10363000A80403C8B50013150801418163040800FC +:1036400063EAA702231DC4042312A406231AE40676 +:10365000231BF406231ED404DC35D8253146A207EB +:10366000D98F2313F406B9051305840697D0F91FE3 +:10367000E78060CC930770041CA80145B240224447 +:103680004101828005458280411126C206C622C4BE +:103690007829E14785446314F704832785102A8439 +:1036A0008544898B8DCF3C35639C9704EFF04FA008 +:1036B0001C28A305A40263969700930710041CA876 +:1036C00031A8130700046392E702930710041CA8B3 +:1036D0008347A40293E717002305F4028144B24014 +:1036E000224426859244410182808327040A93E77D +:1036F00027002320F40A1C3893E707F81CB8F9BF09 +:103700001C398D8B99CF9307A002A305F402BD4706 +:103710002306F4028327840A93E727002324F40A6C +:1037200075BF1C2963979700EFF08F98A305A4023B +:1037300069B7130700026390E702EFF06F97A305E4 +:10374000A402814449FD8327440A37070080D98FAA +:103750002322F40A69B713070004E392E7F89307FA +:10376000300265B7411126C206C622C43C358544E5 +:10377000ADE37829A5478544631DF7048327850FAA +:10378000A18BA1CB832545112A8421468D051305E4 +:10379000051097D0F91FE78000BA83270410B736C9 +:1037A00078089386060DDD8E8327441013E7070102 +:1037B0008327840FF58F2324F4108327C40FF98FF8 +:1037C0002326F4101C28639C9700930710031CA861 +:1037D0008144B2402244268592444101828083275D +:1037E000840A93E707012324F40ADDB7411126C2B6 +:1037F00006C622C47829A54785446316F70618290A +:103800009307000385446310F706832545112A8436 +:1038100021468D051305051097D0F91FE780A0B14B +:1038200083270410B73678089386060DDD8E83272C +:10383000441004A8A305040213E707018327840F9B +:103840008144F58F2324F4108327C40FF98F232696 +:10385000F4108327040A93E707022320F40A1C3894 +:1038600093E707F81CB8B2402244268592444101F0 +:1038700082803C3505476390E708411122C406C6A3 +:10388000742925472A840545639CE6041828631D8E +:10389000F704832544112146130504108D0597D0A4 +:1038A000F91FE78040A983270410B736780893866C +:1038B000060DDD8E8327441013E707018327840F4D +:1038C000F58F2324F4108327C40FF98F2326F410D7 +:1038D000930710031CA81C38014593E707F81CB890 +:1038E000B2402244410182808327840A93E7070182 +:1038F0002324F40ACDB70545828038358547631700 +:10390000F704411122C406C626C27829A1472A8499 +:1039100005456318F70283244411130584121546E4 +:103920009385340097D0F91FE780E0A09C34982459 +:103930000145A207D98F2317F4121C3893E727F803 +:103940001CB8B240224492444101828005458280E5 +:10395000383585476310F71474295D47639DE61277 +:10396000011126CA8324451122CC21462A8493853D +:1039700034001305751806CE97D0F91FE780A09B79 +:10398000DC24B834A207D98FA307F418A183230835 +:10399000F418EFC07EEA2AC4EFC01EEA2AC62C0043 +:1039A0001305041A214697D0F91FE780C098FC340C +:1039B000F8241305841AA2074207BA9798282C0006 +:1039C0001146BA97D8346207BA972324F40CBC384E +:1039D000B828A2074207BA97D828BA97983862073A +:1039E000BA972322F40C0347141A8347241A420778 +:1039F000A207BA970347341ABA970347041A620713 +:103A0000BA972320F40C0347541A8347641A4207D9 +:103A1000A207BA970347741ABA970347441A620772 +:103A2000BA97232EF40AA247374703001307D73F5C +:103A3000B387E70237A72600130737ECBA973EC4CF +:103A400097D0F91FE780208FFC28F838A20742079B +:103A5000BA97D838BA97982C6207BA97232EF40CE5 +:103A60000347A41A8347941A4207A207BA97034749 +:103A7000841ABA970347B41A6207BA972320F40E40 +:103A8000930710021CA8F24062448147D2443E854D +:103A90000561828085473E85828078299147631938 +:103AA000F712411126C28324451106C622C4B8303C +:103AB00001CB9307F7FFF98F81E79377070F8DC746 +:103AC00093070002A305F502930730022306F502CF +:103AD0008327850A93E727002324F50AB24022446E +:103AE0009244014541018280CC309306E007814732 +:103AF00011466397D500F947F1B7B687638CC600C6 +:103B000093861700B357F740858B93F5F60FF5D7DB +:103B10002308B514838744002A84ADC7A309F5148C +:103B2000030535143387A7001375F50F635AF000AA +:103B30008307541563DAE700898FA309F41429A0D9 +:103B400083074415E34AF7FE834734153E95620523 +:103B50006185EF20400C2301A414EF2080058347EA +:103B60003414A301A414B307F540A309F414EF20FF +:103B7000800A83470415034734142301A414A29731 +:103B8000A38DE7148307440383068415014763D597 +:103B9000F600958F13F7F70F2309E414DC3005477F +:103BA000230BF4141C286396E700930760F81CA805 +:103BB00035B7130750086396E700FD572309F4143F +:103BC000EDB78327840A0967D98F2324F40A39B70C +:103BD000054582807829A547631AF704411122C45C +:103BE00006C61429130700052A8485476394E60254 +:103BF000EFE03FDA0DE58327040AA305040293E70B +:103C000007102320F40A1C3893E707F81CB88547EF +:103C10001CA88147B24022443E85410182808347EF +:103C2000A40293E717002305F402F1BF85473E8500 +:103C300082807829A5476309F700054582800545FC +:103C4000B24022444101828083278510411122C461 +:103C500006C693F707022A84FDD3EFE09FD385477A +:103C6000E30FF5FC18286317F700930710051CA84D +:103C70000145F9B78327840A93E707082324F40A48 +:103C8000C5BF014582800545828005458280054586 +:103C900082800545828005458280054582800545F4 +:103CA00082800545828005458280054582800545E4 +:103CB000828005458280054582805C25A30A050037 +:103CC000F19B93E717005CA503250511133515003B +:103CD000828001458280411106C6EFE00F97B24015 +:103CE000133515000605410182806FF0DFFE41119A +:103CF00006C6EFE08F9505C10357C5058356A50598 +:103D000003566507835545070A25EF60702701456F +:103D1000B240410182800945E5BF011106CE22CCA7 +:103D2000EFE0AF9229C9383585472A84631AF70234 +:103D3000B737002003A70789094515CB03460403BD +:103D4000834617048358E4030358C4033E3C0E24FF +:103D50000345B4021307270432C00546EF60B020C4 +:103D60007C34A3050402014593E717007CB4F240BC +:103D70006244056182800945DDBF397106DE22DCBF +:103D800026DAEFE08F8C3DCD3C352A84A5E3B737AA +:103D9000002083A407890945ADC019468145081054 +:103DA00097C0F91FE780C05F19468145281097C06A +:103DB000F91FE780E05EC167FD178358A40383C63F +:103DC000140430340E240345B4023EC8DC2013082A +:103DD0008102138724043EC6834704033EC47E3C0D +:103DE0003EC25E3C3EC01C10EF60901C7C34A305BC +:103DF0000402014593E717007CB4F2506254D25498 +:103E0000216182800945D5BF011122CC06CE2A84CA +:103E1000EFE0AF833DC18347B502034705156083DB +:103E2000DC828347F514D8845C8495EF834735158D +:103E3000030755155C86830735145C85631CF70002 +:103E40008947DC854800EF60301A0145F240624442 +:103E500005618280030745156314F7008547D5B7D0 +:103E6000A3050100C5B7834765155C858347151514 +:103E7000DC858347B5155C86F1B70945C1BF0111E3 +:103E800022CC06CE2A84EFD05FFC21C983076515BA +:103E9000C084218040851307F007638DE702034744 +:103EA0004503998FDC858347051613F7070101C782 +:103EB0002306010031A093F7070299CB85475C8662 +:103EC0002800EF6050120145F24062440561828093 +:103ED0008947F5B7FD57DC85E1BF0945F5B74111C5 +:103EE00006C6EFD09FF611C9834505140A25EF6079 +:103EF000500F0145B240410182800945E5BF9375ED +:103F0000F50F01112E8506CE22CC2EC6EFC00F84F0 +:103F100005C12A848346C506B24528390546EF60A7 +:103F2000D00B0145A3090400F24062440561828080 +:103F30000945DDBF411106C6EF60F009B2400145F9 +:103F400041018280411106C622C4EFD01FF005C98D +:103F500083467514034665142A840E250345B5026D +:103F60008506050693F6F60F1376F60FEF607006DA +:103F70000145A3050402B240224441018280094563 +:103F8000DDBF397106DE22DC26DA4AD8EFD0FFEB3E +:103F900069C1383585472A846310F708B737002090 +:103FA00083A407890945C1C083C704041946898BC6 +:103FB000C9C3CC54BC25B5CFB105280897C0F91F9B +:103FC000E780603783C71404138924041946898B5A +:103FD000A5CBCA85081097C0F91FE780C035CC541F +:103FE00019469105281097C0F91FE780C034834710 +:103FF00004038358A40383C6140430340E240345F9 +:10400000B4023EC47E3C1308010238103EC25E3C3E +:104010003EC03C08EF6040777C34A30504020145B4 +:1040200093E717007CB4F2506254D2544259216194 +:1040300082808145280897C0F91FE780603659B70C +:104040008145081097C0F91FE78080351946CA8559 +:1040500051BF0945C9BF411106C6EFD01FDF05C1D9 +:104060000357E51B8356C51B0356251C8355051CAA +:104070000A25EF6020710145B24041018280094567 +:10408000E5BF411106C622C4EFD03FDC15C52A8426 +:104090000357C5058356A505035665078355450790 +:1040A0000A25EF60A06D1C38014593E747001CB856 +:1040B000B2402244410182800945DDBF411106C65C +:1040C000EFD0BFD805C1834705190346F5189305FE +:1040D00075180A25A2075D8EEF60006A0145B2409F +:1040E000410182800945E5BF411106C622C4EFD0D7 +:1040F000DFD505C12A84130605100E250345B50238 +:10410000EF6040670145A3050402B240224441012B +:1041100082800945DDBF411106C622C4EFD0FFD21F +:1041200005C52A840357C5058356A505035685058D +:104130000E250345B502EF60A0630145A305040207 +:10414000B2402244410182800945DDBF011113754F +:10415000F50F06CEEFB09FDF29C9B737002083A740 +:10416000079193F707209DC302C402C202C0814891 +:104170000148814701478146054681451305C00333 +:10418000EF6080600145F2400561828083469503BF +:104190001307A50302C081480148814705468145B0 +:1041A0001305C003EF60205CF1BF0945E9BFB737D5 +:1041B00000209387878303A78708094529CB83A716 +:1041C000870D011106CE93F707208DC302C402C2EA +:1041D00002C0814801488147014781460146814527 +:1041E000EF60805AF24001450561828083580702E2 +:1041F0000358A7018357070583465707014602C0A6 +:104200001307670781450945EF60E055E1BF8280EC +:10421000014582800145828001458280014582807E +:10422000014582800145828001458280014582806E +:10423000014582800145828001458280014582805E :10424000014582800145828001458280014582804E :10425000014582800145828001458280014582803E -:10426000411106C622C426C21C211307000863930D -:10427000E7021C315D4705446362F7061397270088 -:10428000B7D7060093870745BA979C432A218297A0 -:104290000144A9A01307100805446391E7041C31E9 -:1042A0004D476382E70E6362F7022147638BE7089D -:1042B00031476389E70A15476392E7022A21EFE055 -:1042C0000F982A841DE9094411A813070003638687 -:1042D000E70E636BF70069476387E70C2285B240FE -:1042E0002244924441018280130770056383E70EE4 -:1042F000138417F033348000D5B7832785118DC719 -:10430000035625040506420641829C431307160006 -:10431000420741838DE72311C40419C60E240545C5 -:10432000EF50D037231104040345A40203462405AB -:104330000E24EF5070352285EFE08F8391BF3A86CF -:10434000E9B72A21EFE0AF8F2A8435DD0346A504C3 -:104350000E250345A5023336C000EF503033230548 -:1043600004023DB72A21EFE08F8D2A8429DD03570F -:1043700005058356E5040346D5040E250345A5022D -:10438000EF501031E9BF2A21EFE06F8BAA8405DDE1 -:1043900003562504014439D20E250545EF5010304F -:1043A0002391040425BF2A21EFE06F89E30D05F076 -:1043B0000345A502EF50D02EE1BD2A21EFE02F8862 -:1043C0002A84E30205F00E250345A502EF50902D47 -:1043D00079B72A21EF50502D65BD011122CC2A84D6 -:1043E000114506CE2EC632C4EFB05EC005C1B2453F -:1043F000224622A10CA110B16244B7270020F2404E -:10440000AA8503C577F605616FB07EC2F2406244AB -:10441000114505618280411106C622C4EFE02F825A -:1044200025C983270512230D05002A84A9CB7835D9 -:10443000058B11EB0A24014693050008EFF0FFF904 -:1044400031C1014591A0D443D0278C270A25890684 -:10445000EF50B02515E183270412BA27A384070083 -:10446000136707F0BAA79C432320F4128357040470 -:1044700081C7FD172310F40483270412C5FF2310FE -:104480000404C1B785473CACB2402244410182805C -:104490000945DDBF797122D406D6BC312E8423169E -:1044A0000100DC87DC21100802C05C87DC318A85D2 -:1044B00002C2DC8602C402C802CA02CC02CEEF10DD -:1044C000604F0347F1011C200145631EF7000347BD -:1044D000E1011C3001456318F7000345D1013C2080 -:1044E0001D8D13351500B250225445618280B727C7 -:1044F000002083A7472191E382806384A700DC5FCB -:10450000DDBF411122C406C63C252A8491C793050C -:10451000C5006905EFA0DFC33C2891CB930544019A -:104520001305A4022244B24041016FA07FC2B240F1 -:10453000224441018280AA862E86AA85374506003C -:10454000130585546FB0FEECB727002013870716BC -:104550000327470B411126C206C622C493840716BF -:1045600011E7B24022449244410182806304A700D3 -:10457000585FFDB73C252A8491C79305C50069059E -:10458000EFA01FBD3C2899C7930544011305A40261 -:10459000EFA01FBC22852244CC58B2409244410176 -:1045A0006FF07FF901114AC83729002093070916D7 -:1045B00022CC03A4470B26CA4EC652C456C206CE0E -:1045C000AA84014A1309091693094500854A65E042 -:1045D000930540201305000497C0F91FE78080A6CB -:1045E0002A841D4545CCBC301946938544001305EB -:1045F00044003CB097C0F91FE780E0D5938AA4013E -:1046000041468145568597C0F91FE780A0E179E1D1 -:104610009309A401D68541464E8597C0F91FE780CE -:10462000C0DE85473CA43C309305C4004E8593E72B -:1046300027003CB4EFA0DFB19384A402414681453A -:10464000268597C0F91FE780E0DD41E99307A402C2 -:10465000A6853E854146BE8497C0F91FE780E0DA13 -:1046600085473CA83C3093054401268593E7270005 -:104670003CB8EFA0FFADA3000400832549032285C9 -:10468000EFF07FEB631E0A04232A890A232E04021B -:104690008347090B014585072308F90AF240624464 -:1046A000D2444249B249224A924A05618280383056 -:1046B000BC306305F700228A405C11BF4146CE85BD -:1046C0001305440097C0F91FE78080D1E31555FF1B -:1046D0004945E9B72305040085B72309040061BFF4 -:1046E000232E8A0265B7011126CAB72400209387BA -:1046F000041622CC03A4470B4AC806CE4EC69384A8 -:1047000004167D5901ECF240624423AA040A23886E -:10471000040A4249D244B249056182800820EFB0C0 -:104720003EE38329C40323002401228597C0F91F97 -:10473000E780809C4E84F9B7B7270020938707163F -:104740002388070A23AA070A6FA09FA901114EC652 -:1047500006CE22CC26CA4AC8EFD0BFDCAA892DC516 -:10476000EFD0FFCD2A8475C1930710113EA59307A2 -:1047700000FB7CA53729002085471CA9930789FBEE -:104780009E2B13074010130989FBA5073E85C2071E -:10479000C1836374F70013054010131705014183AB -:1047A000930700046374F7001305000442059305A2 -:1047B0007020418197C0F91FE780C0882328A4108A -:1047C00001ED0A24EFD0BFE4F24062444E85D244AA -:1047D0004249B24905618280B727002083A7472A52 -:1047E000B724002093840416232AF41083A7440CD2 -:1047F00003A7040C2285232EF40E2326F410BE3CBE -:10480000232CE40E2324E4102312F414FD577EBC61 -:104810007EB02304F4028347D4022313041493E7E5 -:1048200007FCA306F4028567938787BB2314F4046F -:10483000EFC09F9C034549012301A414EF102026DB -:10484000A301A4142394040041B78549B5BF011105 -:104850004EC6B729002052C4138A091622CC2A84D6 -:1048600003453A008345F4024AC82307A4023729C6 -:10487000002006CE26CA56C2130989FBEFC00E845B -:104880000358E9011E3C93060032930A204E330779 -:10489000F80283446901232AA40893890916335630 -:1048A000D7023377D7022326C40837460F001306F2 -:1048B00006248146B3875703B3D7A70233075703AC -:1048C000BE947E389384C417C2048507C180231127 -:1048D000940833470703B38757031AB0858FB3B5DE -:1048E0000703860433850703EF80604B8327840822 -:1048F0003E95834754032328A4082285B387570392 -:10490000BE9423109408EFC04FD82285EFC0FF89D2 -:104910004E3C22859205F915C205C181EFC02FD307 -:104920002285EFD0BFDC371500208545130565A42F -:10493000232A8A08EFB07ECEB727002083A7472717 -:10494000898B91CF8327490399CB832584093545EA -:104950008297832749038325C40939458297F2400A -:1049600062442397090023A80900D2444249B2496E -:10497000224A924A056182800357E5078946835798 -:10498000250863F3E6000947B397E7002312F5080B -:104990006FC0AE81011122CC26CA4AC806CE4EC6CF -:1049A000834745032A84372900208507230AF50217 -:1049B0003C39B7240020639807445C251439130759 -:1049C0000004BD9B93E737005CA593978601A30D78 -:1049D000050038B9E18763D8070093F6F60714B9E4 -:1049E000EFF0AFBC39A80327850A93772700B5C33A -:1049F00083270510759B2324E50A918BA1CBEFD06B -:104A0000FFF5383C8547631CF7048327841158243D -:104A1000DC4398A3832784115838DC4398B30327D9 -:104A200084118327892A5843B8DB83A70428B70653 -:104A300080009843558F98C3D857719BD8D7F240C0 -:104A40006244D2444249B24905618280EFD01FEFEF -:104A50004DBF937717008DC3799B2324E50A8327E5 -:104A60000411582498A383270411583898B3832736 -:104A7000892A032704114DBF1C298549639D3711DD -:104A80003DC79377070199C73D9B2324E50AEFE0D3 -:104A90006F8C85BF9377070281CB1377F7FD2324B3 -:104AA000E50AEFE04F9DB1BF9377070481CB137701 -:104AB000F7FB2324E50AEFD01FEFA1B79377070890 -:104AC00089CB1377F7F72324E50A2285EFE0BFCAE5 -:104AD0000DBF9377071089CB1377F7EF2324E50AEF -:104AE0002285EFD0BFF531BF2324050A8DBF832770 -:104AF000450A6380071E13F7070401CB93F7F7FB02 -:104B00002322F50AEFD05FDDEDBD13F7071001CBCF -:104B100093F7F7EF2322F50AEFE06F88DDB513F77F -:104B2000072001CB93F7F7DF2322F50AEFE0CF8BC5 -:104B3000C9BD13F7074001CB93F7F7BF2322F50A4E -:104B4000EFD0FFE37DBD13974701635B07007D77DF -:104B50001307F77FF98F2322F50AEFE05FB655B50B -:104B600013973701635A07007D777D17F98F23224A -:104B7000F50AEFD0BFE471B513971701635A070028 -:104B800071777D17F98F2322F50AEFD0BFF395BD1A -:104B90002322050AE9B56384071413078003638F92 -:104BA000E71E6369F70C13077002638DE71C6366E9 -:104BB000F70475476388E71C636BF7006D476390E4 -:104BC000E712EFD09FC7D9472309F4041DBD13078F -:104BD00010026388E71C130750026392E7108327D3 -:104BE0000510918B6383071E8D47A305F502EFD057 -:104BF000FFD61C38DD9B1CB8B9AA1307E0026389F5 -:104C0000E71C636FF7021307A002639AE70CEFD06B -:104C10007FC58347B40491CB41469305C40A13056D -:104C2000C40C97B0F91FE78000738347A4042326C0 -:104C3000040E2328040E93E717002305F404D1B3D0 -:104C400013071003E385E7E4130760036399E7089C -:104C500097C0F91FE78020B8E30505DA8547A3056B -:104C6000F4042285EFD09FC58347A404F99B230554 -:104C7000F40441BB1307B0046382E718636CF702C6 -:104C8000130710046381E70C637BF7049387B7FB7A -:104C900093F7F70F854963E4F904EFF00F91832749 -:104CA000040A230834012310040693E74700232055 -:104CB000F40A81BB13076005E384E7E26363F7024C -:104CC00013071005E383E7E0130750056399E70036 -:104CD000228597C0F91FE78000B0E30405D2228542 -:104CE00001B313078005E385E7FE1307A005E398EA -:104CF000E7FE0347A51419CB034665148547B39710 -:104D0000C7006385E70093E6060114B90347B414AE -:104D100001CF834674148547B397D7006386E700B5 -:104D20001C3893E707011CB87C2C91CB1C38C18B35 -:104D300099E78327040A93E707202320F40A2285B2 -:104D4000EFF0AF8609A88347A50285C7054763979B -:104D5000E700EFD05FF285471CA865B183270510F7 -:104D6000918BA5C3BD47A305F4022285EFD01FBFD9 -:104D7000DDB7EFF08F838327040A93E72700232012 -:104D8000F40AD1BF2285EFF04F828327040A93E70C -:104D900017002320F40A23080400A5B1EFF0EF80E8 -:104DA000DDBF83278510858B81C7EFD09FD591B953 -:104DB000E9472305F50283270510918B99C38D4799 -:104DC0005DB72285EFD09FB779B7EFD03FB715B564 -:104DD0008347A5042322050E2324050E93E727000D -:104DE0002305F504EFD0DFA91C3823050402DD9B61 -:104DF0001CB88327040A93E7070151B7EFD0BFBA65 -:104E000023083401FDBEB7270020938707169A2B8D -:104E100005079AABFDB679714ECEB729002093876E -:104E2000091622D403A4070956CA5AC85EC6B72A6F -:104E30000020372B0020B7DB060026D24AD052CC08 -:104E400006D662C4938909169384CA28372900209C -:104E5000372A0020130B8BFB938B8B3E7C2413078C -:104E6000000D639BE71E8327892A98430D8B05C39A -:104E7000B84B619BB8CB98431367870098C39C439A -:104E80008D83858B89C701000100010001008347E4 -:104E9000A404858B99C7A285054597C0F91FE780B3 -:104EA000E0608347241403260A28B706008293F79C -:104EB000F703139797015C56FD16F58FD98F5CD6D3 -:104EC00037170040930770052300F704930780FA13 -:104ED0002300F70483462414A54763FFD70E3E330F -:104EE00093E707013EB383270A280327840998C75D -:104EF0000327C409D8C38327892AD8431367170017 -:104F0000D8C31547F8B0130710FD78A4130700FCA9 -:104F10002386EA28F8537DFF8355641803568418C6 -:104F2000034574149105C205C181EF007055834596 -:104F30007414894683570408035744086395D50AB7 -:104F400006078326892A93879718BA9735673D07FE -:104F5000D8C6010001000327892A8966860714C77D -:104F6000930600F8D4A07CD3BD67BD075CC70326B9 -:104F7000892AA38204008547A38004001CC28346BB -:104F8000A4043727002083270A28858A0327472F70 -:104F9000D5C29443B705330093F6F6E794C3944320 -:104FA00093F6F6E793E6061094C31447CD8E14C724 -:104FB0009306900734CA5457F59A54D7034764139D -:104FC0009376F7079843137707F8558F98C397C0E0 -:104FD000F91FE780806259B53E33C207C183BD9B8C -:104FE000C207C18301B70326892AB566BD060545F8 -:104FF00054C606076394A502010001008326892A8E -:1050000009669387570390C6130600F8D0A0BA9795 -:105010008607FCD2BD67BD07DCC691BF0100010059 -:105020008326892A09669387970490C6130600F899 -:10503000D0A0F1BF9443B705330093F6F6E794C3CD -:10504000944393F6F6E793E6061094C31447CD8E87 -:1050500014C793069005B9BF1307100D639CE74A68 -:1050600083C7CA28858B6382074083C7CA28E207A3 -:10507000E18763DF07067C3493F707028DC31E3C8C -:105080001307204EB387E70203274409B3D7E7028B -:1050900003476B0113070705BA972311F408832709 -:1050A0000A288326C4080946984303AC04018357A1 -:1050B000240831830D8B0355EB01369C6316C71210 -:1050C00093879718B3A5A70237460F001306062447 -:1050D00081463305F502EF70904C83574408330541 -:1050E000AC402328A40885832312F408231F040658 -:1050F0008345A404032544119306040313062403E3 -:10510000858997C0F91FE78040528347240303C76E -:105110006904E8A0998F2309F402FC20858B639829 -:1051200007268347940293E72700A304F40283C76A -:10513000CA28E207E18763D307028347641313D7C2 -:10514000370093F6770022978547B397D7008346B9 -:10515000071393C7F7FFF58F2308F7127C34898B69 -:10516000DDC32285EFC0CF8959ED7C34A30904004B -:1051700093E747007CB4832784118DCB383C1DC74F -:105180009837058B05E7BA27C843136707F0BAA716 -:1051900097B0F91FE78040F6835724048507231151 -:1051A000F404832784119C43232CF4105C3881CBB6 -:1051B0008347A404898B81C72285EFC0AF881C2850 -:1051C000130720026395E7028327040A23050402DC -:1051D00093E787002320F40A1C3893E787001CB864 -:1051E000930740021CA805A093879704E1BD13070D -:1051F0000006639AE70A85471CA88347940293E751 -:105200001700A304F402FC20898BEDC38347A40498 -:10521000858BE9CF1C3C85071CBC7C3413F7270029 -:1052200015EF93E727007CB4930700F85CAC1E3CB5 -:105230001307204EB387E70203274409B3D7E702D9 -:1052400003476B0113070705BA97C207C1832311F0 -:10525000F40886072310F40823AA09082285238668 -:105260000A28EFF02FF30345641489474C3863197B -:10527000F51203458414910513652500EF00900E87 -:105280005C38638A071A8347A404898B6385071AED -:10529000A285014597C0F91FE780001A6304051035 -:1052A000EF00B03691AC130770066397E70203274F -:1052B0000A287C53ED9B7CD32385040037270240CA -:1052C0008347870493F7D70F2304F7045C2493F7ED -:1052D000F7FD5CA4854739B77147E396E7F283276A -:1052E000040A93E717002320F40A31BF2285EFB0A8 -:1052F0005FF305F5A30C04002285EFB0BFED1C3869 -:10530000A18B8DCB7C289DC77C38094793F7B70FBD -:105310006382E7029307D0032309F4049307700222 -:105320001CA88347A404858BE38907EE2285EFB090 -:105330005FF6E5B558348D476310F7047C381307E2 -:1053400080026372F7027C381D476384E7022306FC -:10535000F4028327840A228593E717002324F40AA2 -:10536000EFD0CFD339A08A07DE979C43228582975E -:1053700079F97C28DDF755B57C28E38007EA22859A -:1053800097B0F91FE7808054E31905E8DDB71C2CBE -:1053900085071CAC83D7E90085072397F900B5BDC5 -:1053A0009105E9BD03270A28B70633001C4393F78C -:1053B000F7E71CC31C4393F7F7E793E707101CC3F9 -:1053C000B727002003A7472F1C47D58F1CC783276B -:1053D000892A1307A007B8CB83270A28B7068000BD -:1053E0009843558F98C3D857719BD8D7930720FD02 -:1053F0007CA483270412E38C07BC7834058BE30874 -:1054000007BCD443D0278C270A248906EF40F02913 -:10541000E31F05BA83270412BA27136707F0BAA758 -:105420009C432320F41283570404E38207BAFD1738 -:105430002310F40469BE03270A28B70633001C436F -:1054400093F7F7E71CC31C4393F7F7E793E70710BD -:105450001CC3B727002003A7472F1C47D58F1CC7A5 -:105460008327892A1307A005BDB78327892AFC5300 -:10547000E396079E9387CA2823820700EF00F0185F -:1054800083C7CA282285E207E18763D5071CEFF0AE -:10549000AFCE83D729017A3C8507C207C183239900 -:1054A000F90039CB930640063377D70231E7372727 -:1054B000002003274727098B05CFB72400209384BA -:1054C00084FBD85815C783D509012545C205DD8D54 -:1054D0000297DC5883D5E90029458297DC5883156B -:1054E00004032D458297DC588305240331458297B8 -:1054F0002397090023A8090022852254B250925410 -:105500000259F249624AD24A424BB24B224C45619F -:105510006FC0CFD01307200DE394E7D89C30858B64 -:10552000638D07128327040AA380040013972701C1 -:10553000634A070E228597B0F91FE78080458547AB -:105540006312F50E835564180356841803457414CA -:105550009105C205C1812D278347A404372C002063 -:10556000858BBDCFA285054597C0F91FE78000F464 -:1055700003270A28B70633001C4393F7F7E71CC339 -:105580001C4393F7F7E793E707101CC303274C2F3F -:105590001C47D58F1CC78327892A13079007B8CBD0 -:1055A000930710FD0327892A7CA4B567BD075CC754 -:1055B000010001008327892A096783260A2898C7E2 -:1055C000130700F8D8A09842094631830D8B631168 -:1055D000C7041307E043F8D33D673D07D8C7C5BAF2 -:1055E00003270A28B70633001C4393F7F7E71CC3C9 -:1055F0001C4393F7F7E793E707101CC303274C2FCF -:105600001C47D58F1CC78327892A1307900541BFE4 -:10561000984231830D8B01E7130760196DBF1307A3 -:10562000E01B55BFEF00607E1C3C85C793F7070F5A -:1056300081CB9305D0032285EFC08FCA2305A40236 -:10564000B727002083A7C7FE89C7954513055008D3 -:1056500082972285EFC07F8145B58327892AFC5335 -:10566000639E07FE23820400EF00207ADDB741111C -:1056700006C6EFB0CFEBB727002037470600938769 -:1056800007161307C77423A0E70AB240375706006E -:105690001307E78423A2E70A41018280011122CC8B -:1056A000372400209307041626CA83A4C70A4AC8D1 -:1056B0004EC652C456C206CE2A8981491304041626 -:1056C000130A2500854AA1E493058020314597B04F -:1056D000F91FE7802097AA840145A9CC83471900C8 -:1056E0001946930529009CB01385240097B0F91F33 -:1056F000E78060C68327C40AB9E72326940A23A457 -:1057000004008347840A85072304F40A1DA0983007 -:10571000834719006305F700A68984446DB71946CD -:10572000D2851385240097B0F91FE78060CBE3157D -:1057300055FF0545F2406244D2444249B249224AEB -:10574000924A05618280E38C09FA23A4990045BF3F -:10575000011126CAB72400209387041622CC03A483 -:10576000C70A4AC84EC652C456C206CEAA890149C3 -:1057700093840416130A2500854A19E80145F2406E -:105780006244D2444249B249224A924A0561828027 -:10579000183083C719006305F70022890044F1BF60 -:1057A0001946D2851305240097B0F91FE78040C33E -:1057B000E31555FF1C446315090023A6F40A19A03C -:1057C0002324F900228597B0F91FE780E09283C770 -:1057D000840A0545FD172384F40A55B7411122C4F4 -:1057E000372400209307041603A5C70A06C626C25D -:1057F0001304041611E92326040A2304040AB24000 -:105800002244924441018280044597B0F91FE78009 -:10581000A08E2685C5B7B72700209387071623A635 -:10582000070A2384070A8280B727002003A7872A54 -:1058300001112AC62EC432C206CE3C4B93E707089C -:105840003CCB812BB726002083A7C62732450947CA -:1058500098C3183103482500A24522074208429701 -:10586000034805004297034835006208429798D7DD -:105870005831034865002207420842970348450013 -:1058800042970348750062084297D8D718350348F5 -:10589000A500220742084297034885004297034823 -:1058A000B5006208429798DB58350348E5002207A7 -:1058B000420842970348C5006835429762052A9717 -:1058C000D8DB9831A821220742052A9788212A97F8 -:1058D000A83162052A9798CFD831E82122074205DE -:1058E0002A97C8212A97E83162052A97D8CF983598 -:1058F000A825220742052A9788252A97A8356205F8 -:105900002A9798D3D835E825220742052A97C82533 -:10591000EC352A97E2052E97D8D3D843759BD8C388 -:10592000D84313671700D8C398431367170098C369 -:10593000124683A7C627D843058B3DEB23A007005B -:105940009C4F01451CA283A7C6279C4FA1831CB274 -:1059500083A7C6279C4FC1833CA283A7C6279C4F21 -:10596000E1833CB283A7C627D84F58A2D84F2183E2 -:1059700058B2D84F418378A2D84F618378B29853F8 -:1059800018A69853218318B69853418338A6985384 -:10599000618338B6D85358A6D853218358B6D85304 -:1059A000418378A6DC53E1837CB6F24005618280B6 -:1059B000010041B7411106C697C0F91FE780E08E8C -:1059C000B240014541018280411106C6EFF0DFE59A -:1059D000B240014541018280B727002083A70728F4 -:1059E000885B3D81620561858280372600208327A0 -:1059F0000628B7068000B72500209843938585FBCD -:105A000037150180558F98C39843B70600101305CA -:105A100085EC558F98C31307001DD8DBD829931642 -:105A20009701C98ED4D7D457370500821377F7036F -:105A30007D15E98E6607558FD8D737170040930735 -:105A400070052300F704930780FA2300F704D42994 -:105A5000A54763FED7003E3393E707013EB3032714 -:105A60000628B7070900938737081CD382803E3386 -:105A7000C207C183BD9BC207C183CDB7B727002032 -:105A800083A707289C5BC60713D5670163D6070069 -:105A9000136505C042054181420541858280930717 -:105AA000E00363EEA7041307400299476367A70466 -:105AB000694795476363A70451479147636FA702FE -:105AC00041478D47636BA702314789476367A70248 -:105AD000294785476363A70221478147636FA70072 -:105AE0001947F557636BA7001147ED576367A70088 -:105AF0000947B9576373A700D9573E8582809D47F0 -:105B0000EDBFBD57634EF5045D578D476348E5040F -:105B1000715795476344E50479579D476340E50411 -:105B2000A547635DA0020547AD476309E502094744 -:105B3000B5476305E5020D47C5476301E502114717 -:105B4000D547630DE5001547ED476309E5001947A3 -:105B50009307F0036314E500930750023E858280AB -:105B60008547EDBFB727002083A7872899CB944BA3 -:105B7000D04B9842518F98C294439C479842D98FFA -:105B80009CC237260020B72700201306C6283728D6 -:105B900000209376250003A707288328882A3C261F -:105BA000D9C2144375737D13B3F66600096EB3E66C -:105BB000C60114C3D1761383F6FF144389058D4EB5 -:105BC0008E059387E70BB3F66600631CD50311655A -:105BD000C98E14C335673D0723A6E8000100010004 -:105BE0000327882A930600F89385750D2324C7019F -:105BF00054A28605BE958605BD676CD3BD075CC7FC -:105C0000828014C335673D0723A6E8000100010028 -:105C10000327882A930600F89385A5042324C70147 -:105C200054A28E05C1BFF5761383F6FF1443058990 -:105C30009387E709B3F6660015C114C335673D07BE -:105C400023A6E800010001000327882A8966AD0524 -:105C500014C7930600F854A28A0569BF0565C98E6A -:105C600014C335673D0723A6E800010001000327A0 -:105C7000882A8966A90514C7930600F854A255B767 -:105C8000B727002083A7872889CFD44303A887009C -:105C900098423367070198C2D447DC4B9842D98FAA -:105CA0009CC23727002003484728B7270020372702 -:105CB00000209376250083A7072813781800130780 -:105CC000C728A5C2944375757D15E98E0965C98EEF -:105CD00094C3B70609009386660894D3B7263008A4 -:105CE000C516D4CBB71603009386966194CF8D6604 -:105CF0009386E68D94D7B766000193860631D4D398 -:105D0000B7A63F0063140800B7A634009386F64D8B -:105D10009E0594CB938545364CC719C2060650C7DD -:105D20008280B70609009386360894D3B7261008F8 -:105D300093861690D4CBB71603009386466294CF11 -:105D40008D669386E68B94D7B766000193860631FD -:105D5000D4D363060802B7A63F009386E62C94CB03 -:105D6000F5761388F6FF944385489505B3F606014A -:105D7000631C150194C38E059385C50371BFB726B7 -:105D800032009386062DE1BF0565C98E94C3920546 -:105D9000E5B7B72700209387C728983701EFF4337A -:105DA00009461387A6FF1377F70F6365E6000547DB -:105DB00094A798B78280B72700201387C728142795 -:105DC00021476393E604372700200347C72A411180 -:105DD00022C41384C728B727002006C69387C72C80 -:105DE000058BB033B42311CFC84301CD0C31090565 -:105DF000EF00902919C185471CB4B24022444101EB -:105E0000828081450145EDB78280372700208327B6 -:105E1000872A94438D8A85C2B44BE19AB4CB9443CC -:105E200093E6860094C39C438D83858B89C70100CC -:105E3000010001000100B727002083A607289C422B -:105E400093F7F7E793E707089CC2B727002003A65C -:105E5000472FB706CEFFFD161C46F58F1CC68327BD -:105E6000872A23A80704B727002083A7872899CB70 -:105E7000D44390479842518F98C2944BDC4B984240 -:105E8000D98F9CC2B7270020A38907288280372793 -:105E900000208327872A411106C683A8070022C451 -:105EA0003A8893F8380063810802B84B619BB8CBFD -:105EB00098431367870098C39C438D83858B89C75C -:105EC0000100010001000100B727002083A7072877 -:105ED0003724002037033300D857719B136717000E -:105EE000D8D71307C4280328882A584B1304C4287A -:105EF0002328E80698431377F7E798C39843137766 -:105F0000F7E71367071098C3372700200327472FA9 -:105F100083288700B3E86800232417019308A005AD -:105F2000232818059308000A23221807D1C14C57CB -:105F300013650504F5994CD71377F5078843137556 -:105F400005F8598D3747767188C31307971298C79C -:105F50003757550013075755D8C323010400A30131 -:105F600004002302040083274800B6850145F99BFD -:105F70002322F80091477CB097B0F91FE780E072C8 -:105F8000B727002003A7872811C7544318479C420E -:105F9000D98F9CC23C30858B81CBB727002093875B -:105FA00007169A2705079AA7B2402244410182802A -:105FB0004C57F5994CD71377F5078843137505F8B7 -:105FC000598D37C7898E88C3130767ED49B7B7273F -:105FD000002023A4A72819C9584154491C43D58F30 -:105FE0001CC3184914451C43D58F1CC38280011162 -:105FF00026CA4AC84EC6C1643709006AB70900AC50 -:1060000022CC52C406CE0544FD141309690E9389AF -:10601000E90C130A000205E49305000F4145EFA0C7 -:106020005E92B7B7006A4205938767CE5D8DF240F6 -:106030006244D2444249B249224A05618280A6851F -:106040000145EFA05E929317850013F7071033E523 -:10605000270119C333E5370181470147E145B356AD -:10606000F50085073356F500858A058A6307D60053 -:1060700005071377F70F63E4E504E39247FF8147D1 -:106080001306F003ED463357F5001377F70305CBFE -:106090006307C7028507E398D7FE135785009377F8 -:1060A000F50F1377F70FE394E7F81357050113770C -:1060B000F70FE39EE7F613578501E39AE7F6050429 -:1060C0001374F40F89BF011122CC3724002013046C -:1060D000C4287C3006CE26CA4AC84EC625476387E8 -:1060E000E70A11476384E70AB727002003A7C727F9 -:1060F000B747024093870730631AF7080922B72988 -:106100000020EF10E016EFF05F8E83A70928F576E8 -:10611000FD16984337290020B7240020758F98C3B7 -:106120009843B70633001377F7E798C3984313777C -:10613000F7E71367071098C30327492F1C47D58F2C -:106140001CC783A7842A1307D005B8CBEF10004AD9 -:10615000EF20801DEF108032EF10603A03A709286E -:106160001C4393F7F7E793E707081CC38326492FDF -:106170003707CEFF7D179C46F98F9CC683A7842ADC -:1061800023A80704EFF0FFC0A3030400F240624419 -:10619000D2444249B24905618280B7270020238258 -:1061A0000728B727002023A40728B7470240938673 -:1061B000073037270020232ED7269386072037273E -:1061C00000202324D72A37270020B7560240938780 -:1061D0000710232AD72E372700202320F728B72798 -:1061E00000209387C7280547F8B3372700200327E7 -:1061F00087FB98CF13070711D8CB6FF0DFECB727D9 -:10620000002083A7872A1307C0089306C006D8CBAF -:10621000D4CFD8D31306C003D0D7D8DBD0DFF8C390 -:10622000372700200327472AF4C7F8DB41677D178B -:1062300098C73D673D07D8C78280B727002083A64F -:10624000472FB727002083A707286387051037B794 -:1062500024001307F7E96366A7089843137707F844 -:106260001367570298C313F7150001CB93F5050385 -:1062700041476390E50E13050583D856370810FE95 -:106280007D1813672700D8D64167130707A0335638 -:10629000E5023375E5021307A00F7D8A93154601C9 -:1062A000F042337606014D8EF0C23706FCFF2A0518 -:1062B0003355E502F842718F3A053981598DE8C2AC -:1062C000372700200347C72A098B19CB9843137738 -:1062D000F707936607049843137707F8558F98C319 -:1062E0008280370725001306F7486363A6023767E5 -:1062F000DBFF130707932A971306007D3357C70266 -:106300007D1790431377F707137606F8518F99BFDF -:10631000130707496318E5009843137707F81367D5 -:10632000670289B737D725001307F777636DA70092 -:106330003767DBFF130707932A971306007D335750 -:10634000C70279177DBF9843137707F81367770261 -:1063500011BF130585C115B7D8561375F507759B81 -:10636000D8D69843137707F8598D88C391BF411148 -:10637000B727002006C6238D072CEFF01FA9014583 -:106380008145EFA08EA9B24001454101828079711B -:1063900026D2B7240020B727002003C5C42A03A7AC -:1063A000872A22D4372400204AD006D64ECE9376B0 -:1063B00015003E891304C428638706103C20858B92 -:1063C000E5C79389C42A83C5C901118501460D8992 -:1063D00023010400EFF0DF8A83C5C42A1306F00FFF -:1063E000054591858D8997B0F91FE780002CEFF066 -:1063F0001FF883A7090101468145054582973C3076 -:10640000858BD1C7084CA301040081458146130642 -:10641000F100A30701002302040097B0F91FE780F1 -:10642000C0209315850137290020E1851309C92C67 -:1064300091ED1C4C9306F00F98236309D700834716 -:1064400019006385D7006303F70089458387C42A51 -:1064500063C507001C4C988798A3B7270020938733 -:10646000C72A9C4B104C93F5F50F0945829783473B -:10647000C900898B91C7034509018545EF90FED975 -:10648000B250225492540259F249456182808327C6 -:10649000892AFC53F5F783A709012302040001466A -:1064A000814549458297E9BF7C5399F7EFF03FEC6E -:1064B000EFA0AECF9384C42A230204009C48014677 -:1064C00081454545C5B73C30858B91CFEFF03FEA1C -:1064D0009384C42AA3010400230204009C480146BB -:1064E00081450545C1B77C53F9FFEFF05FE8D9B7A7 -:1064F0000111300099451305001006CEEFA04EEEB5 -:106500000DED19469305F00F280097A0F91FE780BD -:1065100060F185476303F50219469305F00F2800E3 -:1065200097A0F91FE78060E6300099451305001039 -:10653000EFA0BE940545EFA09E8FF24005618280DA -:106540001C49E9C3411126C206C622C44AC01C2107 -:10655000AA8493F7070481C75C410945D1CF372945 -:1065600000201306000281451305C92A97A0F91FD0 -:10657000E780A0E113060002A6851305C92A97A0AB -:10658000F91FE78040DD9307C92A9C3F1304C92AFD -:1065900081E7930780021CBC3C2C99E3A1473CACEB -:1065A0003C3C99E3C5473CBC5C2C99E3ED575CACA3 -:1065B0005C3C99E3ED575CBCB72400209387C42C66 -:1065C000C8439384C42C09C597A0F91FE780C0B2C3 -:1065D0008347C92A23A20400858B91CB483C9305AD -:1065E0009004090597A0F91FE780C0A5C8C01C301A -:1065F0000145FCB41C44DCC8B24022449244024928 -:10660000410182800545828039714AD837290020AE -:106610009307C92A9C4706DE22DC26DA4ED652D4DE -:1066200056D25AD05ECE62CC66CA6AC86EC6638B3A -:106630000724372D002003270D28372B0020B68C88 -:106640001C43B72A0020B724002093F7F7E793E70D -:1066500007081CC383264B2F3707CEFF7D179C46A8 -:106660002A8C2E84F98F9CC683A78A2AB28B930921 -:10667000C92A23A807049387C42CDC27138AC42CB7 -:10668000BD4D898B6399071A03270D285C57F19B31 -:1066900093E717005CD78347CA00898B638A071A80 -:1066A00003C519008145EFF05FB983270D28370630 -:1066B000330098431377F7E798C398431377F7E7C6 -:1066C0001367071098C383264B2F9846518F98C69F -:1066D00003A78A2A9306A00534CB8346C92A13F65A -:1066E00006046301061883A549003796DBFF1306ED -:1066F0000681B29561661306066A6375B6161306BF -:10670000800C70D303A68900858A2386742D90C7D8 -:1067100003A6C900B7240020A3009A01D0C354C324 -:106720008347EA0093E727002307FA009387C428EA -:10673000C84B9384C428630A0C122300750100B16E -:106740002286E285090597A0F91FE780C0C083A7CC -:106750008A2AD848376506008145B8DBA381040042 -:106760001305E53823820400EF903EEBEFF06FE273 -:106770008D47FCB08347CA00898B9DCB03A78A2A2B -:106780007C53FDFFB727002083A70700829783274C -:106790008A001D8D8347C92A0D81A18BF1CBD84872 -:1067A000B707800062059387F72F5D8D08C3094402 -:1067B0008345C92A0145228691858D8997B0F91FA5 -:1067C000E780A0EE03274B2F01455C578583858B1F -:1067D000A1C783A74900C165938505A0938787C199 -:1067E000B3D6B702370810FE7D18B3F7B702FD8A9B -:1067F000139646017443B3F60601D18E74C3930613 -:10680000A00F3706FCFFAA07B3D7D7027443F18E57 -:10681000BA07B983D58F7CC3F2506254D25442591F -:10682000B259225A925A025BF24B624CD24C424D00 -:10683000B24D2161828097B0F91FE780E036E3FC1A -:10684000ADFE83C7A9019607C117E3E6A7FE2DBDDC -:106850008347C92A93F70704E38407E4894503A51E -:10686000490091B51306000A69BD23207501C5B51D -:10687000DC4809041374F40F80B3A2972380070047 -:1068800088B33DB7054549BFB727002083A7471FF9 -:1068900085C3054582800545B25022549254025961 -:1068A000F249624AD24A424BB24B224C4561828045 -:1068B000797126D2B72400209387C42A9C474ECEF4 -:1068C00006D622D44AD052CC56CA5AC85EC662C432 -:1068D0009389C42AE9D3372900208327892A98433A -:1068E0000D8B05C3B84B619BB8CB984313678700EA -:1068F00098C39C438D83858B89C7010001000100EB -:106900000100372400209307C42CDC27B68B328C7F -:10691000918B2E8A2A8B1304C42C99E783C5C42A31 -:1069200093F70504639B071003C519008145EFF039 -:10693000DF9003C5C42A83C5C901014611850D89AD -:10694000EFF00FB4B72A002003A7890083A70A2815 -:10695000A30184012301740198C703A7C900D8C308 -:1069600083C7C42A0327892A858B5CC35C43858B34 -:10697000A1C75C4099EB03C5D901930590040905B3 -:106980009790F91FE780006C48C05C4089D7382099 -:1069900098A35C40630A0B0A63080A0AA3804701B4 -:1069A00048405286DA85090597A0F91FE780A09A2A -:1069B0008327892A5840B8DBEFF0AFBD7C2413074A -:1069C0000004A14693E747007CA4B7270020238654 -:1069D000E7281387C7282302070074B3372700204E -:1069E000032747FE9384C72819C7082813060064A5 -:1069F000C145EF90FE918326892AA382040003A754 -:106A00000A28A380040085479CC21C433706330034 -:106A1000014593F7F7E71CC31C4393F7F7E793E7A8 -:106A200007101CC3B727002003A7472F1C47D18F8F -:106A30001CC793079005BCCA85B593F5050393E57C -:106A4000150003A54900E5B5A380070095B7797146 -:106A500022D4372400208347C42A26D206D64AD01F -:106A60004ECE52CC858BB72400206387072683C780 -:106A7000C428858B638B07229387C42883A9870149 -:106A8000B727002003A7472FA30701001389C428B5 -:106A90005C578583858BB1C39307C42ADC43C165EA -:106AA000938505A0B3D6B702370510FE7D15B3F761 -:106AB000B702FD8A139646017443E98ED18E74C3E2 -:106AC0009306A00F3706FCFFAA07B3D7D70274437B -:106AD000F18EBA07B983D58F7CC381461306F100C6 -:106AE00081454E852386042897B0F91FE780E0B3DF -:106AF000131A8501B7240020135A8A419384C42CA9 -:106B0000631F0A00BC309306F00F638AD700032787 -:106B1000890118236305D7006303F700094A830737 -:106B2000C42A63CC070A631C0A0A9C872380F900E5 -:106B3000DC24918B85C783C71900CE9798239307D0 -:106B40000008631DF700832749011307F00F98C35E -:106B50008347C42A93E787002306F42AB727002037 -:106B600083A70728B70680009843558F98C3D85746 -:106B7000719BD8D7DC400345C42A8C3311850D891D -:106B8000EFE05FFE97B0F91FE78020A7EFF0EFA7D7 -:106B9000D42493F74600E9CF832709011397860190 -:106BA0006187F1172328F90083C71900032609011B -:106BB000CE979C338E07635C07089844B306E64083 -:106BC00063FBD7049D8E13070002636CD704032771 -:106BD0000901B307F7409CC4A9A0E30B0AF4EFF046 -:106BE000CFA21304C42A032689011C480D459375BE -:106BF000FA0F8297C840B420B030630605200C31EC -:106C00000905EFF07FC8B250225492540259F2495C -:106C1000624A45618280118F3E9793060002E3F835 -:106C2000E6FA88288945EF904EDF8347C42AA18B76 -:106C30009DCBC840B030B42005C50C310905EFF03C -:106C4000BFC48347C42ADD9B2306F42A6DBF0327F4 -:106C5000090193E606F8D4A4B307F7409CC4D1B762 -:106C600081450145E9BF83C71900F917A380F900E1 -:106C7000EFF0EFEF1304C42A1C4803268901814575 -:106C80000D45829783471900858B89CB1C48A3004B -:106C900009000146814511458297B5B723020900D5 -:106CA0001C48014681455145C5BFEFF08F8EB7277F -:106CB000002003A70728B70680001C43D58F1CC3FC -:106CC000EFF0EFEAB727002083A7C7FE894585DFED -:106CD00013051008829705BF9387C4289C339384BB -:106CE000C428858B638D0718B7290020A3070100EE -:106CF00003A98401A3800400EFF06FE79387C92CF8 -:106D0000D4279389C92C93F74600638007128347E1 -:106D10001900CA979823930700086318F700834760 -:106D2000C42A93E787002306F42A9C481397860118 -:106D30006187F1179CC8834719009048CA979C3314 -:106D40008E076355070C03A78900B306E64063FD71 -:106D5000D7009D8E13070002636ED7009848B307D3 -:106D6000F74023A4F90039A0118F3E979306000243 -:106D7000E3F6E6FE03C509018945EF900ECA834795 -:106D8000C42AA18BD1CFB727002083A6872A9307D7 -:106D9000800C1307F00FFCD2DC48370633000145A6 -:106DA00098C323810400B7270020A381040003A710 -:106DB000072823820400A38204001C4393F7F7E70B -:106DC0001CC31C4393F7F7E793E707101CC3B727CF -:106DD000002003A7472F8345C42A1C4791858D892E -:106DE000D18F1CC79307A005BCCA054697B0F91FF1 -:106DF000E780A08B8347C42A83C6290003C63900D5 -:106E0000DD9B2306F42A81450145E5BB984893E6BE -:106E100006F82386D900B307F74023A4F90099BFE9 -:106E200083471900F917A300F900884C8146814572 -:106E30001306F10097A0F91FE780207F9C4C931563 -:106E400085019306F00F9823E185630AD70083C775 -:106E500039006386D7006304F70093E525008307B4 -:106E6000C42A63C6070081E59C872300F900130448 -:106E7000C42A1C48904C93F5F50F0D4531BDEFE049 -:106E80005FF1B727002003A70728B70680001C433F -:106E9000D58F1CC3EFF0AFCDB727002083A7C7FE67 -:106EA000E38307D685452DB5411122C43724002040 -:106EB0009307C42CC84306C6238707001304C42CB9 -:106EC00009C59790F91FE7802023B7270020138773 -:106ED000C7281837232204009387C72819C7942787 -:106EE00021476394E600A3840700F0338546130727 -:106EF000A6FF1377F70F63E4E60090A794B7EFE0DF -:106F0000DFF00828C145EF90AEDF01458145EF90E5 -:106F1000CEF0B240224401454101828041114AC075 -:106F20003729002006C622C426C2EFF0FFF79304DB -:106F3000C92CFC34372400201304C42A1CB0882830 -:106F4000DC48A1451309C92C1CC4EF906EDB8828CE -:106F50009145EF90EEDADC2413F7270019CF1C4897 -:106F600001468145130520028297B2402244230640 -:106F700009009244024941018280918BFDD71C484F -:106F80000146814513054002C5B779714ECEB72938 -:106F9000002006D622D426D24AD052CC56CA5AC88D -:106FA0005EC662C466C29387C92CDC27898BD5C3B1 -:106FB00037240020834CC42AB7240020356B93E784 -:106FC0009C00856B3D6C138AC92C2306F42A014969 -:106FD0009384C428B72A00203D0B938B2BF93D0CDA -:106FE00083461A0003C6C92C81450145EFF0CFE165 -:106FF000BC20858BF5D70345C42A01469305F00FC5 -:1070000011850D8923810400EFE09FC7F947010036 -:10701000FD17F5FF8345C42A1306F00F054591853A -:107020008D8997A0F91FE7804068BC30858B9DCF84 -:10703000A3810400EFF0AFB38347CA0003450A0100 -:10704000854593E707F82306FA00EF900E9D230687 -:10705000942BB250225492540259F249624AD24AB5 -:10706000424BB24B224C924C45618280EFF02FB0E4 -:1070700005091379F90FA1476315F900EFF01FEA2D -:10708000F9B783A78A2A23A667010100010083A715 -:107090008A2A096798C7130700F8D8A023A27707A0 -:1070A00023A6870183A78A2AFC539DDB0100DDBF4D -:1070B000411122C406C693F715002E84A9C33727B1 -:1070C00000201307C72C5C2793F627009DC2E20718 -:1070D000E187082B1306000563DA0700B7270020B5 -:1070E00003C6572C9307000A3306F6029145EF902A -:1070F0002EA213451400B24022444101828093F72E -:107100002500A1C3372700201307C72C5C2793F65F -:1071100047008DC6E207E187082B1306000A63DCEF -:107120000700B727002003C6572C9307000A330631 -:10713000F60213068602A145EF908E9D13452400AA -:107140005DBF93F7450091C7EFF03FE4134544005E -:107150005DB793F7850081CFB727002083C7872DC0 -:10716000918B99C3EFF09FDB1345840069B793F7C8 -:1071700005010145C9D3EF905E83B727002003C7FF -:107180003729A147631BF700B727002003C5C72D88 -:1071900013060064C145EF90AE9713450401A1BFEB -:1071A000372700201307C72C5C27A1E3B72700204F -:1071B00083A7472FB72600209386C62ADC578583EE -:1071C000858B89CFB727002003C73729C8C28D47D1 -:1071D00089456303F70085456FF02F869377F50F98 -:1071E0009CB27CB781453E85C5BF8280411106C6F1 -:1071F00022C4EFE09FFA3724002071468145130531 -:10720000C42C9790F91FE780401837750600FD578A -:107210001305050B2326F42CEF904ED21304C42C37 -:1072200008A8377506001305E5A49545EF90EEBE56 -:10723000B2402244014541018280B727002083A645 -:10724000472F056713071710D8C6514701007D1750 -:1072500075FF03A7472F23260700514701007D171D -:1072600075FF03A7472F8567938717105CC7828038 -:10727000411106C6EFF07FFCB727002083A7472FF8 -:10728000130700483703009098D7B8477D13370E8F -:107290000020337767003367C701B8C7B847B70620 -:1072A00000F9FD16758F37060004518FB8C7B8472F -:1072B0003706F9FF7D16419B13679700B8C7B8479B -:1072C000B7080080B70E0002718FB8C7B8473706FD -:1072D00000FF7D1633671701B8C7F84745757D1E57 -:1072E000619B13673700F8C7F8471377F7F8136700 -:1072F0000703F8C7EC4793F5F58F93E50530ECC726 -:10730000F847718FF8C7F84711663367D701F8C798 -:1073100003A807051307F5FF7D753378E800336888 -:10732000C80023A8070503A847057D15137808FFA3 -:107330001368C80023AA0705F04B13660608F0CBB4 -:10734000F04B698EF0CBC85F798D2167598DC8DF0E -:10735000CC5F37070040F58DB3E5D501CCDFD05FBA -:10736000B70570003376C601598ED0DFD057096754 -:107370004D8ED0D7D057F18ED4D7D45775767D1691 -:10738000F18ED98ED4D7D4573706FDFF7D16370737 -:107390000200F18ED98ED4D7945BC19A94DB945BB2 -:1073A00093F6F6F094DB945B93F6F68F94DB985BA0 -:1073B000B70600504D8F98DB985B33776700558F89 -:1073C00098DB985FB70608FFFD16758FB7061000AB -:1073D000558F98DF985FB368170123AC1703B2404D -:1073E00041018280B727002083A7472FB70600906E -:1073F000FD16F84F758FF8CFF84FB70690FFFD16C2 -:10740000758FF8CFF84FB706F9FFFD16758FF8CFD7 -:10741000B44B45771306F7FFF18E2567D98EB4CBB1 -:10742000B847B7060007558FB8C7B847B70600700A -:10743000558FB8C7B847B70607001367F700B8C736 -:10744000B847558FB8C7B8479D66718F558FB8C775 -:10745000B847B706000113670730B8C7F847136786 -:107460000770F8C7F847558FF8C7F8471377F7F84C -:10747000F8C7F84713677700F8C7828037270020DE -:107480008327472F41767D16B44BF18EB4CB9447BA -:1074900037062000D18E94C7D44793E60601D4C79F -:1074A000D447BD9AD4C70100010001000100832622 -:1074B000472F0566DC4693E70701DCC6DC42D18F27 -:1074C000DCC283A7C609A183858BE5DF010001002B -:1074D000010001008327472F416603A7C709B44B6A -:1074E000D18EB4CB9376F701B84B019B558FB8CBB7 -:1074F0009847B706E0FFFD16758F98C78280B727BB -:10750000002083A7472F41777D17B44F4166F98E3E -:10751000B4CF9447D18E94C7D44793F6F6EFD4C72F -:10752000D443758FD8C3D44793E60610D4C7D84345 -:10753000518FD8C38280AA873DC1142119470545C0 -:107540006390E6069033B423AC3337270020A30CB6 -:10755000C7E637270020230DD7E637270020230C66 -:10756000B72ECC23372700202304B72ECC33372760 -:107570000020A30CB72EF823B72700202388E72E7E -:107580003727002011CA89CAB757341293878767F3 -:107590002326F72E014582802326072EE5BF0545C9 -:1075A000828039C199471CA1B727002083C797E77C -:1075B0001CB1B727002083C7A7E73CA1B72700204D -:1075C00083C7872F3CB1B727002083C7872E5CA1D4 -:1075D000B727002083C7972F5CB1B727002083C748 -:1075E000072F7CA101458280054582805D71A2C480 -:1075F000372400208327442FA6C24EDE86C6CAC089 -:1076000052DC56DA5AD85ED662D466D26AD06ECED2 -:10761000D843FD76FD161377F7EFD8C39857B725F3 -:1076200000209385A5E7758F98D7D857B706020035 -:10763000B72400203D9BD8D79847938494E7B72977 -:107640000020558F98C7D843B7260020136707013D -:10765000D8C303A6C62E37573412130787672EC622 -:10766000E300E64CD84301791309F90F799BD8C39D -:10767000985FB166938606F033772701558F98DFC0 -:10768000D84313671700D8C397A0F91FE78060603D -:107690008327442FB24603A707091377F70398A05F -:1076A00003A7470929831377F70798A2D843B96638 -:1076B00093860670799BD8C3985F33772701558FDF -:1076C00098DFD84313671700D8C397A0F91FE78046 -:1076D000405C8327442FB726002003A707091377B0 -:1076E000F703A38CE62E03A74709B72600202983BA -:1076F0001377F7072388E62ED843B56693860630BE -:10770000799BD8C3985F33772701558F98DFD8438B -:1077100013671700D8C397A0F91FE7808057032786 -:10772000442F8327070993F7F703238CF92E832728 -:10773000470937270020A98393F7F7072304F72E7B -:1077400083C7892F94207D7E3EC422478327442F00 -:10775000130EFE0F998E03A7070A13F6F600130502 -:107760004002419B518F23A0E70A13076002338731 -:10777000E6021306700283A5070A45737D1393F58D -:10778000F5F013043002B708F1FFFD1813082002CA -:107790003347C702930E10027D4FF94FF542F14374 -:1077A0006D4D514CC944C54B3D49B949B14A2D4B6A -:1077B000354A3D8B12074D8F9305500223A0E70AEF -:1077C0003387B60283A5070AB3F5C5013347C7025D -:1077D0003D8B22074D8F23A0E70A3387A60283A59E -:1077E000070A370500F17D15B3F565003347C70279 -:1077F0003D8B32074D8F23A0E70A3387860283A58E -:10780000070A6144B3F515013347C7023D8B4207B0 -:107810004D8F23A0E70A3387060383A5070A37089D -:1078200010FF7D18B3F505013347C7023D8B5207A2 -:107830004D8F23A0E70A3387D60383A5070AB70E27 -:107840000010FD1EE98D3347C7023D8B62074D8F47 -:1078500023A0E70A139756003347C7029315C701C1 -:1078600003A7070A3377D7014D8F23A0E70A338791 -:10787000E6035D4F3347C7029375F70003A7470A36 -:10788000419B4D8F23A2E70A3387F60383A5470A5E -:10789000D94F93F5F5F03347C7023D8B12074D8F53 -:1078A00023A2E70A3387560283A5470AD542B3F5D8 -:1078B000C5013347C7023D8B22074D8F23A2E70A3C -:1078C0003387760283A5470ACD43B3F56500334776 -:1078D000C7023D8B32074D8F23A2E70A3387A603E9 -:1078E00083A5470A294DB3F515013347C7023D8BE0 -:1078F00042074D8F23A2E70A69473387E60283A533 -:10790000470AB3F505013347C7023D8B52074D8F38 -:10791000E54523A2E70A3387B60283A5470AE98D26 -:107920003347C7023D8B62074D8F23A2E70A338797 -:1079300086020D443347C7029315C70103A7470AC0 -:107940003377D7014D8FB385E60323A2E70A03A758 -:10795000870A254F419BB3C5C502BD894D8F23A41E -:10796000E70A3387F60383A5870A9D4F93F5F5F061 -:107970003347C7023D8B12074D8F23A4E70A338795 -:10798000560283A5870A9942B3F5C5013347C7025A -:107990003D8B22074D8F23A4E70A3387860383A5F7 -:1079A000870AB3F565003347C7023D8B32074D8F19 -:1079B00023A4E70A3387760283A5870A9543B3F5A4 -:1079C00015013347C7023D8B42074D8F23A4E70AB9 -:1079D0003387960283A5870AB3F505013347C702AB -:1079E0003D8B52074D8F23A4E70A3387760383A587 -:1079F000870AE98D3347C7023D8B62074D8F939508 -:107A00004600B3C5C50223A4E70A03A7870A337754 -:107A1000D701F2054D8FB385260323A4E70A03A7F8 -:107A2000C70A419BB3C5C502BD894D8F23A6E70A8E -:107A30003387360383A5C70A93F5F5F03347C702AA -:107A40003D8B12074D8FB3C5860223A6E70A03A715 -:107A5000C70A3377C701BD89A2054D8F23A6E70A60 -:107A60003387560383A5C70AB3F565003347C702BA -:107A70003D8B32074D8F23A6E70A3387660383A524 -:107A8000C70AB3F515013347C7023D8B42074D8F37 -:107A900023A6E70A3387A60383A5C70AB3F5050122 -:107AA0003347C7023D8B52074D8F23A6E70A338722 -:107AB000E60383A5C70AE98D3347C7023D8B6207FA -:107AC0004D8F93953600B3C5C50223A6E70A03A7D9 -:107AD000C70A3377D701F2054D8FB385F60323A686 -:107AE000E70A03A7070B419BB3C5C502BD894D8FAC -:107AF00023A8E70A3387560283A5070B93F5F5F011 -:107B00003347C7023D8B12074D8F23A8E70A3387FF -:107B1000760283A5070BB3F5C5013347C7023D8B3A -:107B200022074D8F23A8E70A139726003347C70281 -:107B300083A5070BB3F565003D8B32074D8FB3C5A9 -:107B4000460323A8E70A03A7070B33771701BD896C -:107B5000C2054D8F23A8E70A139716003347C702C3 -:107B600083A5070BB3F505013D8B52074D8FB3C5B8 -:107B7000C60223A8E70A03A7070B698FBD89E205A0 -:107B80004D8F23A8E70A03A7070B930580023377DD -:107B9000D70123A8E70A37270020A24C0347972FD5 -:107BA0003387EC40B34DB70283AC470B93FC0CFF1B -:107BB000334C870393FDFD00B3ECBC0123AA970B64 -:107BC00083AC470BF14D93FCFCF0137CFC00120CD2 -:107BD00033EC8C0123AA870B330C870283AC470B51 -:107BE000B3FCCC01334CBC02137CFC00220C33EC04 -:107BF0008C01B34CA70323AA870B03AC470B337C40 -:107C00006C0093FCFC00B20C336C9C0123AA870B24 -:107C1000214C334C870383AC470BB3FC1C01137C12 -:107C2000FC00420C33EC8C0123AA870B330C570267 -:107C300083AC470BB3FC0C01334CBC02137CFC003F -:107C4000520C33EC8C0123AA870B330CF70383AC63 -:107C5000470BB3FCAC00334CBC02137CFC00620C41 -:107C600033EC8C01B34C770223AA870B03AC470B90 -:107C7000337CDC01F20C336C9C01B30CE70323AAC8 -:107C8000870B03AC870B137C0CFFB3CCBC02330B0C -:107C9000670393FCFC00336C9C0123AC870B114CF5 -:107CA00083AC870B93FCFCF0334C8703B30A570378 -:107CB000137CFC00120C33EC8C0123AC870B03AC5F -:107CC000870BF54C337CCC01334BBB02330A4703A3 -:107CD000137BFB00220B336B6C0123AC670B03ABF4 -:107CE000870B4D4C337B6B00B3CABA02B309370321 -:107CF00093FAFA00B20AB36A5B0123AC570B83AA6A -:107D0000870B594BB3FA1A01334ABA0233092703D6 -:107D1000137AFA00420A33EA4A0123AC470B03AA5A -:107D2000870BDD4A337A0A01B3C9B9023349B90274 -:107D300093F9F900D209B3693A0123AC370B83A94F -:107D4000870B614AB3F9A900B30B77031379F900E4 -:107D5000620933E929019319470023AC270B03A9D2 -:107D6000870B3379D901B3C9B902B3049702F20979 -:107D70003369390123AC270B03A9C70BE5491379F4 -:107D800009FFB3CBBB02B3C4B40293FBFB00B36BDC -:107D9000790123AE770B03A9C70BD54B1379F9F003 -:107DA000BD889204B364990023AE970AB304870395 -:107DB00003A9C70B794C3379C901B3C4B402BD8898 -:107DC000A204B364990023AE970A8944B34497028E -:107DD00003A9C70B33796900BD88B204B364990065 -:107DE00023AE970AB304770303A9C70BFD4B33797E -:107DF0001901B3C4B402BD88C204B364990023AEB0 -:107E0000970AB304670303A9C70B130B1002337956 -:107E10000901B3C4B402BD88D204B364990023AE8F -:107E2000970AB304570303A9C70B930A20023379B7 -:107E3000A900B3C4B402BD88E204B364990023AEC0 -:107E4000970AB304470303A9C70B130A3002337917 -:107E5000D901B3C4B402F204B364990023AE970A03 -:107E6000B304370303A9070C93094002137909FFF0 -:107E7000B3C4B402BD88B3649900694923A0970CC8 -:107E8000B304270303A9070C1379F9F0B3C4B402B0 -:107E9000BD889204B364990023A0970CED44B30409 -:107EA000970203A9070C3379C901B3C4B402BD8892 -:107EB000A204B364990023A0970CB304B70303A9E9 -:107EC000070C33796900B3C4B402BD88B204B3644B -:107ED000990023A0970CB304970303A9070C3379E7 -:107EE0001901B3C4B402BD88C204B364990023A0CD -:107EF000970CB304870303A9070C33790901B3C4B2 -:107F0000B402BD88D204B364990023A0970CB304D3 -:107F1000770303A9070C3379A900B3C4B402BD8861 -:107F2000E204B364990023A0970C93145700B3C4E0 -:107F3000B4021399C40183A4070C3306C702B3F437 -:107F4000D401B3E4240123A0970C03A9470C1379AF -:107F500009FFB3046703B3C4B402BD88B3649900D6 -:107F600023A2970CB304570303A9470C1379F9F024 -:107F7000B3C4B402BD889204B364990023A2970CE1 -:107F8000B304470303A9470C3379C901B3C4B4024E -:107F9000BD88A204B364990023A2970CB3043703ED -:107FA00003A9470C33796900B3C4B402BD88B20495 -:107FB000B36499001309500223A2970CB30427035A -:107FC00003A9470C33791901B3C4B402BD88C204B4 -:107FD000B364990023A2970C93046002B304970240 -:107FE00003A9470C33790901B3C4B4023346B6027E -:107FF000BD88D204B364990023A2970C83A4470CD4 -:10800000E98C3D8A6206458E23A2C70C03A6470C65 -:108010009314C7013376D601458E23A2C70C1306ED -:1080200090023306C70283A4870CC1983346B60278 -:108030003D8A458E23A4C70C1306A0023306C7024F -:10804000B345B60203A6870C1376F6F0BD899205F8 -:10805000D18D23A4B70C372600208345862E3726E2 -:1080600000200346062F03A9870C3386C540B304BE -:10807000A6033379C901B3C4E40293E48400BD8844 -:10808000A204B364990023A4970CB304E60303A9E4 -:10809000870C33796900B3C4E40293E48400BD889B -:1080A000B204B364990023A4970C93143600B3C4AC -:1080B000E40203A9870C3379190193E48400BD8895 -:1080C000C204B364990023A4970CB304F60303A974 -:1080D000870C33790901B3C4E40293E48400BD88BA -:1080E000D204B364990023A4970CB304560203A9E5 -:1080F000870C3379A900B3C4E40293E48400BD88FB -:10810000E204B364990023A4970CB304760203A994 -:10811000870C3379D901B3C4E40293E48400F204F8 -:10812000B364990023A4970C93142600B3C4E4020B -:1081300003A9C70C137909FF93E48400BD88B364D5 -:10814000990023A6970CB304860203A9C70C1379E0 -:10815000F9F0B3C4E40293E48400BD889204B364EC -:10816000990023A6970C93141600B3C4E40203A944 -:10817000C70C3379C9013347E60293E48400BD8814 -:10818000A204B364990023A6970C03A6C70C337608 -:108190006600136787003D8B3207518F23A6E70CDB -:1081A00003A7C70C3377170123A6E70C3247182320 -:1081B0000D8F3346D70293F5F507E2053D8A9314F8 -:1081C000460103A6C70C3304870233760601458EA9 -:1081D00023A6C70C1316170083A4C70CE98C3346DB -:1081E000D6023D8A6206458E23A6C70C03A6C70C9D -:1081F0003344D402B37ED60113162700B3037702AB -:10820000720433E48E0023A6870C3346D602B302F1 -:108210005702937EF60003A6070D419A3366D601F6 -:1082200023A8C70C03A6070DB3C3D3021376F6F039 -:10823000B3C2D20293F3F3009203B363760023A890 -:10824000770C03A6070D337EC601B30FF70393F235 -:10825000F200A202B3625E0023A8570C03A6070D2A -:108260003373660013163700B3CFDF02330FE70313 -:1082700093FFFF00B20FB36FF30123A8F70D03A321 -:10828000070DB37813013346D602330DA7033D8A99 -:10829000420633E6C80023A8C70C03A6070D3378AF -:1082A0000601334FDF02B346DD02137FFF00520F9A -:1082B000336FE80123A8E70D03A7070D798DBD8A69 -:1082C000E206C98E23A8D70CD84385663D9BD8C348 -:1082D000D843799BD8C39857558F98D7D8571367E9 -:1082E0000701D8D722479376F703985F137707FCE7 -:1082F000558F98DF985FB7060081FD16758FD98D71 -:108300008CDFB640264496440649F259625AD25A46 -:10831000425BB25B225C925C025DF24D61618280E5 -:1083200023A6062E6FF0CFC1B727002003A7472F43 -:108330005C4393E707105CC38280411106C6EF00DF -:10834000807193056040EF103035B2400145410126 -:1083500082806F00607511C589C501C61E22014566 -:108360008DE301110565C9471306F100130555C3D7 -:10837000854506CEDC87EF10F031F2408887056135 -:108380008280828001111305910006CEEF004074B7 -:1083900048840565300025059D45EF10B02FF2405B -:1083A00008840561828001119305F10006CE22CC7C -:1083B0002A84EF00007448860565C086700021801D -:1083C0001305554091454087EF10D02CF240624490 -:1083D00008860561828001111305D10006CEEF00E9 -:1083E000407348860965700009059145EF10902A91 -:1083F000F240088605618280011106CEEF0000730D -:10840000C88709651306F10015058545EF1090280A -:10841000F240888705618280011106CEEF00607B03 -:10842000C88709651306F10029058545EF109026D8 -:10843000F240888705618280011106CEEF001008A6 -:10844000C88709651306F10039058545EF109024AA -:10845000F240014505618280011106CEEF00304BEC -:10846000C88709651306F10041058545EF10902284 -:10847000F240888705618280011106CEEF00B024AA -:10848000C88709651306F10045058545EF10902062 -:10849000F240888705618280411106C622C4EF0040 -:1084A000102A8965CD052A84EF10101F2285B2405D -:1084B000224441018280011106CEEF00104AC88794 -:1084C00009651306F10051058545EF10B01CF24017 -:1084D00088870561828001111305510006CEEF00E7 -:1084E000104E4882096550006105A545EF10901AAD -:1084F000F240014505618280411106C6EF00704FD0 -:108500008965E505EF105019B240014541018280AF -:10851000011106CE22CC2A84EF00105F488609653F -:10852000C0867000218069058D454087EF10901648 -:10853000F2406244014505618280011106CE22CCE1 -:108540002A84EF00306B48860965C0867000218060 -:108550006D058D454087EF10F013F24062440145F0 -:1085600005618280011106CE22CC2A84912F488693 -:108570000965C08670002180130505028D4540877E -:10858000EF105011F24062440145056182800111F3 -:1085900006CE22CC2A84EF00F00548860965C08605 -:1085A00070002180130515028D454087EF10900E55 -:1085B000F2406244014505618280011106CE22CC61 -:1085C0002A84EF00F00648860965C0867000218085 -:1085D000130525028D454087EF10D00BF240624411 -:1085E000014505618280011106CEEF00F064C88765 -:1085F00009651306F100130575028545EF10900912 -:10860000F240888705618280011106CEEF00506D2F -:10861000C88709651306F100130595028545EF101B -:108620007007F240888705618280011106CEEF0055 -:10863000506FC88709651306F1001305D5028545FB -:10864000EF105005F240888705618280011106CE47 -:10865000EF00F071C88709651306F1001305E50204 -:108660008545EF103003F240888705618280011153 -:1086700006CEEF005074C88709651306F100130594 -:1086800015038545EF101001F2408887056182804F -:10869000411106C622C4EF00107689659385250333 -:1086A0002A84EF10607F2285B240224441018280FB -:1086B00039711303D1021ACE0343810506DE1ACCA9 -:1086C000034341051ACA034301051AC80343C10401 -:1086D0001AC6034381041AC4030341041AC20343A4 -:1086E00001041AC0EF0090782306A10209657010FA -:1086F000130565038945EF10E079F2500345C10287 -:1087000021618280011106CEEF10E021C887096542 -:108710001306F100130575038545EF10A077F240AD -:10872000888705618280011106CEEF10C033C887AB -:1087300009651306F100130585038545EF10807563 -:10874000F240888705618280011106CEEF10E04873 -:10875000C88709651306F100130595038545EF10D9 -:108760006073F24088870561828037270020930775 -:108770000716BE271307071681E79307F01F3EA7CA -:108780003E272146014593F607108607C207B3D658 -:10879000C640C183558D93D5574093D69740AD8E33 -:1087A000858A7D161375F50FD58F71FE3EA78280E1 -:1087B0003727002093070716DE271307071689E7D8 -:1087C000E17793C7F7FF5EA75E27394601459168B9 -:1087D0009945B3F617018607C207B3D6C640C183D1 -:1087E000558D93D6E74013D8F700858AB3C60601A6 -:1087F0007D161375F50FD58FE31DB6FC5EA782803D -:10880000011126CA4AC84EC656C2B727002006CE56 -:1088100022CC52C45AC0AE893289B68A83A4072AB0 -:1088200035C9AD472A8463EEA7021304F5FF13741C -:10883000F40F631D0906268A338B990063124B07D8 -:108840001379F9009386FAFF228523802401A380FF -:10885000340193F6F60F4E868545EFD04FE3014580 -:1088600005A0B147630BF5029307600263E5A7001B -:108870001304E5FF6DBF930770024945E30BF4FA5B -:10888000F2406244D2444249B249224A924A024BDF -:10889000056182801304500269BF1304600251BF56 -:1088A000EFF0BFEC2301AA00050A49BF8547631C0E -:1088B000F9004E869305000F138524009780F91F59 -:1088C000E780A0ACB5BF89476316F9004E869305D3 -:1088D000A00ADDB78D47631DF900268A338B990006 -:1088E000E3004BF7EFF0DFEC2301AA00050ACDBF50 -:1088F00091476316F9004E869305F00F75BF9547B3 -:108900006315F9004E86814545BF99476315F90007 -:108910004E86BD4555B79D474945E313F9F64E864A -:108920009305500551BF9307F00363E6A708B727E7 -:10893000002083A50728B7260020138686FB48AAB7 -:10894000DC55370700827D171375F503F98F66052F -:108950005D8DC8D537170040930770052300F704D5 -:10896000930780FA2300F704502AA547938686FBD5 -:1089700063FCC7023E3393E707013EB3B7270020ED -:1089800003A6472F01457C4AA183898B95C7DC2A22 -:10899000F1769386F60F93F7F703139787001C4A37 -:1089A000F58FD98F1CCA82803E33C207C183BD9B1D -:1089B000C207C183D9B749458280AA8759C52D47C7 -:1089C0006365A7069307F5FF93F7F70F3727002096 -:1089D0000327472FB70600C1FD16084B93F7F7038F -:1089E000E207758DC98F1CCBB727002083C7C7FC52 -:1089F00071761306F60F93F7F703939687001C4BD7 -:108A00000145F18FD58F1CCB7C4FB706F9FFFD16C2 -:108A100093E747007CCF1C4BF58FB7060200D58F3C -:108A20001CCB9386864F14C7828031476302E502D0 -:108A3000130760026365A7009307E5FF71B713078B -:108A400070024945E384E7F8828093075002BDBF76 -:108A500093076002A5BF011106CE9317450163D2AB -:108A60000702EF800FB4894709C914211147B147A4 -:108A70006395E60095471CA1C947F2403E85056114 -:108A800082802EC6EF90BF9BC94765D93825418BA0 -:108A90006DD7B2453C352309B50489E7E9471CA9E0 -:108AA0008147E1BFED47E5BF011106CE22CC2EC6BE -:108AB000EF90FF9801CDB2452A84EF906F82230595 -:108AC000A4020145F2406244056182804945DDBF50 -:108AD000B7270020938707160147994683C5070DDE -:108AE0003306E50005070CA28507E319D7FE01450B -:108AF0008280011106CE2EC6EF907F9409C98307AC -:108B00002503B24501459CA1F240056182800945DB -:108B1000E5BFB7270020938787FB9A2B18A19A2BD4 -:108B2000218318B1FC373CA10145828019E14945F8 -:108B30008280B7270020138707167847411122C487 -:108B400006C62A849387071601C71827314531EBDB -:108B5000B85B01C77833314529E703A7070801C788 -:108B6000783331451DEF3725002005471946A2858A -:108B700013056523B8A39770F91FE780C07D5C30AB -:108B80001307000C93F7070C6391E70237250020C9 -:108B90001946A2851305C5239770F91FE780A07BAE -:108BA0000145B24022444101828081EB37250020FB -:108BB0001946A28513052524C5B7130700044945A6 -:108BC000E391E7FE372500201946A2851305852489 -:108BD000E1B7411126C2B72400209387041622C4AE -:108BE000E04706C69384041611C43C481397470017 -:108BF0006342070CFC4C99E74945B2402244924439 -:108C00004101828001ED1305000FEF702FFC6DD53F -:108C10001C25FDD3EF703F9D0145C5B70547E31DFA -:108C2000E5FC1DE8014582972A8459C5856793872D -:108C300007805EAD930700703EA5B72500208D47E5 -:108C40005CA9A3080502194693850523130525038E -:108C50009770F91FE780207018248547E30EF7F816 -:108C60003C24B98B85C3382485476317F7028947AD -:108C70005EAC224403A30406B24092441305000FE5 -:108C800041010283EF80CFE4B727002083C7D7FCE0 -:108C90008D8BE31AF5FC8DB75E2C11676374F700BA -:108CA0005AACC1BF930600023E87E3FBD7FE130711 -:108CB0000002FDB7314591B71D4581B7314582802E -:108CC000011126CA4AC84EC652C456C25AC02E897D -:108CD000368BBA89BE8A06CE22CCB284428AEF9005 -:108CE0000FF61307A9FF4207856741839386A7C73D -:108CF00063E0E610938707C82A84494563E2970A30 -:108D000063E0240B1307301F636C670963EA3709BC -:108D100093071B00B387970213973900860763D127 -:108D2000E7083DCC1C3813F7470035C3ED9B1CB852 -:108D30003C3423192407231A9406DDE30357640601 -:108D4000C167FD176308F706631699061E3C231AD0 -:108D5000E404231BF404B727002083D7C71F8D46E4 -:108D6000114763E5F600850713F7F70FA309E4043D -:108D70002285EF80AFD77E3CA907231EF40483270A -:108D8000440A93E717002322F40AC5475CBC231B5F -:108D90005407231C4407231C6405231D3405014587 -:108DA000F2406244D2444249B249224A924A024BBA -:108DB000056182808357240691C7B3D4F402B38738 -:108DC000970241BFB305990085814A85EF70BEB90E -:108DD000231BA404930564052685EF604F89A5BF76 -:108DE0008327840A93E707022324F40AC14779BF43 -:108DF00049457DB701112EC606CEEF904FE4B2452E -:108E000009E54945F240056182801C392305B50218 -:108E100013F747007DD7ED9B1CB9BD47A305F502AD -:108E20008327850A93E727002324F50A0145D9BF44 -:108E3000011106CE2EC632C4EF906FE003278510D5 -:108E4000137707023DCFB2459306000EAA8713871A -:108E500055FE42074183494563E2E6062246116713 -:108E600013078714930686EBC206C1826368D70492 -:108E700003D7A71801456303B704372700209306DB -:108E80000716B636A38DB706239EC70693F5F50FD2 -:108E90001307071663F3D500AE865A37239DD716FE -:108EA0006373E6003287239EE71603A7470A8566A9 -:108EB00093860680558F23A2E70A0145F24005619B -:108EC00082804545E5BFB7270020138707167847FE -:108ED0009387071611C7142781C61437494785EAB7 -:108EE000B85B19C7743389C654274947858A85E218 -:108EF00003A7070811C7743381C65437494781EA6D -:108F000003C7870A83C7970A6365F7001D473A8539 -:108F100082800111C88419461305A10006CE9770FE -:108F2000F91FE78040432800EFC04FF785471D47F2 -:108F30006313F5000147F2403A850561828079713B -:108F400026D24AD04ECE06D622D42E89B28936C633 -:108F50003AC43EC242C0EF908FCEC94455C5930576 -:108F6000A9FFC20505662A84C1811305A6C7C944A5 -:108F7000636CB508130606C86368360963E62909F9 -:108F8000B2469305301F63E1D5082247636EE606BB -:108F90001386160033062603931537006356B6066C -:108FA0001038B144058A2DE20326440A13761620B0 -:108FB00021EE92470248231DE4043834231BF406B3 -:108FC00023192407231A3407231C0407231CD40461 -:108FD0005C3C814449EF8DEB83270410898B8DCF56 -:108FE00031469305F00F130564069770F91FE7806B -:108FF000C0398327440A2313040693E7072023225A -:10900000F40AC9475CBC8144B250225426850259F7 -:109010009254F2494561828063083905B38529017C -:1090200085814A85EF703E94231BA4049305640553 -:109030004E85EF50DFE3B727002083D7C71F8D464B -:10904000114763E5F600850713F7F70FA309E4045A -:109050002285EF80AFA97E3CA907231EF404832755 -:10906000440A93E7170061BF231B2405E9B7C9FF32 -:1090700083278410898B8DC731469305F00F130524 -:1090800064069770F91FE78040308327440A231352 -:10909000040693E707202322F40ACD475CBCADB752 -:1090A000E9449DB73727002093070716FC471307AD -:1090B000071691C7942781C69437C947B9E63C5B28 -:1090C00099C7F43389C6D427C947858A9DEE83277B -:1090D000070891C7F83301C7D837C9471DE7011101 -:1090E000C88419461305A10006CE9770F91FE780C2 -:1090F00080262800EFC0CFE50547B1476313E500A0 -:109100008147F2403E85056182803E858280B72797 -:1091100000201387071678479387071611C714276F -:1091200081C6183749450DEBB85B19C7743389C63A -:1091300058274945058B0DE383A7070891C7F833E6 -:1091400001C7DC37494589EB411106C6EFC00FE97D -:10915000B240014541018280828025C1411122C473 -:1091600026C206C6B727002083A4871E5C212A8456 -:10917000FD8B5CA18DE037250020A2851305E52439 -:1091800015469770F91FE780001DB24022449244B3 -:10919000014541018280BC3499EF83A7440A1546FA -:1091A000A28593E7270023A2F40A138584129770FF -:1091B000F91FE780401A844075BF494582804111FC -:1091C00022C426C24AC006C62A890144A144930586 -:1091D000F00F0545EF70EEF6B307890088A305048C -:1091E000E31794FEB24022449244024901454101F2 -:1091F0008280011122CC4AC806CE26CA2EC63289E8 -:109200003684EF90CFA37DCD3C35AA84B245094585 -:10921000D9EB2146138514159770F91FE780A01329 -:10922000A38C241513598900238D24157C245034D4 -:109230006C345424A207420603C5A404B297AE9727 -:10924000E20603A7440AB6972DC523A6F40A3C24D8 -:10925000143413670702A207C206B6973434B697D0 -:109260001424E206B69723A8F40A7C205430A207FF -:10927000C206B6977430B6975420E206B69723AA72 -:10928000F40A3C201430A207C206B6973430B697D1 -:109290001420E206B69723ACF40A8547A385F404AC -:1092A00023A2E40A0145F2406244D24442490561E6 -:1092B000828023A6F40C3C24143413678700A20791 -:1092C000C206B6973434B6971424E206B69723A89C -:1092D000F40C7C205430A207C206B6977430B697BF -:1092E0005420E206B69723AAF40C3C201430A207BF -:1092F000C206B6973430B6971420E206B69723AC70 -:10930000F40C79BF094545B7011106CE2EC6EF9082 -:109310000F9379CD34350547AA87B2450545639F3C -:10932000E606942B1307400201456399E606F825EB -:10933000D4352207C2063697F4353697D425E2068F -:10934000369783C6B704B1CE23A6E70AB82594356D -:109350002207C2063697B43536979425E20636972B -:1093600023A8E70AF821D4312207C2063697F43140 -:109370003697D421E206369723AAE70AB82194311A -:109380002207C2063697B43136979421E206369703 -:1093900023ACE70A1307A00298AB0145F240056130 -:1093A000828023A6E70CB82594352207C20636979B -:1093B000B43536979425E206369723A8E70CF821B2 -:1093C000D4312207C2063697F4313697D421E2060B -:1093D000369723AAE70CB82194312207C2063697A4 -:1093E000B43136979421E206369723ACE70C5DB78B -:1093F00005456DB7411106C6EF906F8405CD343534 -:109400000547AA8709456394E602942B1307400297 -:10941000639FE60013076030BAB71307500298AB9A -:1094200003C79702014513671700A384E702B24000 -:10943000410182800945E5BFB72700202A871385AF -:109440000716034815009387071663080802684546 -:1094500011C503488500314563130808A85B11C591 -:10946000034875003145631C080603A5070811C5AC -:109470000348750031456314080683C8070B03C809 -:10948000170B1D4563FD080583A7070C494593F796 -:109490000704B1C75D71A6C22800B284194686C60A -:1094A000A2C4D88336849770F91FE780C0EAA685E6 -:1094B0001305E10241469770F91FE780C0E9A285D4 -:1094C0001305E10141469770F91FE780C0E84800A5 -:1094D000EFB04F8DB6402644964461618280828011 -:1094E000B72700201387071614339DC27847938748 -:1094F000071601C71827494505E7B85B01C7783348 -:10950000494519EF83A7070881C7FC33494589EB13 -:10951000411106C6EFB02F9DB24001454101828046 -:109520008280B72700201387071614339387071606 -:109530008DC2784701C7142749478DE6B85B01C73C -:109540007433494785E203A7070801C774334947C5 -:1095500091EA88B303A7870C01C91367076023A4A6 -:10956000E70C01473A8582801377F79FCDBF130739 -:1095700000643305E502B7270020411193860716E2 -:1095800022C403A4460B26C24AC006C6938407160B -:10959000C8DA1309F00F01E8B240224492440249AC -:1095A000014541018280082063052501CC58EF6008 -:1095B0001ECC405CCDB7B727002013870716A30C3D -:1095C000A702137715009387071611EB03C7C7038C -:1095D0006D8F6304B70049458280238DE7021377BE -:1095E0002500014501EB03C7D703718FE315C7FEC3 -:1095F000A38DC7028280011106CE2EC632C436C2A8 -:109600003AC0EF80DFE32DC1B2450247924693F79F -:10961000150099EB22469D4763F6C7004545F24089 -:10962000056182802302C514898991E59D47E3E79E -:10963000D7FEA302D51401CFB727002083D7271A5E -:109640007D8F0D8B8547631EF7002314E514854736 -:109650007CAD8327450A0567D98F2322F50A01458A -:109660007DBF23140514E5B7494555BF5D716ECE26 -:10967000B72D002013830D160323C304CAC05AD884 -:1096800062D486C6A2C4A6C24EDE52DC56DA5ED6CC -:1096900066D26AD0030C4105034B810503490106DC -:1096A000938D0D1663090300032E03053143131434 -:1096B0005E00634D04000D4E49436369FE0093FC58 -:1096C000050163850C02054E6307CB07B6402644AF -:1096D00096440649F259625AD25A425BB25B225C06 -:1096E000925C025DF24D1A856161828093FE3500C5 -:1096F0004943E38DCEFD93FE8500E3990EFC631391 -:10970000CB0303CECD033143137E4E00E3000EFCAA -:109710006303690309436310690203CECD03137E1B -:109720002E0039A0E318C9FF03CECD03137E4E00EF -:109730003143E30D0EF8C68A42C63EC4BA8B368A60 -:10974000328DAE84AA89EF607FC82A8411E983A78D -:10975000CD05054582972A841D432DD92302350165 -:1097600093070002631FFA008D476318F9040E2C5B -:109770009307900F13035004E3EAB7F42E2CE3E7AA -:10978000B7F493F5F40F230EB40463820C12BD8872 -:109790009547639BF402930710F83CA44543E367A5 -:1097A000AAF3FD474543E3F3A7F39167E3E047F3EB -:1097B0003306AA01058252AC39A88547E313F9FCA8 -:1097C0000E2C9307D02E7DB7B5476398F40C8547D0 -:1097D0003CA489475EACA3057401639C0B108547CC -:1097E0005CA893F5050281E5A247A308F402194697 -:1097F000814556859770F91FE780C0C2631A05102E -:109800008547230CF402B2471946D685A30CF4020F -:109810001305A4039770F91FE780E0B383470105A0 -:109820001CB49307F0076318FC0EB727002083C70A -:10983000C7FC36571CA303051401EFC08FAC2302ED -:10984000A406EFC0CFA5B65708B80D4788A389472F -:109850006303EB0081472300F4068347C105A3009F -:10986000F4068347C405C18B91EB7D191379F90F79 -:1098700089474943E3EC27E5A30F240583474106C5 -:10988000370700080143A30EF40483478106A301B0 -:10989000F4063C48D98F3CC815BD89476394F40051 -:1098A0009947E5BDE38B04EE23050400C5BD9D4744 -:1098B0003CA413F5150093F7450011C9114591C358 -:1098C0000545A30DA4048547230DF404C1BD13F57C -:1098D000250001C9094591C31545A30DA404894775 -:1098E000E5B70D4591C31945A30DA404230D040448 -:1098F00075B5230A040081470D46B3D6FB40858A1F -:1099000081C65428850654A88507E398C7FED1BDB3 -:10991000230C040221B7994763C58701A30884017A -:1099200019BF1CB809BF01114EC6B7290020938783 -:109930000916FC4706CE22CC26CA4AC852C49389CF -:10994000091691C7BC4B13965700634E06003A8A1E -:10995000B6842E89EF609FA72A8419ED83A7C904D6 -:109960001305200491C33145F2406244D244424978 -:10997000B249224A05618280342585470145BD8A66 -:10998000E384F6FE8346C405C18AA5C68D476304F9 -:10999000F9004945D1BFFD47E3ED97FE231C0400C4 -:1099A0008D476310F90AD1C41E2C03D7E9061D4563 -:1099B000B3869700E34AD7FA182405C7562C130735 -:1099C00000026390E6028346F4050D476397E608BC -:1099D0009306900F13055004E3E8F6F83E2CE3E5F8 -:1099E000F6F88D471D45E311F9F82322440306AC30 -:1099F0001DA01377D90FE303F7FA11476313E904A6 -:109A0000384893167700E3C606F81824E313F7F8EE -:109A10001E2CC1D3BDFC9305800C0545EF607EF282 -:109A20008357640612058507BD8BC98F2313F4067F -:109A300039A03C48370700FF7D17F98F3CC8014526 -:109A400025B79307D9FF93F7F70F8546E3FEF6F4A2 -:109A5000A9D01C24E39AD7F439B70547E393E6F875 -:109A60009306D02E85BF01114EC6B72900209387DB -:109A70000916FC4706CE22CC26CA4AC852C493898E -:109A8000091691C7BC4B13965700634E06003A8ADD -:109A9000B6842E89EF609F932A8419ED83A7C904A9 -:109AA0001305200491C33145F2406244D244424937 -:109AB000B249224A056182803825854701453D8BA0 -:109AC000E304F7FE0347C405418B49CF8D47630488 -:109AD000F9004945D1BFFD47E3ED97FE231D040082 -:109AE0008D476319F90CDDCC3E2C03D7E9061D45E3 -:109AF000B3869700E34AD7FA182405C7562C1307F4 -:109B000000026390E6020347F4058D466310D70C0C -:109B1000162C1307900F13055004E367D7F8E3657D -:109B2000F7F88D471D45E311F9F81C5485CB8347A1 -:109B30002406898B85C783471403898B85C34854C2 -:109B400011CD3C2581CFEFA03FA04C541946130501 -:109B50002403B1059760F91FE780E07F23244403C5 -:109B600026AC1DA01377D90FE30AF7F6114763134C -:109B7000E904384893166700E3CD06F41824E31A85 -:109B8000F7F43E2CB9D7B1F49305800C0545EF608E -:109B90005EDB8357640612058507BD8BC98F2313CF -:109BA000F40639A03C48370700FE7D17F98F3CC802 -:109BB0000145DDBD9307D9FF93F7F70F0547E3751F -:109BC000F7F281D81C24E391E7F2F1BD8546E31A50 -:109BD000D7F4162C1307D02E3DBF5D71A6C2B72453 -:109BE00000209387041603A8C70486C6A2C4CAC06F -:109BF0004EDE52DC56DA5AD85ED662D466D26AD0CD -:109C00006ECE938404166308080283270805139414 -:109C10005700635204023145B64026449644064933 -:109C2000F259625AD25A425BB25B225C925C025D8C -:109C3000F24D616182803AC632C493771500B689CD -:109C400089C7639105104945C1BF91E9A04819E052 -:109C50000145D9B72285EF601F990040CDBFE309C8 -:109C600008FE4285EF603F98E5B73849B707000323 -:109C70007D8F55F30347B50563048701631597018D -:109C800003D7AA0149DB03C71A036300270903C7E7 -:109C9000AA0063182701131714004E971A23E3E450 -:109CA000EDFAB8507D141374F40F5DC793161A00C3 -:109CB000B69903D70900B2479305800C2394EA06AE -:109CC0003E9A03470A00054523950A06A382EA0641 -:109CD000EF603EC703D76A061205264405073D8B91 -:109CE000498F2393EA0603A3040603C50B00B6407D -:109CF00096440649F259625AD25A425BB25B225CE0 -:109D0000925C025DF24D61610283138B4A05194634 -:109D100081455A859760F91FE780C070631A250155 -:109D2000194693056D235A859760F91FE780A06255 -:109D3000194681455A859760F91FE780A06EE318A0 -:109D400025F511B7FD1513F4F50F094C954C054990 -:109D5000372D0020930D00089307F00FE305F4EE74 -:109D6000A247228AB38B870003C50B00EF600FE682 -:109D7000AA8AE31C05EEFC4413052004E39D07E8D2 -:109D800061BDB72700201387071618331DC79387B7 -:109D90000716F84711CB182701CB49458280494562 -:109DA000F240624405618280B85B19C3783375F76D -:109DB00083A7070899C3FC33EDF3011122CCC884B3 -:109DC00032841305A100194606CE9760F91FE7807B -:109DD000805828009770F91FE780203C69D100B1B6 -:109DE00001457DBF011126CA4AC84EC606CE22CC07 -:109DF0002E89B289B684EF808FE449C5B727002049 -:109E00009387B7E7639C0900054798A30145F24093 -:109E10006244D2444249B249056182809423054795 -:109E20002A846395E60023800700094941651305EC -:109E300045F5EF804FE215C93C253EA583278411E7 -:109E40008DE3232CA410232EA410930710F8F914EB -:109E500023200500231635011CB52304250144C128 -:109E600075B78327C41188C3F9BFB727002083A71C -:109E7000C7FE1D45C9DF95650545938555558297F4 -:109E80001D4571B7094561B76F403FAA6F40FFADEF -:109E90006F401FB26F40BFB66F405FBC6F40BFC71F -:109EA0006F40DFBF6F401FC382806F409FCA034374 -:109EB00001001AC06F400FD36F40EFDE6F40CFE359 -:109EC0006F408FE96F402FEF6F400FF46F40AFF797 -:109ED00003530100035E4100834E81001AC072C229 -:109EE00076C46F406FFB6F405F8D6F40DF916F40B6 -:109EF000DF946F405F996F405F9F79719397050181 -:109F000026D206D622D44AD04ECEC187AE8463D2A2 -:109F10000718B729002003C549DD9760F91FE780BE -:109F2000802E2A8405C518219307000D631DF700B4 -:109F30003821914763E5E7028D46637ED70E29CF2E -:109F400089476306F7082285EF608E872165258D96 -:109F5000B250225492540259F249456182809307CB -:109F6000D7FE93F7F70F8546E3EFF6FCB726002000 -:109F700083A78631103193F7F7F0631906104D4629 -:109F80006313C71093E7070123ACF63083A786312C -:109F9000370500015D8D79A01C31372900206392BF -:109FA000071C930535003725002019461305453455 -:109FB0009760F91FE780203A8547232CF9308545C3 -:109FC00003C549DDEF606EA503258931A1A81431D1 -:109FD0003C3195EE6392E7023727002083278731D3 -:109FE0008145014593F7F7F093E70702232CF730FB -:109FF000EFB0EE9C08B081BF0547814501456395F0 -:10A00000E700EFB02E8BFDB7EFA03EFAE5B7E38C8B -:10A01000E7F2B727002003A5873141991365650052 -:10A0200023ACA730B727002083A7C7E789DF9C436D -:10A0300099DB829709BF37290020832789311031A6 -:10A04000C19B1DEE6315D70293E727003727002039 -:10A05000232CF9308347073193968701E186E3D5B6 -:10A0600006F693F7F7072308F730894591BF37279E -:10A0700000202306073093E73700232CF930A9B7D7 -:10A0800093E76700DDBF93E70702FDBD93E7070392 -:10A09000E5BD93F71500C9C3B727002083C7C730B4 -:10A0A000ADCBB727002083C7E730B72500209385C5 -:10A0B00085EC5C82B727002083C7C7311305610098 -:10A0C0001946DC829760F91FE780E028B727002057 -:10A0D00083C7D7304C005C86B727002083C717346E -:10A0E000DC86B727002003C547DDEFA0BEA815C159 -:10A0F000B727002003A5873141991365650023AC7C -:10A10000A730B727002083A7C7E781C79C4391C327 -:10A11000829713C514002DBD93F725000145E389EF -:10A1200007E2B727002083C70731858B85CBB72788 -:10A13000002003C547DDEFA07ED20DC1B727002068 -:10A1400003A587311375F5F023ACA730B72700209E -:10A1500083A7C7E781C79C4391C3829713C5240097 -:10A16000C5BB994719BFB727002083A7873185E76B -:10A1700009C5B727002023AEA7E6B725002037255D -:10A18000002083C50534034545DD814701478146ED -:10A1900001466FB07EBF45458280B727002023AEC1 -:10A1A000A7E68280411126C2B724002022C403C43E -:10A1B00044DD06C69307F00F6308F4006145B24022 -:10A1C000224492444101828037A506001305A5EF81 -:10A1D000EF60CED6238AA4DCE30285FEB7270020F9 -:10A1E00023AE07E6B727002023AC07300547B72783 -:10A1F00000202380E734B72700200D472387E7306E -:10A20000B7270020238E07301D47B7270020A386DD -:10A21000E730B7270020A3800734EF80FE86014592 -:10A2200079BF0111B727002006CE2389A71491C555 -:10A230002E8532C6EF106074324609C6B72700205B -:10A2400023A2C7E8B727002083C7F73095EB37264E -:10A25000002037250020F240034646EC034505E880 -:10A26000B727002037270020B7260020938707ED67 -:10A270001307073393860632A14505616FB0DEB040 -:10A28000F240014505618280B727002083C707E8B7 -:10A290000111C8824C83D08328001946B68506CEAA -:10A2A0005C829760F91FE780000B4800EFA00EAAC0 -:10A2B000F24005618280B727002083C707E80111BB -:10A2C000C886680006CE5C864C87D087EFA0EE97E4 -:10A2D000F24005618280B727002003C507E86FA020 -:10A2E0000E93130785011E21110593C7F7FF231E47 -:10A2F000F5FE8347E5FF93C7F7FF230FF5FEE31451 -:10A30000E5FE828099473305F50201110A86C145B1 -:10A3100006CE13050520EF60BE8C09E50886F240E5 -:10A32000056182800145E5BF011122CC26CA4AC8D9 -:10A330004EC606CE8144014437290020B7290020AB -:10A34000834719E9636AF400F24062442685424972 -:10A35000D244B2490561828083A7C9E8131544003D -:10A3600019469305F00F3E959760F91FE780800B23 -:10A3700001E5850493F4F40F05041374F40FC9B7D1 -:10A38000411122C4372400201304C4EA084006C641 -:10A3900009C5EF50FEC223200400B727002003C7E1 -:10A3A00017E9B2402244B72700202385E7E841019E -:10A3B0008280B727002083C7A7E81D71A6CA86CE72 -:10A3C000A2CCCAC8AA846390A70237240020130431 -:10A3D00024E908208545EF50DEE608208945EF5046 -:10A3E0005EE6EFF0FFF9C204C18019493389240306 -:10A3F0007000C145130409202285EF606EFE09C973 -:10A4000001442285F6406644D6444649256182804F -:10A4100019469305F00F68009760F91FE7808000E8 -:10A4200065F1680041469305F00F9760F91FE780DA -:10A43000C0F5481871469305F00F9760F91FE78043 -:10A44000C0F4680861469305F00F9760F91FE78034 -:10A45000C0F37000C1452285EF603EA250182A84E7 -:10A46000F14513051920EF605EA15018498CF145A4 -:10A4700013052920EF607EA01374F40F5018498C47 -:10A48000C14513053920EF605E9F1374F40F501817 -:10A49000498CC14513054920EF603E9E1374F40FAB -:10A4A0005018498C914513055920EF601E9D137477 -:10A4B000F40F498C1D657008E1452695EF60FE9B01 -:10A4C000B72700201374F40F498C03C5C7DC13743D -:10A4D000F40FEF60DE9535B7411122C426C206C6DF -:10A4E00001450144B724002083C714E96373F400D5 -:10A4F00011C5B24022449244410182802285050464 -:10A50000EFF03FEB1374F40FC5B7011122CC4EC628 -:10A5100052C406CE26CA4AC80144EF40FF85B72977 -:10A520000020372A002083C719E9636AF400F2404B -:10A530006244D2444249B249224A056182801309E9 -:10A54000CAE8032509009314440019469305F00F47 -:10A5500026959760F91FE780E0EC11E58325090057 -:10A56000A695EF40BF8105041374F40F6DBF3971D8 -:10A5700022DC52D456D25AD006DE26DA4AD84ED63B -:10A580000144EF40BF82372A0020B72A0020194B30 -:10A5900083471AE9636CF400F2506254D254425972 -:10A5A000B259225A925A025B216182809389CAE889 -:10A5B00003A509001319440019469305F00F4A95A5 -:10A5C0009760F91FE78000E621E13305640383A764 -:10A5D00009000A86C145CA97C43393F4040C9384D6 -:10A5E00004F813053520EF60AEDF1008C1450945BA -:10A5F000EF600EDF83A50900B334900014080A86CB -:10A60000CA952685EF404FFA05041374F40F49B735 -:10A61000011106CEEFF05FD10547A9476373A7008C -:10A6200089471306F10085451545DC87EFB0AEDE9E -:10A63000F24005618280011122CC4EC652C456C23E -:10A6400006CE26CA4AC80144B7290020372A00206E -:10A65000994A938419E99C206367F404EFF0DFCCF6 -:10A660009C2037270020639DA7088347773093E716 -:10A670001700A303F730B727002083C797E899C3D3 -:10A68000EFF0BFE8B727002083C787E899C3EFF052 -:10A690001FEE6244F240D2444249B249224A924AF1 -:10A6A00005616FF0FFF6330554031309CAE803266A -:10A6B000090093144400C145269613050520EF6058 -:10A6C0002ED21DC90325090019469305F00F2695C2 -:10A6D0009760F91FE78060CB0325090019469305B1 -:10A6E000F00F269519059760F91FE78000CA8327A8 -:10A6F0000900BE942396040005041374F40F91BF5F -:10A700008347773093F7E70FADB7B727002083C5AE -:10A7100027E92A216FD06E869947B385F5023971F2 -:10A7200022DC26DA4AD806DEA147AA8432891384BD -:10A7300025206384F600138415207146814548085E -:10A740003AC69760F91FE78040C45008F14522855A -:10A75000EF600EC90DE18347E102A5463247E517D8 -:10A7600093F7F70F63E9F600BA865008937519005E -:10A770002685EF800EA0F2506254D25442592161D6 -:10A780008280797122D426D24AD0AE842A8932843A -:10A790008145130600020A8506D69760F91FE780F7 -:10A7A000C0BEB727002083C717DD23102101230E69 -:10A7B000F100BC8455C4372700200347D7E9F99B33 -:10A7C000B72500205882372700200347F7E9414684 -:10A7D000938545F2D882372700200347E7E9130520 -:10A7E000610093761700D58FF59B93762700D58F60 -:10A7F000ED9B93764700D58F9316470093F606108E -:10A8000093F7F7EFD58F9316470093F6062093F74B -:10A81000F7DFD58F12071377074093F7F7BFD98F6C -:10A82000FC849760F91FE78000B3B727002083C737 -:10A83000C7E913F7170011C789C4B8841367270045 -:10A84000F88403476101A2850A85D98F230BF100A3 -:10A85000EF802E84B2502254925402594561828076 -:10A8600037270020034757E9F99BB7250020588276 -:10A8700037270020034777E94146938545F1D88281 -:10A8800037270020034767E9130561009376170017 -:10A89000D58FF59B93762700D58FED9B9376470058 -:10A8A000D58F9316470093F6061093F7F7EFD58FE1 -:10A8B0009316470093F6062093F7F7DFD58F12071C -:10A8C0001377074093F7F7BFD98FFC849760F91F80 -:10A8D000E78060A8B727002083C747E999BF011127 -:10A8E00022CC26CA4AC84EC606CE2A890144B724BD -:10A8F0000020B729002083C714E9636BF4003E846D -:10A900002285F2406244D2444249B24905618280C4 -:10A9100083A7C9E8131544001946CA853E95976078 -:10A92000F91FE780E0AB69FD05041374F40FE1B78C -:10A93000397122DC372400208327C4EA4ED652D452 -:10A9400006DE26DA4AD856D25AD0AA892E8A1304AD -:10A95000C4EAA5E319E10545C1A8F5DDEFF03FF82C -:10A9600037270020834617E9B72700202385A7E86B -:10A970001389A7E8930A17E9636DD5028144372B41 -:10A9800000200DA08327CBE81395440019469305BA -:10A99000F00F3E959760F91FE780C0A809E985048C -:10A9A00093F4F40F83C70A00E3EEF4FCBE842300A3 -:10A9B0009900B72400209384A4E8B72700208820BA -:10A9C00083C717E9E379F5F81C40ADEB99473305E8 -:10A9D000F5024E86C14513050520EF600ECA61469B -:10A9E0009305F00F28009760F91FE780009A8820F0 -:10A9F0009D673000E1453E95EF602EC89C203727CB -:10AA000000200325C7E892074146CE853E95976012 -:10AA1000F91FE780409423204401B727002003C595 -:10AA2000C7DCEF60CEC00145F2506254D2544259A7 -:10AA3000B259225A925A025B21618280904709CE14 -:10AA400099473305F502F14513051520EF60EEC275 -:10AA50001C4023A40700D1B7904B09CE994733057A -:10AA6000F502F14513052520EF602EC11C4023A8F7 -:10AA7000070065B7D04B09CE99473305F502C145AC -:10AA800013053520EF606EBF1C4023AA070071B785 -:10AA9000D04705CA194933052503C145130545208B -:10AAA000EF60AEBD88201C40914533052503D0479B -:10AAB000410613055520EF604EBC1C4023A607003D -:10AAC000A9BFB727002083C797E899C3EFF0FFA37A -:10AAD000B727002083C787E899C3EFF05FA9EFF09D -:10AAE0003FB395BDB727002083C717E9011122CCDA -:10AAF00006CE26CA09446376F50285C59947330513 -:10AB0000F502AE840A86C14513050520EF604E8D1F -:10AB10002A8401E919468A8526859760F91FE7800E -:10AB200080832285F2406244D24405618280011113 -:10AB300022CC06CE2A842EC632C49760F91FE78045 -:10AB400060C615C95825A1472246B2456310F702D1 -:10AB5000B727002083A707EB99CF03A34700630C17 -:10AB6000030022856244F24005610283B72700207A -:10AB700083A747EBD5B7F24062440561828001119B -:10AB800022CC19443304850226CA0A86AE84C14504 -:10AB900006CE130404202285EF608E8401C981440F -:10ABA000F24062442685D2440561828019469305AD -:10ABB000F00F0A859760F91FE780C0866DF138862F -:10ABC0009377D70F89C49377F70F93E72700C207CE -:10ABD000C1838544E306F7FC0A86C14522857C864D -:10ABE000EF60AEA9B727002003C5C7DCEF602EA435 -:10ABF00045BF397122DC2A8419453305A40226DABF -:10AC00004AD8B2842E893000C14506DE13050520DE -:10AC1000EF501EFD01C90145F2506254D254425911 -:10AC20002161828019469305F00F28009750F91F83 -:10AC3000E780407F6DF19D673E943008E1452285B5 -:10AC4000EF501EFA19C10545C1BF2808EFF06FE9A2 -:10AC5000631509046146814528089750F91FE7806C -:10AC6000607C75F16146814528089750F91FE7809F -:10AC7000C071B7270020054728082382E7EAEFF0D4 -:10AC80004FE63008E1452285EF602E9FB727002070 -:10AC900003C5C7DCEF60AE997DB73C081018BE86CF -:10ACA0008E223687638025039106E31BD6FE01457D -:10ACB000A5D496233E8789C69107E31CF6FEA1BF63 -:10ACC000239027013C23E38097F824A3DDF0231091 -:10ACD000070045B701114EC6B72700207D57B72999 -:10ACE000002022CC26CA4AC806CE52C42389E7E8EF -:10ACF000938789FBE8273729002037240020930415 -:10AD0000C9E8930520041205A30804E823A0040061 -:10AD10009750F91FE780003388C0130414E905C574 -:10AD2000938989FB83C7E9001309C9E881441CA002 -:10AD30001C2063E5F41203A78900B72700206301F4 -:10AD40000716A38307301820B72700200544238562 -:10AD5000E7E8B727002023A607EAB72700202389C2 -:10AD600087DC37250020B7270020A38E07E841465F -:10AD7000B72700208145130545F2A38F07E89750B8 -:10AD8000F91FE7808060B727002093047007238EA7 -:10AD900007E8B7270020238F97E8B727002023A0D4 -:10ADA00007EAB7270020A38787DCB7270020238A7C -:10ADB00007E837250020B7270020A38A07E8414687 -:10ADC000B72700208145130545F1A38B07E897506D -:10ADD000F91FE780805BB7270020238B97E8B72710 -:10ADE000002023AC07E8B7270020A38907E8154710 -:10ADF000B7270020A386E7DCB72700204147A388B8 -:10AE0000E7DCB7270020238207EA0947B72700209D -:10AE10002387E7DCB727002023AA07EAB72700200B -:10AE200023A807EAB7270020A38407E8B727002054 -:10AE3000238807E8B7270020238687DCB727002070 -:10AE4000A38987DCB7270020238887DCF24062448F -:10AE5000D2444249B249224A056182800325090051 -:10AE6000139A440019469305F00F52959750F91F15 -:10AE7000E780A0510325090019469305F00F52956C -:10AE800019059750F91FE780405083270900850472 -:10AE900093F4F40FD297239607002387070049BD48 -:10AEA000130700F8A383E73079BD011122CC4EC609 -:10AEB00052C406CE26CA4AC80144B7290020372A00 -:10AEC0000020938419E99C206361F402EF505EC86E -:10AED0009820F2406244B72700202385E7E8D24457 -:10AEE0004249B249224A056182801309CAE8032512 -:10AEF00009009314440019469305F00F26959750C6 -:10AF0000F91FE78080480325090019469305F00FD3 -:10AF1000269519059750F91FE780204783270900D8 -:10AF200005041374F40FA6972396070023870700E0 -:10AF300049BF930705C04111C20722C406C6C18399 -:10AF4000130720022E846367F71237D706008A079B -:10AF50001307874CBA979C438287B727002083C783 -:10AF600027DD1CA01DA8B727002083C7C7E9898754 -:10AF70003DA8B727002083C7D7E9E5B7B72700204A -:10AF800083C7F7E9F9BFB72500204146938545F20D -:10AF900022859750F91FE780003C8147B240224448 -:10AFA0003E8541018280B727002083C7C7E9858B92 -:10AFB0004DBFB727002083C7E7E965B7B727002053 -:10AFC00083A707EA1CC0D1BFB727002083C7F7DCDF -:10AFD00049BFB727002083C747E951BFB7270020E3 -:10AFE00083C757E9BDBFB727002083C777E995BF5F -:10AFF000B72500204146938545F159BFB72700206A -:10B0000083C747E96DB7B727002083C767E991BFBA -:10B01000B727002083A787E975B7B727002083C724 -:10B0200037E981B7B727002083C7D7DC1DBFB72713 -:10B03000002083C717DD35B7B727002083C797E8FF -:10B040000DB7B727002083C787E821BFEFF0CFAD4A -:10B0500008A0A1B7B727002083C707DD19B7B72716 -:10B06000002083C7C7E98D8799B7B727002083C71A -:10B0700047E9D5BF1307F0038947E361A7F2EF70F3 -:10B080009E990AA019BF011106CE22CC26CA4AC831 -:10B090004EC652C456C2EF70FEE351E93729002074 -:10B0A000130909E903470900B724002085472A84CA -:10B0B000938414E9630EF702372A0020854A9C2006 -:10B0C0006374F4049309CAE803A709001319440040 -:10B0D0004A977C27639A57012285EFF08FAD83A7AB -:10B0E0000900CA972387070005041374F40FC1BF32 -:10B0F000EFF08FBEB727002083A7C7E89820230072 -:10B100000900B907631EE400EF501EFD6244F240DF -:10B11000D2444249B249224A924A05616FF0AFD106 -:10B120000504238007001374F40FC107E1BFF24048 -:10B130006244D2444249B249224A924A056182801D -:10B14000797126D24AD04ECEB724002006D622D41A -:10B1500052CC8947AE893289938414E96307F50696 -:10B16000636FF5008D47630FF50A80202285B2508A -:10B17000225492540259F249624A456182802E85D6 -:10B18000EFF0EFF59C202A84E372F5FEE30009FE60 -:10B190001946CE854A859750F91FE780C01BF9B73D -:10B1A0008327CAE81315440019463E95CE85190534 -:10B1B0009750F91FE780C02221ED05041374F40FA6 -:10B1C0009C20E36FF4FC3E8455B70144372A0020ED -:10B1D000C5BF05041374F40F9C20E376F4FE330519 -:10B1E00044030A86C1451305352042054181EF50CD -:10B1F0003E9F65F141469305F00F0A859750F91F70 -:10B20000E780402279F5CE850A85EF709E8871F13E -:10B210009C20E37DF4F4E30B09F4CA852285EFF06A -:10B220007F8CA9B70144194A45BF930705C05D71DA -:10B23000C207A6C2CAC086C6A2C44EDE52DC56DA17 -:10B240005AD8C183130720022A89B2846365F75450 -:10B2500037D706008A0713074755BA979C4382875A -:10B2600085476384F500614411A81C220947E36CFB -:10B27000F7FE372700202309F7DC01442285B6407A -:10B28000264496440649F259625AD25A425B616199 -:10B2900082808547E399F5FC1422E3E6D5FC372745 -:10B2A00000201307C7E91C23E1CA93E747001CA34A -:10B2B000E9B78547E399F5FA1C221147E365F7FAE8 -:10B2C00037270020A30EF7E84DBF8547E39DF5F82B -:10B2D0001C22E3EAF5F837270020A30FF7E871BF37 -:10B2E000C147E392F5F8372500204146A6851305AE -:10B2F00045F29750F91FE780000641B78547E39470 -:10B30000F5F61422E3E1D5F6372700201307C7E945 -:10B310001C23E9C293E7170059BF8547E395F5F46D -:10B320001822B7270020238FE7E881BF9147E39CCD -:10B33000F5F21842B7470F009387F723E3E5E7F2EA -:10B34000B727002023A0E7EA0DBF8547E39DF5F06E -:10B350001C220947E369F7F037270020A307F7DC31 -:10B3600029BF8547E391F5F01422E3EED5EE3727A8 -:10B370000020130747E905BFED9B15BF8547E39400 -:10B38000F5EE1C221147E360F7EE37270020A30AF1 -:10B39000F7E8E5B58547E398F5EC1C22E3E5F5EC25 -:10B3A00037270020A30BF7E8C9BDC147E39DF5EAA5 -:10B3B000372500204146A685130545F11DBF854769 -:10B3C000E393F5EA1422E3E0D5EA372700201307D8 -:10B3D00047E93DBFF99BE1BD8547E396F5E81822B3 -:10B3E000B7270020238BE7E849BD9147E39DF5E6A9 -:10B3F0001842B7470F009387F723E3E6E7E6B7273E -:10B40000002023ACE7E895BDE39F05E4EF709EAC18 -:10B4100001E9EFF06F8CEF503ECCEFF0CFA1B1BD62 -:10B42000B727002005472388E7E881BD9D47E39CB7 -:10B43000F5E293851400194668009750F91FE780DC -:10B4400080F1882050086C00EFF09FCFB7270020D4 -:10B4500083C717E9AA840944E372F5E24808EFF0CC -:10B460001EBF09E52685EFE0DFF475B7B72700209A -:10B4700083A7C7E892045944BE948547FCA4FDBB4A -:10B480009D476398F50A1946938514006800975004 -:10B49000F91FE78040EC882001466C00EFF05FCA9E -:10B4A000B727002083C717E96377F5049944B304ED -:10B4B00095025008F14593841420C204C18026856A -:10B4C000EF500EF22A8415E51307A0418547630467 -:10B4D000E9009307F00F5008F1452685A307F10214 -:10B4E000EF50BE99B727002003C5C7DCEF503E944C -:10B4F00071B3094461B3B727002083C7773009448B -:10B50000E38E07D6372700209306A0418347873074 -:10B51000631DD90093E71700372500202304F73077 -:10B520001D46A68513050530E9B3F99B2304F730C2 -:10B53000A9B38547E399F5D2372700209306A041A8 -:10B54000834787306315D50093E72700C5B7F59B80 -:10B55000F1BFB7270020A38907DC05B3B727002078 -:10B560000547A389E7DC0144372900209949130ADC -:10B57000F00FFD5A372B0020834719E9E37FF4CE03 -:10B58000B30434035008F145938414202685EF500A -:10B590002EE505E18347F102638D47015008F1452F -:10B5A0002685A3075103EF505E8D0345CBDCEF509A -:10B5B0001E8805041374F40FC1B78547E395F5CAD7 -:10B5C0001C22E3E2F5CA37270020A309F7E875B18A -:10B5D0008547E39AF5C81C222547E366F7C8372755 -:10B5E0000020A306F7DC51B98547E39EF5C6182273 -:10B5F000A546930797FF93F7F70FE3E6F6C6B7273D -:10B600000020A388E7DC95B98547E39EF5C4B727FA -:10B610000020938797E818229423014498A3E39F7E -:10B6200006C4E31DB7C4EFF00F8189B98547E39CD9 -:10B63000F5C2B7270020938687E8982090221384CC -:10B6400087E898A209E66314B700EFE0DFFE082060 -:10B65000EF300FF61DB18547E397F5C01C220D476B -:10B66000E363F7C0372700202307F7DC39B18547AC -:10B67000E39BF5BE1822B72700202386E7DCF5BE42 -:10B680000545EF50CEFAD5BE8547E39EF5BC18229E -:10B69000B72700202388E7DCCDB693074002E39468 -:10B6A000F5BC8830014693852400EFF07FA9B727C9 -:10B6B000002083C717E9E378F5BA194433048502FB -:10B6C0009820A1471374F40F6312F704090413744C -:10B6D000F40F420441805008F1452285EF504ED0CE -:10B6E000E31305B89385840048086D469750F91F09 -:10B6F000E78060C65008F1452285EF500EF8B72765 -:10B70000002003C5C7DCEF508EF2B1BE0504C1B7FF -:10B71000B727002003D787FC930740046D44E3FF5D -:10B72000E7B48547E391F5B41C22E3EEF5B285C397 -:10B73000B727002083A7C72F5544E38107B4B72755 -:10B7400000209387C7E998231367870039A0B7279C -:10B7500000209387C7E998235D9B98A339BEB7273C -:10B76000002003D787FC930740046D44E3F8E7B05B -:10B770008547E39AF5AE1C22E3E7F5AEE9DBB72790 -:10B78000002083A7C72F5544E38A07AEB7270020C0 -:10B79000938747E94DBF9307F0030944E3E027AFE0 -:10B7A000E39E85AC8E204A85EF70CEFC2A84F9B4E6 -:10B7B00079714AD006D622D426D22A8902CC231EF9 -:10B7C00001009750F91FE780E0FD21C1B724002058 -:10B7D0009384F4DC982089476309F7029305650098 -:10B7E0002A8448313008EFF0BF95B727002083C77F -:10B7F00017E96372F5022AC6EFE0DFB0B2452A8688 -:10B800000547A1464A85EFE03FF1B25022549254D9 -:10B810000259456182809C2091E795454A85EF70E9 -:10B820008EE8E5B70547E392E7FE4C3001464A85CE -:10B83000EFE03FF5D9BF0111C1674AC806CE22CC5F -:10B8400026CA4EC6FD172E89630DF5069750F91FBF -:10B85000E78040F52A84D14429CD9305650048311D -:10B860000146D544EFF0DF8DB727002083C717E9E5 -:10B870006376F500CA85EFF08FB08144630B09024F -:10B880002285EFE09FE835A0CA852285EFF02FAF33 -:10B8900011C1814405041374F40F83C719E9E365EA -:10B8A000F4FE6308090037A506001305A570EFF044 -:10B8B000FE99F240624426854249D244B24905616C -:10B8C00082800144D544B7290020C1BF0111C1675E -:10B8D0004AC84EC606CE22CC26CA52C4FD172E89AF -:10B8E000B2896302F5069750F91FE780A0EBD144B7 -:10B8F00031C19305650048310146D544EFF05F84BE -:10B90000B727002083C717E96376F5024E86CA85FC -:10B91000EFF02FAE814439A84E86CA852285EFF01C -:10B920004FAD11C1814405041374F40F83471AE924 -:10B93000E364F4FEF240624426854249D244B249AF -:10B94000224A056182800144D544372A0020F9BF8C -:10B95000411122C437240020130424E90C20B72706 -:10B96000002023AAA7EA614506C6EF70AEE00820D2 -:10B970002244B24041016FD0FE81411122C43724DC -:10B980000020130424E90C20B727002023A8A7EAED -:10B99000614506C6EF700EDE08202244B240410128 -:10B9A0006FD04EFF411106C622C426C29DE5AA856E -:10B9B000AA8437450F00130505243375A602EF70DE -:10B9C0006E872A8409C585452685EF70CECD2285F0 -:10B9D000B2402244924441018280EF70CECC0144B7 -:10B9E000FDB7B7270020938727DD9823136707F853 -:10B9F00098A3B727002083C5C7E96F708EBF1D715C -:10BA0000A6CAB2847000CAC8D2C486CEA2CCCEC6A2 -:10BA10002A89368A02C623180100EFF06FF2B72791 -:10BA2000002083C717E9637FF50E2A84EFE09F8D1E -:10BA30009147AA89631FFA0CB727002003C727DDA7 -:10BA40009146791713371700A2854204418019499E -:10BA5000330924034E862685EFE01FCC51468145ED -:10BA600048089750F91FE78040925008C1454209A5 -:10BA7000135909011305492042054181EF504E96A3 -:10BA800005E941469305F00F48089750F91FE780F4 -:10BA9000609919ED130559204205501091454181D7 -:10BAA000EF500E94500893F519002685EF700EB9EB -:10BAB0001D65229542053010E1454181EF504E92BF -:10BAC00005E12810EFE0FF812010130901040E208A -:10BAD00089C530202685EFC06EBC1104E31989FEAC -:10BAE00093F9290063890900B727002083C527E956 -:10BAF0002685EFB09EC89147631AFA04B727002045 -:10BB000003C727DD89476313F7042685EFF07FED30 -:10BB100035A8B727002003C7F7DCD286791713377B -:10BB200017001DB7A147E318FAFCB727002003C789 -:10BB3000F7DC8947631CF7000146CA852685EFE0DC -:10BB40005FC4014681452685EFE07FFEF6406644EE -:10BB5000D6444649B649264A014525618280797115 -:10BB600006D622D426D24AD03C215147E91793F772 -:10BB7000F70F6369F70237D706008A071307075ED6 -:10BB8000BA979C432A8482872625502554352685DA -:10BB900032C636C49750F91FE780C0C0AA87A246B4 -:10BBA000324619E1854491A2D827A14713053400F4 -:10BBB0006318F702B727002083A707EBA68589C77C -:10BBC0009C4399C38297F9BFB727002003A587E953 -:10BBD000EF605EE661D985452685EF70CEACD9B7BA -:10BBE000B727002083A747EBA68599C39C43F9FBA1 -:10BBF000B727002003A507EAE1BF2E252E852EC416 -:10BC00009750F91FE78000BAAA8749DDD827A147D6 -:10BC1000130534001306C4009306C401A245631C37 -:10BC2000F700B727002083A707EBADDFD8433DDB44 -:10BC30009C47829785BFB727002083A747EBF5B7BE -:10BC40001C31F9EB7C21858BE1CBB727002083A742 -:10BC5000C7EA0149F9E38145414608089740F91FC1 -:10BC6000E780A0724C48C9C91946C1050808974029 -:10BC7000F91FE780406E7C20B8868987858BD98F35 -:10BC8000FC86EFE06FEAB727002003C717E993842B -:10BC900017E96311A702B727002083C707DD99C3FF -:10BCA000EFF0AFA0B727002083A7C7FE81C7854567 -:10BCB00021458297EFE04FE79C20372700206398CB -:10BCC000A7048347773093E71700A2850808A303EA -:10BCD000F730EFE0FFC5AA84554921E1B7270020DE -:10BCE00003C527E98945EF404ED3B250225426853B -:10BCF00002599254456182804A2085449750F91F29 -:10BD0000E78040AA7DD119469305650085B7834732 -:10BD1000773093F7E70F55BF014910304A2085452A -:10BD2000EFE0FFE0E30009E84A868D454A20EFE0B6 -:10BD30001FE08DBD18319947631BF7024A219750C8 -:10BD4000F91FE78020A6AA841DC1B727002083C75A -:10BD5000E7DC09476386E7020D47638DE700054787 -:10BD60006397E7004C314A200146EFE09FA1103075 -:10BD700089456DBF0146814513050041EFF0EFCACB -:10BD80004E2088201546EF702E95D5B793054500B7 -:10BD900028310146EFF0CFBAB727002083C717E953 -:10BDA000E372F5E099473305F5021306C4009145A7 -:10BDB0001305552042054181EF502E8CB7270020F6 -:10BDC00003C5C7DCEF50AE86F1BBB727002083C7A1 -:10BDD00037E94A2191C7B727002083C5D7DCF5BBD7 -:10BDE000B727002083C727DD99E39545FDB397501A -:10BDF000F91FE780209BAA84E30605DA3C24858BA3 -:10BE00009DC74831854763F4A7025E2493F7072056 -:10BE100099EF100893856400EFF08FB2B7270020E8 -:10BE200083C717E96395A7008D454A207DB3CC30C1 -:10BE30004A2013068400EFE0DF9401468145FDB5FA -:10BE40004A21EFF0FF96B9BB4A21EFF0CFA3B72705 -:10BE50000020938727DD98231377F70798A399B3DA -:10BE6000011106CE2AC6EFE0FFE63245F240B727C1 -:10BE700000202389A7E805616FE0EFFB79719397B4 -:10BE8000050122D406D626D24AD04ECE52CCC18746 -:10BE90002E8463D1070AB727002003C527E99740FE -:10BEA000F91FE7804036AA8431C11C211307100B0B -:10BEB0006389E7041307000D6384E7021307000B8F -:10BEC0006393E7025821F9476316F7002A21814559 -:10BED000EFF07F96CC2013858400EFA05EAD21A00B -:10BEE000EFF0FFC701C52685EF408E8DA164A18CC0 -:10BEF000B2502254268502599254F249624A456151 -:10BF000082805C21EDF312256E212A213729002041 -:10BF1000130949EA23000900EFF05F9B83470900FA -:10BF2000F9D3B727002003C5C7DC23000900EF4081 -:10BF30001EF055BF93F7250095C381450145EFE0FD -:10BF40003F9FB727002093442400938727E9854526 -:10BF500011E189458823EF404EAC59BF93F7150096 -:10BF6000F9CBB729002083A7C9EAB7240020938919 -:10BF7000C9EA03DA470083A784EA938484EA85E365 -:10BF80003727002037E60600C165130787EB89468F -:10BF900013060685FD150545EFC0EE9488C08C405C -:10BFA000134414009DE983A7090001468545CA236F -:10BFB00093140401C180EFE09FB783A709000146F5 -:10BFC0008D45CA23EFE0BFB6B727002003C5C7DC05 -:10BFD000EF40FEE5EFE0CFBA21BF3729002003563E -:10BFE00089EB9308F00F094881471307E1007400BB -:10BFF0005285EFC0EEDF130989EB19E990861C86A4 -:10C0000022065D8E11C69C405285AE27EFF01F8C34 -:10C01000884003560900C1658146FD15EFC02ED248 -:10C0200088C093140401C1803DDDB72700208545F9 -:10C0300003C527E90DB793F745008144E38A07EA72 -:10C0400093C4450075B509C5B727002023AEA7EAFC -:10C050003726002037250020034646EC034545DD02 -:10C0600081470147814689456F901ED2B72700203E -:10C0700083C747DD0111C886680006CE5C864C8701 -:10C08000D087EF808EBCF24005618280B727002008 -:10C0900003C547DD6F80AEB73421D14763EBD726A8 -:10C0A00037D706009397260013074763BA979C4338 -:10C0B000011122CC06CE26CA4AC84EC62A848287DF -:10C0C0001C3137290020C5EBB7250020B7240020FC -:10C0D0004146938545F3138504329740F91FE78065 -:10C0E0002030B72900203DE913860432C1450945B7 -:10C0F000EF40BED813860933C1450D45EF40FED74A -:10C10000B727002003C5C7DCEF407ED237250020CB -:10C11000930534001305453419469740F91FE7800D -:10C1200080238547232CF930B727002003C547DD3E -:10C130008545EF408E8E03258931B727002083A7E0 -:10C1400007ECBDC303A3070063000306A285624496 -:10C15000F240D2444249B24905610283B72500202A -:10C160004146938545F4138509339740F91FE780CD -:10C1700020273DD961BF9947232CF9306DBF183175 -:10C180003C3129E709476398E702372700208327D6 -:10C1900087318145014593F7F7F093E70702232C98 -:10C1A000F730EF90CE8108B0F2406244D244424969 -:10C1B000B249056182800547814501456395E700E5 -:10C1C000EF805EEFCDB7EF805EDEF1BF0947E38D14 -:10C1D000E7FCB727002003A5873141991365650067 -:10C1E00023ACA73099BF1C31B7240020BDEB8D478D -:10C1F000639AF60437270020834707319396870117 -:10C20000E18663DD060093F7F7072308F730B727C9 -:10C21000002003C547DD8945EF402E8083A7843188 -:10C22000914613F7F7006318D700C19B93E75700B7 -:10C2300023ACF4309DA08946E308D7F6C19B93E771 -:10C240002700FDB703A78431B727002023860730D6 -:10C250009546937707FF3D8B631CD70493E7470010 -:10C26000C1BF83A78431C19B93E76700D1B7B724CF -:10C27000002083A784311831C19B1DE393E7470059 -:10C2800023ACF43032259305450028319146EFF078 -:10C290000FF7B72700202386073003A5843171BD2F -:10C2A00093061003E312D7FC37270020230607303C -:10C2B00093E73700B5BFEFF09F8A37270020832729 -:10C2C0008731954613F6F700C19B13E537006314D9 -:10C2D000D60013E52700232CA73085B5372700208B -:10C2E00083278731103193F7F7F00DE24D46639CB9 -:10C2F000C60093E70701232CF730832787313705E2 -:10C3000000015D8D1DBD93E70702F5B793E70703B5 -:10C31000DDB782801821930610096307D7009307C1 -:10C32000000D6302F704828014313947639FE602EF -:10C3300056210567130757406399E602184593078E -:10C34000F007830537006382F502B727002083A733 -:10C3500007EC81CF03A34700630903003C230833A4 -:10C36000A2075D8D02836FF03FD382800111939706 -:10C37000050126CA06CE22CCC187AE8463D4070C41 -:10C38000B727002003C547DD9740F91FE780A0E7E6 -:10C390002A8419C9B727002083C7F73089EFEFF047 -:10C3A0007FF72285EF30DEC12165258DF2406244A2 -:10C3B000D244056182801C211307000D639CE704B1 -:10C3C0003C2181E7EFF01FF50DA81547639EE700BC -:10C3D0002A259740F91FE780E03C61D55825A14701 -:10C3E0002285E31EF7FA11A82147E38DE7FC994661 -:10C3F000639DD7007C31E394E7FAB727002003C59B -:10C40000A734A285EF30BEC245B71D47E399E7F8D0 -:10C410004A21C1B71307200AE383E7F8130710097D -:10C42000E392E7FA1831B947E31EF7F85A21856716 -:10C4300093875740E318F7F818453C230833A207C1 -:10C440005D8D41BF9397150163D207023726002007 -:10C45000130606ED91451145EF403EA2B727002097 -:10C4600003C5C7DCEF40BE9C116581B793F715008B -:10C47000D1CFB727002083C7C730A5C3EFE0DEE2E6 -:10C48000B727002083C7D7FC8D8B636BF5048D47DE -:10C490005C82B727002083C7D7304C005C86B72763 -:10C4A000002083C71734DC86B727002003C547DD8B -:10C4B000EF804EEC1DC1B727002003A587314199BD -:10C4C0001365650023ACA730B727002083A707ECCE -:10C4D00089C79C4399C38145829713C51400F9B558 -:10C4E000B727002083C7E730B725002019465C82B4 -:10C4F000B727002083C7C731938585EC13056100FA -:10C50000DC829740F91FE78000E561B793F72500CB -:10C510000145E38D07E8B727002083C70731858BE6 -:10C520008DCBB727002003C547DDEF803E9315C1B3 -:10C53000B727002003A587311375F5F023ACA7308A -:10C54000B727002083A707EC89C79C4399C381457F -:10C55000829713C5240099BD797122D426D206D6BC -:10C56000AA842EC6328436C43AC23EC09740F91F10 -:10C57000E780402329C10358E500B24582471247AE -:10C58000A246636BB8006369040112296316D600E2 -:10C5900032296145630CE600EC843E862C08268532 -:10C5A000E085F486F887EFE0BE940145B25022544E -:10C5B0009254456182805145D5BF0111B7270020B3 -:10C5C00006CEA388A71491C52E8532C6EFF04FB8CA -:10C5D0003246B727002083A78731B1E309C6B727C2 -:10C5E000002023A0C7EC37260020B72500203725E0 -:10C5F0000020F240034646EC83C50534034545DD83 -:10C60000B727002037270020B7260020938707EDA3 -:10C61000130707339386063205616F90EEF6F240FA -:10C62000454505618280B727002083C7D7FC8D8BE5 -:10C6300091EB614582806145B240224492440249B7 -:10C6400041018280411126C2B724002022C403C4C4 -:10C6500044DD06C64AC09307F00FE31EF4FC37C55D -:10C6600006001305C536EF406E8D238AA4DCE30473 -:10C6700085FCB727002023A007ECB727002011472F -:10C6800023AC0730B72700202380E734B7240020ED -:10C69000EF608EBF41468145138504329740F91FF4 -:10C6A000E780A0CE3724002041468145130504339E -:10C6B0009740F91FE78060CDB72700202387073018 -:10C6C000B72700201D47238E0730B7270020A386F9 -:10C6D000E73037290020B727002013860432C145F0 -:10C6E0000945A3800734232809ECEF406ECF1306D9 -:10C6F0000433C1450D45EF40AECE372500204146FD -:10C7000093850432130545F39740F91FE780A0C4D1 -:10C7100037250020414693050433130545F497401F -:10C72000F91FE78040C3130609ED91451145EF401D -:10C730002ECB014511B7FD5737270020230AF7DC20 -:10C74000372700201307C7145CB37CA337270020CA -:10C75000854623000734372700202306D7303727A4 -:10C7600000209946232807EC37270020231AD730CA -:10C770000567130707C8B7260020239FE630372731 -:10C780000020230207EC37270020A30707303727B4 -:10C7900000202305F734372500209D473727002048 -:10C7A000A308F7301946372700208145130585EC8B -:10C7B0002309F7301743F91F670023BD930705D0FE -:10C7C0004111C20722C406C6C18359472E84636340 -:10C7D000F71037D706008A0713078768BA979C4374 -:10C7E0008287B727002083C707341CA03DA0B72548 -:10C7F000002041469385053222859740F91FE78046 -:10C8000080B521A8B7250020414693850533EDB7B3 -:10C81000B727002083A707ED9CC18147B24022447F -:10C820003E8541018280B725002019469385453415 -:10C83000E1B7B727002083C7C73045BF2E85EF80FB -:10C84000DEA4E1BF2E85EF80BEA6C1BFB7270020C2 -:10C8500083C7E73059BFB727002083C7C73171B7F7 -:10C86000B72500201946938585EC79B7B7270020B6 -:10C8700083C7D7309DBFB727002083C71734B5B70C -:10C88000B727002083A787318DB7B727002083C73C -:10C8900047ECA1BFB727002083D747311EA0B5BF03 -:10C8A000B727002083D7E731D5BFB727002083C73C -:10C8B000173125BFB727002083C727313DB72E8505 -:10C8C000EF807EA299BFB727002083C7073193F777 -:10C8D000F70721BF1307F0038947E361A7F4EF606F -:10C8E0008E930AA01DBF9307F5CF4111C20706C65C -:10C8F00022C4C183D5462A872E8863E5F626B7D69B -:10C9000006008A079386466EB6979C43B285428599 -:10C910008287C14761446310F804372500204146EF -:10C92000130505329740F91FE780E0A225A0C14713 -:10C9300061446312F8023725002041461305053390 -:10C94000D5B7914761446318F8001842B727002013 -:10C9500023A8E7EC01442285B240224441018280B1 -:10C9600085476144E319F8FE372700201C228346DF -:10C97000C73001442306F73085C6F1FFB7270020F2 -:10C9800083A787310947BD8B6385E7001547E3948B -:10C99000E7FCB727002003C547DDEF802EB45DBF5D -:10C9A000DDDBB727002083A7873163860701BD8BB6 -:10C9B000F517E362F8FAB727002003C547DD854580 -:10C9C000EF30BE8541BF9307C01C63EC071B630AB1 -:10C9D000061A2244B24041016F802EDD9307C01C2D -:10C9E00063E1071B630F06182244B24041016F80C8 -:10C9F0006EEC85476144E310F8F61C222947E36C8E -:10CA0000F7F4372700202307F730A9B7854761449B -:10CA1000E313F8F41C220D47E36FF7F237270020E9 -:10CA2000230EF73005BF99476144E316F8F2372526 -:10CA300000201946130585ECF5B585476144E31CD4 -:10CA4000F8F01C221D47E368F7F037270020A30603 -:10CA5000F73009B785476144E31FF8EE1C220D4704 -:10CA6000E36BF7EE37270020A300F734E5B58547E1 -:10CA70006144E312F8EE1822B72700202382E7EC86 -:10CA8000D1BD89476144E318F8EC16228567938786 -:10CA9000A7C71387A6FF42074183E3EEE7EAB7275C -:10CAA0000020239AD7307DB589476144E315F8EA21 -:10CAB000162285679387A7C71387A6FF420741837E -:10CAC000E3EBE7E8B7270020239FD73061B50C22BE -:10CAD000B7270020A388B730B727002003C6273127 -:10CAE0000145EF206FADBDB51022B7270020238987 -:10CAF000C730B727002083C51731DDB79307C01CA7 -:10CB000063E107093DCE2244B24041016F802EEB24 -:10CB100085476144E311F8E4372700208346073155 -:10CB20001C220144858A2308F73013F6170091C6AA -:10CB3000E31306E2EF80CEB239BDE30E06E0B7267E -:10CB4000002083A68631B98A89CAB727002003C589 -:10CB500047DD8945EF306EECFDBB93E707F823080E -:10CB6000F730D5BB9307F00363EFE700894709442B -:10CB7000E313F8DE2244B2400E223A8541016F6091 -:10CB80006EBF6144C9BB0944F9B36F20AF9D6F20EC -:10CB90000FA8014881476F20AF9E011106CE2AC61B -:10CBA0009740F91FE78000C001C9B245F240082153 -:10CBB0004D4605616F604EB2F24049450561828085 -:10CBC0006F20CF9F6F20EFA46F20CF9B6F20AFA46B -:10CBD0006F20AFA405458280411106C6EF402F9516 -:10CBE00037A505001305E5D7EF305EB5EFD02E85EC -:10CBF0003735050013052502EF305EB4EF602EBE19 -:10CC0000377505001305C59FEF305EB3EF90FEDB6F -:10CC100037C505001305C535EF305EB2EFF0FE896C -:10CC200037C506001305C5E7EF305EB1EFF04FA33F -:10CC3000379505001305E537EF305EB0EFC04EF0D5 -:10CC4000B24041016FD00FD6411106C6EF803FA21E -:10CC500037A505001305E5D7EF305EAEEFC03EFE09 -:10CC60003735050013052502EF305EADEF602EB7B6 -:10CC7000377505001305C59FEF305EACEF90FED40D -:10CC800037C505001305C535EF305EABEFF0FE820A -:10CC900037C506001305C5E7EF305EAAEFF04F9CDD -:10CCA000379505001305E537EF305EA9EFC04EE973 -:10CCB000B24041016FF03F9705458280411137072F -:10CCC000002006C6B70700201307675198C337171F -:10CCD00000201307A752D8C33727002013076798EF -:10CCE00037260020B705002037E5040098C7130653 -:10CCF000C6CB938505041305052B9730F91FE780F4 -:10CD0000603137260020B725002037E506001306DE -:10CD100086DD9385C5CB130545879730F91FE780DE -:10CD2000602FB24041011733F91F6700C32F97717D -:10CD3000F91F9381212D1731FA1F1301A12C17150B -:10CD4000FEFF130525549735F91F9385A52C17363B -:10CD5000F91F1306262F63FCC5008322050023A0BC -:10CD6000550011059105E3EAC5FEEFF03FF57300AC -:10CD7000203011CE93070002918F635BF000335592 -:10CD8000C500B397F50033D6C5005D8DB2858280AE -:10CD9000130506FE014633D5A500B285CDBFB68783 -:10CDA000B2882A832E88639B061463F8C50A4167FC -:10CDB000636BE61AB70700016360F6349356860189 -:10CDC000E147171700001307A79736971823BA975C -:10CDD000130700021D8F19CB3398E500B357F500F8 -:10CDE000B318E60033E807013313E50013D6080152 -:10CDF0003355C80293960801C182935703013377D4 -:10CE0000C802B385A60242073368F700637AB80008 -:10CE100046989307F5FF636418016365B8303E8553 -:10CE20003308B8403357C802420313530301337821 -:10CE3000C802B386E602420833686800637BD80004 -:10CE400046989307F7FF6365180179176363D80065 -:10CE50003E874205598D8145828001E60547B358DA -:10CE6000C702416763E8E80EB707000163EAF828E4 -:10CE700093D68801E147171700001307678C369790 -:10CE80001423BE9693070002958FFDE7939E080139 -:10CE90003387154113DF080193DE0E018545935753 -:10CEA00003013355E7033377E703B306D50342079E -:10CEB000D98F63FAD700C6971307F5FF63E417010C -:10CEC00063E5D7263A85958F33D7E703420313539B -:10CED0000301B3F7E703B30ED703C207B3E7670055 -:10CEE00063FBD701C6979306F7FF63E51701791730 -:10CEF00063E3D70136874205598D828063E1D5040B -:10CF0000C16763E1F604B707000163E3F61E13D7B8 -:10CF1000860161489717000093878782BA97982304 -:10CF2000130E00024297330EEE40631A0E0C63EDAF -:10CF3000B61C3335C50013451500814582808145F7 -:10CF4000014582809307F00F63F3D71C13D7860047 -:10CF50002148C9B71307F00FC686E37E17F193D6B1 -:10CF60008800A14709BF1307F00FB286E37BC7E42F -:10CF700093568600A147B1B5B398F80033D6D500D3 -:10CF800013DF0801335EE6033397F500B356D5008F -:10CF9000558F939E080193DE0E013313F5009355D0 -:10CFA0000701B376E603B387CE03C206CD8E63FBDB -:10CFB000F600C6961306FEFF63E4161763F2F61634 -:10CFC000791EC6969D8E33D6E60393170701C1835B -:10CFD000B3F6E6033385CE02139706015D8F637BBC -:10CFE000A70046979307F6FF636817136376A712A7 -:10CFF0007916469793150E01098FD18D4DB5B3570C -:10D00000E600B396C601DD8E33D3E50013DF0601DB -:10D01000B357E303939E060193DE0E013398C501D7 -:10D020003357E50033680701935808013316C601EA -:10D030003373E303B385FE024203B368130163FB5A -:10D04000B800B6981387F7FF63EAD80C63F8B80CFA -:10D05000F917B698B388B84033D7E8034208135895 -:10D060000801B3F8E8033383EE02C208B3E5080110 -:10D0700063FB6500B6951308F7FF63EDD50863FB06 -:10D0800065087917B695C207416FD98F1307FFFF5F -:10D09000B3F6E70093D80701718F4182B38EE602A1 -:10D0A000B3856540B386C60213D80E013387E80204 -:10D0B000BA96C2963386C80263F3E6007A9693D88E -:10D0C0000601469663E2C5026385C5003E8581453B -:10D0D000828041677D17F98EC206B3FEEE003315DC -:10D0E000C501F696E374D5FE1385F7FF814582806E -:10D0F00013D70601414839BD93560601C147D1B146 -:10D1000093D60801C14785BB814505458280368796 -:10D11000014809B5428785BF3E86E9BDBA871DBF74 -:10D12000328E4DB579154698E5B97915C69761BB2C -:10D13000B3C7A5008D8B3307C50081E78D4763ED2D -:10D14000C700AA87637EE508942185078505A38F1C -:10D15000D7FEE3EBE7FE828093763500AA8789CA83 -:10D16000942185078505A38FD7FE93F63700C5BFA9 -:10D170009376C7FF138606FE63F0C70683A30500F8 -:10D1800083A2450083AF850003AFC50083AE0501D0 -:10D1900003AE450103A3850183A8C501938545021C -:10D1A00023A0770003A8C5FF23A2570023A4F701FB -:10D1B00023A6E70123A8D70123AAC70123AC670050 -:10D1C00023AE17019387470223AE07FF75B790413F -:10D1D0009107910523AEC7FEE3EBD7FEE3E6E7F642 -:10D1E00082800000F401FA00960064004B003200D7 -:10D1F0001E001400FB349B5F8000008000100000C4 -:10D20000000000003A5C0500745C0500EC5C050061 -:10D21000EC5C0500885C0500EC5C0500A25C050088 -:10D22000C05C0500EC5C0500D85C0500BE5D050037 -:10D23000DE5D05005A5E0500F05D05005A5E0500E2 -:10D240005A5E05005A5E0500125E05005A5E050032 -:10D250005A5E05005A5E0500365E0500E2180500BC -:10D26000C474050014190500288205008219050000 -:10D27000FA8105002C1A0500CC810500BA1A0500B8 -:10D280005C8C0500061B05005C8C0500581B050026 -:10D29000C28B05002C1A050078810500F01B0500E3 -:10D2A0008084050000000000000000002E1C050026 -:10D2B0000A850500961C05003E750500D6BC0500D4 -:10D2C000D6BC0500F8BC05000CBD050014BD05006A -:10D2D0001CBD050024BD05002CBD050034BD0500A6 -:10D2E0003CBD050044BD05007ABD050082BD0500BA -:10D2F0004ABD05000101020102010102010204040C -:10D3000006010401010101010404020104000000FE -:10D3100001010201020101020101040406010401EC -:10D3200001010101040102010100000014CA05000D -:10D3300020CA05005ECA050076CB05007ECB05003D -:10D34000BECB0500F6CB05002ACC05005CCC050061 -:10D3500018CB050090CC050018CD05009CD8050021 -:10D360007AD8050046DB050096DB050070DE050077 -:10D37000AEDC0500F2DC05002CDD050062DD0500F9 -:10D3800098DD05007AD80500DADD05004CDE0500E1 -:10D390000000000000000000000000000000008706 -:10D3A000070B0D1113171D1F25292B2F353B3D434F -:10D3B00047494F535961FF00080806002808060036 -:10D3C0002C0906008A070600AE090600140A0600AA -:10D3D000EA090600780A0600940A06009C0706007F -:10D3E000E00806008C0806005C2E06005C3B060088 -:10D3F000082F0600B23B0600262F0600A22F0600CB -:10D40000C82F060004300600DC3A0600563A060033 -:10D4100010310600343106009E310600303206001D -:10D42000CE390600F63806001E38060040270600F2 -:10D43000D03206001C3306005A3D0600FC3C0600B4 -:10D4400048330600DA340600203606009A36060015 -:10D4500016440600F23D0600C23D060046410600A5 -:10D4600018410600EE400600B44006008840060061 -:10D47000484206004C4206001C3F0600504206008F -:10D48000DE3E060054420600584206005C4206009A -:10D4900040420600CE3E0600983E0600444206008A -:10D4A000783E0600DE4106007C410600C63D0600CF -:10D4B00043483332563230785F424C455F4C4942E4 -:10D4C0005F56312E323000005AAF060066AF0600BC -:10D4D00072AF06007CAF060086AF0600A6AF06005E -:10D4E000B2AF0600BCAF0600C8AF0600D2AF060060 -:10D4F000DCAF0600E6AF0600F0AF0600FCAF0600AA -:10D5000006B0060010B0060074B006001AB006009F -:10D5100024B006002EB0060038B006004CB006005D -:10D5200074B0060074B0060074B0060074B0060053 -:10D5300074B0060074B0060074B0060074B0060043 -:10D5400054B0060042B0060074B006005EB006009B -:10D550006AB0060060B2060092B20600B2B20600DF -:10D56000CAB20600E0B20600FCB206001AB306001A -:10D570002CB306004AB3060062B306007CB3060073 -:10D5800094B30600AAB30600BEB30600D8B30600E3 -:10D59000EAB3060008B40600BAB50600D0B5060026 -:10D5A000E8B5060008B6060096B7060056B60600AF -:10D5B0002CB406006EB6060080B6060080B40600E5 -:10D5C00080B4060052B506005CB5060088B60600B9 -:10D5D0002CB606009AB6060010B706005EB7060025 -:10D5E00048BE0600A4BB0600A4BB06008CBD060016 -:10D5F00040BC060088BB060040BE0600A4BB060077 -:10D6000034BD0600CABD0600A4BB0600A4BB0600CC -:10D61000A4BB0600A4BB0600A4BB0600A4BB060076 -:10D62000A4BB0600A4BB0600A4BB0600A4BB060066 -:10D63000FABB0600C0C00600A8C106007EC10600F5 -:10D64000E6C10600E6C106006EC20600B6C20600CC -:10D65000A8C10600A8C10600A8C10600A8C106000E -:10D66000A8C10600A8C10600A8C10600A8C10600FE -:10D67000A8C10600A8C10600A8C10600A8C10600EE -:10D68000DCC20600DCC20600E2C70600EEC70600E8 -:10D6900004C8060010C8060026C8060032C80600E6 -:10D6A0003CC8060044C806004CC8060056C8060020 -:10D6B00060C806006CC8060076C8060080C8060070 -:10D6C0008AC80600D4C80600D4C8060094C806005C -:10D6D000A0C80600AAC80600B4C80600BEC8060056 -:10D6E000C6C8060012C906002EC9060042C90600B7 -:10D6F00064CB060060C90600C6C90600DCC9060086 -:10D70000F2C906000CCA060026CA06003ACA06007C -:10D7100054CA060064CB06006ECA060064CB06003D -:10D7200064CB060082CA0600A8CA0600CECA06005C -:10D73000E8CA0600FCCA060010CB0600000102027F -:10D740000303030304040404040404040505050599 -:10D750000505050505050505050505050606060675 -:10D760000606060606060606060606060606060659 -:10D770000606060606060606060606060707070745 -:10D780000707070707070707070707070707070729 -:10D790000707070707070707070707070707070719 -:10D7A0000707070707070707070707070707070709 -:10D7B00007070707070707070707070708080808F5 -:10D7C00008080808080808080808080808080808D9 -:10D7D00008080808080808080808080808080808C9 -:10D7E00008080808080808080808080808080808B9 -:10D7F00008080808080808080808080808080808A9 -:10D800000808080808080808080808080808080898 -:10D810000808080808080808080808080808080888 -:10D820000808080808080808080808080808080878 -:0CD830000808080808080808080808088C -:08D83C000200000058D80600AC -:02D84400012AB7 -:02D84800A62A0E -:02D84C000328AF -:02D850000229AB -:02D85400002AA8 -:02D858000018B6 -:02D85C000118B1 -:02D8600002289C -:02D86400042A94 -:02D86800002896 -:02D86C00012891 -:02D87000052A87 -:10D874000200000068D80600010000003CD8060041 -:10D88400020000004CD8060001000000AF1D00207B -:10D894000200000054D8060001000000E41E00202D -:10D8A400020000004CD8060001000000AC1D00205E -:10D8B4000200000044D8060001000000281E0020D9 -:10D8C400020000004CD8060001000000B01D00203A -:10D8D4000200000064D8060001000000B41D00200E -:10D8E400020000004CD8060001000000AE1D00201C -:10D8F4000200000048D8060001000000AD1D002011 -:10D90400185805003259050000000000020000000C -:10D9140068D8060001000000C01D002002000000BD -:10D924004CD8060001000000CB1D002002000000BE -:10D9340070D8060000000000000000000200000093 -:10D9440050D80600030000000000000000000000A2 -:10D95400E47605000000000000000000C3812F01F0 -:10D9640002010202020000005000A0000000E803CF -:10D97400FFFF0000020000005CD806000100FF2049 -:0CD984000105020101100101FF0000007C +:10426000014582800145828001458280014582802E +:10427000411106C622C41821930700086313F702F0 +:1042800018319306C002854763E1E606B7E70600EA +:104290000A07938787CBBA979C432A218297814745 +:1042A000A9A09306100885476311D7041831CD469D +:1042B0006301D70E63E2E602A146630AD708B1465E +:1042C0006308D70A95466312D7022A21EFD0FFB7B9 +:1042D0002A8415E9894711A8930600036306D70EBF +:1042E00063EAE600E9466307D70CB24022443E8504 +:1042F00041018280930770056304F70E930717F05E +:10430000B337F000DDB7832785118DC70356450409 +:104310000506420641829C4313071600420741836B +:104320008DE72312C40419C60E240545EF608042B0 +:10433000231204040345B402034644050E24EF602F +:1043400020402285EFD0BFA099BF3A86E9B72A2145 +:10435000EFD0BFAF2A843DDD0346C5040E250345DB +:10436000B5023336C000EF60E03DA305040205BF8F +:104370002A21EFD09FAD2A8431DD035725058356CE +:1043800005050346F5040E250345B502EF60C03B65 +:10439000E9BF2A21EFD07FAB2A840DDD0356450407 +:1043A00019C60E250545EF60E03A23120404A30860 +:1043B0000402F5B52A21EFD05FA9E30D05F003450E +:1043C000B502EF606039E1BD2A21EFD01FA82A8431 +:1043D000E30205F00E250345B502EF60203871B702 +:1043E0002A21EF60E03765BD011122CC26CA4AC8F8 +:1043F00006CE374402402EC632C48324C4202A8904 +:10440000232604200F100000114597C0F91FE780F4 +:10441000C0E20DC5B2452246231125010CA110B101 +:1044200023269420B72700206244F240D244424918 +:10443000AA8503C5B76305616FC00EA62326942025 +:10444000F2406244D24442491145056182804111E3 +:1044500026C24AC006C622C4B744024003A9C420EB +:1044600023A604200F100000EFD03F9E11E923A6E1 +:1044700024210945B24022449244024941018280EC +:1044800083270512230D05002A84A9CF7835058BD3 +:1044900011EF0A24014693050008EFF0FFF431C53F +:1044A000B747024023A627210145E9B7D443D027C7 +:1044B0008C270A258906EF60C02A15E1832704129C +:1044C000BA27A3840700136707F0BAA79C432320E9 +:1044D000F4128357240481C7FD172311F4048327A2 +:1044E0000412C5FB2311040465BF85473CAC4DBFD6 +:1044F000797122D406D6BC312E8423160100DC87C4 +:10450000DC21100802C05C87DC318A8502C2DC86AF +:1045100002C402C802CA02CC02CE97D0F91FE780BB +:1045200020270347F1011C200145631EF7000347C4 +:10453000E1011C3001456318F7000345D1013C201F +:104540001D8D13351500B250225445618280B73756 +:10455000002083A7878F91E382806384A700DC5FBC +:10456000DDBF411122C406C63C252A8491C79305AC +:10457000C5006905EFA0AFFB3C2891CB9305440132 +:104580001305A4022244B24041016FA04FFAB24089 +:10459000224441018280AA862E86AA8537450600DC +:1045A0001305855A6FC00EF6B7370020138787832F +:1045B0000327070C411126C206C622C493848783B1 +:1045C00011E7B24022449244410182806304A70073 +:1045D000585FFDB73C252A8491C79305C50069053E +:1045E000EFA0EFF43C2899C7930544011305A402FA +:1045F000EFA0EFF322852244CC58B240924441010F +:104600006FF07FF901114AC8373900209307898379 +:1046100022CC03A4070C26CA4EC652C456C206CEEC +:10462000AA84014A1309898393094500854A65E0F4 +:10463000930520251305000497C0F91FE78080A08B +:104640002A841D4545CCBC3019469385440013058A +:1046500044003CB097C0F91FE780E0CD938AA401E5 +:1046600041468145568597C0F91FE78060E579E1AD +:104670009309A401D68541464E8597C0F91FE7806E +:1046800000E185473CA43C309305C4004E8593E788 +:1046900027003CB4EFA0AFE99384A40241468145D2 +:1046A000268597C0F91FE780A0E141E99307A4029E +:1046B000A6853E854146BE8497C0F91FE78020DD70 +:1046C00085473CA83C3093054401268593E72700A5 +:1046D0003CB8EFA0CFE5A300040083254903228561 +:1046E000EFF07FEB631E0A042320890C232E0402C3 +:1046F0008347C90B01458507230EF90AF24062443E +:10470000D2444249B249224A924A056182803830F5 +:10471000BC306305F700228A405C11BF4146CE855C +:104720001305440097C0F91FE780E0D1E31555FF5A +:104730004945E9B72305040085B72309040061BF93 +:10474000232E8A0265B7011126CAB7340020938749 +:10475000848322CC03A4070C4AC806CE4EC6938499 +:1047600084837D5901ECF240624423A0040C238E23 +:10477000040A4249D244B249056182800820EFC050 +:104780006EF28329C40323002401228597C0F91FF8 +:10479000E78040984E84F9B7B73700209387878326 +:1047A000238E070A23A0070C6FA06FE101114EC6EC +:1047B00006CE22CC26CA4AC8EFD0AFFAAA892DC5A8 +:1047C000EFD0AFE82A8475C1930710113EA5930777 +:1047D00000FB7CA53729002085471CA99307896821 +:1047E0009E2B1307401013098968A5073E85C20751 +:1047F000C1836374F700130540101317050141834B +:10480000930700046374F700130500044205930541 +:104810003025418197C0F91FE780C0822328A4106A +:1048200001ED0A24EFD07F82F24062444E85D244EB +:104830004249B24905618280B737002083A7079AB1 +:10484000B734002093848483232AF41083A7440D73 +:1048500003A7040D2285232EF40E2326F410BE3C5C +:10486000232CE40E2324E4102312F414FD57231008 +:10487000F4047EB01EB48347E4022313041493E7C8 +:1048800007FC2307F4028567938787BB2315F4048D +:10489000EFC08FCE034549012301A414EF1060310E +:1048A000A301A4142394040041B78549B5BF0111A5 +:1048B0004AC8373900209307898306CE22CC26CAFE +:1048C0004EC652C42A84A83383450403372A0020E5 +:1048D000A307A402EFC01E9A130A0A6D03588A00A8 +:1048E0003E3C93060032B72900203307F802232A02 +:1048F000A408130989833356D7023377D702930666 +:10490000204E2326C40837460F001306062433071B +:10491000D702B387D70233470703B3D7A7021AB02A +:1049200013878968642B93898968BE941E3C93849D +:10493000C417C2048507B387D702C18081462312FA +:104940009408858FB3B5070333850703EF80F04CD8 +:104950008327840883264A00AA9733B5A7002E959B +:1049600001E53E8763E4D7003387D740834774036C +:104970002328E4081307204EB387E7028604228524 +:10498000BE9423119408EFC08F8B2285EFC0EFB93E +:104990006E3C22859205F915C205C181EFC06F8674 +:1049A0002285EFD06FF8B737002083A7C795232E55 +:1049B0008908898B91CF83A7490399CB83258409E3 +:1049C0003545829783A749038325C40939458297D2 +:1049D000228562442317090023280900F240D244AB +:1049E0004249B249224A05616FC0FF860357050854 +:1049F00089468357450863F3E6000947B397E70004 +:104A00002313F5086FC09E96011122CC26CA4AC80E +:104A100006CE4EC6834765032A84373900208507B2 +:104A2000230BF5023C39B7340020639207505C2514 +:104A3000143913070004BD9B93E737005CA59397D7 +:104A40008601A30D050038B9E18763D8070093F606 +:104A5000F60714B9EFF06FA639A88327850A13F774 +:104A6000270035C3F59B2324F50A83270510918B76 +:104A7000A1CBEFD07F92383C8547631CF704832796 +:104A800084115824DC4398A3832784115838DC43CD +:104A900098B3032784118327499A5843B8DB83A727 +:104AA0000497B70680009843558F98C3D857719BD9 +:104AB000D8D7F2406244D2444249B249056182806B +:104AC000EFD09F8B4DBF13F717000DC3F99B232425 +:104AD000F50A83270411582498A383270411583812 +:104AE00098B38327499A032704114DBF1829854994 +:104AF0006317371DF1C713F7070119C7BD9B23249F +:104B0000F50AEFD07FC085BF13F7070201CB93F7FB +:104B1000F7FD2324F50AEFD07FD1B1BF13F70704C7 +:104B200001CB93F7F7FB2324F50AEFD09F8BA1B7B6 +:104B300013F7070809CB93F7F7F72324F50A228523 +:104B4000EFE09F9D0DBF13F7072009CB93F7F7DF29 +:104B50002324F50A2285EFD03F9231BF13F7074097 +:104B600001CB93F7F7BF2324F50AEFF0CF9421B7D9 +:104B700013974701635B07007D771307F77FF98F72 +:104B80002324F50AEFD0BF9DFDB513973701635A73 +:104B900007007D777D17F98F2324F50AEFD09F9EBC +:104BA000D9BD13972701635A070079777D17F98FCD +:104BB0002324F50AEFD09FAA7DBD2324050A11BF47 +:104BC0008327450A6386072213F7070401CB93F76F +:104BD000F7FB2322F50AEFD0EFF371BD13F70710AF +:104BE00001CB93F7F7EF2322F50AEFD09FB661B51B +:104BF00013F7072019CBCD8A6398060E93F7F7DFDA +:104C00002322F50AEFD09FB9BDB513F7074001CBBA +:104C100093F7F7BF2322F50AEFD02FFAA9BD139718 +:104C20004701635B07007D771307F77FF98F232226 +:104C3000F50AEFE03F8381B513973701635C070006 +:104C4000CD8ADDE27D777D17F98F2322F50AEFD03B +:104C5000AFFA15B513971701635A070071777D17DF +:104C6000F98F2322F50AEFD0BF8931B51397E700FA +:104C7000635A070001777D17F98F2322F50AEFD0D9 +:104C80001F8CD5BB1397B700635B07003707F0FF96 +:104C90007D17F98F2322F50AEFD03F95E9BB1397D3 +:104CA0008700635B0700370780FF7D17F98F23229A +:104CB000F50AEFE01FFDC1B32322050A19BD0DC798 +:104CC000930780036300F72063E5E70C9307700206 +:104CD000630EF71C63E2E704F5476309F71C63E71B +:104CE000E700ED47630EF71A2285ADB39307100274 +:104CF000630DF71C93075002E318F7FE8327051096 +:104D0000918B6388071E8D472306F502EFD0CFE80D +:104D10001C38DD9B1CB8B1AA9307E002630EF71C98 +:104D200063EFE7029307A002E310F7FCEFD04FD741 +:104D30008347D40491CB41469305C40A1305C40CA0 +:104D400097B0F91FE780205F8347C4042326040E31 +:104D50002328040E93E717002306F40429BB9307C6 +:104D60001003E300F7DA93076003E31FF7F697C039 +:104D7000F91FE78080D5E30005D08547A306F4043A +:104D80002285EFD06FD78347C404F99B2306F40430 +:104D9000DDB19307B0046307F71863ECE7029307EC +:104DA00010046300F70CE3F1E7F41307B7FB137784 +:104DB000F70F8549E3EAE9F2EFE03FF08327040AC1 +:104DC000230834012311040693E747002320F40A43 +:104DD0005DB193076005E30FF7D663E2E70293073F +:104DE0001005E30EF7D493075005E31FF7EE228575 +:104DF00097C0F91FE78060CDE30F05C6F5B59307AF +:104E00008005E306F7FE9307A005E31FF7EC0347D1 +:104E1000A51419CB034665148547B397C70063856E +:104E2000E70093E6060114B90347B41401CF8346A3 +:104E300074148547B397D7006386E7001C3893E75F +:104E400007011CB87C2C91CB1C38C18B99E78327B8 +:104E5000040A93E707202320F40A2285EFE0FFE508 +:104E600009A88347B50285C705476397E700EFD0D8 +:104E7000FF9B85471CA801B183270510918BB5C7FF +:104E8000BD472306F4022285EFD00FD1DDB7EFE056 +:104E9000DFE28327040A93E727002320F40AD1BF27 +:104EA000EFD06FBDD947230AF404F1B62285EFE0B5 +:104EB000DFE08327040A93E717002320F40A23087E +:104EC000040055BEEFE07FDFDDBF83278510858BB3 +:104ED00081C7EFD04FFE45B6E947A305F50283270A +:104EE0000510918B99C38D4769BF2285EFD0CFC83C +:104EF00049B7EFD06FC829BD8347C5042322050EEB +:104F00002324050E93E727002306F504EFD00FBBFB +:104F10001C38A3050402DD9B1CB88327040A93E711 +:104F20000701A5BFEFD0EFCB23083401A9B6B737EF +:104F30000020938787839A2B05079AAB2DBE797142 +:104F400026D2B73400209387848322D403A4870910 +:104F50004ECE52CC56CA5AC8B7390020372A002044 +:104F6000B72A002037EB06004AD05EC606D662C4D8 +:104F700066C26AC0814B938484831389C997130ADC +:104F80000A6D938A8A68130BCBC07C241307000D2B +:104F90006398E718373C002083274C9A98430D8B81 +:104FA00005C737270020230A073AB84B619BB8CBC7 +:104FB00098431367870098C39C438D83858B89C76B +:104FC00001000100010001008347CA0089E797C082 +:104FD000F91FE78040D78347C404858B99C7A28512 +:104FE000054597D0F91FE780609883472414B73CA4 +:104FF000002003A60C9793F7F703139797015C56CD +:10500000B7050082FD15ED8FD98F5CD68327840903 +:1050100003274C9A1CC68327C4095CC25C4393E7F0 +:1050200017005CC38355C41B0356E41B034574146B +:105030009105930710FDC2057CA4C181930700FC74 +:10504000238EF996EF00D04D834574140546E6860D +:105050008357240803576408639FC5089387570341 +:1050600083254C9A0607BA97D04579777D17718FBB +:10507000D8C50100010003274C9A896586070CC733 +:10508000930500F82302B9007CD3B737002050C73E +:1050900003A7879F5C57F59B5CD783A7069783463A +:1050A000641313F6F607944393F606F8D18E94C36F +:1050B0008346C40403264C9A858AA9C2944393F676 +:1050C000F6E794C3944393F6F6E793E6061094C389 +:1050D0001C47B7063300D58F1CC7930790073CCAFF +:1050E000A3020900A300090085471CC297D0F91F3D +:1050F000E780209F59BD938797049DB7944393F60B +:10510000F6E794C3944393F6F6E793E6061094C348 +:105110001C47B7063300D58F1CC793079005C1B74E +:105120001307100D6392E75283C7C997858B638776 +:10513000074683C7C997E207E18763DF070A7C3424 +:1051400093F707028DC33E3C1307204EB387E70257 +:1051500003274409B3D7E70203C76A01130707050A +:10516000BA972312F408835C4408035D8A0037462B +:105170000F0013859C04B325A5038146130606245E +:10518000032CC9013305AD02EF8020490327C40871 +:1051900083264A003305A74033078501BA85636437 +:1051A000A7006364D700B305D740032704096363EE +:1051B000B71403566408835724080D8F131516007F +:1051C000AA97B387A70337450F001308F5231305E4 +:1051D0000524C297B3D7A7026366F700B387F640EA +:1051E00063F4E7002328B4089357160063E6971189 +:1051F0002313F408231004088345C4040325441131 +:105200009306240313064403858997D0F91FE7808A +:10521000E08F8347440303C764042303A900998FE5 +:10522000230AF40283476900858B639F072683471F +:10523000A40293E727002305F40283C7C997E20776 +:10524000E18763D307028347641313D7370093F6CC +:10525000770022978547B397D7008346071393C7F4 +:10526000F7FFF58F2308F7127C34898BCDC7228591 +:10527000EFB01FB14DE17C34A309040093E7470070 +:105280007CB4832784118DCB383C1DC79837058BA0 +:1052900005E7BA27C843136707F0BAA797B0F91F05 +:1052A000E78040E78357440485072312F4048327EB +:1052B00084119C43232CF4105C3881CB8347C404B5 +:1052C000898B81C72285EFB0FFAF1C28130720020E +:1052D0006397E7028327040AA305040293E7870084 +:1052E0002320F40A1C3893E787001CB89307400278 +:1052F0001CA815A0369775BD23139409E5BD1307A7 +:105300000006639BE70A85471CA88347A40293E72E +:1053100017002305F40283476900898BFDC3834787 +:10532000C404858BF9CF1C3C85071CBC7C3413F767 +:10533000270015EF93E727007CB4930700F85CACD7 +:105340003E3C1307204EB387E70203274409B3D737 +:10535000E70203C76A0113070705BA97C207C183AB +:105360002312F40886072311F40823AE04082285CB +:10537000238E0996EFF04FE90345641489474C38B2 +:10538000631BF51203458414910513652500EF0096 +:10539000B00E5C386386071C8347C404898B638125 +:1053A000071CA285014597C0F91FE780E0546306FA +:1053B0000510EF00902D8DAC130770066399E7027E +:1053C000B737002003A70797230509007C53ED9BFF +:1053D0007CD3372702408347870493F7D70F2304F2 +:1053E000F7045C2493F7F7FD5CA4854711B7714778 +:1053F000E393E7F28327040A93E717002320F40AD4 +:1054000019BF2285EFB0FF9915F1A30C0400228586 +:10541000EFB05F941C38A18B8DCB7C289DC77C3866 +:10542000094793F7B70F6382E7029307D003230A74 +:10543000F404930770021CA88347C404858BE38798 +:1054400007EE2285EFB01F9DD5B55C340D47639004 +:10545000E7047C381307A0026372F7027C381D470B +:105460006384E702A306F4028327840A228593E774 +:1054700017002324F40AEFC03FE639A08A07DA9721 +:105480009C432285829779F97C28DDF745B591CB3D +:105490007C28E38D07E8228597B0F91FE7808072AA +:1054A000AA8BE3950BE8CDB71C2C85071CACFE241A +:1054B0008507FEA4A5BD9105D9BDB737002003A778 +:1054C0000797B70633001C4393F7F7E71CC31C4349 +:1054D00093F7F7E793E707101CC3B737002003A73C +:1054E000879F1C47D58F1CC7B737002083A7479AD3 +:1054F0001307A007B8CBB737002083A70797B706D5 +:1055000080009843558F98C3D857719BD8D793077D +:1055100020FD7CA48347CA00E39A07BC83270412BA +:10552000E38607BC7834058BE30207BCD443D0275D +:105530008C270A248906EF50C022E31905BA832775 +:105540000412BA27136707F0BAA79C432320F4126A +:1055500083572404E38C07B8FD172311F40479B6AC +:10556000B737002003A70797B70633001C4393F70C +:10557000F7E71CC31C4393F7F7E793E707101CC337 +:10558000B737002003A7879F1C47D58F1CC7B737A5 +:10559000002083A7479A1307A005A9BFB7370020AB +:1055A00083A7479AFC53E392079EEF00100E83C730 +:1055B000C9972285E207E18763D4071CEFF00FC388 +:1055C000BE28035704048507C207C183BEA829CF9C +:1055D000930640063377D70221EB373700200327A5 +:1055E000C795098B15CF3729002013098968032730 +:1055F00049031DC78E282545C205DD8D02978327E7 +:105600004903EE2429458297832749038315240300 +:105610002D458297832749038305440331458297AB +:105620002397040023A8040022852254B2509254E8 +:105630000259F249624AD24A424BB24B224C924C36 +:10564000024D45616FB0BFCB1307200DE393E7D642 +:1056500083471900858B638807128327040AA300F8 +:105660000900139727016346070E228597B0F91F9B +:10567000E780A0618547631EF50C8355C41B035664 +:10568000E41B034574149105C205C181512D834764 +:10569000C404373C0020B73C0020858B373D0020F8 +:1056A000B5CFA285054597C0F91FE780202C03A739 +:1056B0000C97B70633001C4393F7F7E71CC31C4352 +:1056C00093F7F7E793E707101CC303278D9F1C4749 +:1056D000D58F1CC783274C9A13079007B8CB032795 +:1056E0004C9A930710FD7CA45447F977FD17F58F6A +:1056F0005CC70F10000003274C9A89671CC79307EB +:1057000000F82302F90083A70C979C43B1838D8B8B +:1057100095EF930760197CD354C7C9BA03A70C97B8 +:10572000B70633001C4393F7F7E71CC31C4393F7FA +:10573000F7E793E707101CC303278D9F1C47D58FFE +:105740001CC783274C9A1307900549BF9307E01B9A +:10575000D9B7252F1C3C85C793F7070F81CB93053D +:10576000D0032285EFB03FCDA305A402B7270020C8 +:1057700083A7C76B89C79545130550088297228573 +:10578000EFC08F8A55B5B737002083A7479AFC53DF +:10579000639D07FEDD2DE5B7411106C6EFB04F94BE +:1057A000B737002037470600938787831307C77AE8 +:1057B00023A6E70A375706001307E78A23A8E70A54 +:1057C000B240B7570600373700209387E7F323240A +:1057D000F79641018280011122CC373400209307D3 +:1057E000848326CA83A4870B4AC84EC652C456C2B5 +:1057F00006CE2A89814913048483130A2500854A29 +:10580000A1E493057025314597B0F91FE7808083A7 +:10581000AA840145A9CC834719001946930529009C +:105820009CB01385240097B0F91FE780C0B0832790 +:10583000840BB9E7232C940A23A404008347440B68 +:105840008507230AF40A1DA09830834719006305D1 +:10585000F700A68984446DB71946D28513852400C4 +:1058600097B0F91FE78020BEE31555FF0545F240CC +:105870006244D2444249B249224A924A0561828036 +:10588000E38C09FA23A4990045BF011126CAB73455 +:1058900000209387848322CC03A4870B4AC84EC67A +:1058A00052C456C206CEAA89014993848483130A3E +:1058B0002500854A19E80145F2406244D244424934 +:1058C000B249224A924A05618280183083C7190082 +:1058D0006305F70022890044F1BF1946D2851305FC +:1058E000240097B0F91FE78000B6E31555FF1C446C +:1058F0006315090023ACF40A19A02324F9002285BA +:1059000097B0F91FE780008183C7440B0545FD1759 +:10591000238AF40A55B7411122C437340020930773 +:10592000848303A5870B06C626C21304848311E96A +:10593000232C040A230A040AB2402244924441015F +:105940008280044597A0F91FE780C07C2685C5B7F3 +:10595000B73700209387878323AC070A238A070A77 +:105960008280B737002003A7479A011122CC2EC6A8 +:1059700032C406CE3C4B2A84354593E707083CCB1E +:105980007123B736002083A7C6960947B24598C34E +:1059900018302820220742052A9708202A97283005 +:1059A00062052A9798D758306820220742052A971F +:1059B00048202A97683062052A97D8D718342824B7 +:1059C000220742052A9708242A97283462052A9735 +:1059D00098DB58346824220742052A9748242A97DE +:1059E000683462052A97D8DB9831A821220742053E +:1059F0002A9788212A97A83162052A9798CFD8310B +:105A0000E821220742052A97C8212A97E831620532 +:105A10002A97D8CF9835A825220742052A978825A6 +:105A20002A97A83562052A9798D3D835E825220702 +:105A300042052A97C825EC352A97E2052E97D8D338 +:105A4000D843759BD8C3D84313671700D8C398436E +:105A50001367170098C3224683A7C696D843058BC1 +:105A600025EF23A007009C4F01451CA283A7C696E3 +:105A70009C4FA1831CB283A7C6969C4FC1833CA2B6 +:105A800083A7C6969C4FE1833CB283A7C696D84FA6 +:105A900058A2D84F218358B2D84F418378A2D84F0B +:105AA000618378B2985318A69853218318B69853F7 +:105AB000418338A69853618338B6D85358A6D85333 +:105AC000218358B6D853418378A6DC53E1837CB652 +:105AD000F2406244056182800100BDBFB7370020FB +:105AE00003A7479A011106CE22CC2EC632C43C4BE6 +:105AF0002A84354593E707083CCB09292246B2455D +:105B0000228597C0F91FE780A0C8F2406244014592 +:105B100005618280411106C6EFF0BFE4B240014545 +:105B200041018280B737002083A70797885B3D81BA +:105B3000620561858280B737002083A70797B70683 +:105B40008000371601809843130686EC558F98C362 +:105B50009843B7060010558F98C31307001DD8DB74 +:105B6000372700200347C76993169701D18ED4D7F2 +:105B7000D457370600821377F7037D166607F18E38 +:105B8000558FD8D7370709001307370898D3828075 +:105B9000B737002083A707979C5BC60713D567011B +:105BA00063D60700136505C0420541814205418562 +:105BB00082809307E00363EEA7041307400299472E +:105BC0006367A704694795476363A70451479147F3 +:105BD000636FA70241478D47636BA702314789472F +:105BE0006367A702294785476363A7022147814767 +:105BF000636FA7001947F557636BA7001147ED576F +:105C00006367A7000947B9576373A700D9573E8553 +:105C100082809D47EDBFBD57634EF5045D578D47AC +:105C20006348E504715795476344E50479579D47F8 +:105C30006340E504A547635DA0020547AD476309DE +:105C4000E5020947B5476305E5020D47C54763010E +:105C5000E5021147D547630DE5001547ED47630998 +:105C6000E50019479307F0036314E500930750021A +:105C70003E8582808547EDBFB737002083A74797D1 +:105C800099CB944BD04B9842518F98C294439C47E8 +:105C90009842D98F9CC2B737002003A80797B7371F +:105CA000002075779387C7979308F7FFB4270327DA +:105CB000080037330020054E9386E6090326439AF1 +:105CC000337717016319C5032320E8004846797725 +:105CD0007D17698F58C6010001000327439A0966A2 +:105CE000AD0510C7130600F8D0A38A05B695860542 +:105CF0006CD348C782800565498F2320E800484659 +:105D000079777D17698F58C6010001000327439AF0 +:105D10000966A90510C7130600F8D0A38E05F9B7C8 +:105D2000B737002083A7479789CFD44303A88700BC +:105D300098423367070198C2D447DC4B9842D98F09 +:105D40009CC23737002003488797B7370020373782 +:105D500000209376250083A7079713781800130770 +:105D6000C797B5C2944375757D15E98E0965C98ECF +:105D700094C3B70609009386660894D3B726300803 +:105D8000C516D4CBB71603009386966194CF8D6663 +:105D90009386E68D94D7B766000193860631D4D3F7 +:105DA000B7A63F0063140800B7A634009386F64DEB +:105DB0009E0594CB938545360CCB19C2060610CBB5 +:105DC000230207008280B70609009386360894D321 +:105DD000B726100893861690D4CBB7160300938687 +:105DE000466294CF8D669386E68B94D7B7660001A2 +:105DF00093860631D4D363060802B7A63F00938684 +:105E0000E62C94CBF5761388F6FF944385489505E8 +:105E1000B3F60601631C150194C38E059385C50373 +:105E200061BFB72632009386062DE1BF0565C98E96 +:105E300094C39205E5B7B73700201387C797142797 +:105E400021476393E604373700200347879A4111BF +:105E500022C41384C797B737002006C69387879C50 +:105E6000058BB033B42311CFC84301CD0C310905E4 +:105E7000EF00505F19C185471CB4B2402244410174 +:105E8000828081450145EDB7828037370020832726 +:105E9000479AB44BE19AB4CB944393E6860094C3FB +:105EA0009C438D83858B89C701000100010001009F +:105EB000B737002083A607979C4293F7F7E793E74D +:105EC00007089CC2B737002003A6879FB706CEFFFE +:105ED000FD161C46F58F1CC68327479A23A8070486 +:105EE000B737002083A7479799CBD4439047984270 +:105EF000518F98C2944BDC4B9842D98F9CC2B737D4 +:105F000000209387C797A3830700828041114AC06E +:105F1000B747024006C622C426C203A9C72023A64B +:105F200007200F100000B737002083A7479A9C4333 +:105F30008D8BB9CB373400209307C497FC330D47C2 +:105F4000AA841304C497631AF700B737002083A705 +:105F5000879B014681454545829719476390E40434 +:105F60001C3491C71C2463949700A30404007C3064 +:105F700021476315F700930780101EA4B727002060 +:105F8000238A073AEFF07FF0B2402244B74702403D +:105F900023A6272192440249410182809D476399AB +:105FA000F4001C34E9D718248D47E312F7FC75BFC1 +:105FB00074306309D70078306386E7007C3021476E +:105FC000E31EF7FA1C34DDFB7C301CA485471CB4AF +:105FD00075B7011122CC2A8411452EC632C436C2AF +:105FE00006CEEFF0BFF2B737002083A70797B708B8 +:105FF0003300D857719B13671700D8D73737002065 +:106000000325479A1307000A78D198431377F7E7D7 +:1060100098C398431377F7E71367071098C3373788 +:1060200000200327879FB245924603288700224617 +:1060300033681801232407011308A0052328050548 +:10604000D1C54C5713640404F5994CD71377F40762 +:106050008043137404F8598C3747767180C3130753 +:10606000971298C7375755001307575537340020F4 +:10607000D8C39307C4979853B6851304C49738D9E7 +:1060800023810700A38107005841799B58C111471C +:106090000145F8B397C0F91FE78040AFB73700203C +:1060A00003A7479711C7544318479C42D98F9CC2F6 +:1060B0003C30858B81CBB7370020938787839A2725 +:1060C00005079AA7F2406244056182804C57F59912 +:1060D0004CD71377F4078043137404F8598C37C7EF +:1060E000898E80C3130767EDADBFB737002023AAA1 +:1060F000A79619C9584154491C43D58F1CC3184948 +:1061000014451C43D58F1CC38280011126CA4AC87E +:106110004EC6C1643709006AB70900AC22CC52C42C +:1061200006CE0544FD141309690E9389E90C130A80 +:10613000000205E49305000F4145EFB00E9CB7B790 +:10614000006A4205938767CE5D8DF2406244D24477 +:106150004249B249224A05618280A6850145EFB0D5 +:106160000E9C9317850013F7071033E5270119C319 +:1061700033E5370181470147E145B356F50085070F +:106180003356F500858A058A6307D600050713771D +:10619000F70F63E4E504E39247FF81471306F0033A +:1061A000ED463357F5001377F70305CB6307C702B6 +:1061B0008507E398D7FE135785009377F50F13777C +:1061C000F70FE394E7F8135705011377F70FE39EF2 +:1061D000E7F613578501E39AE7F605041374F40F05 +:1061E00089BF011122CC373400201304C4977830C2 +:1061F00006CE26CA4AC84EC652C456C29147638DBF +:10620000E70A7830638AE70AB737002003A7C79602 +:10621000B7440240938704306310F70A03AAC420EE +:1062200023A604200F1000003545EFF03FCEB73A0B +:10623000002083A70A97F576FD169843B73900200A +:1062400037390020758F8566558F98C39843B706F8 +:1062500033001377F7E798C398431377F7E713678B +:10626000071098C303A7899F1C47D58F1CC7832796 +:10627000499A1307D005B8CBEF107037EF20F00A1A +:10628000EF10D01EEF10D02703A70A971C4393F7F7 +:10629000F7E793E707081CC383A6899F3707CEFF5C +:1062A0007D179C46F98F9CC68327499A23A807042B +:1062B000A303040023A64421F2406244D24442498D +:1062C000B249224A924A05618280B7370020238C66 +:1062D0000796B737002023AA0796B7470240938650 +:1062E0000730373700202326D79693860720373785 +:1062F00000202322D79AB756024037370020232C9C +:10630000D79E938707103737002041112328F7962F +:10631000B737002006C69387C7970547F8B33727D6 +:10632000002003278768D8D31307071198D30928BB +:10633000EF100073EFF03F80B24041016FF07FEA51 +:10634000B737002083A7479A1307C0089306C006F3 +:10635000D8CBD4CFD8D31306C003D0D7D8DBD0DF67 +:10636000F8C3373700200327079AF4C7F8DB4167E3 +:106370007D1798C73D673D07D8C78280B737002093 +:106380003735002003A7879F1306859AB73700206B +:1063900083A607971C3213F8F707D9C55C429042D1 +:1063A000137606F83366060190C213F6150001CA8B +:1063B00093F5050341466386C506938787C1505709 +:1063C0004168130808A01366260050D733D6070388 +:1063D000B70810FEFD18B3F707037D8A9315460131 +:1063E0007043337616014D8E70C31306A00FB705A8 +:1063F000FCFFAA07B3D7C70270436D8EBA07B983F3 +:10640000D18F7CC38347859A898B99CB9C4293F724 +:10641000F70713E707049C4293F707F8D98F9CC24C +:1064200082809387078361BF5C57F59B5CD79C4252 +:1064300093F707F8B3E707019CC2E9B74111B737F3 +:10644000002006C6238B079CEFF03FA4B240014515 +:1064500041018280411122C4373400201304C497C3 +:106460003C3006C6858B85C3EFF05FFDB737002053 +:1064700003A3879BA30104000146814505452244EF +:10648000B24041010283B737002083A7479AFC53EB +:1064900099EBEFF0BFFAB737002003A3879B0146C3 +:1064A00081454545E9BF7C300D476317F700B727A5 +:1064B00000200547238AE73AB24022444101828006 +:1064C000411126C2B73400204AC006C622C4138731 +:1064D000C4973C2337390020858BE5C7B7370020A8 +:1064E00003A7879F9384C497238104005C573734A4 +:1064F00000200345849A8583858B1304849AB1CB4D +:10650000504093760503C145930786C16394B60056 +:1065100093070683C165938505A0B3D6B7023708F4 +:1065200010FE7D18B3F7B702FD8A13964601744337 +:10653000B3F60601D18E74C39306A00F3706FCFF95 +:10654000AA07B3D7D7027443F18EBA07B983D58FA0 +:106550007CC34C2C118501460D89EFF06FFC37652B +:1065600006001305C55F97A0F91FE78040220327A7 +:10657000499AF977FD175447F58F5CC70F10000053 +:106580000327499A89671CC7930700F8DCA0B7372F +:10659000002083A707979C43B1838D8B85E39307E6 +:1065A0006019032304017CD354C701468145054586 +:1065B0002244B24092440249410102839307E01B06 +:1065C000CDB78327499AFC5399EBEFF03FE7B737F4 +:1065D000002003A3879B014681454545D1BF7C33FD +:1065E0000D476317F700B72700200547238AE73ACE +:1065F000B24022449244024941018280011122CCDE +:106600003734002006CE26CA1307C4973C33858B47 +:10661000C9C3EFF0BFE21304C497485081458146D7 +:106620001306F100A301040097B0F91FE780004EA4 +:1066300093158501B7340020E1859384849C89ED0E +:106640005C509306F00F98236308D7009C30638555 +:10665000D7006303F7008945B73700200387879A7F +:10666000634507005850948714A39387879A9C4BDF +:10667000505093F5F50F09458297DC24898B89C723 +:1066800088288545EFA06EB5F2406244D24405618A +:106690008280B737002083A7479AFC5381EFEFF041 +:1066A000FFD9B737002083A7879B0146814549451D +:1066B0008297D9BF7C330D47E318F7FCB72700203A +:1066C0000547238AE73AC9B7397126DA5AD05ECE30 +:1066D00006DE22DC4AD84ED652D456D293070008A2 +:1066E000AA8BAE84328B6319F602373400203D4901 +:1066F0001304849A97C0F91FE780E0B0E37CA9FEF9 +:106700003C2C9607C117E3E7A7FEB737002083A705 +:10671000479A1307000AF8D3373A002003270A974D +:10672000B73A002013848A9A5C578145B739002014 +:10673000F19B93E717005CD7083037390020EFF062 +:10674000FFC383270A973706330098431377F7E789 +:1067500098C398431377F7E71367071098C3373741 +:1067600000208326879F9846518F98C603A7499A91 +:106770009306A00534CB144494C754443734002006 +:106780001304C497D4C35C4393E717005CC3130797 +:10679000899C7C271309899C93E727007CA7930792 +:1067A000FBFF93F7F70F05476366F70A0850268645 +:1067B000DE852300650104B1090597A0F91FE78074 +:1067C00080B7185083A7499A93950401C181B8DB1B +:1067D000230104000D47A301040078B0130700084B +:1067E0006317EB08F8537DFFB727002083A7C7671F +:1067F0002EC6829703278900B2456363E506198D8B +:106800001C50B70480000D811387F42F6205598D49 +:1068100088C303C58A9A11850D89EFF0EFC58327D8 +:106820000A979843458F98C3D857719BD8D783A7A9 +:10683000499AA3020400A3000400094798C3F25038 +:106840006254D2544259B259225A925A025BF24BC4 +:106850002161828093070008E315FBF6894495B710 +:10686000B727002083A7476D998F3E9551BF03C579 +:106870008A9A11850D89EFF02FC083270A97B706F2 +:10688000800037750600984313058577558F98C3A8 +:10689000D857719BD8D797A0F91FE78040EF83A7FF +:1068A000499A23060900A3020400A3000400094733 +:1068B00098C38347C90093F7F70FE5DF49B7011184 +:1068C000300099451305001006CEEFA01EC80DED4F +:1068D00019469305F00F280097A0F91FE78040BEE6 +:1068E00085476303F50219469305F00F280097A02A +:1068F000F91FE780E0AA3000994513050010EFA0CA +:106900007EEE0545EFA05EE9F240056182801C49FC +:10691000638C0712411126C206C622C44AC01C213C +:10692000AA8493F7070481C75C410945C5CF37396D +:1069300000201306000281451305899A97A0F91FCC +:10694000E78000A613060002A6851305899A97A082 +:10695000F91FE780409E9307899A9C3F1304899A08 +:1069600081E7930780021CBC3C2C99E3A1473CAC17 +:106970003C3C99E3C5473CBC5C2C99E3ED575CACCF +:106980005C3C99E3ED575CBC9C2093F7070499CBE2 +:106990005C4037B724001307F7E9636BF7049307EC +:1069A00050021CB0B73400209387849CC843938462 +:1069B000849C09C59790F91FE780C0758347899A21 +:1069C00023A20400858B91CB483C930590040905D4 +:1069D0009790F91FE7800067C8C01C300145FCB4E0 +:1069E0001C44DCC8B24022449244024941018280E6 +:1069F000370725009306F74863EDF6003767DBFF9E +:106A000013070793BA971307007DB3D7E702FD1763 +:106A100049BF130707496395E7009307600251B721 +:106A200037D725001307F777636DF7003767DBFF6C +:106A300013070793BA971307007DB3D7E702F91737 +:106A40008DB793077002B1BF0545828079714AD036 +:106A5000373900209307899A9C4706D622D426D23C +:106A60004ECE52CC56CA5AC85EC662C466C26AC00E +:106A70006388071E373400209307C497FC331547FB +:106A80002A8C1304C4970945630AF7180D45373B50 +:106A90000020AE84B28BB68CEFF04FC793078B9C6F +:106AA000DC27130D899A93098B9C898B8DC73D4AEE +:106AB00097B0F91FE7802075E37CAAFE8347AD01FC +:106AC0009607C117E3E6A7FEB737002083A7479ACA +:106AD0001307000AF8D3B73A002003A70A975C57B8 +:106AE000F19B93E717005CD783C7C900898B99E7AF +:106AF0008347899A93F707046390071403451D00A1 +:106B00008145EFF0BF8783A70A9737063300373AEE +:106B1000002098431377F7E798C398431377F7E774 +:106B20001367071098C3373700208326879F98463E +:106B3000518F98C603274A9A9306A00534CB832623 +:106B40008D0094C78326CD00D4C38347899A93F6DA +:106B500017005C43F99BD58F5CC383C7E90023040E +:106B60007B9DA380990193E727002387F9000850B4 +:106B700063080C0C2300750104B12686E285090523 +:106B80009790F91FE780207B1C5003274A9A3CDB33 +:106B900023010400A30104008D477CB083C7C90012 +:106BA000898B9DC77C53FDFFB727002083A7C7674C +:106BB000829703A789006369E508198D1C50890431 +:106BC00093F4F40F84B30D81A6972380070088B354 +:106BD0000345899AA68511850D89EFF0EF898347D2 +:106BE000899A858BADCB376506001305054C97A0B8 +:106BF000F91FE780C0B983A70A97B706800001454F +:106C00009843558F98C3D857719BD8D783274A9AF2 +:106C1000A3020400A3000400094798C3B250225401 +:106C200092540259F249624AD24A424BB24B224C28 +:106C3000924C024D45618280894503254D00D1B5B6 +:106C400023207501814489B7B727002083A7476DAA +:106C5000998F3E95A5B7376506001305454541BF99 +:106C600005456DBF397156D2B747024006DE22DCBA +:106C700026DA4AD84ED652D45AD05ECE62CC83AAF7 +:106C8000C72023A607200F100000B7340020138769 +:106C9000849A184705E323A657210545F25062540C +:106CA000D2544259B259225A925A025BF24B624C68 +:106CB00021618280373700200327478D09C723A62B +:106CC00057210945E1BF83C7849A328C138A849A7D +:106CD000858BB68B2E862A89B9CB37340020930753 +:106CE000849CDC431304849C89EF0345DA012EC69F +:106CF0009305900409059790F91FE780A034324668 +:106D000048C05C4099E7B747024023A657210D458C +:106D100071B7382098A35C40630A090421CA90B374 +:106D20004840CA8509059790F91FE780C060373B46 +:106D300000209307CB97FC3315471309CB97630AC1 +:106D4000F7008347890019476385E7000D47639281 +:106D5000E7028347990089E7930780102314F9001D +:106D6000B747024023A6572101450DBFA380070066 +:106D70007DBFB739002083A7499A98430D8B05C77B +:106D800037270020230A073AB84B619BB8CB9843BA +:106D90001367870098C39C438D83858B89C7010047 +:106DA00001000100010083A7499A096737340020D8 +:106DB00023A2070698C7230209009307849CDC27B7 +:106DC0001304849C918B91E783C5849A93F70504FF +:106DD000F1EF03451A008145EFF04FDA03C5849ABD +:106DE0008345CA01014611850D89EFE07FF33737EE +:106DF00000208327079783268A0094C78326CA002A +:106E0000D4C383C7849A83A6499ABA8413F6170019 +:106E1000DC42F99BD18FDCC25C40A30184012301D9 +:106E20007401BCDA7C2493E747007CA49307000438 +:106E3000230EFB96A147A303F900B727002083A7E1 +:106E4000476B99C7082813060064C145EF90DED64A +:106E500083A7499ADC43858BADC3377506001305BC +:106E6000051097A0F91FE780809203A70497B70643 +:106E700033001C4393F7F7E71CC31C4393F7F7E772 +:106E800093E707101CC3B737002003A7879F1C4751 +:106E9000D58F1CC783A7499A13079005B8CBA302C7 +:106EA0000900A3000900054798C35DBD93F50503DC +:106EB00093E5150003254A0005B73775060013054D +:106EC00045EC45B7797122D43734002006D626D256 +:106ED0004AD04ECE1307C4971C33858B6380071EA0 +:106EE0001304C497B7340020A30701008329440288 +:106EF000A3000400EFF08FD49387849CDC27938455 +:106F0000849C37390020918B6389071483C719004B +:106F1000CE979823930700086318F7008347899A50 +:106F200093E787002304F99A5C4C0D47637CF70CC8 +:106F3000F1175CCC5C4C984463ECE70C3387E7407A +:106F400083C71900D424CE979C33E206E1868E07CE +:106F500063DF060C63F4E70C1D8F9306000263E801 +:106F6000E600584C636FF70AB307F7409CC48828C3 +:106F70008945EF909EA68347899AA18BF1CBB737BD +:106F8000002083A6479A9307800C1307F00FFCD2CA +:106F90001C5037063300014598C323010400B7375E +:106FA0000020A301040003A70797A3020400230203 +:106FB00004001C4393F7F7E71CC31C4393F7F7E760 +:106FC00093E707101CC3B737002003A7879F8345AB +:106FD000899A1C4791858D89D18F1CC79307A0057D +:106FE000BCCA054697B0F91FE78040BA8347899A23 +:106FF000B420B030DD9B2304F99A81450145EFF0C0 +:107000007FC675A0372700200327476DBA970DB7B5 +:10701000B726002083A6466DB6970DB73387E740A5 +:107020002DBFB726002083A6466D369735BF584C36 +:10703000636AF700B307F7409CC4DC2493E70708B2 +:10704000DCA435B7B726002083A6466D3697DDB79A +:1070500083C71900F917A380F9004850814681457C +:107060001306F10097B0F91FE78040AA5C50931512 +:1070700085019306F00F9823E1856309D700BC30A2 +:107080006386D7006304F70093E525008307899A98 +:1070900063C6070081E59C872380F9001309899A5C +:1070A00083270901505093F5F50F0D458297B25093 +:1070B000225492540259F24945618280B737002028 +:1070C00083A7479AFC539DE3EFF04FB7B727002003 +:1070D00083A7C76B89C78545130510088297B73703 +:1070E00000209387879CB423B03301BF7C332147B2 +:1070F000E31FF7FAB72700200547238AE73A45BF81 +:10710000797122D4373400208347C49706D626D21B +:107110004AD04ECE52CC858B638F07209307C497FD +:1071200083A9470281461306F10081454E85230E4F +:107130000496A307010097B0F91FE780209D131A5A +:107140008501B7340020135A8A411304C4979384ED +:10715000849C631E0A00BC309306F00F6389D7003D +:10716000585018236305D7006303F700094A3739DD +:1071700000208307899A63C6071263160A129C8748 +:107180002380F900DC24918BBDCB5C4C0D47637AE6 +:10719000F714F1175CCC5C4C984463EAE71433872E +:1071A000E74083C71900D424CE979C33E206E186DA +:1071B0008E0763DD061463F2E7141D8F9306000249 +:1071C00063E8E600584C636DF712B307F7409CC4C0 +:1071D00088288945EF907E8083C719003387F9009E +:1071E0001423130700086394E6141C501307F00FD0 +:1071F00098C38347899A93E787002304F99AB7379E +:10720000002003A7879F5C578583858BB1C39307B5 +:10721000899ADC43C165938505A0B3D6B7023705CB +:1072200010FE7D15B3F7B702FD8A1396460174432D +:10723000E98ED18E74C39306A00F3706FCFFAA0710 +:10724000B3D7D7027443F18EBA07B983D58F7CC305 +:10725000DC400345899A8C3311850D89EFE0DFA16D +:1072600037750600130505389790F91FE7802052FF +:10727000B737002083A70797B70680009843558F3C +:1072800098C3D857719BD8D78347899AA18BB1E30C +:107290001309899A83270901505081450D4582972A +:1072A0000DA8E3010AEEEFE05FBE1309899A505082 +:1072B000832709010D459375FA0F8297C840B420C2 +:1072C000B03001C50C31090519A081450145EFF029 +:1072D0007F99B250225492540259F249624A456150 +:1072E0008280372700200327476DBA975DB5B72600 +:1072F000002083A6466DB6975DB53387E7407DBD18 +:10730000B726002083A6466D3697C1B5584C636AF0 +:10731000F700B307F7409CC4DC2493E70708DCA41C +:1073200045BDB726002083A6466D3697DDB7F91711 +:10733000A380F900E9B5B737002083A7479AFC532B +:1073400085E7EFF0AF8FB727002083A7C76B89C70A +:107350008945130510088297B73700209387879CCB +:10736000C843B033B423B1BF1304C4977C30214762 +:10737000E311F7F6B72700200547238AE73A91BFC4 +:107380004111B737002006C622C49387C7979833A8 +:10739000058B1DC7A3800700EFF04F8AB737002089 +:1073A00003C7879A3E84218B29E39387879A03A397 +:1073B00007010146814511452244B2404101028343 +:1073C000B737002083A7479AFC53A1EBB7370020BB +:1073D00003C7879A3E84218B09EB9387879A03A37F +:1073E0000701014681455145C1BFB737002093874A +:1073F000879CC843B033B42311CD0C310905EFF09D +:107400007F868347849ADD9B2304F49AB24022440A +:107410004101828081450145DDB7B727002005473E +:10742000238AE73AE5B7411126C2B747024006C6AC +:1074300022C483A4C72023A607200F1000003734DE +:1074400000209307849CC843238707001304849C6F +:1074500009C59790F91FE780E0CBB7370020138765 +:10746000C7971837232204009387C79719C7942713 +:1074700021476394E600A3840700F83399466386A6 +:10748000E600F8339D466396E600F83398A7054773 +:1074900098B7EFE09F9F0828B7270020C145238AAF +:1074A000073AEF907E99B2402244B747024023A6A4 +:1074B00097200145924441018280411126C2B73490 +:1074C000002006C622C44AC0EFF0FFF51389849C51 +:1074D0008347F900373400201304849A1CB0034515 +:1074E000090183274901A1459384849C1CC4EF9022 +:1074F000BE94034509019145EF901E948347C9004E +:10750000898B95C31C48014681451305200282974B +:10751000224423860400B240924402498945014531 +:1075200041016F907EA9DC24918BFDD31C4801465C +:10753000814513054002E1BF797126D2B73400209E +:1075400006D622D44AD04ECE52CC56CA5AC85EC6AF +:1075500062C41387849C5C27898B63870710373448 +:1075600000209307C497FC338D461304C49763919E +:10757000F602082B91452254B25092540259F24916 +:10758000624AD24A424BB24B224C45616F90EEC4E4 +:107590003545797A9384849CEFE05F97A149373B26 +:1075A0000020373900207D1A896B130600088145B9 +:1075B0000145856AEFF04F91130C00F8938A2AF980 +:1075C0003C20858B8DE78327499AFC53F5FBFD19F9 +:1075D000E39D09FC2254B25092540259F249624A86 +:1075E000D24A424BB24B224C45616FF01FED03452E +:1075F0008B9A01469305F00F11850D892301040034 +:10760000EFE00FF283458B9A1306F00F0545918545 +:107610008D8997A0F91FE78060573C30858B81CF1B +:10762000A3010400EFE09FE1DC248545882893E76F +:107630000708DCA489B7EFE07FE08327499AD847A1 +:10764000B3764701D4C7010001008327499A23A4D8 +:1076500077012302840123A25707D8C78327499AB9 +:10766000FC53B5D30100DDBFB250225492540259ED +:10767000F249624AD24A424BB24B224C4561828067 +:10768000411122C406C693F715002E84B1C3B73743 +:1076900000209387879CD827098B0DC7D827882B74 +:1076A0001306000593178701E18763DA0700B737F0 +:1076B000002003C6179C9307000A3306F602914583 +:1076C000EF908ECF13451400B240224441018280D6 +:1076D00093F72500A9C3B73700209387879CD82745 +:1076E000118B1DC7D827882B1306000A9317870113 +:1076F000E18763DC0700B737002003C6179C9307B8 +:10770000000A3306F60213068602A145EF90CECAA0 +:107710001345240055BF93F7450091C7EFF0DFE113 +:107720001345440055B793F7850089CFB73700203C +:107730009387879CDC27918B99C3EFF01FD8134563 +:10774000840059B793F705010145BDDFEF901EC2D4 +:10775000B73700209387C797FC332147631BF70097 +:10776000B737002003C5879D13060064C145EF901D +:10777000AEC41345040189BF011126CAB7340020E5 +:107780009384C497BC204AC806CE3739002022CC47 +:107790004EC652C4858B1309899C63890716B73975 +:1077A000002003C5899A01469305000211850D89C1 +:1077B00023810400EFE0CFD683C5899A1306F00F2A +:1077C000054591858D8997A0F91FE780203CBC3045 +:1077D000858B638D0712C850A38104008146014642 +:1077E00081452381040097A0F91FE78020322A8A6F +:1077F000631E0510C050954738206319F710B72550 +:10780000002019469385056A130594009790F91F87 +:10781000E78060C38547631BF50E9C50194781457F +:1078200098C303C5899A11850D89EFE0EFC483C51C +:10783000899A01460D4591858D8997A0F91FE780AA +:10784000E034BC20858BF9C3B727002083A7C76726 +:107850002381040082972324A900EFF0DFBC3C3889 +:107860001387899AA30007001CBF5C28A3060900A0 +:1078700001463CAF5C389389899A930500023CBF6E +:1078800014287C34A206DD8E1C38C207DD8E3C280D +:10789000E207D58F1CC774387C28A206DD8E1C2C0D +:1078A000C207DD8E1C3CA3080900E207D58F5CCB24 +:1078B0000147B3D6E700858A89C6050A137AFA0F0D +:1078C00005460507E317B7FE19C2A30849013C2C7A +:1078D0003735002093053400238CF9001946894779 +:1078E0001305459E2306F9009790F91FE780A0A491 +:1078F000624403450901F240D2444249B249224A56 +:1079000013068002914505616F900EABEFE0EFD753 +:10791000F2406244FD572306F900D2444249B2497D +:10792000224A05618280B73700209386879CD8263B +:107930009387879C1377F70F5DE7D42637360020AF +:107940001307869A93F6F60FC1EA8346869A93F652 +:107950000604D9C2B7B7240048C39387F7E963E1A7 +:10796000A702930750021CB3B73700209387C7972D +:10797000FC330D4789456303F70085456FE01FA081 +:10798000B70725009386F74863EDA600B767DBFFCE +:1079900093870793AA979306007DB3D7D702FD1765 +:1079A000D9B7938707496315F5009307600265BF50 +:1079B000B7D725009387F77763EDA700B767DBFF9D +:1079C00093870793AA979306007DB3D7D702F91739 +:1079D00059BF9307700241BF9376F50F14B3F4B704 +:1079E0008145368561BF8280411106C622C4EFE021 +:1079F000DF8D373400201305849C13064002814537 +:107A00009790F91FE780C09937750600FD57130559 +:107A100005682324F49CEF908EEC1304849C08A842 +:107A2000B2402244014541018280B737002083A63D +:107A3000879F056713071710D8C6514701007D17A8 +:107A400075FF03A7879F23260700514701007D1775 +:107A500075FF03A7879F8567938717105CC7828090 +:107A6000411106C6EFF07FFCB737002083A7879F40 +:107A7000130700483703009098D7B8477D13370E97 +:107A80000020337767003367C701B8C7B847B70628 +:107A900000F9FD16758F37060004518FB8C7B84737 +:107AA0003706F9FF7D16419B13679700B8C7B847A3 +:107AB000B7080080B70E0002718FB8C7B847370605 +:107AC00000FF7D1633671701B8C7F84745757D1E5F +:107AD000619B13673700F8C7F8471377F7F8136708 +:107AE0000703F8C7EC4793F5F58F93E50530ECC72E +:107AF000F847718FF8C7F84711663367D701F8C7A1 +:107B000003A807051307F5FF7D753378E800336890 +:107B1000C80023A8070503A847057D15137808FFAB +:107B20001368C80023AA0705F04B13660608F0CBBC +:107B3000F04B698EF0CBC85F798D2167598DC8DF16 +:107B4000CC5F37070040F58DB3E5D501CCDFD05FC2 +:107B5000B70570003376C601598ED0DFD05709675C +:107B60004D8ED0D7D057F18ED4D7D45775767D1699 +:107B7000F18ED98ED4D7D4573706FDFF7D1637073F +:107B80000200F18ED98ED4D7945BC19A94DB945BBA +:107B900093F6F6F094DB945B93F6F68F94DB985BA8 +:107BA000B70600504D8F98DB985B33776700558F91 +:107BB00098DB985FB70608FFFD16758FB7061000B3 +:107BC000558F98DF985FB368170123AC1703B24055 +:107BD00041018280B737002083A7879FB7060090B6 +:107BE000FD16F84F758FF8CFF84FB70690FFFD16CA +:107BF000758FF8CFF84FB706F9FFFD16758FF8CFE0 +:107C0000B44B45771306F7FFF18E2567D98EB4CBB9 +:107C1000B847B7060007558FB8C7B847B706007012 +:107C2000558FB8C7B847B70607001367F700B8C73E +:107C3000B847558FB8C7B8479D66718F558FB8C77D +:107C4000B847B706000113670730B8C7F84713678E +:107C50000770F8C7F847558FF8C7F8471377F7F854 +:107C6000F8C7F84713677700F8C7828037370020D6 +:107C70008327879F41767D16B44BF18EB4CB944712 +:107C800037062000D18E94C7D44793E60601D4C7A7 +:107C9000D447BD9AD4C7010001000100010083262A +:107CA000879F0566DC4693E70701DCC6DC42D18F7F +:107CB000DCC2B737002003A6479A930700057CD2A1 +:107CC0007C5291C783A7C609A183858BF5DB010090 +:107CD0000100010001008327879F416603A7C709B0 +:107CE000B44BD18EB4CB9376F701B84B019B558F33 +:107CF000B8CB9847B706E0FFFD16758F98C782800E +:107D0000B737002083A7879F41777D17B44F41661F +:107D1000F98EB4CF9447D18E94C7D44793F6F6EF3B +:107D2000D4C7D443758FD8C3D44793E60610D4C7BD +:107D3000D843518FD8C38280AA873DC114211947E7 +:107D400005456390E6069033B423AC333727002013 +:107D50002309C74437270020A309D7443737002019 +:107D6000230EB79ECC23373700202306B79ECC3393 +:107D700037370020A30EB79EF823B7370020238A99 +:107D8000E79E3737002011CA89CAB7573412938744 +:107D900087672328F79E014582802328079EE5BF39 +:107DA0000545828039C199471CA1B727002083C7A8 +:107DB00027451CB1B727002083C737453CA1B737FB +:107DC000002083C7C79F3CB1B737002083C7C79E39 +:107DD0005CA1B737002083C7D79F5CB1B7370020BD +:107DE00083C7479F7CA101458280054582805D71E4 +:107DF000A2C4373400208327849FA6C24EDE86C6E5 +:107E0000CAC052DC56DA5AD85ED662D466D26AD07C +:107E10006ECED843FD76FD161377F7EFD8C398578B +:107E2000B725002093853545758F98D7D857B70665 +:107E30000200B72400203D9BD8D79847938424455F +:107E4000B7390020558F98C7D843B736002013673D +:107E50000701D8C303A6069F375734121307876755 +:107E60002EC6E300E64CD84301791309F90F799B3C +:107E7000D8C3985FB166938606F033772701558F94 +:107E800098DFD84313671700D8C397A0F91FE7807E +:107E9000E0418327849FB24603A707091377F703BE +:107EA00098A003A7470929831377F70798A2D84317 +:107EB000B96693860670799BD8C3985F337727019C +:107EC000558F98DFD84313671700D8C397A0F91FC1 +:107ED000E780C03D8327849FB736002003A70709AA +:107EE0001377F703A38EE69E03A74709B736002052 +:107EF00029831377F707238AE69ED843B5669386CE +:107F00000630799BD8C3985F33772701558F98DF68 +:107F1000D84313671700D8C397A0F91FE78000392B +:107F20000327849F8327070993F7F703238EF99E7E +:107F30008327470937370020A98393F7F7072306DC +:107F4000F79E83C7C99F94207D7E3EC42247832726 +:107F5000849F130EFE0F998E03A7070A13F6F600EF +:107F600013054002419B518F23A0E70A13076002CB +:107F70003387E6021306700283A5070A45737D1353 +:107F800093F5F5F013043002B708F1FFFD1813085C +:107F900020023347C702930E10027D4FF94FF5427E +:107FA000F1436D4D514CC944C54B3D49B949B14AA6 +:107FB0002D4B354A3D8B12074D8F9305500223A060 +:107FC000E70A3387B60283A5070AB3F5C50133472D +:107FD000C7023D8B22074D8F23A0E70A3387A602F5 +:107FE00083A5070A370500F17D15B3F56500334712 +:107FF000C7023D8B32074D8F23A0E70A33878602E5 +:1080000083A5070A6144B3F515013347C7023D8BC9 +:1080100042074D8F23A0E70A3387060383A5070A8B +:10802000370810FF7D18B3F505013347C7023D8BB4 +:1080300052074D8F23A0E70A3387D60383A5070A8B +:10804000B70E0010FD1EE98D3347C7023D8B620756 +:108050004D8F23A0E70A139756003347C7029315A5 +:10806000C70103A7070A3377D7014D8F23A0E70A7B +:108070003387E6035D4F3347C7029375F70003A7C5 +:10808000470A419B4D8F23A2E70A3387F60383A556 +:10809000470AD94F93F5F5F03347C7023D8B1207D6 +:1080A0004D8F23A2E70A3387560283A5470AD5429C +:1080B000B3F5C5013347C7023D8B22074D8F23A27D +:1080C000E70A3387760283A5470ACD43B3F56500F7 +:1080D0003347C7023D8B32074D8F23A2E70A338710 +:1080E000A60383A5470A294DB3F515013347C702F7 +:1080F0003D8B42074D8F23A2E70A69473387E6028B +:1081000083A5470AB3F505013347C7023D8B5207E4 +:108110004D8FE54523A2E70A3387B60283A5470AB8 +:10812000E98D3347C7023D8B62074D8F23A2E70AD3 +:10813000338786020D443347C7029315C70103A74F +:10814000470A3377D7014D8FB385E60323A2E70AA9 +:1081500003A7870A254F419BB3C5C502BD894D8F33 +:1081600023A4E70A3387F60383A5870A9D4F93F577 +:10817000F5F03347C7023D8B12074D8F23A4E70A62 +:108180003387560283A5870A9942B3F5C501334761 +:10819000C7023D8B22074D8F23A4E70A338786034E +:1081A00083A5870AB3F565003347C7023D8B3207C5 +:1081B0004D8F23A4E70A3387760283A5870A954368 +:1081C000B3F515013347C7023D8B42074D8F23A4FA +:1081D000E70A3387960283A5870AB3F5050133477B +:1081E000C7023D8B52074D8F23A4E70A33877603DE +:1081F00083A5870AE98D3347C7023D8B62074D8F00 +:1082000093954600B3C5C50223A4E70A03A7870ACE +:108210003377D701F2054D8FB385260323A4E70AF0 +:1082200003A7C70A419BB3C5C502BD894D8F23A6CD +:10823000E70A3387360383A5C70A93F5F5F033477A +:10824000C7023D8B12074D8FB3C5860223A6E70AEE +:1082500003A7C70A3377C701BD89A2054D8F23A69F +:10826000E70A3387560383A5C70AB3F5650033478A +:10827000C7023D8B32074D8F23A6E70A338766037B +:1082800083A5C70AB3F515013347C7023D8B4207E3 +:108290004D8F23A6E70A3387A60383A5C70AB3F544 +:1082A00005013347C7023D8B52074D8F23A6E70ACE +:1082B0003387E60383A5C70AE98D3347C7023D8BA1 +:1082C00062074D8F93953600B3C5C50223A6E70A12 +:1082D00003A7C70A3377D701F2054D8FB385F6039D +:1082E00023A6E70A03A7070B419BB3C5C502BD89B7 +:1082F0004D8F23A8E70A3387560283A5070B93F512 +:10830000F5F03347C7023D8B12074D8F23A8E70ACC +:108310003387760283A5070BB3F5C5013347C70240 +:108320003D8B22074D8F23A8E70A1397260033477A +:10833000C70283A5070BB3F565003D8B32074D8F50 +:10834000B3C5460323A8E70A03A7070B3377170132 +:10835000BD89C2054D8F23A8E70A1397160033473E +:10836000C70283A5070BB3F505013D8B52074D8F5F +:10837000B3C5C60223A8E70A03A7070B698FBD8907 +:10838000E2054D8F23A8E70A03A7070B9305800298 +:108390003377D70123A8E70A37370020A24C0347D9 +:1083A000D79F3387EC40B34DB70283AC470B93FCA8 +:1083B0000CFF334C870393FDFD00B3ECBC0123AAF3 +:1083C000970B83AC470BF14D93FCFCF0137CFC0046 +:1083D000120C33EC8C0123AA870B330C870283AC7D +:1083E000470BB3FCCC01334CBC02137CFC00220CC9 +:1083F00033EC8C01B34CA70323AA870B03AC470BC8 +:10840000337C6C0093FCFC00B20C336C9C0123AAFF +:10841000870B214C334C870383AC470BB3FC1C0107 +:10842000137CFC00420C33EC8C0123AA870B330C29 +:10843000570283AC470BB3FC0C01334CBC02137CDA +:10844000FC00520C33EC8C0123AA870B330CF7038E +:1084500083AC470BB3FCAC00334CBC02137CFC0078 +:10846000620C33EC8C01B34C770223AA870B03AC6C +:10847000470B337CDC01F20C336C9C01B30CE7033B +:1084800023AA870B03AC870B137C0CFFB3CCBC0275 +:10849000330B670393FCFC00336C9C0123AC870B0C +:1084A000114C83AC870B93FCFCF0334C8703B30A6D +:1084B0005703137CFC00120C33EC8C0123AC870BAC +:1084C00003AC870BF54C337CCC01334BBB02330A36 +:1084D0004703137BFB00220B336B6C0123AC670B50 +:1084E00003AB870B4D4C337B6B00B3CABA02B309A5 +:1084F000370393FAFA00B20AB36A5B0123AC570B55 +:1085000083AA870B594BB3FA1A01334ABA023309CB +:108510002703137AFA00420A33EA4A0123AC470BD5 +:1085200003AA870BDD4A337A0A01B3C9B90233497A +:10853000B90293F9F900D209B3693A0123AC370BB8 +:1085400083A9870B614AB3F9A900B30B77031379A9 +:10855000F900620933E929019319470023AC270B7D +:1085600003A9870B3379D901B3C9B902B3049702C0 +:10857000F2093369390123AC270B03A9C70BE5497D +:10858000137909FFB3CBBB02B3C4B40293FBFB0066 +:10859000B36B790123AE770B03A9C70BD54B1379C6 +:1085A000F9F0BD889204B364990023AE970AB3042E +:1085B000870303A9C70B794C3379C901B3C4B4024B +:1085C000BD88A204B364990023AE970A8944B344DA +:1085D000970203A9C70B33796900BD88B204B3645D +:1085E000990023AE970AB304770303A9C70BFD4B89 +:1085F00033791901B3C4B402BD88C204B3649900CD +:1086000023AE970AB304670303A9C70B130B100229 +:1086100033790901B3C4B402BD88D204B3649900AC +:1086200023AE970AB304570303A9C70B930A20028A +:108630003379A900B3C4B402BD88E204B3649900DD +:1086400023AE970AB304470303A9C70B130A3002EA +:108650003379D901B3C4B402F204B364990023AEF0 +:10866000970AB304370303A9070C9309400213794F +:1086700009FFB3C4B402BD88B3649900694923A05B +:10868000970CB304270303A9070C1379F9F0B3C4BB +:10869000B402BD889204B364990023A0970CED4402 +:1086A000B304970203A9070C3379C901B3C4B40218 +:1086B000BD88A204B364990023A0970CB304B70348 +:1086C00003A9070C33796900B3C4B402BD88B204AE +:1086D000B364990023A0970CB304970303A9070C74 +:1086E00033791901B3C4B402BD88C204B3649900DC +:1086F00023A0970CB304870303A9070C337909015E +:10870000B3C4B402BD88D204B364990023A0970C0B +:10871000B304770303A9070C3379A900B3C4B402E7 +:10872000BD88E204B364990023A0970C931457000A +:10873000B3C4B4021399C40183A4070C3306C7025F +:10874000B3F4D401B3E4240123A0970C03A9470C8C +:10875000137909FFB3046703B3C4B402BD88B364DB +:10876000990023A2970CB304570303A9470C13796C +:10877000F9F0B3C4B402BD889204B364990023A293 +:10878000970CB304470303A9470C3379C901B3C459 +:10879000B402BD88A204B364990023A2970CB30469 +:1087A000370303A9470C33796900B3C4B402BD8809 +:1087B000B204B36499001309500223A2970CB304C6 +:1087C000270303A9470C33791901B3C4B402BD8848 +:1087D000C204B364990023A2970C93046002B3040B +:1087E000970203A9470C33790901B3C4B402334695 +:1087F000B602BD88D204B364990023A2970C83A467 +:10880000470CE98C3D8A6206458E23A2C70C03A65D +:10881000470C9314C7013376D601458E23A2C70CAB +:10882000130690023306C70283A4870CC19833460F +:10883000B6023D8A458E23A4C70C1306A002330658 +:10884000C702B345B60203A6870C1376F6F0BD89BE +:108850009205D18D23A4B70C373600208345C69EE0 +:10886000373600200346469F03A9870C3386C54050 +:10887000B304A6033379C901B3C4E40293E48400CA +:10888000BD88A204B364990023A4970CB304E60343 +:1088900003A9870C33796900B3C4E40293E484002C +:1088A000BD88B204B364990023A4970C93143600D6 +:1088B000B3C4E40203A9870C3379190193E484005B +:1088C000BD88C204B364990023A4970CB304F603D3 +:1088D00003A9870C33790901B3C4E40293E484004B +:1088E000BD88D204B364990023A4970CB304560244 +:1088F00003A9870C3379A900B3C4E40293E484008C +:10890000BD88E204B364990023A4970CB3047602F3 +:1089100003A9870C3379D901B3C4E40293E484003A +:10892000F204B364990023A4970C93142600B3C4F3 +:10893000E40203A9C70C137909FF93E48400BD88FE +:10894000B364990023A6970CB304860203A9C70C4D +:108950001379F9F0B3C4E40293E48400BD8892046F +:10896000B364990023A6970C93141600B3C4E402D1 +:1089700003A9C70C3379C9013347E60293E48400A5 +:10898000BD88A204B364990023A6970C03A6C70C64 +:1089900033766600136787003D8B3207518F23A61D +:1089A000E70C03A7C70C3377170123A6E70C324760 +:1089B00018230D8F3346D70293F5F507E2053D8A5C +:1089C0009314460103A6C70C3304870233760601CD +:1089D000458E23A6C70C1316170083A4C70CE98C79 +:1089E0003346D6023D8A6206458E23A6C70C03A6EF +:1089F000C70C3344D402B37ED60113162700B30349 +:108A00007702720433E48E0023A6870C3346D60225 +:108A1000B3025702937EF60003A6070D419A336610 +:108A2000D60123A8C70C03A6070DB3C3D302137640 +:108A3000F6F0B3C2D20293F3F3009203B36376006D +:108A400023A8770C03A6070D337EC601B30FF703E7 +:108A500093F2F200A202B3625E0023A8570C03A6B1 +:108A6000070D3373660013163700B3CFDF02330FE1 +:108A7000E70393FFFF00B20FB36FF30123A8F70DD5 +:108A800003A3070DB37813013346D602330DA703B2 +:108A90003D8A420633E6C80023A8C70C03A6070D8B +:108AA00033780601334FDF02B346DD02137FFF0048 +:108AB000520F336FE80123A8E70D03A7070D798D47 +:108AC000BD8AE206C98E23A8D70CD84385663D9B94 +:108AD000D8C3D843799BD8C39857558F98D7D857C0 +:108AE00013670701D8D722479376F703985F137768 +:108AF00007FC558F98DF985FB7060081FD16758FCC +:108B0000D98D8CDFB640264496440649F259625A04 +:108B1000D25A425BB25B225C925C025DF24D6161B3 +:108B2000828023A8069E6FF0CFC1B737002003A72D +:108B3000879F5C4393E707105CC38280411106C6A0 +:108B4000E92593056040EF10B040B2400145410176 +:108B500082806F00A07011C589C501C61E22014523 +:108B60008DE301110565C9471306F100130555C3CF +:108B7000854506CEDC87EF10703DF24088870561A1 +:108B80008280828001111305910006CEE52D488474 +:108B90000565300025059D45EF10503BF2400884E7 +:108BA0000561828001119305F10006CE22CC2A8452 +:108BB000DD2D48860565C08670002180130555406F +:108BC00091454087EF109038F24062440886056175 +:108BD000828001111305D10006CEF525488609656E +:108BE000700009059145EF107036F2400886056166 +:108BF0008280011106CEED25C88709651306F100B4 +:108C000015058545EF109034F24088870561828014 +:108C1000011106CEEF002077C88709651306F10021 +:108C200029058545EF109032F240888705618280E2 +:108C3000011106CEEF00F049C88709651306F1005F +:108C400041058545EF109030F240888705618280AC +:108C5000011106CEEF005023C88709651306F10005 +:108C600045058545EF10902EF2408887056182808A +:108C7000411106C622C4EF00B0288965CD052A84BB +:108C8000EF10102D2285B240224441018280011153 +:108C900006CEEF00D048C88709651306F1005105DC +:108CA0008545EF10B02AF240888705618280011166 +:108CB0001305510006CEEF00D04C488209655000E4 +:108CC0006105A545EF109028F240014505618280BD +:108CD000411106C6EF00304E8965E505EF105027BB +:108CE000B240014541018280011106CE22CC2A8486 +:108CF000EF00D05D48860965C08670002180690557 +:108D00008D454087EF109024F24062440145056193 +:108D10008280011106CE22CC2A84EF00F0694886B9 +:108D20000965C086700021806D058D454087EF1074 +:108D3000F021F2406244014505618280011106CEB6 +:108D400022CC2A84352748860965C0867000218098 +:108D5000130505028D454087EF10501FF240624415 +:108D6000014505618280011106CE22CC2A84EF00E4 +:108D7000900448860965C08670002180130515029D +:108D80008D454087EF10901CF2406244014505611B +:108D90008280011106CE22CC2A84EF0090054886FD +:108DA0000965C08670002180130525028D45408726 +:108DB000EF10D019F2406244014505618280011133 +:108DC00006CEEF001064C88709651306F10013058D +:108DD00075028545EF109017F24088870561828003 +:108DE000011106CEEF00706CC88709651306F1000B +:108DF000130595028545EF107015F24088870561CF +:108E00008280011106CEEF00706EC88709651306D7 +:108E1000F1001305D5028545EF105013F240888705 +:108E200005618280011106CEEF001071C8870965C7 +:108E30001306F1001305E5028545EF103011F240ED +:108E4000888705618280011106CEEF007073C887A4 +:108E500009651306F100130515038545EF10100F82 +:108E6000F240888705618280411106C622C4EF0066 +:108E700030758965938525032A84EF10700D22854E +:108E8000B240224441018280011106CEEF10A02D94 +:108E9000C88709651306F100130575038545EF10B2 +:108EA000F00AF240888705618280011106CEEF103A +:108EB0006042C88709651306F100130585038545DF +:108EC000EF10D008F240888705618280011106CE3C +:108ED000EF10005AC88709651306F10013059503C2 +:108EE0008545EF10B006F2408887056182805D718C +:108EF0001303D1031AD20343010786C61AD00343D2 +:108F0000C1061ACE034381061ACC034341061ACA8E +:108F1000034301061AC80343C1051AC6034381056A +:108F20001AC4030341051AC2034301051AC0EF0026 +:108F30009070230EA1020965701813056503894519 +:108F4000EF10D000B6400345C1036161828037371E +:108F5000002093078783BE271307878381E7930742 +:108F6000F01F3EA73E272146014593F607108607CE +:108F7000C207B3D6C640C183558D93D5574093D60B +:108F80009740AD8E858A7D161375F50FD58F71FECE +:108F90003EA782803737002093078783DE27130799 +:108FA000878389E7E17793C7F7FF5EA75E27394696 +:108FB000014591689945B3F617018607C207B3D6F4 +:108FC000C640C183558D93D6E74013D8F700858AF4 +:108FD000B3C606017D161375F50FD58FE31DB6FCDC +:108FE0005EA78280011126CA4AC84EC656C2B7374C +:108FF000002006CE22CC52C45AC0AE893289B68A2D +:1090000083A4C79935C9AD472A8463EEA702130428 +:10901000F5FF1374F40F631D0906268A338B99003C +:1090200063124B071379F9009386FAFF2285238098 +:109030002401A380340193F6F60F4E868545EFC0D8 +:109040005FF9014505A0B147630BF5029307600284 +:1090500063E5A7001304E5FF6DBF93077002494560 +:10906000E30BF4FAF2406244D2444249B249224A44 +:10907000924A024B056182801304500269BF1304B7 +:10908000600251BFEFF0BFEC2301AA00050A49BFFF +:109090008547631CF9004E869305000F1385240055 +:1090A0009770F91FE780C02FB5BF89476316F90095 +:1090B0004E869305A00ADDB78D47631DF900268A09 +:1090C000338B9900E3004BF7EFF0DFEC2301AA00AC +:1090D000050ACDBF91476316F9004E869305F00F40 +:1090E00075BF95476315F9004E86814545BF994781 +:1090F0006315F9004E86BD4555B79D474945E313B5 +:10910000F9F64E869305500551BF9307F00363E8C7 +:10911000A704B7270020238EA768B737002003A62F +:109120000797B70600829377F5035856FD16939577 +:109130009701758F4D8F58D6373700208326879F2C +:109140000145984A1316E700635C0600984A717659 +:109150001306F60F718FA207D98F9CCA82804945EA +:109160008280AA8749CD2D47636BA7069307F5FF39 +:1091700093F7F70F373700200327879FB70600C103 +:10918000FD16084B93F7F703E207758DC98F1CCBCB +:10919000B727002083C7C76971761306F60F93F7C8 +:1091A000F703939687001C4B0145F18FD58F1CCB9D +:1091B0007C4FB706F9FFFD1693E747007CCF1C4BA9 +:1091C000F58FB7060200D58F1CCB9386864FB73735 +:1091D000002014C79387C7973147F8B3828031477F +:1091E0006302E502130760026365A7009307E5FFCA +:1091F00041B7130770024945E38EE7F68280930773 +:1092000050028DBF93076002B5B7011106CE9317C8 +:10921000450163D20702EF70EFF3894709C91421B2 +:109220001147B1476395E60095471CA1C947F24035 +:109230003E85056182802EC6EF803FC1C94765D952 +:109240003825418B6DD7B2453C35230AB50489E7F3 +:10925000E9471CA98147E1BFED47E5BF011106CEF3 +:1092600022CC2EC6EF807FBE01CDB2452A84EF808E +:109270008F9CA305A4020145F240624405618280EF +:109280004945DDBFB737002093878783014799465B +:1092900083C5070E3306E50005070CA28507E31911 +:1092A000D7FE01458280011106CE2EC6EF80FFB9A0 +:1092B00009C983074503B24501459CA1F2400561F8 +:1092C00082800945E5BFB7270020938787689A2BDE +:1092D00018A19A2B218318B1FC373CA1014582804B +:1092E00019E149458280B737002013878783784783 +:1092F000411122C406C62A849387878301C7182791 +:10930000314531EBF85B01C77833314529E703A7D5 +:10931000870801C7783331451DEF373500200547F1 +:109320001946A2851305E591B8A39770F91FE78048 +:1093300080005C301307000C93F7070C6391E70281 +:10934000373500201946A285130545929770F91FFD +:10935000E78060FE0145B24022444101828081EBFA +:10936000373500201946A2851305A592C5B7130706 +:1093700000044945E391E7FE373500201946A285F0 +:1093800013050593E1B7411126C2B7340020938736 +:10939000848322C4E04706C69384848311C43C4876 +:1093A000139747006342070CFC4C99E74945B240CC +:1093B000224492444101828001ED1305000FEF60C9 +:1093C000FFB86DD51C25FDD3EF60DFDA0145C5B7C9 +:1093D0000547E31DE5FC1DE8014582972A8459C530 +:1093E0008567938707805EAD930700703EA5B7350C +:1093F00000208D475CA9A308050219469385859135 +:10940000130525039770F91FE780E0F218248547BC +:10941000E30EF7F83C24B98B85C3382485476317DE +:10942000F70289475EAC224403A30406B24092448B +:109430001305000F41010283EF70BFA1B727002081 +:1094400083C7D7698D8BE31AF5FC8DB75E2C116746 +:109450006374F7005AACC1BF930600023E87E3FB7A +:10946000D7FE13070002FDB7314591B71D4581B7FF +:10947000011126CA4AC84EC652C456C25AC02E89C5 +:10948000368BBA89BE8A06CE22CCB284428AEF805D +:10949000DF9B1307A9FF4207856741839386A7C710 +:1094A00063E9E610938707C82A84494563E3970A6E +:1094B00063E1240B1307301F636D670963EB370902 +:1094C00093071B00B387970213973900860763D26F +:1094D000E70841C01C3813F747003DC3ED9B1CB89B +:1094E0003C34231A2407231B9406C5EF0357840634 +:1094F000C167FD176309F706631799063E3C231BF6 +:10950000E404231CF404B737002083D7078E8D466C +:10951000114763E5F600850713F7F70FA30AE40484 +:109520002285EF70DF9483570404A907231FF404F6 +:109530008327440A93E717002322F40AC5475CBC3B +:10954000231C5407231D4407231D6405231E3405D3 +:109550000145F2406244D2444249B249224A924A09 +:10956000024B056182808357440691CFB3D4F40245 +:109570004A87B3879702C207C1836373F9003E87A6 +:10958000231CE40449B7B305990085814A85EF702F +:109590001ED9231CA404930584052685EF50CFCB48 +:1095A0009DB78327840A93E707022324F40AC1475F +:1095B00079B7494579BF01112EC606CEEF80FF88E5 +:1095C000B24509E54945F240056182801C39A30591 +:1095D000B50213F747007DD7ED9B1CB9BD472306A5 +:1095E000F5028327850A93E727002324F50A01451E +:1095F000D9BF011106CE2EC632C4EF801F850327C6 +:109600008510137707023DCFB2459306000EAA8757 +:10961000138755FE42074183494563E2E606224629 +:10962000116713078714930686EBC206C18263682D +:10963000D70403D7071C01456303B704373700205D +:1096400093068783B636A38EB706239FC70693F586 +:10965000F50F1307878363F3D500AE865A37239837 +:10966000D71A6373E60032872399E71A03A7470ADC +:10967000856693860680558F23A2E70A0145F2404E +:10968000056182804545E5BFB73700201387878392 +:1096900078479387878311C7142781C614374947B2 +:1096A00085EAF85B19C7743389C654274947858A08 +:1096B00085E203A7870811C7743381C65437494729 +:1096C00081EA03C7470B83C7570B6365F7001D4744 +:1096D0003A8582800111C88419461305A10006CE7F +:1096E0009770F91FE78020C52800EFC0CF8E85470F +:1096F0001D476313F5000147F2403A8505618280FA +:10970000797126D24AD04ECE06D622D42E89B2897D +:1097100036C63AC43EC242C0EF802FF3C94455C595 +:109720009305A9FFC20505662A84C1811305A6C752 +:10973000C944636CB508130606C86368360963E656 +:109740002909B2469305301F63E1D5082247636EAD +:10975000E606138616003306260393153700635674 +:10976000B6061038B144058A2DE20326440A137662 +:10977000162021EE92470248231EE4043834231CAD +:10978000F406231A2407231B3407231D0407231D73 +:10979000D4045C3C814451EF8DEB83270410898B0A +:1097A0008DCF31469305F00F130584069770F91F8E +:1097B000E78000BF8327440A2314040693E70720A9 +:1097C0002322F40AC9475CBC8144B2502254268546 +:1097D00002599254F2494561828063093905B38583 +:1097E000290185814A85EF709EB3231CA40493054B +:1097F00084054E85EF504FA6B737002083D7078EDC +:109800008D46114763E5F600850713F7F70FA30AA6 +:10981000E4042285EF70AFE583570404A907231FF2 +:10982000F4048327440A93E7170059BF231C240537 +:10983000E1B7C1FF83278410898B8DC7314693051B +:10984000F00F130584069770F91FE78060B5832732 +:10985000440A2314040693E707202322F40ACD4781 +:109860005CBCA5B7E94495B73737002093078783D9 +:10987000FC471307878391C7942781C69437C9474C +:10988000B9E67C5B99C7F43389C6D427C947858A72 +:109890009DEE8327870891C7F83301C7D837C9479A +:1098A0001DE70111C88419461305A10006CE977063 +:1098B000F91FE78040A82800EFB03FFD0547B147FA +:1098C0006313E5008147F2403E85056182803E8555 +:1098D0008280B737002013878783784793878783F1 +:1098E00011C7142781C6183749450DEBF85B19C716 +:1098F000743389C658274945058B0DE383A787082C +:1099000091C7F83301C7DC37494589EB411106C6D9 +:10991000EFC06F80B240014541018280828025C145 +:10992000411122C426C206C6B737002083A4878C03 +:109930005C212A84FD8B5CA18DE037350020A28557 +:109940001305659315469770F91FE780C09EB240D6 +:1099500022449244014541018280BC3499EF83A79F +:10996000440A1546A28593E7270023A2F40A13852B +:1099700084129770F91FE780009C844075BF4945A9 +:109980008280411122C426C24AC006C62A890144E7 +:10999000A1449305F00F0545EF703E96B30789008B +:1099A00088A30504E31794FEB2402244924402497E +:1099B000014541018280011122CC4AC806CE26CA47 +:1099C0002EC632893684EF804FC87DCD3C35AA84BF +:1099D000B2450945D9EB2146138574189770F91FD4 +:1099E000E7806095A38724191359890023882419D7 +:1099F0007C2450346C345424A207420603C5C404AA +:109A0000B297AE97E20603A7440AB6972DC523A6E0 +:109A1000F40A3C24143413670702A207C206B6975F +:109A20003434B6971424E206B69723A8F40A7C20AF +:109A30005430A207C206B6977430B6975420E20697 +:109A4000B69723AAF40A3C201430A207C206B697A0 +:109A50003430B6971420E206B69723ACF40A854753 +:109A6000A386F40423A2E40A0145F2406244D244EE +:109A700042490561828023A6F40C3C241434136708 +:109A80008700A207C206B6973434B6971424E206BC +:109A9000B69723A8F40C7C205430A207C206B697D0 +:109AA0007430B6975420E206B69723AAF40C3C20F3 +:109AB0001430A207C206B6973430B6971420E206D7 +:109AC000B69723ACF40C79BF094545B7011106CE12 +:109AD0002EC6EF808FB779CD34350547AA87B245BA +:109AE0000545639FE606942B1307400201456399E1 +:109AF000E606F825D4352207C2063697F4353697A0 +:109B0000D425E206369783C6D704B1CE23A6E70A4A +:109B1000B82594352207C2063697B4353697942572 +:109B2000E206369723A8E70AF821D4312207C206B5 +:109B30003697F4313697D421E206369723AAE70AFE +:109B4000B82194312207C2063697B4313697942152 +:109B5000E206369723ACE70A1307A00298AB01454B +:109B6000F2400561828023A6E70CB82594352207D0 +:109B7000C2063697B43536979425E206369723A861 +:109B8000E70CF821D4312207C2063697F431369714 +:109B9000D421E206369723AAE70CB8219431220794 +:109BA000C2063697B43136979421E206369723AC35 +:109BB000E70C5DB705456DB7411106C6EF80EFA80C +:109BC0001DCD34350547AA8709456397E602942BD6 +:109BD000130740026392E6020D472386E702194706 +:109BE000A385E7021307500298AB03C7A7020145FC +:109BF000136717002385E702B240410182800945BF +:109C0000E5BFB73700202A871385878303481500EF +:109C10009387878363080802684511C50348850058 +:109C2000314563130808E85B11C5034875003145E9 +:109C3000631C080603A5870811C503487500314554 +:109C40006314080683C8C70B03C8D70B1D4563FD03 +:109C5000080583A7070D494593F70704B1C75D7150 +:109C6000A6C22800B284194686C6A2C4D883368408 +:109C70009760F91FE780206CA6851305E102414635 +:109C80009760F91FE780206BA2851305E10141462B +:109C90009760F91FE780206A4800EFA0BF96B640A2 +:109CA00026449644616182808280B7370020138702 +:109CB000878314339DC278479387878301C718270A +:109CC000494505E7F85B01C77833494519EF83A794 +:109CD000870881C7FC33494589EB411106C6EFA0CF +:109CE0009FA6B2400145410182808280B7370020A3 +:109CF000138787831433938787838DC2784701C77F +:109D0000142749478DE6F85B01C77433494785E25C +:109D100003A7870801C77433494791EA88B303A7AB +:109D2000870D01C91367076023ACE70C01473A852B +:109D300082801377F79FCDBF130700643305E502D8 +:109D4000B737002041119386878322C403A4060CF1 +:109D500026C24AC006C693848783C8DA1309F00F67 +:109D600001E8B24022449244024901454101828007 +:109D7000082063052501CC58EF607ECE405CCDB74E +:109D8000B737002013878783A30CA702137715002A +:109D90009387878311EB03C7C7036D8F6304B700F5 +:109DA00049458280238DE70213772500014501EBA9 +:109DB00003C7D703718FE315C7FEA38DC702828047 +:109DC000011106CE2EC632C436C23AC0EF80EF87EC +:109DD0002DC1B2450247924693F7150099EB2246F2 +:109DE0009D4763F6C7004545F24005618280230226 +:109DF000C514898991E59D47E3E7D7FEA302D514F1 +:109E000001CFB737002083D7A7877D8F0D8B85477C +:109E1000631EF7002314E51485477CAD8327450AAC +:109E20000567D98F2322F50A01457DBF2314051448 +:109E3000E5B7494555BF5D71A6C2B734002013830D +:109E400084830323C304CAC04EDE62D466D26AD0C0 +:109E500086C6A2C452DC56DA5AD85ED66ECE030C41 +:109E600041058349810503490106834CC106034D21 +:109E700001079384848363090302032303051314F6 +:109E80005300635304023143B640264496440649C6 +:109E9000F259625AD25A425BB25B225C925C025D1A +:109EA000F24D1A85616182800D4E4943E36EFEFCDE +:109EB00093FD0501638C0D08054EE397C9FD3AC675 +:109EC000468B42C43EC2B68BB28A2E842AC0EF6053 +:109ED000EF872A8A324711E9FC4C054582972A8A86 +:109EE0001D435DD1824732475CA193050002639117 +:109EF000BB028D456310B90A03558A019305900F83 +:109F000013035004E3E2A5F80355AA01E3EEA5F616 +:109F10009375F40F230EBA04638D0D1A3D88154511 +:109F20006312A408130510F82305AA004543E3EDC6 +:109F30005BF57D454543E37955F51165E36675F5B8 +:109F400033865B010582231ECA00B5A093FE35004F +:109F50004943E38BCEF393FE8500E3970EF26392C1 +:109F6000C90303C3C40313734300E30E03F0E30800 +:109F700039F50943E31569F403C3C40313732300DC +:109F800039A0E318C9FF03C3C40313734300E318E4 +:109F900003F2D5BD8545E31DB9F603558A01930546 +:109FA000D02EB9BF3545631CA41085462305DA00C1 +:109FB0008946231EDA00A305EA0063110716054748 +:109FC000230AEA0093F5050281E59247A308FA0205 +:109FD000194681455A859760F91FE780604E6310E6 +:109FE0000516A2470547230CEA02A30CFA021946FC +:109FF000DA851305AA039760F91FE780C03303478A +:10A000000105A304EA001307F007631DEC123727CC +:10A0100000200347C769D65798A303051A01EFB07C +:10A020009FBF2302AA06EFB0DFB8D657A308AA0045 +:10A030000D4788A36391E912638D0C0093F61C0011 +:10A0400099C603C7C403218B19E3E38E3CE32303C2 +:10A05000DA0609472300EA060347C105A300EA061A +:10A060000347CA05418B1DEB1307F9FF1377F70F61 +:10A0700089464943E3EAE6E08D466313D90E630D52 +:10A080000D0013761D0019C683C6C403A18A99E288 +:10A09000E30B2DDFA303CA06A30FEA04034741061F +:10A0A000B70600080143A30EEA0403478106A30193 +:10A0B000EA0603270A05558F2328EA04F1B3094568 +:10A0C0006314A40019458DB5E30004E623050A00D6 +:10A0D000B1BD1D452305AA0013F8150013F5450071 +:10A0E000630B0800114811C10548A30D0A05054579 +:10A0F000230DAA0425BD13F82500630908000948AB +:10A1000011C11548A30D0A050945DDB70D4811C158 +:10A110001948A30D0A05230D0A0409BD230A0A00E4 +:10A1200081460D453356D740058A11C603464A017C +:10A130000506230ACA008506E396A6FE61B5230C30 +:10A140000A0275BD194763458701A3088A01F1B565 +:10A15000A308EA00D9B523030A0623000A06EDBDC9 +:10A16000A3030A0615BF01114EC6B7390020938715 +:10A170008983FC4706CE22CC26CA4AC852C493899A +:10A18000898391C7BC4B13965700634E06003A8AE9 +:10A19000B6842E89EF509FDB2A8419ED83A7C9046A +:10A1A0001305200491C33145F2406244D244424930 +:10A1B000B249224A056182803825854701453D8B99 +:10A1C000E304F7FE0347C405418B59CB8D47630475 +:10A1D000F9004945D1BFFD47E3ED97FE231C04007C +:10A1E0008D476317F90CCDCC1E2C03D729071D45CD +:10A1F000B3869700E34AD7FA182405C7562C1307ED +:10A2000000026390E6020347F4058D46631ED70AF9 +:10A210001307900F13055004E368F7F83E2CE3652D +:10A22000F7F88D471D45E311F9F8374902408329B6 +:10A23000C920232609200F1000009305800C054536 +:10A24000EF70AE8B835784061205232244038507E3 +:10A25000BD8BC98F2314F40606AC23263921B9A07F +:10A260001377D90FE30CF7F611476313E904384865 +:10A2700093167700E3CF06F41824E31CF7F41E2CA2 +:10A28000A9DBA1F89305800C0545EF700E87835775 +:10A29000840612058507BD8BC98F2314F40639A0E7 +:10A2A0003C48370700FF7D17F98F3CC80145EDBDDD +:10A2B0009307D9FF93F7F70F0547E377F7F291D8A4 +:10A2C0001C24E393E7F2C5B58546E31CD7F41307D6 +:10A2D000D02E89B701114EC6B739002093878983E4 +:10A2E000FC4706CE22CC26CA4AC852C49389898329 +:10A2F00091C7BC4B13965700634E06003A8AB6844A +:10A300002E89EF50BFC42A8419ED83A7C904130511 +:10A31000200491C33145F2406244D2444249B249DB +:10A32000224A056182803825854701453D8BE3043B +:10A33000F7FE0347C405418B61C38D476304F900F1 +:10A340004945D1BFFD47E3ED97FE231D04008D472E +:10A35000631CF90EF5C03E2C03D729071D45B386B3 +:10A360009700E34AD7FA182405C7562C13070002B2 +:10A370006390E6020347F4058D466314D70E162C4E +:10A380001307900F13055004E367D7F8E365F7F858 +:10A390008D471D45E311F9F81C5485C783472406F2 +:10A3A000898B85C3485411CD3C2581CFEFA0CF9F29 +:10A3B0004C54194613052403B1059760F91FE78033 +:10A3C00080F7374902408329C920232609200F102E +:10A3D00000009305800C0545EF603EF2835784062C +:10A3E0001205232444038507BD8BC98F2314F4066B +:10A3F00026AC23263921B9A01377D90FE307F7F448 +:10A4000011476313E904384893166700E3CA06F25C +:10A410001824E317F7F23E2C85D79DF09305800CA6 +:10A420000545EF609EED8357840612058507BD8BB9 +:10A43000C98F2314F40639A03C48370700FE7D1766 +:10A44000F98F3CC80145C1BD9307D9FF93F7F70FBA +:10A450000547E372F7F0E38504EE1C24E39DE7EE85 +:10A4600055BD8546E316D7F2162C1307D02E19BF1B +:10A470005D71A6C2B73400209387848303A8C70404 +:10A4800086C6A2C4CAC04EDE52DC56DA5AD85ED6A0 +:10A4900062D466D26AD06ECE938484836308080245 +:10A4A0008327080513945700635204023145B640D0 +:10A4B000264496440649F259625AD25A425BB25B2C +:10A4C000225C925C025DF24D616182803AC632C4C8 +:10A4D00093771500B68989C7639105104945C1BFB7 +:10A4E00091E9A04819E00145D9B72285EF509FC8EE +:10A4F0000040CDBFE30908FE4285EF50BFC7E5B776 +:10A500003849B70700037D8F55F30347B50563044A +:10A5100087016315970103D7AA0149DB03C71A0313 +:10A520006300270903C7AA00631827011317140043 +:10A530004E971A23E3E4EDFAB8507D141374F40F28 +:10A540005DC793161A00B69903D70900B247930561 +:10A55000800C2395EA063E9A03470A000545239698 +:10A560000A06A382EA06EF605ED903D78A061205BF +:10A57000264405073D8B498F2394EA0603A304066E +:10A5800003C50B00B64096440649F259625AD25AA6 +:10A59000425BB25B225C925C025DF24D61610283C0 +:10A5A000138B4A05194681455A859760F91FE78044 +:10A5B00020F1631A250119469305ED915A8597609C +:10A5C000F91FE78040D7194681455A859760F91FE2 +:10A5D000E78000EFE31825F511B7FD1513F4F50F2B +:10A5E000094C954C0549373D0020930D0008930711 +:10A5F000F00FE305F4EEA247228AB38B870003C570 +:10A600000B00EF50BF94AA8AE31C05EEFC4413052F +:10A610002004E39D07E861BDB737002013878783D7 +:10A6200018331DC793878783F84711CB182701CBB1 +:10A63000494582804945F240624405618280F85B69 +:10A6400019C3783375F783A7870899C3FC33EDF3F3 +:10A65000011122CCC88432841305A100194606CE0C +:10A660009760F91FE78020CD28009770F91FE780D9 +:10A67000200169D100B101457DBF011126CA4EC636 +:10A6800052C406CE22CC4AC8AE89328AB684EF7054 +:10A69000CFFB4DC5B727002093874745631D0A00B0 +:10A6A000054798A30145F2406244D2444249B24969 +:10A6B000224A05618280942305472A846395E60037 +:10A6C000238007008949B747024003A9C72023A672 +:10A6D00007200F1000004165130545F5EF706FF876 +:10A6E00015CD3C253EA5832784118DE7232CA4108E +:10A6F000232EA410930710F8F9141CB5232005008D +:10A70000231645012304350144C1B747024023A65F +:10A71000272149BF8327C41188C3D9BFB727002089 +:10A7200083A7C76B91C79565938555550545829756 +:10A73000B747024023A627211D45B5B70945A5B750 +:10A740006F307FD96F307FDD6F30DFE16F30BFE674 +:10A750006F309FEC6F30BFF86F305FF06F30DFF31A +:10A7600082806F30DFFB034301001AC06F306FFD42 +:10A770006F309F896F30BF8E6F30BF946F309F9A5C +:10A780006F30BF9F6F305FA379711303F00F1AC84A +:10A790001AC60343810306D61AC4035341031AC2DF +:10A7A000035301031AC0EF309FA6B2504561828067 +:10A7B00003530100035E4100834E8100034FC1003B +:10A7C000835F010176C47AC67EC872C21AC06F3038 +:10A7D0001FA46F301FB86F30DFBC6F301FC06F30E9 +:10A7E000DFC46F301FCB828082807971939705011F +:10A7F00026D206D622D44AD04ECEC187AE8463D2AA +:10A800000718B739002003C5D9A59760F91FE7805D +:10A8100020A82A8405C518219307000D631DF700A1 +:10A820003821914763E5E7028D46637ED70E29CF35 +:10A8300089476306F7082285EF503EE12165258DA3 +:10A84000B250225492540259F249456182809307D2 +:10A85000D7FE93F7F70F8546E3EFF6FCB7360020F7 +:10A8600083A746A3103193F7F7F0631906104D46FE +:10A870006313C71093E7070123AAF6A283A746A391 +:10A88000370500015D8D79A01C31373900206392B6 +:10A89000071C93053500373500201946130545A7D9 +:10A8A0009760F91FE78020A98547232AF9A28545EB +:10A8B00003C5D9A5EF606E92032549A3A1A8143161 +:10A8C0003C3195EE6392E70237370020832747A398 +:10A8D0008145014593F7F7F093E70702232AF7A292 +:10A8E000EF903EFA08B081BF054781450145639569 +:10A8F000E700EF907EE8FDB7EF907ED7E5B7E38CF9 +:10A90000E7F2B737002003A547A341991365650017 +:10A9100023AAA7A2B727002083A7874589DF9C43E6 +:10A9200099DB829709BF37390020832749A310316B +:10A93000C19B1DEE6315D70293E727003737002030 +:10A94000232AF9A2834747A193968701E186E3D59D +:10A9500006F693F7F707230AF7A0894591BF373723 +:10A960000020230807A093E73700232AF9A2A9B7FC +:10A9700093E76700DDBF93E70702FDBD93E7070399 +:10A98000E5BD93F71500C9C3B737002083C707A1FA +:10A99000ADCBB737002083C727A1B73500209385FB +:10A9A00085A15C82B737002083C787A313056100A8 +:10A9B0001946DC829760F91FE780E097B7370020DF +:10A9C00083C717A14C005C86B737002083C707A751 +:10A9D000DC86B737002003C5D7A5EF903E8615C1AA +:10A9E000B737002003A547A341991365650023AA43 +:10A9F000A7A2B727002083A7874581C79C4391C39F +:10AA0000829713C514002DBD93F725000145E389F6 +:10AA100007E2B737002083C747A1858B85CBB737BF +:10AA2000002003C5D7A5EF90FEAF0DC1B7370020BA +:10AA300003A547A31375F5F023AAA7A2B727002003 +:10AA400083A7874581C79C4391C3829713C5240080 +:10AA5000C5BB994719BFB737002083A747A385E730 +:10AA600009C5B727002023ACA744B73500203735E8 +:10AA7000002083C5C5A50345D5A58147014781466B +:10AA800001466FA0FEEB45458280B727002023AC2E +:10AA9000A7448280411126C2B734002022C403C4D7 +:10AAA000D4A506C69307F00F6308F4006145B240D1 +:10AAB000224492444101828037A506001305A57EF9 +:10AAC000EF60EEE1A38EA4A4E30285FEB727002089 +:10AAD00023AC0744B737002023AA07A20547B7379E +:10AAE0000020238EE7A4B73700200D472389E7A075 +:10AAF000B7370020238C07A21D47B7370020A38853 +:10AB0000E7A0B7370020238807A6EF805E8D0145B8 +:10AB100079BF130705041E21110593C7F7FF231EF4 +:10AB2000F5FE8347E5FF93C7F7FF230FF5FEE31418 +:10AB3000E5FE828099473305F50201110A86C14579 +:10AB400006CE13050520EF605EA009E50886F240F9 +:10AB5000056182800145E5BF011122CC26CA4AC8A1 +:10AB60004EC606CE8144014437290020B729002073 +:10AB700083475946636AF400F2406244268542499D +:10AB8000D244B2490561828083A709461315440067 +:10AB900019469305F00F3E959760F91FE7804092A4 +:10ABA00001E5850493F4F40F05041374F40FC9B799 +:10ABB000411122C43724002013040448084006C66B +:10ABC00009C5EF509EA823200400B727002003C723 +:10ABD0005746B2402244B7270020238FE744410163 +:10ABE0008280B727002083C7E7451971A6DA86DE81 +:10ABF000A2DCCAD8AA846390A702372400201304D9 +:10AC0000644608208545EF505EE108208945EF50F5 +:10AC1000DEE0EFF0FFF9C204C18019493389240353 +:10AC20005000C145130409202285EF601E9209C916 +:10AC300001442285F6506654D654465909618280F3 +:10AC400019469305F00F48009760F91FE780408789 +:10AC500065F1480041469305F00F9750F91FE780D2 +:10AC60002074480871469305F00F9750F91FE7804C +:10AC700020730818130600049305F00F9750F91F6E +:10AC8000E78000725000C1452285EF60BEB55008D4 +:10AC90002A84F14513051920EF60DEB45008498C71 +:10ACA000F14513052920EF60FEB31374F40F50082B +:10ACB000498CC14513053920EF60DEB21374F40FDF +:10ACC0005008498CC14513054920EF60BEB113748B +:10ACD000F40F5008498C914513055920EF609EB040 +:10ACE0001374F40F498C1D65101893050004269504 +:10ACF000EF605EAFB72700201374F40F498C03C5D3 +:10AD0000873A1374F40FEF603EA925B7411122C4AE +:10AD100026C206C601450144B724002083C7544615 +:10AD20006373F40011C5B240224492444101828011 +:10AD300022850504EFF0FFEA1374F40FC5B7011183 +:10AD400022CC4EC652C406CE26CA4AC80144EF30B1 +:10AD50005FC5B7290020372A002083C75946636A98 +:10AD6000F400F2406244D2444249B249224A0561A9 +:10AD7000828013090A4603250900931444001946EA +:10AD80009305F00F26959750F91FE780607319E53A +:10AD900083250900A695E835EF30FFC0050413743C +:10ADA000F40F65BF397122DC4ED652D456D206DE7E +:10ADB00026DA4AD80144EF301FC2B7290020372ACB +:10ADC0000020994A83C75946636BF400F2506254DD +:10ADD000D2544259B259225A925A2161828013099F +:10ADE0000A46032509009314440019469305F00F01 +:10ADF00026959750F91FE780A06C15E5330554039D +:10AE00000A86C14513053520EF602EF41008C145B0 +:10AE10000945EF608EF38325090014080A86A6957C +:10AE2000E835EF301FBB05041374F40F61BF011147 +:10AE300006CEEFF07FD20547A9476373A700894785 +:10AE40001306F100854513052004DC87EFA00EC52D +:10AE5000F24005618280011122CC4EC652C456C216 +:10AE600006CE26CA4AC80144B7290020372A002046 +:10AE7000994A83C75946636CF402EFF0FFCDB727B8 +:10AE8000002083C7D74599C3EFF07FEBB727002099 +:10AE900083C7C74599C3EFF0FFF06244F240D24444 +:10AEA0004249B249224A924A05616FF05FF8330580 +:10AEB000540313090A460326090093144400C145AC +:10AEC000269613050520EF604EE81DC903250900ED +:10AED00019469305F00F26959750F91FE780404CCF +:10AEE0000325090019469305F00F2695190597507B +:10AEF000F91FE780E04A83270900BE9423960400E7 +:10AF000005041374F40FB5B7B727002083C567464F +:10AF10002A216FC0AEB89947B385F502397122DC9A +:10AF200026DA4AD806DEA147AA843289138425206E +:10AF30006384F600138415207146814548083AC69B +:10AF40009750F91FE780C0455008F1452285EF6012 +:10AF5000CEDF0DE18347E102A5463247E51793F7BF +:10AF6000F70F63E9F600BA86500893751900268535 +:10AF7000EF808EB5F2506254D254425921618280E2 +:10AF8000797122D426D24AD0AE842A89328481456E +:10AF9000130600020A8506D69750F91FE780404045 +:10AFA000B727002083C7D73A23102101230EF100D1 +:10AFB000BC8455C43727002003471747F99BB725A2 +:10AFC00000205882372700200347374741469385A2 +:10AFD0008561D88237270020034727471305610082 +:10AFE00093761700D58FF59B93762700D58FED9B31 +:10AFF00093764700D58F9316470093F6061093F784 +:10B00000F7EFD58F9316470093F6062093F7F7DFF7 +:10B01000D58F12071377074093F7F7BFD98FFC84BA +:10B020009750F91FE7802031B727002083C70747D3 +:10B0300013F7170011C789C4B88413672700F88471 +:10B0400003476101A2850A85D98F230BF100EF80A8 +:10B05000AE99B250225492540259456182803727EA +:10B06000002003479746F99BB725002058823727D1 +:10B0700000200347B746414693858560D88237272D +:10B0800000200347A7461305610093761700D58F6C +:10B09000F59B93762700D58FED9B93764700D58F50 +:10B0A0009316470093F6061093F7F7EFD58F931694 +:10B0B000470093F6062093F7F7DFD58F1207137733 +:10B0C000074093F7F7BFD98FFC849750F91FE780AB +:10B0D0008026B727002083C7874699BF011122CC5D +:10B0E00026CA4AC84EC606CE2A890144B724002083 +:10B0F000B729002083C75446636BF4003E84228541 +:10B10000F2406244D2444249B2490561828083A739 +:10B110000946131544001946CA853E959750F91FF4 +:10B12000E780603269FD05041374F40FE1B71D7107 +:10B13000A2CC3724002083270448D2C4D6C286CEAE +:10B14000A6CACAC8CEC6DAC02A8AAE8A1304044880 +:10B15000A5E319E10545F9A8F5DDEFF03FF837273C +:10B16000002083465746B7270020238FA744138922 +:10B17000E74593095746636DD5028144372B00207C +:10B180000DA083270B461395440019469305F00F35 +:10B190003E959750F91FE780A03209E9850493F4A2 +:10B1A000F40F83C70900E3EEF4FCBE84230099008A +:10B1B000B72400201389E445B72700200345090080 +:10B1C00083C757469384E445E376F5F81C40ADEF1A +:10B1D00099473305F5025286C14513050520EF60F6 +:10B1E0006EE0130600049305F00F0A859750F91FCF +:10B1F000E780001B034509009D670A86930500044C +:10B200003E95EF602EDE8347090037270020032597 +:10B21000074692074146D2853E959750F91FE78031 +:10B22000801123205401B727002003C5873AEF601F +:10B23000AED60145F6406644D6444649B649264A4C +:10B24000964A064B256182809047814709CE9947EF +:10B250003305F502F14513051520EF60AED81C400B +:10B2600023A4070085471840104B11CE882099472A +:10B27000F1453305F50213052520EF60AED61C40DD +:10B2800023A8070085471840504B11CE88209947C6 +:10B29000C1453305F50213053520EF60AED41C40DF +:10B2A00023AA07008547184050470DCA882019492E +:10B2B000C1453305250313054520EF60AED2882034 +:10B2C0001C40914533052503D04741061305552001 +:10B2D000EF604ED11C4023A60700B1B7A9F7B727EE +:10B2E000002083C7D74599C3EFF07FA5B72700207B +:10B2F00083C7C74599C3EFF0FFAAEFF05FB399BDCD +:10B30000B727002083C75746011122CC06CE26CA94 +:10B3100009446376F50285C599473305F502AE8485 +:10B320000A86C14513050520EF602EA22A8401E993 +:10B3300019468A8526859750F91FE780C0FF228528 +:10B34000F2406244D24405618280011122CC06CED3 +:10B350002A842EC632C49750F91FE780E07315C9BE +:10B360005825A1472246B2456310F702B7270020AF +:10B3700083A7474899CF03A34700630C03002285A6 +:10B380006244F24005610283B727002083A7874803 +:10B39000D5B7F240624405618280011122CC194484 +:10B3A0003304850226CA0A86AE84C14506CE13043C +:10B3B00004202285EF606E9901C98144F240624405 +:10B3C0002685D2440561828019469305F00F0A85CF +:10B3D0009750F91FE780C00E6DF138869377D70F2D +:10B3E00089C49377F70F93E72700C207C183854489 +:10B3F000E306F7FC0A86C14522857C86EF608EBE97 +:10B40000B727002003C5873AEF600EB945BF1D710D +:10B41000A2CC2A8419453305A402A6CACAC8B2849C +:10B420002E890A86C14586CE13050520EF60EE9170 +:10B4300001C90145F6406644D644464925618280EB +:10B4400019469305F00F0A859750F91FE7804007CA +:10B450006DF19D673E941008930500042285EF600E +:10B46000CE8E19C10545F9B70808EFF08FEA6318C9 +:10B47000090413060004814508089750F91FE78066 +:10B4800020046DF113060004814508089750F91F48 +:10B49000E78000F1B727002005470808238CE7461E +:10B4A000EFF02FE71008930500042285EF608EB3BC +:10B4B000B727002003C5873AEF600EAE65B71C08BA +:10B4C0009008BE868E223687638025039106E31B93 +:10B4D000D6FE0145A5D096233E8789C69107E31C79 +:10B4E000F6FE81BF239027013C23E38D97F624A32A +:10B4F000D5F02310070079BF01114EC6B7270020F1 +:10B500007D57B729002022CC26CA4AC806CE52C48D +:10B510002383E74693878968E82737290020372463 +:10B52000002093040946930520041205A302044653 +:10B5300023A004009750F91FE780C0B088C013040F +:10B54000544605C59389896883C7E90013090946EC +:10B5500081441CA01C2063E5F41203A78900B737BF +:10B56000002063010716A38507A01820B727002035 +:10B570000544238FE744B727002023A00748B727B7 +:10B5800000202387873A37250020B7270020A3888B +:10B5900007464146B7270020814513058561A389E9 +:10B5A00007469750F91FE780A0DFB72700209304D4 +:10B5B000700723880746B727002023899746B727B7 +:10B5C000002023AA0746B7270020A385873AB7277C +:10B5D00000202384074637250020B7270020A384B6 +:10B5E00007464146B7270020814513058560A3859E +:10B5F00007469750F91FE780A0DAB7270020238578 +:10B600009746B727002023A60746B7270020A38325 +:10B6100007461547B7270020A384E73AB72700203D +:10B620004147A386E73AB7270020238C07460947FE +:10B63000B72700202385E73AB727002023A407482F +:10B64000B727002023A20748B7270020A38E07446E +:10B65000B727002023820746B72700202384873A94 +:10B66000B7270020A387873AB72700202386873A89 +:10B67000F2406244D2444249B249224A0561828082 +:10B6800003250900139A440019469305F00F5295BB +:10B690009750F91FE780C0D003250900194693058C +:10B6A000F00F529519059750F91FE78060CF832757 +:10B6B0000900850493F4F40FD2972396070023879B +:10B6C000070049BD130700F8A385E7A079BD757190 +:10B6D00022C5CEDED2DCD6DADAD806C726C34AC106 +:10B6E0000144B72A0020372B002099491D6A938412 +:10B6F0005A469C206367F402B727002003C5873AA7 +:10B70000EF608E899820BA402A44B7270020238F03 +:10B71000E7449A440A49F659665AD65A465B496143 +:10B72000828013090B46032509009314440019462F +:10B7300026959305F00F9750F91FE78060C6032503 +:10B74000090019469305F00F269519059750F91F22 +:10B75000E78000C583270900131904011359090163 +:10B76000A697B304390323960700238707004146B1 +:10B770009305F00F48009750F91FE78060C27146AB +:10B780009305F00F48089750F91FE78060C1130632 +:10B7900000049305F00F08189750F91FE78040C088 +:10B7A0005000C14513850420EF60CE835008F14559 +:10B7B00013851420EF600E835008F1451385242073 +:10B7C000EF604E825008C14513853420EF608E81B2 +:10B7D0005008C14513854420EF60CE805008914544 +:10B7E00013855420EF600E80101893050004330574 +:10B7F00049010504EF501EFF1374F40FCDBD9307EC +:10B8000005C04111C20722C406C6C1831307200226 +:10B810002E846367F71237E706008A07130747D8B5 +:10B82000BA979C438287B727002083C7E73A1CA0BA +:10B830001DA8B727002083C7074789873DA8B727DA +:10B84000002083C71747E5B7B727002083C73747CE +:10B85000F9BFB72500204146938585612285975021 +:10B86000F91FE78040AD8147B24022443E85410147 +:10B870008280B727002083C70747858B4DBFB72736 +:10B88000002083C7274765B7B727002083A747470E +:10B890001CC0D1BFB727002083C7B73A49BFB7271D +:10B8A000002083C7874651BFB727002083C797462C +:10B8B000BDBFB727002083C7B74695BFB725002077 +:10B8C00041469385856059BFB727002083C78746C7 +:10B8D0006DB7B727002083C7A74691BFB7270020C1 +:10B8E00083A7C74675B7B727002083C7774681B7B8 +:10B8F000B727002083C7973A1DBFB727002083C70B +:10B90000D73A35B7B727002083C7D7450DB7B72734 +:10B91000002083C7C74521BFEFF00FA408A0A1B73F +:10B92000B727002083C7C73A19B7B727002083C7B6 +:10B9300007478D8799B7B727002083C78746D5BFAC +:10B94000130710048947E361A7F2EF703EA20AA033 +:10B9500019BF011106CE22CC26CA4AC84EC652C40F +:10B9600056C2EF705EED51E93729002013094946B0 +:10B9700003470900B724002085472A84938454464E +:10B98000630EF702372A0020854A9C206374F40472 +:10B9900093090A4603A70900131944004A977C2714 +:10B9A000639A57012285EFF0CFA383A70900CA97B6 +:10B9B0002387070005041374F40FC1BFEFF00FB520 +:10B9C000B727002083A70746982023000900B9075E +:10B9D000631EE400EF60EE866244F240D2444249C6 +:10B9E000B249224A924A05616FF0EFC605042380EE +:10B9F00007001374F40FC107E1BFF2406244D24460 +:10BA00004249B249224A924A05618280797126D21E +:10BA10004AD04ECEB724002006D622D452CC894735 +:10BA2000AE893289938454466307F506636FF50047 +:10BA30008D47630FF50A80202285B250225492541C +:10BA40000259F249624A456182802E85EFF00FE982 +:10BA50009C202A84E372F5FEE30009FE1946CE8598 +:10BA60004A859750F91FE780008DF9B783270A466A +:10BA70001315440019463E95CE8519059750F91FB8 +:10BA8000E780609C21ED05041374F40F9C20E36FA4 +:10BA9000F4FC3E8455B70144372A0020C5BF050495 +:10BAA0001374F40F9C20E376F4FE330544030A86F6 +:10BAB000C1451305352042054181EF501EA965F1AE +:10BAC00041469305F00F0A859750F91FE780409F84 +:10BAD00079F5CE850A85EF703E9171F19C20E37D6A +:10BAE000F4F4E30B09F4CA852285EFF07F81A9B74E +:10BAF0000144194A45BF79714AD006D622D426D2CC +:10BB00002A8902CC231E01009750F91FE780C0F854 +:10BB100021C1B72400209384B43A9820894763094F +:10BB2000F702930565002A8448313008EFF01FEED4 +:10BB3000B727002083C757466372F5022AC6EFE095 +:10BB40007FFFB2452A860547A1464A85EFF0AFBC84 +:10BB5000B250225492540259456182809C2091E750 +:10BB600095454A85EF705ECAE5B70547E392E7FE63 +:10BB70004C3001464A85EFF0AFC0D9BF0111C16713 +:10BB80004AC806CE22CC26CA4EC6FD172E89630DA2 +:10BB9000F5069750F91FE78020F02A84D14429CD7B +:10BBA0009305650048310146D544EFF03FE6B727DD +:10BBB000002083C757466376F500CA85EFF0EFFD96 +:10BBC0008144630B09022285EFF00FB435A0CA85CA +:10BBD0002285EFF08FFC11C1814405041374F40F2A +:10BBE00083C75946E365F4FE6308090037B50600CC +:10BBF000130585F0EFF04E9AF240624426854249E3 +:10BC0000D244B249056182800144D544B72900205D +:10BC1000C1BF0111C1674AC84EC606CE22CC26CA92 +:10BC200052C4FD172E89B2896302F5069750F91F99 +:10BC3000E78080E6D14431C1930565004831014673 +:10BC4000D544EFF0BFDCB727002083C757466376A3 +:10BC5000F5024E86CA85EFF08FFB814439A84E86E7 +:10BC6000CA852285EFF0AFFA11C18144050413742F +:10BC7000F40F83475A46E364F4FEF240624426859B +:10BC80004249D244B249224A056182800144D544E6 +:10BC9000372A0020F9BF411122C4372400201304A1 +:10BCA00064460C20B727002023A4A748614506C698 +:10BCB000EF707EC208202244B24041016FC07EFF77 +:10BCC000411106C622C426C29DE5AA85AA8437452D +:10BCD0000F00130505243375A602EF700EEB2A84BE +:10BCE00009C585452685EF703EB22285B2402244C3 +:10BCF000924441018280EF703EB10144FDB7B72705 +:10BD000000209387E73A9823136707F898A3B7278B +:10BD1000002083C507476F70FEA31971A6DAB284AD +:10BD20005000CAD8D2D486DEA2DCCED62A89368A82 +:10BD300002C223140100EFF07FCDB727002083C794 +:10BD400057466370F5102A84EFE0DFDE9147AA8939 +:10BD50006310FA0EB727002003C7E73A9146791718 +:10BD600013371700A285420441801949330924037F +:10BD70004E862685EFF02F9A514681456800974000 +:10BD8000F91FE780E0617000C145420913590901BC +:10BD90001305492042054181EF502EFB05E941463C +:10BDA0009305F00F68009740F91FE780607119ED67 +:10BDB000130559204205700891454181EF50EEF876 +:10BDC000700093F519002685EF707E9D1D65229504 +:10BDD00042051010930500044181EF500EF705E174 +:10BDE0000810EFE01FD30010130901060E2089C5CB +:10BDF00030202685EFB09EBB1104E31989FE93F92C +:10BE0000290063890900B727002083C56746268576 +:10BE1000EFB0CEC89147631AFA04B727002003C7D2 +:10BE2000E73A89476313F7042685EFF05FED35A8FD +:10BE3000B727002003C7B73AD28679171337170000 +:10BE400015B7A147E318FAFCB727002003C7B73A94 +:10BE50008947631CF7000146CA852685EFF04F929B +:10BE6000014681452685EFF04FCEF6506654D654F4 +:10BE70004659B659265A014509618280011106CEFC +:10BE80002AC6EFF06FE73245F240B7270020238340 +:10BE9000A74605616FE03FFC1D7186CEA2CCA6CA05 +:10BEA000CAC8CEC6D2C4D6C2DAC0EF20DFB2B72726 +:10BEB000002083C7F73A99CB0144372A0020B72ADC +:10BEC0000020194B83475A46636CF400F6406644E1 +:10BED000D6444649B649264A964A064B2561828091 +:10BEE00093890A4603A509001319440019469305CE +:10BEF000F00F4A959740F91FE780805C39E5B3045D +:10BF000064035010F1451385142042054181EF5020 +:10BF1000CEE305ED0347F1039307F00F6317F70234 +:10BF20001385342042055000C1454181EF50EEE1B8 +:10BF30005008C1450945EF504EE183A5090054085A +:10BF40005000CA95E835EF20DFA805041374F40FFC +:10BF500095BF930705C05D71C207A6C2CAC086C659 +:10BF6000A2C44EDE52DC56DA5AD8C183130720022F +:10BF70002A89B2846369F75437E706008A071307F2 +:10BF800007E1BA979C43828785476384F500614443 +:10BF900011A81C220947E36CF7FE3727002023076E +:10BFA000F73A01442285B640264496440649F259A0 +:10BFB000625AD25A425B616182808547E399F5FCFF +:10BFC0001422E3E6D5FC37270020130707471C237C +:10BFD000E1CA93E747001CA3E9B78547E399F5FA5F +:10BFE0001C221147E365F7FA37270020A308F7461C +:10BFF0004DBF8547E39DF5F81C22E3EAF5F83727A6 +:10C000000020A309F74671BFC147E392F5F8372531 +:10C0100000204146A685130585619740F91FE780FA +:10C02000803141B78547E394F5F61422E3E1D5F674 +:10C0300037270020130707471C23E9C293E717009F +:10C0400059BF8547E395F5F41822B72700202389C7 +:10C05000E74681BF9147E39CF5F21842B7470F00CE +:10C060009387F723E3E5E7F2B727002023AAE74603 +:10C070000DBF8547E39DF5F01C220947E369F7F002 +:10C0800037270020A305F73A29BF8547E391F5F04C +:10C090001422E3EED5EE372700201307874605BFAD +:10C0A000ED9B15BF8547E394F5EE1C221147E36035 +:10C0B000F7EE37270020A304F746E5B58547E39858 +:10C0C000F5EC1C22E3E5F5EC37270020A305F74645 +:10C0D000C9BDC147E39DF5EA372500204146A68545 +:10C0E000130585601DBF8547E393F5EA1422E3E05D +:10C0F000D5EA37270020130787463DBFF99BE1BDEE +:10C100008547E396F5E81822B72700202385E74600 +:10C1100049BD9147E39DF5E61842B7470F00938765 +:10C12000F723E3E6E7E6B727002023A6E74695BD19 +:10C13000E39F05E4EF702EF001E9EFE03FBDEF5023 +:10C140005E90EFE05FD1B1BDB727002005472382A5 +:10C15000E74681BD9D47E39CF5E2938514001946AF +:10C1600068009740F91FE780001D882050086C0088 +:10C17000EFF0DF89B727002083C75746AA84094418 +:10C18000E372F5E24808EFE05EA109E52685EFE0FD +:10C190005FA575B7B727002083A7074692045944C7 +:10C1A000BE948547FCA4FDBB9D47639AF50A1946DA +:10C1B0009385140068009740F91FE780C017882016 +:10C1C00001466C00EFF09F84B727002083C75746D5 +:10C1D0006379F5049944B30495025008F1459384BA +:10C1E0001420C204C1802685EF502EB62A8405E9AA +:10C1F0001307A04185476304E9009307F00F500837 +:10C20000F1452685A307F102EF50CEDDB7270020C8 +:10C2100003C5873AEF504ED8EFF01FC861B3094409 +:10C22000E5BFB737002083C7B7A00944E38C07D622 +:10C23000373700209306A0418347C7A0631DD9006C +:10C2400093E71700373500202306F7A01D46A68583 +:10C25000130545A0D9B3F99B2306F7A099B38547E9 +:10C26000E397F5D2373700209306A0418347C7A054 +:10C270006315D50093E72700C5B7F59BF1BFB72736 +:10C280000020A387073AEFF03FC121BBB72700206A +:10C290000547A387E73A0144372900209949130A43 +:10C2A000F00FFD5A372B002083475946E37DF4FCFD +:10C2B000B30434035008F145938414202685EF50CD +:10C2C000CEA805E18347F102638D47015008F1458F +:10C2D0002685A3075103EF50EED003458B3AEF506C +:10C2E000AECB05041374F40FC1B78547E391F5CACB +:10C2F0001C22E3EEF5C837270020A303F74655B10B +:10C300008547E396F5C81C222547E362F7C837271F +:10C310000020A304F73A71B18547E39AF5C61822C5 +:10C32000A546930797FF93F7F70FE3E2F6C6B72703 +:10C330000020A386E73AB5B18547E39AF5C4B7274D +:10C3400000209387D74518229423014498A3E39BA8 +:10C3500006C4E319B7C4EFE01FB0A9B18547E3985D +:10C36000F5C2B72700209386C745982090221384F2 +:10C37000C74598A209E66314B700EFE0DFAD0820D7 +:10C38000EF20AFE539B98547E393F5C01C220D478F +:10C39000E36FF7BE372700202305F73A19B1854729 +:10C3A000E397F5BE1822B72700202384E73AD5BECD +:10C3B0000545EF506EBEF5B68547E39AF5BC1822E9 +:10C3C000B72700202386E73AE9BE93074002E390AF +:10C3D000F5BC8830014693852400EFF02FE3B727A2 +:10C3E000002083C75746E374F5BA19443304850225 +:10C3F0009820A1471374F40F6312F704090413740F +:10C40000F40F420441805008F1452285EF50EE932D +:10C41000E31F05B69385840048086D469740F91FD1 +:10C42000E78060F15008F1452285EF50AEBBB72799 +:10C43000002003C5873AEF502EB691BE0504C1B760 +:10C44000B727002003D78769930740046D44E3FBB7 +:10C45000E7B48547E39DF5B21C22E3EAF5B285C354 +:10C46000B737002083A707A05544E38D07B2B7274D +:10C4700000209387074798231367870039A0B727C1 +:10C4800000209387074798235D9B98A319BEB72781 +:10C49000002003D78769930740046D44E3F4E7B0B5 +:10C4A0008547E396F5AE1C22E3E3F5AEE9DBB7374B +:10C4B000002083A707A05544E38607AEB7270020D6 +:10C4C000938787464DBF930710040944E3EC27ADDB +:10C4D000E39A85AC8E204A85EF70EEBF2A84D9B4EA +:10C4E000797106D622D426D24AD03C215147E91789 +:10C4F00093F7F70F6369F70237E706008A07130718 +:10C50000C7E9BA979C432A8482872625502554354B +:10C51000268532C636C49740F91FE780E057AA87C0 +:10C52000A246324619E185443DA2D827A14713050A +:10C5300034006318F702B727002083A74748A68571 +:10C5400089C79C4399C38297F9BFB727002003A5E9 +:10C55000C746EF609EE361D985452685EF70CEAA78 +:10C56000D9B7B727002083A78748A68599C39C43DE +:10C57000F9FBB727002003A54747E1BF2E252E85ED +:10C580002EC49740F91FE7802051AA8749DDD8279C +:10C59000A147130534001306C4009306C401A24545 +:10C5A000631BF700B727002083A74748ADDF9C47F0 +:10C5B000BDDB82978DBFB727002083A78748FDB7D3 +:10C5C0001C31DDEF7C21858BC5CFB727002083A7E9 +:10C5D00007480149DDE78145414608089740F91FB2 +:10C5E000E78000DC4C48BDCDFC291946C105A30FEE +:10C5F000F10008089740F91FE780E0D37C20B88657 +:10C600008987858BD98FFC86EFE00FD5B72700206F +:10C6100083C757466391A702B727002083C7C73A4D +:10C6200099C3EFF0CF8AB727002083A7C76B81C7D4 +:10C63000854521458297EFE02FD2A2850808EFE0DB +:10C640001FAFAA84554915EDB727002003C56746DB +:10C650008945EF408EB8B250225426850259925433 +:10C66000456182804A2085449740F91FE780C04297 +:10C670007DD15C31194693056500A30FF10095BF8C +:10C68000014910304A208545EFE03FCCE30D09E831 +:10C690004A868D454A20EFE05FCB71B51831994746 +:10C6A000631BF7024A219740F91FE780E03EAA8406 +:10C6B0001DC1B727002083C7A73A09476386E70251 +:10C6C0000D47638DE70005476397E7004C314A202B +:10C6D0000146EFE0FF8A103089456DBF0146814574 +:10C6E00013050041EFF0FF864E2088201546EF70BD +:10C6F000CE94D5B79305450028310146EFF00FB130 +:10C70000B727002083C75746E37FF5E099473305F5 +:10C71000F5021306C40091451305552042054181D9 +:10C72000EF504E8CB727002003C5873AEF50CE86D6 +:10C73000DDBBB727002083C777464A2191C7B727BB +:10C74000002083C5973A19BDB727002083C7E73A71 +:10C7500099E3954521B59740F91FE780E033AA8416 +:10C76000E30305DC3C24858B9DC74831854763F492 +:10C77000A7025E2493F7072099EF100893856400C1 +:10C78000EFF0CFA8B727002083C757466395A700CF +:10C790008D454A20E1B3CC304A2013068400EFE0F7 +:10C7A0002FFE01468145FDB54A21EFF0CFB4A5BB70 +:10C7B0004A21EFF00F9AB72700209387E73A982392 +:10C7C0001377F70798A385B379719397050122D45E +:10C7D00006D626D24AD04ECE52CCC1872E8463D103 +:10C7E000070AB727002003C567469740F91FE7806F +:10C7F00020AAAA8431C11C211307100B6389E70406 +:10C800001307000D6384E7021307000B6393E7022D +:10C810005821F9476316F7002A218145EFF00FB63A +:10C82000CC2013858400EF905ECB21A0EFF05FCB8E +:10C8300001C52685EF307EE1A164A18CB25022545F +:10C84000268502599254F249624A456182805C21F0 +:10C85000EDF312256E212A2137290020130989477B +:10C8600023000900EFF0EFBA83470900F9D3B72797 +:10C87000002003C5873A23000900EF40FEF155BFB1 +:10C8800093F7250095C381450145EFE05F8AB727FF +:10C8900000209344240093876746854511E189452C +:10C8A0008823EF408E9359BF93F71500F9CBB72932 +:10C8B000002083A70948B72400209389094803DA98 +:10C8C000470083A7C4479384C44785E337270020E4 +:10C8D00037E60600C1651307C74889461306C60F29 +:10C8E000FD150545EFB02EB188C08C4013441400EF +:10C8F0009DE983A7090001468545CA2393140401D5 +:10C90000C180EFE09FA483A7090001468D45CA239B +:10C91000EFE0BFA3B727002003C5873AEF40DEE76B +:10C92000EFE00FA921BF372900200356C94893081B +:10C93000F00F094881471307E10074005285EFB0FA +:10C94000EEFB1309C94819E990861C8622065D8E04 +:10C9500011C69C405285AE27EFF0AFAB884003561E +:10C960000900C1658146FD15EFB02EEE88C0931415 +:10C970000401C1803DDDB7270020854503C567461A +:10C980000DB793F745008144E38A07EA93C4450055 +:10C9900075B53421D14763EBD72637E70600939767 +:10C9A0002600130707EFBA979C43011122CC06CE4D +:10C9B00026CA4AC84EC62A8482871C3137390020CD +:10C9C000C5EBB7350020B73400204146938505A656 +:10C9D0001385C4A39740F91FE780E0A6B73900206C +:10C9E0003DE91386C4A3C1450945EF40BEDF138668 +:10C9F000C9A4C1450D45EF40FEDEB727002003C5A1 +:10CA0000873AEF407ED9373500209305340013056F +:10CA100045A719469740F91FE780E0918547232AEB +:10CA2000F9A2B737002003C5D7A58545EF30FEFA38 +:10CA3000032549A3B727002083A70749BDC303A344 +:10CA4000070063000306A2856244F240D2444249D3 +:10CA5000B24905610283B73500204146938505A29E +:10CA60001385C9A49740F91FE780E09D3DD961BFB8 +:10CA70009947232AF9A26DBF18313C3129E70947AC +:10CA80006398E70237370020832747A38145014594 +:10CA900093F7F7F093E70702232AF7A2EF707EDE01 +:10CAA00008B0F2406244D2444249B24905618280F2 +:10CAB0000547814501456395E700EF70FECBCDB793 +:10CAC000EF70FEBAF1BF0947E38DE7FCB7370020EE +:10CAD00003A547A341991365650023AAA7A299BF9F +:10CAE0001C31B7340020BDEB8D47639AF60437370D +:10CAF0000020834747A193968701E18663DD060006 +:10CB000093F7F707230AF7A0B737002003C5D7A587 +:10CB10008945EF309EEC83A744A3914613F7F700B5 +:10CB20006318D700C19B93E7570023AAF4A29DA0E6 +:10CB30008946E308D7F6C19B93E72700FDB703A713 +:10CB400044A3B7370020238807A09546937707FFB3 +:10CB50003D8B631CD70493E74700C1BF83A744A361 +:10CB6000C19B93E76700D1B7B734002083A744A3E4 +:10CB70001831C19B1DE393E7470023AAF4A2322595 +:10CB80009305450028319146EFF02F99B7370020E3 +:10CB9000238807A003A544A371BD93061003E312E5 +:10CBA000D7FC37370020230807A093E73700B5BF2D +:10CBB000EFF01F9337370020832747A3954613F6DE +:10CBC000F700C19B13E537006314D60013E5270077 +:10CBD000232AA7A285B537370020832747A3103122 +:10CBE00093F7F7F00DE24D46639CC60093E707010B +:10CBF000232AF7A2832747A3370500015D8D1DBDBA +:10CC000093E70702F5B793E70703DDB782801821A2 +:10CC1000930610096307D7009307000D6302F7041A +:10CC2000828014313947639FE60256210567130756 +:10CC300057406399E60218459307F00783053700CC +:10CC40006382F502B727002083A7074981CF03A39A +:10CC50004700630903003C230833A2075D8D02836C +:10CC60006FF03FD3828001119397050126CA06CE4B +:10CC700022CCC187AE8463D5070CB737002003C52B +:10CC8000D7A59730F91FE780A0602A8419C9B73764 +:10CC9000002083C737A189EFEFF07FF72285EF30BF +:10CCA000DE9A2165258DF2406244D244056182807E +:10CCB0001C211307000D639DE7043C2181E7EFF081 +:10CCC0001FF501A81547639EE7005825A147E39586 +:10CCD000E7FCB737002003C5A7A7A285EF30DE9B8E +:10CCE000C9B72147E38DE7FC99466394D7007C31AF +:10CCF000F9BF1D47E392E7FA4A219740F91FE78001 +:10CD0000A0D949DD5825A1472285E317F7F8D1B707 +:10CD10001307200AE382E7F813071009E391E7FA03 +:10CD20001831B947E31DF7F85A21856793875740B3 +:10CD3000E317F7F818453C230833A2075D8D75BF4C +:10CD40009397150163D20702372600201306464940 +:10CD500091451145EF401EA9B727002003C5873A2A +:10CD6000EF409EA311653DBF93F71500D1CFB737B4 +:10CD7000002083C707A1A5C3EFE0CE87B727002017 +:10CD800083C7D7698D8B636BF5048D475C82B7379A +:10CD9000002083C717A14C005C86B737002083C7EB +:10CDA00007A7DC86B737002003C5D7A5EF700EC9EB +:10CDB0001DC1B737002003A547A34199136565003E +:10CDC00023AAA7A2B727002083A7074989C79C43A6 +:10CDD00099C38145829713C51400F1B5B737002078 +:10CDE00083C727A1B735002019465C82B7370020DA +:10CDF00083C787A3938585A113056100DC829730E3 +:10CE0000F91FE780405361B793F725000145E38C94 +:10CE100007E8B737002083C747A1858B8DCBB7378D +:10CE2000002003C5D7A5EF70EEEF15C1B73700207E +:10CE300003A547A31375F5F023AAA7A2B7270020DF +:10CE400083A7074989C79C4399C38145829713C526 +:10CE5000240091BD797122D426D206D6AA842EC68A +:10CE6000328436C43AC23EC09740F91FE780C0C240 +:10CE700029C10358E500B24582471247A246636BB9 +:10CE8000B8006369040112296316D600322961458E +:10CE9000630CE600EC843E862C082685E085F4864B +:10CEA000F887EFD0DEBA0145B25022549254456162 +:10CEB00082805145D5BF0111B737002006CEA38629 +:10CEC000A78291C52E8532C6EFE0FFDC3246B73728 +:10CED000002083A747A3B1E309C6B727002023A8F2 +:10CEE000C74837360020B735002037350020F240DC +:10CEF000034666A183C5C5A50345D5A5B727002070 +:10CF000037370020B7360020938747491307C7A457 +:10CF10009386C6A305616F80BEA2F24045450561B8 +:10CF20008280B727002083C7D7698D8B91EB61453D +:10CF300082806145B240224492440249410182808C +:10CF4000411126C2B734002022C403C4D4A506C6AA +:10CF50004AC09307F00FE31EF4FC37D50600130513 +:10CF600065C6EF40CE97A38EA4A4E30485FCB72743 +:10CF7000002023A80748B7370020114723AA07A29B +:10CF8000B7370020238EE7A4B7340020EF602EC50A +:10CF9000414681451385C4A39730F91FE78040407F +:10CFA00037340020414681451305C4A49730F91F4A +:10CFB000E780003FB7370020238907A0B73700205C +:10CFC0001D47238C07A2B7370020A388E7A0372985 +:10CFD0000020B73700201386C4A3C1450945238824 +:10CFE00007A6232A0948EF404ED61306C4A4C1451C +:10CFF0000D45EF408ED53735002041469385C4A3BB +:10D00000130505A69730F91FE780E0323735002079 +:10D0100041469305C4A4130505A29730F91FE78084 +:10D0200080311306494991451145EF400ED2014523 +:10D0300011B7B73700207D5793878782D8B3F8A3FD +:10D04000B73700208546238E07A4B73700202388F2 +:10D05000D7A0B7270020994623AA0748B737002052 +:10D060002398D7A28567938707C8B7360020239DEA +:10D07000F6A2B7370020238B07A0B7370020A3897B +:10D0800007A0B7370020238DE7A6373500209D473E +:10D0900037370020A30AF7A019463737002081450B +:10D0A000130585A1230FF7A01733F91F6700432F3E +:10D0B000930705D04111C20722C406C6C183514758 +:10D0C0002E846368F70E37E706008A07130747F4D4 +:10D0D000BA979C438287B737002083C7C7A51CA097 +:10D0E0003DA0B735002041469385C5A322859730E2 +:10D0F000F91FE780402421A8B735002041469385D9 +:10D10000C5A4EDB7B727002083A747499CC1814735 +:10D11000B24022443E8541018280B7350020194645 +:10D12000938545A7E1B7B737002083C707A145BF5F +:10D130002E85EF70DE81E1BF2E85EF70BE83C1BF0B +:10D14000B737002083C727A159BFB737002083C74F +:10D1500087A371B7B73500201946938585A179B7A4 +:10D16000B737002083C717A19DBFB737002083C7FB +:10D1700007A7B5B7B737002083A747A38DB7B73741 +:10D18000002083C767A1A1BFB737002083D707A3BB +:10D190001EA0B5BFB737002083D7A7A3D5BFB73729 +:10D1A000002083C757A125BFB737002083C7E7A159 +:10D1B0003DB7130710048947E36CA7F4EF600E9B9B +:10D1C0000AA0B1B79307F5CFC207C1834D472E8898 +:10D1D0006362F722B7E606008A07938686F9B69758 +:10D1E0009C43411106C6B2858287C146E147631060 +:10D1F000D8043735002041461305C5A39730F91FE1 +:10D20000E780601325A0C146E1476312D802373595 +:10D21000002041461305C5A4D5B79146E1476318E0 +:10D22000D8001842B727002023AAE7488147B24018 +:10D230003E85410182808546E147E31AD8FEB73733 +:10D240000020942103C607A12388D7A0814705C6E3 +:10D25000F9FE37370020032747A389463D8B630536 +:10D26000D7009546E315D7FCB737002003C5D7A5EF +:10D27000EF700E9365BFC5DEB736002083A646A3C8 +:10D2800063860601BD8AF516E363D8FAB737002036 +:10D2900003C5D7A58545EF304EF449BF9307C01CA1 +:10D2A00063E6071563040614B240428541016F70BE +:10D2B0000EBC9307C01C63EB071363090612B24050 +:10D2C000428541016F704ECB8546E147E311D8F6A8 +:10D2D0001822A946E3EDE6F4B73700202389E7A03A +:10D2E000B1B78546E147E314D8F418228D46E3E050 +:10D2F000E6F4B7370020238CE7A20DBF9946E1473B +:10D30000E317D8F2373500201946130585A1FDB57E +:10D310008546E147E31DD8F018229D46E3E9E6F093 +:10D32000B7370020A388E7A011B78546E147E3108F +:10D33000D8F018228D46E3ECE6EEB73700202388BC +:10D34000E7A6EDB58546E147E313D8EE1822B737D7 +:10D350000020238BE7A0D9BD8946E147E319D8EC2B +:10D36000122205671307A7C79306A6FFC206C1824C +:10D37000E36FD7EAB73700202398C7A245BD894697 +:10D38000E147E316D8EA122205671307A7C79306F9 +:10D39000A6FFC206C182E36CD7E8B7370020239D01 +:10D3A000C7A269B50C22B7370020A38AB7A0B73748 +:10D3B000002003C6E7A10145EF10AFE285BD1022B2 +:10D3C000B7370020238FC7A0B737002083C557A1E8 +:10D3D000DDB79307100463EDA70009478947E318F9 +:10D3E000E8E4B2400E2241016F60EECEE14781B524 +:10D3F000894735BD9307100463E8A70009478947AB +:10D400006395E5000E22CDB789473E8582806F1077 +:10D410004FD86F102FE3014881476F100FD90111CA +:10D4200006CE2AC69730F91FE780006701C9B245CA +:10D43000F24008214D4605616F602EC0F24049451B +:10D44000056182806F102FDA6F100FE06F102FD6FA +:10D450006F10CFDF6F10CFDF411106C6EF304FC81E +:10D4600037A505001305E58DEF307EC7EFC00EAF81 +:10D470003745050013050598EF307EC6EF604ECCAA +:10D480003765050013058552EF307EC5EF90AE86F7 +:10D4900037C50500130545ECEF307EC4EFE07EB6DE +:10D4A00037C506001305857CEF307EC3EFE01F9D76 +:10D4B000379505001305C5E9EF307EC2EFB03E9AFF +:10D4C000B24041016FD00FDD411106C6EF80CFACF5 +:10D4D00037A505001305E58DEF307EC0EFC00EA81F +:10D4E0003745050013050598EF307EBFEF604EC548 +:10D4F0003765050013058552EF307EBEEF80BEFF15 +:10D5000037C50500130545ECEF307EBDEFE07EAF7B +:10D5100037C506001305857CEF307EBCEFE01F9613 +:10D52000379505001305C5E9EF307EBBEFB03E939C +:10D53000B24041016FF0FF9E41113707002006C63F +:10D54000B70700201307077D98C33727002013076C +:10D55000A79ED8C3372700201307C72E37260020E1 +:10D56000B705002037E5040098C713068632938577 +:10D5700005041305052B9730F91FE780A0A937266E +:10D580000020B725002037E506001306063B9385EB +:10D590008532130505139730F91FE780A0A7B24025 +:10D5A00041011733F91F670003A89771F91F938191 +:10D5B00061A51731FA1F1301E1A41715FEFF13052A +:10D5C00065CC9735F91F9385E5A41736F91F130627 +:10D5D00066A763FCC5008322050023A05500110542 +:10D5E0009105E3EAC5FEEFF03FF57300203011CE60 +:10D5F00093070002918F635BF0003355C500B3972A +:10D60000F50033D6C5005D8DB2858280130506FE18 +:10D61000014633D5A500B285CDBFB687B2882A832F +:10D620002E88639B061463F8C50A4167636BE61A8C +:10D63000B70700016360F63493568601E147171778 +:10D6400000001307A79A36971823BA97130700020A +:10D650001D8F19CB3398E500B357F500B318E600DA +:10D6600033E807013313E50013D608013355C80228 +:10D6700093960801C182935703013377C802B3859B +:10D68000A60242073368F700637AB800469893070A +:10D69000F5FF636418016365B8303E853308B84010 +:10D6A0003357C8024203135303013378C802B386C9 +:10D6B000E602420833686800637BD8004698930707 +:10D6C000F7FF6365180179176363D8003E87420549 +:10D6D000598D8145828001E60547B358C7024167ED +:10D6E00063E8E80EB707000163EAF82893D68801DB +:10D6F000E147171700001307678F36971423BE966C +:10D7000093070002958FFDE7939E0801338715412B +:10D7100013DF080193DE0E0185459357030133554E +:10D72000E7033377E703B306D5034207D98F63FADC +:10D73000D700C6971307F5FF63E4170163E5D72603 +:10D740003A85958F33D7E703420313530301B3F7A9 +:10D75000E703B30ED703C207B3E7670063FBD70144 +:10D76000C6979306F7FF63E51701791763E3D701BF +:10D7700036874205598D828063E1D504C16763E134 +:10D78000F604B707000163E3F61E13D7860161486C +:10D790009717000093878785BA979823130E000286 +:10D7A0004297330EEE40631A0E0C63EDB61C333510 +:10D7B000C500134515008145828081450145828061 +:10D7C0009307F00F63F3D71C13D786002148C9B71E +:10D7D0001307F00FC686E37E17F193D68800A147A2 +:10D7E00009BF1307F00FB286E37BC7E493568600A8 +:10D7F000A147B1B5B398F80033D6D50013DF0801BF +:10D80000335EE6033397F500B356D500558F939EEC +:10D81000080193DE0E013313F50093550701B3762B +:10D82000E603B387CE03C206CD8E63FBF600C69631 +:10D830001306FEFF63E4161763F2F616791EC6960A +:10D840009D8E33D6E60393170701C183B3F6E60333 +:10D850003385CE02139706015D8F637BA700469741 +:10D860009307F6FF636817136376A7127916469736 +:10D8700093150E01098FD18D4DB5B357E600B396C0 +:10D88000C601DD8E33D3E50013DF0601B357E30392 +:10D89000939E060193DE0E013398C5013357E500D0 +:10D8A00033680701935808013316C6013373E30345 +:10D8B000B385FE024203B368130163FBB800B69858 +:10D8C0001387F7FF63EAD80C63F8B80CF917B6981A +:10D8D000B388B84033D7E803420813580801B3F8B7 +:10D8E000E8033383EE02C208B3E5080163FB650079 +:10D8F000B6951308F7FF63EDD50863FB6508791744 +:10D90000B695C207416FD98F1307FFFFB3F6E70043 +:10D9100093D80701718F4182B38EE602B3856540CB +:10D92000B386C60213D80E013387E802BA96C296B0 +:10D930003386C80263F3E6007A9693D806014696CA +:10D9400063E2C5026385C5003E85814582804167EB +:10D950007D17F98EC206B3FEEE003315C501F696AB +:10D96000E374D5FE1385F7FF8145828013D7060146 +:10D97000414839BD93560601C147D1B193D608013C +:10D98000C14785BB8145054582803687014809B579 +:10D99000428785BF3E86E9BDBA871DBF328E4DB531 +:10D9A00079154698E5B97915C69761BBB3C7A50047 +:10D9B0008D8B3307C50081E78D4763EDC700AA87CC +:10D9C000637EE508942185078505A38FD7FEE3EBE9 +:10D9D000E7FE828093763500AA8789CA942185075D +:10D9E0008505A38FD7FE93F63700C5BF9376C7FF93 +:10D9F000138606FE63F0C70683A3050083A24500D5 +:10DA000083AF850003AFC50083AE050103AE4501BA +:10DA100003A3850183A8C5019385450223A0770050 +:10DA200003A8C5FF23A2570023A4F70123A6E701FB +:10DA300023A8D70123AAC70123AC670023AE17018F +:10DA40009387470223AE07FF75B790419107910571 +:10DA500023AEC7FEE3EBD7FEE3E6E7F682800000E5 +:10DA6000F401FA00960064004B0032001E0014001E +:10DA7000FB349B5F8000008000100000000000006D +:10DA80004C220500EE6F05007E220500387D050062 +:10DA9000EC2205000A7D050096230500DC7C0500CC +:10DAA00024240500688705007024050068870500A8 +:10DAB000C2240500CE86050096230500887C05005B +:10DAC0005A250500907F05000000000000000000BE +:10DAD00098250500188005000026050068700500DF +:10DAE00022B8050022B8050044B8050058B8050062 +:10DAF00060B8050068B8050070B8050078B8050082 +:10DB000080B8050088B8050090B80500C6B80500C3 +:10DB1000CEB8050096B8050001010201020101021C +:10DB200001020404060104010101010104040201CF +:10DB300004000000010102010201010201010404CC +:10DB400006010401010101010401020101000000BC +:10DB500062C505006EC50500ACC50500C4C605005C +:10DB6000CCC605000CC7050044C705007EC70500EC +:10DB7000B0C7050066C60500E4C705006CC805000F +:10DB8000ECD30500CAD3050096D60500F0D60500F3 +:10DB9000CED9050008D805004CD8050086D8050068 +:10DBA000BCD80500F6D80500CAD3050038D9050051 +:10DBB000AAD90500000000000000000000000000DD +:10DBC00000000087070B0D1113171D1F25292B2F90 +:10DBD000353B3D4347494F535961FF0094030600CD +:10DBE000BE030600C20406001C030600560506001C +:10DBF000BC05060092050600F60506000E060600A6 +:10DC00002E0306007604060022040600142A0600ED +:10DC1000FA380600C02A060050390600DE2A06003F +:10DC20005A2B0600802B0600BC2B0600723806001B +:10DC3000EC370600C82C0600EC2C0600562D06001A +:10DC4000E82D06006437060088360600B035060069 +:10DC50007C210600882E0600D42E0600323C0600E9 +:10DC6000D43B0600002F060098300600DE31060087 +:10DC700058320600863C06008A3C06008E3C0600B0 +:10DC80007C320600B6320600923C0600963C060046 +:10DC90009A3C06009E3C06009A3A0600F4320600C2 +:10DCA000C0330600A23C0600A63C0600AA3C0600C3 +:10DCB000AE3C0600B23C06004E4406001A3D06008B +:10DCC000D23C060016410600E8400600BC400600B3 +:10DCD0008240060056400600184206001C4206001C +:10DCE000823F060020420600443F06002442060010 +:10DCF000284206002C42060030420600343F06004F +:10DD0000FE3E060034420600DE3E060038420600B3 +:10DD10003C4206004042060044420600D63C060053 +:10DD2000EA3C0600484206004C420600504206000B +:10DD300054420600584206007E3E0600083E060099 +:10DD40005C4206006042060064420600684206002B +:10DD50006C42060010420600144206007A3D06009E +:10DD6000AE4106004C410600EE3C0600434833320B +:10DD7000563230785F424C455F4C49425F56312EF7 +:10DD80003330000026B8060032B806003EB8060060 +:10DD900048B8060052B8060072B806007EB8060001 +:10DDA00088B8060094B806009EB80600A8B8060019 +:10DDB000B2B80600BCB80600C8B80600D2B8060063 +:10DDC000DCB8060040B90600E6B80600F0B8060068 +:10DDD000FAB8060004B9060018B9060040B90600F2 +:10DDE00040B9060040B9060040B9060040B9060037 +:10DDF00040B9060040B9060040B9060020B9060047 +:10DE00000EB9060040B906002AB9060036B9060068 +:10DE100088BF0600BABF0600DABF0600F2BF0600E0 +:10DE200008C0060024C0060042C0060054C0060018 +:10DE300072C006008AC00600A4C00600BCC006006E +:10DE4000D2C00600E6C0060000C1060012C10600EE +:10DE500030C10600EAC2060000C3060018C306006F +:10DE600038C30600C6C4060086C3060054C10600B7 +:10DE70009EC30600B0C30600A8C10600A8C10600E4 +:10DE80007EC206008CC20600B8C306005CC3060052 +:10DE9000CAC3060040C406008EC40600B0C7060010 +:10DEA00026C5060026C50600F4C60600C0C5060045 +:10DEB0000AC50600A8C7060026C506009CC60600BF +:10DEC00032C7060026C5060026C5060026C5060080 +:10DED00026C5060026C5060026C5060026C506007E +:10DEE00026C5060026C5060026C506007CC5060018 +:10DEF000BAC90600A2CA060078CA0600E0CA06002F +:10DF0000E0CA060068CB0600B0CB0600A2CA060035 +:10DF1000A2CA0600A2CA0600A2CA0600A2CA060039 +:10DF2000A2CA0600A2CA0600A2CA0600A2CA060029 +:10DF3000A2CA0600A2CA0600A2CA0600D6CB0600E4 +:10DF4000D6CB0600D6D00600E2D00600F8D00600F8 +:10DF500004D106001AD1060026D1060030D10600F1 +:10DF600038D1060040D106004AD1060054D106003F +:10DF700060D106006AD1060074D106007ED1060089 +:10DF8000B2D10600B2D1060088D1060094D10600B5 +:10DF90009ED10600A8D10600EAD1060006D20600EE +:10DFA0001AD20600D2D3060036D206009CD2060052 +:10DFB000B2D20600C8D20600E2D20600FCD20600A9 +:10DFC00010D306002AD30600D2D3060044D306009D +:10DFD000D2D30600D2D3060058D306007ED3060063 +:10DFE000A4D30600BED3060000010202030303030C +:10DFF00004040404040404040505050505050505D9 +:10E0000005050505050505050606060606060606B8 +:10E0100006060606060606060606060606060606A0 +:10E020000606060606060606070707070707070788 +:10E030000707070707070707070707070707070770 +:10E040000707070707070707070707070707070760 +:10E050000707070707070707070707070707070750 +:10E060000707070707070707080808080808080838 +:10E070000808080808080808080808080808080820 +:10E080000808080808080808080808080808080810 +:10E090000808080808080808080808080808080800 +:10E0A00008080808080808080808080808080808F0 +:10E0B00008080808080808080808080808080808E0 +:10E0C00008080808080808080808080808080808D0 +:10E0D00008080808080808080808080808080808C0 +:08E0E0000808080808080808F8 +:08E0E8000200000008E106003F +:02E0F000012A03 +:02E0F400A62A5A +:02E0F8000328FB +:02E0FC000229F7 +:02E10000002AF3 +:02E10400882B66 +:02E108000018FD +:02E10C000118F8 +:02E110000228E3 +:02E11400042ADB +:02E11800022AD9 +:02E11C000028D9 +:02E12000C92A0A +:02E12400032ACC +:02E128000128CC +:02E12C00052AC2 +:10E13000044F05001E500500000000000200000012 +:10E140001CE10600010000009C23002002000000EA +:10E15000F8E0060001000000A723002002000000F4 +:10E160002CE106000000000000000000020000009A +:10E17000FCE00600030000000000000000000000BA +:10E180000472050000000000C3812F010201020299 +:10E19000020202005000A0000000E803020802FF93 +:10E1A000FF000000020000000CE106000100FF205B +:08E1B00001050201011001014B :040000034000E000D9 :00000001FF diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/MESH/adv_ali_light/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/MESH/adv_ali_light/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_ali_light/APP/app_main.c index 3361ed5..3bac7de 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light/APP/app_main.c @@ -22,9 +22,7 @@ * GLOBAL TYPEDEFS */ __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; -#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) -const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; -#endif + /********************************************************************* * @fn bt_mesh_lib_init @@ -91,6 +89,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_ali_light/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_ali_light/APP/include/app_mesh_config.h index 2f2e14c..7ed0127 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_ali_light/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/app_main.c index 6dc3768..c1f9f5c 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/app_main.c @@ -22,9 +22,7 @@ * GLOBAL TYPEDEFS */ __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; -#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) -const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; -#endif + /********************************************************************* * @fn bt_mesh_lib_init @@ -91,6 +89,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/include/app_mesh_config.h index eda6e11..6c9e663 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_add_lightness/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/app_main.c index 6dc3768..c1f9f5c 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/app_main.c @@ -22,9 +22,7 @@ * GLOBAL TYPEDEFS */ __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; -#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) -const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; -#endif + /********************************************************************* * @fn bt_mesh_lib_init @@ -91,6 +89,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/include/app_mesh_config.h index eda6e11..6c9e663 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_add_windspeed/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app.c b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app.c index 594bf47..763543e 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app.c @@ -333,7 +333,7 @@ void send_support_attr(void) { struct bt_mesh_indicate *ind; struct bt_mesh_indicate *ind2; - uint32_t color; + uint8_t color[6]; APP_DBG(""); if(!bt_mesh_is_provisioned()) @@ -371,11 +371,11 @@ void send_support_attr(void) // 添加led_color属性 { /* Add led_color attrbute opcode */ - net_buf_simple_add_le16(&(ind->buf->b), ALI_GEN_ATTR_TYPE_LIGHTCOLOR_ADJ); + net_buf_simple_add_le16(&(ind->buf->b), ALI_GEN_ATTR_TYPE_COLOR); /* Add led_color status */ - read_led_color(&color); - net_buf_simple_add_u8(&(ind->buf->b), color); + read_led_color(color); + net_buf_simple_add_mem(&(ind->buf->b), color, 6); } bt_mesh_indicate_send(ind); diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_als_led_color_attr.c b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_als_led_color_attr.c index 4f016da..249403f 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_als_led_color_attr.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_als_led_color_attr.c @@ -24,7 +24,7 @@ #define ALI_DEF_TTL (10) // 模拟led_color值 -int32_t device_led_color_adj = 0; +uint8_t device_led_color[6] = {0}; /******************************************************************************* * Function Name : read_led_color @@ -32,10 +32,10 @@ int32_t device_led_color_adj = 0; * Input : None * Return : None *******************************************************************************/ -void read_led_color(int32_t *pcolor) +void read_led_color(uint8_t *pcolor) { - APP_DBG("device_led_color_adj: %d ", (int32_t)device_led_color_adj); - *pcolor = device_led_color_adj; + APP_DBG("device_led_color_adj: %d ", device_led_color[0]); + tmos_memcpy(pcolor, device_led_color, 6); } /******************************************************************************* @@ -44,9 +44,9 @@ void read_led_color(int32_t *pcolor) * Input : None * Return : None *******************************************************************************/ -void set_led_color(int32_t color) +void set_led_color(uint8_t *pcolor) { - device_led_color_adj = color; + tmos_memcpy(device_led_color, pcolor, 6); } /******************************************************************************* @@ -61,16 +61,14 @@ static void gen_led_color_status(struct bt_mesh_model *model, { NET_BUF_SIMPLE_DEFINE(msg, 32); int err; - int32_t color; //////////////////////////////////////////////////////////////////////// // 0xD3 0xA8 0x01 | 0x## | 0x## 0x## | 0x## 0x## ....// // Opcode | TID | Attribute Type | Attribute Value // //////////////////////////////////////////////////////////////////////// bt_mesh_model_msg_init(&msg, OP_VENDOR_MESSAGE_ATTR_STATUS); net_buf_simple_add_u8(&msg, als_avail_tid_get()); - net_buf_simple_add_le16(&msg, ALI_GEN_ATTR_TYPE_LIGHTCOLOR_ADJ); - read_led_color(&color); - net_buf_simple_add_le32(&msg, color); + net_buf_simple_add_le16(&msg, ALI_GEN_ATTR_TYPE_COLOR); + net_buf_simple_add_mem(&msg, device_led_color, 6); APP_DBG("ttl: 0x%02x dst: 0x%04x", ctx->recv_ttl, ctx->recv_dst); @@ -129,13 +127,13 @@ void gen_led_color_set(struct bt_mesh_model *model, APP_DBG("ttl: 0x%02x dst: 0x%04x rssi: %d len %d", ctx->recv_ttl, ctx->recv_dst, ctx->recv_rssi, buf->len); - if((buf->data[1] | (buf->data[2] << 8)) == ALI_GEN_ATTR_TYPE_LIGHTCOLOR_ADJ) + if((buf->data[1] | (buf->data[2] << 8)) == ALI_GEN_ATTR_TYPE_COLOR) { - APP_DBG("%x %x %x %x %x %x ", - buf->data[0], buf->data[1], buf->data[2], buf->data[3], buf->data[4], buf->data[5]); - int32_t color = (buf->data[3] | (buf->data[4] << 8) | (buf->data[5] << 16) | (buf->data[6] << 24)); + APP_DBG("%x %x %x %x %x %x %x %x %x", + buf->data[0], buf->data[1], buf->data[2], buf->data[3], buf->data[4], buf->data[5] + , buf->data[6], buf->data[7], buf->data[8]); // 命令为设定值 - set_led_color(color); + set_led_color(&(buf->data[3])); } if(ctx->recv_ttl != ALI_DEF_TTL) @@ -170,11 +168,13 @@ void gen_led_color_set_unack(struct bt_mesh_model *model, { APP_DBG(" "); - if((buf->data[1] | (buf->data[2] << 8)) == ALI_GEN_ATTR_TYPE_LIGHTCOLOR_ADJ) + if((buf->data[1] | (buf->data[2] << 8)) == ALI_GEN_ATTR_TYPE_COLOR) { - uint32_t color = (buf->data[3] | (buf->data[4] << 8) | (buf->data[5] << 16) | (buf->data[6] << 24)); + APP_DBG("%x %x %x %x %x %x %x %x %x", + buf->data[0], buf->data[1], buf->data[2], buf->data[3], buf->data[4], buf->data[5] + , buf->data[6], buf->data[7], buf->data[8]); // 命令为设定值 - set_led_color(color); + set_led_color(&(buf->data[3])); } } diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_main.c index 6dc3768..c1f9f5c 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_main.c @@ -22,9 +22,7 @@ * GLOBAL TYPEDEFS */ __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; -#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) -const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; -#endif + /********************************************************************* * @fn bt_mesh_lib_init @@ -91,6 +89,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_vendor_model.c b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_vendor_model.c index b1056e1..885084d 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_vendor_model.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/app_vendor_model.c @@ -92,7 +92,7 @@ static void tm_attr_get(struct bt_mesh_model *model, { case ALI_GEN_ATTR_TYPE_RGBCOLOR: { - gen_led_color_get(model, ctx, buf); +// gen_led_color_get(model, ctx, buf); break; } @@ -131,7 +131,7 @@ static void tm_attr_set(struct bt_mesh_model *model, switch(attr_type) { - case ALI_GEN_ATTR_TYPE_LIGHTCOLOR_ADJ: + case ALI_GEN_ATTR_TYPE_COLOR: { gen_led_color_set(model, ctx, buf); break; @@ -173,7 +173,7 @@ static void tm_attr_set_unack(struct bt_mesh_model *model, { case ALI_GEN_ATTR_TYPE_RGBCOLOR: { - gen_led_color_set_unack(model, ctx, buf); +// gen_led_color_set_unack(model, ctx, buf); break; } @@ -626,7 +626,7 @@ void send_led_indicate(struct indicate_param *param) void send_led_color_indicate(struct indicate_param *param) { struct bt_mesh_indicate *ind; - uint32_t color; + uint8_t color[6]; ind = bt_mesh_ind_alloc(32); if(!ind) @@ -643,11 +643,11 @@ void send_led_color_indicate(struct indicate_param *param) net_buf_simple_add_u8(&(ind->buf->b), param->tid); /* Add led_color attrbute opcode */ - net_buf_simple_add_le16(&(ind->buf->b), ALI_GEN_ATTR_TYPE_LIGHTCOLOR_ADJ); + net_buf_simple_add_le16(&(ind->buf->b), ALI_GEN_ATTR_TYPE_COLOR); /* Add led_color status */ - read_led_color(&color); - net_buf_simple_add_le32(&(ind->buf->b), color); + read_led_color(color); + net_buf_simple_add_mem(&(ind->buf->b), color, 6); bt_mesh_indicate_send(ind); } diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_als_led_color_attr.h b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_als_led_color_attr.h index a046877..931cd17 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_als_led_color_attr.h +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_als_led_color_attr.h @@ -19,9 +19,9 @@ extern "C" { #include "MESH_LIB.h" -void read_led_color(int32_t *pcolor); +void read_led_color(uint8_t *pcolor); -void set_led_color(int32_t color); +void set_led_color(uint8_t *pcolor); void gen_led_color_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_mesh_config.h index eda6e11..6c9e663 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_vendor_model.h b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_vendor_model.h index aa638ef..c9792ce 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_vendor_model.h +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_multi_element/APP/include/app_vendor_model.h @@ -145,6 +145,8 @@ void send_led_color_indicate(struct indicate_param *param); void bt_mesh_indicate_reset(void); +void send_color_indicate(struct indicate_param *param); //添加处 + /** * @brief 阿里 厂家模型 初始化 * diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/app_main.c index 6dc3768..c1f9f5c 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/app_main.c @@ -22,9 +22,7 @@ * GLOBAL TYPEDEFS */ __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; -#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) -const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; -#endif + /********************************************************************* * @fn bt_mesh_lib_init @@ -91,6 +89,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/include/app_mesh_config.h index eda6e11..6c9e663 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/peripheral.c b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/peripheral.c index 34dcd32..c333d27 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/peripheral.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/APP/peripheral.c @@ -176,7 +176,8 @@ static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { // GAP Bond Manager Callbacks static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) - NULL // Pairing / Bonding state Callback (not used by application) + NULL, // Pairing / Bonding state Callback (not used by application) + NULL // oob callback }; // Simple GATT Profile Callbacks @@ -217,7 +218,7 @@ void Peripheral_Init(void) } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Set advertising interval { diff --git a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/Profile/gattprofile.c b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/Profile/gattprofile.c index c4f318c..19412f7 100644 --- a/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/Profile/gattprofile.c +++ b/EVT/EXAM/BLE/MESH/adv_ali_light_with_peripheral/Profile/gattprofile.c @@ -3,7 +3,9 @@ * Author : WCH * Version : V1.0 * Date : 2018/12/10 - * Description : 自定义包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读 + * Description : Customize services with five different attributes, + * including readable, writable, notification, readable and writable, + * and safe readable ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -116,7 +118,7 @@ static uint8_t simpleProfileChar4[SIMPLEPROFILE_CHAR4_LEN] = {0}; // instantiation of the Client Characteristic Configuration. Reads of the // Client Characteristic Configuration only shows the configuration for // that client and writes only affect the configuration of that client. -static gattCharCfg_t simpleProfileChar4Config[4]; +static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION]; // Simple Profile Characteristic 4 User Description static uint8_t simpleProfileChar4UserDesp[] = "Characteristic 4\0"; @@ -511,6 +513,7 @@ static bStatus_t simpleProfile_ReadAttrCB(uint16_t connHandle, gattAttribute_t * { bStatus_t status = SUCCESS; + // Make sure it's not a blob operation (no attributes in the profile are long) if(offset > 0) { diff --git a/EVT/EXAM/BLE/MESH/adv_proxy/.cproject b/EVT/EXAM/BLE/MESH/adv_proxy/.cproject index deba991..252e441 100644 --- a/EVT/EXAM/BLE/MESH/adv_proxy/.cproject +++ b/EVT/EXAM/BLE/MESH/adv_proxy/.cproject @@ -68,8 +68,8 @@
- + diff --git a/EVT/EXAM/BLE/MESH/adv_proxy/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_proxy/APP/app_main.c index 6dc3768..cf7d38b 100644 --- a/EVT/EXAM/BLE/MESH/adv_proxy/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_proxy/APP/app_main.c @@ -91,6 +91,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_proxy/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_proxy/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_proxy/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_proxy/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_proxy/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_proxy/APP/include/app_mesh_config.h index a6abb61..8443ec8 100644 --- a/EVT/EXAM/BLE/MESH/adv_proxy/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_proxy/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_vendor/APP/app.c b/EVT/EXAM/BLE/MESH/adv_vendor/APP/app.c index 4aeb38c..41b8bda 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor/APP/app.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor/APP/app.c @@ -44,7 +44,6 @@ static uint8_t App_TaskID = 0; // Task ID for internal task/event processing static uint16_t App_ProcessEvent(uint8_t task_id, uint16_t events); static uint8_t dev_uuid[16] = {0}; // 此设备的UUID -uint8_t MACAddr[6]; // 此设备的mac #if(!CONFIG_BLE_MESH_PB_GATT) NET_BUF_SIMPLE_DEFINE_STATIC(rx_buf, 65); @@ -471,9 +470,18 @@ void blemesh_on_sync(void) lpn_init_register(bt_mesh_lpn_init, lpn_state); #endif /* LPN */ - FLASH_GetMACAddress(MACAddr); - tmos_memcpy(dev_uuid, MACAddr, 6); - err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MACAddr, &info); +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) + tmos_memcpy(dev_uuid, MacAddr, 6); + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); +#else + { + uint8_t MacAddr[6]; + FLASH_GetMACAddress(MacAddr); + tmos_memcpy(dev_uuid, MacAddr, 6); + // 使用芯片mac地址 + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); + } +#endif if(err) { APP_DBG("Unable set configuration (err:%d)", err); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_vendor/APP/app_main.c index 6dc3768..cf7d38b 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor/APP/app_main.c @@ -91,6 +91,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_vendor/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_vendor/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_vendor/APP/include/app_mesh_config.h index fe20e77..53b7f9d 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_vendor/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/app.c b/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/app.c index 68387ce..0f7e6ab 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/app.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/app.c @@ -44,7 +44,6 @@ static uint8_t App_TaskID = 0; // Task ID for internal task/event processing static uint16_t App_ProcessEvent(uint8_t task_id, uint16_t events); static uint8_t dev_uuid[16] = {0}; // 此设备的UUID -uint8_t MACAddr[6]; // 此设备的mac #if(!CONFIG_BLE_MESH_PB_GATT) NET_BUF_SIMPLE_DEFINE_STATIC(rx_buf, 65); @@ -497,9 +496,18 @@ void blemesh_on_sync(void) lpn_init_register(bt_mesh_lpn_init, lpn_state); #endif /* LPN */ - FLASH_GetMACAddress(MACAddr); - tmos_memcpy(dev_uuid, MACAddr, 6); - err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MACAddr, &info); +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) + tmos_memcpy(dev_uuid, MacAddr, 6); + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); +#else + { + uint8_t MacAddr[6]; + FLASH_GetMACAddress(MacAddr); + tmos_memcpy(dev_uuid, MacAddr, 6); + // 使用芯片mac地址 + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); + } +#endif if(err) { APP_DBG("Unable set configuration (err:%d)", err); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/app_main.c index 6dc3768..cf7d38b 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/app_main.c @@ -91,6 +91,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/include/app_mesh_config.h index 1cfde37..5ee0623 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_vendor_friend/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/app.c b/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/app.c index 421a97e..8f4f1b1 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/app.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/app.c @@ -44,7 +44,6 @@ static uint8_t App_TaskID = 0; // Task ID for internal task/event processing static uint16_t App_ProcessEvent(uint8_t task_id, uint16_t events); static uint8_t dev_uuid[16] = {0}; // 此设备的UUID -uint8_t MACAddr[6]; // 此设备的mac #if(!CONFIG_BLE_MESH_PB_GATT) NET_BUF_SIMPLE_DEFINE_STATIC(rx_buf, 65); @@ -64,7 +63,7 @@ static void prov_reset(void); static struct bt_mesh_cfg_srv cfg_srv = { .relay = BLE_MESH_RELAY_DISABLED, - .beacon = BLE_MESH_BEACON_ENABLED, + .beacon = BLE_MESH_BEACON_DISABLED, #if(CONFIG_BLE_MESH_FRIEND) .frnd = BLE_MESH_FRIEND_ENABLED, #endif @@ -308,16 +307,16 @@ static void cfg_srv_rsp_handler( const cfg_srv_status_t *val ) * * @brief 朋友关系建立回调 * - * @param friend_addr - 朋友节点地址 + * @param frd_addr - 朋友节点地址 * state - 回调状态 * * @return none */ -static void lpn_state(uint16_t friend_addr, uint8_t state) +static void lpn_state(uint16_t frd_addr, uint8_t state) { if(state == LPN_FRIENDSHIP_ESTABLISHED) { - APP_DBG("lpn friendship established"); + APP_DBG("lpn friendship established %d",frd_addr); } else if(state == LPN_FRIENDSHIP_TERMINATED) { @@ -500,9 +499,18 @@ void blemesh_on_sync(void) lpn_init_register(bt_mesh_lpn_init, lpn_state); #endif /* LPN */ - FLASH_GetMACAddress(MACAddr); - tmos_memcpy(dev_uuid, MACAddr, 6); - err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MACAddr, &info); +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) + tmos_memcpy(dev_uuid, MacAddr, 6); + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); +#else + { + uint8_t MacAddr[6]; + FLASH_GetMACAddress(MacAddr); + tmos_memcpy(dev_uuid, MacAddr, 6); + // 使用芯片mac地址 + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); + } +#endif if(err) { APP_DBG("Unable set configuration (err:%d)", err); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/app_main.c index 6dc3768..cf7d38b 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/app_main.c @@ -91,6 +91,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/include/app_mesh_config.h index dd9da1c..a94045b 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_vendor_low_power/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/app.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/app.c index a6bf2d3..3ce24ba 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/app.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/app.c @@ -42,7 +42,6 @@ static uint8_t App_TaskID = 0; // Task ID for internal task/event processing static uint16_t App_ProcessEvent(uint8_t task_id, uint16_t events); static uint8_t dev_uuid[16] = {0}; // 此设备的UUID -uint8_t MACAddr[6]; // 此设备的mac static const uint8_t self_prov_net_key[16] = { 0x00, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, @@ -612,9 +611,18 @@ void blemesh_on_sync(void) lpn_init_register(bt_mesh_lpn_init, lpn_state); #endif /* LPN */ - FLASH_GetMACAddress(MACAddr); - tmos_memcpy(dev_uuid, MACAddr, 6); - err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MACAddr, &info); +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) + tmos_memcpy(dev_uuid, MacAddr, 6); + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); +#else + { + uint8_t MacAddr[6]; + FLASH_GetMACAddress(MacAddr); + tmos_memcpy(dev_uuid, MacAddr, 6); + // 使用芯片mac地址 + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); + } +#endif if(err) { APP_DBG("Unable set configuration (err:%d)", err); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/app_main.c index 6dc3768..cf7d38b 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/app_main.c @@ -91,6 +91,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/include/app_mesh_config.h index f8a9598..413f61c 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_IAP/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_IAP/APP/app_main.c index aa47125..f1de8d9 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_IAP/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_IAP/APP/app_main.c @@ -147,6 +147,7 @@ void ReadImageFlag(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_IAP/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_IAP/APP/ch32v20x_it.c index ed41615..57016d9 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_IAP/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_IAP/APP/ch32v20x_it.c @@ -21,7 +21,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -58,14 +57,3 @@ void HardFault_Handler(void) void BB_IRQHandler(void) { } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ -} diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/.cproject b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/.cproject index 448e698..1474ab1 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/.cproject +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/.cproject @@ -165,5 +165,4 @@ - diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/app.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/app.c index 8c7fa86..5a47a5d 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/app.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/app.c @@ -47,7 +47,6 @@ static uint8_t App_TaskID = 0; // Task ID for internal task/event processing static uint16_t App_ProcessEvent(uint8_t task_id, uint16_t events); static uint8_t dev_uuid[16] = {0}; // 此设备的UUID -uint8_t MACAddr[6]; // 此设备的mac static uint8_t self_prov_net_key[16] = {0}; @@ -534,7 +533,6 @@ static int vendor_model_srv_send(uint16_t addr, uint8_t *pData, uint16_t len) .tid = vendor_srv_tid_get(), // tid,每个独立消息递增循环,srv使用128~191 .send_ttl = BLE_MESH_TTL_DEFAULT, // ttl,无特定则使用默认值 }; -// return vendor_message_srv_indicate(¶m, pData, len); // 调用自定义模型服务的有应答指示函数发送数据,默认超时2s vendor_message_srv_trans_reset(); return vendor_message_srv_send_trans(¶m, pData, len); // 或者调用自定义模型服务的透传函数发送数据,只发送,无应答机制 } @@ -652,9 +650,18 @@ void blemesh_on_sync(void) lpn_init_register(bt_mesh_lpn_init, lpn_state); #endif /* LPN */ - FLASH_GetMACAddress(MACAddr); - tmos_memcpy(dev_uuid, MACAddr, 6); - err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MACAddr, &info); +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) + tmos_memcpy(dev_uuid, MacAddr, 6); + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); +#else + { + uint8_t MacAddr[6]; + FLASH_GetMACAddress(MacAddr); + tmos_memcpy(dev_uuid, MacAddr, 6); + // 使用芯片mac地址 + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); + } +#endif if(err) { APP_DBG("Unable set configuration (err:%d)", err); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/app_main.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/app_main.c index 6dc3768..cf7d38b 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/app_main.c @@ -91,6 +91,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/include/app_mesh_config.h index 84fbbfd..6ecbc8d 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/include/app_mesh_config.h @@ -16,7 +16,7 @@ #ifdef __cplusplus extern "C" { #endif -/**************************功能配置***************************************************/ +/**************************功能配置,建议直接参考不同例程*****************************/ // relay功能 #define CONFIG_BLE_MESH_RELAY 1 @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/peripheral.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/peripheral.c index e7cacc2..8347fb7 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/peripheral.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/APP/peripheral.c @@ -165,7 +165,8 @@ static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { // GAP Bond Manager Callbacks static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) - NULL // Pairing / Bonding state Callback (not used by application) + NULL, // Pairing / Bonding state Callback (not used by application) + NULL // oob callback }; // Simple GATT Profile Callbacks @@ -209,7 +210,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Set advertising interval { diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/Profile/gattprofile.c b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/Profile/gattprofile.c index 9d49344..770b8b0 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/Profile/gattprofile.c +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/Profile/gattprofile.c @@ -3,7 +3,9 @@ * Author : WCH * Version : V1.0 * Date : 2018/12/10 - * Description : 自定义包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读 + * Description : Customize services with five different attributes, + * including readable, writable, notification, readable and writable, + * and safe readable ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -117,7 +119,7 @@ static uint8_t simpleProfileChar4[SIMPLEPROFILE_CHAR4_LEN] = {0}; // instantiation of the Client Characteristic Configuration. Reads of the // Client Characteristic Configuration only shows the configuration for // that client and writes only affect the configuration of that client. -static gattCharCfg_t simpleProfileChar4Config[4]; +static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION]; // Simple Profile Characteristic 4 User Description static uint8_t simpleProfileChar4UserDesp[] = "Characteristic 4\0"; @@ -352,7 +354,7 @@ bStatus_t SimpleProfile_RegisterAppCBs(simpleProfileCBs_t *appCallbacks) * * @return bStatus_t */ -bStatus_t SimpleProfile_SetParameter(uint8_t param, uint8_t len, void *value) +bStatus_t SimpleProfile_SetParameter(uint8_t param, uint16_t len, void *value) { bStatus_t ret = SUCCESS; switch(param) diff --git a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/Profile/include/gattprofile.h b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/Profile/include/gattprofile.h index c1ccb5c..d72d333 100644 --- a/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/Profile/include/gattprofile.h +++ b/EVT/EXAM/BLE/MESH/adv_vendor_self_provision_with_peripheral/Profile/include/gattprofile.h @@ -104,7 +104,7 @@ extern bStatus_t SimpleProfile_RegisterAppCBs(simpleProfileCBs_t *appCallbacks); * data type (example: data type of uint16_t will be cast to * uint16_t pointer). */ -extern bStatus_t SimpleProfile_SetParameter(uint8_t param, uint8_t len, void *value); +extern bStatus_t SimpleProfile_SetParameter(uint8_t param, uint16_t len, void *value); /* * SimpleProfile_GetParameter - Get a Simple GATT Profile parameter. diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/app.c b/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/app.c index e684702..6e3dfaa 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/app.c +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/app.c @@ -40,7 +40,6 @@ static uint8_t App_TaskID = 0; // Task ID for internal task/event processing static uint16_t App_ProcessEvent(uint8_t task_id, uint16_t events); static uint8_t dev_uuid[16] = {0}; // 此设备的UUID -uint8_t MACAddr[6]; // 此设备的mac static const uint8_t self_prov_net_key[16] = { 0x00, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, @@ -1000,9 +999,18 @@ void blemesh_on_sync(void) #if(CONFIG_BLE_MESH_LOW_POWER) lpn_init_register(bt_mesh_lpn_init); #endif /* LPN */ - FLASH_GetMACAddress(MACAddr); - tmos_memcpy(dev_uuid, MACAddr, 6); - err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MACAddr, &info); +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) + tmos_memcpy(dev_uuid, MacAddr, 6); + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); +#else + { + uint8_t MacAddr[6]; + FLASH_GetMACAddress(MacAddr); + tmos_memcpy(dev_uuid, MacAddr, 6); + // 使用芯片mac地址 + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); + } +#endif if(err) { APP_DBG("Unable set configuration (err:%d)", err); diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/app_main.c b/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/app_main.c index 6dc3768..cf7d38b 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/app_main.c @@ -91,6 +91,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/include/app_mesh_config.h index 13fc6b6..2d9cfef 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/app.c b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/app.c index f3bbb64..3d45934 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/app.c +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/app.c @@ -41,7 +41,6 @@ static uint8_t App_TaskID = 0; // Task ID for internal task/event processing static uint16_t App_ProcessEvent(uint8_t task_id, uint16_t events); static uint8_t dev_uuid[16] = {0}; // 此设备的UUID -uint8_t MACAddr[6]; // 此设备的mac static const uint8_t self_prov_net_key[16] = { 0x00, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, @@ -1005,9 +1004,18 @@ void blemesh_on_sync(void) #if(CONFIG_BLE_MESH_LOW_POWER) lpn_init_register(bt_mesh_lpn_init); #endif /* LPN */ - FLASH_GetMACAddress(MACAddr); - tmos_memcpy(dev_uuid, MACAddr, 6); - err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MACAddr, &info); +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) + tmos_memcpy(dev_uuid, MacAddr, 6); + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); +#else + { + uint8_t MacAddr[6]; + FLASH_GetMACAddress(MacAddr); + tmos_memcpy(dev_uuid, MacAddr, 6); + // 使用芯片mac地址 + err = bt_mesh_cfg_set(&app_mesh_cfg, &app_dev, MacAddr, &info); + } +#endif if(err) { APP_DBG("Unable set configuration (err:%d)", err); diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/app_main.c b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/app_main.c index 6dc3768..cf7d38b 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/app_main.c +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/app_main.c @@ -91,6 +91,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/include/app_mesh_config.h b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/include/app_mesh_config.h index 13fc6b6..2d9cfef 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/include/app_mesh_config.h +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/include/app_mesh_config.h @@ -168,10 +168,10 @@ extern "C" { #define CONFIG_MESH_FRIEND_RECV_WIN_DEF (30) #define CONFIG_MESH_FRIEND_RECV_WIN_MAX (255) -// 低功耗节点的请求消息队列大小 +// 低功耗节点的请求消息队列大小(log2(N)),例配置为4,则大小为2^4=16 #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MIN (2) #define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF (2) -#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (20) +#define CONFIG_MESH_LPN_REQ_QUEUE_SIZE_MAX (4) // 低功耗节点的请求消息间隔(100ms) #define CONFIG_MESH_LPN_POLLINTERVAL_MIN (1) diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/peripheral.c b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/peripheral.c index 04e45a0..722cb5e 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/peripheral.c +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/APP/peripheral.c @@ -173,7 +173,8 @@ static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { // GAP Bond Manager Callbacks static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) - NULL // Pairing / Bonding state Callback (not used by application) + NULL, // Pairing / Bonding state Callback (not used by application) + NULL // oob callback }; // Simple GATT Profile Callbacks @@ -214,7 +215,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Set advertising interval { diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/Profile/gattprofile.c b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/Profile/gattprofile.c index d93d2d5..634e79e 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/Profile/gattprofile.c +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/Profile/gattprofile.c @@ -1,11 +1,16 @@ /********************************** (C) COPYRIGHT ******************************* -* File Name : gattprofile.C -* Author : WCH -* Version : V1.0 -* Date : 2018/12/10 -* Description : 自定义包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读 - -*******************************************************************************/ + * File Name : gattprofile.C + * Author : WCH + * Version : V1.0 + * Date : 2018/12/10 + * Description : Customize services with five different attributes, + * including readable, writable, notification, readable and writable, + * and safe readable + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /********************************************************************* * INCLUDES @@ -113,7 +118,7 @@ static uint8_t simpleProfileChar4[SIMPLEPROFILE_CHAR4_LEN] = {0}; // instantiation of the Client Characteristic Configuration. Reads of the // Client Characteristic Configuration only shows the configuration for // that client and writes only affect the configuration of that client. -static gattCharCfg_t simpleProfileChar4Config[4]; +static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION]; // Simple Profile Characteristic 4 User Description static uint8_t simpleProfileChar4UserDesp[] = "Characteristic 4\0"; @@ -508,6 +513,7 @@ static bStatus_t simpleProfile_ReadAttrCB(uint16_t connHandle, gattAttribute_t * { bStatus_t status = SUCCESS; + // Make sure it's not a blob operation (no attributes in the profile are long) if(offset > 0) { @@ -529,23 +535,51 @@ static bStatus_t simpleProfile_ReadAttrCB(uint16_t connHandle, gattAttribute_t * // characteristic 4 does not have read permissions, but because it // can be sent as a notification, it is included here case SIMPLEPROFILE_CHAR1_UUID: - *pLen = SIMPLEPROFILE_CHAR1_LEN; - tmos_memcpy(pValue, pAttr->pValue, SIMPLEPROFILE_CHAR1_LEN); + if(maxLen > SIMPLEPROFILE_CHAR1_LEN) + { + *pLen = SIMPLEPROFILE_CHAR1_LEN; + } + else + { + *pLen = maxLen; + } + tmos_memcpy(pValue, pAttr->pValue, *pLen); break; case SIMPLEPROFILE_CHAR2_UUID: - *pLen = SIMPLEPROFILE_CHAR2_LEN; - tmos_memcpy(pValue, pAttr->pValue, SIMPLEPROFILE_CHAR2_LEN); + if(maxLen > SIMPLEPROFILE_CHAR2_LEN) + { + *pLen = SIMPLEPROFILE_CHAR2_LEN; + } + else + { + *pLen = maxLen; + } + tmos_memcpy(pValue, pAttr->pValue, *pLen); break; case SIMPLEPROFILE_CHAR4_UUID: - *pLen = SIMPLEPROFILE_CHAR4_LEN; - tmos_memcpy(pValue, pAttr->pValue, SIMPLEPROFILE_CHAR4_LEN); + if(maxLen > SIMPLEPROFILE_CHAR4_LEN) + { + *pLen = SIMPLEPROFILE_CHAR4_LEN; + } + else + { + *pLen = maxLen; + } + tmos_memcpy(pValue, pAttr->pValue, *pLen); break; case SIMPLEPROFILE_CHAR5_UUID: - *pLen = SIMPLEPROFILE_CHAR5_LEN; - tmos_memcpy(pValue, pAttr->pValue, SIMPLEPROFILE_CHAR5_LEN); + if(maxLen > SIMPLEPROFILE_CHAR5_LEN) + { + *pLen = SIMPLEPROFILE_CHAR5_LEN; + } + else + { + *pLen = maxLen; + } + tmos_memcpy(pValue, pAttr->pValue, *pLen); break; default: diff --git a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/Profile/include/gattprofile.h b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/Profile/include/gattprofile.h index d31246e..ab7b24a 100644 --- a/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/Profile/include/gattprofile.h +++ b/EVT/EXAM/BLE/MESH/self_provisioner_vendor_with_peripheral/Profile/include/gattprofile.h @@ -1,11 +1,14 @@ /********************************** (C) COPYRIGHT ******************************* -* File Name : gattprofile.h -* Author : WCH -* Version : V1.0 -* Date : 2018/12/11 -* Description : - -*******************************************************************************/ + * File Name : gattprofile.h + * Author : WCH + * Version : V1.0 + * Date : 2018/12/11 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ #ifndef GATTPROFILE_H #define GATTPROFILE_H diff --git a/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.core.prefs b/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.core.prefs deleted file mode 100644 index fc01500..0000000 --- a/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.core.prefs +++ /dev/null @@ -1,164 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=18 -org.eclipse.cdt.core.formatter.alignment_for_assignment=18 -org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=16 -org.eclipse.cdt.core.formatter.alignment_for_binary_expression=18 -org.eclipse.cdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=35 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=16 -org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 -org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=51 -org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 -org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=18 -org.eclipse.cdt.core.formatter.alignment_for_member_access=0 -org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=18 -org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=18 -org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_block=next_line -org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line -org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line -org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line -org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line -org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line -org.eclipse.cdt.core.formatter.comment.line_up_line_comment_in_blocks_on_first_column=true -org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=4 -org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true -org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true -org.eclipse.cdt.core.formatter.compact_else_if=true -org.eclipse.cdt.core.formatter.continuation_indentation=2 -org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=true -org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0 -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=true -org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false -org.eclipse.cdt.core.formatter.indent_empty_lines=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.cdt.core.formatter.indentation.size=2 -org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert -org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert -org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.join_wrapped_lines=true -org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.cdt.core.formatter.lineSplit=120 -org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.cdt.core.formatter.tabulation.char=space -org.eclipse.cdt.core.formatter.tabulation.size=2 -org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false diff --git a/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 79313df..0000000 --- a/EVT/EXAM/BLE/MultiCentPeri/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -formatter_profile=_new -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/MultiCentPeri/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MultiCentPeri/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MultiCentPeri/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MultiCentPeri/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MultiCentPeri/APP/include/multiCentral.h b/EVT/EXAM/BLE/MultiCentPeri/APP/include/multiCentral.h index ce8188d..de9a105 100644 --- a/EVT/EXAM/BLE/MultiCentPeri/APP/include/multiCentral.h +++ b/EVT/EXAM/BLE/MultiCentPeri/APP/include/multiCentral.h @@ -39,7 +39,6 @@ extern "C" { #define CONNECT0_ITEM 0 #define CONNECT1_ITEM 1 #define CONNECT2_ITEM 2 -#define CONNECT3_ITEM 3 /********************************************************************* * MACROS diff --git a/EVT/EXAM/BLE/MultiCentPeri/APP/multiCentral.c b/EVT/EXAM/BLE/MultiCentPeri/APP/multiCentral.c index f5b6d49..d869013 100644 --- a/EVT/EXAM/BLE/MultiCentPeri/APP/multiCentral.c +++ b/EVT/EXAM/BLE/MultiCentPeri/APP/multiCentral.c @@ -340,10 +340,6 @@ uint16_t Central_ProcessEvent(uint8_t task_id, uint16_t events) { return connect_ProcessEvent(task_id, events); } - else if(task_id == centralConnList[CONNECT3_ITEM].taskID) - { - return connect_ProcessEvent(task_id, events); - } // Discard unknown events return 0; } @@ -792,6 +788,24 @@ static void centralEventCB(gapRoleEvent_t *pEvent) } break; + case GAP_EXT_ADV_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv ext adv \n"); + // Add device to list + centralAddDeviceInfo(pEvent->deviceExtAdvInfo.addr, pEvent->deviceExtAdvInfo.addrType); + } + break; + + case GAP_DIRECT_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv direct adv \n"); + // Add device to list + centralAddDeviceInfo(pEvent->deviceDirectInfo.addr, pEvent->deviceDirectInfo.addrType); + } + break; + default: break; } diff --git a/EVT/EXAM/BLE/MultiCentPeri/APP/multiPeripheral.c b/EVT/EXAM/BLE/MultiCentPeri/APP/multiPeripheral.c index ead0563..a10ed37 100644 --- a/EVT/EXAM/BLE/MultiCentPeri/APP/multiPeripheral.c +++ b/EVT/EXAM/BLE/MultiCentPeri/APP/multiPeripheral.c @@ -145,7 +145,7 @@ static uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] = "Simple Peripheral"; // Connection item list static peripheralConnItem_t peripheralConnList[PERIPHERAL_MAX_CONNECTION]; -static uint8_t peripheralMTU = ATT_MTU_SIZE; +static uint16_t peripheralMTU = ATT_MTU_SIZE; /********************************************************************* * LOCAL FUNCTIONS */ @@ -183,7 +183,8 @@ static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { // GAP Bond Manager Callbacks static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) - NULL // Pairing / Bonding state Callback (not used by application) + NULL, // Pairing / Bonding state Callback (not used by application) + NULL // oob callback }; // Simple GATT Profile Callbacks @@ -228,7 +229,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); { uint16_t advInt = DEFAULT_ADVERTISING_INTERVAL; @@ -554,9 +555,9 @@ static void Peripheral_ProcessGAPMsg(gapRoleEvent_t *pEvent) { case GAP_SCAN_REQUEST_EVENT: { -// PRINT("Receive scan req from %x %x %x %x %x %x ..\n", pEvent->scanReqEvt.scannerAddr[0], -// pEvent->scanReqEvt.scannerAddr[1], pEvent->scanReqEvt.scannerAddr[2], pEvent->scanReqEvt.scannerAddr[3], -// pEvent->scanReqEvt.scannerAddr[4], pEvent->scanReqEvt.scannerAddr[5]); + PRINT("Receive scan req from %x %x %x %x %x %x ..\n", pEvent->scanReqEvt.scannerAddr[0], + pEvent->scanReqEvt.scannerAddr[1], pEvent->scanReqEvt.scannerAddr[2], pEvent->scanReqEvt.scannerAddr[3], + pEvent->scanReqEvt.scannerAddr[4], pEvent->scanReqEvt.scannerAddr[5]); break; } diff --git a/EVT/EXAM/BLE/MultiCentPeri/Profile/gattprofile.c b/EVT/EXAM/BLE/MultiCentPeri/Profile/gattprofile.c index d08fa2b..dc206aa 100644 --- a/EVT/EXAM/BLE/MultiCentPeri/Profile/gattprofile.c +++ b/EVT/EXAM/BLE/MultiCentPeri/Profile/gattprofile.c @@ -118,7 +118,7 @@ static uint8_t simpleProfileChar4[SIMPLEPROFILE_CHAR4_LEN] = {0}; // instantiation of the Client Characteristic Configuration. Reads of the // Client Characteristic Configuration only shows the configuration for // that client and writes only affect the configuration of that client. -static gattCharCfg_t simpleProfileChar4Config[4]; +static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION]; // Simple Profile Characteristic 4 User Description static uint8_t simpleProfileChar4UserDesp[] = "Characteristic 4\0"; diff --git a/EVT/EXAM/BLE/MultiCentral/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/MultiCentral/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/MultiCentral/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/MultiCentral/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/MultiCentral/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/MultiCentral/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/MultiCentral/APP/ch32v20x_it.c b/EVT/EXAM/BLE/MultiCentral/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/MultiCentral/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/MultiCentral/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/MultiCentral/APP/include/multiCentral.h b/EVT/EXAM/BLE/MultiCentral/APP/include/multiCentral.h index 4b1d00a..64ff517 100644 --- a/EVT/EXAM/BLE/MultiCentral/APP/include/multiCentral.h +++ b/EVT/EXAM/BLE/MultiCentral/APP/include/multiCentral.h @@ -34,6 +34,7 @@ extern "C" { #define START_READ_OR_WRITE_EVT 0x0020 #define START_READ_RSSI_EVT 0x0040 #define ESTABLISH_LINK_TIMEOUT_EVT 0x0080 +#define START_WRITE_CCCD_EVT 0x0100 #define CONNECT0_ITEM 0 #define CONNECT1_ITEM 1 @@ -53,6 +54,7 @@ typedef struct uint16_t svcStartHdl; // Discovered service start handle uint16_t svcEndHdl; // Discovered service end handle uint16_t charHdl; // Discovered characteristic handle + uint16_t cccHdl; // client characteristic configuration discovery handle } centralConnItem_t; typedef struct diff --git a/EVT/EXAM/BLE/MultiCentral/APP/multiCentral.c b/EVT/EXAM/BLE/MultiCentral/APP/multiCentral.c index 6aa67b9..a2d464c 100644 --- a/EVT/EXAM/BLE/MultiCentral/APP/multiCentral.c +++ b/EVT/EXAM/BLE/MultiCentral/APP/multiCentral.c @@ -102,6 +102,9 @@ // Default read or write timer delay in 0.625ms #define DEFAULT_READ_OR_WRITE_DELAY 1600 +// Default write CCCD delay in 0.625ms +#define DEFAULT_WRITE_CCCD_DELAY 1600 + // Establish link timeout in 0.625ms #define ESTABLISH_LINK_TIMEOUT 3200 @@ -119,7 +122,8 @@ enum { BLE_DISC_STATE_IDLE, // Idle BLE_DISC_STATE_SVC, // Service discovery - BLE_DISC_STATE_CHAR // Characteristic discovery + BLE_DISC_STATE_CHAR, // Characteristic discovery + BLE_DISC_STATE_CCCD, // client characteristic configuration discovery }; /********************************************************************* * TYPEDEFS @@ -278,6 +282,7 @@ static void centralInitConnItem(uint8_t task_id, centralConnItem_t *centralConnL centralConnList[connItem].charHdl = 0; centralConnList[connItem].svcStartHdl = 0; centralConnList[connItem].svcEndHdl = 0; + centralConnList[connItem].cccHdl = 0; } } @@ -416,6 +421,36 @@ static uint16_t connect0_ProcessEvent(uint8_t task_id, uint16_t events) return (events ^ START_PARAM_UPDATE_EVT); } + if(events & START_WRITE_CCCD_EVT) + { + if(centralConnList[CONNECT0_ITEM].procedureInProgress == FALSE) + { + // Do a write + attWriteReq_t req; + + req.cmd = FALSE; + req.sig = FALSE; + req.handle = centralConnList[CONNECT0_ITEM].cccHdl; + req.len = 2; + req.pValue = GATT_bm_alloc(centralConnList[CONNECT0_ITEM].connHandle, ATT_WRITE_REQ, req.len, NULL, 0); + if(req.pValue != NULL) + { + req.pValue[0] = 1; + req.pValue[1] = 0; + + if(GATT_WriteCharValue(centralConnList[CONNECT0_ITEM].connHandle, &req, centralTaskId) == SUCCESS) + { + centralConnList[CONNECT0_ITEM].procedureInProgress = TRUE; + } + else + { + GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ); + } + } + } + return (events ^ START_WRITE_CCCD_EVT); + } + if(events & START_READ_RSSI_EVT) { GAPRole_ReadRssiCmd(centralConnList[CONNECT0_ITEM].connHandle); @@ -747,7 +782,25 @@ static void centralEventCB(gapRoleEvent_t *pEvent) } break; - default: + case GAP_EXT_ADV_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv ext adv \n"); + // Add device to list + centralAddDeviceInfo(pEvent->deviceExtAdvInfo.addr, pEvent->deviceExtAdvInfo.addrType); + } + break; + + case GAP_DIRECT_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv direct adv \n"); + // Add device to list + centralAddDeviceInfo(pEvent->deviceDirectInfo.addr, pEvent->deviceDirectInfo.addrType); + } + break; + + default: break; } } @@ -814,7 +867,7 @@ static void centralPasscodeCB(uint8_t *deviceAddr, uint16_t connectionHandle, // Display passcode to user if(uiOutputs != 0) { - PRINT("Passcode:%d\n", (int)passcode); + PRINT("Passcode:%06d\n", (int)passcode); } // Send passcode response GAPBondMgr_PasscodeRsp(connectionHandle, SUCCESS, passcode); @@ -904,6 +957,40 @@ static void centralGATTDiscoveryEvent(uint8_t connItem, gattMsgEvent_t *pMsg) // Display Characteristic 1 handle PRINT("Found Characteristic 1 handle : %x \n", centralConnList[0].charHdl); } + + if((pMsg->method == ATT_READ_BY_TYPE_RSP && + pMsg->hdr.status == bleProcedureComplete) || + (pMsg->method == ATT_ERROR_RSP)) + { + // Discover characteristic + centralConnList[connItem].discState = BLE_DISC_STATE_CCCD; + req.startHandle = centralConnList[connItem].svcStartHdl; + req.endHandle = centralConnList[connItem].svcEndHdl; + req.type.len = ATT_BT_UUID_SIZE; + req.type.uuid[0] = LO_UINT16(GATT_CLIENT_CHAR_CFG_UUID); + req.type.uuid[1] = HI_UINT16(GATT_CLIENT_CHAR_CFG_UUID); + + GATT_ReadUsingCharUUID(centralConnList[connItem].connHandle, &req, centralTaskId); + } + + } + else if(centralConnList[connItem].discState == BLE_DISC_STATE_CCCD) + { + // Characteristic found, store handle + if(pMsg->method == ATT_READ_BY_TYPE_RSP && + pMsg->msg.readByTypeRsp.numPairs > 0) + { + centralConnList[connItem].cccHdl = BUILD_UINT16(pMsg->msg.readByTypeRsp.pDataList[0], + pMsg->msg.readByTypeRsp.pDataList[1]); + + centralConnList[connItem].procedureInProgress = FALSE; + + // Start do write CCCD + tmos_start_task(centralConnList[connItem].taskID, START_WRITE_CCCD_EVT, DEFAULT_WRITE_CCCD_DELAY); + + // Display Characteristic 1 handle + PRINT("Found client characteristic configuration handle : %x \n", centralConnList[connItem].cccHdl); + } centralConnList[connItem].discState = BLE_DISC_STATE_IDLE; } } diff --git a/EVT/EXAM/BLE/MultiCentral/APP/multiCentral_main.c b/EVT/EXAM/BLE/MultiCentral/APP/multiCentral_main.c index 4793e7a..155c684 100644 --- a/EVT/EXAM/BLE/MultiCentral/APP/multiCentral_main.c +++ b/EVT/EXAM/BLE/MultiCentral/APP/multiCentral_main.c @@ -51,6 +51,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/Observer/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/Observer/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/Observer/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/Observer/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/Observer/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/Observer/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/Observer/APP/ch32v20x_it.c b/EVT/EXAM/BLE/Observer/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/Observer/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/Observer/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/Observer/APP/observer.c b/EVT/EXAM/BLE/Observer/APP/observer.c index 8ccd956..d2da7df 100644 --- a/EVT/EXAM/BLE/Observer/APP/observer.c +++ b/EVT/EXAM/BLE/Observer/APP/observer.c @@ -77,7 +77,6 @@ static gapDevRec_t ObserverDevList[DEFAULT_MAX_SCAN_RES]; static void ObserverEventCB(gapRoleEvent_t *pEvent); static void Observer_ProcessTMOSMsg(tmos_event_hdr_t *pMsg); static void ObserverAddDeviceInfo(uint8_t *pAddr, uint8_t addrType); -char *bdAddr2Str(uint8_t *pAddr); /********************************************************************* * PROFILE CALLBACKS @@ -110,6 +109,12 @@ void Observer_Init() { ObserverTaskId = TMOS_ProcessEventRegister(Observer_ProcessEvent); + // Setup Observer Profile + { + uint8_t scanRes = DEFAULT_MAX_SCAN_RES; + GAPRole_SetParameter(GAPROLE_MAX_SCAN_RES, sizeof(uint8_t), &scanRes); + } + // Setup GAP GAP_SetParamValue(TGAP_DISC_SCAN, DEFAULT_SCAN_DURATION); @@ -214,11 +219,45 @@ static void ObserverEventCB(gapRoleEvent_t *pEvent) case GAP_DEVICE_DISCOVERY_EVENT: { PRINT("Discovery over...\n"); - ObserverScanRes = 0; + + // Display discovery results + if(pEvent->discCmpl.numDevs > 0) + { + int i, j; + // Increment index of current result (with wraparound) + for(j = 0; j < pEvent->discCmpl.numDevs; j++) + { + PRINT("Device %d : ", j); + for(i = 0; i < 6; i++) + { + PRINT("%x ", pEvent->discCmpl.pDevList[j].addr[i]); + } + PRINT("\n"); + } + } + GAPRole_ObserverStartDiscovery(DEFAULT_DISCOVERY_MODE, DEFAULT_DISCOVERY_ACTIVE_SCAN, DEFAULT_DISCOVERY_WHITE_LIST); - PRINT("Discovering...\n"); + PRINT("Discovering...\n "); + } + break; + + case GAP_EXT_ADV_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv ext adv \n"); + // Add device to list + ObserverAddDeviceInfo(pEvent->deviceExtAdvInfo.addr, pEvent->deviceExtAdvInfo.addrType); + } + break; + + case GAP_DIRECT_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv direct adv \n"); + // Add device to list + ObserverAddDeviceInfo(pEvent->deviceDirectInfo.addr, pEvent->deviceDirectInfo.addrType); } break; @@ -253,13 +292,6 @@ static void ObserverAddDeviceInfo(uint8_t *pAddr, uint8_t addrType) // Add addr to scan result list tmos_memcpy(ObserverDevList[ObserverScanRes].addr, pAddr, B_ADDR_LEN); ObserverDevList[ObserverScanRes].addrType = addrType; - PRINT("Device %d - Addr %x %x %x %x %x %x \n", ObserverScanRes, - pAddr[0], - pAddr[1], - pAddr[2], - pAddr[3], - pAddr[4], - pAddr[5]); // Increment scan result count ObserverScanRes++; diff --git a/EVT/EXAM/BLE/Observer/APP/observer_main.c b/EVT/EXAM/BLE/Observer/APP/observer_main.c index a6279cc..388540b 100644 --- a/EVT/EXAM/BLE/Observer/APP/observer_main.c +++ b/EVT/EXAM/BLE/Observer/APP/observer_main.c @@ -51,6 +51,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.cproject b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.cproject index 708da65..18341d0 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.cproject +++ b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.cproject @@ -153,5 +153,4 @@ - diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/ch32v20x_it.c b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/peripheral.c b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/peripheral.c index 9c6d654..f2853cf 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/peripheral.c +++ b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/peripheral.c @@ -227,7 +227,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Set advertising interval { diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/peripheral_main.c b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/peripheral_main.c index d19c9c7..7f38f09 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/peripheral_main.c +++ b/EVT/EXAM/BLE/OnlyUpdateApp_IAP/APP/peripheral_main.c @@ -92,6 +92,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init(115200); diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.cproject b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.cproject index ff5e342..02c18a8 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.cproject +++ b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.cproject @@ -198,5 +198,4 @@ - diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/ch32v20x_it.c b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/peripheral.c b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/peripheral.c index 543f5ae..65b6b7b 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/peripheral.c +++ b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/peripheral.c @@ -144,7 +144,7 @@ static uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] = "Simple Peripheral"; // Connection item list static peripheralConnItem_t peripheralConnList; -static uint8_t peripheralMTU = ATT_MTU_SIZE; +static uint16_t peripheralMTU = ATT_MTU_SIZE; /********************************************************************* * LOCAL FUNCTIONS */ @@ -178,7 +178,8 @@ static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { // GAP Bond Manager Callbacks static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) - NULL // Pairing / Bonding state Callback (not used by application) + NULL, // Pairing / Bonding state Callback (not used by application) + NULL // oob callback }; // Simple GATT Profile Callbacks @@ -222,7 +223,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); { uint16_t advInt = DEFAULT_ADVERTISING_INTERVAL; diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c index df5c29f..3c05566 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c +++ b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c @@ -57,6 +57,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/Profile/gattprofile.c b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/Profile/gattprofile.c index de1ef79..6e166ed 100644 --- a/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/Profile/gattprofile.c +++ b/EVT/EXAM/BLE/OnlyUpdateApp_Peripheral/Profile/gattprofile.c @@ -118,7 +118,7 @@ static uint8_t simpleProfileChar4[SIMPLEPROFILE_CHAR4_LEN] = {0}; // instantiation of the Client Characteristic Configuration. Reads of the // Client Characteristic Configuration only shows the configuration for // that client and writes only affect the configuration of that client. -static gattCharCfg_t simpleProfileChar4Config[4]; +static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION]; // Simple Profile Characteristic 4 User Description static uint8_t simpleProfileChar4UserDesp[] = "Characteristic 4\0"; diff --git a/EVT/EXAM/BLE/PAwR_ADV/.cproject b/EVT/EXAM/BLE/PAwR_ADV/.cproject new file mode 100644 index 0000000..626c80b --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/.cproject @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EVT/EXAM/FreeRTOS/.project b/EVT/EXAM/BLE/PAwR_ADV/.project similarity index 77% rename from EVT/EXAM/FreeRTOS/.project rename to EVT/EXAM/BLE/PAwR_ADV/.project index efe7a2e..e277dc3 100644 --- a/EVT/EXAM/FreeRTOS/.project +++ b/EVT/EXAM/BLE/PAwR_ADV/.project @@ -1,6 +1,6 @@ - FreeRTOS + PAwR_ADV @@ -25,19 +25,24 @@ - Debug + HAL 2 - PARENT-1-PROJECT_LOC/SRC/Debug + PARENT-1-PROJECT_LOC/HAL - Peripheral + LIB 2 - PARENT-1-PROJECT_LOC/SRC/Peripheral + PARENT-1-PROJECT_LOC/LIB + + + SRC + 2 + PARENT-2-PROJECT_LOC/SRC - 1595986042669 + 1602468250279 22 diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/adv_central.c b/EVT/EXAM/BLE/PAwR_ADV/APP/adv_central.c new file mode 100644 index 0000000..3841101 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/adv_central.c @@ -0,0 +1,983 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : adv_central.c + * Author : WCH + * Version : V1.1 + * Date : 2020/08/06 + * Description : The master routine actively scans the surrounding devices, + * connects to the given slave device address, looks for custom + * services and characteristics, and executes read and write commands. + * It needs to be used in conjunction with the slave routine, + * and the slave device address is modified to the routine target address, + * the default is (84:C2:E4:03:02:02) + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "CONFIG.h" +#include "gattprofile.h" +#include "adv.h" + +/********************************************************************* + * MACROS + */ + +// Length of bd addr as a string +#define B_ADDR_STR_LEN 15 + +/********************************************************************* + * CONSTANTS + */ +// Maximum number of scan responses +#define DEFAULT_MAX_SCAN_RES 80 + +// Scan duration in 0.625ms +#define DEFAULT_SCAN_DURATION 2400 + +// Connection min interval in 1.25ms +#define DEFAULT_MIN_CONNECTION_INTERVAL 20 + +// Connection max interval in 1.25ms +#define DEFAULT_MAX_CONNECTION_INTERVAL 100 + +// Connection supervision timeout in 10ms +#define DEFAULT_CONNECTION_TIMEOUT 100 + +// Discovey mode (limited, general, all) +#define DEFAULT_DISCOVERY_MODE DEVDISC_MODE_ALL + +// TRUE to use active scan +#define DEFAULT_DISCOVERY_ACTIVE_SCAN TRUE + +// TRUE to use white list during discovery +#define DEFAULT_DISCOVERY_WHITE_LIST FALSE + +// TRUE to use high scan duty cycle when creating link +#define DEFAULT_LINK_HIGH_DUTY_CYCLE FALSE + +// TRUE to use white list when creating link +#define DEFAULT_LINK_WHITE_LIST FALSE + +// Default read RSSI period in 0.625ms +#define DEFAULT_RSSI_PERIOD 2400 + +// Minimum connection interval (units of 1.25ms) +#define DEFAULT_UPDATE_MIN_CONN_INTERVAL 20 + +// Maximum connection interval (units of 1.25ms) +#define DEFAULT_UPDATE_MAX_CONN_INTERVAL 100 + +// Slave latency to use parameter update +#define DEFAULT_UPDATE_SLAVE_LATENCY 0 + +// Supervision timeout value (units of 10ms) +#define DEFAULT_UPDATE_CONN_TIMEOUT 600 + +// Default passcode +#define DEFAULT_PASSCODE 0 + +// Default GAP pairing mode +#define DEFAULT_PAIRING_MODE GAPBOND_PAIRING_MODE_WAIT_FOR_REQ + +// Default MITM mode (TRUE to require passcode or OOB when pairing) +#define DEFAULT_MITM_MODE TRUE + +// Default bonding mode, TRUE to bond, max bonding 6 devices +#define DEFAULT_BONDING_MODE TRUE + +// Default GAP bonding I/O capabilities +#define DEFAULT_IO_CAPABILITIES GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT + +// Default service discovery timer delay in 0.625ms +#define DEFAULT_SVC_DISCOVERY_DELAY 1600 + +// Default parameter update delay in 0.625ms +#define DEFAULT_PARAM_UPDATE_DELAY 3200 + +// Default phy update delay in 0.625ms +#define DEFAULT_PHY_UPDATE_DELAY 2400 + +// Default read or write timer delay in 0.625ms +#define DEFAULT_READ_OR_WRITE_DELAY 1600 + +// Default write CCCD delay in 0.625ms +#define DEFAULT_WRITE_CCCD_DELAY 1600 + +// Establish link timeout in 0.625ms +#define ESTABLISH_LINK_TIMEOUT 3200 + +// Application states +enum +{ + BLE_STATE_IDLE, + BLE_STATE_CONNECTING, + BLE_STATE_CONNECTED, + BLE_STATE_DISCONNECTING +}; + +// Discovery states +enum +{ + BLE_DISC_STATE_IDLE, // Idle + BLE_DISC_STATE_SVC, // Service discovery + BLE_DISC_STATE_CHAR, // Characteristic discovery + BLE_DISC_STATE_CCCD // client characteristic configuration discovery +}; +/********************************************************************* + * TYPEDEFS + */ + +/********************************************************************* + * GLOBAL VARIABLES + */ + +/********************************************************************* + * EXTERNAL VARIABLES + */ + +/********************************************************************* + * EXTERNAL FUNCTIONS + */ + +/********************************************************************* + * LOCAL VARIABLES + */ + +// Task ID for internal task/event processing +static uint8_t centralTaskId; + +// Number of scan results +static uint8_t centralScanRes; + +// Scan result list +static gapDevRec_t centralDevList[DEFAULT_MAX_SCAN_RES]; + +// Peer device address +uint8_t PeerAddrDef[B_ADDR_LEN] = {0x02, 0x02, 0x03, 0xE4, 0xC2, 0x84}; + +// RSSI polling state +static uint8_t centralRssi = TRUE; + +// Parameter update state +static uint8_t centralParamUpdate = TRUE; + +// Phy update state +static uint8_t centralPhyUpdate = FALSE; + +// Connection handle of current connection +static uint16_t centralConnHandle = GAP_CONNHANDLE_INIT; + +// Application state +static uint8_t centralState = BLE_STATE_IDLE; + +// Discovery state +static uint8_t centralDiscState = BLE_DISC_STATE_IDLE; + +// Discovered service start and end handle +static uint16_t centralSvcStartHdl = 0; +static uint16_t centralSvcEndHdl = 0; + +// Discovered characteristic handle +static uint16_t centralCharHdl = 0; + +// Discovered Client Characteristic Configuration handle +static uint16_t centralCCCDHdl = 0; + +// Value to write +static uint8_t centralCharVal = 0x5A; + +// Value read/write toggle +static uint8_t centralDoWrite = TRUE; + +// GATT read/write procedure state +static uint8_t centralProcedureInProgress = FALSE; +static uint8_t discoveryFlag = 0; +static uint8_t syncTran = 0; + +/********************************************************************* + * LOCAL FUNCTIONS + */ +static void centralProcessGATTMsg(gattMsgEvent_t *pMsg); +static void centralRssiCB(uint16_t connHandle, int8_t rssi); +static void centralEventCB(gapRoleEvent_t *pEvent); +static void centralHciMTUChangeCB(uint16_t connHandle, uint16_t maxTxOctets, uint16_t maxRxOctets); +static void centralPasscodeCB(uint8_t *deviceAddr, uint16_t connectionHandle, + uint8_t uiInputs, uint8_t uiOutputs); +static void centralPairStateCB(uint16_t connHandle, uint8_t state, uint8_t status); +static void central_ProcessTMOSMsg(tmos_event_hdr_t *pMsg); +static void centralGATTDiscoveryEvent(gattMsgEvent_t *pMsg); +static void centralStartDiscovery(void); +static void centralAddDeviceInfo(uint8_t *pAddr, uint8_t addrType); +/********************************************************************* + * PROFILE CALLBACKS + */ + +// GAP Role Callbacks +static gapCentralRoleCB_t centralRoleCB = { + centralRssiCB, // RSSI callback + centralEventCB, // Event callback + centralHciMTUChangeCB // MTU change callback +}; + +// Bond Manager Callbacks +static gapBondCBs_t centralBondCB = { + centralPasscodeCB, + centralPairStateCB}; + +/********************************************************************* + * PUBLIC FUNCTIONS + */ + +/********************************************************************* + * @fn Central_Init + * + * @brief Initialization function for the Central App Task. + * This is called during initialization and should contain + * any application specific initialization (ie. hardware + * initialization/setup, table initialization, power up + * notification). + * + * @param task_id - the ID assigned by TMOS. This ID should be + * used to send messages and set timers. + * + * @return none + */ +void Central_Init() +{ + centralTaskId = TMOS_ProcessEventRegister(Central_ProcessEvent); + + // Setup GAP + GAP_SetParamValue(TGAP_DISC_SCAN, DEFAULT_SCAN_DURATION); + GAP_SetParamValue(TGAP_CONN_EST_INT_MIN, DEFAULT_MIN_CONNECTION_INTERVAL); + GAP_SetParamValue(TGAP_CONN_EST_INT_MAX, DEFAULT_MAX_CONNECTION_INTERVAL); + GAP_SetParamValue(TGAP_CONN_EST_SUPERV_TIMEOUT, DEFAULT_CONNECTION_TIMEOUT); + + // Setup the GAP Bond Manager + { + uint32_t passkey = DEFAULT_PASSCODE; + uint8_t pairMode = DEFAULT_PAIRING_MODE; + uint8_t mitm = DEFAULT_MITM_MODE; + uint8_t ioCap = DEFAULT_IO_CAPABILITIES; + uint8_t bonding = DEFAULT_BONDING_MODE; + + GAPBondMgr_SetParameter(GAPBOND_CENT_DEFAULT_PASSCODE, sizeof(uint32_t), &passkey); + GAPBondMgr_SetParameter(GAPBOND_CENT_PAIRING_MODE, sizeof(uint8_t), &pairMode); + GAPBondMgr_SetParameter(GAPBOND_CENT_MITM_PROTECTION, sizeof(uint8_t), &mitm); + GAPBondMgr_SetParameter(GAPBOND_CENT_IO_CAPABILITIES, sizeof(uint8_t), &ioCap); + GAPBondMgr_SetParameter(GAPBOND_CENT_BONDING_ENABLED, sizeof(uint8_t), &bonding); + } + // Initialize GATT Client + GATT_InitClient(); + // Register to receive incoming ATT Indications/Notifications + GATT_RegisterForInd(centralTaskId); + // Setup a delayed profile startup + tmos_set_event(centralTaskId, START_DEVICE_EVT); +} + +/********************************************************************* + * @fn Central_ProcessEvent + * + * @brief Central Application Task event processor. This function + * is called to process all events for the task. Events + * include timers, messages and any other user defined events. + * + * @param task_id - The TMOS assigned task ID. + * @param events - events to process. This is a bit map and can + * contain more than one event. + * + * @return events not processed + */ +uint16_t Central_ProcessEvent(uint8_t task_id, uint16_t events) +{ + if(events & SYS_EVENT_MSG) + { + uint8_t *pMsg; + + if((pMsg = tmos_msg_receive(centralTaskId)) != NULL) + { + central_ProcessTMOSMsg((tmos_event_hdr_t *)pMsg); + // Release the TMOS message + tmos_msg_deallocate(pMsg); + } + // return unprocessed events + return (events ^ SYS_EVENT_MSG); + } + + if(events & START_DEVICE_EVT) + { + // Start the Device + GAPRole_CentralStartDevice(centralTaskId, ¢ralBondCB, ¢ralRoleCB); + return (events ^ START_DEVICE_EVT); + } + + if(events & ESTABLISH_LINK_TIMEOUT_EVT) + { + GAPRole_TerminateLink(INVALID_CONNHANDLE); + return (events ^ ESTABLISH_LINK_TIMEOUT_EVT); + } + + if(events & START_SVC_DISCOVERY_EVT) + { + // start service discovery + centralStartDiscovery(); + return (events ^ START_SVC_DISCOVERY_EVT); + } + + if(events & START_PARAM_UPDATE_EVT) + { + // start connect parameter update + GAPRole_UpdateLink(centralConnHandle, + DEFAULT_UPDATE_MIN_CONN_INTERVAL, + DEFAULT_UPDATE_MAX_CONN_INTERVAL, + DEFAULT_UPDATE_SLAVE_LATENCY, + DEFAULT_UPDATE_CONN_TIMEOUT); + return (events ^ START_PARAM_UPDATE_EVT); + } + + if(events & START_PHY_UPDATE_EVT) + { + // start phy update + PRINT("PHY Update %x...\n", GAPRole_UpdatePHY(centralConnHandle, 0, GAP_PHY_BIT_LE_2M, + GAP_PHY_BIT_LE_2M, 0)); + + return (events ^ START_PHY_UPDATE_EVT); + } + + if(events & START_READ_OR_WRITE_EVT) + { + if(centralProcedureInProgress == FALSE) + { + if(centralDoWrite) + { + // Do a write + attWriteReq_t req; + + req.cmd = FALSE; + req.sig = FALSE; + req.handle = centralCharHdl; + req.len = 1; + req.pValue = GATT_bm_alloc(centralConnHandle, ATT_WRITE_REQ, req.len, NULL, 0); + if(req.pValue != NULL) + { + *req.pValue = centralCharVal; + + if(GATT_WriteCharValue(centralConnHandle, &req, centralTaskId) == SUCCESS) + { + centralProcedureInProgress = TRUE; + centralDoWrite = !centralDoWrite; + tmos_start_task(centralTaskId, START_READ_OR_WRITE_EVT, DEFAULT_READ_OR_WRITE_DELAY); + if(!syncTran) + { + syncTran = 1; + tmos_start_task(centralTaskId, START_PERIODIC_T_TEST, 1600); + } + } + else + { + GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ); + } + } + } + else + { + // Do a read + attReadReq_t req; + + req.handle = centralCharHdl; + if(GATT_ReadCharValue(centralConnHandle, &req, centralTaskId) == SUCCESS) + { + centralProcedureInProgress = TRUE; + centralDoWrite = !centralDoWrite; + } + } + } + return (events ^ START_READ_OR_WRITE_EVT); + } + + if(events & START_WRITE_CCCD_EVT) + { + if(centralProcedureInProgress == FALSE) + { + // Do a write + attWriteReq_t req; + + req.cmd = FALSE; + req.sig = FALSE; + req.handle = centralCCCDHdl; + req.len = 2; + req.pValue = GATT_bm_alloc(centralConnHandle, ATT_WRITE_REQ, req.len, NULL, 0); + if(req.pValue != NULL) + { + req.pValue[0] = 1; + req.pValue[1] = 0; + + if(GATT_WriteCharValue(centralConnHandle, &req, centralTaskId) == SUCCESS) + { + centralProcedureInProgress = TRUE; + } + else + { + GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ); + } + } + } + return (events ^ START_WRITE_CCCD_EVT); + } + + if(events & START_READ_RSSI_EVT) + { + GAPRole_ReadRssiCmd(centralConnHandle); + tmos_start_task(centralTaskId, START_READ_RSSI_EVT, DEFAULT_RSSI_PERIOD); + return (events ^ START_READ_RSSI_EVT); + } + + if(events & START_PERIODIC_T_TEST) + { + gapSyncTransferAdvertising_t param; + bStatus_t s; + + param.connHandle = centralConnHandle; + param.serviceData = 0x55; + param.advHandle = 1; + s = GAPRole_SyncTransferAdvertising(¶m); + PRINT("---- sync transfer sync-%x. -----\n", s); + return (events ^ START_PERIODIC_T_TEST); + } + return 0; +} + +/********************************************************************* + * @fn central_ProcessTMOSMsg + * + * @brief Process an incoming task message. + * + * @param pMsg - message to process + * + * @return none + */ +static void central_ProcessTMOSMsg(tmos_event_hdr_t *pMsg) +{ + switch(pMsg->event) + { + case GATT_MSG_EVENT: + centralProcessGATTMsg((gattMsgEvent_t *)pMsg); + break; + } +} + +/********************************************************************* + * @fn centralProcessGATTMsg + * + * @brief Process GATT messages + * + * @return none + */ +static void centralProcessGATTMsg(gattMsgEvent_t *pMsg) +{ + if(centralState != BLE_STATE_CONNECTED) + { + // In case a GATT message came after a connection has dropped, + // ignore the message + GATT_bm_free(&pMsg->msg, pMsg->method); + return; + } + + if((pMsg->method == ATT_EXCHANGE_MTU_RSP) || + ((pMsg->method == ATT_ERROR_RSP) && + (pMsg->msg.errorRsp.reqOpcode == ATT_EXCHANGE_MTU_REQ))) + { + if(pMsg->method == ATT_ERROR_RSP) + { + uint8_t status = pMsg->msg.errorRsp.errCode; + + PRINT("Exchange MTU Error: %x\n", status); + } + centralProcedureInProgress = FALSE; + } + + if(pMsg->method == ATT_MTU_UPDATED_EVENT) + { + PRINT("MTU: %d\n", pMsg->msg.mtuEvt.MTU); + } + + if((pMsg->method == ATT_READ_RSP) || + ((pMsg->method == ATT_ERROR_RSP) && + (pMsg->msg.errorRsp.reqOpcode == ATT_READ_REQ))) + { + if(pMsg->method == ATT_ERROR_RSP) + { + uint8_t status = pMsg->msg.errorRsp.errCode; + + PRINT("Read Error: %x\n", status); + } + else + { + // After a successful read, display the read value + PRINT("Read rsp: %x\n", *pMsg->msg.readRsp.pValue); + } + centralProcedureInProgress = FALSE; + } + else if((pMsg->method == ATT_WRITE_RSP) || + ((pMsg->method == ATT_ERROR_RSP) && + (pMsg->msg.errorRsp.reqOpcode == ATT_WRITE_REQ))) + { + if(pMsg->method == ATT_ERROR_RSP) + { + uint8_t status = pMsg->msg.errorRsp.errCode; + + PRINT("Write Error: %x\n", status); + } + else + { + // Write success + PRINT("Write success \n"); + } + + centralProcedureInProgress = FALSE; + } + else if(pMsg->method == ATT_HANDLE_VALUE_NOTI) + { + PRINT("Receive noti: %x\n", *pMsg->msg.handleValueNoti.pValue); + } + else if(centralDiscState != BLE_DISC_STATE_IDLE) + { + centralGATTDiscoveryEvent(pMsg); + } + GATT_bm_free(&pMsg->msg, pMsg->method); +} + +/********************************************************************* + * @fn centralRssiCB + * + * @brief RSSI callback. + * + * @param connHandle - connection handle + * @param rssi - RSSI + * + * @return none + */ +static void centralRssiCB(uint16_t connHandle, int8_t rssi) +{ + PRINT("RSSI : -%d dB \n", -rssi); +} + +/********************************************************************* + * @fn centralHciMTUChangeCB + * + * @brief MTU changed callback. + * + * @param maxTxOctets - Max tx octets + * @param maxRxOctets - Max rx octets + * + * @return none + */ +static void centralHciMTUChangeCB(uint16_t connHandle, uint16_t maxTxOctets, uint16_t maxRxOctets) +{ + PRINT(" HCI data length changed, Tx: %d, Rx: %d\n", maxTxOctets, maxRxOctets); + centralProcedureInProgress = TRUE; +} + +/********************************************************************* + * @fn centralEventCB + * + * @brief Central event callback function. + * + * @param pEvent - pointer to event structure + * + * @return none + */ +static void centralEventCB(gapRoleEvent_t *pEvent) +{ + switch(pEvent->gap.opcode) + { + case GAP_DEVICE_INIT_DONE_EVENT: + { + PRINT("Discovering...\n"); + if(!discoveryFlag) + { + GAPRole_CentralStartDiscovery(DEFAULT_DISCOVERY_MODE, + DEFAULT_DISCOVERY_ACTIVE_SCAN, + DEFAULT_DISCOVERY_WHITE_LIST); + discoveryFlag |= 1; + } + } + break; + + case GAP_DEVICE_INFO_EVENT: + { + // Add device to list + centralAddDeviceInfo(pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType); + } + break; + + case GAP_DEVICE_DISCOVERY_EVENT: + { + uint8_t i; + + discoveryFlag &= ~1; + // See if peer device has been discovered + for(i = 0; i < centralScanRes; i++) + { + if(tmos_memcmp(PeerAddrDef, centralDevList[i].addr, B_ADDR_LEN)) + break; + } + + // Peer device not found + if(i == centralScanRes) + { + PRINT("Device not found...\n"); + centralScanRes = 0; + if(!discoveryFlag) + { + GAPRole_CentralStartDiscovery(DEFAULT_DISCOVERY_MODE, + DEFAULT_DISCOVERY_ACTIVE_SCAN, + DEFAULT_DISCOVERY_WHITE_LIST); + discoveryFlag |= 1; + } + PRINT("Discovering...\n"); + } + + // Peer device found + else + { + PRINT("Device found...%d\n", i); + GAPRole_CentralEstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE, + DEFAULT_LINK_WHITE_LIST, + centralDevList[i].addrType, + centralDevList[i].addr); + + // Start establish link timeout event + tmos_start_task(centralTaskId, ESTABLISH_LINK_TIMEOUT_EVT, ESTABLISH_LINK_TIMEOUT); + PRINT("Connecting...\n"); + } + } + break; + + case GAP_LINK_ESTABLISHED_EVENT: + { + tmos_stop_task(centralTaskId, ESTABLISH_LINK_TIMEOUT_EVT); + if(pEvent->gap.hdr.status == SUCCESS) + { + centralState = BLE_STATE_CONNECTED; + centralConnHandle = pEvent->linkCmpl.connectionHandle; + centralProcedureInProgress = TRUE; + + // Initiate service discovery + tmos_start_task(centralTaskId, START_SVC_DISCOVERY_EVT, DEFAULT_SVC_DISCOVERY_DELAY); + + // See if initiate connect parameter update + if(centralParamUpdate) + { + tmos_start_task(centralTaskId, START_PARAM_UPDATE_EVT, DEFAULT_PARAM_UPDATE_DELAY); + } + // See if initiate PHY update + if(centralPhyUpdate) + { + tmos_start_task(centralTaskId, START_PHY_UPDATE_EVT, DEFAULT_PHY_UPDATE_DELAY); + } + // See if start RSSI polling + if(centralRssi) + { + tmos_start_task(centralTaskId, START_READ_RSSI_EVT, DEFAULT_RSSI_PERIOD); + } + PRINT("Connected...\n"); + } + else + { + PRINT("Connect Failed...Reason:%X\n", pEvent->gap.hdr.status); + PRINT("Discovering...\n"); + centralScanRes = 0; + if(!discoveryFlag) + { + GAPRole_CentralStartDiscovery(DEFAULT_DISCOVERY_MODE, + DEFAULT_DISCOVERY_ACTIVE_SCAN, + DEFAULT_DISCOVERY_WHITE_LIST); + discoveryFlag |= 1; + } + } + } + break; + + case GAP_LINK_TERMINATED_EVENT: + { + centralState = BLE_STATE_IDLE; + centralConnHandle = GAP_CONNHANDLE_INIT; + centralDiscState = BLE_DISC_STATE_IDLE; + centralCharHdl = 0; + centralScanRes = 0; + centralProcedureInProgress = FALSE; + tmos_stop_task(centralTaskId, START_READ_RSSI_EVT); + PRINT("Disconnected...Reason:%x\n", pEvent->linkTerminate.reason); + if(!gPeriodicState && !discoveryFlag) + { + GAPRole_CentralStartDiscovery(DEFAULT_DISCOVERY_MODE, + DEFAULT_DISCOVERY_ACTIVE_SCAN, + DEFAULT_DISCOVERY_WHITE_LIST); + discoveryFlag |= 1; + PRINT("Discovering...\n"); + } + } + break; + + case GAP_LINK_PARAM_UPDATE_EVENT: + { + PRINT("Param Update...\n"); + } + break; + + case GAP_PHY_UPDATE_EVENT: + { + PRINT("PHY Update...\n"); + } + break; + + case GAP_EXT_ADV_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv ext adv \n"); + // Add device to list + centralAddDeviceInfo(pEvent->deviceExtAdvInfo.addr, pEvent->deviceExtAdvInfo.addrType); + } + break; + + case GAP_DIRECT_DEVICE_INFO_EVENT: + { + // Display device addr + PRINT("Recv direct adv \n"); + // Add device to list + centralAddDeviceInfo(pEvent->deviceDirectInfo.addr, pEvent->deviceDirectInfo.addrType); + } + break; + + default: + break; + } +} + +/********************************************************************* + * @fn pairStateCB + * + * @brief Pairing state callback. + * + * @return none + */ +static void centralPairStateCB(uint16_t connHandle, uint8_t state, uint8_t status) +{ + if(state == GAPBOND_PAIRING_STATE_STARTED) + { + PRINT("Pairing started:%d\n", status); + } + else if(state == GAPBOND_PAIRING_STATE_COMPLETE) + { + if(status == SUCCESS) + { + PRINT("Pairing success\n"); + } + else + { + PRINT("Pairing fail\n"); + } + } + else if(state == GAPBOND_PAIRING_STATE_BONDED) + { + if(status == SUCCESS) + { + PRINT("Bonding success\n"); + } + } + else if(state == GAPBOND_PAIRING_STATE_BOND_SAVED) + { + if(status == SUCCESS) + { + PRINT("Bond save success\n"); + } + else + { + PRINT("Bond save failed: %d\n", status); + } + } +} + +/********************************************************************* + * @fn centralPasscodeCB + * + * @brief Passcode callback. + * + * @return none + */ +static void centralPasscodeCB(uint8_t *deviceAddr, uint16_t connectionHandle, + uint8_t uiInputs, uint8_t uiOutputs) +{ + uint32_t passcode; + + // Create random passcode + passcode = tmos_rand(); + passcode %= 1000000; + // Display passcode to user + if(uiOutputs != 0) + { + PRINT("Passcode:%d\n", (int)passcode); + } + // Send passcode response + GAPBondMgr_PasscodeRsp(connectionHandle, SUCCESS, passcode); +} + +/********************************************************************* + * @fn centralStartDiscovery + * + * @brief Start service discovery. + * + * @return none + */ +static void centralStartDiscovery(void) +{ + uint8_t uuid[ATT_BT_UUID_SIZE] = {LO_UINT16(SIMPLEPROFILE_SERV_UUID), + HI_UINT16(SIMPLEPROFILE_SERV_UUID)}; + + // Initialize cached handles + centralSvcStartHdl = centralSvcEndHdl = centralCharHdl = 0; + + centralDiscState = BLE_DISC_STATE_SVC; + + // Discovery simple BLE service + GATT_DiscPrimaryServiceByUUID(centralConnHandle, + uuid, + ATT_BT_UUID_SIZE, + centralTaskId); +} + +/********************************************************************* + * @fn centralGATTDiscoveryEvent + * + * @brief Process GATT discovery event + * + * @return none + */ +static void centralGATTDiscoveryEvent(gattMsgEvent_t *pMsg) +{ + attReadByTypeReq_t req; + + if(centralDiscState == BLE_DISC_STATE_SVC) + { + // Service found, store handles + if(pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP && + pMsg->msg.findByTypeValueRsp.numInfo > 0) + { + centralSvcStartHdl = ATT_ATTR_HANDLE(pMsg->msg.findByTypeValueRsp.pHandlesInfo, 0); + centralSvcEndHdl = ATT_GRP_END_HANDLE(pMsg->msg.findByTypeValueRsp.pHandlesInfo, 0); + + // Display Profile Service handle range + PRINT("Found Profile Service handle : %x ~ %x \n", centralSvcStartHdl, centralSvcEndHdl); + } + // If procedure complete + if((pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP && + pMsg->hdr.status == bleProcedureComplete) || + (pMsg->method == ATT_ERROR_RSP)) + { + if(centralSvcStartHdl != 0) + { + // Discover characteristic + centralDiscState = BLE_DISC_STATE_CHAR; + req.startHandle = centralSvcStartHdl; + req.endHandle = centralSvcEndHdl; + req.type.len = ATT_BT_UUID_SIZE; + req.type.uuid[0] = LO_UINT16(SIMPLEPROFILE_CHAR1_UUID); + req.type.uuid[1] = HI_UINT16(SIMPLEPROFILE_CHAR1_UUID); + + GATT_ReadUsingCharUUID(centralConnHandle, &req, centralTaskId); + } + } + } + else if(centralDiscState == BLE_DISC_STATE_CHAR) + { + // Characteristic found, store handle + if(pMsg->method == ATT_READ_BY_TYPE_RSP && + pMsg->msg.readByTypeRsp.numPairs > 0) + { + centralCharHdl = BUILD_UINT16(pMsg->msg.readByTypeRsp.pDataList[0], + pMsg->msg.readByTypeRsp.pDataList[1]); + + // Start do read or write + tmos_start_task(centralTaskId, START_READ_OR_WRITE_EVT, DEFAULT_READ_OR_WRITE_DELAY); + + // Display Characteristic 1 handle + PRINT("Found Characteristic 1 handle : %x \n", centralCharHdl); + } + if((pMsg->method == ATT_READ_BY_TYPE_RSP && + pMsg->hdr.status == bleProcedureComplete) || + (pMsg->method == ATT_ERROR_RSP)) + { + // Discover characteristic + centralDiscState = BLE_DISC_STATE_CCCD; + req.startHandle = centralSvcStartHdl; + req.endHandle = centralSvcEndHdl; + req.type.len = ATT_BT_UUID_SIZE; + req.type.uuid[0] = LO_UINT16(GATT_CLIENT_CHAR_CFG_UUID); + req.type.uuid[1] = HI_UINT16(GATT_CLIENT_CHAR_CFG_UUID); + + GATT_ReadUsingCharUUID(centralConnHandle, &req, centralTaskId); + } + } + else if(centralDiscState == BLE_DISC_STATE_CCCD) + { + // Characteristic found, store handle + if(pMsg->method == ATT_READ_BY_TYPE_RSP && + pMsg->msg.readByTypeRsp.numPairs > 0) + { + centralCCCDHdl = BUILD_UINT16(pMsg->msg.readByTypeRsp.pDataList[0], + pMsg->msg.readByTypeRsp.pDataList[1]); + centralProcedureInProgress = FALSE; + + // Start do write CCCD + tmos_start_task(centralTaskId, START_WRITE_CCCD_EVT, DEFAULT_WRITE_CCCD_DELAY); + + // Display Characteristic 1 handle + PRINT("Found client characteristic configuration handle : %x \n", centralCCCDHdl); + } + centralDiscState = BLE_DISC_STATE_IDLE; + } +} + +/********************************************************************* + * @fn centralAddDeviceInfo + * + * @brief Add a device to the device discovery result list + * + * @return none + */ +static void centralAddDeviceInfo(uint8_t *pAddr, uint8_t addrType) +{ + uint8_t i; + + // If result count not at max + if(centralScanRes < DEFAULT_MAX_SCAN_RES) + { + // Check if device is already in scan results + for(i = 0; i < centralScanRes; i++) + { + if(tmos_memcmp(pAddr, centralDevList[i].addr, B_ADDR_LEN)) + { + return; + } + } + // Add addr to scan result list + tmos_memcpy(centralDevList[centralScanRes].addr, pAddr, B_ADDR_LEN); + centralDevList[centralScanRes].addrType = addrType; + // Increment scan result count + centralScanRes++; + // Display device addr + PRINT("Device %d - Addr %x %x %x %x %x %x \n", centralScanRes, + centralDevList[centralScanRes - 1].addr[0], + centralDevList[centralScanRes - 1].addr[1], + centralDevList[centralScanRes - 1].addr[2], + centralDevList[centralScanRes - 1].addr[3], + centralDevList[centralScanRes - 1].addr[4], + centralDevList[centralScanRes - 1].addr[5]); + } +} + +/************************ endfile @ central **************************/ diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/adv_main.c b/EVT/EXAM/BLE/PAwR_ADV/APP/adv_main.c new file mode 100644 index 0000000..7ce181c --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/adv_main.c @@ -0,0 +1,70 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : main.c + * Author : WCH + * Version : V1.1 + * Date : 2020/08/06 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/******************************************************************************/ +/* Header file contains */ +#include "CONFIG.h" +#include "hal.h" +#include "adv.h" + +/********************************************************************* + * GLOBAL TYPEDEFS + */ +__attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; + +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) +const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x83, 0x82, 0x82}; +#endif + +/********************************************************************* + * @fn Main_Circulation + * + * @brief Main loop + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) void +Main_Circulation(void) +{ + while(1) + { + TMOS_SystemProcess(); + } +} + +/********************************************************************* + * @fn main + * + * @brief Main function + * + * @return none + */ +int main(void) +{ + SystemCoreClockUpdate(); + Delay_Init(); +#ifdef DEBUG + USART_Printf_Init(115200); +#endif + PRINT("start.%s\n", __TIME__); + PRINT("%s\n", VER_LIB); + WCHBLE_Init(); + HAL_Init(); + GAPRole_PeripheralInit(); + GAPRole_CentralInit(); + Central_Init(); + Periodic_Init(); + Main_Circulation(); +} + +/******************************** endfile @ main ******************************/ diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/adv_periodic.c b/EVT/EXAM/BLE/PAwR_ADV/APP/adv_periodic.c new file mode 100644 index 0000000..2c21ea3 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/adv_periodic.c @@ -0,0 +1,380 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : adv_periodic.C + * Author : WCH + * Version : V1.0 + * Date : 2018/12/10 + * Description : APPeriodic + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "CONFIG.h" +#include "adv.h" + +/********************************************************************* + * MACROS + */ + +/********************************************************************* + * CONSTANTS + */ + +#define DEFAULT_PERIO_DATA_LENGTH 80 + +/********************************************************************* + * LOCAL VARIABLES + */ +static uint8_t Periodic_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing + +static uint8_t advPeriodicData[B_MAX_ADV_PERIODIC_LEN] = + { + 0x04, + GAP_ADTYPE_LOCAL_NAME_SHORT, + '1', + '2', + '3', + + 0x09, // length of this data + GAP_ADTYPE_URI, + 0x16, + 0x00, + 'w', + 'c', + 'h', + '.', + 'c', + 'n', +}; +#define PAWR_SUBEVENT_NUM 4 +#define PAWR_RESPOSE_COUNT 16 +#define PAWR_DATALEN_MAX 32 + +static uint8_t gAdvHandle = 0; +static uint8_t pawrData[PAWR_SUBEVENT_NUM][PAWR_DATALEN_MAX]; +static uint8_t gPawr = TRUE; +static uint8_t gSubevent = 0xFF; + +/********************************************************************* + * LOCAL FUNCTIONS + */ +uint16_t Periodic_ProcessEvent(uint8_t task_id, uint16_t events); +static void Peripheral_ProcessTMOSMsg(tmos_event_hdr_t *pMsg); +static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEvent_t *pEvent); + +// GAP Role Callbacks +static gapRolesCBs_t Peripheral_PeripheralCBs = { + peripheralStateNotificationCB, // Profile State Change Callbacks + NULL, + NULL}; + +uint8_t gPeriodicState; + +/********************************************************************* + * @fn Peripheral_Init + * + * @brief Initialization function for the Peripheral App Task. + * This is called during initialization and should contain + * any application specific initialization (ie. hardware + * initialization/setup, table initialization, power up + * notificaiton ... ). + * + * @param task_id - the ID assigned by TMOS. This ID should be + * used to send messages and set timers. + * + * @return none + */ +void Periodic_Init(void) +{ + Periodic_TaskID = TMOS_ProcessEventRegister(Periodic_ProcessEvent); + PRINT("Periodic_TaskID=%d\n", Periodic_TaskID); + // Setup the GAP Peripheral Role Profile + { + uint8_t map = GAP_ADVCHAN_ALL; + uint8_t advertise_event_type = GAP_ADTYPE_EXT_NONCONN_NONSCAN_UNDIRECT; + uint8_t initial_advertising_enable = TRUE; + + GAPRole_SetParameter(GAPROLE_ADV_EVENT_TYPE, sizeof(uint8_t), &advertise_event_type); + GAPRole_SetParameter(GAPROLE_ADV_CHANNEL_MAP, sizeof(uint8_t), &map); + GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable); + // Set the GAP Role Parameters + GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable); + } + + { + uint16_t advInt = 80; + + // Set advertising interval + GAP_SetParamValue(TGAP_DISC_ADV_INT_MIN, advInt); + GAP_SetParamValue(TGAP_DISC_ADV_INT_MAX, advInt); + + // Enable scan req notify + GAP_SetParamValue(TGAP_ADV_SCAN_REQ_NOTIFY, ENABLE); + } + { + // Set Periodic advertisement + for(int i = 0; i < DEFAULT_PERIO_DATA_LENGTH; i++) + { + advPeriodicData[i] = i; + } + GAPRole_SetParameter(GAPROLE_PERIODIC_ADVERT_DATA, DEFAULT_PERIO_DATA_LENGTH, advPeriodicData); + } + tmos_set_event(Periodic_TaskID, START_DEVICE_EVT); +} + +/********************************************************************* + * @fn Peripheral_ProcessEvent + * + * @brief Peripheral Application Task event processor. This function + * is called to process all events for the task. Events + * include timers, messages and any other user defined events. + * + * @param task_id - The TMOS assigned task ID. + * @param events - events to process. This is a bit map and can + * contain more than one event. + * + * @return events not processed + */ +uint16_t Periodic_ProcessEvent(uint8_t task_id, uint16_t events) +{ + // VOID task_id; // TMOS required parameter that isn't used in this function + + if(events & SYS_EVENT_MSG) + { + uint8_t *pMsg; + + if((pMsg = tmos_msg_receive(Periodic_TaskID)) != NULL) + { + Peripheral_ProcessTMOSMsg((tmos_event_hdr_t *)pMsg); + // Release the TMOS message + tmos_msg_deallocate(pMsg); + } + // return unprocessed events + return (events ^ SYS_EVENT_MSG); + } + if(events & START_DEVICE_EVT) + { + // Start the Device + GAPRole_PeripheralStartDevice(Periodic_TaskID, NULL, &Peripheral_PeripheralCBs); + return (events ^ START_DEVICE_EVT); + } + if(events & START_SYNC_CONN_TEST) + { + gapPawrCreateConnection_t parm; + bStatus_t s; + + parm.advHandle = gAdvHandle; + parm.subevent = gSubevent; + parm.ownAddrType = 0; + parm.peerAddrType = 0; + tmos_memcpy(parm.peerAddr, PeerAddrDef, 6); + parm.connIntervalMin = 10; + parm.connIntervalMax = 50; + parm.maxLatency = 0; + parm.supervisionTimeout = 400; + s = GAPPawr_CreatConnection(&parm); + PRINT("start pawr connection.%x\n", s); + return (events ^ START_SYNC_CONN_TEST); + } + return 0; +} + +/********************************************************************* + * @fn Peripheral_ProcessGAPMsg + * + * @brief Process an incoming task message. + * + * @param pMsg - message to process + * + * @return none + */ +static void Peripheral_ProcessGAPMsg(gapRoleEvent_t *pEvent) +{ + static uint8_t test_param; + + switch(pEvent->gap.opcode) + { + case GAP_PERI_ADV_SUBEVENT_DATA_REQ_EVENT: + { + gapPawrDataRequestEvent_t *pEvent_t = (gapPawrDataRequestEvent_t *)pEvent; + + PRINT("subevent data request.\n"); + // PRINT("advHandle=%x\n",pEvent_t->advHandle); + // PRINT("subeventStart=%d subeventDataCount=%d\n",pEvent_t->subeventStart,pEvent_t->subeventDataCount); + { + gapPawrSetData_t param[PAWR_SUBEVENT_NUM]; + if(pEvent_t->subeventDataCount > PAWR_SUBEVENT_NUM) + { + PRINT("subevent count error:%d max=%d\n", pEvent_t->subeventDataCount, PAWR_SUBEVENT_NUM); + } + for(int i = 0; i < pEvent_t->subeventDataCount; i++) + { + param[i].subevent = pEvent_t->subeventStart + i; + param[i].rspSlotStart = 4; + param[i].rspSlotCount = PAWR_RESPOSE_COUNT - param[i].rspSlotStart; + param[i].rspMaxLength = param[i].rspSlotCount * 10; + param[i].dataLength = 16; + // tmos_memset( pawrData[i],0,param[i].dataLength); + tmos_memset(pawrData[i], i, param[i].dataLength); + pawrData[i][0] = test_param++; + param[i].pData = pawrData[i]; + } + GAPPawr_SetSubeventData(gAdvHandle, pEvent_t->subeventDataCount, param); + } + break; + } + + case GAP_PERI_ADV_RESPONSE_REPORT_EVENT: + { + gapPawrResponseEvent_t *pEvent_t = (gapPawrResponseEvent_t *)pEvent; + { + pawrResponseInfo_t *pList_t = pEvent_t->pList; + for(int i = 0; i < pEvent_t->numResponses; i++) + { + if(pList_t[i].dataStatus != 0xFF) + { + PRINT("rspSlot=%d len=%d rssi=%d\n", pList_t[i].rspSlot, pList_t[i].dataLength, pList_t[i].rssi); + for(int k = 0; k < pList_t[i].dataLength; k++) + { + PRINT("%02x ", pList_t[i].pData[k]); + } + PRINT("\n"); + if(gSubevent == 0xFF) + { + gSubevent = i; + tmos_set_event(Periodic_TaskID, START_SYNC_CONN_TEST); + } + } + } + } + break; + } + default: + break; + } +} + +/********************************************************************* + * @fn Peripheral_ProcessTMOSMsg + * + * @brief Process an incoming task message. + * + * @param pMsg - message to process + * + * @return none + */ +static void Peripheral_ProcessTMOSMsg(tmos_event_hdr_t *pMsg) +{ + switch(pMsg->event) + { + case GAP_MSG_EVENT: + { + Peripheral_ProcessGAPMsg((gapRoleEvent_t *)pMsg); + break; + } + + default: + break; + } +} + +/********************************************************************* + * @fn peripheralStateNotificationCB + * + * @brief Notification from the profile of a state change. + * + * @param newState - new state + * + * @return none + */ +static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEvent_t *pEvent) +{ + gapRoleStates_t *pState = (gapRoleStates_t *)&newState; + + if(pEvent) + { + PRINT("\n------------------------------\n"); + PRINT("gap opcode:%x\n\n", pEvent->gap.opcode); + PRINT("periodic state=%x\n", pState->periState); + if(pState->periValid) + { + if((newState & GAPROLE_STATE_PERIODIC_MASK) == GAPROLE_PERIODIC_ENABLE) + { + gPeriodicState = 1; + } + else + { + gPeriodicState = 0; + } + PRINT("gPeriodicState = %d\n", gPeriodicState); + return; + } + else if(pState->cteValid) + { + PRINT("cte state\n"); + return; + } + } + switch(newState & GAPROLE_STATE_ADV_MASK) + { + case GAPROLE_STARTED: + PRINT("Initialized..\n"); + break; + + case GAPROLE_ADVERTISING: + if(pEvent->gap.opcode == GAP_MAKE_DISCOVERABLE_DONE_EVENT) + { + PRINT("Advertising..\n"); + gAdvHandle = 1; + if(gPawr) + { + bStatus_t s; + gapPawrSetParam_t param; + + param.taskID = Periodic_TaskID; + param.advHandle = gAdvHandle; + param.enable = TRUE; + param.advProperties = GAP_PERI_PROPERTIES_INCLUDE_TXPOWER; + param.rspSlotDelay = 0x2; + param.rspSlotSpacing = 0x02; + param.numRspSlots = PAWR_RESPOSE_COUNT; + param.numSubevents = PAWR_SUBEVENT_NUM; + param.subInterval = 2 + param.rspSlotDelay + (1 + (param.numRspSlots * param.rspSlotSpacing) / 10) + 4; + param.advIntervalMin = ((uint16_t)(param.numSubevents) * param.subInterval) + 1000; + param.advIntervalMax = param.advIntervalMin + 100; + s = GAPPawr_SetParameters(¶m); + if(!s) + gPawr = FALSE; + PRINT("set pawr .s = %x\n", s); + } + } + break; + + case GAPROLE_WAITING: + if(pEvent->gap.opcode == GAP_END_DISCOVERABLE_DONE_EVENT) + { + PRINT("Waiting for advertising..\n"); + } + else + { + PRINT("Error..%x\n", pEvent->gap.opcode); + } + break; + + case GAPROLE_ERROR: + PRINT("Error..\n"); + break; + + default: + break; + } + PRINT("Adv State: %x\n", pState->advState); + PRINT("Periodic State:%x\n", pState->periState); + PRINT("CTE State: %x\n", pState->cteState); +} + +/********************************* end@periodic *************************************/ diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/ch32v20x_it.c b/EVT/EXAM/BLE/PAwR_ADV/APP/ch32v20x_it.c new file mode 100644 index 0000000..f84a128 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/ch32v20x_it.c @@ -0,0 +1,61 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_it.c + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : Main Interrupt Service Routines. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "ch32v20x_it.h" +#include "CONFIG.h" + +/********************************************************************* + * LOCAL FUNCTIONS + */ +void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); + +/********************************************************************* + * @fn NMI_Handler + * + * @brief This function handles NMI exception. + * + * @return None + */ +void NMI_Handler(void) +{ +} + +/********************************************************************* + * @fn HardFault_Handler + * + * @brief This function handles Hard Fault exception. + * + * @return None + */ +void HardFault_Handler(void) +{ + while(1) + { + } +} + +/********************************************************************* + * @fn BB_IRQHandler + * + * @brief BB Interrupt for BLE. + * + * @return None + */ +void BB_IRQHandler(void) +{ + BB_IRQLibHandler(); +} diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/include/adv.h b/EVT/EXAM/BLE/PAwR_ADV/APP/include/adv.h new file mode 100644 index 0000000..68449c2 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/include/adv.h @@ -0,0 +1,68 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : central.h + * Author : WCH + * Version : V1.0 + * Date : 2018/11/12 + * Description : 观察应用主函数及任务系统初始化 + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * SPDX-License-Identifier: Apache-2.0 + *******************************************************************************/ + +#ifndef CENTRAL_H +#define CENTRAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************************************************************* + * INCLUDES + */ + +/********************************************************************* + * CONSTANTS + */ + +// Simple BLE Ceentral Task Events +#define START_DEVICE_EVT (1 << 0) +#define START_DISCOVERY_EVT (1 << 1) +#define START_SCAN_EVT (1 << 2) +#define START_SVC_DISCOVERY_EVT (1 << 3) +#define START_PARAM_UPDATE_EVT (1 << 4) +#define START_PHY_UPDATE_EVT (1 << 5) +#define START_READ_OR_WRITE_EVT (1 << 6) +#define START_WRITE_CCCD_EVT (1 << 7) +#define START_READ_RSSI_EVT (1 << 8) +#define ESTABLISH_LINK_TIMEOUT_EVT (1 << 9) + +#define START_SYNC_CONN_TEST (1 << 10) +#define START_EMU_TEST (1 << 11) +#define START_UPDATE_TEST (1 << 12) +#define START_SYNC_T_TEST (1 << 13) +#define START_PERIODIC_T_TEST (1 << 14) + +extern uint8_t gPeriodicState; +extern uint8_t PeerAddrDef[6]; +/********************************************************************* + * FUNCTIONS + */ + +/* + * Task Initialization for the BLE Application + */ +extern void Central_Init(void); +void Periodic_Init(void); + +/* + * Task Event Processor for the BLE Application + */ +extern uint16_t Central_ProcessEvent(uint8_t task_id, uint16_t events); + +/********************************************************************* +*********************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/include/ch32v20x_conf.h b/EVT/EXAM/BLE/PAwR_ADV/APP/include/ch32v20x_conf.h new file mode 100644 index 0000000..2cad663 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/include/ch32v20x_conf.h @@ -0,0 +1,37 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_conf.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : Library configuration file. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __CH32V20x_CONF_H +#define __CH32V20x_CONF_H + +#include "ch32v20x_adc.h" +#include "ch32v20x_bkp.h" +#include "ch32v20x_can.h" +#include "ch32v20x_crc.h" +#include "ch32v20x_dbgmcu.h" +#include "ch32v20x_dma.h" +#include "ch32v20x_exti.h" +#include "ch32v20x_flash.h" +#include "ch32v20x_gpio.h" +#include "ch32v20x_i2c.h" +#include "ch32v20x_iwdg.h" +#include "ch32v20x_pwr.h" +#include "ch32v20x_rcc.h" +#include "ch32v20x_rtc.h" +#include "ch32v20x_spi.h" +#include "ch32v20x_tim.h" +#include "ch32v20x_usart.h" +#include "ch32v20x_wwdg.h" +#include "ch32v20x_it.h" +#include "ch32v20x_misc.h" + +#endif /* __CH32V20x_CONF_H */ diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/include/ch32v20x_it.h b/EVT/EXAM/BLE/PAwR_ADV/APP/include/ch32v20x_it.h new file mode 100644 index 0000000..1b1c001 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/include/ch32v20x_it.h @@ -0,0 +1,18 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_it.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : This file contains the headers of the interrupt handlers. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __CH32V20x_IT_H +#define __CH32V20x_IT_H + +#include "debug.h" + +#endif /* __CH32V20x_IT_H */ diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/include/system_ch32v20x.h b/EVT/EXAM/BLE/PAwR_ADV/APP/include/system_ch32v20x.h new file mode 100644 index 0000000..1090bb0 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/include/system_ch32v20x.h @@ -0,0 +1,31 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : system_ch32v20x.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : CH32V20x Device Peripheral Access Layer System Header File. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __SYSTEM_ch32v20x_H +#define __SYSTEM_ch32v20x_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/* System_Exported_Functions */ +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); + + +#ifdef __cplusplus +} +#endif + +#endif /*__CH32V20x_SYSTEM_H */ diff --git a/EVT/EXAM/BLE/PAwR_ADV/APP/system_ch32v20x.c b/EVT/EXAM/BLE/PAwR_ADV/APP/system_ch32v20x.c new file mode 100644 index 0000000..f4110b2 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/APP/system_ch32v20x.c @@ -0,0 +1,989 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : system_ch32v20x.c + * Author : WCH + * Version : V1.0.0 + * Date : 2021/06/06 + * Description : CH32V20x Device Peripheral Access Layer System Source File. + * For HSE = 32Mhz (CH32V208x/CH32V203RBT6) + * For HSE = 8Mhz (other CH32V203x) + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ +#include "ch32v20x.h" + +/* +* Uncomment the line corresponding to the desired System clock (SYSCLK) frequency (after +* reset the HSI is used as SYSCLK source). +* If none of the define below is enabled, the HSI is used as System clock source. +*/ +//#define SYSCLK_FREQ_HSE HSE_VALUE +//#define SYSCLK_FREQ_48MHz_HSE 48000000 +//#define SYSCLK_FREQ_56MHz_HSE 56000000 +//#define SYSCLK_FREQ_72MHz_HSE 72000000 +#define SYSCLK_FREQ_96MHz_HSE 96000000 +//#define SYSCLK_FREQ_120MHz_HSE 120000000 +//#define SYSCLK_FREQ_144MHz_HSE 144000000 +//#define SYSCLK_FREQ_HSI HSI_VALUE +//#define SYSCLK_FREQ_48MHz_HSI 48000000 +//#define SYSCLK_FREQ_56MHz_HSI 56000000 +//#define SYSCLK_FREQ_72MHz_HSI 72000000 +//#define SYSCLK_FREQ_96MHz_HSI 96000000 +//#define SYSCLK_FREQ_120MHz_HSI 120000000 +//#define SYSCLK_FREQ_144MHz_HSI 144000000 + +/* Clock Definitions */ +#ifdef SYSCLK_FREQ_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_96MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_96MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSI; /* System Clock Frequency (Core Clock) */ +#else +uint32_t SystemCoreClock = HSI_VALUE; /* System Clock Frequency (Core Clock) */ + +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + + +/* system_private_function_proto_types */ +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE +static void SetSysClockToHSE( void ); +#elif defined SYSCLK_FREQ_48MHz_HSE +static void SetSysClockTo48_HSE( void ); +#elif defined SYSCLK_FREQ_56MHz_HSE +static void SetSysClockTo56_HSE( void ); +#elif defined SYSCLK_FREQ_72MHz_HSE +static void SetSysClockTo72_HSE( void ); +#elif defined SYSCLK_FREQ_96MHz_HSE +static void SetSysClockTo96_HSE( void ); +#elif defined SYSCLK_FREQ_120MHz_HSE +static void SetSysClockTo120_HSE( void ); +#elif defined SYSCLK_FREQ_144MHz_HSE +static void SetSysClockTo144_HSE( void ); +#elif defined SYSCLK_FREQ_48MHz_HSI +static void SetSysClockTo48_HSI( void ); +#elif defined SYSCLK_FREQ_56MHz_HSI +static void SetSysClockTo56_HSI( void ); +#elif defined SYSCLK_FREQ_72MHz_HSI +static void SetSysClockTo72_HSI( void ); +#elif defined SYSCLK_FREQ_96MHz_HSI +static void SetSysClockTo96_HSI( void ); +#elif defined SYSCLK_FREQ_120MHz_HSI +static void SetSysClockTo120_HSI( void ); +#elif defined SYSCLK_FREQ_144MHz_HSI +static void SetSysClockTo144_HSI( void ); + +#endif + +/********************************************************************* + * @fn SystemInit + * + * @brief Setup the microcontroller system Initialize the Embedded Flash Interface, + * the PLL and update the SystemCoreClock variable. + * + * @return none + */ +void SystemInit (void) +{ + RCC->CTLR |= (uint32_t)0x00000001; + RCC->CFGR0 &= (uint32_t)0xF8FF0000; + RCC->CTLR &= (uint32_t)0xFEF6FFFF; + RCC->CTLR &= (uint32_t)0xFFFBFFFF; + RCC->CFGR0 &= (uint32_t)0xFF80FFFF; + RCC->INTR = 0x009F0000; + SetSysClock(); +} + + +/********************************************************************* + * @fn SystemCoreClockUpdate + * + * @brief Update SystemCoreClock variable according to Clock Register Values. + * + * @return none + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0, Pll_6_5 = 0; + + tmp = RCC->CFGR0 & RCC_SWS; + + switch (tmp) + { + case 0x00: + SystemCoreClock = HSI_VALUE; + break; + case 0x04: + SystemCoreClock = HSE_VALUE; + break; + case 0x08: + pllmull = RCC->CFGR0 & RCC_PLLMULL; + pllsource = RCC->CFGR0 & RCC_PLLSRC; + pllmull = ( pllmull >> 18) + 2; + + if(pllmull == 17) pllmull = 18; + + if (pllsource == 0x00) + { + if(EXTEN->EXTEN_CTR & EXTEN_PLL_HSI_PRE){ + SystemCoreClock = HSI_VALUE * pllmull; + } + else{ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + } + else + { +#if defined (CH32V20x_D8W) + if((RCC->CFGR0 & (3<<22)) == (3<<22)) + { + SystemCoreClock = ((HSE_VALUE>>1)) * pllmull; + } + else +#endif + if ((RCC->CFGR0 & RCC_PLLXTPRE) != (uint32_t)RESET) + { +#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) + SystemCoreClock = ((HSE_VALUE>>2) >> 1) * pllmull; +#else + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; +#endif + } + else + { +#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) + SystemCoreClock = (HSE_VALUE>>2) * pllmull; +#else + SystemCoreClock = HSE_VALUE * pllmull; +#endif + } + } + + if(Pll_6_5 == 1) SystemCoreClock = (SystemCoreClock / 2); + + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + + tmp = AHBPrescTable[((RCC->CFGR0 & RCC_HPRE) >> 4)]; + SystemCoreClock >>= tmp; +} + +/********************************************************************* + * @fn SetSysClock + * + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_48MHz_HSE + SetSysClockTo48_HSE(); +#elif defined SYSCLK_FREQ_56MHz_HSE + SetSysClockTo56_HSE(); +#elif defined SYSCLK_FREQ_72MHz_HSE + SetSysClockTo72_HSE(); +#elif defined SYSCLK_FREQ_96MHz_HSE + SetSysClockTo96_HSE(); +#elif defined SYSCLK_FREQ_120MHz_HSE + SetSysClockTo120_HSE(); +#elif defined SYSCLK_FREQ_144MHz_HSE + SetSysClockTo144_HSE(); +#elif defined SYSCLK_FREQ_48MHz_HSI + SetSysClockTo48_HSI(); +#elif defined SYSCLK_FREQ_56MHz_HSI + SetSysClockTo56_HSI(); +#elif defined SYSCLK_FREQ_72MHz_HSI + SetSysClockTo72_HSI(); +#elif defined SYSCLK_FREQ_96MHz_HSI + SetSysClockTo96_HSI(); +#elif defined SYSCLK_FREQ_120MHz_HSI + SetSysClockTo120_HSI(); +#elif defined SYSCLK_FREQ_144MHz_HSI + SetSysClockTo144_HSI(); + +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + * source (default after reset) + */ +} + + +#ifdef SYSCLK_FREQ_HSE + +/********************************************************************* + * @fn SetSysClockToHSE + * + * @brief Sets HSE as System clock source and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV1; + + /* Select HSE as system clock source + * CH32V20x_D6 (HSE=8MHZ) + * CH32V20x_D8 (HSE=32MHZ) + * CH32V20x_D8W (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x04) + { + } + } + else + { + /* If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo48_HSE + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 6 = 48 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 6 = 48 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 6 = 48 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL6); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_56MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo56_HSE + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 7 = 56 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 7 = 56 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 7 = 56 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL7); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_72MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo72_HSE + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 9 = 72 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 9 = 72 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 9 = 72 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL9); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_96MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo96_HSE + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 12 = 96 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 12 = 96 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 12 = 96 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL12); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_120MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo120_HSE + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if(HSEStatus == (uint32_t)0x01) + { +#if defined (CH32V20x_D8W) + RCC->CFGR0 |= (uint32_t)(3<<22); + /* HCLK = SYSCLK/2 */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV2; +#else + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; +#endif + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 15 = 120 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 15 = 120 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/2 * 15 = 240 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL15); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} +#elif defined SYSCLK_FREQ_144MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo144_HSE + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 18 = 144 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 18 = 144 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 18 = 144 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo48_HSI + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 6 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL6); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + +#elif defined SYSCLK_FREQ_56MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo56_HSI + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 7 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL7); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + +#elif defined SYSCLK_FREQ_72MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo72_HSI + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 9 = 72 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL9); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#elif defined SYSCLK_FREQ_96MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo96_HSI + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 12 = 96 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL12); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#elif defined SYSCLK_FREQ_120MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo120_HSI + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 15 = 120 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL15); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} +#elif defined SYSCLK_FREQ_144MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo144_HSI + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 18 = 144 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL18); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#endif diff --git a/EVT/EXAM/BLE/PAwR_ADV/PAwR_ADV.wvproj b/EVT/EXAM/BLE/PAwR_ADV/PAwR_ADV.wvproj new file mode 100644 index 0000000..02d84e6 Binary files /dev/null and b/EVT/EXAM/BLE/PAwR_ADV/PAwR_ADV.wvproj differ diff --git a/EVT/EXAM/BLE/PAwR_ADV/Profile/include/gattprofile.h b/EVT/EXAM/BLE/PAwR_ADV/Profile/include/gattprofile.h new file mode 100644 index 0000000..32c8eee --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_ADV/Profile/include/gattprofile.h @@ -0,0 +1,135 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : gattprofile.h + * Author : WCH + * Version : V1.0 + * Date : 2018/12/11 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef GATTPROFILE_H +#define GATTPROFILE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************************************************************* + * INCLUDES + */ + +/********************************************************************* + * CONSTANTS + */ + +// Profile Parameters +#define SIMPLEPROFILE_CHAR1 0 // RW uint8_t - Profile Characteristic 1 value +#define SIMPLEPROFILE_CHAR2 1 // RW uint8_t - Profile Characteristic 2 value +#define SIMPLEPROFILE_CHAR3 2 // RW uint8_t - Profile Characteristic 3 value +#define SIMPLEPROFILE_CHAR4 3 // RW uint8_t - Profile Characteristic 4 value +#define SIMPLEPROFILE_CHAR5 4 // RW uint8_t - Profile Characteristic 4 value + +// Simple Profile Service UUID +#define SIMPLEPROFILE_SERV_UUID 0xFFE0 + +// Key Pressed UUID +#define SIMPLEPROFILE_CHAR1_UUID 0xFFE1 +#define SIMPLEPROFILE_CHAR2_UUID 0xFFE2 +#define SIMPLEPROFILE_CHAR3_UUID 0xFFE3 +#define SIMPLEPROFILE_CHAR4_UUID 0xFFE4 +#define SIMPLEPROFILE_CHAR5_UUID 0xFFE5 + +// Simple Keys Profile Services bit fields +#define SIMPLEPROFILE_SERVICE 0x00000001 + +// Length of characteristic in bytes ( Default MTU is 23 ) +#define SIMPLEPROFILE_CHAR1_LEN 1 +#define SIMPLEPROFILE_CHAR2_LEN 1 +#define SIMPLEPROFILE_CHAR3_LEN 1 +#define SIMPLEPROFILE_CHAR4_LEN 1 +#define SIMPLEPROFILE_CHAR5_LEN 5 + +/********************************************************************* + * TYPEDEFS + */ + +/********************************************************************* + * MACROS + */ + +/********************************************************************* + * Profile Callbacks + */ + +// Callback when a characteristic value has changed +typedef void (*simpleProfileChange_t)(uint8_t paramID); + +typedef struct +{ + simpleProfileChange_t pfnSimpleProfileChange; // Called when characteristic value changes +} simpleProfileCBs_t; + +/********************************************************************* + * API FUNCTIONS + */ + +/* + * SimpleProfile_AddService- Initializes the Simple GATT Profile service by registering + * GATT attributes with the GATT server. + * + * @param services - services to add. This is a bit map and can + * contain more than one service. + */ + +extern bStatus_t SimpleProfile_AddService(uint32_t services); + +/* + * SimpleProfile_RegisterAppCBs - Registers the application callback function. + * Only call this function once. + * + * appCallbacks - pointer to application callbacks. + */ +extern bStatus_t SimpleProfile_RegisterAppCBs(simpleProfileCBs_t *appCallbacks); + +/* + * SimpleProfile_SetParameter - Set a Simple GATT Profile parameter. + * + * param - Profile parameter ID + * len - length of data to right + * value - pointer to data to write. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + */ +extern bStatus_t SimpleProfile_SetParameter(uint8_t param, uint8_t len, void *value); + +/* + * SimpleProfile_GetParameter - Get a Simple GATT Profile parameter. + * + * param - Profile parameter ID + * value - pointer to data to write. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + */ +extern bStatus_t SimpleProfile_GetParameter(uint8_t param, void *value); + +/* + * simpleProfile_Notify - Send notification. + * + * connHandle - connect handle + * pNoti - pointer to structure to notify. + */ +extern bStatus_t simpleProfile_Notify(uint16_t connHandle, attHandleValueNoti_t *pNoti); + +/********************************************************************* +*********************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/EVT/EXAM/BLE/PAwR_RSP/.cproject b/EVT/EXAM/BLE/PAwR_RSP/.cproject new file mode 100644 index 0000000..6c14303 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/.cproject @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EVT/EXAM/BLE/PAwR_RSP/.project b/EVT/EXAM/BLE/PAwR_RSP/.project new file mode 100644 index 0000000..b73088d --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/.project @@ -0,0 +1,54 @@ + + + PAwR_RSP + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + HAL + 2 + PARENT-1-PROJECT_LOC/HAL + + + LIB + 2 + PARENT-1-PROJECT_LOC/LIB + + + SRC + 2 + PARENT-2-PROJECT_LOC/SRC + + + + + 1602468250279 + + 22 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-*.wvproj + + + + diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/ch32v20x_it.c b/EVT/EXAM/BLE/PAwR_RSP/APP/ch32v20x_it.c new file mode 100644 index 0000000..f84a128 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/ch32v20x_it.c @@ -0,0 +1,61 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_it.c + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : Main Interrupt Service Routines. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "ch32v20x_it.h" +#include "CONFIG.h" + +/********************************************************************* + * LOCAL FUNCTIONS + */ +void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); + +/********************************************************************* + * @fn NMI_Handler + * + * @brief This function handles NMI exception. + * + * @return None + */ +void NMI_Handler(void) +{ +} + +/********************************************************************* + * @fn HardFault_Handler + * + * @brief This function handles Hard Fault exception. + * + * @return None + */ +void HardFault_Handler(void) +{ + while(1) + { + } +} + +/********************************************************************* + * @fn BB_IRQHandler + * + * @brief BB Interrupt for BLE. + * + * @return None + */ +void BB_IRQHandler(void) +{ + BB_IRQLibHandler(); +} diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/include/ch32v20x_conf.h b/EVT/EXAM/BLE/PAwR_RSP/APP/include/ch32v20x_conf.h new file mode 100644 index 0000000..2cad663 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/include/ch32v20x_conf.h @@ -0,0 +1,37 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_conf.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : Library configuration file. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __CH32V20x_CONF_H +#define __CH32V20x_CONF_H + +#include "ch32v20x_adc.h" +#include "ch32v20x_bkp.h" +#include "ch32v20x_can.h" +#include "ch32v20x_crc.h" +#include "ch32v20x_dbgmcu.h" +#include "ch32v20x_dma.h" +#include "ch32v20x_exti.h" +#include "ch32v20x_flash.h" +#include "ch32v20x_gpio.h" +#include "ch32v20x_i2c.h" +#include "ch32v20x_iwdg.h" +#include "ch32v20x_pwr.h" +#include "ch32v20x_rcc.h" +#include "ch32v20x_rtc.h" +#include "ch32v20x_spi.h" +#include "ch32v20x_tim.h" +#include "ch32v20x_usart.h" +#include "ch32v20x_wwdg.h" +#include "ch32v20x_it.h" +#include "ch32v20x_misc.h" + +#endif /* __CH32V20x_CONF_H */ diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/include/ch32v20x_it.h b/EVT/EXAM/BLE/PAwR_RSP/APP/include/ch32v20x_it.h new file mode 100644 index 0000000..1b1c001 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/include/ch32v20x_it.h @@ -0,0 +1,18 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_it.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : This file contains the headers of the interrupt handlers. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __CH32V20x_IT_H +#define __CH32V20x_IT_H + +#include "debug.h" + +#endif /* __CH32V20x_IT_H */ diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/include/rsp.h b/EVT/EXAM/BLE/PAwR_RSP/APP/include/rsp.h new file mode 100644 index 0000000..b4c86f3 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/include/rsp.h @@ -0,0 +1,70 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : peripheral.h + * Author : WCH + * Version : V1.0 + * Date : 2018/12/11 + * Description : + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * SPDX-License-Identifier: Apache-2.0 + *******************************************************************************/ + +#ifndef PERIPHERAL_H +#define PERIPHERAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************************************************************* + * INCLUDES + */ + +/********************************************************************* + * CONSTANTS + */ + +// Peripheral Task Events +#define SBP_START_DEVICE_EVT (1 << 0) +#define SBP_PERIODIC_EVT (1 << 1) +#define SBP_READ_RSSI_EVT (1 << 2) +#define SBP_PARAM_UPDATE_EVT (1 << 3) +#define SBP_PHY_UPDATE_EVT (1 << 4) +#define SBP_SET_SYNC_PARAM (1 << 14) + +/********************************************************************* + * MACROS + */ +typedef struct +{ + uint16_t connHandle; // Connection handle of current connection + uint16_t connInterval; + uint16_t connSlaveLatency; + uint16_t connTimeout; +} peripheralConnItem_t; +extern peripheralConnItem_t peripheralConnList; +extern uint16_t syncHandle; +extern uint8_t syncTran; + +/********************************************************************* + * FUNCTIONS + */ + +/* + * Task Initialization for the BLE Application + */ +extern void Peripheral_Init(void); +void Sync_Init(void); + +/* + * Task Event Processor for the BLE Application + */ +extern uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events); + +/********************************************************************* +*********************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/include/system_ch32v20x.h b/EVT/EXAM/BLE/PAwR_RSP/APP/include/system_ch32v20x.h new file mode 100644 index 0000000..1090bb0 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/include/system_ch32v20x.h @@ -0,0 +1,31 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : system_ch32v20x.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : CH32V20x Device Peripheral Access Layer System Header File. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __SYSTEM_ch32v20x_H +#define __SYSTEM_ch32v20x_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/* System_Exported_Functions */ +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); + + +#ifdef __cplusplus +} +#endif + +#endif /*__CH32V20x_SYSTEM_H */ diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_main.c b/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_main.c new file mode 100644 index 0000000..922fccf --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_main.c @@ -0,0 +1,70 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : main.c + * Author : WCH + * Version : V1.1 + * Date : 2020/08/06 + * Description : Peripheral slave application main function and task system initialization + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/******************************************************************************/ +/* Header file contains */ +#include "CONFIG.h" +#include "HAL.h" +#include "gattprofile.h" +#include "rsp.h" + +/********************************************************************* + * GLOBAL TYPEDEFS + */ +__attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; + +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) +const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; +#endif + +/********************************************************************* + * @fn Main_Circulation + * + * @brief Main loop + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) void +Main_Circulation(void) +{ + while(1) + { + TMOS_SystemProcess(); + } +} + +/********************************************************************* + * @fn main + * + * @brief Main function + * + * @return none + */ +int main(void) +{ + SystemCoreClockUpdate(); + Delay_Init(); +#ifdef DEBUG + USART_Printf_Init(115200); +#endif + PRINT("%s\n", VER_LIB); + WCHBLE_Init(); + HAL_Init(); + GAPRole_PeripheralInit(); + GAPRole_CentralInit(); + Peripheral_Init(); + Sync_Init(); + Main_Circulation(); +} + +/******************************** endfile @ main ******************************/ diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_peripheral.c b/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_peripheral.c new file mode 100644 index 0000000..db98ac5 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_peripheral.c @@ -0,0 +1,760 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : rsp_peripheral.C + * Author : WCH + * Version : V1.0 + * Date : 2018/12/10 + * Description : Peripheral slave multi-connection application, initialize + * broadcast connection parameters, then broadcast, after + * connecting to the host, request to update connection parameters, + * and transmit data through custom services + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "CONFIG.h" +#include "devinfoservice.h" +#include "gattprofile.h" +#include "rsp.h" + +/********************************************************************* + * MACROS + */ + +/********************************************************************* + * CONSTANTS + */ + +// How often to perform periodic event +#define SBP_PERIODIC_EVT_PERIOD 1600 + +// How often to perform read rssi event +#define SBP_READ_RSSI_EVT_PERIOD 3200 + +// Parameter update delay +#define SBP_PARAM_UPDATE_DELAY 6400 + +// PHY update delay +#define SBP_PHY_UPDATE_DELAY 2400 + +// What is the advertising interval when device is discoverable (units of 625us, 80=50ms) +#define DEFAULT_ADVERTISING_INTERVAL 80 + +// Limited discoverable mode advertises for 30.72s, and then stops +// General discoverable mode advertises indefinitely +#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_GENERAL + +// Minimum connection interval (units of 1.25ms, 6=7.5ms) +#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 6 + +// Maximum connection interval (units of 1.25ms, 100=125ms) +#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 100 + +// Slave latency to use parameter update +#define DEFAULT_DESIRED_SLAVE_LATENCY 0 + +// Supervision timeout value (units of 10ms, 100=1s) +#define DEFAULT_DESIRED_CONN_TIMEOUT 100 + +// Company Identifier: WCH +#define WCH_COMPANY_ID 0x07D7 + +/********************************************************************* + * TYPEDEFS + */ + +/********************************************************************* + * GLOBAL VARIABLES + */ + +/********************************************************************* + * EXTERNAL VARIABLES + */ + +/********************************************************************* + * EXTERNAL FUNCTIONS + */ + +/********************************************************************* + * LOCAL VARIABLES + */ +static uint8_t Peripheral_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing + +// GAP - SCAN RSP data (max size = 31 bytes) +static uint8_t scanRspData[] = { + // complete name + 7, // length of this data + GAP_ADTYPE_LOCAL_NAME_COMPLETE, + 'e', + 's', + 'l', + '0', + '0', + '1', + // connection interval range + 0x05, // length of this data + GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE, + LO_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL), // 100ms + HI_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL), + LO_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL), // 1s + HI_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL), + + // Tx power level + 0x02, // length of this data + GAP_ADTYPE_POWER_LEVEL, + 0 // 0dBm +}; + +// GAP - Advertisement data (max size = 31 bytes, though this is +// best kept short to conserve power while advertising) +static uint8_t advertData[] = { + // Flags; this sets the device to use limited discoverable + // mode (advertises for 30 seconds at a time) instead of general + // discoverable mode (advertises indefinitely) + 0x02, // length of this data + GAP_ADTYPE_FLAGS, + DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED, + + // service UUID, to notify central devices what services are included + // in this peripheral + 0x03, // length of this data + GAP_ADTYPE_16BIT_MORE, // some of the UUID's, but not all + LO_UINT16(SIMPLEPROFILE_SERV_UUID), + HI_UINT16(SIMPLEPROFILE_SERV_UUID)}; + +// GAP GATT Attributes +static uint8_t attDeviceName[] = "esl-test1"; + +// Connection item list +peripheralConnItem_t peripheralConnList; + +static uint16_t peripheralMTU = ATT_MTU_SIZE; +uint8_t syncTran; + +/********************************************************************* + * LOCAL FUNCTIONS + */ +static void Peripheral_ProcessTMOSMsg(tmos_event_hdr_t *pMsg); +static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEvent_t *pEvent); +static void performPeriodicTask(void); +static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len); +static void peripheralParamUpdateCB(uint16_t connHandle, uint16_t connInterval, + uint16_t connSlaveLatency, uint16_t connTimeout); +static void peripheralInitConnItem(peripheralConnItem_t *peripheralConnList); +static void peripheralRssiCB(uint16_t connHandle, int8_t rssi); +static void peripheralChar4Notify(uint8_t *pValue, uint16_t len); + +/********************************************************************* + * PROFILE CALLBACKS + */ + +// GAP Role Callbacks +static gapRolesCBs_t Peripheral_PeripheralCBs = { + peripheralStateNotificationCB, // Profile State Change Callbacks + peripheralRssiCB, // When a valid RSSI is read from controller (not used by application) + peripheralParamUpdateCB}; + +// Broadcast Callbacks +static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { + NULL, // Not used in peripheral role + NULL // Receive scan request callback +}; + +// GAP Bond Manager Callbacks +static gapBondCBs_t Peripheral_BondMgrCBs = { + NULL, // Passcode callback (not used by application) + NULL // Pairing / Bonding state Callback (not used by application) +}; + +// Simple GATT Profile Callbacks +static simpleProfileCBs_t Peripheral_SimpleProfileCBs = { + simpleProfileChangeCB // Characteristic value change callback +}; +/********************************************************************* + * PUBLIC FUNCTIONS + */ + +/********************************************************************* + * @fn Peripheral_Init + * + * @brief Initialization function for the Peripheral App Task. + * This is called during initialization and should contain + * any application specific initialization (ie. hardware + * initialization/setup, table initialization, power up + * notificaiton ... ). + * + * @param task_id - the ID assigned by TMOS. This ID should be + * used to send messages and set timers. + * + * @return none + */ +void Peripheral_Init(void) +{ + Peripheral_TaskID = TMOS_ProcessEventRegister(Peripheral_ProcessEvent); + syncTran = 0; + // Setup the GAP Peripheral Role Profile + { + uint8_t initial_advertising_enable = TRUE; + uint16_t desired_min_interval = DEFAULT_DESIRED_MIN_CONN_INTERVAL; + uint16_t desired_max_interval = DEFAULT_DESIRED_MAX_CONN_INTERVAL; + + // Set the GAP Role Parameters + GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable); + GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData), scanRspData); + GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData); + GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t), &desired_min_interval); + GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t), &desired_max_interval); + } + + // Set the GAP Characteristics + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); + + { + uint16_t advInt = DEFAULT_ADVERTISING_INTERVAL; + + // Set advertising interval + GAP_SetParamValue(TGAP_DISC_ADV_INT_MIN, advInt); + GAP_SetParamValue(TGAP_DISC_ADV_INT_MAX, advInt); + + // Enable scan req notify + GAP_SetParamValue(TGAP_ADV_SCAN_REQ_NOTIFY, ENABLE); + } + + // Setup the GAP Bond Manager + { + uint32_t passkey = 0; // passkey "000000" + uint8_t pairMode = GAPBOND_PAIRING_MODE_WAIT_FOR_REQ; + uint8_t mitm = TRUE; + uint8_t bonding = TRUE; + uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY; + GAPBondMgr_SetParameter(GAPBOND_PERI_DEFAULT_PASSCODE, sizeof(uint32_t), &passkey); + GAPBondMgr_SetParameter(GAPBOND_PERI_PAIRING_MODE, sizeof(uint8_t), &pairMode); + GAPBondMgr_SetParameter(GAPBOND_PERI_MITM_PROTECTION, sizeof(uint8_t), &mitm); + GAPBondMgr_SetParameter(GAPBOND_PERI_IO_CAPABILITIES, sizeof(uint8_t), &ioCap); + GAPBondMgr_SetParameter(GAPBOND_PERI_BONDING_ENABLED, sizeof(uint8_t), &bonding); + } + + // Initialize GATT attributes + GGS_AddService(GATT_ALL_SERVICES); // GAP + GATTServApp_AddService(GATT_ALL_SERVICES); // GATT attributes + DevInfo_AddService(); // Device Information Service + SimpleProfile_AddService(GATT_ALL_SERVICES); // Simple GATT Profile + + // Setup the SimpleProfile Characteristic Values + { + uint8_t charValue1[SIMPLEPROFILE_CHAR1_LEN] = {1}; + uint8_t charValue2[SIMPLEPROFILE_CHAR2_LEN] = {2}; + uint8_t charValue3[SIMPLEPROFILE_CHAR3_LEN] = {3}; + uint8_t charValue4[SIMPLEPROFILE_CHAR4_LEN] = {4}; + uint8_t charValue5[SIMPLEPROFILE_CHAR5_LEN] = {1, 2, 3, 4, 5}; + + SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR1, SIMPLEPROFILE_CHAR1_LEN, charValue1); + SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR2, SIMPLEPROFILE_CHAR2_LEN, charValue2); + SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR3, SIMPLEPROFILE_CHAR3_LEN, charValue3); + SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR4, SIMPLEPROFILE_CHAR4_LEN, charValue4); + SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR5, SIMPLEPROFILE_CHAR5_LEN, charValue5); + } + + // Init Connection Item + peripheralInitConnItem(&peripheralConnList); + + // Register callback with SimpleGATTprofile + SimpleProfile_RegisterAppCBs(&Peripheral_SimpleProfileCBs); + + // Register receive scan request callback + GAPRole_BroadcasterSetCB(&Broadcaster_BroadcasterCBs); + + // Setup a delayed profile startup + tmos_set_event(Peripheral_TaskID, SBP_START_DEVICE_EVT); +} + +/********************************************************************* + * @fn peripheralInitConnItem + * + * @brief Init Connection Item + * + * @param peripheralConnList - + * + * @return NULL + */ +static void peripheralInitConnItem(peripheralConnItem_t *peripheralConnList) +{ + peripheralConnList->connHandle = GAP_CONNHANDLE_INIT; + peripheralConnList->connInterval = 0; + peripheralConnList->connSlaveLatency = 0; + peripheralConnList->connTimeout = 0; +} + +/********************************************************************* + * @fn Peripheral_ProcessEvent + * + * @brief Peripheral Application Task event processor. This function + * is called to process all events for the task. Events + * include timers, messages and any other user defined events. + * + * @param task_id - The TMOS assigned task ID. + * @param events - events to process. This is a bit map and can + * contain more than one event. + * + * @return events not processed + */ +uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events) +{ + // VOID task_id; // TMOS required parameter that isn't used in this function + + if(events & SYS_EVENT_MSG) + { + uint8_t *pMsg; + + if((pMsg = tmos_msg_receive(Peripheral_TaskID)) != NULL) + { + Peripheral_ProcessTMOSMsg((tmos_event_hdr_t *)pMsg); + // Release the TMOS message + tmos_msg_deallocate(pMsg); + } + // return unprocessed events + return (events ^ SYS_EVENT_MSG); + } + + if(events & SBP_START_DEVICE_EVT) + { + // Start the Device + GAPRole_PeripheralStartDevice(Peripheral_TaskID, &Peripheral_BondMgrCBs, &Peripheral_PeripheralCBs); + return (events ^ SBP_START_DEVICE_EVT); + } + + if(events & SBP_PERIODIC_EVT) + { + // Restart timer + if(SBP_PERIODIC_EVT_PERIOD) + { + tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD); + } + // Perform periodic application task + performPeriodicTask(); + return (events ^ SBP_PERIODIC_EVT); + } + + if(events & SBP_PARAM_UPDATE_EVT) + { + // Send connect param update request + GAPRole_PeripheralConnParamUpdateReq(peripheralConnList.connHandle, + DEFAULT_DESIRED_MIN_CONN_INTERVAL, + DEFAULT_DESIRED_MAX_CONN_INTERVAL, + DEFAULT_DESIRED_SLAVE_LATENCY, + DEFAULT_DESIRED_CONN_TIMEOUT, + Peripheral_TaskID); + + return (events ^ SBP_PARAM_UPDATE_EVT); + } + + if(events & SBP_PHY_UPDATE_EVT) + { + // start phy update + PRINT("PHY Update %x...\n", GAPRole_UpdatePHY(peripheralConnList.connHandle, 0, GAP_PHY_BIT_LE_2M, + GAP_PHY_BIT_LE_2M, 0)); + + return (events ^ SBP_PHY_UPDATE_EVT); + } + + if(events & SBP_READ_RSSI_EVT) + { + GAPRole_ReadRssiCmd(peripheralConnList.connHandle); + tmos_start_task(Peripheral_TaskID, SBP_READ_RSSI_EVT, SBP_READ_RSSI_EVT_PERIOD); + return (events ^ SBP_READ_RSSI_EVT); + } + + if(events & SBP_SET_SYNC_PARAM) + { + gapSyncTransferParam_t param; + + param.connHandle = peripheralConnList.connHandle; + param.mode = MODE_2; + param.syncTimeout = 1000; + PRINT("set sync transfer parameters-%x\n", GAPRole_SyncTransferParameters(¶m)); + return (events ^ SBP_SET_SYNC_PARAM); + } + // Discard unknown events + return 0; +} + +/********************************************************************* + * @fn Peripheral_ProcessGAPMsg + * + * @brief Process an incoming task message. + * + * @param pMsg - message to process + * + * @return none + */ +static void Peripheral_ProcessGAPMsg(gapRoleEvent_t *pEvent) +{ + switch(pEvent->gap.opcode) + { + case GAP_SCAN_REQUEST_EVENT: + { + PRINT("Receive scan req from %x %x %x %x %x %x ..\n", pEvent->scanReqEvt.scannerAddr[0], + pEvent->scanReqEvt.scannerAddr[1], pEvent->scanReqEvt.scannerAddr[2], pEvent->scanReqEvt.scannerAddr[3], + pEvent->scanReqEvt.scannerAddr[4], pEvent->scanReqEvt.scannerAddr[5]); + break; + } + + case GAP_PHY_UPDATE_EVENT: + { + PRINT("Phy update Rx:%x Tx:%x ..\n", pEvent->linkPhyUpdate.connRxPHYS, pEvent->linkPhyUpdate.connTxPHYS); + break; + } + + case GAP_PERI_ADV_SYNC_TRAN_RECEIVED_EVENT: + { + PRINT("sync transfer :%x %d %d.\n", pEvent->syncTran.syncHandle, pEvent->syncTran.numSubevents, pEvent->syncTran.subInterval); + syncHandle = pEvent->syncTran.syncHandle; + GAPRole_TerminateLink(peripheralConnList.connHandle); + break; + } + default: + break; + } +} + +/********************************************************************* + * @fn Peripheral_ProcessTMOSMsg + * + * @brief Process an incoming task message. + * + * @param pMsg - message to process + * + * @return none + */ +static void Peripheral_ProcessTMOSMsg(tmos_event_hdr_t *pMsg) +{ + switch(pMsg->event) + { + case GAP_MSG_EVENT: + { + Peripheral_ProcessGAPMsg((gapRoleEvent_t *)pMsg); + break; + } + + case GATT_MSG_EVENT: + { + gattMsgEvent_t *pMsgEvent; + + pMsgEvent = (gattMsgEvent_t *)pMsg; + if(pMsgEvent->method == ATT_MTU_UPDATED_EVENT) + { + peripheralMTU = pMsgEvent->msg.exchangeMTUReq.clientRxMTU; + PRINT("mtu exchange: %d\n", pMsgEvent->msg.exchangeMTUReq.clientRxMTU); + } + break; + } + + default: + break; + } +} + +/********************************************************************* + * @fn Peripheral_LinkEstablished + * + * @brief Process link established. + * + * @param pEvent - event to process + * + * @return none + */ +static void Peripheral_LinkEstablished(gapRoleEvent_t *pEvent) +{ + gapEstLinkReqEvent_t *event = (gapEstLinkReqEvent_t *)pEvent; + + // See if already connected + if(peripheralConnList.connHandle != GAP_CONNHANDLE_INIT) + { + GAPRole_TerminateLink(pEvent->linkCmpl.connectionHandle); + PRINT("Connection max...\n"); + } + else + { + peripheralConnList.connHandle = event->connectionHandle; + peripheralConnList.connInterval = event->connInterval; + peripheralConnList.connSlaveLatency = event->connLatency; + peripheralConnList.connTimeout = event->connTimeout; + peripheralMTU = ATT_MTU_SIZE; + + // Set timer for param update event + // tmos_start_task(Peripheral_TaskID, SBP_PARAM_UPDATE_EVT, SBP_PARAM_UPDATE_DELAY); + + // Start read rssi + tmos_start_task(Peripheral_TaskID, SBP_READ_RSSI_EVT, SBP_READ_RSSI_EVT_PERIOD); + PRINT("Conn %x - Int %d\n", event->connectionHandle, event->connInterval); + } + PRINT("---------------sync handle=%x-------------------\n", event->syncHandle); + if(event->syncHandle != 0xFFFF) + { + GAPRole_TerminateSync(event->syncHandle); + } +} + +/********************************************************************* + * @fn Peripheral_LinkTerminated + * + * @brief Process link terminated. + * + * @param pEvent - event to process + * + * @return none + */ +static void Peripheral_LinkTerminated(gapRoleEvent_t *pEvent) +{ + gapTerminateLinkEvent_t *event = (gapTerminateLinkEvent_t *)pEvent; + + if(event->connectionHandle == peripheralConnList.connHandle) + { + peripheralConnList.connHandle = GAP_CONNHANDLE_INIT; + peripheralConnList.connInterval = 0; + peripheralConnList.connSlaveLatency = 0; + peripheralConnList.connTimeout = 0; + tmos_stop_task(Peripheral_TaskID, SBP_PERIODIC_EVT); + tmos_stop_task(Peripheral_TaskID, SBP_READ_RSSI_EVT); + + // Restart advertising + if(!syncHandle) + { + uint8_t advertising_enable = TRUE; + GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &advertising_enable); + } + } + else + { + PRINT("ERR..\n"); + } +} + +/********************************************************************* + * @fn peripheralRssiCB + * + * @brief RSSI callback. + * + * @param connHandle - connection handle + * @param rssi - RSSI + * + * @return none + */ +static void peripheralRssiCB(uint16_t connHandle, int8_t rssi) +{ + PRINT("RSSI -%d dB Conn %x \n", -rssi, connHandle); +} + +/********************************************************************* + * @fn peripheralParamUpdateCB + * + * @brief Parameter update complete callback + * + * @param connHandle - connect handle + * connInterval - connect interval + * connSlaveLatency - connect slave latency + * connTimeout - connect timeout + * + * @return none + */ +static void peripheralParamUpdateCB(uint16_t connHandle, uint16_t connInterval, + uint16_t connSlaveLatency, uint16_t connTimeout) +{ + if(connHandle == peripheralConnList.connHandle) + { + peripheralConnList.connInterval = connInterval; + peripheralConnList.connSlaveLatency = connSlaveLatency; + peripheralConnList.connTimeout = connTimeout; + + PRINT("Update %x - Int %x \n", connHandle, connInterval); + } + else + { + PRINT("ERR..\n"); + } +} + +/********************************************************************* + * @fn peripheralStateNotificationCB + * + * @brief Notification from the profile of a state change. + * + * @param newState - new state + * + * @return none + */ +static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEvent_t *pEvent) +{ + switch(newState & GAPROLE_STATE_ADV_MASK) + { + case GAPROLE_STARTED: + PRINT("Initialized..\n"); + break; + + case GAPROLE_ADVERTISING: + if(pEvent->gap.opcode == GAP_LINK_TERMINATED_EVENT) + { + Peripheral_LinkTerminated(pEvent); + PRINT("Disconnected.. Reason:%x\n", pEvent->linkTerminate.reason); + PRINT("Advertising..\n"); + } + else if(pEvent->gap.opcode == GAP_MAKE_DISCOVERABLE_DONE_EVENT) + { + PRINT("Advertising..\n"); + } + break; + + case GAPROLE_CONNECTED: + if(pEvent->gap.opcode == GAP_LINK_ESTABLISHED_EVENT) + { + Peripheral_LinkEstablished(pEvent); + PRINT("Connected..\n"); + } + break; + + case GAPROLE_CONNECTED_ADV: + if(pEvent->gap.opcode == GAP_MAKE_DISCOVERABLE_DONE_EVENT) + { + PRINT("Connected Advertising..\n"); + } + break; + + case GAPROLE_WAITING: + if(pEvent->gap.opcode == GAP_END_DISCOVERABLE_DONE_EVENT) + { + PRINT("Waiting for advertising..\n"); + } + else if(pEvent->gap.opcode == GAP_LINK_TERMINATED_EVENT) + { + Peripheral_LinkTerminated(pEvent); + PRINT("Disconnected.. Reason:%x\n", pEvent->linkTerminate.reason); + } + else if(pEvent->gap.opcode == GAP_LINK_ESTABLISHED_EVENT) + { + if(pEvent->gap.hdr.status != SUCCESS) + { + PRINT("Waiting for advertising..\n"); + } + else + { + PRINT("Error..\n"); + } + } + else + { + PRINT("Error..%x\n", pEvent->gap.opcode); + } + break; + + case GAPROLE_ERROR: + PRINT("Error..\n"); + break; + + default: + break; + } +} + +/********************************************************************* + * @fn performPeriodicTask + * + * @brief Perform a periodic application task. This function gets + * called every five seconds as a result of the SBP_PERIODIC_EVT + * TMOS event. In this example, the value of the third + * characteristic in the SimpleGATTProfile service is retrieved + * from the profile, and then copied into the value of the + * the fourth characteristic. + * + * @param none + * + * @return none + */ +static void performPeriodicTask(void) +{ + uint8_t notiData[SIMPLEPROFILE_CHAR4_LEN] = {0x88}; + peripheralChar4Notify(notiData, SIMPLEPROFILE_CHAR4_LEN); +} + +/********************************************************************* + * @fn peripheralChar4Notify + * + * @brief Prepare and send simpleProfileChar4 notification + * + * @param pValue - data to notify + * len - length of data + * + * @return none + */ +static void peripheralChar4Notify(uint8_t *pValue, uint16_t len) +{ + attHandleValueNoti_t noti; + if(len > (peripheralMTU - 3)) + { + PRINT("Too large noti\n"); + return; + } + noti.len = len; + noti.pValue = GATT_bm_alloc(peripheralConnList.connHandle, ATT_HANDLE_VALUE_NOTI, noti.len, NULL, 0); + if(noti.pValue) + { + tmos_memcpy(noti.pValue, pValue, noti.len); + if(simpleProfile_Notify(peripheralConnList.connHandle, ¬i) != SUCCESS) + { + GATT_bm_free((gattMsg_t *)¬i, ATT_HANDLE_VALUE_NOTI); + } + } +} + +/********************************************************************* + * @fn simpleProfileChangeCB + * + * @brief Callback from SimpleBLEProfile indicating a value change + * + * @param paramID - parameter ID of the value that was changed. + * pValue - pointer to data that was changed + * len - length of data + * + * @return none + */ +static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len) +{ + switch(paramID) + { + case SIMPLEPROFILE_CHAR1: + { + uint8_t newValue[SIMPLEPROFILE_CHAR1_LEN]; + tmos_memcpy(newValue, pValue, len); + PRINT("profile ChangeCB CHAR1.. \n"); + if(!syncTran) + { + syncTran = 1; + tmos_set_event(Peripheral_TaskID, SBP_SET_SYNC_PARAM); + } + break; + } + + case SIMPLEPROFILE_CHAR3: + { + uint8_t newValue[SIMPLEPROFILE_CHAR3_LEN]; + tmos_memcpy(newValue, pValue, len); + PRINT("profile ChangeCB CHAR3..\n"); + break; + } + + case SIMPLEPROFILE_CHAR4: + { + PRINT("--------- notify enable CHAR4. ------\n"); + break; + } + default: + // should not reach here! + break; + } +} + +/********************************************************************* +*********************************************************************/ diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_sync.c b/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_sync.c new file mode 100644 index 0000000..e279c9b --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/rsp_sync.c @@ -0,0 +1,199 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : rsp_sync.C + * Author : WCH + * Version : V1.0 + * Date : 2018/12/10 + * Description : ESLSync + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "CONFIG.h" +#include "hal.h" +#include "rsp.h" + +/********************************************************************* + * MACROS + */ + +#define PAWR_SUBEVENT_NUM 4 +#define PAWR_RESPOSE_COUNT 16 +#define PAWR_DATALEN_MAX 10 + +/********************************************************************* + * LOCAL VARIABLES + */ + +// Task ID for internal task/event processing +static uint8_t Sync_TaskId; +uint16_t syncHandle = 0; +uint8_t pawrRspData[PAWR_SUBEVENT_NUM][PAWR_DATALEN_MAX]; + +/********************************************************************* + * LOCAL FUNCTIONS + */ +uint16_t Central_ProcessEvent(uint8_t task_id, uint16_t events); +static void simpleBLECentralEventCB(gapRoleEvent_t *pEvent); + +/********************************************************************* + * PROFILE CALLBACKS + */ + +// GAP Role Callbacks +static const gapCentralRoleCB_t simpleBLERoleCB = { + NULL, // RSSI callback + simpleBLECentralEventCB, // Event callback + NULL +}; + +/********************************************************************* + * @fn Central_Init + * + * @brief Initialization function for the Simple BLE Central App Task. + * This is called during initialization and should contain + * any application specific initialization (ie. hardware + * initialization/setup, table initialization, power up + * notification). + * + * @param task_id - the ID assigned by TMOS. This ID should be + * used to send messages and set timers. + * + * @return none + */ +void Sync_Init(void) +{ + Sync_TaskId = TMOS_ProcessEventRegister(Central_ProcessEvent); + // { + // // Setup scan GAP + // GAP_SetParamValue( TGAP_DISC_SCAN_DURATION, 200 ); + // + // GAP_SetParamValue( TGAP_DISC_SCAN_INT, 32 ); + // GAP_SetParamValue( TGAP_DISC_SCAN_WIND, 32 ); + // GAP_SetParamValue( TGAP_DISC_SCAN_CODED_INT, 32 ); + // GAP_SetParamValue( TGAP_DISC_SCAN_CODED_WIND, 32 ); + // GAP_SetParamValue( TGAP_DISC_SCAN_PHY, GAP_PHY_BIT_LE_1M|GAP_PHY_BIT_LE_CODED ); + // } + // Setup a delayed profile startup + tmos_set_event(Sync_TaskId, SBP_START_DEVICE_EVT); +} + +/********************************************************************* + * @fn Central_ProcessEvent + * + * @brief Simple BLE Central Application Task event processor. This function + * is called to process all events for the task. Events + * include timers, messages and any other user defined events. + * + * @param task_id - The TMOS assigned task ID. + * @param events - events to process. This is a bit map and can + * contain more than one event. + * + * @return events not processed + */ +uint16_t Central_ProcessEvent(uint8_t task_id, uint16_t events) +{ + if(events & SYS_EVENT_MSG) + { + uint8_t *pMsg; + + if((pMsg = tmos_msg_receive(Sync_TaskId)) != NULL) + { + // Release the TMOS message + tmos_msg_deallocate(pMsg); + } + // return unprocessed events + return (events ^ SYS_EVENT_MSG); + } + + if(events & SBP_START_DEVICE_EVT) + { + // Start the Device + PRINT("start device-%X.\n", + GAPRole_CentralStartDevice(Sync_TaskId, NULL, (gapCentralRoleCB_t *)&simpleBLERoleCB)); + return (events ^ SBP_START_DEVICE_EVT); + } + return 0; +} + +/********************************************************************* + * @fn simpleBLECentralEventCB + * + * @brief Central event callback function. + * + * @param pEvent - pointer to event structure + * + * @return none + */ +static void simpleBLECentralEventCB(gapRoleEvent_t *pEvent) +{ + switch(pEvent->gap.opcode) + { + case GAP_SYNC_ESTABLISHED_EVENT: + { + PRINT("status=%x\n", pEvent->syncEstEvt.status); + if(!pEvent->syncEstEvt.status) + { + syncHandle = pEvent->syncEstEvt.syncHandle; + PRINT("sync established:%x\n", syncHandle); + } + break; + } + + case GAP_PERIODIC_ADV_DEVICE_INFO_EVENT: + { + PRINT("sync report.%d\n", pEvent->devicePeriodicInfo.syncHandle); + PRINT("tx power:%d\n", pEvent->devicePeriodicInfo.txPower); + PRINT("dataStatus:%d\n", pEvent->devicePeriodicInfo.dataStatus); + PRINT("data len:%d\n", pEvent->devicePeriodicInfo.dataLength); + for(int i = 0; i < pEvent->devicePeriodicInfo.dataLength && i < 16; i++) + { + PRINT("%2x ", pEvent->devicePeriodicInfo.pEvtData[i]); + } + PRINT("\n"); + if(pEvent->devicePeriodicInfo.subevent != 0xFF) + { + if(!(pEvent->devicePeriodicInfo.eventCounter % 1) && pEvent->devicePeriodicInfo.subevent == 0) + { + gapPawrSetResponseData_t parm; + + parm.syncHandle = syncHandle; + parm.reqEvent = pEvent->devicePeriodicInfo.eventCounter; + parm.reqSubevent = pEvent->devicePeriodicInfo.subevent; + parm.rspSubevent = 1; + parm.rspSlot = 5; + parm.rspDataLength = 4; + for(int i = 0; i < parm.rspDataLength; i++) + { + pawrRspData[parm.rspSlot][i] = parm.rspSlot + i; + } + parm.pRspData = pawrRspData[parm.rspSlot]; + GAPPawr_SetResponseData(&parm); + PRINT("set response data:%d\n", parm.rspDataLength); + } + } + break; + } + + case GAP_SYNC_LOST_EVENT: + { + syncHandle = 0; + PRINT("sync lost:%x\n", pEvent->syncLostEvt.syncHandle); + if(peripheralConnList.connHandle == GAP_CONNHANDLE_INIT) + { + uint8_t advertising_enable = TRUE; + GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &advertising_enable); + } + break; + } + + default: + break; + } +} + +/************************ endfile @ sync **************************/ diff --git a/EVT/EXAM/BLE/PAwR_RSP/APP/system_ch32v20x.c b/EVT/EXAM/BLE/PAwR_RSP/APP/system_ch32v20x.c new file mode 100644 index 0000000..f4110b2 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/APP/system_ch32v20x.c @@ -0,0 +1,989 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : system_ch32v20x.c + * Author : WCH + * Version : V1.0.0 + * Date : 2021/06/06 + * Description : CH32V20x Device Peripheral Access Layer System Source File. + * For HSE = 32Mhz (CH32V208x/CH32V203RBT6) + * For HSE = 8Mhz (other CH32V203x) + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ +#include "ch32v20x.h" + +/* +* Uncomment the line corresponding to the desired System clock (SYSCLK) frequency (after +* reset the HSI is used as SYSCLK source). +* If none of the define below is enabled, the HSI is used as System clock source. +*/ +//#define SYSCLK_FREQ_HSE HSE_VALUE +//#define SYSCLK_FREQ_48MHz_HSE 48000000 +//#define SYSCLK_FREQ_56MHz_HSE 56000000 +//#define SYSCLK_FREQ_72MHz_HSE 72000000 +#define SYSCLK_FREQ_96MHz_HSE 96000000 +//#define SYSCLK_FREQ_120MHz_HSE 120000000 +//#define SYSCLK_FREQ_144MHz_HSE 144000000 +//#define SYSCLK_FREQ_HSI HSI_VALUE +//#define SYSCLK_FREQ_48MHz_HSI 48000000 +//#define SYSCLK_FREQ_56MHz_HSI 56000000 +//#define SYSCLK_FREQ_72MHz_HSI 72000000 +//#define SYSCLK_FREQ_96MHz_HSI 96000000 +//#define SYSCLK_FREQ_120MHz_HSI 120000000 +//#define SYSCLK_FREQ_144MHz_HSI 144000000 + +/* Clock Definitions */ +#ifdef SYSCLK_FREQ_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_96MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_96MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSI; /* System Clock Frequency (Core Clock) */ +#else +uint32_t SystemCoreClock = HSI_VALUE; /* System Clock Frequency (Core Clock) */ + +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + + +/* system_private_function_proto_types */ +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE +static void SetSysClockToHSE( void ); +#elif defined SYSCLK_FREQ_48MHz_HSE +static void SetSysClockTo48_HSE( void ); +#elif defined SYSCLK_FREQ_56MHz_HSE +static void SetSysClockTo56_HSE( void ); +#elif defined SYSCLK_FREQ_72MHz_HSE +static void SetSysClockTo72_HSE( void ); +#elif defined SYSCLK_FREQ_96MHz_HSE +static void SetSysClockTo96_HSE( void ); +#elif defined SYSCLK_FREQ_120MHz_HSE +static void SetSysClockTo120_HSE( void ); +#elif defined SYSCLK_FREQ_144MHz_HSE +static void SetSysClockTo144_HSE( void ); +#elif defined SYSCLK_FREQ_48MHz_HSI +static void SetSysClockTo48_HSI( void ); +#elif defined SYSCLK_FREQ_56MHz_HSI +static void SetSysClockTo56_HSI( void ); +#elif defined SYSCLK_FREQ_72MHz_HSI +static void SetSysClockTo72_HSI( void ); +#elif defined SYSCLK_FREQ_96MHz_HSI +static void SetSysClockTo96_HSI( void ); +#elif defined SYSCLK_FREQ_120MHz_HSI +static void SetSysClockTo120_HSI( void ); +#elif defined SYSCLK_FREQ_144MHz_HSI +static void SetSysClockTo144_HSI( void ); + +#endif + +/********************************************************************* + * @fn SystemInit + * + * @brief Setup the microcontroller system Initialize the Embedded Flash Interface, + * the PLL and update the SystemCoreClock variable. + * + * @return none + */ +void SystemInit (void) +{ + RCC->CTLR |= (uint32_t)0x00000001; + RCC->CFGR0 &= (uint32_t)0xF8FF0000; + RCC->CTLR &= (uint32_t)0xFEF6FFFF; + RCC->CTLR &= (uint32_t)0xFFFBFFFF; + RCC->CFGR0 &= (uint32_t)0xFF80FFFF; + RCC->INTR = 0x009F0000; + SetSysClock(); +} + + +/********************************************************************* + * @fn SystemCoreClockUpdate + * + * @brief Update SystemCoreClock variable according to Clock Register Values. + * + * @return none + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0, Pll_6_5 = 0; + + tmp = RCC->CFGR0 & RCC_SWS; + + switch (tmp) + { + case 0x00: + SystemCoreClock = HSI_VALUE; + break; + case 0x04: + SystemCoreClock = HSE_VALUE; + break; + case 0x08: + pllmull = RCC->CFGR0 & RCC_PLLMULL; + pllsource = RCC->CFGR0 & RCC_PLLSRC; + pllmull = ( pllmull >> 18) + 2; + + if(pllmull == 17) pllmull = 18; + + if (pllsource == 0x00) + { + if(EXTEN->EXTEN_CTR & EXTEN_PLL_HSI_PRE){ + SystemCoreClock = HSI_VALUE * pllmull; + } + else{ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + } + else + { +#if defined (CH32V20x_D8W) + if((RCC->CFGR0 & (3<<22)) == (3<<22)) + { + SystemCoreClock = ((HSE_VALUE>>1)) * pllmull; + } + else +#endif + if ((RCC->CFGR0 & RCC_PLLXTPRE) != (uint32_t)RESET) + { +#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) + SystemCoreClock = ((HSE_VALUE>>2) >> 1) * pllmull; +#else + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; +#endif + } + else + { +#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) + SystemCoreClock = (HSE_VALUE>>2) * pllmull; +#else + SystemCoreClock = HSE_VALUE * pllmull; +#endif + } + } + + if(Pll_6_5 == 1) SystemCoreClock = (SystemCoreClock / 2); + + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + + tmp = AHBPrescTable[((RCC->CFGR0 & RCC_HPRE) >> 4)]; + SystemCoreClock >>= tmp; +} + +/********************************************************************* + * @fn SetSysClock + * + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_48MHz_HSE + SetSysClockTo48_HSE(); +#elif defined SYSCLK_FREQ_56MHz_HSE + SetSysClockTo56_HSE(); +#elif defined SYSCLK_FREQ_72MHz_HSE + SetSysClockTo72_HSE(); +#elif defined SYSCLK_FREQ_96MHz_HSE + SetSysClockTo96_HSE(); +#elif defined SYSCLK_FREQ_120MHz_HSE + SetSysClockTo120_HSE(); +#elif defined SYSCLK_FREQ_144MHz_HSE + SetSysClockTo144_HSE(); +#elif defined SYSCLK_FREQ_48MHz_HSI + SetSysClockTo48_HSI(); +#elif defined SYSCLK_FREQ_56MHz_HSI + SetSysClockTo56_HSI(); +#elif defined SYSCLK_FREQ_72MHz_HSI + SetSysClockTo72_HSI(); +#elif defined SYSCLK_FREQ_96MHz_HSI + SetSysClockTo96_HSI(); +#elif defined SYSCLK_FREQ_120MHz_HSI + SetSysClockTo120_HSI(); +#elif defined SYSCLK_FREQ_144MHz_HSI + SetSysClockTo144_HSI(); + +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + * source (default after reset) + */ +} + + +#ifdef SYSCLK_FREQ_HSE + +/********************************************************************* + * @fn SetSysClockToHSE + * + * @brief Sets HSE as System clock source and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV1; + + /* Select HSE as system clock source + * CH32V20x_D6 (HSE=8MHZ) + * CH32V20x_D8 (HSE=32MHZ) + * CH32V20x_D8W (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x04) + { + } + } + else + { + /* If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo48_HSE + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 6 = 48 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 6 = 48 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 6 = 48 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL6); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_56MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo56_HSE + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 7 = 56 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 7 = 56 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 7 = 56 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL7); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_72MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo72_HSE + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 9 = 72 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 9 = 72 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 9 = 72 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL9); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_96MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo96_HSE + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 12 = 96 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 12 = 96 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 12 = 96 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL12); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_120MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo120_HSE + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if(HSEStatus == (uint32_t)0x01) + { +#if defined (CH32V20x_D8W) + RCC->CFGR0 |= (uint32_t)(3<<22); + /* HCLK = SYSCLK/2 */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV2; +#else + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; +#endif + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 15 = 120 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 15 = 120 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/2 * 15 = 240 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL15); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} +#elif defined SYSCLK_FREQ_144MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo144_HSE + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 18 = 144 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 18 = 144 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 18 = 144 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo48_HSI + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 6 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL6); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + +#elif defined SYSCLK_FREQ_56MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo56_HSI + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 7 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL7); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + +#elif defined SYSCLK_FREQ_72MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo72_HSI + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 9 = 72 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL9); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#elif defined SYSCLK_FREQ_96MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo96_HSI + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 12 = 96 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL12); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#elif defined SYSCLK_FREQ_120MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo120_HSI + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 15 = 120 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL15); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} +#elif defined SYSCLK_FREQ_144MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo144_HSI + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 18 = 144 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL18); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#endif diff --git a/EVT/EXAM/BLE/PAwR_RSP/PAwR_RSP.wvproj b/EVT/EXAM/BLE/PAwR_RSP/PAwR_RSP.wvproj new file mode 100644 index 0000000..02d84e6 Binary files /dev/null and b/EVT/EXAM/BLE/PAwR_RSP/PAwR_RSP.wvproj differ diff --git a/EVT/EXAM/BLE/PAwR_RSP/Profile/devinfoservice.c b/EVT/EXAM/BLE/PAwR_RSP/Profile/devinfoservice.c new file mode 100644 index 0000000..3d501d5 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/Profile/devinfoservice.c @@ -0,0 +1,589 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : devinfoservice.c + * Author : WCH + * Version : V1.0 + * Date : 2018/12/10 + * Description : Device information service + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "CONFIG.h" +#include "devinfoservice.h" + +/********************************************************************* + * MACROS + */ + +/********************************************************************* + * CONSTANTS + */ + +/********************************************************************* + * TYPEDEFS + */ + +/********************************************************************* + * GLOBAL VARIABLES + */ +// Device information service +const uint8_t devInfoServUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(DEVINFO_SERV_UUID), HI_UINT16(DEVINFO_SERV_UUID)}; + +// System ID +const uint8_t devInfoSystemIdUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SYSTEM_ID_UUID), HI_UINT16(SYSTEM_ID_UUID)}; + +// Model Number String +const uint8_t devInfoModelNumberUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(MODEL_NUMBER_UUID), HI_UINT16(MODEL_NUMBER_UUID)}; + +// Serial Number String +const uint8_t devInfoSerialNumberUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SERIAL_NUMBER_UUID), HI_UINT16(SERIAL_NUMBER_UUID)}; + +// Firmware Revision String +const uint8_t devInfoFirmwareRevUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(FIRMWARE_REV_UUID), HI_UINT16(FIRMWARE_REV_UUID)}; + +// Hardware Revision String +const uint8_t devInfoHardwareRevUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(HARDWARE_REV_UUID), HI_UINT16(HARDWARE_REV_UUID)}; + +// Software Revision String +const uint8_t devInfoSoftwareRevUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SOFTWARE_REV_UUID), HI_UINT16(SOFTWARE_REV_UUID)}; + +// Manufacturer Name String +const uint8_t devInfoMfrNameUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(MANUFACTURER_NAME_UUID), HI_UINT16(MANUFACTURER_NAME_UUID)}; + +// IEEE 11073-20601 Regulatory Certification Data List +const uint8_t devInfo11073CertUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(IEEE_11073_CERT_DATA_UUID), HI_UINT16(IEEE_11073_CERT_DATA_UUID)}; + +// PnP ID +const uint8_t devInfoPnpIdUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(PNP_ID_UUID), HI_UINT16(PNP_ID_UUID)}; + +/********************************************************************* + * EXTERNAL VARIABLES + */ + +/********************************************************************* + * EXTERNAL FUNCTIONS + */ + +/********************************************************************* + * LOCAL VARIABLES + */ + +/********************************************************************* + * Profile Attributes - variables + */ + +// Device Information Service attribute +static const gattAttrType_t devInfoService = {ATT_BT_UUID_SIZE, devInfoServUUID}; + +// System ID characteristic +static uint8_t devInfoSystemIdProps = GATT_PROP_READ; +static uint8_t devInfoSystemId[DEVINFO_SYSTEM_ID_LEN] = {0, 0, 0, 0, 0, 0, 0, 0}; + +// Model Number String characteristic +static uint8_t devInfoModelNumberProps = GATT_PROP_READ; +static const uint8_t devInfoModelNumber[] = "Model Number"; + +// Serial Number String characteristic +static uint8_t devInfoSerialNumberProps = GATT_PROP_READ; +static const uint8_t devInfoSerialNumber[] = "Serial Number"; + +// Firmware Revision String characteristic +static uint8_t devInfoFirmwareRevProps = GATT_PROP_READ; +static const uint8_t devInfoFirmwareRev[] = "Firmware Revision"; + +// Hardware Revision String characteristic +static uint8_t devInfoHardwareRevProps = GATT_PROP_READ; +static const uint8_t devInfoHardwareRev[] = "Hardware Revision"; + +// Software Revision String characteristic +static uint8_t devInfoSoftwareRevProps = GATT_PROP_READ; +static const uint8_t devInfoSoftwareRev[] = "Software Revision"; + +// Manufacturer Name String characteristic +static uint8_t devInfoMfrNameProps = GATT_PROP_READ; +static const uint8_t devInfoMfrName[] = "Manufacturer Name"; + +// IEEE 11073-20601 Regulatory Certification Data List characteristic +static uint8_t devInfo11073CertProps = GATT_PROP_READ; +static const uint8_t devInfo11073Cert[] = { + DEVINFO_11073_BODY_EXP, // authoritative body type + 0x00, // authoritative body structure type + // authoritative body data follows below: + 'e', 'x', 'p', 'e', 'r', 'i', 'm', 'e', 'n', 't', 'a', 'l'}; + +// System ID characteristic +static uint8_t devInfoPnpIdProps = GATT_PROP_READ; +static uint8_t devInfoPnpId[DEVINFO_PNP_ID_LEN] = { + 1, // Vendor ID source (1=Bluetooth SIG) + LO_UINT16(0x07D7), HI_UINT16(0x07D7), // Vendor ID (WCH) + LO_UINT16(0x0000), HI_UINT16(0x0000), // Product ID (vendor-specific) + LO_UINT16(0x0110), HI_UINT16(0x0110) // Product version (JJ.M.N) +}; + +/********************************************************************* + * Profile Attributes - Table + */ + +static gattAttribute_t devInfoAttrTbl[] = { + // Device Information Service + { + {ATT_BT_UUID_SIZE, primaryServiceUUID}, /* type */ + GATT_PERMIT_READ, /* permissions */ + 0, /* handle */ + (uint8_t *)&devInfoService /* pValue */ + }, + + // System ID Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfoSystemIdProps}, + + // System ID Value + { + {ATT_BT_UUID_SIZE, devInfoSystemIdUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfoSystemId}, + + // Model Number String Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfoModelNumberProps}, + + // Model Number Value + { + {ATT_BT_UUID_SIZE, devInfoModelNumberUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfoModelNumber}, + + // Serial Number String Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfoSerialNumberProps}, + + // Serial Number Value + { + {ATT_BT_UUID_SIZE, devInfoSerialNumberUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfoSerialNumber}, + + // Firmware Revision String Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfoFirmwareRevProps}, + + // Firmware Revision Value + { + {ATT_BT_UUID_SIZE, devInfoFirmwareRevUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfoFirmwareRev}, + + // Hardware Revision String Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfoHardwareRevProps}, + + // Hardware Revision Value + { + {ATT_BT_UUID_SIZE, devInfoHardwareRevUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfoHardwareRev}, + + // Software Revision String Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfoSoftwareRevProps}, + + // Software Revision Value + { + {ATT_BT_UUID_SIZE, devInfoSoftwareRevUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfoSoftwareRev}, + + // Manufacturer Name String Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfoMfrNameProps}, + + // Manufacturer Name Value + { + {ATT_BT_UUID_SIZE, devInfoMfrNameUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfoMfrName}, + + // IEEE 11073-20601 Regulatory Certification Data List Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfo11073CertProps}, + + // IEEE 11073-20601 Regulatory Certification Data List Value + { + {ATT_BT_UUID_SIZE, devInfo11073CertUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfo11073Cert}, + + // PnP ID Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &devInfoPnpIdProps}, + + // PnP ID Value + { + {ATT_BT_UUID_SIZE, devInfoPnpIdUUID}, + GATT_PERMIT_READ, + 0, + (uint8_t *)devInfoPnpId} +}; + +/********************************************************************* + * LOCAL FUNCTIONS + */ +static bStatus_t devInfo_ReadAttrCB(uint16_t connHandle, gattAttribute_t *pAttr, + uint8_t *pValue, uint16_t *pLen, uint16_t offset, uint16_t maxLen, uint8_t method); + +/********************************************************************* + * PROFILE CALLBACKS + */ +// Device Info Service Callbacks +gattServiceCBs_t devInfoCBs = { + devInfo_ReadAttrCB, // Read callback function pointer + NULL, // Write callback function pointer + NULL // Authorization callback function pointer +}; + +/********************************************************************* + * NETWORK LAYER CALLBACKS + */ + +/********************************************************************* + * PUBLIC FUNCTIONS + */ + +/********************************************************************* + * @fn DevInfo_AddService + * + * @brief Initializes the Device Information service by registering + * GATT attributes with the GATT server. + * + * @return Success or Failure + */ +bStatus_t DevInfo_AddService(void) +{ + // Register GATT attribute list and CBs with GATT Server App + return GATTServApp_RegisterService(devInfoAttrTbl, + GATT_NUM_ATTRS(devInfoAttrTbl), + GATT_MAX_ENCRYPT_KEY_SIZE, + &devInfoCBs); +} + +/********************************************************************* + * @fn DevInfo_SetParameter + * + * @brief Set a Device Information parameter. + * + * @param param - Profile parameter ID + * @param len - length of data to write + * @param value - pointer to data to write. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + * + * @return bStatus_t + */ +bStatus_t DevInfo_SetParameter(uint8_t param, uint16_t len, void *value) +{ + bStatus_t ret = SUCCESS; + + switch(param) + { + case DEVINFO_SYSTEM_ID: + tmos_memcpy(devInfoSystemId, value, len); + break; + + default: + ret = INVALIDPARAMETER; + break; + } + + return (ret); +} + +/********************************************************************* + * @fn DevInfo_GetParameter + * + * @brief Get a Device Information parameter. + * + * @param param - Profile parameter ID + * @param value - pointer to data to get. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + * + * @return bStatus_t + */ +bStatus_t DevInfo_GetParameter(uint8_t param, void *value) +{ + bStatus_t ret = SUCCESS; + + switch(param) + { + case DEVINFO_SYSTEM_ID: + tmos_memcpy(value, devInfoSystemId, sizeof(devInfoSystemId)); + break; + + case DEVINFO_MODEL_NUMBER: + tmos_memcpy(value, devInfoModelNumber, sizeof(devInfoModelNumber)); + break; + case DEVINFO_SERIAL_NUMBER: + tmos_memcpy(value, devInfoSerialNumber, sizeof(devInfoSerialNumber)); + break; + + case DEVINFO_FIRMWARE_REV: + tmos_memcpy(value, devInfoFirmwareRev, sizeof(devInfoFirmwareRev)); + break; + + case DEVINFO_HARDWARE_REV: + tmos_memcpy(value, devInfoHardwareRev, sizeof(devInfoHardwareRev)); + break; + + case DEVINFO_SOFTWARE_REV: + tmos_memcpy(value, devInfoSoftwareRev, sizeof(devInfoSoftwareRev)); + break; + + case DEVINFO_MANUFACTURER_NAME: + tmos_memcpy(value, devInfoMfrName, sizeof(devInfoMfrName)); + break; + + case DEVINFO_11073_CERT_DATA: + tmos_memcpy(value, devInfo11073Cert, sizeof(devInfo11073Cert)); + break; + + case DEVINFO_PNP_ID: + tmos_memcpy(value, devInfoPnpId, sizeof(devInfoPnpId)); + break; + + default: + ret = INVALIDPARAMETER; + break; + } + + return (ret); +} + +/********************************************************************* + * @fn devInfo_ReadAttrCB + * + * @brief Read an attribute. + * + * @param connHandle - connection message was received on + * @param pAttr - pointer to attribute + * @param pValue - pointer to data to be read + * @param pLen - length of data to be read + * @param offset - offset of the first octet to be read + * @param maxLen - maximum length of data to be read + * + * @return Success or Failure + */ +static bStatus_t devInfo_ReadAttrCB(uint16_t connHandle, gattAttribute_t *pAttr, + uint8_t *pValue, uint16_t *pLen, uint16_t offset, uint16_t maxLen, uint8_t method) +{ + bStatus_t status = SUCCESS; + uint16_t uuid = BUILD_UINT16(pAttr->type.uuid[0], pAttr->type.uuid[1]); + + switch(uuid) + { + case SYSTEM_ID_UUID: + // verify offset + if(offset >= sizeof(devInfoSystemId)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length + *pLen = MIN(maxLen, (sizeof(devInfoSystemId) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfoSystemId[offset], *pLen); + } + break; + + case MODEL_NUMBER_UUID: + // verify offset + if(offset >= (sizeof(devInfoModelNumber) - 1)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length (exclude null terminating character) + *pLen = MIN(maxLen, ((sizeof(devInfoModelNumber) - 1) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfoModelNumber[offset], *pLen); + } + break; + + case SERIAL_NUMBER_UUID: + // verify offset + if(offset >= (sizeof(devInfoSerialNumber) - 1)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length (exclude null terminating character) + *pLen = MIN(maxLen, ((sizeof(devInfoSerialNumber) - 1) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfoSerialNumber[offset], *pLen); + } + break; + + case FIRMWARE_REV_UUID: + // verify offset + if(offset >= (sizeof(devInfoFirmwareRev) - 1)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length (exclude null terminating character) + *pLen = MIN(maxLen, ((sizeof(devInfoFirmwareRev) - 1) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfoFirmwareRev[offset], *pLen); + } + break; + + case HARDWARE_REV_UUID: + // verify offset + if(offset >= (sizeof(devInfoHardwareRev) - 1)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length (exclude null terminating character) + *pLen = MIN(maxLen, ((sizeof(devInfoHardwareRev) - 1) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfoHardwareRev[offset], *pLen); + } + break; + + case SOFTWARE_REV_UUID: + // verify offset + if(offset >= (sizeof(devInfoSoftwareRev) - 1)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length (exclude null terminating character) + *pLen = MIN(maxLen, ((sizeof(devInfoSoftwareRev) - 1) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfoSoftwareRev[offset], *pLen); + } + break; + + case MANUFACTURER_NAME_UUID: + // verify offset + if(offset >= (sizeof(devInfoMfrName) - 1)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length (exclude null terminating character) + *pLen = MIN(maxLen, ((sizeof(devInfoMfrName) - 1) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfoMfrName[offset], *pLen); + } + break; + + case IEEE_11073_CERT_DATA_UUID: + // verify offset + if(offset >= sizeof(devInfo11073Cert)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length + *pLen = MIN(maxLen, (sizeof(devInfo11073Cert) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfo11073Cert[offset], *pLen); + } + break; + + case PNP_ID_UUID: + // verify offset + if(offset >= sizeof(devInfoPnpId)) + { + status = ATT_ERR_INVALID_OFFSET; + } + else + { + // determine read length + *pLen = MIN(maxLen, (sizeof(devInfoPnpId) - offset)); + + // copy data + tmos_memcpy(pValue, &devInfoPnpId[offset], *pLen); + } + break; + + default: + *pLen = 0; + status = ATT_ERR_ATTR_NOT_FOUND; + break; + } + + return (status); +} + +/********************************************************************* +*********************************************************************/ diff --git a/EVT/EXAM/BLE/PAwR_RSP/Profile/gattprofile.c b/EVT/EXAM/BLE/PAwR_RSP/Profile/gattprofile.c new file mode 100644 index 0000000..6e166ed --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/Profile/gattprofile.c @@ -0,0 +1,731 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : gattprofile.C + * Author : WCH + * Version : V1.0 + * Date : 2018/12/10 + * Description : Customize services with five different attributes, + * including readable, writable, notification, + * readable and writable, and safe readable + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "CONFIG.h" +#include "gattprofile.h" + +/********************************************************************* + * MACROS + */ + +/********************************************************************* + * CONSTANTS + */ + +// Position of simpleProfilechar4 value in attribute array +#define SIMPLEPROFILE_CHAR4_VALUE_POS 11 + +/********************************************************************* + * TYPEDEFS + */ + +/********************************************************************* + * GLOBAL VARIABLES + */ +// Simple GATT Profile Service UUID: 0xFFF0 +const uint8_t simpleProfileServUUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SIMPLEPROFILE_SERV_UUID), HI_UINT16(SIMPLEPROFILE_SERV_UUID)}; + +// Characteristic 1 UUID: 0xFFF1 +const uint8_t simpleProfilechar1UUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SIMPLEPROFILE_CHAR1_UUID), HI_UINT16(SIMPLEPROFILE_CHAR1_UUID)}; + +// Characteristic 2 UUID: 0xFFF2 +const uint8_t simpleProfilechar2UUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SIMPLEPROFILE_CHAR2_UUID), HI_UINT16(SIMPLEPROFILE_CHAR2_UUID)}; + +// Characteristic 3 UUID: 0xFFF3 +const uint8_t simpleProfilechar3UUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SIMPLEPROFILE_CHAR3_UUID), HI_UINT16(SIMPLEPROFILE_CHAR3_UUID)}; + +// Characteristic 4 UUID: 0xFFF4 +const uint8_t simpleProfilechar4UUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SIMPLEPROFILE_CHAR4_UUID), HI_UINT16(SIMPLEPROFILE_CHAR4_UUID)}; + +// Characteristic 5 UUID: 0xFFF5 +const uint8_t simpleProfilechar5UUID[ATT_BT_UUID_SIZE] = { + LO_UINT16(SIMPLEPROFILE_CHAR5_UUID), HI_UINT16(SIMPLEPROFILE_CHAR5_UUID)}; + +/********************************************************************* + * EXTERNAL VARIABLES + */ + +/********************************************************************* + * EXTERNAL FUNCTIONS + */ + +/********************************************************************* + * LOCAL VARIABLES + */ + +static simpleProfileCBs_t *simpleProfile_AppCBs = NULL; + +/********************************************************************* + * Profile Attributes - variables + */ + +// Simple Profile Service attribute +static const gattAttrType_t simpleProfileService = {ATT_BT_UUID_SIZE, simpleProfileServUUID}; + +// Simple Profile Characteristic 1 Properties +static uint8_t simpleProfileChar1Props = GATT_PROP_READ | GATT_PROP_WRITE; + +// Characteristic 1 Value +static uint8_t simpleProfileChar1[SIMPLEPROFILE_CHAR1_LEN] = {0}; + +// Simple Profile Characteristic 1 User Description +static uint8_t simpleProfileChar1UserDesp[] = "Characteristic 1\0"; + +// Simple Profile Characteristic 2 Properties +static uint8_t simpleProfileChar2Props = GATT_PROP_READ; + +// Characteristic 2 Value +static uint8_t simpleProfileChar2[SIMPLEPROFILE_CHAR2_LEN] = {0}; + +// Simple Profile Characteristic 2 User Description +static uint8_t simpleProfileChar2UserDesp[] = "Characteristic 2\0"; + +// Simple Profile Characteristic 3 Properties +static uint8_t simpleProfileChar3Props = GATT_PROP_WRITE; + +// Characteristic 3 Value +static uint8_t simpleProfileChar3[SIMPLEPROFILE_CHAR3_LEN] = {0}; + +// Simple Profile Characteristic 3 User Description +static uint8_t simpleProfileChar3UserDesp[] = "Characteristic 3\0"; + +// Simple Profile Characteristic 4 Properties +static uint8_t simpleProfileChar4Props = GATT_PROP_NOTIFY; + +// Characteristic 4 Value +static uint8_t simpleProfileChar4[SIMPLEPROFILE_CHAR4_LEN] = {0}; + +// Simple Profile Characteristic 4 Configuration Each client has its own +// instantiation of the Client Characteristic Configuration. Reads of the +// Client Characteristic Configuration only shows the configuration for +// that client and writes only affect the configuration of that client. +static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION]; + +// Simple Profile Characteristic 4 User Description +static uint8_t simpleProfileChar4UserDesp[] = "Characteristic 4\0"; + +// Simple Profile Characteristic 5 Properties +static uint8_t simpleProfileChar5Props = GATT_PROP_READ; + +// Characteristic 5 Value +static uint8_t simpleProfileChar5[SIMPLEPROFILE_CHAR5_LEN] = {0}; + +// Simple Profile Characteristic 5 User Description +static uint8_t simpleProfileChar5UserDesp[] = "Characteristic 5\0"; + +/********************************************************************* + * Profile Attributes - Table + */ + +static gattAttribute_t simpleProfileAttrTbl[] = { + // Simple Profile Service + { + {ATT_BT_UUID_SIZE, primaryServiceUUID}, /* type */ + GATT_PERMIT_READ, /* permissions */ + 0, /* handle */ + (uint8_t *)&simpleProfileService /* pValue */ + }, + + // Characteristic 1 Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &simpleProfileChar1Props}, + + // Characteristic Value 1 + { + {ATT_BT_UUID_SIZE, simpleProfilechar1UUID}, + GATT_PERMIT_READ | GATT_PERMIT_WRITE, + 0, + simpleProfileChar1}, + + // Characteristic 1 User Description + { + {ATT_BT_UUID_SIZE, charUserDescUUID}, + GATT_PERMIT_READ, + 0, + simpleProfileChar1UserDesp}, + + // Characteristic 2 Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &simpleProfileChar2Props}, + + // Characteristic Value 2 + { + {ATT_BT_UUID_SIZE, simpleProfilechar2UUID}, + GATT_PERMIT_READ, + 0, + simpleProfileChar2}, + + // Characteristic 2 User Description + { + {ATT_BT_UUID_SIZE, charUserDescUUID}, + GATT_PERMIT_READ, + 0, + simpleProfileChar2UserDesp}, + + // Characteristic 3 Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &simpleProfileChar3Props}, + + // Characteristic Value 3 + { + {ATT_BT_UUID_SIZE, simpleProfilechar3UUID}, + GATT_PERMIT_WRITE, + 0, + simpleProfileChar3}, + + // Characteristic 3 User Description + { + {ATT_BT_UUID_SIZE, charUserDescUUID}, + GATT_PERMIT_READ, + 0, + simpleProfileChar3UserDesp}, + + // Characteristic 4 Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &simpleProfileChar4Props}, + + // Characteristic Value 4 + { + {ATT_BT_UUID_SIZE, simpleProfilechar4UUID}, + 0, + 0, + simpleProfileChar4}, + + // Characteristic 4 configuration + { + {ATT_BT_UUID_SIZE, clientCharCfgUUID}, + GATT_PERMIT_READ | GATT_PERMIT_WRITE, + 0, + (uint8_t *)simpleProfileChar4Config}, + + // Characteristic 4 User Description + { + {ATT_BT_UUID_SIZE, charUserDescUUID}, + GATT_PERMIT_READ, + 0, + simpleProfileChar4UserDesp}, + + // Characteristic 5 Declaration + { + {ATT_BT_UUID_SIZE, characterUUID}, + GATT_PERMIT_READ, + 0, + &simpleProfileChar5Props}, + + // Characteristic Value 5 + { + {ATT_BT_UUID_SIZE, simpleProfilechar5UUID}, + GATT_PERMIT_AUTHEN_READ, + 0, + simpleProfileChar5}, + + // Characteristic 5 User Description + { + {ATT_BT_UUID_SIZE, charUserDescUUID}, + GATT_PERMIT_READ, + 0, + simpleProfileChar5UserDesp}, +}; + +/********************************************************************* + * LOCAL FUNCTIONS + */ +static bStatus_t simpleProfile_ReadAttrCB(uint16_t connHandle, gattAttribute_t *pAttr, + uint8_t *pValue, uint16_t *pLen, uint16_t offset, uint16_t maxLen, uint8_t method); +static bStatus_t simpleProfile_WriteAttrCB(uint16_t connHandle, gattAttribute_t *pAttr, + uint8_t *pValue, uint16_t len, uint16_t offset, uint8_t method); + +static void simpleProfile_HandleConnStatusCB(uint16_t connHandle, uint8_t changeType); + +/********************************************************************* + * PROFILE CALLBACKS + */ +// Simple Profile Service Callbacks +gattServiceCBs_t simpleProfileCBs = { + simpleProfile_ReadAttrCB, // Read callback function pointer + simpleProfile_WriteAttrCB, // Write callback function pointer + NULL // Authorization callback function pointer +}; + +/********************************************************************* + * PUBLIC FUNCTIONS + */ + +/********************************************************************* + * @fn SimpleProfile_AddService + * + * @brief Initializes the Simple Profile service by registering + * GATT attributes with the GATT server. + * + * @param services - services to add. This is a bit map and can + * contain more than one service. + * + * @return Success or Failure + */ +bStatus_t SimpleProfile_AddService(uint32_t services) +{ + uint8_t status = SUCCESS; + + // Initialize Client Characteristic Configuration attributes + GATTServApp_InitCharCfg(INVALID_CONNHANDLE, simpleProfileChar4Config); + + // Register with Link DB to receive link status change callback + linkDB_Register(simpleProfile_HandleConnStatusCB); + + if(services & SIMPLEPROFILE_SERVICE) + { + // Register GATT attribute list and CBs with GATT Server App + status = GATTServApp_RegisterService(simpleProfileAttrTbl, + GATT_NUM_ATTRS(simpleProfileAttrTbl), + GATT_MAX_ENCRYPT_KEY_SIZE, + &simpleProfileCBs); + } + + return (status); +} + +/********************************************************************* + * @fn SimpleProfile_RegisterAppCBs + * + * @brief Registers the application callback function. Only call + * this function once. + * + * @param callbacks - pointer to application callbacks. + * + * @return SUCCESS or bleAlreadyInRequestedMode + */ +bStatus_t SimpleProfile_RegisterAppCBs(simpleProfileCBs_t *appCallbacks) +{ + if(appCallbacks) + { + simpleProfile_AppCBs = appCallbacks; + + return (SUCCESS); + } + else + { + return (bleAlreadyInRequestedMode); + } +} + +/********************************************************************* + * @fn SimpleProfile_SetParameter + * + * @brief Set a Simple Profile parameter. + * + * @param param - Profile parameter ID + * @param len - length of data to right + * @param value - pointer to data to write. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + * + * @return bStatus_t + */ +bStatus_t SimpleProfile_SetParameter(uint8_t param, uint16_t len, void *value) +{ + bStatus_t ret = SUCCESS; + switch(param) + { + case SIMPLEPROFILE_CHAR1: + if(len == SIMPLEPROFILE_CHAR1_LEN) + { + tmos_memcpy(simpleProfileChar1, value, SIMPLEPROFILE_CHAR1_LEN); + } + else + { + ret = bleInvalidRange; + } + break; + + case SIMPLEPROFILE_CHAR2: + if(len == SIMPLEPROFILE_CHAR2_LEN) + { + tmos_memcpy(simpleProfileChar2, value, SIMPLEPROFILE_CHAR2_LEN); + } + else + { + ret = bleInvalidRange; + } + break; + + case SIMPLEPROFILE_CHAR3: + if(len == SIMPLEPROFILE_CHAR3_LEN) + { + tmos_memcpy(simpleProfileChar3, value, SIMPLEPROFILE_CHAR3_LEN); + } + else + { + ret = bleInvalidRange; + } + break; + + case SIMPLEPROFILE_CHAR4: + if(len == SIMPLEPROFILE_CHAR4_LEN) + { + tmos_memcpy(simpleProfileChar4, value, SIMPLEPROFILE_CHAR4_LEN); + } + else + { + ret = bleInvalidRange; + } + break; + + case SIMPLEPROFILE_CHAR5: + if(len == SIMPLEPROFILE_CHAR5_LEN) + { + tmos_memcpy(simpleProfileChar5, value, SIMPLEPROFILE_CHAR5_LEN); + } + else + { + ret = bleInvalidRange; + } + break; + + default: + ret = INVALIDPARAMETER; + break; + } + + return (ret); +} + +/********************************************************************* + * @fn SimpleProfile_GetParameter + * + * @brief Get a Simple Profile parameter. + * + * @param param - Profile parameter ID + * @param value - pointer to data to put. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + * + * @return bStatus_t + */ +bStatus_t SimpleProfile_GetParameter(uint8_t param, void *value) +{ + bStatus_t ret = SUCCESS; + switch(param) + { + case SIMPLEPROFILE_CHAR1: + tmos_memcpy(value, simpleProfileChar1, SIMPLEPROFILE_CHAR1_LEN); + break; + + case SIMPLEPROFILE_CHAR2: + tmos_memcpy(value, simpleProfileChar2, SIMPLEPROFILE_CHAR2_LEN); + break; + + case SIMPLEPROFILE_CHAR3: + tmos_memcpy(value, simpleProfileChar3, SIMPLEPROFILE_CHAR3_LEN); + break; + + case SIMPLEPROFILE_CHAR4: + tmos_memcpy(value, simpleProfileChar4, SIMPLEPROFILE_CHAR4_LEN); + break; + + case SIMPLEPROFILE_CHAR5: + tmos_memcpy(value, simpleProfileChar5, SIMPLEPROFILE_CHAR5_LEN); + break; + + default: + ret = INVALIDPARAMETER; + break; + } + + return (ret); +} + +/********************************************************************* + * @fn simpleProfile_Notify + * + * @brief Send a notification containing a heart rate + * measurement. + * + * @param connHandle - connection handle + * @param pNoti - pointer to notification structure + * + * @return Success or Failure + */ +bStatus_t simpleProfile_Notify(uint16_t connHandle, attHandleValueNoti_t *pNoti) +{ + uint16_t value = GATTServApp_ReadCharCfg(connHandle, simpleProfileChar4Config); + + // If notifications enabled + if(value & GATT_CLIENT_CFG_NOTIFY) + { + // Set the handle + pNoti->handle = simpleProfileAttrTbl[SIMPLEPROFILE_CHAR4_VALUE_POS].handle; + + // Send the notification + return GATT_Notification(connHandle, pNoti, FALSE); + } + return bleIncorrectMode; +} + +/********************************************************************* + * @fn simpleProfile_ReadAttrCB + * + * @brief Read an attribute. + * + * @param connHandle - connection message was received on + * @param pAttr - pointer to attribute + * @param pValue - pointer to data to be read + * @param pLen - length of data to be read + * @param offset - offset of the first octet to be read + * @param maxLen - maximum length of data to be read + * + * @return Success or Failure + */ +static bStatus_t simpleProfile_ReadAttrCB(uint16_t connHandle, gattAttribute_t *pAttr, + uint8_t *pValue, uint16_t *pLen, uint16_t offset, uint16_t maxLen, uint8_t method) +{ + bStatus_t status = SUCCESS; + + // Make sure it's not a blob operation (no attributes in the profile are long) + if(offset > 0) + { + return (ATT_ERR_ATTR_NOT_LONG); + } + + if(pAttr->type.len == ATT_BT_UUID_SIZE) + { + // 16-bit UUID + uint16_t uuid = BUILD_UINT16(pAttr->type.uuid[0], pAttr->type.uuid[1]); + switch(uuid) + { + // No need for "GATT_SERVICE_UUID" or "GATT_CLIENT_CHAR_CFG_UUID" cases; + // gattserverapp handles those reads + + // characteristics 1 and 2 have read permissions + // characteritisc 3 does not have read permissions; therefore it is not + // included here + // characteristic 4 does not have read permissions, but because it + // can be sent as a notification, it is included here + case SIMPLEPROFILE_CHAR1_UUID: + if(maxLen > SIMPLEPROFILE_CHAR1_LEN) + { + *pLen = SIMPLEPROFILE_CHAR1_LEN; + } + else + { + *pLen = maxLen; + } + tmos_memcpy(pValue, pAttr->pValue, *pLen); + break; + + case SIMPLEPROFILE_CHAR2_UUID: + if(maxLen > SIMPLEPROFILE_CHAR2_LEN) + { + *pLen = SIMPLEPROFILE_CHAR2_LEN; + } + else + { + *pLen = maxLen; + } + tmos_memcpy(pValue, pAttr->pValue, *pLen); + break; + + case SIMPLEPROFILE_CHAR4_UUID: + if(maxLen > SIMPLEPROFILE_CHAR4_LEN) + { + *pLen = SIMPLEPROFILE_CHAR4_LEN; + } + else + { + *pLen = maxLen; + } + tmos_memcpy(pValue, pAttr->pValue, *pLen); + break; + + case SIMPLEPROFILE_CHAR5_UUID: + if(maxLen > SIMPLEPROFILE_CHAR5_LEN) + { + *pLen = SIMPLEPROFILE_CHAR5_LEN; + } + else + { + *pLen = maxLen; + } + tmos_memcpy(pValue, pAttr->pValue, *pLen); + break; + + default: + // Should never get here! (characteristics 3 and 4 do not have read permissions) + *pLen = 0; + status = ATT_ERR_ATTR_NOT_FOUND; + break; + } + } + else + { + // 128-bit UUID + *pLen = 0; + status = ATT_ERR_INVALID_HANDLE; + } + + return (status); +} + +/********************************************************************* + * @fn simpleProfile_WriteAttrCB + * + * @brief Validate attribute data prior to a write operation + * + * @param connHandle - connection message was received on + * @param pAttr - pointer to attribute + * @param pValue - pointer to data to be written + * @param len - length of data + * @param offset - offset of the first octet to be written + * + * @return Success or Failure + */ +static bStatus_t simpleProfile_WriteAttrCB(uint16_t connHandle, gattAttribute_t *pAttr, + uint8_t *pValue, uint16_t len, uint16_t offset, uint8_t method) +{ + bStatus_t status = SUCCESS; + uint8_t notifyApp = 0xFF; + + // If attribute permissions require authorization to write, return error + if(gattPermitAuthorWrite(pAttr->permissions)) + { + // Insufficient authorization + return (ATT_ERR_INSUFFICIENT_AUTHOR); + } + + if(pAttr->type.len == ATT_BT_UUID_SIZE) + { + // 16-bit UUID + uint16_t uuid = BUILD_UINT16(pAttr->type.uuid[0], pAttr->type.uuid[1]); + switch(uuid) + { + case SIMPLEPROFILE_CHAR1_UUID: + //Validate the value + // Make sure it's not a blob oper + if(offset == 0) + { + if(len > SIMPLEPROFILE_CHAR1_LEN) + { + status = ATT_ERR_INVALID_VALUE_SIZE; + } + } + else + { + status = ATT_ERR_ATTR_NOT_LONG; + } + + //Write the value + if(status == SUCCESS) + { + tmos_memcpy(pAttr->pValue, pValue, SIMPLEPROFILE_CHAR1_LEN); + notifyApp = SIMPLEPROFILE_CHAR1; + } + break; + + case SIMPLEPROFILE_CHAR3_UUID: + //Validate the value + // Make sure it's not a blob oper + if(offset == 0) + { + if(len > SIMPLEPROFILE_CHAR3_LEN) + { + status = ATT_ERR_INVALID_VALUE_SIZE; + } + } + else + { + status = ATT_ERR_ATTR_NOT_LONG; + } + + //Write the value + if(status == SUCCESS) + { + tmos_memcpy(pAttr->pValue, pValue, SIMPLEPROFILE_CHAR3_LEN); + notifyApp = SIMPLEPROFILE_CHAR3; + } + break; + + case GATT_CLIENT_CHAR_CFG_UUID: + status = GATTServApp_ProcessCCCWriteReq(connHandle, pAttr, pValue, len, + offset, GATT_CLIENT_CFG_NOTIFY); + break; + + default: + // Should never get here! (characteristics 2 and 4 do not have write permissions) + status = ATT_ERR_ATTR_NOT_FOUND; + break; + } + } + else + { + // 128-bit UUID + status = ATT_ERR_INVALID_HANDLE; + } + + // If a charactersitic value changed then callback function to notify application of change + if((notifyApp != 0xFF) && simpleProfile_AppCBs && simpleProfile_AppCBs->pfnSimpleProfileChange) + { + simpleProfile_AppCBs->pfnSimpleProfileChange(notifyApp, pValue, len); + } + + return (status); +} + +/********************************************************************* + * @fn simpleProfile_HandleConnStatusCB + * + * @brief Simple Profile link status change handler function. + * + * @param connHandle - connection handle + * @param changeType - type of change + * + * @return none + */ +static void simpleProfile_HandleConnStatusCB(uint16_t connHandle, uint8_t changeType) +{ + // Make sure this is not loopback connection + if(connHandle != LOOPBACK_CONNHANDLE) + { + // Reset Client Char Config if connection has dropped + if((changeType == LINKDB_STATUS_UPDATE_REMOVED) || + ((changeType == LINKDB_STATUS_UPDATE_STATEFLAGS) && + (!linkDB_Up(connHandle)))) + { + GATTServApp_InitCharCfg(connHandle, simpleProfileChar4Config); + } + } +} + +/********************************************************************* +*********************************************************************/ diff --git a/EVT/EXAM/BLE/PAwR_RSP/Profile/include/devinfoservice.h b/EVT/EXAM/BLE/PAwR_RSP/Profile/include/devinfoservice.h new file mode 100644 index 0000000..de90212 --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/Profile/include/devinfoservice.h @@ -0,0 +1,109 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : devinfoservice.h + * Author : WCH + * Version : V1.0 + * Date : 2018/12/11 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef DEVINFOSERVICE_H +#define DEVINFOSERVICE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************************************************************* + * INCLUDES + */ + +/********************************************************************* + * CONSTANTS + */ + +// Device Information Service Parameters +#define DEVINFO_SYSTEM_ID 0 +#define DEVINFO_MODEL_NUMBER 1 +#define DEVINFO_SERIAL_NUMBER 2 +#define DEVINFO_FIRMWARE_REV 3 +#define DEVINFO_HARDWARE_REV 4 +#define DEVINFO_SOFTWARE_REV 5 +#define DEVINFO_MANUFACTURER_NAME 6 +#define DEVINFO_11073_CERT_DATA 7 +#define DEVINFO_PNP_ID 8 + +// IEEE 11073 authoritative body values +#define DEVINFO_11073_BODY_EMPTY 0 +#define DEVINFO_11073_BODY_IEEE 1 +#define DEVINFO_11073_BODY_CONTINUA 2 +#define DEVINFO_11073_BODY_EXP 254 + +// System ID length +#define DEVINFO_SYSTEM_ID_LEN 8 + +// PnP ID length +#define DEVINFO_PNP_ID_LEN 7 + +/********************************************************************* + * TYPEDEFS + */ + +/********************************************************************* + * MACROS + */ + +/********************************************************************* + * Profile Callbacks + */ + +/********************************************************************* + * API FUNCTIONS + */ + +/* + * DevInfo_AddService- Initializes the Device Information service by registering + * GATT attributes with the GATT server. + * + */ + +extern bStatus_t DevInfo_AddService(void); + +/********************************************************************* + * @fn DevInfo_SetParameter + * + * @brief Set a Device Information parameter. + * + * @param param - Profile parameter ID + * @param len - length of data to right + * @param value - pointer to data to write. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + * + * @return bStatus_t + */ +bStatus_t DevInfo_SetParameter(uint8_t param, uint16_t len, void *value); + +/* + * DevInfo_GetParameter - Get a Device Information parameter. + * + * param - Profile parameter ID + * value - pointer to data to write. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + */ +extern bStatus_t DevInfo_GetParameter(uint8_t param, void *value); + +/********************************************************************* +*********************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif /* DEVINFOSERVICE_H */ diff --git a/EVT/EXAM/BLE/PAwR_RSP/Profile/include/gattprofile.h b/EVT/EXAM/BLE/PAwR_RSP/Profile/include/gattprofile.h new file mode 100644 index 0000000..83e770d --- /dev/null +++ b/EVT/EXAM/BLE/PAwR_RSP/Profile/include/gattprofile.h @@ -0,0 +1,135 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : gattprofile.h + * Author : WCH + * Version : V1.0 + * Date : 2018/12/11 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef GATTPROFILE_H +#define GATTPROFILE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************************************************************* + * INCLUDES + */ + +/********************************************************************* + * CONSTANTS + */ + +// Profile Parameters +#define SIMPLEPROFILE_CHAR1 0 // RW uint8_t - Profile Characteristic 1 value +#define SIMPLEPROFILE_CHAR2 1 // RW uint8_t - Profile Characteristic 2 value +#define SIMPLEPROFILE_CHAR3 2 // RW uint8_t - Profile Characteristic 3 value +#define SIMPLEPROFILE_CHAR4 3 // RW uint8_t - Profile Characteristic 4 value +#define SIMPLEPROFILE_CHAR5 4 // RW uint8_t - Profile Characteristic 4 value + +// Simple Profile Service UUID +#define SIMPLEPROFILE_SERV_UUID 0xFFE0 + +// Key Pressed UUID +#define SIMPLEPROFILE_CHAR1_UUID 0xFFE1 +#define SIMPLEPROFILE_CHAR2_UUID 0xFFE2 +#define SIMPLEPROFILE_CHAR3_UUID 0xFFE3 +#define SIMPLEPROFILE_CHAR4_UUID 0xFFE4 +#define SIMPLEPROFILE_CHAR5_UUID 0xFFE5 + +// Simple Keys Profile Services bit fields +#define SIMPLEPROFILE_SERVICE 0x00000001 + +// Length of characteristic in bytes ( Default MTU is 23 ) +#define SIMPLEPROFILE_CHAR1_LEN 1 +#define SIMPLEPROFILE_CHAR2_LEN 1 +#define SIMPLEPROFILE_CHAR3_LEN 1 +#define SIMPLEPROFILE_CHAR4_LEN 1 +#define SIMPLEPROFILE_CHAR5_LEN 5 + +/********************************************************************* + * TYPEDEFS + */ + +/********************************************************************* + * MACROS + */ + +/********************************************************************* + * Profile Callbacks + */ + +// Callback when a characteristic value has changed +typedef void (*simpleProfileChange_t)(uint8_t paramID, uint8_t *pValue, uint16_t len); + +typedef struct +{ + simpleProfileChange_t pfnSimpleProfileChange; // Called when characteristic value changes +} simpleProfileCBs_t; + +/********************************************************************* + * API FUNCTIONS + */ + +/* + * SimpleProfile_AddService- Initializes the Simple GATT Profile service by registering + * GATT attributes with the GATT server. + * + * @param services - services to add. This is a bit map and can + * contain more than one service. + */ + +extern bStatus_t SimpleProfile_AddService(uint32_t services); + +/* + * SimpleProfile_RegisterAppCBs - Registers the application callback function. + * Only call this function once. + * + * appCallbacks - pointer to application callbacks. + */ +extern bStatus_t SimpleProfile_RegisterAppCBs(simpleProfileCBs_t *appCallbacks); + +/* + * SimpleProfile_SetParameter - Set a Simple GATT Profile parameter. + * + * param - Profile parameter ID + * len - length of data to right + * value - pointer to data to write. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + */ +extern bStatus_t SimpleProfile_SetParameter(uint8_t param, uint16_t len, void *value); + +/* + * SimpleProfile_GetParameter - Get a Simple GATT Profile parameter. + * + * param - Profile parameter ID + * value - pointer to data to write. This is dependent on + * the parameter ID and WILL be cast to the appropriate + * data type (example: data type of uint16_t will be cast to + * uint16_t pointer). + */ +extern bStatus_t SimpleProfile_GetParameter(uint8_t param, void *value); + +/* + * simpleProfile_Notify - Send notification. + * + * connHandle - connect handle + * pNoti - pointer to structure to notify. + */ +extern bStatus_t simpleProfile_Notify(uint16_t connHandle, attHandleValueNoti_t *pNoti); + +/********************************************************************* +*********************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/EVT/EXAM/BLE/Peripheral/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/Peripheral/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/Peripheral/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/Peripheral/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/Peripheral/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/Peripheral/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/Peripheral/APP/ch32v20x_it.c b/EVT/EXAM/BLE/Peripheral/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/Peripheral/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/Peripheral/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/Peripheral/APP/peripheral.c b/EVT/EXAM/BLE/Peripheral/APP/peripheral.c index 72114b9..4d6b847 100644 --- a/EVT/EXAM/BLE/Peripheral/APP/peripheral.c +++ b/EVT/EXAM/BLE/Peripheral/APP/peripheral.c @@ -144,7 +144,7 @@ static uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] = "Simple Peripheral"; // Connection item list static peripheralConnItem_t peripheralConnList; -static uint8_t peripheralMTU = ATT_MTU_SIZE; +static uint16_t peripheralMTU = ATT_MTU_SIZE; /********************************************************************* * LOCAL FUNCTIONS */ @@ -178,7 +178,8 @@ static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { // GAP Bond Manager Callbacks static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) - NULL // Pairing / Bonding state Callback (not used by application) + NULL, // Pairing / Bonding state Callback (not used by application) + NULL // oob callback }; // Simple GATT Profile Callbacks @@ -222,7 +223,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); { uint16_t advInt = DEFAULT_ADVERTISING_INTERVAL; diff --git a/EVT/EXAM/BLE/Peripheral/APP/peripheral_main.c b/EVT/EXAM/BLE/Peripheral/APP/peripheral_main.c index 61ffb6a..f6518df 100644 --- a/EVT/EXAM/BLE/Peripheral/APP/peripheral_main.c +++ b/EVT/EXAM/BLE/Peripheral/APP/peripheral_main.c @@ -52,6 +52,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/Peripheral/Profile/gattprofile.c b/EVT/EXAM/BLE/Peripheral/Profile/gattprofile.c index de1ef79..6e166ed 100644 --- a/EVT/EXAM/BLE/Peripheral/Profile/gattprofile.c +++ b/EVT/EXAM/BLE/Peripheral/Profile/gattprofile.c @@ -118,7 +118,7 @@ static uint8_t simpleProfileChar4[SIMPLEPROFILE_CHAR4_LEN] = {0}; // instantiation of the Client Characteristic Configuration. Reads of the // Client Characteristic Configuration only shows the configuration for // that client and writes only affect the configuration of that client. -static gattCharCfg_t simpleProfileChar4Config[4]; +static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION]; // Simple Profile Characteristic 4 User Description static uint8_t simpleProfileChar4UserDesp[] = "Characteristic 4\0"; diff --git a/EVT/EXAM/BLE/Peripheral_ETH/.cproject b/EVT/EXAM/BLE/Peripheral_ETH/.cproject index 30ffc68..a63be32 100644 --- a/EVT/EXAM/BLE/Peripheral_ETH/.cproject +++ b/EVT/EXAM/BLE/Peripheral_ETH/.cproject @@ -160,5 +160,5 @@ - + diff --git a/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 9d625a8..0000000 --- a/EVT/EXAM/BLE/Peripheral_ETH/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//SRC/Peripheral/inc/ch32v20x.h=UTF-8 diff --git a/EVT/EXAM/BLE/Peripheral_ETH/APP/ch32v20x_it.c b/EVT/EXAM/BLE/Peripheral_ETH/APP/ch32v20x_it.c index c130dc6..8ec1051 100644 --- a/EVT/EXAM/BLE/Peripheral_ETH/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/Peripheral_ETH/APP/ch32v20x_it.c @@ -24,7 +24,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void ETH_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void TIM2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); @@ -89,15 +88,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/Peripheral_ETH/APP/include/net_config.h b/EVT/EXAM/BLE/Peripheral_ETH/APP/include/net_config.h index edb6392..5d4ef22 100644 --- a/EVT/EXAM/BLE/Peripheral_ETH/APP/include/net_config.h +++ b/EVT/EXAM/BLE/Peripheral_ETH/APP/include/net_config.h @@ -89,6 +89,8 @@ extern "C" { #define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ + /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) #error "WCHNET_NUM_TCP Error)" diff --git a/EVT/EXAM/BLE/Peripheral_ETH/APP/peripheral.c b/EVT/EXAM/BLE/Peripheral_ETH/APP/peripheral.c index 852637a..5321c7d 100644 --- a/EVT/EXAM/BLE/Peripheral_ETH/APP/peripheral.c +++ b/EVT/EXAM/BLE/Peripheral_ETH/APP/peripheral.c @@ -145,7 +145,7 @@ static uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] = "Simple Peripheral"; // Connection item list static peripheralConnItem_t peripheralConnList; -static uint8_t peripheralMTU = ATT_MTU_SIZE; +static uint16_t peripheralMTU = ATT_MTU_SIZE; /********************************************************************* * LOCAL FUNCTIONS */ diff --git a/EVT/EXAM/BLE/Peripheral_ETH/APP/peripheral_main.c b/EVT/EXAM/BLE/Peripheral_ETH/APP/peripheral_main.c index ad15808..a5e7e51 100644 --- a/EVT/EXAM/BLE/Peripheral_ETH/APP/peripheral_main.c +++ b/EVT/EXAM/BLE/Peripheral_ETH/APP/peripheral_main.c @@ -54,6 +54,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/RF_PHY/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/RF_PHY/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/RF_PHY/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/RF_PHY/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/RF_PHY/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/RF_PHY/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/RF_PHY/APP/RF_PHY.c b/EVT/EXAM/BLE/RF_PHY/APP/RF_PHY.c index e1bd775..9954cb2 100644 --- a/EVT/EXAM/BLE/RF_PHY/APP/RF_PHY.c +++ b/EVT/EXAM/BLE/RF_PHY/APP/RF_PHY.c @@ -18,9 +18,37 @@ /********************************************************************* * GLOBAL TYPEDEFS */ + uint8_t taskID; uint8_t TX_DATA[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; +volatile uint8_t tx_end_flag=0; + +/********************************************************************* + * @fn RF_Wait_Tx_End + * + * @brief 手动模式等待发送完成,自动模式等待发送-接收完成,必须在RAM中等待,等待时可以执行用户代码,但需要注意执行的代码必须运行在RAM中,否则影响发送 + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void RF_Wait_Tx_End() +{ + uint32_t i=0; + while(!tx_end_flag) + { + i++; + __NOP(); + __NOP(); + // 约5ms超时 + if(i>(SystemCoreClock/1000)) + { + tx_end_flag = TRUE; + } + } +} + /********************************************************************* * @fn RF_2G4StatusCallBack * @@ -40,33 +68,16 @@ void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) { case TX_MODE_TX_FINISH: { + tx_end_flag = TRUE; break; } case TX_MODE_TX_FAIL: { + tx_end_flag = TRUE; break; } case TX_MODE_RX_DATA: { - if (crc == 0) { - uint8_t i; - - PRINT("tx recv,rssi:%d\n", (int8_t)rxBuf[0]); - PRINT("len:%d-", rxBuf[1]); - - for (i = 0; i < rxBuf[1]; i++) { - PRINT("%x ", rxBuf[i + 2]); - } - PRINT("\n"); - } else { - if (crc & (1<<0)) { - PRINT("crc error\n"); - } - - if (crc & (1<<1)) { - PRINT("match type error\n"); - } - } break; } case TX_MODE_RX_TIMEOUT: // Timeout is about 200us @@ -77,7 +88,6 @@ void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) { if (crc == 0) { uint8_t i; - PRINT("rx recv, rssi: %d\n", (int8_t)rxBuf[0]); PRINT("len:%d-", rxBuf[1]); @@ -99,7 +109,6 @@ void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) } case RX_MODE_TX_FINISH: { - tmos_set_event(taskID, SBP_RF_RF_RX_EVT); break; } case RX_MODE_TX_FAIL: @@ -107,7 +116,6 @@ void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) break; } } - PRINT("STA: %x\n", sta); } /********************************************************************* @@ -142,7 +150,11 @@ uint16_t RF_ProcessEvent(uint8_t task_id, uint16_t events) if(events & SBP_RF_PERIODIC_EVT) { RF_Shut(); - RF_Tx(TX_DATA, 10, 0xFF, 0xFF); + tx_end_flag = FALSE; + if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF)) + { + RF_Wait_Tx_End(); + } tmos_start_task(taskID, SBP_RF_PERIODIC_EVT, 1000); return events ^ SBP_RF_PERIODIC_EVT; } @@ -161,27 +173,41 @@ uint16_t RF_ProcessEvent(uint8_t task_id, uint16_t events) /********************************************************************* * @fn RF_Init * - * @brief RF initialization + * @brief Frequency(MHz) channel + * 2402 37 + * 2404 0 + * . + * f =2404+ n*2M + * . + * 2424 10 + * 2426 38 + * 2428 11 + * . + * f =2428+ (n-11)*2M + * . + * 2478 36 + * 2480 39 + * * * @return none */ void RF_Init(void) { uint8_t state; - rfConfig_t rfConfig; + rfConfig_t rf_Config; - tmos_memset(&rfConfig, 0, sizeof(rfConfig_t)); + tmos_memset(&rf_Config, 0, sizeof(rfConfig_t)); taskID = TMOS_ProcessEventRegister(RF_ProcessEvent); // 0x55555555 and 0xAAAAAAAA are prohibited (recommended no more than 24 bit reversals, and no more than 6 consecutive 0 or 1) - rfConfig.accessAddress = 0x71764129; - rfConfig.CRCInit = 0x555555; - rfConfig.Channel = 8; - rfConfig.Frequency = 2480000; + rf_Config.accessAddress = 0x71764129; + rf_Config.CRCInit = 0x555555; + rf_Config.Channel = 39; + rf_Config.Frequency = 2480000; // Enabling LLE_MODE_EX_CHANNEL means selecting rfConfig.Frequency as the communication frequency - rfConfig.LLEMode = LLE_MODE_BASIC | LLE_MODE_EX_CHANNEL; - rfConfig.rfStatusCB = RF_2G4StatusCallBack; - rfConfig.RxMaxlen = 251; - state = RF_Config(&rfConfig); + rf_Config.LLEMode = LLE_MODE_BASIC | LLE_MODE_EX_CHANNEL; + rf_Config.rfStatusCB = RF_2G4StatusCallBack; + rf_Config.RxMaxlen = 251; + state = RF_Config(&rf_Config); PRINT("rf 2.4g init: %x\n", state); // { // RX mode // state = RF_Rx(TX_DATA, 10, 0xFF, 0xFF); diff --git a/EVT/EXAM/BLE/RF_PHY/APP/RF_main.c b/EVT/EXAM/BLE/RF_PHY/APP/RF_main.c index 80a3209..2f99140 100644 --- a/EVT/EXAM/BLE/RF_PHY/APP/RF_main.c +++ b/EVT/EXAM/BLE/RF_PHY/APP/RF_main.c @@ -51,6 +51,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/RF_PHY/APP/ch32v20x_it.c b/EVT/EXAM/BLE/RF_PHY/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/RF_PHY/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/RF_PHY/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/RF_PHY/APP/include/RF_PHY.h b/EVT/EXAM/BLE/RF_PHY/APP/include/RF_PHY.h index f52d8e1..b3494be 100644 --- a/EVT/EXAM/BLE/RF_PHY/APP/include/RF_PHY.h +++ b/EVT/EXAM/BLE/RF_PHY/APP/include/RF_PHY.h @@ -10,8 +10,8 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ -#ifndef CENTRAL_H -#define CENTRAL_H +#ifndef RF_PHY_H +#define RF_PHY_H #ifdef __cplusplus extern "C" { diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/.cproject b/EVT/EXAM/BLE/RF_PHY_Auto/.cproject new file mode 100644 index 0000000..34cb237 --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/.cproject @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/.project b/EVT/EXAM/BLE/RF_PHY_Auto/.project new file mode 100644 index 0000000..1883fd2 --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/.project @@ -0,0 +1,54 @@ + + + RF_PHY_Auto + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + HAL + 2 + PARENT-1-PROJECT_LOC/HAL + + + LIB + 2 + PARENT-1-PROJECT_LOC/LIB + + + SRC + 2 + PARENT-2-PROJECT_LOC/SRC + + + + + 1602468250279 + + 22 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-*.wvproj + + + + diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/APP/RF_PHY.c b/EVT/EXAM/BLE/RF_PHY_Auto/APP/RF_PHY.c new file mode 100644 index 0000000..4a81a5d --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/APP/RF_PHY.c @@ -0,0 +1,262 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : main.c + * Author : WCH + * Version : V1.0 + * Date : 2020/08/06 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/******************************************************************************/ +/* Header file contains */ +#include "CONFIG.h" +#include "RF_PHY.h" + +/********************************************************************* + * GLOBAL TYPEDEFS + */ + +#define RF_AUTO_MODE_EXAM 1 + +uint8_t taskID; +uint8_t TX_DATA[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; + +volatile uint8_t tx_end_flag=0; +volatile uint8_t rx_end_flag=0; + +/********************************************************************* + * @fn RF_Wait_Tx_End + * + * @brief 手动模式等待发送完成,自动模式等待发送-接收完成,必须在RAM中等待,等待时可以执行用户代码,但需要注意执行的代码必须运行在RAM中,否则影响发送 + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void RF_Wait_Tx_End() +{ + uint32_t i=0; + while(!tx_end_flag) + { + i++; + __NOP(); + __NOP(); + // 约5ms超时 + if(i>(SystemCoreClock/1000)) + { + tx_end_flag = TRUE; + } + } +} + +/********************************************************************* + * @fn RF_Wait_Rx_End + * + * @brief 自动模式等待应答发送完成,必须在RAM中等待,等待时可以执行用户代码,但需要注意执行的代码必须运行在RAM中,否则影响发送 + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void RF_Wait_Rx_End() +{ + uint32_t i=0; + while(!rx_end_flag) + { + i++; + __NOP(); + __NOP(); + // 约5ms超时 + if(i>(SystemCoreClock/1000)) + { + rx_end_flag = TRUE; + } + } +} + +/********************************************************************* + * @fn RF_2G4StatusCallBack + * + * @brief RF status callback + * @Note Do not call RF receiving or sending APIs in this function directly, + * setting the event instead + * + * @param sta - State + * @param crc - CRC verification results + * @param rxBuf - Data BUF pointer + * + * @return none + */ +void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) +{ + switch(sta) + { + case TX_MODE_TX_FINISH: + { + break; + } + case TX_MODE_TX_FAIL: + { + tx_end_flag = TRUE; + break; + } + case TX_MODE_RX_DATA: + { + tx_end_flag = TRUE; + if (crc == 0) { + uint8_t i; + + PRINT("tx recv,rssi:%d\n", (int8_t)rxBuf[0]); + PRINT("len:%d-", rxBuf[1]); + + for (i = 0; i < rxBuf[1]; i++) { + PRINT("%x ", rxBuf[i + 2]); + } + PRINT("\n"); + } else { + if (crc & (1<<0)) { + PRINT("crc error\n"); + } + + if (crc & (1<<1)) { + PRINT("match type error\n"); + } + } + break; + } + case TX_MODE_RX_TIMEOUT: // Timeout is about 200us + { + tx_end_flag = TRUE; + break; + } + case RX_MODE_RX_DATA: + { + if (crc == 0) { + uint8_t i; + RF_Wait_Rx_End(); + PRINT("rx recv, rssi: %d\n", (int8_t)rxBuf[0]); + PRINT("len:%d-", rxBuf[1]); + + for (i = 0; i < rxBuf[1]; i++) { + PRINT("%x ", rxBuf[i + 2]); + } + PRINT("\n"); + } else { + if (crc & (1<<0)) { + PRINT("crc error\n"); + } + + if (crc & (1<<1)) { + PRINT("match type error\n"); + } + } + break; + } + case RX_MODE_TX_FINISH: + { + rx_end_flag = TRUE; + tmos_set_event(taskID, SBP_RF_RF_RX_EVT); + break; + } + case RX_MODE_TX_FAIL: + { + rx_end_flag = TRUE; + tmos_set_event(taskID, SBP_RF_RF_RX_EVT); + break; + } + } +} + +/********************************************************************* + * @fn RF_ProcessEvent + * + * @brief RF event processing + * + * @param task_id - Task ID + * @param events - Event logo + * + * @return Unfinished events + */ +uint16_t RF_ProcessEvent(uint8_t task_id, uint16_t events) +{ + if(events & SYS_EVENT_MSG) + { + uint8_t *pMsg; + + if((pMsg = tmos_msg_receive(task_id)) != NULL) + { + // Release the TMOS message + tmos_msg_deallocate(pMsg); + } + // return unprocessed events + return (events ^ SYS_EVENT_MSG); + } + if(events & SBP_RF_START_DEVICE_EVT) + { + tmos_start_task(taskID, SBP_RF_PERIODIC_EVT, 1000); + return events ^ SBP_RF_START_DEVICE_EVT; + } + if(events & SBP_RF_PERIODIC_EVT) + { + RF_Shut(); + tx_end_flag = FALSE; + if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF)) + { + RF_Wait_Tx_End(); + } + tmos_start_task(taskID, SBP_RF_PERIODIC_EVT, 1000); + return events ^ SBP_RF_PERIODIC_EVT; + } + if(events & SBP_RF_RF_RX_EVT) + { + uint8_t state; + RF_Shut(); + TX_DATA[0]++; + rx_end_flag = FALSE; + state = RF_Rx(TX_DATA, 10, 0xFF, 0xFF); + PRINT("RX mode.state = %x\n", state); + return events ^ SBP_RF_RF_RX_EVT; + } + return 0; +} + +/********************************************************************* + * @fn RF_Init + * + * @brief RF initialization + * + * @return none + */ +void RF_Init(void) +{ + uint8_t state; + rfConfig_t rf_Config; + + tmos_memset(&rf_Config, 0, sizeof(rfConfig_t)); + taskID = TMOS_ProcessEventRegister(RF_ProcessEvent); + // 0x55555555 and 0xAAAAAAAA are prohibited (recommended no more than 24 bit reversals, and no more than 6 consecutive 0 or 1) + rf_Config.accessAddress = 0x71764129; + rf_Config.CRCInit = 0x555555; + rf_Config.Channel = 39; + rf_Config.Frequency = 2480000; + // Enabling LLE_MODE_EX_CHANNEL means selecting rfConfig.Frequency as the communication frequency + rf_Config.LLEMode = LLE_MODE_AUTO; + rf_Config.rfStatusCB = RF_2G4StatusCallBack; + rf_Config.RxMaxlen = 251; + state = RF_Config(&rf_Config); + PRINT("rf 2.4g init: %x\n", state); +// { // RX mode +// rx_end_flag = FALSE; +// state = RF_Rx(TX_DATA, 10, 0xFF, 0xFF); +// PRINT("RX mode.state = %x\n", state); +// } + + { // TX mode + tmos_set_event( taskID , SBP_RF_PERIODIC_EVT ); + } +} + +/******************************** endfile @ main ******************************/ diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/APP/RF_main.c b/EVT/EXAM/BLE/RF_PHY_Auto/APP/RF_main.c new file mode 100644 index 0000000..2f99140 --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/APP/RF_main.c @@ -0,0 +1,67 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : main.c + * Author : WCH + * Version : V1.0 + * Date : 2020/08/06 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/******************************************************************************/ +/* Header file contains */ +#include "CONFIG.h" +#include "HAL.h" +#include "RF_PHY.h" + +/********************************************************************* + * GLOBAL TYPEDEFS + */ +__attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; + +#if(defined(BLE_MAC)) && (BLE_MAC == TRUE) +const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; +#endif + +/********************************************************************* + * @fn Main_Circulation + * + * @brief Main loop + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void Main_Circulation(void) +{ + while(1) + { + TMOS_SystemProcess(); + } +} + +/********************************************************************* + * @fn main + * + * @brief Main function + * + * @return none + */ +int main(void) +{ + SystemCoreClockUpdate(); + Delay_Init(); +#ifdef DEBUG + USART_Printf_Init( 115200 ); +#endif + PRINT("%s\n", VER_LIB); + WCHBLE_Init(); + HAL_Init(); + RF_RoleInit(); + RF_Init(); + Main_Circulation(); +} + +/******************************** endfile @ main ******************************/ diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/APP/ch32v20x_it.c b/EVT/EXAM/BLE/RF_PHY_Auto/APP/ch32v20x_it.c new file mode 100644 index 0000000..f84a128 --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/APP/ch32v20x_it.c @@ -0,0 +1,61 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_it.c + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : Main Interrupt Service Routines. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +/********************************************************************* + * INCLUDES + */ +#include "ch32v20x_it.h" +#include "CONFIG.h" + +/********************************************************************* + * LOCAL FUNCTIONS + */ +void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); + +/********************************************************************* + * @fn NMI_Handler + * + * @brief This function handles NMI exception. + * + * @return None + */ +void NMI_Handler(void) +{ +} + +/********************************************************************* + * @fn HardFault_Handler + * + * @brief This function handles Hard Fault exception. + * + * @return None + */ +void HardFault_Handler(void) +{ + while(1) + { + } +} + +/********************************************************************* + * @fn BB_IRQHandler + * + * @brief BB Interrupt for BLE. + * + * @return None + */ +void BB_IRQHandler(void) +{ + BB_IRQLibHandler(); +} diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/RF_PHY.h b/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/RF_PHY.h new file mode 100644 index 0000000..b3494be --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/RF_PHY.h @@ -0,0 +1,33 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : rf_phy.h + * Author : WCH + * Version : V1.0 + * Date : 2018/11/12 + * Description : + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef RF_PHY_H +#define RF_PHY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define SBP_RF_START_DEVICE_EVT 1 +#define SBP_RF_PERIODIC_EVT 2 +#define SBP_RF_RF_RX_EVT 4 + +//If you add this macro when configured LLEMODE, the first byte received is the raw data, otherwise the RSSI value +#define LLE_MODE_ORIGINAL_RX (0x80) + +extern void RF_Init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/ch32v20x_conf.h b/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/ch32v20x_conf.h new file mode 100644 index 0000000..2cad663 --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/ch32v20x_conf.h @@ -0,0 +1,37 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_conf.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : Library configuration file. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __CH32V20x_CONF_H +#define __CH32V20x_CONF_H + +#include "ch32v20x_adc.h" +#include "ch32v20x_bkp.h" +#include "ch32v20x_can.h" +#include "ch32v20x_crc.h" +#include "ch32v20x_dbgmcu.h" +#include "ch32v20x_dma.h" +#include "ch32v20x_exti.h" +#include "ch32v20x_flash.h" +#include "ch32v20x_gpio.h" +#include "ch32v20x_i2c.h" +#include "ch32v20x_iwdg.h" +#include "ch32v20x_pwr.h" +#include "ch32v20x_rcc.h" +#include "ch32v20x_rtc.h" +#include "ch32v20x_spi.h" +#include "ch32v20x_tim.h" +#include "ch32v20x_usart.h" +#include "ch32v20x_wwdg.h" +#include "ch32v20x_it.h" +#include "ch32v20x_misc.h" + +#endif /* __CH32V20x_CONF_H */ diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/ch32v20x_it.h b/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/ch32v20x_it.h new file mode 100644 index 0000000..1b1c001 --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/ch32v20x_it.h @@ -0,0 +1,18 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_it.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : This file contains the headers of the interrupt handlers. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __CH32V20x_IT_H +#define __CH32V20x_IT_H + +#include "debug.h" + +#endif /* __CH32V20x_IT_H */ diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/system_ch32v20x.h b/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/system_ch32v20x.h new file mode 100644 index 0000000..1090bb0 --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/APP/include/system_ch32v20x.h @@ -0,0 +1,31 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : system_ch32v20x.h + * Author : WCH + * Version : V1.0.0 + * Date : 2022/06/16 + * Description : CH32V20x Device Peripheral Access Layer System Header File. + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ + +#ifndef __SYSTEM_ch32v20x_H +#define __SYSTEM_ch32v20x_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/* System_Exported_Functions */ +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); + + +#ifdef __cplusplus +} +#endif + +#endif /*__CH32V20x_SYSTEM_H */ diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/APP/system_ch32v20x.c b/EVT/EXAM/BLE/RF_PHY_Auto/APP/system_ch32v20x.c new file mode 100644 index 0000000..f4110b2 --- /dev/null +++ b/EVT/EXAM/BLE/RF_PHY_Auto/APP/system_ch32v20x.c @@ -0,0 +1,989 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : system_ch32v20x.c + * Author : WCH + * Version : V1.0.0 + * Date : 2021/06/06 + * Description : CH32V20x Device Peripheral Access Layer System Source File. + * For HSE = 32Mhz (CH32V208x/CH32V203RBT6) + * For HSE = 8Mhz (other CH32V203x) + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ +#include "ch32v20x.h" + +/* +* Uncomment the line corresponding to the desired System clock (SYSCLK) frequency (after +* reset the HSI is used as SYSCLK source). +* If none of the define below is enabled, the HSI is used as System clock source. +*/ +//#define SYSCLK_FREQ_HSE HSE_VALUE +//#define SYSCLK_FREQ_48MHz_HSE 48000000 +//#define SYSCLK_FREQ_56MHz_HSE 56000000 +//#define SYSCLK_FREQ_72MHz_HSE 72000000 +#define SYSCLK_FREQ_96MHz_HSE 96000000 +//#define SYSCLK_FREQ_120MHz_HSE 120000000 +//#define SYSCLK_FREQ_144MHz_HSE 144000000 +//#define SYSCLK_FREQ_HSI HSI_VALUE +//#define SYSCLK_FREQ_48MHz_HSI 48000000 +//#define SYSCLK_FREQ_56MHz_HSI 56000000 +//#define SYSCLK_FREQ_72MHz_HSI 72000000 +//#define SYSCLK_FREQ_96MHz_HSI 96000000 +//#define SYSCLK_FREQ_120MHz_HSI 120000000 +//#define SYSCLK_FREQ_144MHz_HSI 144000000 + +/* Clock Definitions */ +#ifdef SYSCLK_FREQ_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_96MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_96MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSI; /* System Clock Frequency (Core Clock) */ +#else +uint32_t SystemCoreClock = HSI_VALUE; /* System Clock Frequency (Core Clock) */ + +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + + +/* system_private_function_proto_types */ +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE +static void SetSysClockToHSE( void ); +#elif defined SYSCLK_FREQ_48MHz_HSE +static void SetSysClockTo48_HSE( void ); +#elif defined SYSCLK_FREQ_56MHz_HSE +static void SetSysClockTo56_HSE( void ); +#elif defined SYSCLK_FREQ_72MHz_HSE +static void SetSysClockTo72_HSE( void ); +#elif defined SYSCLK_FREQ_96MHz_HSE +static void SetSysClockTo96_HSE( void ); +#elif defined SYSCLK_FREQ_120MHz_HSE +static void SetSysClockTo120_HSE( void ); +#elif defined SYSCLK_FREQ_144MHz_HSE +static void SetSysClockTo144_HSE( void ); +#elif defined SYSCLK_FREQ_48MHz_HSI +static void SetSysClockTo48_HSI( void ); +#elif defined SYSCLK_FREQ_56MHz_HSI +static void SetSysClockTo56_HSI( void ); +#elif defined SYSCLK_FREQ_72MHz_HSI +static void SetSysClockTo72_HSI( void ); +#elif defined SYSCLK_FREQ_96MHz_HSI +static void SetSysClockTo96_HSI( void ); +#elif defined SYSCLK_FREQ_120MHz_HSI +static void SetSysClockTo120_HSI( void ); +#elif defined SYSCLK_FREQ_144MHz_HSI +static void SetSysClockTo144_HSI( void ); + +#endif + +/********************************************************************* + * @fn SystemInit + * + * @brief Setup the microcontroller system Initialize the Embedded Flash Interface, + * the PLL and update the SystemCoreClock variable. + * + * @return none + */ +void SystemInit (void) +{ + RCC->CTLR |= (uint32_t)0x00000001; + RCC->CFGR0 &= (uint32_t)0xF8FF0000; + RCC->CTLR &= (uint32_t)0xFEF6FFFF; + RCC->CTLR &= (uint32_t)0xFFFBFFFF; + RCC->CFGR0 &= (uint32_t)0xFF80FFFF; + RCC->INTR = 0x009F0000; + SetSysClock(); +} + + +/********************************************************************* + * @fn SystemCoreClockUpdate + * + * @brief Update SystemCoreClock variable according to Clock Register Values. + * + * @return none + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0, Pll_6_5 = 0; + + tmp = RCC->CFGR0 & RCC_SWS; + + switch (tmp) + { + case 0x00: + SystemCoreClock = HSI_VALUE; + break; + case 0x04: + SystemCoreClock = HSE_VALUE; + break; + case 0x08: + pllmull = RCC->CFGR0 & RCC_PLLMULL; + pllsource = RCC->CFGR0 & RCC_PLLSRC; + pllmull = ( pllmull >> 18) + 2; + + if(pllmull == 17) pllmull = 18; + + if (pllsource == 0x00) + { + if(EXTEN->EXTEN_CTR & EXTEN_PLL_HSI_PRE){ + SystemCoreClock = HSI_VALUE * pllmull; + } + else{ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + } + else + { +#if defined (CH32V20x_D8W) + if((RCC->CFGR0 & (3<<22)) == (3<<22)) + { + SystemCoreClock = ((HSE_VALUE>>1)) * pllmull; + } + else +#endif + if ((RCC->CFGR0 & RCC_PLLXTPRE) != (uint32_t)RESET) + { +#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) + SystemCoreClock = ((HSE_VALUE>>2) >> 1) * pllmull; +#else + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; +#endif + } + else + { +#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) + SystemCoreClock = (HSE_VALUE>>2) * pllmull; +#else + SystemCoreClock = HSE_VALUE * pllmull; +#endif + } + } + + if(Pll_6_5 == 1) SystemCoreClock = (SystemCoreClock / 2); + + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + + tmp = AHBPrescTable[((RCC->CFGR0 & RCC_HPRE) >> 4)]; + SystemCoreClock >>= tmp; +} + +/********************************************************************* + * @fn SetSysClock + * + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_48MHz_HSE + SetSysClockTo48_HSE(); +#elif defined SYSCLK_FREQ_56MHz_HSE + SetSysClockTo56_HSE(); +#elif defined SYSCLK_FREQ_72MHz_HSE + SetSysClockTo72_HSE(); +#elif defined SYSCLK_FREQ_96MHz_HSE + SetSysClockTo96_HSE(); +#elif defined SYSCLK_FREQ_120MHz_HSE + SetSysClockTo120_HSE(); +#elif defined SYSCLK_FREQ_144MHz_HSE + SetSysClockTo144_HSE(); +#elif defined SYSCLK_FREQ_48MHz_HSI + SetSysClockTo48_HSI(); +#elif defined SYSCLK_FREQ_56MHz_HSI + SetSysClockTo56_HSI(); +#elif defined SYSCLK_FREQ_72MHz_HSI + SetSysClockTo72_HSI(); +#elif defined SYSCLK_FREQ_96MHz_HSI + SetSysClockTo96_HSI(); +#elif defined SYSCLK_FREQ_120MHz_HSI + SetSysClockTo120_HSI(); +#elif defined SYSCLK_FREQ_144MHz_HSI + SetSysClockTo144_HSI(); + +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + * source (default after reset) + */ +} + + +#ifdef SYSCLK_FREQ_HSE + +/********************************************************************* + * @fn SetSysClockToHSE + * + * @brief Sets HSE as System clock source and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV1; + + /* Select HSE as system clock source + * CH32V20x_D6 (HSE=8MHZ) + * CH32V20x_D8 (HSE=32MHZ) + * CH32V20x_D8W (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x04) + { + } + } + else + { + /* If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo48_HSE + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 6 = 48 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 6 = 48 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 6 = 48 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL6); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_56MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo56_HSE + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 7 = 56 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 7 = 56 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 7 = 56 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL7); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_72MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo72_HSE + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 9 = 72 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 9 = 72 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 9 = 72 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL9); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_96MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo96_HSE + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 12 = 96 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 12 = 96 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 12 = 96 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL12); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_120MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo120_HSE + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if(HSEStatus == (uint32_t)0x01) + { +#if defined (CH32V20x_D8W) + RCC->CFGR0 |= (uint32_t)(3<<22); + /* HCLK = SYSCLK/2 */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV2; +#else + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; +#endif + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 15 = 120 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 15 = 120 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/2 * 15 = 240 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL15); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} +#elif defined SYSCLK_FREQ_144MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo144_HSE + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 18 = 144 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 18 = 144 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 18 = 144 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo48_HSI + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 6 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL6); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + +#elif defined SYSCLK_FREQ_56MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo56_HSI + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 7 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL7); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + +#elif defined SYSCLK_FREQ_72MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo72_HSI + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 9 = 72 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL9); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#elif defined SYSCLK_FREQ_96MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo96_HSI + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 12 = 96 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL12); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#elif defined SYSCLK_FREQ_120MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo120_HSI + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 15 = 120 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL15); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} +#elif defined SYSCLK_FREQ_144MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo144_HSI + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 18 = 144 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL18); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#endif diff --git a/EVT/EXAM/BLE/RF_PHY_Auto/RF_PHY_Auto.wvproj b/EVT/EXAM/BLE/RF_PHY_Auto/RF_PHY_Auto.wvproj new file mode 100644 index 0000000..02d84e6 Binary files /dev/null and b/EVT/EXAM/BLE/RF_PHY_Auto/RF_PHY_Auto.wvproj differ diff --git a/EVT/EXAM/BLE/RF_PHY_Hop/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/RF_PHY_Hop/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/RF_PHY_Hop/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/RF_PHY_Hop/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/RF_PHY_Hop/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/RF_PHY_Hop/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/RF_PHY_Hop/APP/RF_PHY.c b/EVT/EXAM/BLE/RF_PHY_Hop/APP/RF_PHY.c index 51a98a8..f7d686a 100644 --- a/EVT/EXAM/BLE/RF_PHY_Hop/APP/RF_PHY.c +++ b/EVT/EXAM/BLE/RF_PHY_Hop/APP/RF_PHY.c @@ -22,12 +22,64 @@ uint8_t taskID; uint8_t TX_DATA[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; +volatile uint8_t tx_end_flag=0; +volatile uint8_t rx_end_flag=0; + +/********************************************************************* + * @fn RF_Wait_Tx_End + * + * @brief 手动模式等待发送完成,自动模式等待发送-接收完成,必须在RAM中等待,等待时可以执行用户代码,但需要注意执行的代码必须运行在RAM中,否则影响发送 + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void RF_Wait_Tx_End() +{ + uint32_t i=0; + while(!tx_end_flag) + { + i++; + __NOP(); + __NOP(); + // 约5ms超时 + if(i>(SystemCoreClock/1000)) + { + tx_end_flag = TRUE; + } + } +} + +/********************************************************************* + * @fn RF_Wait_Rx_End + * + * @brief 自动模式等待应答发送完成,必须在RAM中等待,等待时可以执行用户代码,但需要注意执行的代码必须运行在RAM中,否则影响发送 + * + * @return none + */ +__attribute__((section(".highcode"))) +__attribute__((noinline)) +void RF_Wait_Rx_End() +{ + uint32_t i=0; + while(!rx_end_flag) + { + i++; + __NOP(); + __NOP(); + // 约5ms超时 + if(i>(SystemCoreClock/1000)) + { + rx_end_flag = TRUE; + } + } +} + /********************************************************************* * @fn RF_2G4StatusCallBack * - * @brief RF status callback - * @Note Do not call RF receiving or sending APIs in this function directly, - * setting the event instead + * @brief RF 状态回调,此函数在中断中调用。注意:不可在此函数中直接调用RF接收或者发送API,需要使用事件的方式调用 + * 在此回调中直接使用或调用函数涉及到的变量需注意,此函数在中断中调用。 * * @param sta - State * @param crc - CRC verification results @@ -45,10 +97,12 @@ void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) } case TX_MODE_TX_FAIL: { + tx_end_flag = TRUE; break; } case TX_MODE_RX_DATA: { + tx_end_flag = TRUE; if (crc == 0) { uint8_t i; @@ -72,10 +126,12 @@ void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) } case TX_MODE_RX_TIMEOUT: // Timeout is about 200us { + tx_end_flag = TRUE; break; } case TX_MODE_HOP_SHUT: { + tx_end_flag = TRUE; PRINT("TX_MODE_HOP_SHUT...\n"); tmos_set_event(taskID, SBP_RF_CHANNEL_HOP_TX_EVT); break; @@ -86,6 +142,7 @@ void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) if (crc == 0) { uint8_t i; + RF_Wait_Rx_End(); PRINT("rx recv, rssi: %d\n", (int8_t)rxBuf[0]); PRINT("len:%d-", rxBuf[1]); @@ -102,21 +159,23 @@ void RF_2G4StatusCallBack(uint8_t sta, uint8_t crc, uint8_t *rxBuf) PRINT("match type error\n"); } } + tmos_set_event(taskID, SBP_RF_RF_RX_EVT); break; } case RX_MODE_TX_FINISH: { - tmos_set_event(taskID, SBP_RF_RF_RX_EVT); + rx_end_flag = TRUE; break; } case RX_MODE_TX_FAIL: { - tmos_set_event(taskID, SBP_RF_RF_RX_EVT); + rx_end_flag = TRUE; break; } case RX_MODE_HOP_SHUT: { PRINT("RX_MODE_HOP_SHUT...\n"); + rx_end_flag = TRUE; tmos_set_event(taskID, SBP_RF_CHANNEL_HOP_RX_EVT); break; } @@ -156,7 +215,11 @@ uint16_t RF_ProcessEvent(uint8_t task_id, uint16_t events) { RF_Shut(); TX_DATA[0]--; - RF_Tx(TX_DATA, 10, 0xFF, 0xFF); + tx_end_flag = FALSE; + if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF)) + { + RF_Wait_Tx_End(); + } tmos_start_task(taskID, SBP_RF_PERIODIC_EVT, 1000); return events ^ SBP_RF_PERIODIC_EVT; } @@ -165,6 +228,7 @@ uint16_t RF_ProcessEvent(uint8_t task_id, uint16_t events) uint8_t state; RF_Shut(); TX_DATA[0]++; + rx_end_flag = FALSE; state = RF_Rx(TX_DATA, 10, 0xFF, 0xFF); return events ^ SBP_RF_RF_RX_EVT; } @@ -192,6 +256,8 @@ uint16_t RF_ProcessEvent(uint8_t task_id, uint16_t events) } else { + + rx_end_flag = FALSE; RF_Rx(TX_DATA, 10, 0xFF, 0xFF); } return events ^ SBP_RF_CHANNEL_HOP_RX_EVT; @@ -216,22 +282,24 @@ void RF_Init(void) // 0x55555555 and 0xAAAAAAAA are prohibited (recommended no more than 24 bit reversals, and no more than 6 consecutive 0 or 1) rfConfig.accessAddress = 0x71764129; rfConfig.CRCInit = 0x555555; -// rfConfig.Channel = 0; - rfConfig.ChannelMap = 0x1<<6; + rfConfig.ChannelMap = 0xFFFFFFFF; rfConfig.LLEMode = LLE_MODE_AUTO; rfConfig.rfStatusCB = RF_2G4StatusCallBack; rfConfig.RxMaxlen = 251; +#if (CLK_OSC32K != 0) + //It is better to choose a shorter heartbeat interval for the internal clock. + rfConfig.HeartPeriod = 4; +#endif state = RF_Config(&rfConfig); PRINT("rf 2.4g init: %x\n", state); - { // RX mode - PRINT("RX mode...\n"); - tmos_set_event(taskID, SBP_RF_CHANNEL_HOP_RX_EVT); - } - -// { // TX mode -// PRINT("TX mode...\n"); -// tmos_set_event(taskID, SBP_RF_CHANNEL_HOP_TX_EVT); +// { // RX mode +// PRINT("RX mode...\n"); +// tmos_set_event(taskID, SBP_RF_CHANNEL_HOP_RX_EVT); // } + { // TX mode + PRINT("TX mode...\n"); + tmos_set_event(taskID, SBP_RF_CHANNEL_HOP_TX_EVT); + } } /******************************** endfile @ main ******************************/ diff --git a/EVT/EXAM/BLE/RF_PHY_Hop/APP/RF_main.c b/EVT/EXAM/BLE/RF_PHY_Hop/APP/RF_main.c index 80a3209..2f99140 100644 --- a/EVT/EXAM/BLE/RF_PHY_Hop/APP/RF_main.c +++ b/EVT/EXAM/BLE/RF_PHY_Hop/APP/RF_main.c @@ -51,6 +51,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/RF_PHY_Hop/APP/ch32v20x_it.c b/EVT/EXAM/BLE/RF_PHY_Hop/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/RF_PHY_Hop/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/RF_PHY_Hop/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/RF_PHY_Hop/APP/include/RF_PHY.h b/EVT/EXAM/BLE/RF_PHY_Hop/APP/include/RF_PHY.h index f0003c5..01fdd52 100644 --- a/EVT/EXAM/BLE/RF_PHY_Hop/APP/include/RF_PHY.h +++ b/EVT/EXAM/BLE/RF_PHY_Hop/APP/include/RF_PHY.h @@ -10,8 +10,8 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ -#ifndef CENTRAL_H -#define CENTRAL_H +#ifndef RF_PHY_H +#define RF_PHY_H #ifdef __cplusplus extern "C" { diff --git a/EVT/EXAM/BLE/RunningSensor/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/RunningSensor/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/RunningSensor/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/RunningSensor/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/RunningSensor/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/RunningSensor/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/RunningSensor/APP/ch32v20x_it.c b/EVT/EXAM/BLE/RunningSensor/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/RunningSensor/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/RunningSensor/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/RunningSensor/APP/runningsensor.c b/EVT/EXAM/BLE/RunningSensor/APP/runningsensor.c index 40ff7a3..da4e8c2 100644 --- a/EVT/EXAM/BLE/RunningSensor/APP/runningsensor.c +++ b/EVT/EXAM/BLE/RunningSensor/APP/runningsensor.c @@ -63,7 +63,7 @@ #define DEFAULT_DESIRED_CONN_TIMEOUT 1000 // Sensor sends a slave security request. -#define DEFAULT_PAIRING_PARAMETER GAPBOND_PAIRING_MODE_INITIATE +#define DEFAULT_PAIRING_PARAMETER GAPBOND_PAIRING_MODE_WAIT_FOR_REQ // Bonded devices' addresses are stored in white list. #define USING_WHITE_LIST FALSE @@ -209,7 +209,8 @@ static gapRolesCBs_t runningPeripheralCB = { // Bond Manager Callbacks static gapBondCBs_t runningBondCB = { NULL, // Passcode callback - NULL // Pairing state callback + NULL, // Pairing state callback + NULL // oob callback }; /********************************************************************* @@ -245,7 +246,7 @@ void RunningSensor_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Setup the GAP Bond Manager { diff --git a/EVT/EXAM/BLE/RunningSensor/APP/runningsensor_main.c b/EVT/EXAM/BLE/RunningSensor/APP/runningsensor_main.c index 0099b45..00aa300 100644 --- a/EVT/EXAM/BLE/RunningSensor/APP/runningsensor_main.c +++ b/EVT/EXAM/BLE/RunningSensor/APP/runningsensor_main.c @@ -51,6 +51,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/SYNC_ADV/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/SYNC_ADV/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/SYNC_ADV/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/SYNC_ADV/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/SYNC_ADV/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/SYNC_ADV/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/SYNC_ADV/APP/broadcaster_main.c b/EVT/EXAM/BLE/SYNC_ADV/APP/broadcaster_main.c index 07b1822..f628b72 100644 --- a/EVT/EXAM/BLE/SYNC_ADV/APP/broadcaster_main.c +++ b/EVT/EXAM/BLE/SYNC_ADV/APP/broadcaster_main.c @@ -51,6 +51,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/SYNC_ADV/APP/ch32v20x_it.c b/EVT/EXAM/BLE/SYNC_ADV/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/SYNC_ADV/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/SYNC_ADV/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/SYNC_SCAN/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/SYNC_SCAN/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/SYNC_SCAN/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/SYNC_SCAN/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/SYNC_SCAN/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/SYNC_SCAN/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/SYNC_SCAN/APP/ch32v20x_it.c b/EVT/EXAM/BLE/SYNC_SCAN/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/SYNC_SCAN/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/SYNC_SCAN/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/SYNC_SCAN/APP/observer.c b/EVT/EXAM/BLE/SYNC_SCAN/APP/observer.c index 9c7e12c..e9a9557 100644 --- a/EVT/EXAM/BLE/SYNC_SCAN/APP/observer.c +++ b/EVT/EXAM/BLE/SYNC_SCAN/APP/observer.c @@ -237,12 +237,6 @@ static void ObserverEventCB(gapRoleEvent_t *pEvent) case GAP_EXT_ADV_DEVICE_INFO_EVENT: { - PRINT("periodicAdvInterval %d...\n",pEvent->deviceExtAdvInfo.periodicAdvInterval); - PRINT("addr %x %x %x %x %x %x...\n",pEvent->deviceExtAdvInfo.addr[0], - pEvent->deviceExtAdvInfo.addr[1],pEvent->deviceExtAdvInfo.addr[2], - pEvent->deviceExtAdvInfo.addr[3],pEvent->deviceExtAdvInfo.addr[4], - pEvent->deviceExtAdvInfo.addr[5] - ); if(tmos_memcmp(PeerAddrDef, pEvent->deviceExtAdvInfo.addr, B_ADDR_LEN) && pEvent->deviceExtAdvInfo.periodicAdvInterval != 0) { @@ -251,14 +245,17 @@ static void ObserverEventCB(gapRoleEvent_t *pEvent) tmos_memcpy(sync.addr, PeerAddrDef, B_ADDR_LEN); sync.addrType = pEvent->deviceExtAdvInfo.addrType; - sync.advertising_SID = 8; + sync.advertising_SID = pEvent->deviceExtAdvInfo.advertisingSID; sync.options = DUPLICATE_FILTERING_INITIALLY_ENABLED; - sync.syncTimeout = 80; // 800ms + sync.syncTimeout = (pEvent->deviceExtAdvInfo.periodicAdvInterval * 6 + 7) / 8; //6 times the periodicAdvInterval + + /* Only one sync can be established at the same time for now */ state = GAPRole_CreateSync(&sync); + PRINT("GAPRole_CreateSync %d return %d...\n ", pEvent->deviceExtAdvInfo.periodicAdvInterval, state); if (state == SUCCESS) { tmos_start_task(ObserverTaskId, START_SYNC_TIMEOUT_EVT, DEFAULT_CREAT_SYNC_TIMEOUT); - } + } } PRINT("GAP_EXT_ADV_DEVICE_INFO_EVENT...\n"); } @@ -279,7 +276,11 @@ static void ObserverEventCB(gapRoleEvent_t *pEvent) case GAP_PERIODIC_ADV_DEVICE_INFO_EVENT: { - PRINT("periodic adv - len %d, data[5] %x...\n", pEvent->devicePeriodicInfo.dataLength, pEvent->devicePeriodicInfo.pEvtData[5]); + PRINT("periodic adv - len %d (", pEvent->devicePeriodicInfo.dataLength); + for (int i = 0 ; i < pEvent->devicePeriodicInfo.dataLength; i++) { + PRINT(" %#x", pEvent->devicePeriodicInfo.pEvtData[i]); + } + PRINT(" )\n"); } break; diff --git a/EVT/EXAM/BLE/SYNC_SCAN/APP/observer_main.c b/EVT/EXAM/BLE/SYNC_SCAN/APP/observer_main.c index c968775..786e4a4 100644 --- a/EVT/EXAM/BLE/SYNC_SCAN/APP/observer_main.c +++ b/EVT/EXAM/BLE/SYNC_SCAN/APP/observer_main.c @@ -53,6 +53,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/SpeedTest_Central/.cproject b/EVT/EXAM/BLE/SpeedTest_Central/.cproject index c9a7ab2..6a3ada4 100644 --- a/EVT/EXAM/BLE/SpeedTest_Central/.cproject +++ b/EVT/EXAM/BLE/SpeedTest_Central/.cproject @@ -67,12 +67,12 @@ - + diff --git a/EVT/EXAM/BLE/SpeedTest_Central/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/SpeedTest_Central/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/SpeedTest_Central/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/SpeedTest_Central/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/SpeedTest_Central/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/SpeedTest_Central/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/SpeedTest_Central/APP/central.c b/EVT/EXAM/BLE/SpeedTest_Central/APP/central.c index eaa03bf..80649fc 100644 --- a/EVT/EXAM/BLE/SpeedTest_Central/APP/central.c +++ b/EVT/EXAM/BLE/SpeedTest_Central/APP/central.c @@ -9,6 +9,10 @@ * It needs to be used with the machine -based process, * and modify the address from the machine equipment to * this routine target address, default (84: C2: E4: 03: 02: 02) + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ /********************************************************************* @@ -35,10 +39,10 @@ #define DEFAULT_SCAN_DURATION 2400 // Connection min interval in 1.25ms -#define DEFAULT_MIN_CONNECTION_INTERVAL 8 +#define DEFAULT_MIN_CONNECTION_INTERVAL 11 // Connection max interval in 1.25ms -#define DEFAULT_MAX_CONNECTION_INTERVAL 8 +#define DEFAULT_MAX_CONNECTION_INTERVAL 11 // Connection supervision timeout in 10ms #define DEFAULT_CONNECTION_TIMEOUT 100 diff --git a/EVT/EXAM/BLE/SpeedTest_Central/APP/central_main.c b/EVT/EXAM/BLE/SpeedTest_Central/APP/central_main.c index bdef137..586c775 100644 --- a/EVT/EXAM/BLE/SpeedTest_Central/APP/central_main.c +++ b/EVT/EXAM/BLE/SpeedTest_Central/APP/central_main.c @@ -51,6 +51,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/SpeedTest_Central/APP/ch32v20x_it.c b/EVT/EXAM/BLE/SpeedTest_Central/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/SpeedTest_Central/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/SpeedTest_Central/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/SpeedTest_Peripheral/.cproject b/EVT/EXAM/BLE/SpeedTest_Peripheral/.cproject index 81e3944..04aa7af 100644 --- a/EVT/EXAM/BLE/SpeedTest_Peripheral/.cproject +++ b/EVT/EXAM/BLE/SpeedTest_Peripheral/.cproject @@ -67,13 +67,13 @@ - + diff --git a/EVT/EXAM/BLE/SpeedTest_Peripheral/.settings/org.eclipse.cdt.codan.core.prefs b/EVT/EXAM/BLE/SpeedTest_Peripheral/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 067d6fd..0000000 --- a/EVT/EXAM/BLE/SpeedTest_Peripheral/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} -org.eclipse.cdt.codan.checkers.nocommentinside=-Error -org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} -org.eclipse.cdt.codan.checkers.nolinecomment=-Error -org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error -org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} diff --git a/EVT/EXAM/BLE/SpeedTest_Peripheral/.settings/org.eclipse.cdt.ui.prefs b/EVT/EXAM/BLE/SpeedTest_Peripheral/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 4ee12a4..0000000 --- a/EVT/EXAM/BLE/SpeedTest_Peripheral/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=1 diff --git a/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/ch32v20x_it.c b/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/ch32v20x_it.c +++ b/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/peripheral.c b/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/peripheral.c index aa079b9..a7a91c6 100644 --- a/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/peripheral.c +++ b/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/peripheral.c @@ -180,7 +180,8 @@ static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = { // GAP Bond Manager Callbacks static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) - NULL // Pairing / Bonding state Callback (not used by application) + NULL, // Pairing / Bonding state Callback (not used by application) + NULL // oob callback }; // Simple GATT Profile Callbacks @@ -224,7 +225,7 @@ void Peripheral_Init() } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); // Set advertising interval { @@ -380,6 +381,31 @@ uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events) return 0; } +/********************************************************************* + * @fn Peripheral_ProcessGAPMsg + * + * @brief Process an incoming task message. + * + * @param pMsg - message to process + * + * @return none + */ +static void Peripheral_ProcessGAPMsg(gapRoleEvent_t *pEvent) +{ + switch(pEvent->gap.opcode) + { + + case GAP_PHY_UPDATE_EVENT: + { + PRINT("Phy update Rx:%x Tx:%x ..\n", pEvent->linkPhyUpdate.connRxPHYS, pEvent->linkPhyUpdate.connTxPHYS); + break; + } + + default: + break; + } +} + /********************************************************************* * @fn Peripheral_ProcessTMOSMsg * @@ -395,6 +421,7 @@ static void Peripheral_ProcessTMOSMsg(tmos_event_hdr_t *pMsg) { case GAP_MSG_EVENT: { + Peripheral_ProcessGAPMsg((gapRoleEvent_t *)pMsg); break; } diff --git a/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/peripheral_main.c b/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/peripheral_main.c index 15e6aa0..8998945 100644 --- a/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/peripheral_main.c +++ b/EVT/EXAM/BLE/SpeedTest_Peripheral/APP/peripheral_main.c @@ -53,6 +53,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/BLE/SpeedTest_Peripheral/Profile/gattprofile.c b/EVT/EXAM/BLE/SpeedTest_Peripheral/Profile/gattprofile.c index 2fa75e3..3ca301d 100644 --- a/EVT/EXAM/BLE/SpeedTest_Peripheral/Profile/gattprofile.c +++ b/EVT/EXAM/BLE/SpeedTest_Peripheral/Profile/gattprofile.c @@ -118,7 +118,7 @@ static uint8_t simpleProfileChar4[SIMPLEPROFILE_CHAR4_LEN] = {0}; // instantiation of the Client Characteristic Configuration. Reads of the // Client Characteristic Configuration only shows the configuration for // that client and writes only affect the configuration of that client. -static gattCharCfg_t simpleProfileChar4Config[4]; +static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION]; // Simple Profile Characteristic 4 User Description static uint8_t simpleProfileChar4UserDesp[] = "Characteristic 4\0"; diff --git a/EVT/EXAM/BLE/peripheral_ancs_client/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/BLE/peripheral_ancs_client/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 28ea181..0000000 --- a/EVT/EXAM/BLE/peripheral_ancs_client/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -encoding//StdPeriphDriver/CH58x_sys.c=UTF-8 -encoding//app/main.c=UTF-8 -encoding//includes/sys/util.h=UTF-8 diff --git a/EVT/EXAM/BLE/peripheral_ancs_client/app/ancs.c b/EVT/EXAM/BLE/peripheral_ancs_client/app/ancs.c index 852d125..88f23ab 100644 --- a/EVT/EXAM/BLE/peripheral_ancs_client/app/ancs.c +++ b/EVT/EXAM/BLE/peripheral_ancs_client/app/ancs.c @@ -224,7 +224,7 @@ void peripheral_ancs_client_init(void) } // Set the GAP Characteristics - GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName); + GGS_SetParameter(GGS_DEVICE_NAME_ATT, sizeof(attDeviceName), attDeviceName); { uint16_t advInt = DEFAULT_ADVERTISING_INTERVAL; diff --git a/EVT/EXAM/BLE/peripheral_ancs_client/app/ch32v20x_it.c b/EVT/EXAM/BLE/peripheral_ancs_client/app/ch32v20x_it.c index 0c0d90b..f84a128 100644 --- a/EVT/EXAM/BLE/peripheral_ancs_client/app/ch32v20x_it.c +++ b/EVT/EXAM/BLE/peripheral_ancs_client/app/ch32v20x_it.c @@ -22,7 +22,6 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler @@ -60,15 +59,3 @@ void BB_IRQHandler(void) { BB_IRQLibHandler(); } - -/********************************************************************* - * @fn LLE_IRQHandler - * - * @brief LLE Interrupt for BLE. - * - * @return None - */ -void LLE_IRQHandler(void) -{ - LLE_IRQLibHandler(); -} diff --git a/EVT/EXAM/BLE/peripheral_ancs_client/app/main.c b/EVT/EXAM/BLE/peripheral_ancs_client/app/main.c index 3c55028..55cbb6a 100644 --- a/EVT/EXAM/BLE/peripheral_ancs_client/app/main.c +++ b/EVT/EXAM/BLE/peripheral_ancs_client/app/main.c @@ -393,6 +393,7 @@ void Main_Circulation(void) */ int main(void) { + SystemCoreClockUpdate(); Delay_Init(); #ifdef DEBUG USART_Printf_Init( 115200 ); diff --git a/EVT/EXAM/CAN/Networking/.settings/language.settings.xml b/EVT/EXAM/CAN/Networking/.settings/language.settings.xml deleted file mode 100644 index 605dd9f..0000000 --- a/EVT/EXAM/CAN/Networking/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/CAN/Networking/User/main.c b/EVT/EXAM/CAN/Networking/User/main.c index 612bb28..413033e 100644 --- a/EVT/EXAM/CAN/Networking/User/main.c +++ b/EVT/EXAM/CAN/Networking/User/main.c @@ -4,23 +4,23 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - CAN Normal mode, standard frame and expanded frame data transceiver: - CAN_Tx(PB9),CAN_Rx(PB8) - This routine requires an external CAN transceiver to demonstrate - Standard_Frame and Extended_Frame. - Standard_Frame: including 1 32bit filter mask bit pattern, 2 16bit filter - mask bit patterns,one 32bit identifier list mode, 2 16bit identifier list modes; - Extended_Frame: 1 32bit filter mask bit pattern. - -*/ + *CAN Normal mode, standard frame and expanded frame data transceiver: + *CAN_Tx(PB9),CAN_Rx(PB8) + *This routine requires an external CAN transceiver to demonstrate + *Standard_Frame and Extended_Frame. + *Standard_Frame: including 1 32bit filter mask bit pattern, 2 16bit filter + * mask bit patterns,one 32bit identifier list mode, 2 16bit identifier list modes; + *Extended_Frame: 1 32bit filter mask bit pattern. + * + */ #include "debug.h" @@ -239,9 +239,11 @@ int main(void) u8 px; u8 pxbuf[8]; + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); #if(CAN_MODE == TX_MODE) printf("Tx Mode\r\n"); diff --git a/EVT/EXAM/CAN/TestMode/.settings/language.settings.xml b/EVT/EXAM/CAN/TestMode/.settings/language.settings.xml deleted file mode 100644 index 9dd941d..0000000 --- a/EVT/EXAM/CAN/TestMode/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/CAN/TestMode/User/main.c b/EVT/EXAM/CAN/TestMode/User/main.c index 82157e5..f1b8e80 100644 --- a/EVT/EXAM/CAN/TestMode/User/main.c +++ b/EVT/EXAM/CAN/TestMode/User/main.c @@ -4,19 +4,19 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - CAN test mode, including silent mode, loopback mode and loopback silent mode: - CAN_Tx(PB9),CAN_Rx(PB8) - Standard_Frame:Including one 32bit filter mask bit pattern. - -*/ + *CAN test mode, including silent mode, loopback mode and loopback silent mode: + *CAN_Tx(PB9),CAN_Rx(PB8) + *Standard_Frame:Including one 32bit filter mask bit pattern. + * + */ #include "debug.h" @@ -184,9 +184,11 @@ int main(void) u8 txbuf[8]; u8 rxbuf[8]; + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); /* Bps = 333Kbps */ #if(TEST_MODE == SILENT_MODE) diff --git a/EVT/EXAM/CAN/Time-triggered/.settings/language.settings.xml b/EVT/EXAM/CAN/Time-triggered/.settings/language.settings.xml deleted file mode 100644 index a5b5197..0000000 --- a/EVT/EXAM/CAN/Time-triggered/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/CAN/Time-triggered/User/main.c b/EVT/EXAM/CAN/Time-triggered/User/main.c index 7567585..a8cefe3 100644 --- a/EVT/EXAM/CAN/Time-triggered/User/main.c +++ b/EVT/EXAM/CAN/Time-triggered/User/main.c @@ -4,20 +4,20 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - CAN time triggered communication mode: - CAN_Tx(PB9),CAN_Rx(PB8) -In the Extended_Frame, one 32bit filter mask bit communication configuration, - the demonstration time triggers the communication mode. - -*/ + *CAN time triggered communication mode: + *CAN_Tx(PB9),CAN_Rx(PB8) + *In the Extended_Frame, one 32bit filter mask bit communication configuration, + *the demonstration time triggers the communication mode. + * + */ #include "debug.h" @@ -274,9 +274,11 @@ int main(void) u8 cnt = 1; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); /* Bps = 333Kbps */ CAN_Mode_Init(CAN_SJW_1tq, CAN_BS2_5tq, CAN_BS1_6tq, 12, CAN_Mode_Normal); diff --git a/EVT/EXAM/CRC/CRC_Calculation/.settings/language.settings.xml b/EVT/EXAM/CRC/CRC_Calculation/.settings/language.settings.xml deleted file mode 100644 index 0dea5c2..0000000 --- a/EVT/EXAM/CRC/CRC_Calculation/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/CRC/CRC_Calculation/User/main.c b/EVT/EXAM/CRC/CRC_Calculation/User/main.c index b734fba..d4151ae 100644 --- a/EVT/EXAM/CRC/CRC_Calculation/User/main.c +++ b/EVT/EXAM/CRC/CRC_Calculation/User/main.c @@ -4,18 +4,18 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - CRC routine: - Use CRC-32 polynomial 0x4C11DB7. - -*/ + *CRC routine: + *Use CRC-32 polynomial 0x4C11DB7. + * + */ #include "debug.h" @@ -43,10 +43,11 @@ u32 CRCValue = 0; int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); - + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); printf("CRC TEST\r\n"); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); CRCValue = CRC_CalcBlockCRC((u32 *)SRC_BUF, Buf_Size); diff --git a/EVT/EXAM/DMA/DMA_MEM2MEM/User/main.c b/EVT/EXAM/DMA/DMA_MEM2MEM/User/main.c index d622c2b..699fc29 100644 --- a/EVT/EXAM/DMA/DMA_MEM2MEM/User/main.c +++ b/EVT/EXAM/DMA/DMA_MEM2MEM/User/main.c @@ -4,18 +4,18 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note -Memory to memory mode routine: -Transfer SRC_BUF[Buf_Size] to DST_BUF[Buf_Size] via DMA. - -*/ + *Memory to memory mode routine: + *Transfer SRC_BUF[Buf_Size] to DST_BUF[Buf_Size] via DMA. + * + */ #include "debug.h" @@ -102,10 +102,11 @@ int main(void) u8 i = 0; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); - + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); printf("DMA MEM2MEM TEST\r\n"); DMA1_CH3_Init(); diff --git a/EVT/EXAM/ETH/DHCP/.cproject b/EVT/EXAM/ETH/DHCP/.cproject index 6e31c53..8d514ae 100644 --- a/EVT/EXAM/ETH/DHCP/.cproject +++ b/EVT/EXAM/ETH/DHCP/.cproject @@ -242,5 +242,5 @@ - + diff --git a/EVT/EXAM/ETH/DHCP/.settings/language.settings.xml b/EVT/EXAM/ETH/DHCP/.settings/language.settings.xml deleted file mode 100644 index bf3d362..0000000 --- a/EVT/EXAM/ETH/DHCP/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/DHCP/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/DHCP/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/DHCP/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/DHCP/User/ch32v20x_it.c b/EVT/EXAM/ETH/DHCP/User/ch32v20x_it.c index 6c3cd70..b527796 100644 --- a/EVT/EXAM/ETH/DHCP/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/DHCP/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/DHCP/User/main.c b/EVT/EXAM/ETH/DHCP/User/main.c index a456c49..f9c21aa 100644 --- a/EVT/EXAM/ETH/DHCP/User/main.c +++ b/EVT/EXAM/ETH/DHCP/User/main.c @@ -16,7 +16,6 @@ For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ #include "string.h" -#include "debug.h" #include "eth_driver.h" u8 MACAddr[6]; //MAC address @@ -60,7 +59,7 @@ void TIM2_Init(void) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -126,9 +125,10 @@ void WCHNET_DataLoopback(u8 id) } #else u32 len, totallen; - u8 *p = MyBuf; + u8 *p = MyBuf, TransCnt = 255; len = WCHNET_SocketRecvLen(id, NULL); //query length + printf("Receive Len = %d\r\n", len); totallen = len; WCHNET_SocketRecv(id, MyBuf, &len); //Read the data of the receive buffer into MyBuf while(1){ @@ -136,7 +136,8 @@ void WCHNET_DataLoopback(u8 id) WCHNET_SocketSend(id, p, &len); //Send the data totallen -= len; //Subtract the sent length from the total length p += len; //offset buffer pointer - if(totallen)continue; //If the data is not sent, continue to send + if( !--TransCnt ) break; //Timeout exit + if(totallen) continue; //If the data is not sent, continue to send break; //After sending, exit } #endif @@ -217,6 +218,8 @@ void WCHNET_HandleGlobalInt(void) * @brief DHCPCallBack * * @param status - status returned by DHCP + * 0x00 - Success + * 0x01 - Failure * arg - Data returned by DHCP * * @return DHCP status @@ -246,7 +249,7 @@ u8 WCHNET_DHCPCallBack(u8 status, void *arg) (u16)IPAddr[2], (u16)IPAddr[3]); printf("GWIPAddr = %d.%d.%d.%d \r\n", (u16)GWIPAddr[0], (u16)GWIPAddr[1], (u16)GWIPAddr[2], (u16)GWIPAddr[3]); - printf("IPAddr = %d.%d.%d.%d \r\n", (u16)IPMask[0], (u16)IPMask[1], + printf("IPMask = %d.%d.%d.%d \r\n", (u16)IPMask[0], (u16)IPMask[1], (u16)IPMask[2], (u16)IPMask[3]); printf("DNS1: %d.%d.%d.%d \r\n", p[12], p[13], p[14], p[15]); printf("DNS2: %d.%d.%d.%d \r\n", p[16], p[17], p[18], p[19]); @@ -278,16 +281,19 @@ int main(void) Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("DHCP Test\r\n"); - printf("SystemClk:%d\r\n",SystemCoreClock); - printf("net version:%x\n",WCHNET_GetVer()); - if( WCHNET_LIB_VER != WCHNET_GetVer() ){ - printf("version error.\n"); + printf("DHCP Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); + printf("net version:%x\n", WCHNET_GetVer()); + if( WCHNET_LIB_VER != WCHNET_GetVer()){ + printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); for(i = 0; i < 6; i++) - printf("%x ",MACAddr[i]); + printf("%x ", MACAddr[i]); printf("\n"); TIM2_Init(); WCHNET_DHCPSetHostname("WCHNET"); //Configure DHCP host name diff --git a/EVT/EXAM/ETH/DHCP/User/net_config.h b/EVT/EXAM/ETH/DHCP/User/net_config.h index 1aa8a0d..9f63e15 100644 --- a/EVT/EXAM/ETH/DHCP/User/net_config.h +++ b/EVT/EXAM/ETH/DHCP/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/DNS/.cproject b/EVT/EXAM/ETH/DNS/.cproject index 122b6e1..107756d 100644 --- a/EVT/EXAM/ETH/DNS/.cproject +++ b/EVT/EXAM/ETH/DNS/.cproject @@ -242,5 +242,5 @@ - + diff --git a/EVT/EXAM/ETH/DNS/.settings/language.settings.xml b/EVT/EXAM/ETH/DNS/.settings/language.settings.xml deleted file mode 100644 index 089ff00..0000000 --- a/EVT/EXAM/ETH/DNS/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/DNS/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/DNS/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 103f95d..0000000 --- a/EVT/EXAM/ETH/DNS/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -encoding//NetLib/eth_driver.c=UTF-8 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/DNS/User/ch32v20x_it.c b/EVT/EXAM/ETH/DNS/User/ch32v20x_it.c index 6c3cd70..b527796 100644 --- a/EVT/EXAM/ETH/DNS/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/DNS/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/DNS/User/main.c b/EVT/EXAM/ETH/DNS/User/main.c index 9569101..72583aa 100644 --- a/EVT/EXAM/ETH/DNS/User/main.c +++ b/EVT/EXAM/ETH/DNS/User/main.c @@ -11,12 +11,12 @@ *******************************************************************************/ /* *@Note -DNS example ,demonstrate that DHCP automatically obtains an IP address and then requests domain name resolution. +DNS example ,demonstrate that DHCP automatically obtains +an IP address and then requests domain name resolution. For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ #include "string.h" -#include "debug.h" #include "eth_driver.h" u8 MACAddr[6]; //MAC address @@ -56,7 +56,7 @@ void TIM2_Init(void) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -182,7 +182,7 @@ u8 WCHNET_DHCPCallBack(u8 status, void *arg) (u16)IPAddr[2], (u16)IPAddr[3]); printf("GWIPAddr = %d.%d.%d.%d \r\n", (u16)GWIPAddr[0], (u16)GWIPAddr[1], (u16)GWIPAddr[2], (u16)GWIPAddr[3]); - printf("IPAddr = %d.%d.%d.%d \r\n", (u16)IPMask[0], (u16)IPMask[1], + printf("IPMask = %d.%d.%d.%d \r\n", (u16)IPMask[0], (u16)IPMask[1], (u16)IPMask[2], (u16)IPMask[3]); printf("DNS1: %d.%d.%d.%d \r\n", p[12], p[13], p[14], p[15]); //DNS server address provided by the router printf("DNS2: %d.%d.%d.%d \r\n", p[16], p[17], p[18], p[19]); @@ -211,16 +211,19 @@ int main(void) Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("DNS Test\r\n"); - printf("SystemClk:%d\r\n",SystemCoreClock); - printf("net version:%x\n",WCHNET_GetVer()); - if( WCHNET_LIB_VER != WCHNET_GetVer() ){ + printf("DNS Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); + printf("net version:%x\n", WCHNET_GetVer()); + if( WCHNET_LIB_VER != WCHNET_GetVer()){ printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); for(i = 0; i < 6; i++) - printf("%x ",MACAddr[i]); + printf("%x ", MACAddr[i]); printf("\n"); TIM2_Init(); WCHNET_DHCPSetHostname("WCHNET"); //Configure DHCP host name diff --git a/EVT/EXAM/ETH/DNS/User/net_config.h b/EVT/EXAM/ETH/DNS/User/net_config.h index 69e4747..100eb60 100644 --- a/EVT/EXAM/ETH/DNS/User/net_config.h +++ b/EVT/EXAM/ETH/DNS/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/ETH_CFG/.cproject b/EVT/EXAM/ETH/ETH_CFG/.cproject index c974d45..ed68b96 100644 --- a/EVT/EXAM/ETH/ETH_CFG/.cproject +++ b/EVT/EXAM/ETH/ETH_CFG/.cproject @@ -60,9 +60,9 @@ - + diff --git a/EVT/EXAM/ETH/ETH_CFG/.settings/language.settings.xml b/EVT/EXAM/ETH/ETH_CFG/.settings/language.settings.xml deleted file mode 100644 index 4f82fe5..0000000 --- a/EVT/EXAM/ETH/ETH_CFG/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/ETH_CFG/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/ETH_CFG/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/ETH_CFG/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/ETH_CFG/ModCfg/ModuleConfig.c b/EVT/EXAM/ETH/ETH_CFG/ModCfg/ModuleConfig.c index 4ddd5a2..401c6dc 100644 --- a/EVT/EXAM/ETH/ETH_CFG/ModCfg/ModuleConfig.c +++ b/EVT/EXAM/ETH/ETH_CFG/ModCfg/ModuleConfig.c @@ -12,7 +12,6 @@ #include #include #include "ModuleConfig.h" -#include "wchnet.h" /********************************************************************* * @fn CFG_ERASE diff --git a/EVT/EXAM/ETH/ETH_CFG/ModCfg/ModuleConfig.h b/EVT/EXAM/ETH/ETH_CFG/ModCfg/ModuleConfig.h index b5a60a8..a35fa57 100644 --- a/EVT/EXAM/ETH/ETH_CFG/ModCfg/ModuleConfig.h +++ b/EVT/EXAM/ETH/ETH_CFG/ModCfg/ModuleConfig.h @@ -73,10 +73,15 @@ typedef struct MODULE_CFG { }module_cfg,*pmodule_cfg; extern u8 MACAddr[6]; + extern u8 brocastIp[4]; + extern u8 Configbuf[MODULE_CFG_LEN]; + extern u8 Default_cfg[MODULE_CFG_LEN]; + extern u16 brocastPort; + extern pmodule_cfg CFG; extern u8 ParseConfigbuf(u8 *buf); @@ -87,4 +92,5 @@ extern void CFG_READ( u32 StartAddr, u8 *Buffer, u32 Length ); extern FLASH_Status CFG_WRITE( u32 StartAddr, u8 *Buffer, u32 Length ); +extern uint8_t WCHNET_SocketUdpSendTo( uint8_t socketid, uint8_t *buf, uint32_t *slen, uint8_t *sip, uint16_t port); #endif diff --git a/EVT/EXAM/ETH/ETH_CFG/User/ch32v20x_it.c b/EVT/EXAM/ETH/ETH_CFG/User/ch32v20x_it.c index 6c3cd70..b527796 100644 --- a/EVT/EXAM/ETH/ETH_CFG/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/ETH_CFG/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/ETH_CFG/User/main.c b/EVT/EXAM/ETH/ETH_CFG/User/main.c index bc21e79..e284096 100644 --- a/EVT/EXAM/ETH/ETH_CFG/User/main.c +++ b/EVT/EXAM/ETH/ETH_CFG/User/main.c @@ -19,7 +19,6 @@ For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ #include "string.h" -#include "debug.h" #include "eth_driver.h" #include "ModuleConfig.h" @@ -82,7 +81,7 @@ void TIM2_Init( void ) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -107,7 +106,7 @@ void TIM2_Init( void ) * * @return none */ -void WCHNET_UdpServerRecv(struct _SCOK_INF *socinf,u32 ipaddr,u16 port,u8 *buf,u32 len) +void WCHNET_UdpServerRecv(struct _SOCK_INF *socinf,u32 ipaddr,u16 port,u8 *buf,u32 len) { u8 i; @@ -130,7 +129,7 @@ void WCHNET_UdpServerRecv(struct _SCOK_INF *socinf,u32 ipaddr,u16 port,u8 *buf,u * * @return none */ -void WCHNET_UdpSRecv(struct _SCOK_INF *socinf,u32 ipaddr,u16 port,u8 *buf,u32 len) +void WCHNET_UdpSRecv(struct _SOCK_INF *socinf,u32 ipaddr,u16 port,u8 *buf,u32 len) { u8 ip_addr[4],i; @@ -163,41 +162,41 @@ void WCHNET_Create_Communication_Socket(void) TmpSocketInf.DesPort = ((u16)CFG->dest_port[0]+(u16)CFG->dest_port[1]*256); TmpSocketInf.SourPort = ((u16)CFG->src_port[0]+(u16)CFG->src_port[1]*256); switch(CFG->type){ - case NET_MODULE_TYPE_TCP_S: - TmpSocketInf.ProtoType = PROTO_TYPE_TCP; - sockFlag= NET_MODULE_TYPE_TCP_S; - break; - case NET_MODULE_TYPE_TCP_C: - TmpSocketInf.ProtoType = PROTO_TYPE_TCP; - sockFlag= NET_MODULE_TYPE_TCP_C; - break; - case NET_MODULE_TYPE_UDP_S: - TmpSocketInf.ProtoType = PROTO_TYPE_UDP; - TmpSocketInf.AppCallBack = WCHNET_UdpSRecv; - sockFlag= NET_MODULE_TYPE_UDP_S; - break; - case NET_MODULE_TYPE_UDP_C: - TmpSocketInf.ProtoType = PROTO_TYPE_UDP; - sockFlag= NET_MODULE_TYPE_UDP_C; - break; - default: - break; + case NET_MODULE_TYPE_TCP_S: + TmpSocketInf.ProtoType = PROTO_TYPE_TCP; + sockFlag= NET_MODULE_TYPE_TCP_S; + break; + case NET_MODULE_TYPE_TCP_C: + TmpSocketInf.ProtoType = PROTO_TYPE_TCP; + sockFlag= NET_MODULE_TYPE_TCP_C; + break; + case NET_MODULE_TYPE_UDP_S: + TmpSocketInf.ProtoType = PROTO_TYPE_UDP; + TmpSocketInf.AppCallBack = WCHNET_UdpSRecv; + sockFlag= NET_MODULE_TYPE_UDP_S; + break; + case NET_MODULE_TYPE_UDP_C: + TmpSocketInf.ProtoType = PROTO_TYPE_UDP; + sockFlag= NET_MODULE_TYPE_UDP_C; + break; + default: + break; } TmpSocketInf.RecvStartPoint = (u32)SocketRecvBuf[1]; TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); mStopIfError(i); switch(CFG->type){ - case NET_MODULE_TYPE_TCP_S: - WCHNET_SocketListen(SocketId); - printf("listening\n"); - break; - case NET_MODULE_TYPE_TCP_C: - WCHNET_SocketConnect(SocketId); - printf("connecting\n"); - break; - default: - break; + case NET_MODULE_TYPE_TCP_S: + WCHNET_SocketListen(SocketId); + printf("listening\n"); + break; + case NET_MODULE_TYPE_TCP_C: + WCHNET_SocketConnect(SocketId); + printf("connecting\n"); + break; + default: + break; } } @@ -252,18 +251,19 @@ void WCHNET_DataLoopback(u8 id) } #else u32 len, totallen; - u8 *p = MyBuf; + u8 *p = MyBuf, TransCnt = 255; len = WCHNET_SocketRecvLen(id, NULL); //query length - printf("Receive Len = %02x\n", len); - WCHNET_SocketRecv(id, MyBuf, &len); //Read the data of the receive buffer into MyBuf + printf("Receive Len = %d\r\n", len); totallen = len; + WCHNET_SocketRecv(id, MyBuf, &len); //Read the data of the receive buffer into MyBuf while(1){ len = totallen; WCHNET_SocketSend(id, p, &len); //Send the data totallen -= len; //Subtract the sent length from the total length p += len; //offset buffer pointer - if(totallen)continue; //If the data is not sent, continue to send + if( !--TransCnt ) break; //Timeout exit + if(totallen) continue; //If the data is not sent, continue to send break; //After sending, exit } #endif @@ -304,7 +304,6 @@ void WCHNET_HandleSockInt(u8 socketid,u8 initstat) } } - /********************************************************************* * @fn WCHNET_HandleGlobalInt * @@ -374,11 +373,14 @@ int main(void) Delay_Init(); USART_Printf_Init(115200); //USART initialize GPIOInit(); - printf("ETH_CFG\r\n"); - printf("SystemClk:%d\r\n",SystemCoreClock); - printf("net version:%x\n",WCHNET_GetVer()); - if( WCHNET_LIB_VER != WCHNET_GetVer() ){ - printf("version error.\n"); + printf("ETH CFG Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); + printf("net version:%x\n", WCHNET_GetVer()); + if(WCHNET_LIB_VER != WCHNET_GetVer()){ + printf("version error.\n"); } /*After the button(PB6) is pressed, initialize WCHNET * and execute the default configuration*/ @@ -406,7 +408,7 @@ int main(void) WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); for(i = 0; i < 6; i++) - printf("%x ",MACAddr[i]); + printf("%x ", MACAddr[i]); printf("\n"); TIM2_Init(); memcpy(IPAddr,CFG->src_ip,sizeof(CFG->src_ip)); diff --git a/EVT/EXAM/ETH/ETH_CFG/User/net_config.h b/EVT/EXAM/ETH/ETH_CFG/User/net_config.h index be177a9..4f8bafe 100644 --- a/EVT/EXAM/ETH/ETH_CFG/User/net_config.h +++ b/EVT/EXAM/ETH/ETH_CFG/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 1 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/ETH_IAP/.cproject b/EVT/EXAM/ETH/ETH_IAP/.cproject index 152ac57..f2daa69 100644 --- a/EVT/EXAM/ETH/ETH_IAP/.cproject +++ b/EVT/EXAM/ETH/ETH_IAP/.cproject @@ -244,5 +244,5 @@ - + diff --git a/EVT/EXAM/ETH/ETH_IAP/.settings/language.settings.xml b/EVT/EXAM/ETH/ETH_IAP/.settings/language.settings.xml deleted file mode 100644 index 0dd44e8..0000000 --- a/EVT/EXAM/ETH/ETH_IAP/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/ETH_IAP/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/ETH_IAP/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/ETH_IAP/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/ETH_IAP/User/ch32v20x_it.c b/EVT/EXAM/ETH/ETH_IAP/User/ch32v20x_it.c index a25c1be..4c6ce21 100644 --- a/EVT/EXAM/ETH/ETH_IAP/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/ETH_IAP/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/ETH_IAP/User/main.c b/EVT/EXAM/ETH/ETH_IAP/User/main.c index 71237d7..abe663c 100644 --- a/EVT/EXAM/ETH/ETH_IAP/User/main.c +++ b/EVT/EXAM/ETH/ETH_IAP/User/main.c @@ -12,7 +12,6 @@ #include #include #include "string.h" -#include "debug.h" #include "eth_driver.h" #include "IAP_Task.h" /* @@ -66,7 +65,7 @@ void TIM2_Init( void ) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -87,20 +86,20 @@ void TIM2_Init( void ) */ void WCHNET_CreateTcpSocket(void) { - u8 i; - SOCK_INF TmpSocketInf; + u8 i; + SOCK_INF TmpSocketInf; - memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); - memcpy((void *)TmpSocketInf.IPAddr,DESIP,4); - TmpSocketInf.DesPort = desport; - TmpSocketInf.SourPort = srcport; - TmpSocketInf.ProtoType = PROTO_TYPE_TCP; - TmpSocketInf.RecvBufLen = RECE_BUF_LEN; - i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); - printf("WCHNET_SocketCreat %d\r\n",SocketId); - mStopIfError(i); - i = WCHNET_SocketConnect(SocketId); - mStopIfError(i); + memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); + memcpy((void *)TmpSocketInf.IPAddr,DESIP,4); + TmpSocketInf.DesPort = desport; + TmpSocketInf.SourPort = srcport; + TmpSocketInf.ProtoType = PROTO_TYPE_TCP; + TmpSocketInf.RecvBufLen = RECE_BUF_LEN; + i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); + printf("WCHNET_SocketCreat %d\r\n",SocketId); + mStopIfError(i); + i = WCHNET_SocketConnect(SocketId); + mStopIfError(i); } /********************************************************************* @@ -163,26 +162,26 @@ void WCHNET_HandleGlobalInt(void) intstat = WCHNET_GetGlobalInt(); //get global interrupt flag if(intstat & GINT_STAT_UNREACH) //Unreachable interrupt { - printf("GINT_STAT_UNREACH\r\n"); + printf("GINT_STAT_UNREACH\r\n"); + } + if(intstat & GINT_STAT_IP_CONFLI) //IP conflict + { + printf("GINT_STAT_IP_CONFLI\r\n"); + } + if(intstat & GINT_STAT_PHY_CHANGE) //PHY status change + { + i = WCHNET_GetPHYStatus(); + if(i&PHY_Linked_Status) + printf("PHY Link Success\r\n"); + } + if(intstat & GINT_STAT_SOCKET) //socket related interrupt + { + for(i = 0; i < WCHNET_MAX_SOCKET_NUM; i++) + { + socketint = WCHNET_GetSocketInt(i); + if(socketint)WCHNET_HandleSockInt(i,socketint); + } } - if(intstat & GINT_STAT_IP_CONFLI) //IP conflict - { - printf("GINT_STAT_IP_CONFLI\r\n"); - } - if(intstat & GINT_STAT_PHY_CHANGE) //PHY status change - { - i = WCHNET_GetPHYStatus(); - if(i&PHY_Linked_Status) - printf("PHY Link Success\r\n"); - } - if(intstat & GINT_STAT_SOCKET) //socket related interrupt - { - for(i = 0; i < WCHNET_MAX_SOCKET_NUM; i++) - { - socketint = WCHNET_GetSocketInt(i); - if(socketint)WCHNET_HandleSockInt(i,socketint); - } - } } /********************************************************************* @@ -215,7 +214,7 @@ int main(void) u32 updateFlag; Delay_Init(); - USART_Printf_Init(115200); //USART initialize + USART_Printf_Init(115200); //USART initialize GPIOInit(); /*Detect whether the button(PA0) is pressed, if pressed, *make a TCP connection to upgrade, otherwise jump @@ -223,8 +222,11 @@ int main(void) if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0){ Delay_Ms(50); if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0){ - printf("IAP test\r\n"); - printf("SystemClk:%d\r\n",SystemCoreClock); + printf("IAP Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); printf("net version:%x\n",WCHNET_GetVer()); if( WCHNET_LIB_VER != WCHNET_GetVer() ){ printf("version error.\n"); diff --git a/EVT/EXAM/ETH/ETH_IAP/User/net_config.h b/EVT/EXAM/ETH/ETH_IAP/User/net_config.h index c76a774..03c56e2 100644 --- a/EVT/EXAM/ETH/ETH_IAP/User/net_config.h +++ b/EVT/EXAM/ETH/ETH_IAP/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/ETH_UART/.cproject b/EVT/EXAM/ETH/ETH_UART/.cproject index 7345f85..23875ab 100644 --- a/EVT/EXAM/ETH/ETH_UART/.cproject +++ b/EVT/EXAM/ETH/ETH_UART/.cproject @@ -244,5 +244,4 @@ - diff --git a/EVT/EXAM/ETH/ETH_UART/.settings/language.settings.xml b/EVT/EXAM/ETH/ETH_UART/.settings/language.settings.xml deleted file mode 100644 index fc63b52..0000000 --- a/EVT/EXAM/ETH/ETH_UART/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/ETH_UART/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/ETH_UART/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/ETH_UART/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/ETH_UART/User/bsp_uart.c b/EVT/EXAM/ETH/ETH_UART/User/bsp_uart.c index d2ff631..9211695 100644 --- a/EVT/EXAM/ETH/ETH_UART/User/bsp_uart.c +++ b/EVT/EXAM/ETH/ETH_UART/User/bsp_uart.c @@ -110,7 +110,7 @@ void UART_Interrupt_Init(void) * * @return none * */ -void BSP_Uart_Init(void) +void BSP_Uart_Init(uint32_t baudrate ) { USART_InitTypeDef USART_InitStructure = {0}; @@ -131,7 +131,7 @@ void BSP_Uart_Init(void) RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); - USART_InitStructure.USART_BaudRate = BAUD_RATE; + USART_InitStructure.USART_BaudRate = baudrate; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; diff --git a/EVT/EXAM/ETH/ETH_UART/User/bsp_uart.h b/EVT/EXAM/ETH/ETH_UART/User/bsp_uart.h index 49fedf9..722d604 100644 --- a/EVT/EXAM/ETH/ETH_UART/User/bsp_uart.h +++ b/EVT/EXAM/ETH/ETH_UART/User/bsp_uart.h @@ -16,13 +16,13 @@ #include "net_config.h" /* Global define */ -#define BAUD_RATE 1000000 +#define BAUD_RATE 921600 #define size(a) (sizeof(a) / sizeof(*(a))) #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) -#define UART_RX_DMA_SIZE 2048 //Must be a power of 2 ( a%2^n = a&(2^n - 1) ) +#define UART_RX_DMA_SIZE RECE_BUF_LEN #define ETH_RECEIVE_SIZE RECE_BUF_LEN @@ -47,7 +47,7 @@ struct uart_data extern struct uart_data uart_data_t; -extern void BSP_Uart_Init(void); +extern void BSP_Uart_Init(uint32_t baudrate ); #endif /* end of bsp_uart.h */ diff --git a/EVT/EXAM/ETH/ETH_UART/User/ch32v20x_it.c b/EVT/EXAM/ETH/ETH_UART/User/ch32v20x_it.c index 7de988b..9420e98 100644 --- a/EVT/EXAM/ETH/ETH_UART/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/ETH_UART/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" #include "bsp_uart.h" @@ -87,6 +86,8 @@ void DMA1_Channel7_IRQHandler(void) DMA_Cmd(DMA1_Channel7,DISABLE); uart_data_t.uart_tx_dma_state = IDLE; uart_data_t.tx_read++; + /* Prevent access from out-of-bounds */ + uart_data_t.tx_read = (uart_data_t.tx_read)%UART_TX_BUF_NUM; uart_data_t.tx_remainBuffNum++; DMA_ClearITPendingBit(DMA1_IT_TC7); } diff --git a/EVT/EXAM/ETH/ETH_UART/User/main.c b/EVT/EXAM/ETH/ETH_UART/User/main.c index 590b20b..f4df71e 100644 --- a/EVT/EXAM/ETH/ETH_UART/User/main.c +++ b/EVT/EXAM/ETH/ETH_UART/User/main.c @@ -12,27 +12,26 @@ /* *@Note ETH_UART example demonstrates data transparency between Ethernet and UART. -By default, 1000000 baud rate (can be changed in bsp_uart.h) is used for serial port data transmission. +By default, 921600 baud rate (can be changed in bsp_uart.h) is used for serial port data transmission. For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ #include "string.h" -#include "debug.h" #include "eth_driver.h" #include "bsp_uart.h" -u8 MACAddr[6]; //MAC address -u8 IPAddr[4] = {192,168,1,10}; //IP address -u8 GWIPAddr[4] = {192,168,1,1}; //Gateway IP address -u8 IPMask[4] = {255,255,255,0}; //subnet mask -u8 DESIP[4] = {192,168,1,100}; //destination IP address +u8 MACAddr[6]; //MAC address +u8 IPAddr[4] = {192, 168, 1, 10}; //IP address +u8 GWIPAddr[4] = {192, 168, 1, 1}; //Gateway IP address +u8 IPMask[4] = {255, 255, 255, 0}; //subnet mask +u8 DESIP[4] = {192, 168, 1, 100}; //destination IP address -u8 SocketId; //socket id -u8 SocketRecvBuf[RECE_BUF_LEN]; //socket data buff -u16 desport = 1000; //destination port -u16 srcport = 1000; //source port +u8 SocketId; //socket id +u8 SocketRecvBuf[RECE_BUF_LEN]; //socket data buff +u16 desport = 1000; //destination port +u16 srcport = 1000; //source port -u8 TCPConnValid = 0; //0 disconnected 1 connect +u8 TCPConnValid = 0; //0 disconnected 1 connect /********************************************************************* * @fn mStopIfError @@ -62,7 +61,7 @@ void TIM2_Init( void ) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -83,20 +82,20 @@ void TIM2_Init( void ) */ void WCHNET_CreateTcpSocket(void) { - u8 i; - SOCK_INF TmpSocketInf; + u8 i; + SOCK_INF TmpSocketInf; - memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); - memcpy((void *)TmpSocketInf.IPAddr,DESIP,4); - TmpSocketInf.DesPort = desport; - TmpSocketInf.SourPort = srcport; - TmpSocketInf.ProtoType = PROTO_TYPE_TCP; - TmpSocketInf.RecvBufLen = RECE_BUF_LEN; - i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); - printf("WCHNET_SocketCreat %d\r\n",SocketId); - mStopIfError(i); - i = WCHNET_SocketConnect(SocketId); - mStopIfError(i); + memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); + memcpy((void *)TmpSocketInf.IPAddr,DESIP,4); + TmpSocketInf.DesPort = desport; + TmpSocketInf.SourPort = srcport; + TmpSocketInf.ProtoType = PROTO_TYPE_TCP; + TmpSocketInf.RecvBufLen = RECE_BUF_LEN; + i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); + printf("WCHNET_SocketCreat %d\r\n",SocketId); + mStopIfError(i); + i = WCHNET_SocketConnect(SocketId); + mStopIfError(i); } @@ -109,59 +108,30 @@ void WCHNET_CreateTcpSocket(void) */ void uartRxAndSendDataToETH(void) { - int ret = -1; + u8 *p; uint32_t temp = 0; uint32_t len = 0; - uint32_t len_1 = 0; + uint32_t readindex = 0; temp = DMA1_Channel6->CNTR; /* uart rx dma CNTR not equal to last, indicating that data is received*/ if(temp != uart_data_t.last_RX_DMA_length) { - /* calculate the length of the received data */ - uart_data_t.rx_write += (uart_data_t.last_RX_DMA_length - temp) & (UART_RX_DMA_SIZE - 1); - - /* update last rx dma CNTR */ - uart_data_t.last_RX_DMA_length = temp; - - /*calculate the length of the RX_buffer */ - len = uart_data_t.rx_write - uart_data_t.rx_read; - - /* RX_buffer is full */ - if(len > UART_RX_DMA_SIZE) + if(temp < uart_data_t.last_RX_DMA_length) { - printf("uart2 RX DMA Buff is full!\r\n"); - len = 0; - uart_data_t.rx_read = 0; - uart_data_t.rx_write = 0; - uart_data_t.last_RX_DMA_length = 0; + len = uart_data_t.last_RX_DMA_length - temp; } - - /* send data starting from rx_read to RX_buffer end */ - len_1 = MIN(len,UART_RX_DMA_SIZE-(uart_data_t.rx_read&(UART_RX_DMA_SIZE-1))); - - if(len_1 != 0) - { - ret = WCHNET_SocketSend(SocketId, &uart_data_t.RX_buffer[uart_data_t.rx_read&(UART_RX_DMA_SIZE-1)], &len_1); - if (ret == 0) - { - uart_data_t.rx_read += len_1; - } - } - - /* send the rest of the data(if any) at beginning of RX_buffer */ - if( (len-len_1) != 0) - { - len_1 = len-len_1; - ret = WCHNET_SocketSend(SocketId, &uart_data_t.RX_buffer[0], &len_1); - if (ret == 0) - { - uart_data_t.rx_read += len_1; - } + else { + len = uart_data_t.last_RX_DMA_length; } + readindex = UART_RX_DMA_SIZE - uart_data_t.last_RX_DMA_length; + p = &uart_data_t.RX_buffer[readindex]; + WCHNET_SocketSend(SocketId, p, &len); + uart_data_t.last_RX_DMA_length -= len; + if(uart_data_t.last_RX_DMA_length == 0) + uart_data_t.last_RX_DMA_length = UART_RX_DMA_SIZE; } - } /********************************************************************* @@ -173,16 +143,13 @@ void uartRxAndSendDataToETH(void) */ void uartTx(void) { - uint16_t read_buf = 0; - if(uart_data_t.uart_tx_dma_state == IDLE) { /* eth has received data */ if(uart_data_t.tx_remainBuffNum < UART_TX_BUF_NUM) { - read_buf = (uart_data_t.tx_read)%UART_TX_BUF_NUM; - DMA1_Channel7->MADDR = (uint32_t) &uart_data_t.TX_buffer[read_buf]; - DMA1_Channel7->CNTR = uart_data_t.TX_data_length[read_buf]; + DMA1_Channel7->MADDR = (uint32_t) &uart_data_t.TX_buffer[uart_data_t.tx_read]; + DMA1_Channel7->CNTR = uart_data_t.TX_data_length[uart_data_t.tx_read]; uart_data_t.uart_tx_dma_state = BUSY; DMA_Cmd(DMA1_Channel7,ENABLE); } @@ -201,21 +168,21 @@ void uartTx(void) void ETHRx(u8 socketid) { u32 len; - uint8_t write_buf = 0; int8_t receive_state = -1; len = WCHNET_SocketRecvLen(socketid, NULL); /* query length */ if( uart_data_t.tx_remainBuffNum > 0) { - write_buf = (uart_data_t.tx_write)%UART_TX_BUF_NUM; /* socket receive */ - receive_state = WCHNET_SocketRecv(socketid, uart_data_t.TX_buffer[write_buf], &len); + receive_state = WCHNET_SocketRecv(socketid, uart_data_t.TX_buffer[uart_data_t.tx_write], &len); if(receive_state == WCHNET_ERR_SUCCESS) { - uart_data_t.TX_data_length[write_buf] = len; + uart_data_t.TX_data_length[uart_data_t.tx_write] = len; uart_data_t.tx_write++; + /* Prevent access from out-of-bounds */ + uart_data_t.tx_write = (uart_data_t.tx_write)%UART_TX_BUF_NUM; uart_data_t.tx_remainBuffNum--; } @@ -278,26 +245,26 @@ void WCHNET_HandleGlobalInt(void) intstat = WCHNET_GetGlobalInt(); //get global interrupt flag if(intstat & GINT_STAT_UNREACH) //Unreachable interrupt { - printf("GINT_STAT_UNREACH\r\n"); + printf("GINT_STAT_UNREACH\r\n"); + } + if(intstat & GINT_STAT_IP_CONFLI) //IP conflict + { + printf("GINT_STAT_IP_CONFLI\r\n"); + } + if(intstat & GINT_STAT_PHY_CHANGE) //PHY status change + { + i = WCHNET_GetPHYStatus(); //socket related interrupt + if(i&PHY_Linked_Status) + printf("PHY Link Success\r\n"); + } + if(intstat & GINT_STAT_SOCKET) + { + for(i = 0; i < WCHNET_MAX_SOCKET_NUM; i ++) + { + socketint = WCHNET_GetSocketInt(i); + if(socketint)WCHNET_HandleSockInt(i,socketint); + } } - if(intstat & GINT_STAT_IP_CONFLI) //IP conflict - { - printf("GINT_STAT_IP_CONFLI\r\n"); - } - if(intstat & GINT_STAT_PHY_CHANGE) //PHY status change - { - i = WCHNET_GetPHYStatus(); //socket related interrupt - if(i&PHY_Linked_Status) - printf("PHY Link Success\r\n"); - } - if(intstat & GINT_STAT_SOCKET) - { - for(i = 0; i < WCHNET_MAX_SOCKET_NUM; i ++) - { - socketint = WCHNET_GetSocketInt(i); - if(socketint)WCHNET_HandleSockInt(i,socketint); - } - } } /********************************************************************* @@ -313,19 +280,22 @@ int main(void) Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("ETH_UART\r\n"); - printf("SystemClk:%d\r\n",SystemCoreClock); - printf("net version:%x\n",WCHNET_GetVer()); - if( WCHNET_LIB_VER != WCHNET_GetVer() ){ - printf("version error.\n"); + printf("ETH_UART\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); + printf("net version:%x\n", WCHNET_GetVer()); + if(WCHNET_LIB_VER != WCHNET_GetVer()){ + printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); for(i = 0; i < 6; i++) - printf("%x ",MACAddr[i]); + printf("%x ", MACAddr[i]); printf("\n"); TIM2_Init(); - BSP_Uart_Init(); //USART2 initialize + BSP_Uart_Init(BAUD_RATE); //USART2 initialize i = ETH_LibInit(IPAddr,GWIPAddr,IPMask,MACAddr); //Ethernet library initialize mStopIfError(i); if(i == WCHNET_ERR_SUCCESS) printf("WCHNET_LibInit Success\r\n"); @@ -336,7 +306,7 @@ int main(void) { /*Ethernet library main task function, * which needs to be called cyclically*/ - WCHNET_MainTask(); + WCHNET_MainTask(); /*Query the Ethernet global interrupt, * if there is an interrupt, call the global interrupt handler*/ if(WCHNET_QueryGlobalInt()) diff --git a/EVT/EXAM/ETH/ETH_UART/User/net_config.h b/EVT/EXAM/ETH/ETH_UART/User/net_config.h index c76a774..03c56e2 100644 --- a/EVT/EXAM/ETH/ETH_UART/User/net_config.h +++ b/EVT/EXAM/ETH/ETH_UART/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/IPRaw_PING/.cproject b/EVT/EXAM/ETH/IPRaw_PING/.cproject index d9bb498..076bf11 100644 --- a/EVT/EXAM/ETH/IPRaw_PING/.cproject +++ b/EVT/EXAM/ETH/IPRaw_PING/.cproject @@ -245,5 +245,5 @@ - + diff --git a/EVT/EXAM/ETH/IPRaw_PING/.settings/language.settings.xml b/EVT/EXAM/ETH/IPRaw_PING/.settings/language.settings.xml deleted file mode 100644 index 8b6cb3d..0000000 --- a/EVT/EXAM/ETH/IPRaw_PING/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/IPRaw_PING/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/IPRaw_PING/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/IPRaw_PING/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/IPRaw_PING/User/ch32v20x_it.c b/EVT/EXAM/ETH/IPRaw_PING/User/ch32v20x_it.c index 3dd13a9..fa18303 100644 --- a/EVT/EXAM/ETH/IPRaw_PING/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/IPRaw_PING/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/IPRaw_PING/User/main.c b/EVT/EXAM/ETH/IPRaw_PING/User/main.c index b43f4cf..73faf20 100644 --- a/EVT/EXAM/ETH/IPRaw_PING/User/main.c +++ b/EVT/EXAM/ETH/IPRaw_PING/User/main.c @@ -11,12 +11,11 @@ *******************************************************************************/ /* *@Note -IPRaw_PING example, demonstrate the PING feature. +IPRaw_PING example, demonstrate the PING function. For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ #include "string.h" -#include "debug.h" #include "eth_driver.h" #include "PING.h" @@ -56,16 +55,14 @@ void mStopIfError(u8 iError) void TIM2_Init( void ) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure={0}; - RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ITConfig(TIM2, TIM_IT_Update ,ENABLE); - TIM_Cmd(TIM2, ENABLE); TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); NVIC_EnableIRQ(TIM2_IRQn); @@ -80,17 +77,17 @@ void TIM2_Init( void ) */ void WCHNET_CreateIPRawSocket(void) { - u8 i; - SOCK_INF TmpSocketInf; + u8 i; + SOCK_INF TmpSocketInf; - memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); - memcpy((void *)TmpSocketInf.IPAddr,DESIP,4); - TmpSocketInf.SourPort = IPRawProto; //In IPRAW mode, SourPort is the protocol type - TmpSocketInf.ProtoType = PROTO_TYPE_IP_RAW; - TmpSocketInf.RecvStartPoint = (u32)SocketRecvBuf; - TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; - i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); - mStopIfError(i); + memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); + memcpy((void *)TmpSocketInf.IPAddr,DESIP,4); + TmpSocketInf.SourPort = IPRawProto; //In IPRAW mode, SourPort is the protocol type + TmpSocketInf.ProtoType = PROTO_TYPE_IP_RAW; + TmpSocketInf.RecvStartPoint = (u32)SocketRecvBuf; + TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; + i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); + mStopIfError(i); } /********************************************************************* @@ -179,24 +176,28 @@ int main(void) Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("IPRaw_PING Test\r\n"); - printf("SystemClk:%d\r\n",SystemCoreClock); + printf("IPRaw_PING Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); printf("net version:%x\n",WCHNET_GetVer()); - if( WCHNET_LIB_VER != WCHNET_GetVer() ){ - printf("version error.\n"); + if(WCHNET_LIB_VER != WCHNET_GetVer()){ + printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); for(i = 0; i < 6; i++) - printf("%x ",MACAddr[i]); + printf("%x ", MACAddr[i]); printf("\n"); TIM2_Init(); i = ETH_LibInit(IPAddr,GWIPAddr,IPMask,MACAddr); //Ethernet library initialize mStopIfError(i); if(i == WCHNET_ERR_SUCCESS) printf("WCHNET_LibInit Success\r\n"); WCHNET_CreateIPRawSocket(); //create IPRAW socket - InitParameter( ); - InitPING( ); + InitParameter(); + InitPING(); + while(1) { /*Ethernet library main task function, diff --git a/EVT/EXAM/ETH/IPRaw_PING/User/net_config.h b/EVT/EXAM/ETH/IPRaw_PING/User/net_config.h index 9cb5af8..8b9d902 100644 --- a/EVT/EXAM/ETH/IPRaw_PING/User/net_config.h +++ b/EVT/EXAM/ETH/IPRaw_PING/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/MAC_RAW/.cproject b/EVT/EXAM/ETH/MAC_RAW/.cproject new file mode 100644 index 0000000..7fa67d0 --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/.cproject @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EVT/EXAM/ETH/MAC_RAW/.project b/EVT/EXAM/ETH/MAC_RAW/.project new file mode 100644 index 0000000..e2da590 --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/.project @@ -0,0 +1,59 @@ + + + MAC_RAW + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + Core + 2 + PARENT-2-PROJECT_LOC/SRC/Core + + + Debug + 2 + PARENT-2-PROJECT_LOC/SRC/Debug + + + Peripheral + 2 + PARENT-2-PROJECT_LOC/SRC/Peripheral + + + Startup + 2 + PARENT-2-PROJECT_LOC/SRC/Startup + + + + + 1595986042669 + + 22 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-*.wvproj + + + + diff --git a/EVT/EXAM/FreeRTOS/.template b/EVT/EXAM/ETH/MAC_RAW/.template similarity index 95% rename from EVT/EXAM/FreeRTOS/.template rename to EVT/EXAM/ETH/MAC_RAW/.template index 14b292b..6b9e719 100644 --- a/EVT/EXAM/FreeRTOS/.template +++ b/EVT/EXAM/ETH/MAC_RAW/.template @@ -1,6 +1,5 @@ Mcu Type=CH32V20x Address=0x08000000 -Target Path=obj/FreeRTOS.hex Erase All=true Program=true Verify=true @@ -14,3 +13,4 @@ Description=ROM(byte): 64K, SRAM(byte): 20K, CHIP PINS: 32, GPIO PORTS: 27.\nWCH PeripheralVersion=1.0 MCU=CH32V203RBT6 +Target Path=obj/MAC_RAW.hex \ No newline at end of file diff --git a/EVT/EXAM/ETH/MAC_RAW/ETH_Driver/eth_driver.c b/EVT/EXAM/ETH/MAC_RAW/ETH_Driver/eth_driver.c new file mode 100644 index 0000000..d0e29f5 --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/ETH_Driver/eth_driver.c @@ -0,0 +1,633 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : eth_driver.c +* Author : WCH +* Version : V1.3.0 +* Date : 2022/05/26 +* Description : eth program body. +********************************************************************************* +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* Attention: This software (modified or not) and binary are used for +* microcontroller manufactured by Nanjing Qinheng Microelectronics. +*******************************************************************************/ +#include "string.h" +#include "eth_driver.h" + +__attribute__((__aligned__(4))) ETH_DMADESCTypeDef DMARxDscrTab[ETH_RXBUFNB]; /* MAC receive descriptor, 4-byte aligned*/ +__attribute__((__aligned__(4))) ETH_DMADESCTypeDef DMATxDscrTab[ETH_TXBUFNB]; /* MAC send descriptor, 4-byte aligned */ + +__attribute__((__aligned__(4))) uint8_t MACRxBuf[ETH_RXBUFNB*ETH_RX_BUF_SZE]; /* MAC receive buffer, 4-byte aligned */ +__attribute__((__aligned__(4))) uint8_t MACTxBuf[ETH_TXBUFNB*ETH_TX_BUF_SZE]; /* MAC send buffer, 4-byte aligned */ + +ETH_DMADESCTypeDef *pDMARxSet; +ETH_DMADESCTypeDef *pDMATxSet; +ETH_DMADESCTypeDef *DMATxDescToSet; +ETH_DMADESCTypeDef *DMARxDescToGet; + +volatile uint8_t LinkSta = 0; //0: No valid link established 1:Valid link establishe +volatile uint8_t phyLinkReset; +volatile uint32_t phyLinkTime; +volatile uint32_t LocalTime; +uint8_t phyPN = 0x01; +uint8_t phyStatus = 0; +uint8_t phySucCnt = 0; +uint8_t phyLinkCnt = 0; +uint8_t phyRetryCnt = 0; +uint8_t CRCErrPktCnt = 0; +uint8_t phyLinkStatus = 0; +uint8_t phyPNChangeCnt = 0; +uint8_t PhyPolarityDetect = 0; +/********************************************************************* + * @fn WCHNET_GetMacAddr + * + * @brief Get MAC address + * + * @return none. + */ +void WCHNET_GetMacAddr( uint8_t *p ) +{ + uint8_t i; + uint8_t *macaddr=(uint8_t *)(ROM_CFG_USERADR_ID+5); + + for(i=0;i<6;i++) + { + *p = *macaddr; + p++; + macaddr--; + } +} + +/********************************************************************* + * @fn WCHNET_TimeIsr + * + * @brief + * + * @return none. + */ +void WCHNET_TimeIsr( uint16_t timperiod ) +{ + LocalTime += timperiod; +} + +/********************************************************************* + * @fn WritePHYReg + * + * @brief MCU write PHY register. + * + * @param reg_add - PHY address, + * reg_val - value you want to write. + * + * @return none + */ +void WritePHYReg(uint8_t reg_add,uint16_t reg_val) +{ + R32_ETH_MIWR = (reg_add & RB_ETH_MIREGADR_MIRDL) | (1<<8) | (reg_val<<16); +} + +/********************************************************************* + * @fn ReadPHYReg + * + * @brief MCU read PHY register. + * + * @param reg_add - PHY address. + * + * @return value you want to get. + */ +uint16_t ReadPHYReg(uint8_t reg_add) +{ + R8_ETH_MIREGADR = reg_add; // write address + return R16_ETH_MIRD; // get data +} + +/********************************************************************* + * @fn WCHNET_LinkProcess + * + * @brief link process. + * + * @param none. + * + * @return none. + */ +void WCHNET_LinkProcess( void ) +{ + uint16_t phy_anlpar, phy_bmcr, phy_bmsr; + + phy_anlpar = ReadPHYReg(PHY_ANLPAR); + phy_bmsr = ReadPHYReg(PHY_BMSR); + + if( (phy_anlpar&PHY_ANLPAR_SELECTOR_FIELD) ) + { + if( !(phyLinkStatus&PHY_LINK_WAIT_SUC) ) + { + if( (phyPN&0x0C) == PHY_PN_SWITCH_P ) + { + phySucCnt = 0; + phyLinkCnt = 0; + phyLinkStatus = PHY_LINK_WAIT_SUC; + } + else + { + if( !(phyLinkStatus&PHY_LINK_SUC_N) ) + { + phyRetryCnt = 0; + phyLinkStatus |= PHY_LINK_SUC_N; + phyPN &= ~PHY_PN_SWITCH_N; + phy_bmcr = ReadPHYReg(PHY_BMCR); + phy_bmcr |= 1<<9; + WritePHYReg(PHY_BMCR, phy_bmcr); + WritePHYReg(PHY_MDIX, phyPN); + } + else + { + phySucCnt = 0; + phyLinkCnt = 0; + phyLinkStatus = PHY_LINK_WAIT_SUC; + } + } + } + else{ + if((phySucCnt++ == 5) && ((phy_bmsr&(1<<5)) == 0)) + { + phySucCnt = 0; + phyRetryCnt = 0; + phyPNChangeCnt = 0; + phyLinkStatus = PHY_LINK_INIT; + phy_bmcr = ReadPHYReg(PHY_BMCR); + phy_bmcr |= 1<<9; + WritePHYReg(PHY_BMCR, phy_bmcr); + if((phyPN&0x0C) == PHY_PN_SWITCH_P) + { + phyPN |= PHY_PN_SWITCH_N; + } + else { + phyPN &= ~PHY_PN_SWITCH_N; + } + WritePHYReg(PHY_MDIX, phyPN); + } + } + } + else + { + if( phyLinkStatus == PHY_LINK_WAIT_SUC ) + { + if(phyLinkCnt++ == 10) + { + phyLinkCnt = 0; + phyRetryCnt = 0; + phyPNChangeCnt = 0; + phyLinkStatus = PHY_LINK_INIT; + } + } + else if(phyLinkStatus == PHY_LINK_INIT) + { + if(phyPNChangeCnt++ == 10) + { + phyPNChangeCnt = 0; + phyPN = ReadPHYReg(PHY_MDIX); + phyPN &= ~0x0c; + phyPN ^= 0x03; + WritePHYReg(PHY_MDIX, phyPN); + } + else{ + if((phyPN&0x0C) == PHY_PN_SWITCH_P) + { + phyPN |= PHY_PN_SWITCH_N; + } + else { + phyPN &= ~PHY_PN_SWITCH_N; + } + WritePHYReg(PHY_MDIX, phyPN); + } + } + else if(phyLinkStatus == PHY_LINK_SUC_N) + { + if((phyPN&0x0C) == PHY_PN_SWITCH_P) + { + phyPN |= PHY_PN_SWITCH_N; + phy_bmcr = ReadPHYReg(PHY_BMCR); + phy_bmcr |= 1<<9; + WritePHYReg(PHY_BMCR, phy_bmcr); + Delay_Us(10); + WritePHYReg(PHY_MDIX, phyPN); + } + else{ + if(phyRetryCnt++ == 15) + { + phyRetryCnt = 0; + phyPNChangeCnt = 0; + phyLinkStatus = PHY_LINK_INIT; + } + } + } + } +} + +/********************************************************************* + * @fn WCHNET_PhyPNProcess + * + * @brief Phy PN Polarity related processing + * + * @param none. + * + * @return none. + */ +void WCHNET_PhyPNProcess(void) +{ + uint32_t PhyVal; + + phyLinkTime = LocalTime; + if(CRCErrPktCnt >= 3) + { + PhyVal = ReadPHYReg(PHY_MDIX); + if((PhyVal >> 2) & 0x01) + PhyVal &= ~(3 << 2); //change PHY PN Polarity to normal + else + PhyVal |= 1 << 2; //change PHY PN Polarity to reverse + WritePHYReg(PHY_MDIX, PhyVal); + CRCErrPktCnt = 0; + } +} + +/********************************************************************* + * @fn WCHNET_HandlePhyNegotiation + * + * @brief Handle PHY Negotiation. + * + * @param none. + * + * @return none. + */ +void WCHNET_HandlePhyNegotiation(void) +{ + if(phyLinkReset) /* After the PHY link is disconnected, wait 500ms before turning on the PHY clock*/ + { + if( LocalTime - phyLinkTime >= 500 ) + { + phyLinkReset = 0; + EXTEN->EXTEN_CTR |= EXTEN_ETH_10M_EN; + WritePHYReg(PHY_BMCR, PHY_Reset); + PHY_NEGOTIATION_PARAM_INIT(); + } + } + else + { + if( !phyStatus ) /* Handling PHY Negotiation Exceptions */ + { + if( LocalTime - phyLinkTime >= PHY_LINK_TASK_PERIOD ) /* 50ms cycle timing call */ + { + phyLinkTime = LocalTime; + WCHNET_LinkProcess( ); + } + } + else{ + if(PhyPolarityDetect) + { + if( LocalTime - phyLinkTime >= 2 * PHY_LINK_TASK_PERIOD ) + { + WCHNET_PhyPNProcess(); + } + } + } + } +} + +/********************************************************************* + * @fn RecDataPolling + * + * @brief process received data. + * + * @param none. + * + * @return none. + */ +void RecDataPolling(void) +{ + uint32_t length, buffer; + + while(!(pDMARxSet->Status & ETH_DMARxDesc_OWN)) + { + if( !(pDMARxSet->Status & ETH_DMARxDesc_ES) &&\ + (pDMARxSet->Status & ETH_DMARxDesc_LS) &&\ + (pDMARxSet->Status & ETH_DMARxDesc_FS) ) + { + /* Get the Frame Length of the received packet: substruct 4 bytes of the CRC */ + length = ((pDMARxSet->Status & ETH_DMARxDesc_FL) >> 16) - 4; + /* Get the addrees of the actual buffer */ + buffer = pDMARxSet->Buffer1Addr; + + /* Do something*/ + printf("rec data:%d bytes\r\n",length); + printf("data:%x\r\n",*((uint8_t *)buffer)); + } + pDMARxSet->Status = ETH_DMARxDesc_OWN; + pDMARxSet = (ETH_DMADESCTypeDef *)pDMARxSet->Buffer2NextDescAddr; + } +} + +/********************************************************************* + * @fn WCHNET_MainTask + * + * @brief library main task function + * + * @return none. + */ +void WCHNET_MainTask(void) +{ + WCHNET_HandlePhyNegotiation( ); + RecDataPolling(); +} + +/********************************************************************* + * @fn ETH_DMATxDescChainInit + * + * @brief Initializes the DMA Tx descriptors in chain mode. + * + * @param DMATxDescTab - Pointer on the first Tx desc list + * TxBuff - Pointer on the first TxBuffer list + * TxBuffCount - Number of the used Tx desc in the list + * + * @return none + */ +void ETH_DMATxDescChainInit(ETH_DMADESCTypeDef *DMATxDescTab, uint8_t *TxBuff, uint32_t TxBuffCount) +{ + ETH_DMADESCTypeDef *DMATxDesc; + + DMATxDescToSet = DMATxDescTab; + DMATxDesc = DMATxDescTab; + DMATxDesc->Status = 0; + DMATxDesc->Buffer1Addr = (uint32_t)TxBuff; + DMATxDesc->Buffer2NextDescAddr = (uint32_t)DMATxDescTab; +} + +/********************************************************************* + * @fn ETH_DMARxDescChainInit + * + * @brief Initializes the DMA Rx descriptors in chain mode. + * + * @param DMARxDescTab - Pointer on the first Rx desc list. + * RxBuff - Pointer on the first RxBuffer list. + * RxBuffCount - Number of the used Rx desc in the list. + * + * @return none + */ +void ETH_DMARxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount) +{ + uint8_t i = 0; + ETH_DMADESCTypeDef *DMARxDesc; + + DMARxDescToGet = DMARxDescTab; + for(i = 0; i < RxBuffCount; i++) + { + DMARxDesc = DMARxDescTab + i; + DMARxDesc->Status = ETH_DMARxDesc_OWN; + DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i * ETH_MAX_PACKET_SIZE]); + + if(i < (RxBuffCount - 1)) + { + DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab + i + 1); + } + else + { + DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab); + } + } +} + +/********************************************************************* + * @fn ETH_Start + * + * @brief Enables ENET MAC and DMA reception/transmission. + * + * @return none + */ +void ETH_Start(void) +{ + R16_ETH_ERXST = DMARxDescToGet->Buffer1Addr; + R8_ETH_ECON1 |= RB_ETH_ECON1_RXEN; //receive enable +} + +/********************************************************************* + * @fn ETH_SetClock + * + * @brief Set ETH Clock(60MHz). + * + * @return none + */ +void ETH_SetClock(void) +{ + /* ETH initialization */ + RCC_ETHDIVConfig(RCC_ETHCLK_Div2); // 120M/2 = 60MHz +} + +/********************************************************************* + * @fn ETH_Configuration + * + * @brief Ethernet configure. + * + * @return none + */ +void ETH_Configuration( uint8_t *macAddr ) +{ + ETH_SetClock( ); + R8_ETH_EIE = 0; + R8_ETH_EIE |= RB_ETH_EIE_INTIE | + RB_ETH_EIE_RXIE| + RB_ETH_EIE_LINKIE| + RB_ETH_EIE_TXIE | + RB_ETH_EIE_TXERIE| + RB_ETH_EIE_RXERIE; //Turn on all interrupts + + R8_ETH_EIE |= RB_ETH_EIE_R_EN50; //Turn on 50 ohm pull-up + + R8_ETH_EIR = 0xff; //clear interrupt flag + R8_ETH_ESTAT |= RB_ETH_ESTAT_INT | RB_ETH_ESTAT_BUFER; //clear state + + R8_ETH_ECON1 |= (RB_ETH_ECON1_TXRST|RB_ETH_ECON1_RXRST); //Transceiver module reset + R8_ETH_ECON1 &= ~(RB_ETH_ECON1_TXRST|RB_ETH_ECON1_RXRST); + + //Filter mode, received packet type + R8_ETH_ERXFCON = 0; + R8_ETH_MAADRL1 = macAddr[5]; // MAC assignment + R8_ETH_MAADRL2 = macAddr[4]; + R8_ETH_MAADRL3 = macAddr[3]; + R8_ETH_MAADRL4 = macAddr[2]; + R8_ETH_MAADRL5 = macAddr[1]; + R8_ETH_MAADRL6 = macAddr[0]; + + //Filter mode, limit packet type + R8_ETH_MACON1 |= RB_ETH_MACON1_MARXEN; //MAC receive enable + R8_ETH_MACON2 &= ~RB_ETH_MACON2_PADCFG; + R8_ETH_MACON2 |= PADCFG_AUTO_3; //All short packets are automatically padded to 60 bytes + R8_ETH_MACON2 |= RB_ETH_MACON2_TXCRCEN; //Hardware padded CRC + R8_ETH_MACON2 &= ~RB_ETH_MACON2_HFRMEN; //Jumbo frames are not received + R16_ETH_MAMXFL = ETH_MAX_PACKET_SIZE; + + EXTEN->EXTEN_CTR |= EXTEN_ETH_10M_EN; +} + +/********************************************************************* + * @fn MACRAW_Tx + * + * @brief Ethernet sends data frames in chain mode. + * + * @param buff send buffer pointer + * len Send data length + * + * @return Send status. + */ +uint32_t MACRAW_Tx(uint8_t *buff, uint16_t len) +{ + /* Check if the descriptor is owned by the ETHERNET DMA (when set) or CPU (when reset) */ + if( DMATxDescToSet->Status & ETH_DMATxDesc_OWN ) + { + /* Return ERROR: OWN bit set */ + return ETH_ERROR; + } + DMATxDescToSet->Status |= ETH_DMATxDesc_OWN; + R16_ETH_ETXLN = len; + R16_ETH_ETXST = (uint32_t)buff; + R8_ETH_ECON1 |= RB_ETH_ECON1_TXRTS; //start sending + /* Update the ETHERNET DMA global Tx descriptor with next Tx descriptor */ + /* Chained Mode */ + /* Selects the next DMA Tx descriptor list for next buffer to send */ + DMATxDescToSet = (ETH_DMADESCTypeDef*) (DMATxDescToSet->Buffer2NextDescAddr); + /* Return SUCCESS */ + return ETH_SUCCESS; +} + +/********************************************************************* + * @fn ETH_PHYLink + * + * @brief + * + * @return none + */ +void ETH_PHYLink( void ) +{ + uint32_t phy_stat, phy_anlpar; + + phy_anlpar = ReadPHYReg(PHY_ANLPAR); + phy_stat = ReadPHYReg(PHY_BMSR); //Read PHY Status Register + + if((phy_stat&(PHY_Linked_Status))&&(phy_anlpar == 0)){ //restart negotiation + EXTEN->EXTEN_CTR &= ~EXTEN_ETH_10M_EN; + phyLinkReset = 1; + phyLinkTime = LocalTime; + return; + } + + if( (phy_stat&(PHY_Linked_Status)) && (phy_stat&PHY_AutoNego_Complete) ) + { + printf("Link Suc\r\n"); + if( phy_anlpar&(1<<6) ) + { + R8_ETH_MACON2 |= RB_ETH_MACON2_FULDPX; + } + else + { + R8_ETH_MACON2 &= ~RB_ETH_MACON2_FULDPX; + } + /* Receive CRC error packets */ + R8_ETH_ERXFCON |= RB_ETH_ERXFCON_CRCEN; + CRCErrPktCnt = 0; + PhyPolarityDetect = 1; + phyLinkTime = LocalTime; + phyStatus = PHY_Linked_Status; + ETH_Start( ); + LinkSta = 1; + } + else + { + LinkSta = 0; + EXTEN->EXTEN_CTR &= ~EXTEN_ETH_10M_EN; + phyLinkReset = 1; + phyLinkTime = LocalTime; + } +} + +/********************************************************************* + * @fn WCHNET_ETHIsr + * + * @brief + * + * @return none + */ +void WCHNET_ETHIsr( void ) +{ + uint8_t eth_irq_flag, estat_regval; + + eth_irq_flag = R8_ETH_EIR; + if(eth_irq_flag&RB_ETH_EIR_RXIF) //Receive complete + { + R8_ETH_EIR = RB_ETH_EIR_RXIF; + /* Check if the descriptor is owned by the ETHERNET DMA */ + if( DMARxDescToGet->Status & ETH_DMARxDesc_OWN ) + { + estat_regval = R8_ETH_ESTAT; + if(estat_regval & \ + (RB_ETH_ESTAT_BUFER | RB_ETH_ESTAT_RXCRCER | RB_ETH_ESTAT_RXNIBBLE | RB_ETH_ESTAT_RXMORE)) + { + return; + } + if( ((ETH_DMADESCTypeDef*)(DMARxDescToGet->Buffer2NextDescAddr))->Status& ETH_DMARxDesc_OWN ) + { + DMARxDescToGet->Status &= ~ETH_DMARxDesc_OWN; + DMARxDescToGet->Status &= ~ETH_DMARxDesc_ES; + DMARxDescToGet->Status |= (ETH_DMARxDesc_FS|ETH_DMARxDesc_LS); + DMARxDescToGet->Status &= ~ETH_DMARxDesc_FL; + DMARxDescToGet->Status |= ((R16_ETH_ERXLN+4)<Buffer2NextDescAddr); + R16_ETH_ERXST = DMARxDescToGet->Buffer1Addr; + } + } + if(PhyPolarityDetect) + { + PhyPolarityDetect = 0; + /* Discard CRC error packet */ + R8_ETH_ERXFCON &= ~RB_ETH_ERXFCON_CRCEN; + } + } + if(eth_irq_flag&RB_ETH_EIR_TXIF) //send completed + { + DMATxDescToSet->Status &= ~ETH_DMATxDesc_OWN; + R8_ETH_EIR = RB_ETH_EIR_TXIF; + } + if(eth_irq_flag&RB_ETH_EIR_LINKIF) //Link change + { + ETH_PHYLink(); + R8_ETH_EIR = RB_ETH_EIR_LINKIF; + } + if(eth_irq_flag&RB_ETH_EIR_TXERIF) //send error + { + DMATxDescToSet->Status &= ~ETH_DMATxDesc_OWN; + R8_ETH_EIR = RB_ETH_EIR_TXERIF; + } + if(eth_irq_flag&RB_ETH_EIR_RXERIF) //receive error + { + if(PhyPolarityDetect) CRCErrPktCnt++; + R8_ETH_EIR = RB_ETH_EIR_RXERIF; + } +} + +/********************************************************************* + * @fn ETH_Init + * + * @brief Ethernet initialization. + * + * @return none + */ +void ETH_Init( uint8_t *macAddr ) +{ + Delay_Ms(100); + ETH_Configuration( macAddr ); + ETH_DMATxDescChainInit(DMATxDscrTab, MACTxBuf, ETH_TXBUFNB); + ETH_DMARxDescChainInit(DMARxDscrTab, MACRxBuf, ETH_RXBUFNB); + pDMARxSet = DMARxDscrTab; + pDMATxSet = DMATxDscrTab; + NVIC_EnableIRQ(ETH_IRQn); +} + + +/******************************** endfile @ eth_driver ******************************/ diff --git a/EVT/EXAM/ETH/MAC_RAW/ETH_Driver/eth_driver.h b/EVT/EXAM/ETH/MAC_RAW/ETH_Driver/eth_driver.h new file mode 100644 index 0000000..5853310 --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/ETH_Driver/eth_driver.h @@ -0,0 +1,107 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : eth_driver.h +* Author : WCH +* Version : V1.3.0 +* Date : 2022/05/27 +* Description : This file contains the headers of the ETH Driver. +********************************************************************************* +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* Attention: This software (modified or not) and binary are used for +* microcontroller manufactured by Nanjing Qinheng Microelectronics. +*******************************************************************************/ +#ifndef __ETH_DRIVER__ +#define __ETH_DRIVER__ + +#ifdef __cplusplus + extern "C" { +#endif + +#include "debug.h" + +#define ROM_CFG_USERADR_ID 0x1FFFF7E8 + +#define PHY_LINK_TASK_PERIOD 50 + +#define PHY_ANLPAR_SELECTOR_FIELD 0x1F +#define PHY_ANLPAR_SELECTOR_VALUE 0x01 /* 5B'00001 */ + +#define PHY_LINK_INIT 0x00 +#define PHY_LINK_SUC_P (1<<0) +#define PHY_LINK_SUC_N (1<<1) +#define PHY_LINK_WAIT_SUC (1<<7) + +#define PHY_PN_SWITCH_P (0<<2) +#define PHY_PN_SWITCH_N (1<<2) +#define PHY_PN_SWITCH_AUTO (2<<2) + +#ifndef WCHNETTIMERPERIOD +#define WCHNETTIMERPERIOD 10 /* Timer period, in Ms. */ +#endif + +#define PHY_NEGOTIATION_PARAM_INIT() do{\ + phySucCnt = 0;\ + phyStatus = 0;\ + phyLinkCnt = 0;\ + phyRetryCnt = 0;\ + phyPNChangeCnt = 0;\ + phyLinkStatus = PHY_LINK_INIT;\ +}while(0) + +/* definition for Ethernet frame */ +#define ETH_MAX_PACKET_SIZE 1536 /* ETH_HEADER + ETH_EXTRA + MAX_ETH_PAYLOAD + ETH_CRC */ +#define ETH_HEADER 14 /* 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */ +#define ETH_CRC 4 /* Ethernet CRC */ +#define ETH_EXTRA 2 /* Extra bytes in some cases */ +#define VLAN_TAG 4 /* optional 802.1q VLAN Tag */ +#define MIN_ETH_PAYLOAD 46 /* Minimum Ethernet payload size */ +#define MAX_ETH_PAYLOAD 1500 /* Maximum Ethernet payload size */ + +/* Bit or field definition of TDES0 register (DMA Tx descriptor status register)*/ +#define ETH_DMATxDesc_OWN ((uint32_t)0x80000000) /* OWN bit: descriptor is owned by DMA engine */ + +/* Bit or field definition of RDES0 register (DMA Rx descriptor status register) */ +#define ETH_DMARxDesc_OWN ((uint32_t)0x80000000) /* OWN bit: descriptor is owned by DMA engine */ +#define ETH_DMARxDesc_FL ((uint32_t)0x3FFF0000) /* Receive descriptor frame length */ +#define ETH_DMARxDesc_ES ((uint32_t)0x00008000) /* Error summary: */ +#define ETH_DMARxDesc_FS ((uint32_t)0x00000200) /* First descriptor of the frame */ +#define ETH_DMARxDesc_LS ((uint32_t)0x00000100) /* Last descriptor of the frame */ + +#define ETH_DMARxDesc_FrameLengthShift 16 + +/* ETHERNET errors */ +#define ETH_ERROR ((uint32_t)0) +#define ETH_SUCCESS ((uint32_t)1) + +/* ETH structure definition */ +typedef struct +{ + uint32_t volatile Status; /* Status */ + uint32_t ControlBufferSize; /* Control and Buffer1, Buffer2 lengths */ + uint32_t Buffer1Addr; /* Buffer1 address pointer */ + uint32_t Buffer2NextDescAddr; /* Buffer2 or next descriptor address pointer */ +} ETH_DMADESCTypeDef; + +#define ETH_TXBUFNB 1 +#define ETH_RXBUFNB 4 +#define ETH_RX_BUF_SZE ETH_MAX_PACKET_SIZE +#define ETH_TX_BUF_SZE ETH_MAX_PACKET_SIZE +#define HARDWARE_CHECKSUM_CONFIG 1 /* Hardware checksum checking and insertion configuration, 1: enable, 0: disable */ + +extern ETH_DMADESCTypeDef *DMATxDescToSet; +extern ETH_DMADESCTypeDef *DMARxDescToGet; +extern __attribute__ ((aligned(4))) uint8_t MACTxBuf[ETH_TXBUFNB*ETH_TX_BUF_SZE]; + +void WCHNET_ETHIsr(void); +void ETH_PHYLink( void ); +void WCHNET_MainTask(void); +void ETH_Init( uint8_t *macAddr ); +void WCHNET_GetMacAddr( uint8_t *p ); +void WCHNET_TimeIsr( uint16_t timperiod ); +void ETH_Configuration( uint8_t *macAddr ); +uint32_t MACRAW_Tx(uint8_t *buff, uint16_t len); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/EVT/EXAM/ETH/MAC_RAW/Ld/Link.ld b/EVT/EXAM/ETH/MAC_RAW/Ld/Link.ld new file mode 100644 index 0000000..33563df --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/Ld/Link.ld @@ -0,0 +1 @@ +ENTRY( _start ) __stack_size = 2048; PROVIDE( _stack_size = __stack_size ); MEMORY { /* CH32V20x_D6 - CH32V203F6-CH32V203G6-CH32V203K6-CH32V203C6 */ /* FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K */ /* CH32V20x_D6 - CH32V203K8-CH32V203C8-CH32V203G8-CH32V203F8 */ /* FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K */ /* CH32V20x_D8 - CH32V203RB CH32V20x_D8W - CH32V208x FLASH + RAM supports the following configuration FLASH-128K + RAM-64K FLASH-144K + RAM-48K FLASH-160K + RAM-32K */ FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 128K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K } SECTIONS { .init : { _sinit = .; . = ALIGN(4); KEEP(*(SORT_NONE(.init))) . = ALIGN(4); _einit = .; } >FLASH AT>FLASH .vector : { *(.vector); . = ALIGN(64); } >FLASH AT>FLASH .text : { . = ALIGN(4); *(.text) *(.text.*) *(.rodata) *(.rodata*) *(.gnu.linkonce.t.*) . = ALIGN(4); } >FLASH AT>FLASH .fini : { KEEP(*(SORT_NONE(.fini))) . = ALIGN(4); } >FLASH AT>FLASH PROVIDE( _etext = . ); PROVIDE( _eitcm = . ); .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } >FLASH AT>FLASH .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } >FLASH AT>FLASH .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) PROVIDE_HIDDEN (__fini_array_end = .); } >FLASH AT>FLASH .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } >FLASH AT>FLASH .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } >FLASH AT>FLASH .dalign : { . = ALIGN(4); PROVIDE(_data_vma = .); } >RAM AT>FLASH .dlalign : { . = ALIGN(4); PROVIDE(_data_lma = .); } >FLASH AT>FLASH .data : { *(.gnu.linkonce.r.*) *(.data .data.*) *(.gnu.linkonce.d.*) . = ALIGN(8); PROVIDE( __global_pointer$ = . + 0x800 ); *(.sdata .sdata.*) *(.sdata2.*) *(.gnu.linkonce.s.*) . = ALIGN(8); *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*) . = ALIGN(4); PROVIDE( _edata = .); } >RAM AT>FLASH .bss : { . = ALIGN(4); PROVIDE( _sbss = .); *(.sbss*) *(.gnu.linkonce.sb.*) *(.bss*) *(.gnu.linkonce.b.*) *(COMMON*) . = ALIGN(4); PROVIDE( _ebss = .); } >RAM AT>FLASH PROVIDE( _end = _ebss); PROVIDE( end = . ); .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size : { PROVIDE( _heap_end = . ); . = ALIGN(4); PROVIDE(_susrstack = . ); . = . + __stack_size; PROVIDE( _eusrstack = .); } >RAM } \ No newline at end of file diff --git a/EVT/EXAM/FreeRTOS/FreeRTOS.wvproj b/EVT/EXAM/ETH/MAC_RAW/MAC_RAW.wvproj similarity index 100% rename from EVT/EXAM/FreeRTOS/FreeRTOS.wvproj rename to EVT/EXAM/ETH/MAC_RAW/MAC_RAW.wvproj diff --git a/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_conf.h b/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_conf.h new file mode 100644 index 0000000..46018c4 --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_conf.h @@ -0,0 +1,41 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_conf.h + * Author : WCH + * Version : V1.0.0 + * Date : 2021/06/06 + * Description : Library configuration file. +********************************************************************************* +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* Attention: This software (modified or not) and binary are used for +* microcontroller manufactured by Nanjing Qinheng Microelectronics. +*******************************************************************************/ +#ifndef __CH32V20x_CONF_H +#define __CH32V20x_CONF_H + +#include "ch32v20x_adc.h" +#include "ch32v20x_bkp.h" +#include "ch32v20x_can.h" +#include "ch32v20x_crc.h" +#include "ch32v20x_dbgmcu.h" +#include "ch32v20x_dma.h" +#include "ch32v20x_exti.h" +#include "ch32v20x_flash.h" +#include "ch32v20x_gpio.h" +#include "ch32v20x_i2c.h" +#include "ch32v20x_iwdg.h" +#include "ch32v20x_pwr.h" +#include "ch32v20x_rcc.h" +#include "ch32v20x_rtc.h" +#include "ch32v20x_spi.h" +#include "ch32v20x_tim.h" +#include "ch32v20x_usart.h" +#include "ch32v20x_wwdg.h" +#include "ch32v20x_it.h" +#include "ch32v20x_misc.h" + +#endif /* __CH32V20x_CONF_H */ + + + + + diff --git a/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_it.c b/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_it.c new file mode 100644 index 0000000..b527796 --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_it.c @@ -0,0 +1,72 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_it.c + * Author : WCH + * Version : V1.0.0 + * Date : 2021/06/06 + * Description : Main Interrupt Service Routines. +********************************************************************************* +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* Attention: This software (modified or not) and binary are used for +* microcontroller manufactured by Nanjing Qinheng Microelectronics. +*******************************************************************************/ +#include "ch32v20x_it.h" +#include "eth_driver.h" + +void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void ETH_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void TIM2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); + +/********************************************************************* + * @fn NMI_Handler + * + * @brief This function handles NMI exception. + * + * @return none + */ +void NMI_Handler(void) +{ + /**/ +} + +/********************************************************************* + * @fn HardFault_Handler + * + * @brief This function handles Hard Fault exception. + * + * @return none + */ +void HardFault_Handler(void) +{ + printf("HardFault_Handler\r\n"); + printf("mcause:%08x\r\n",__get_MCAUSE()); + printf("mtval:%08x\r\n",__get_MTVAL()); + printf("mepc:%08x\r\n",__get_MEPC()); + while (1); +} + +/********************************************************************* + * @fn ETH_IRQHandler + * + * @brief This function handles ETH exception. + * + * @return none + */ +void ETH_IRQHandler(void) +{ + WCHNET_ETHIsr(); +} + +/********************************************************************* + * @fn TIM2_IRQHandler + * + * @brief This function handles TIM2 exception. + * + * @return none + */ +void TIM2_IRQHandler(void) +{ + WCHNET_TimeIsr(WCHNETTIMERPERIOD); + TIM_ClearITPendingBit(TIM2, TIM_IT_Update); +} + diff --git a/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_it.h b/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_it.h new file mode 100644 index 0000000..d6902aa --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/User/ch32v20x_it.h @@ -0,0 +1,19 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : ch32v20x_it.h + * Author : WCH + * Version : V1.0.0 + * Date : 2021/06/06 + * Description : This file contains the headers of the interrupt handlers. +********************************************************************************* +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* Attention: This software (modified or not) and binary are used for +* microcontroller manufactured by Nanjing Qinheng Microelectronics. +*******************************************************************************/ +#ifndef __CH32V20x_IT_H +#define __CH32V20x_IT_H + +#include "debug.h" + +#endif /* __CH32V20x_IT_H */ + + diff --git a/EVT/EXAM/ETH/MAC_RAW/User/main.c b/EVT/EXAM/ETH/MAC_RAW/User/main.c new file mode 100644 index 0000000..325ebe0 --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/User/main.c @@ -0,0 +1,134 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : main.c + * Author : WCH + * Version : V1.0.0 + * Date : 2022/05/31 + * Description : Main program body. +********************************************************************************* +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* Attention: This software (modified or not) and binary are used for +* microcontroller manufactured by Nanjing Qinheng Microelectronics. +*******************************************************************************/ +/* + *@Note +MAC RAW example, demonstrating that MAC RAW receives and sends data. +For details on the selection of engineering chips, +please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. + */ +#include "string.h" +#include "eth_driver.h" + +extern volatile uint8_t LinkSta; +uint8_t MACAddr[6]; //MAC address +uint8_t ARPPackage[]= +{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* destination MAC address */ + 0x84, 0xc2, 0xe4, 0x01, 0x02, 0x03, /* source MAC address */ + 0x08,0x06, /* Type:ARP */ + 0x00,0x01, /* Hardware type:Ethernet(1) */ + 0x08,0x00, /* Protocol type:IPv4 */ + 0x06,0x04, /* Hardware size and Protocol size*/ + 0x00,0x01, /* Opcode:request(1) */ + 0x84, 0xc2, 0xe4, 0x01, 0x02, 0x03, /* Sender MAC address */ + 0xc0,0xa8,0x1,0x0f, /* Sender IP address */ + 0x00,0x00,0x00,0x00,0x00,0x00, /* Target MAC address */ + 0xc0,0xa8,0x1,0x64, /* Target IP address */ +#if 1 /* padding 16 bytes * line numbers */ + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55 +#endif +}; + +/********************************************************************* + * @fn TIM2_Init + * + * @brief Initializes TIM2. + * + * @return none + */ +void TIM2_Init(void) +{ + TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure = { 0 }; + + RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); + + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; + TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; + TIM_TimeBaseStructure.TIM_ClockDivision = 0; + TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; + TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); + TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); + + TIM_Cmd(TIM2, ENABLE); + TIM_ClearITPendingBit(TIM2, TIM_IT_Update); + NVIC_EnableIRQ(TIM2_IRQn); +} + +/********************************************************************* + * @fn main + * + * @brief Main program + * + * @return none + */ +int main(void) +{ + u8 i; + uint32_t PktCnt = 0; + + Delay_Init(); + USART_Printf_Init(115200); //USART initialize + printf("MAC_RAW Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); + WCHNET_GetMacAddr(MACAddr); //get the chip MAC address + printf("mac addr:"); + for(i = 0; i < 6; i++) + printf("%x ", MACAddr[i]); + printf("\n"); + TIM2_Init(); + ETH_Init(MACAddr); + /* change source MAC address */ + memcpy(&ARPPackage[6], MACAddr, 6); + memcpy(&ARPPackage[22], MACAddr, 6); + + while(1) + { + WCHNET_MainTask(); + if(LinkSta) + { + MACRAW_Tx(ARPPackage, sizeof(ARPPackage)); + if(++PktCnt % 100 == 0) + printf("PktCnt:%d\r\n",PktCnt); + Delay_Ms(100); + } + } +} diff --git a/EVT/EXAM/ETH/MAC_RAW/User/system_ch32v20x.c b/EVT/EXAM/ETH/MAC_RAW/User/system_ch32v20x.c new file mode 100644 index 0000000..7834d54 --- /dev/null +++ b/EVT/EXAM/ETH/MAC_RAW/User/system_ch32v20x.c @@ -0,0 +1,990 @@ +/********************************** (C) COPYRIGHT ******************************* + * File Name : system_ch32v20x.c + * Author : WCH + * Version : V1.0.0 + * Date : 2021/06/06 + * Description : CH32V20x Device Peripheral Access Layer System Source File. + * For HSE = 32Mhz (CH32V208x/CH32V203RBT6) + * For HSE = 8Mhz (other CH32V203x) +********************************************************************************* +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* Attention: This software (modified or not) and binary are used for +* microcontroller manufactured by Nanjing Qinheng Microelectronics. +*******************************************************************************/ +#include "ch32v20x.h" + +/* +* Uncomment the line corresponding to the desired System clock (SYSCLK) frequency (after +* reset the HSI is used as SYSCLK source). +* If none of the define below is enabled, the HSI is used as System clock source. +*/ +//#define SYSCLK_FREQ_HSE HSE_VALUE +//#define SYSCLK_FREQ_48MHz_HSE 48000000 +//#define SYSCLK_FREQ_56MHz_HSE 56000000 +//#define SYSCLK_FREQ_72MHz_HSE 72000000 +//#define SYSCLK_FREQ_96MHz_HSE 96000000 +#define SYSCLK_FREQ_120MHz_HSE 120000000 +//#define SYSCLK_FREQ_144MHz_HSE 144000000 +//#define SYSCLK_FREQ_HSI HSI_VALUE +//#define SYSCLK_FREQ_48MHz_HSI 48000000 +//#define SYSCLK_FREQ_56MHz_HSI 56000000 +//#define SYSCLK_FREQ_72MHz_HSI 72000000 +//#define SYSCLK_FREQ_96MHz_HSI 96000000 +//#define SYSCLK_FREQ_120MHz_HSI 120000000 +//#define SYSCLK_FREQ_144MHz_HSI 144000000 + +/* Clock Definitions */ +#ifdef SYSCLK_FREQ_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_96MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz_HSE +uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_96MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSI; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz_HSI +uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSI; /* System Clock Frequency (Core Clock) */ +#else +uint32_t SystemCoreClock = HSI_VALUE; /* System Clock Frequency (Core Clock) */ + +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + + +/* system_private_function_proto_types */ +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE +static void SetSysClockToHSE( void ); +#elif defined SYSCLK_FREQ_48MHz_HSE +static void SetSysClockTo48_HSE( void ); +#elif defined SYSCLK_FREQ_56MHz_HSE +static void SetSysClockTo56_HSE( void ); +#elif defined SYSCLK_FREQ_72MHz_HSE +static void SetSysClockTo72_HSE( void ); +#elif defined SYSCLK_FREQ_96MHz_HSE +static void SetSysClockTo96_HSE( void ); +#elif defined SYSCLK_FREQ_120MHz_HSE +static void SetSysClockTo120_HSE( void ); +#elif defined SYSCLK_FREQ_144MHz_HSE +static void SetSysClockTo144_HSE( void ); +#elif defined SYSCLK_FREQ_48MHz_HSI +static void SetSysClockTo48_HSI( void ); +#elif defined SYSCLK_FREQ_56MHz_HSI +static void SetSysClockTo56_HSI( void ); +#elif defined SYSCLK_FREQ_72MHz_HSI +static void SetSysClockTo72_HSI( void ); +#elif defined SYSCLK_FREQ_96MHz_HSI +static void SetSysClockTo96_HSI( void ); +#elif defined SYSCLK_FREQ_120MHz_HSI +static void SetSysClockTo120_HSI( void ); +#elif defined SYSCLK_FREQ_144MHz_HSI +static void SetSysClockTo144_HSI( void ); + +#endif + +/********************************************************************* + * @fn SystemInit + * + * @brief Setup the microcontroller system Initialize the Embedded Flash Interface, + * the PLL and update the SystemCoreClock variable. + * + * @return none + */ +void SystemInit (void) +{ + RCC->CTLR |= (uint32_t)0x00000001; + RCC->CFGR0 &= (uint32_t)0xF8FF0000; + RCC->CTLR &= (uint32_t)0xFEF6FFFF; + RCC->CTLR &= (uint32_t)0xFFFBFFFF; + RCC->CFGR0 &= (uint32_t)0xFF80FFFF; + RCC->INTR = 0x009F0000; + SetSysClock(); +} + + +/********************************************************************* + * @fn SystemCoreClockUpdate + * + * @brief Update SystemCoreClock variable according to Clock Register Values. + * + * @return none + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0, Pll_6_5 = 0; + + tmp = RCC->CFGR0 & RCC_SWS; + + switch (tmp) + { + case 0x00: + SystemCoreClock = HSI_VALUE; + break; + case 0x04: + SystemCoreClock = HSE_VALUE; + break; + case 0x08: + pllmull = RCC->CFGR0 & RCC_PLLMULL; + pllsource = RCC->CFGR0 & RCC_PLLSRC; + pllmull = ( pllmull >> 18) + 2; + + if(pllmull == 17) pllmull = 18; + + if (pllsource == 0x00) + { + if(EXTEN->EXTEN_CTR & EXTEN_PLL_HSI_PRE){ + SystemCoreClock = HSI_VALUE * pllmull; + } + else{ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + } + else + { +#if defined (CH32V20x_D8W) + if((RCC->CFGR0 & (3<<22)) == (3<<22)) + { + SystemCoreClock = ((HSE_VALUE>>1)) * pllmull; + } + else +#endif + if ((RCC->CFGR0 & RCC_PLLXTPRE) != (uint32_t)RESET) + { +#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) + SystemCoreClock = ((HSE_VALUE>>2) >> 1) * pllmull; +#else + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; +#endif + } + else + { +#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) + SystemCoreClock = (HSE_VALUE>>2) * pllmull; +#else + SystemCoreClock = HSE_VALUE * pllmull; +#endif + } + } + + if(Pll_6_5 == 1) SystemCoreClock = (SystemCoreClock / 2); + + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + + tmp = AHBPrescTable[((RCC->CFGR0 & RCC_HPRE) >> 4)]; + SystemCoreClock >>= tmp; +} + +/********************************************************************* + * @fn SetSysClock + * + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_48MHz_HSE + SetSysClockTo48_HSE(); +#elif defined SYSCLK_FREQ_56MHz_HSE + SetSysClockTo56_HSE(); +#elif defined SYSCLK_FREQ_72MHz_HSE + SetSysClockTo72_HSE(); +#elif defined SYSCLK_FREQ_96MHz_HSE + SetSysClockTo96_HSE(); +#elif defined SYSCLK_FREQ_120MHz_HSE + SetSysClockTo120_HSE(); +#elif defined SYSCLK_FREQ_144MHz_HSE + SetSysClockTo144_HSE(); +#elif defined SYSCLK_FREQ_48MHz_HSI + SetSysClockTo48_HSI(); +#elif defined SYSCLK_FREQ_56MHz_HSI + SetSysClockTo56_HSI(); +#elif defined SYSCLK_FREQ_72MHz_HSI + SetSysClockTo72_HSI(); +#elif defined SYSCLK_FREQ_96MHz_HSI + SetSysClockTo96_HSI(); +#elif defined SYSCLK_FREQ_120MHz_HSI + SetSysClockTo120_HSI(); +#elif defined SYSCLK_FREQ_144MHz_HSI + SetSysClockTo144_HSI(); + +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + * source (default after reset) + */ +} + + +#ifdef SYSCLK_FREQ_HSE + +/********************************************************************* + * @fn SetSysClockToHSE + * + * @brief Sets HSE as System clock source and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV1; + + /* Select HSE as system clock source + * CH32V20x_D6 (HSE=8MHZ) + * CH32V20x_D8 (HSE=32MHZ) + * CH32V20x_D8W (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x04) + { + } + } + else + { + /* If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo48_HSE + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 6 = 48 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 6 = 48 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 6 = 48 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL6); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_56MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo56_HSE + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 7 = 56 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 7 = 56 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 7 = 56 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL7); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_72MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo72_HSE + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 9 = 72 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 9 = 72 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 9 = 72 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL9); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_96MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo96_HSE + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 12 = 96 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 12 = 96 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 12 = 96 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL12); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_120MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo120_HSE + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if(HSEStatus == (uint32_t)0x01) + { +#if defined (CH32V20x_D8W) + RCC->CFGR0 |= (uint32_t)(3<<22); + /* HCLK = SYSCLK/2 */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV2; +#else + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; +#endif + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 15 = 120 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 15 = 120 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/2 * 15 = 240 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL15); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} +#elif defined SYSCLK_FREQ_144MHz_HSE + +/********************************************************************* + * @fn SetSysClockTo144_HSE + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144_HSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + + /* CH32V20x_D6-PLL configuration: PLLCLK = HSE * 18 = 144 MHz (HSE=8MHZ) + * CH32V20x_D8-PLL configuration: PLLCLK = HSE/4 * 18 = 144 MHz (HSE=32MHZ) + * CH32V20x_D8W-PLL configuration: PLLCLK = HSE/4 * 18 = 144 MHz (HSE=32MHZ) + */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo48_HSI + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 6 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL6); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + +#elif defined SYSCLK_FREQ_56MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo56_HSI + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 7 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL7); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + +#elif defined SYSCLK_FREQ_72MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo72_HSI + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 9 = 72 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL9); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#elif defined SYSCLK_FREQ_96MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo96_HSI + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 12 = 96 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL12); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#elif defined SYSCLK_FREQ_120MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo120_HSI + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 15 = 120 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL15); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t) ~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} +#elif defined SYSCLK_FREQ_144MHz_HSI + +/********************************************************************* + * @fn SetSysClockTo144_HSI + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144_HSI(void) +{ + EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; + + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSI * 18 = 144 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Div2 | RCC_PLLMULL18); + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } +} + + +#endif diff --git a/EVT/EXAM/FreeRTOS/User/system_ch32v20x.h b/EVT/EXAM/ETH/MAC_RAW/User/system_ch32v20x.h similarity index 100% rename from EVT/EXAM/FreeRTOS/User/system_ch32v20x.h rename to EVT/EXAM/ETH/MAC_RAW/User/system_ch32v20x.h diff --git a/EVT/EXAM/ETH/MQTT/.cproject b/EVT/EXAM/ETH/MQTT/.cproject index f515a40..41fd1d9 100644 --- a/EVT/EXAM/ETH/MQTT/.cproject +++ b/EVT/EXAM/ETH/MQTT/.cproject @@ -243,5 +243,5 @@ - + diff --git a/EVT/EXAM/ETH/MQTT/.settings/language.settings.xml b/EVT/EXAM/ETH/MQTT/.settings/language.settings.xml deleted file mode 100644 index 1a25c7d..0000000 --- a/EVT/EXAM/ETH/MQTT/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/MQTT/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/MQTT/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/MQTT/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/MQTT/User/ch32v20x_it.c b/EVT/EXAM/ETH/MQTT/User/ch32v20x_it.c index adf3847..1fe91ad 100644 --- a/EVT/EXAM/ETH/MQTT/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/MQTT/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/MQTT/User/main.c b/EVT/EXAM/ETH/MQTT/User/main.c index 843a257..120c05d 100644 --- a/EVT/EXAM/ETH/MQTT/User/main.c +++ b/EVT/EXAM/ETH/MQTT/User/main.c @@ -19,7 +19,6 @@ For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ #include "string.h" -#include "debug.h" #include "eth_driver.h" #include "MQTTPacket.h" @@ -77,7 +76,7 @@ void TIM2_Init( void ) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -285,7 +284,7 @@ void msgDeal(unsigned char *msg, int len) unsigned char *ptr = msg; printf("payload len = %d\r\n",len); printf("payload: "); - for(u8 i = 0; i < len; i++) + for(int i = 0; i < len; i++) { printf("%c ",(u16)*ptr); ptr++; @@ -360,7 +359,6 @@ void WCHNET_HandleSockInt(u8 socketid, u8 intstat) } } - /********************************************************************* * @fn WCHNET_HandleGlobalInt * @@ -411,10 +409,13 @@ int main(void) u8 i; Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("MQTT\r\n"); - printf("SystemClk:%d\r\n",SystemCoreClock); + printf("MQTT Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); printf("net version:%x\n",WCHNET_GetVer()); - if( WCHNET_LIB_VER != WCHNET_GetVer() ){ + if(WCHNET_LIB_VER != WCHNET_GetVer()){ printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address diff --git a/EVT/EXAM/ETH/MQTT/User/net_config.h b/EVT/EXAM/ETH/MQTT/User/net_config.h index c76a774..03c56e2 100644 --- a/EVT/EXAM/ETH/MQTT/User/net_config.h +++ b/EVT/EXAM/ETH/MQTT/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/Mail/.settings/language.settings.xml b/EVT/EXAM/ETH/Mail/.settings/language.settings.xml deleted file mode 100644 index b116580..0000000 --- a/EVT/EXAM/ETH/Mail/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/Mail/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/Mail/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/Mail/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/Mail/Mail/inc/mail.h b/EVT/EXAM/ETH/Mail/Mail/inc/mail.h index b46ca16..3f6414c 100644 --- a/EVT/EXAM/ETH/Mail/Mail/inc/mail.h +++ b/EVT/EXAM/ETH/Mail/Mail/inc/mail.h @@ -15,8 +15,6 @@ #include #include #include -#include "debug.h" -#include "wchnet.h" #include "eth_driver.h" #include "mailcmd.h" diff --git a/EVT/EXAM/ETH/Mail/User/ch32v20x_it.c b/EVT/EXAM/ETH/Mail/User/ch32v20x_it.c index 6c3cd70..b527796 100644 --- a/EVT/EXAM/ETH/Mail/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/Mail/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/Mail/User/main.c b/EVT/EXAM/ETH/Mail/User/main.c index b4aa595..7f0aa40 100644 --- a/EVT/EXAM/ETH/Mail/User/main.c +++ b/EVT/EXAM/ETH/Mail/User/main.c @@ -16,7 +16,6 @@ For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ #include "string.h" -#include "debug.h" #include "eth_driver.h" #include "mail.h" @@ -28,9 +27,9 @@ u8 DESIP[4] = {192,168,1,100}; //destination u8 SocketId; //socket id u8 SocketRecvBuf[WCHNET_MAX_SOCKET_NUM][RECE_BUF_LEN]; //socket data buff -u8 ReceDatFlag = 0; -u8 CheckType; -u8 OrderType; +u8 ReceDatFlag = 0; +u8 CheckType; +u8 OrderType; u16 ReceLen; /*SMTP related definitions, SMTP sending mail*/ @@ -116,7 +115,7 @@ void TIM2_Init( void ) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -148,9 +147,7 @@ void WCHNET_CreateTcpSmtp( void ) TmpSocketInf.ProtoType = PROTO_TYPE_TCP; TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); - printf("SocketId TCP SMTP = %02x\n",(u16)SocketId); - mStopIfError(i); p_smtp->Socket = SocketId; CheckType = SMTP_CHECK_CNNT; @@ -167,25 +164,24 @@ void WCHNET_CreateTcpSmtp( void ) */ void WCHNET_CreateTcpPop3( void ) { - u8 i; - SOCK_INF TmpSocketInf; + u8 i; + SOCK_INF TmpSocketInf; - memset((void *)SocketRecvBuf[1],'\0',sizeof(SocketRecvBuf[1])); - memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); - memcpy((void *)TmpSocketInf.IPAddr,SocketPOP3IP,4); - TmpSocketInf.DesPort = POP3_SERVER_PORT; - TmpSocketInf.SourPort = Pop3SourPrt; - TmpSocketInf.ProtoType = PROTO_TYPE_TCP; - TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; - i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); - printf("SocketId TCP pop3 = %02x\n",(u16)SocketId); - mStopIfError(i); - - p_pop3->Socket = SocketId; - CheckType = POP_CHECK_CNNT; - i = WCHNET_SocketConnect(SocketId); - mStopIfError(i); - memset((void *)SocketRecvBuf[SocketId],'\0',sizeof(SocketRecvBuf[SocketId])); + memset((void *)SocketRecvBuf[1],'\0',sizeof(SocketRecvBuf[1])); + memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); + memcpy((void *)TmpSocketInf.IPAddr,SocketPOP3IP,4); + TmpSocketInf.DesPort = POP3_SERVER_PORT; + TmpSocketInf.SourPort = Pop3SourPrt; + TmpSocketInf.ProtoType = PROTO_TYPE_TCP; + TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; + i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); + printf("SocketId TCP pop3 = %02x\n",(u16)SocketId); + mStopIfError(i); + p_pop3->Socket = SocketId; + CheckType = POP_CHECK_CNNT; + i = WCHNET_SocketConnect(SocketId); + mStopIfError(i); + memset((void *)SocketRecvBuf[SocketId],'\0',sizeof(SocketRecvBuf[SocketId])); } /********************************************************************* @@ -202,8 +198,10 @@ void WCHNET_CreateTcpPop3( void ) void WCHNET_SendData( char *PSend, u32 Len,u8 type,u8 id ) { u32 length; + u8 TimoutCnt = 0xff; u8 i; u8 *p; + p = (u8 *)PSend; length = Len; CheckType = type; @@ -214,6 +212,8 @@ void WCHNET_SendData( char *PSend, u32 Len,u8 type,u8 id ) mStopIfError(i); length -= Len; p += Len; + if(TimoutCnt-- == 0) + break; if(length)continue; break; } @@ -317,16 +317,19 @@ int main(void) Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("Mail\r\n"); - printf("SystemClk:%d\r\n",SystemCoreClock); + printf("Mail Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); printf("net version:%x\n",WCHNET_GetVer()); - if( WCHNET_LIB_VER != WCHNET_GetVer() ){ - printf("version error.\n"); + if( WCHNET_LIB_VER != WCHNET_GetVer()){ + printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); for(i = 0; i < 6; i++) - printf("%x ",MACAddr[i]); + printf("%x ", MACAddr[i]); printf("\n"); TIM2_Init(); i = ETH_LibInit(IPAddr,GWIPAddr,IPMask,MACAddr); //Ethernet library initialize diff --git a/EVT/EXAM/ETH/Mail/User/net_config.h b/EVT/EXAM/ETH/Mail/User/net_config.h index c5d98f9..3d26a0a 100644 --- a/EVT/EXAM/ETH/Mail/User/net_config.h +++ b/EVT/EXAM/ETH/Mail/User/net_config.h @@ -24,15 +24,17 @@ extern "C" { #define WCHNET_NUM_UDP 0 /* The number of UDP connections */ -#define WCHNET_NUM_TCP 2 /* Number of TCP connections */ +#define WCHNET_NUM_TCP 4 /* Number of TCP connections */ #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/NetLib/eth_driver.c b/EVT/EXAM/ETH/NetLib/eth_driver.c index a6742a2..cebd4d3 100644 --- a/EVT/EXAM/ETH/NetLib/eth_driver.c +++ b/EVT/EXAM/ETH/NetLib/eth_driver.c @@ -9,9 +9,7 @@ * Attention: This software (modified or not) and binary are used for * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ - #include "string.h" -#include "debug.h" #include "eth_driver.h" __attribute__((__aligned__(4))) ETH_DMADESCTypeDef DMARxDscrTab[ETH_RXBUFNB]; /* MAC receive descriptor, 4-byte aligned*/ @@ -45,18 +43,20 @@ const uint16_t MemSize[8] = {WCHNET_MEM_ALIGN_SIZE(WCHNET_SIZE_IPRAW_PCB), uint32_t volatile LocalTime; ETH_DMADESCTypeDef *DMATxDescToSet; - -uint32_t phyLinkTime; -uint8_t phyLinkStatus = 0; -uint8_t phyStatus = 0; -uint8_t phyPN = 0x01; -uint8_t phyPNChangeCnt = 0; -uint8_t phyLinkCnt = 0; -uint8_t phyRetryCnt = 0; -uint8_t phySucCnt = 0; ETH_DMADESCTypeDef *DMARxDescToGet; ETH_DMADESCTypeDef *pDMARxSet; +volatile uint8_t phyLinkReset; +volatile uint32_t phyLinkTime; +uint8_t phyPN = 0x01; +uint8_t phyStatus = 0; +uint8_t phySucCnt = 0; +uint8_t phyLinkCnt = 0; +uint8_t phyRetryCnt = 0; +uint8_t CRCErrPktCnt = 0; +uint8_t phyLinkStatus = 0; +uint8_t phyPNChangeCnt = 0; +uint8_t PhyPolarityDetect = 0; /********************************************************************* * @fn WCHNET_GetMacAddr * @@ -242,6 +242,32 @@ void WCHNET_LinkProcess( void ) } } +/********************************************************************* + * @fn WCHNET_PhyPNProcess + * + * @brief Phy PN Polarity related processing + * + * @param none. + * + * @return none. + */ +void WCHNET_PhyPNProcess(void) +{ + uint32_t PhyVal; + + phyLinkTime = LocalTime; + if(CRCErrPktCnt >= 3) + { + PhyVal = ReadPHYReg(PHY_MDIX); + if((PhyVal >> 2) & 0x01) + PhyVal &= ~(3 << 2); //change PHY PN Polarity to normal + else + PhyVal |= 1 << 2; //change PHY PN Polarity to reverse + WritePHYReg(PHY_MDIX, PhyVal); + CRCErrPktCnt = 0; + } +} + /********************************************************************* * @fn WCHNET_HandlePhyNegotiation * @@ -253,14 +279,34 @@ void WCHNET_LinkProcess( void ) */ void WCHNET_HandlePhyNegotiation(void) { - if( !phyStatus ) /* Handling PHY Negotiation Exceptions */ + if(phyLinkReset) /* After the PHY link is disconnected, wait 500ms before turning on the PHY clock*/ { - if(phyLinkTime > LocalTime) - phyLinkTime = LocalTime; - if( LocalTime - phyLinkTime >= PHY_LINK_TASK_PERIOD ) /* 50ms cycle timing call */ + if( LocalTime - phyLinkTime >= 500 ) { - phyLinkTime = LocalTime; - WCHNET_LinkProcess( ); + phyLinkReset = 0; + EXTEN->EXTEN_CTR |= EXTEN_ETH_10M_EN; + WritePHYReg(PHY_BMCR, PHY_Reset); + PHY_NEGOTIATION_PARAM_INIT(); + } + } + else + { + if( !phyStatus ) /* Handling PHY Negotiation Exceptions */ + { + if( LocalTime - phyLinkTime >= PHY_LINK_TASK_PERIOD ) /* 50ms cycle timing call */ + { + phyLinkTime = LocalTime; + WCHNET_LinkProcess( ); + } + } + else{ + if(PhyPolarityDetect) + { + if( LocalTime - phyLinkTime >= 2 * PHY_LINK_TASK_PERIOD ) + { + WCHNET_PhyPNProcess(); + } + } } } } @@ -404,7 +450,6 @@ void ETH_Start(void) { R16_ETH_ERXST = DMARxDescToGet->Buffer1Addr; R8_ETH_ECON1 |= RB_ETH_ECON1_RXEN; //receive enable - EXTEN->EXTEN_CTR |= EXTEN_ETH_10M_EN; } /********************************************************************* @@ -462,14 +507,17 @@ void ETH_Configuration( uint8_t *macAddr ) R8_ETH_MACON2 |= RB_ETH_MACON2_TXCRCEN; //Hardware padded CRC R8_ETH_MACON2 &= ~RB_ETH_MACON2_HFRMEN; //Jumbo frames are not received R16_ETH_MAMXFL = ETH_MAX_PACKET_SIZE; + + EXTEN->EXTEN_CTR |= EXTEN_ETH_10M_EN; } /********************************************************************* * @fn ETH_TxPktChainMode * - * @brief MAC send a Ethernet frame in chain mode. + * @brief Ethernet sends data frames in chain mode. * - * @param Send length + * @param len Send data length + * pBuff send buffer pointer * * @return Send status. */ @@ -493,22 +541,24 @@ uint32_t ETH_TxPktChainMode(uint16_t len, uint32_t *pBuff ) return ETH_SUCCESS; } +/********************************************************************* + * @fn ETH_PHYLink + * + * @brief + * + * @return none + */ void ETH_PHYLink( void ) { - uint16_t RegValue; uint32_t phy_stat, phy_anlpar; phy_anlpar = ReadPHYReg(PHY_ANLPAR); phy_stat = ReadPHYReg(PHY_BMSR); //Read PHY Status Register if((phy_stat&(PHY_Linked_Status))&&(phy_anlpar == 0)){ //restart negotiation - RegValue = ReadPHYReg(PHY_BMCR); - RegValue |= PHY_Reset; - WritePHYReg(PHY_BMCR, RegValue); EXTEN->EXTEN_CTR &= ~EXTEN_ETH_10M_EN; - Delay_Ms(500); - EXTEN->EXTEN_CTR |= EXTEN_ETH_10M_EN; - PHY_NEGOTIATION_PARAM_INIT(); + phyLinkReset = 1; + phyLinkTime = LocalTime; return; } WCHNET_PhyStatus( phy_stat ); @@ -523,11 +573,19 @@ void ETH_PHYLink( void ) { R8_ETH_MACON2 &= ~RB_ETH_MACON2_FULDPX; } + /* Receive CRC error packets */ + R8_ETH_ERXFCON |= RB_ETH_ERXFCON_CRCEN; + CRCErrPktCnt = 0; + PhyPolarityDetect = 1; + phyLinkTime = LocalTime; phyStatus = PHY_Linked_Status; + ETH_Start( ); } else { - PHY_NEGOTIATION_PARAM_INIT(); + EXTEN->EXTEN_CTR &= ~EXTEN_ETH_10M_EN; + phyLinkReset = 1; + phyLinkTime = LocalTime; } } @@ -568,6 +626,12 @@ void WCHNET_ETHIsr( void ) R16_ETH_ERXST = DMARxDescToGet->Buffer1Addr; } } + if(PhyPolarityDetect) + { + PhyPolarityDetect = 0; + /* Discard CRC error packet */ + R8_ETH_ERXFCON &= ~RB_ETH_ERXFCON_CRCEN; + } } if(eth_irq_flag&RB_ETH_EIR_TXIF) //send completed { @@ -586,6 +650,7 @@ void WCHNET_ETHIsr( void ) } if(eth_irq_flag&RB_ETH_EIR_RXERIF) //receive error { + if(PhyPolarityDetect) CRCErrPktCnt++; R8_ETH_EIR = RB_ETH_EIR_RXERIF; } } @@ -605,7 +670,6 @@ void ETH_Init( uint8_t *macAddr ) ETH_DMATxDescChainInit(DMATxDscrTab, MACTxBuf, ETH_TXBUFNB); ETH_DMARxDescChainInit(DMARxDscrTab, MACRxBuf, ETH_RXBUFNB); pDMARxSet = DMARxDscrTab; - ETH_Start( ); NVIC_EnableIRQ(ETH_IRQn); } diff --git a/EVT/EXAM/ETH/NetLib/eth_driver.h b/EVT/EXAM/ETH/NetLib/eth_driver.h index 5c8d7e5..4ee7691 100644 --- a/EVT/EXAM/ETH/NetLib/eth_driver.h +++ b/EVT/EXAM/ETH/NetLib/eth_driver.h @@ -18,18 +18,12 @@ #include "debug.h" -#define USE_10M_BASE 1 // Internal 10M PHY - -#ifndef PHY_MODE -#define PHY_MODE USE_10M_BASE -#endif - #define ROM_CFG_USERADR_ID 0x1FFFF7E8 #define PHY_LINK_TASK_PERIOD 50 #define PHY_ANLPAR_SELECTOR_FIELD 0x1F -#define PHY_ANLPAR_SELECTOR_VALUE 0x01 // 5B'00001 +#define PHY_ANLPAR_SELECTOR_VALUE 0x01 /* 5B'00001 */ #define PHY_LINK_INIT 0x00 #define PHY_LINK_SUC_P (1<<0) @@ -53,9 +47,8 @@ phyLinkStatus = PHY_LINK_INIT;\ }while(0) - /* definition for Ethernet frame */ -#define ETH_MAX_PACKET_SIZE 1536 /* ETH_HEADER + ETH_EXTRA + MAX_ETH_PAYLOAD + ETH_CRC */ +#define ETH_MAX_PACKET_SIZE 1536 /* ETH_HEADER + VLAN_TAG + MAX_ETH_PAYLOAD + ETH_CRC */ #define ETH_HEADER 14 /* 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */ #define ETH_CRC 4 /* Ethernet CRC */ #define ETH_EXTRA 2 /* Extra bytes in some cases */ @@ -88,7 +81,6 @@ typedef struct uint32_t Buffer2NextDescAddr; /* Buffer2 or next descriptor address pointer */ } ETH_DMADESCTypeDef; - #include "wchnet.h" extern SOCK_INF SocketInf[ ]; diff --git a/EVT/EXAM/ETH/NetLib/libwchnet.a b/EVT/EXAM/ETH/NetLib/libwchnet.a index 0cdfb64..ccab70a 100644 Binary files a/EVT/EXAM/ETH/NetLib/libwchnet.a and b/EVT/EXAM/ETH/NetLib/libwchnet.a differ diff --git a/EVT/EXAM/ETH/NetLib/wchnet.h b/EVT/EXAM/ETH/NetLib/wchnet.h index a6021b0..25b2e3c 100644 --- a/EVT/EXAM/ETH/NetLib/wchnet.h +++ b/EVT/EXAM/ETH/NetLib/wchnet.h @@ -1,9 +1,9 @@ /********************************** (C) COPYRIGHT ******************************* -* File Name : WCHNET.H -* Author : WCH -* Version : V1.50 -* Date : 2022/11/25 -* Description : This file contains the headers of + * File Name : wchnet.h + * Author : WCH + * Version : V1.80 + * Date : 2023/05/12 + * Description : This file contains the headers of * the Ethernet protocol stack library. ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. @@ -21,7 +21,7 @@ extern "C" { #endif -#define WCHNET_LIB_VER 0x15 //the library version number +#define WCHNET_LIB_VER 0x18 //the library version number #define WCHNET_CFG_VALID 0x12345678 //Configuration value valid flag /* LED state @LED_STAT */ @@ -122,13 +122,12 @@ extern "C" { #define WCHNET_SIZE_UDP_PCB 0x20 //UDP PCB size #define WCHNET_SIZE_TCP_PCB 0xB4 //TCP PCB size #define WCHNET_SIZE_TCP_PCB_LISTEN 0x24 //TCP LISTEN PCB size -#define WCHNET_SIZE_IP_REASSDATA 0x10 //IP reassembled Management +#define WCHNET_SIZE_IP_REASSDATA 0x20 //IP reassembled Management #define WCHNET_SIZE_PBUF 0x10 //Packet Buf #define WCHNET_SIZE_TCP_SEG 0x14 //TCP SEG structure #define WCHNET_SIZE_MEM 0x08 //sizeof(struct mem) #define WCHNET_SIZE_ARP_TABLE 0x18 //sizeof ARP table -#define WCHNET_SIZE_POOL_BUF WCHNET_MEM_ALIGN_SIZE(WCHNET_TCP_MSS + 40 + 14 + 4) //pbuf size #define WCHNET_MEMP_SIZE ((WCHNET_MEM_ALIGNMENT - 1) + \ (WCHNET_NUM_IPRAW * WCHNET_MEM_ALIGN_SIZE(WCHNET_SIZE_IPRAW_PCB)) + \ (WCHNET_NUM_UDP * WCHNET_MEM_ALIGN_SIZE(WCHNET_SIZE_UDP_PCB)) + \ @@ -140,7 +139,7 @@ extern "C" { (WCHNET_NUM_POOL_BUF * (WCHNET_MEM_ALIGN_SIZE(WCHNET_SIZE_PBUF) + WCHNET_MEM_ALIGN_SIZE(WCHNET_SIZE_POOL_BUF)))) #define HEAP_MEM_ALIGN_SIZE (WCHNET_MEM_ALIGN_SIZE(WCHNET_SIZE_MEM)) -#define WCHNET_RAM_HEAP_SIZE (WCHNET_MEM_ALIGN_SIZE(WCHNET_MEM_HEAP_SIZE) + (2 * HEAP_MEM_ALIGN_SIZE) ) +#define WCHNET_RAM_HEAP_SIZE (WCHNET_MEM_ALIGN_SIZE(WCHNET_MEM_HEAP_SIZE) + HEAP_MEM_ALIGN_SIZE ) #define WCHNET_RAM_ARP_TABLE_SIZE (WCHNET_MEM_ALIGN_SIZE(WCHNET_SIZE_ARP_TABLE) * WCHNET_NUM_ARP_TABLE) typedef struct @@ -165,11 +164,11 @@ typedef void (*dns_callback)( const char *name, uint8_t *ipaddr, void *callback_ typedef uint8_t (*dhcp_callback)( uint8_t status, void * ); /* socket receive callback type */ -struct _SCOK_INF; -typedef void (*pSockRecv)( struct _SCOK_INF *, uint32_t, uint16_t, uint8_t *, uint32_t); +struct _SOCK_INF; +typedef void (*pSockRecv)( struct _SOCK_INF *, uint32_t, uint16_t, uint8_t *, uint32_t); -/* sokcet information struct */ -typedef struct _SCOK_INF +/* Socket information struct */ +typedef struct _SOCK_INF { uint32_t IntStatus; //interrupt state uint32_t SockIndex; //Socket index value @@ -177,7 +176,7 @@ typedef struct _SCOK_INF uint32_t RecvBufLen; //Receive buffer length uint32_t RecvCurPoint; //current pointer to receive buffer uint32_t RecvReadPoint; //The read pointer of the receive buffer - uint32_t RecvRemLen; //Remaining length of receive buffer + uint32_t RecvRemLen; //The length of the remaining data in the receive buffer uint32_t ProtoType; //protocol type uint32_t SockStatus; //Low byte Socket state, the next low byte is TCP state, only meaningful in TCP mode uint32_t DesPort; //destination port @@ -199,14 +198,18 @@ struct _WCH_CFG /* Bit 1 TCP receive replication optimization, used for internal debugging */ /* bit 2 delete oldest TCP connection 1: enable, 0: disable */ /* Bits 3-7 Number of PBUFs of IP segments */ + /* Bit 8 TCP Delay ACK disable */ uint32_t MiscConfig1; //Miscellaneous Configuration 1 /* Bits 0-7 Number of Sockets*/ /* Bits 8-12 Reserved */ - /* Bit 13 PING enable, 1: On 0: Off */ + /* Bit 13 PING enable, 1: On 0: Off */ /* Bits 14-18 TCP retransmission times */ /* Bits 19-23 TCP retransmission period, in 50 milliseconds */ - /* bit 25 send failed retry, 1: enable, 0: disable */ - /* Bits 26-31 Reserved */ + /* bit 25 send failed retry, 1: enable, 0: disable */ + /* bit 26 Select whether to perform IPv4 checksum check on + * the TCP/UDP/ICMP header of the received frame payload by hardware, + * and calculate and insert the checksum of the IP header and payload of the sent frame by hardware.*/ + /* Bits 27-31 period (in 250 milliseconds) of Fine DHCP periodic process */ led_callback led_link; //PHY Link Status Indicator led_callback led_data; //Ethernet communication indicator eth_tx_set net_send; //Ethernet send diff --git a/EVT/EXAM/ETH/TcpClient/.cproject b/EVT/EXAM/ETH/TcpClient/.cproject index 97a5e3f..6369868 100644 --- a/EVT/EXAM/ETH/TcpClient/.cproject +++ b/EVT/EXAM/ETH/TcpClient/.cproject @@ -244,5 +244,5 @@ - + diff --git a/EVT/EXAM/ETH/TcpClient/.project b/EVT/EXAM/ETH/TcpClient/.project index 0210e26..6dd1164 100644 --- a/EVT/EXAM/ETH/TcpClient/.project +++ b/EVT/EXAM/ETH/TcpClient/.project @@ -1,61 +1,64 @@ - TcpClient - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - 1595986042669 - - 22 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-*.wvproj - - - - - - Core - 2 - PARENT-2-PROJECT_LOC/SRC/Core - - - Debug - 2 - PARENT-2-PROJECT_LOC/SRC/Debug - - - Peripheral - 2 - PARENT-2-PROJECT_LOC/SRC/Peripheral - - - Startup - 2 - PARENT-2-PROJECT_LOC/SRC/Startup - - - NetLib - 2 - PARENT-1-PROJECT_LOC/NetLib - - + TCPClient + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + Core + 2 + PARENT-2-PROJECT_LOC/SRC/Core + + + Debug + 2 + PARENT-2-PROJECT_LOC/SRC/Debug + + + NetLib + 2 + PARENT-1-PROJECT_LOC/NetLib + + + Peripheral + 2 + PARENT-2-PROJECT_LOC/SRC/Peripheral + + + Startup + 2 + PARENT-2-PROJECT_LOC/SRC/Startup + + + + + 1595986042669 + + 22 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-*.wvproj + + + diff --git a/EVT/EXAM/ETH/TcpClient/.settings/language.settings.xml b/EVT/EXAM/ETH/TcpClient/.settings/language.settings.xml deleted file mode 100644 index fb21c01..0000000 --- a/EVT/EXAM/ETH/TcpClient/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/TcpClient/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/TcpClient/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2424520..0000000 --- a/EVT/EXAM/ETH/TcpClient/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -encoding//NetLib/eth_driver.c=UTF-8 -encoding//Peripheral/inc/ch32v20x.h=UTF-8 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/TcpClient/.template b/EVT/EXAM/ETH/TcpClient/.template index 7c1a3ae..2653296 100644 --- a/EVT/EXAM/ETH/TcpClient/.template +++ b/EVT/EXAM/ETH/TcpClient/.template @@ -13,4 +13,4 @@ Description=ROM(byte): 64K, SRAM(byte): 20K, CHIP PINS: 32, GPIO PORTS: 27.\nWCH PeripheralVersion=1.0 MCU=CH32V203RBT6 -Target Path=obj/TcpClient.hex +Target Path=obj/TCPClient.hex \ No newline at end of file diff --git a/EVT/EXAM/ETH/TcpClient/User/ch32v20x_it.c b/EVT/EXAM/ETH/TcpClient/User/ch32v20x_it.c index 6c3cd70..b527796 100644 --- a/EVT/EXAM/ETH/TcpClient/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/TcpClient/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/TcpClient/User/main.c b/EVT/EXAM/ETH/TcpClient/User/main.c index 220d56e..3e7bf56 100644 --- a/EVT/EXAM/ETH/TcpClient/User/main.c +++ b/EVT/EXAM/ETH/TcpClient/User/main.c @@ -16,9 +16,7 @@ to the server and receives data and then sends it back. For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ - #include "string.h" -#include "debug.h" #include "eth_driver.h" #define KEEPALIVE_ENABLE 1 //Enable keep alive function @@ -35,7 +33,6 @@ u8 SocketId; u8 socket[WCHNET_MAX_SOCKET_NUM]; //Save the currently connected socket u8 SocketRecvBuf[WCHNET_MAX_SOCKET_NUM][RECE_BUF_LEN]; //socket receive buffer u8 MyBuf[RECE_BUF_LEN]; - /********************************************************************* * @fn mStopIfError * @@ -65,7 +62,7 @@ void TIM2_Init(void) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -130,16 +127,18 @@ void WCHNET_DataLoopback(u8 id) } #else u32 len, totallen; - u8 *p = MyBuf; + u8 *p = MyBuf, TransCnt = 255; len = WCHNET_SocketRecvLen(id, NULL); //query length - WCHNET_SocketRecv(id, MyBuf, &len); //Read the data of the receive buffer into MyBuf + printf("Receive Len = %d\r\n", len); totallen = len; + WCHNET_SocketRecv(id, MyBuf, &len); //Read the data of the receive buffer into MyBuf while(1){ len = totallen; WCHNET_SocketSend(id, p, &len); //Send the data totallen -= len; //Subtract the sent length from the total length p += len; //offset buffer pointer + if( !--TransCnt ) break; //Timeout exit if(totallen) continue; //If the data is not sent, continue to send break; //After sending, exit } @@ -160,18 +159,18 @@ void WCHNET_HandleSockInt(u8 socketid, u8 intstat) { u8 i; - if (intstat & SINT_STAT_RECV) //receive data + if (intstat & SINT_STAT_RECV) //receive data { - WCHNET_DataLoopback(socketid); //Data loopback + WCHNET_DataLoopback(socketid); //Data loopback } - if (intstat & SINT_STAT_CONNECT) //connect successfully + if (intstat & SINT_STAT_CONNECT) //connect successfully { #if KEEPALIVE_ENABLE WCHNET_SocketSetKeepLive(socketid, ENABLE); #endif WCHNET_ModifyRecvBuf(socketid, (u32) SocketRecvBuf[socketid], RECE_BUF_LEN); for (i = 0; i < WCHNET_MAX_SOCKET_NUM; i++) { - if (socket[i] == 0xff) { //save connected socket id + if (socket[i] == 0xff) { //save connected socket id socket[i] = socketid; break; } @@ -189,9 +188,9 @@ void WCHNET_HandleSockInt(u8 socketid, u8 intstat) } printf("TCP Disconnect\r\n"); } - if (intstat & SINT_STAT_TIM_OUT) //timeout disconnect + if (intstat & SINT_STAT_TIM_OUT) //timeout disconnect { - for (i = 0; i < WCHNET_MAX_SOCKET_NUM; i++) { //delete disconnected socket id + for (i = 0; i < WCHNET_MAX_SOCKET_NUM; i++) { //delete disconnected socket id if (socket[i] == socketid) { socket[i] = 0xff; break; @@ -215,22 +214,22 @@ void WCHNET_HandleGlobalInt(void) u16 i; u8 socketint; - intstat = WCHNET_GetGlobalInt(); //get global interrupt flag - if (intstat & GINT_STAT_UNREACH) //Unreachable interrupt + intstat = WCHNET_GetGlobalInt(); //get global interrupt flag + if (intstat & GINT_STAT_UNREACH) //Unreachable interrupt { printf("GINT_STAT_UNREACH\r\n"); } - if (intstat & GINT_STAT_IP_CONFLI) //IP conflict + if (intstat & GINT_STAT_IP_CONFLI) //IP conflict { printf("GINT_STAT_IP_CONFLI\r\n"); } - if (intstat & GINT_STAT_PHY_CHANGE) //PHY status change + if (intstat & GINT_STAT_PHY_CHANGE) //PHY status change { i = WCHNET_GetPHYStatus(); if (i & PHY_Linked_Status) printf("PHY Link Success\r\n"); } - if (intstat & GINT_STAT_SOCKET) { //socket related interrupt + if (intstat & GINT_STAT_SOCKET) { //socket related interrupt for (i = 0; i < WCHNET_MAX_SOCKET_NUM; i++) { socketint = WCHNET_GetSocketInt(i); if (socketint) @@ -251,24 +250,27 @@ int main(void) u8 i; Delay_Init(); - USART_Printf_Init(115200); //USART initialize - printf("TcpClient Test\r\n"); - printf("SystemClk:%d\r\n", SystemCoreClock); + USART_Printf_Init(115200); //USART initialize + printf("TCPClient Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); printf("net version:%x\n", WCHNET_GetVer()); - if ( WCHNET_LIB_VER != WCHNET_GetVer()) { + if (WCHNET_LIB_VER != WCHNET_GetVer()) { printf("version error.\n"); } - WCHNET_GetMacAddr(MACAddr); //get the chip MAC address + WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); - for ( i = 0; i < 6; i++) + for(i = 0; i < 6; i++) printf("%x ", MACAddr[i]); printf("\n"); TIM2_Init(); - i = ETH_LibInit(IPAddr, GWIPAddr, IPMask, MACAddr); //Ethernet library initialize + i = ETH_LibInit(IPAddr, GWIPAddr, IPMask, MACAddr); //Ethernet library initialize mStopIfError(i); if (i == WCHNET_ERR_SUCCESS) printf("WCHNET_LibInit Success\r\n"); -#if KEEPALIVE_ENABLE //Configure keep alive parameters +#if KEEPALIVE_ENABLE //Configure keep alive parameters { struct _KEEP_CFG cfg; @@ -280,7 +282,7 @@ int main(void) #endif memset(socket, 0xff, WCHNET_MAX_SOCKET_NUM); for (i = 0; i < WCHNET_MAX_SOCKET_NUM; i++) - WCHNET_CreateTcpSocket(); //Create TCP Socket + WCHNET_CreateTcpSocket(); //Create TCP Socket while(1) { diff --git a/EVT/EXAM/ETH/TcpClient/User/net_config.h b/EVT/EXAM/ETH/TcpClient/User/net_config.h index c76a774..03c56e2 100644 --- a/EVT/EXAM/ETH/TcpClient/User/net_config.h +++ b/EVT/EXAM/ETH/TcpClient/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/TcpServer/.cproject b/EVT/EXAM/ETH/TcpServer/.cproject index f62c43f..b684323 100644 --- a/EVT/EXAM/ETH/TcpServer/.cproject +++ b/EVT/EXAM/ETH/TcpServer/.cproject @@ -242,5 +242,5 @@ - + diff --git a/EVT/EXAM/ETH/TcpServer/.project b/EVT/EXAM/ETH/TcpServer/.project index 5a1b43e..bb1ee94 100644 --- a/EVT/EXAM/ETH/TcpServer/.project +++ b/EVT/EXAM/ETH/TcpServer/.project @@ -1,61 +1,64 @@ - TcpServer - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - 1595986042669 - - 22 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-*.wvproj - - - - - - NetLib - 2 - PARENT-1-PROJECT_LOC/NetLib - - - Core - 2 - PARENT-2-PROJECT_LOC/SRC/Core - - - Debug - 2 - PARENT-2-PROJECT_LOC/SRC/Debug - - - Peripheral - 2 - PARENT-2-PROJECT_LOC/SRC/Peripheral - - - Startup - 2 - PARENT-2-PROJECT_LOC/SRC/Startup - - + TCPServer + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + Core + 2 + PARENT-2-PROJECT_LOC/SRC/Core + + + Debug + 2 + PARENT-2-PROJECT_LOC/SRC/Debug + + + NetLib + 2 + PARENT-1-PROJECT_LOC/NetLib + + + Peripheral + 2 + PARENT-2-PROJECT_LOC/SRC/Peripheral + + + Startup + 2 + PARENT-2-PROJECT_LOC/SRC/Startup + + + + + 1595986042669 + + 22 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-*.wvproj + + + diff --git a/EVT/EXAM/ETH/TcpServer/.settings/language.settings.xml b/EVT/EXAM/ETH/TcpServer/.settings/language.settings.xml deleted file mode 100644 index a1f16c3..0000000 --- a/EVT/EXAM/ETH/TcpServer/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/TcpServer/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/TcpServer/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index dbc37bd..0000000 --- a/EVT/EXAM/ETH/TcpServer/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -encoding//Peripheral/inc/ch32v20x.h=UTF-8 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/TcpServer/.template b/EVT/EXAM/ETH/TcpServer/.template index 8ad8f95..94ee701 100644 --- a/EVT/EXAM/ETH/TcpServer/.template +++ b/EVT/EXAM/ETH/TcpServer/.template @@ -13,4 +13,4 @@ Description=ROM(byte): 64K, SRAM(byte): 20K, CHIP PINS: 32, GPIO PORTS: 27.\nWCH PeripheralVersion=1.0 MCU=CH32V203RBT6 -Target Path=obj/TcpServer.hex +Target Path=obj/TCPServer.hex \ No newline at end of file diff --git a/EVT/EXAM/ETH/TcpServer/User/ch32v20x_it.c b/EVT/EXAM/ETH/TcpServer/User/ch32v20x_it.c index 6c3cd70..b527796 100644 --- a/EVT/EXAM/ETH/TcpServer/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/TcpServer/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/TcpServer/User/main.c b/EVT/EXAM/ETH/TcpServer/User/main.c index 797b237..6728dc7 100644 --- a/EVT/EXAM/ETH/TcpServer/User/main.c +++ b/EVT/EXAM/ETH/TcpServer/User/main.c @@ -11,15 +11,15 @@ *******************************************************************************/ /* *@Note -TCP Server example, demonstrating that TCP Server receives data and sends back after connecting to a client. +TCP Server example, demonstrating that TCP Server +receives data and sends back after connecting to a client. For details on the selection of engineering chips, please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT\PUB folder. */ #include "string.h" -#include "debug.h" #include "eth_driver.h" -#define KEEPALIVE_ENABLE 1 //Enable keep alive function +#define KEEPALIVE_ENABLE 1 //Enable keep alive function u8 MACAddr[6]; //MAC address u8 IPAddr[4] = { 192, 168, 1, 10 }; //IP address @@ -60,7 +60,7 @@ void TIM2_Init(void) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -121,11 +121,11 @@ void WCHNET_DataLoopback(u8 id) WCHNET_SocketRecv(id, NULL, &len); //Clear sent data } #else - u32 len, totallen; - u8 *p = MyBuf; + uint32_t len, totallen; + uint8_t *p = MyBuf, TransCnt = 255; len = WCHNET_SocketRecvLen(id, NULL); //query length - printf("Receive Len = %02x\n", len); + printf("Receive Len = %d\r\n", len); totallen = len; WCHNET_SocketRecv(id, MyBuf, &len); //Read the data of the receive buffer into MyBuf while(1){ @@ -133,7 +133,8 @@ void WCHNET_DataLoopback(u8 id) WCHNET_SocketSend(id, p, &len); //Send the data totallen -= len; //Subtract the sent length from the total length p += len; //offset buffer pointer - if(totallen)continue; //If the data is not sent, continue to send + if( !--TransCnt ) break; //Timeout exit + if(totallen) continue; //If the data is not sent, continue to send break; //After sending, exit } #endif @@ -244,16 +245,19 @@ int main(void) u8 i; Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("TcpServer Test\r\n"); - printf("SystemClk:%d\r\n", SystemCoreClock); + printf("TCPServer Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); printf("net version:%x\n", WCHNET_GetVer()); - if ( WCHNET_LIB_VER != WCHNET_GetVer()) { + if (WCHNET_LIB_VER != WCHNET_GetVer()) { printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); - for ( i = 0; i < 6; i++) - printf("%x ", MACAddr[i]); + for(i = 0; i < 6; i++) + printf("%x ",MACAddr[i]); printf("\n"); TIM2_Init(); i = ETH_LibInit(IPAddr, GWIPAddr, IPMask, MACAddr); //Ethernet library initialize diff --git a/EVT/EXAM/ETH/TcpServer/User/net_config.h b/EVT/EXAM/ETH/TcpServer/User/net_config.h index 1a5d5b1..8f23404 100644 --- a/EVT/EXAM/ETH/TcpServer/User/net_config.h +++ b/EVT/EXAM/ETH/TcpServer/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 1 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/UdpClient/.project b/EVT/EXAM/ETH/UdpClient/.project index 94065ab..ff5c8e7 100644 --- a/EVT/EXAM/ETH/UdpClient/.project +++ b/EVT/EXAM/ETH/UdpClient/.project @@ -1,61 +1,64 @@ - UdpClient - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - 1595986042669 - - 22 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-*.wvproj - - - - - - Core - 2 - PARENT-2-PROJECT_LOC/SRC/Core - - - Debug - 2 - PARENT-2-PROJECT_LOC/SRC/Debug - - - Peripheral - 2 - PARENT-2-PROJECT_LOC/SRC/Peripheral - - - Startup - 2 - PARENT-2-PROJECT_LOC/SRC/Startup - - - NetLib - 2 - PARENT-1-PROJECT_LOC/NetLib - - + UDPClient + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + Core + 2 + PARENT-2-PROJECT_LOC/SRC/Core + + + Debug + 2 + PARENT-2-PROJECT_LOC/SRC/Debug + + + NetLib + 2 + PARENT-1-PROJECT_LOC/NetLib + + + Peripheral + 2 + PARENT-2-PROJECT_LOC/SRC/Peripheral + + + Startup + 2 + PARENT-2-PROJECT_LOC/SRC/Startup + + + + + 1595986042669 + + 22 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-*.wvproj + + + diff --git a/EVT/EXAM/ETH/UdpClient/.settings/language.settings.xml b/EVT/EXAM/ETH/UdpClient/.settings/language.settings.xml deleted file mode 100644 index 8a5d178..0000000 --- a/EVT/EXAM/ETH/UdpClient/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/UdpClient/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/UdpClient/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/UdpClient/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/UdpClient/.template b/EVT/EXAM/ETH/UdpClient/.template index 3d7810a..98da110 100644 --- a/EVT/EXAM/ETH/UdpClient/.template +++ b/EVT/EXAM/ETH/UdpClient/.template @@ -13,4 +13,4 @@ Description=ROM(byte): 64K, SRAM(byte): 20K, CHIP PINS: 32, GPIO PORTS: 27.\nWCH PeripheralVersion=1.0 MCU=CH32V203RBT6 -Target Path=obj/UdpClient.hex +Target Path=obj/UDPClient.hex \ No newline at end of file diff --git a/EVT/EXAM/ETH/UdpClient/User/ch32v20x_it.c b/EVT/EXAM/ETH/UdpClient/User/ch32v20x_it.c index 6c3cd70..b527796 100644 --- a/EVT/EXAM/ETH/UdpClient/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/UdpClient/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/UdpClient/User/main.c b/EVT/EXAM/ETH/UdpClient/User/main.c index c919bb2..bb27749 100644 --- a/EVT/EXAM/ETH/UdpClient/User/main.c +++ b/EVT/EXAM/ETH/UdpClient/User/main.c @@ -17,21 +17,20 @@ please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT */ #include "string.h" -#include "debug.h" #include "eth_driver.h" -u8 MACAddr[6]; //MAC address -u8 IPAddr[4] = { 192, 168, 1, 10 }; //IP address -u8 GWIPAddr[4] = { 192, 168, 1, 1 }; //Gateway IP address -u8 IPMask[4] = { 255, 255, 255, 0 }; //subnet mask -u8 DESIP[4] = { 192, 168, 1, 100 }; //destination IP address -u16 desport = 1000; //destination port -u16 srcport = 1000; //source port +#define UDP_RECE_BUF_LEN 1472 +u8 MACAddr[6]; //MAC address +u8 IPAddr[4] = { 192, 168, 1, 10 }; //IP address +u8 GWIPAddr[4] = { 192, 168, 1, 1 }; //Gateway IP address +u8 IPMask[4] = { 255, 255, 255, 0 }; //subnet mask +u8 DESIP[4] = { 192, 168, 1, 100 }; //destination IP address +u16 desport = 1000; //destination port +u16 srcport = 1000; //source port u8 SocketId; -u8 SocketRecvBuf[WCHNET_MAX_SOCKET_NUM][RECE_BUF_LEN]; //socket receive buffer -u8 MyBuf[RECE_BUF_LEN]; - +u8 SocketRecvBuf[WCHNET_MAX_SOCKET_NUM][UDP_RECE_BUF_LEN]; //socket receive buffer +u8 MyBuf[UDP_RECE_BUF_LEN]; /********************************************************************* * @fn mStopIfError * @@ -61,7 +60,7 @@ void TIM2_Init(void) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -91,9 +90,9 @@ void WCHNET_CreateUdpSocket(void) TmpSocketInf.SourPort = srcport++; TmpSocketInf.ProtoType = PROTO_TYPE_UDP; TmpSocketInf.RecvStartPoint = (u32) SocketRecvBuf[SocketId]; - TmpSocketInf.RecvBufLen = RECE_BUF_LEN; + TmpSocketInf.RecvBufLen = UDP_RECE_BUF_LEN; i = WCHNET_SocketCreat(&SocketId, &TmpSocketInf); - printf("WCHNET_SocketCreat %d srcport %d\r\n", SocketId, srcport); + printf("WCHNET_SocketCreat %d\r\n", SocketId); mStopIfError(i); } @@ -119,16 +118,16 @@ void WCHNET_DataLoopback(u8 id) else { len = SocketInf[id].RecvRemLen; } - i = WCHNET_SocketSend(id, (u8 *) SocketInf[id].RecvReadPoint, &len); //send data + i = WCHNET_SocketSend(id, (u8 *) SocketInf[id].RecvReadPoint, &len); //send data if (i == WCHNET_ERR_SUCCESS) { - WCHNET_SocketRecv(id, NULL, &len); //Clear sent data + WCHNET_SocketRecv(id, NULL, &len); //Clear sent data } #else u32 len, totallen; u8 *p = MyBuf; len = WCHNET_SocketRecvLen(id, NULL); //query length - printf("Receive Len = %02x\n", len); + printf("Receive Len = %d\n", len); totallen = len; WCHNET_SocketRecv(id, MyBuf, &len); //Read the data of the receive buffer into MyBuf while(1){ @@ -222,15 +221,18 @@ int main(void) Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("UdpClient Test\r\n"); - printf("SystemClk:%d\r\n", SystemCoreClock); + printf("UDPClient Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); printf("net version:%x\n", WCHNET_GetVer()); - if ( WCHNET_LIB_VER != WCHNET_GetVer()) { + if (WCHNET_LIB_VER != WCHNET_GetVer()) { printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); - for (i = 0; i < 6; i++) + for(i = 0; i < 6; i++) printf("%x ", MACAddr[i]); printf("\n"); TIM2_Init(); @@ -239,7 +241,7 @@ int main(void) if (i == WCHNET_ERR_SUCCESS) printf("WCHNET_LibInit Success\r\n"); for (i = 0; i < WCHNET_MAX_SOCKET_NUM; i++) - WCHNET_CreateUdpSocket(); //Create UDP Socket + WCHNET_CreateUdpSocket(); //Create UDP Socket while(1) { diff --git a/EVT/EXAM/ETH/UdpClient/User/net_config.h b/EVT/EXAM/ETH/UdpClient/User/net_config.h index 3867ffe..ee56af5 100644 --- a/EVT/EXAM/ETH/UdpClient/User/net_config.h +++ b/EVT/EXAM/ETH/UdpClient/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/UdpServer/.cproject b/EVT/EXAM/ETH/UdpServer/.cproject index 9b5dedc..19254a0 100644 --- a/EVT/EXAM/ETH/UdpServer/.cproject +++ b/EVT/EXAM/ETH/UdpServer/.cproject @@ -242,5 +242,5 @@ - + diff --git a/EVT/EXAM/ETH/UdpServer/.project b/EVT/EXAM/ETH/UdpServer/.project index 6d437aa..334fd00 100644 --- a/EVT/EXAM/ETH/UdpServer/.project +++ b/EVT/EXAM/ETH/UdpServer/.project @@ -1,61 +1,64 @@ - UdpServer - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - 1595986042669 - - 22 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-*.wvproj - - - - - - NetLib - 2 - PARENT-1-PROJECT_LOC/NetLib - - - Core - 2 - PARENT-2-PROJECT_LOC/SRC/Core - - - Debug - 2 - PARENT-2-PROJECT_LOC/SRC/Debug - - - Peripheral - 2 - PARENT-2-PROJECT_LOC/SRC/Peripheral - - - Startup - 2 - PARENT-2-PROJECT_LOC/SRC/Startup - - + UDPServer + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + Core + 2 + PARENT-2-PROJECT_LOC/SRC/Core + + + Debug + 2 + PARENT-2-PROJECT_LOC/SRC/Debug + + + NetLib + 2 + PARENT-1-PROJECT_LOC/NetLib + + + Peripheral + 2 + PARENT-2-PROJECT_LOC/SRC/Peripheral + + + Startup + 2 + PARENT-2-PROJECT_LOC/SRC/Startup + + + + + 1595986042669 + + 22 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-*.wvproj + + + diff --git a/EVT/EXAM/ETH/UdpServer/.settings/language.settings.xml b/EVT/EXAM/ETH/UdpServer/.settings/language.settings.xml deleted file mode 100644 index 1e4fb2c..0000000 --- a/EVT/EXAM/ETH/UdpServer/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/ETH/UdpServer/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/ETH/UdpServer/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2d3651a..0000000 --- a/EVT/EXAM/ETH/UdpServer/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/ETH/UdpServer/.template b/EVT/EXAM/ETH/UdpServer/.template index 58889ac..9451f2e 100644 --- a/EVT/EXAM/ETH/UdpServer/.template +++ b/EVT/EXAM/ETH/UdpServer/.template @@ -13,4 +13,4 @@ Description=ROM(byte): 64K, SRAM(byte): 20K, CHIP PINS: 32, GPIO PORTS: 27.\nWCH PeripheralVersion=1.0 MCU=CH32V203RBT6 -Target Path=obj/UdpServer.hex +Target Path=obj/UDPServer.hex \ No newline at end of file diff --git a/EVT/EXAM/ETH/UdpServer/User/ch32v20x_it.c b/EVT/EXAM/ETH/UdpServer/User/ch32v20x_it.c index 6c3cd70..b527796 100644 --- a/EVT/EXAM/ETH/UdpServer/User/ch32v20x_it.c +++ b/EVT/EXAM/ETH/UdpServer/User/ch32v20x_it.c @@ -10,7 +10,6 @@ * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "ch32v20x_it.h" -#include #include "eth_driver.h" void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); diff --git a/EVT/EXAM/ETH/UdpServer/User/main.c b/EVT/EXAM/ETH/UdpServer/User/main.c index 8c5bf4f..89fec4e 100644 --- a/EVT/EXAM/ETH/UdpServer/User/main.c +++ b/EVT/EXAM/ETH/UdpServer/User/main.c @@ -17,18 +17,17 @@ please refer to the "CH32V20x Evaluation Board Manual" under the CH32V20xEVT\EVT */ #include "string.h" -#include "debug.h" #include "eth_driver.h" -u8 MACAddr[6]; //MAC address -u8 IPAddr[4] = { 192, 168, 1, 10 }; //IP address -u8 GWIPAddr[4] = { 192, 168, 1, 1 }; //Gateway IP address -u8 IPMask[4] = { 255, 255, 255, 0 }; //subnet mask -u16 srcport = 1000; //source port +#define UDP_RECE_BUF_LEN 1472 +u8 MACAddr[6]; //MAC address +u8 IPAddr[4] = { 192, 168, 1, 10 }; //IP address +u8 GWIPAddr[4] = { 192, 168, 1, 1 }; //Gateway IP address +u8 IPMask[4] = { 255, 255, 255, 0 }; //subnet mask +u16 srcport = 1000; //source port u8 SocketId; -u8 SocketRecvBuf[RECE_BUF_LEN]; //socket receive buffer - +u8 SocketRecvBuf[UDP_RECE_BUF_LEN]; //socket receive buffer /********************************************************************* * @fn mStopIfError * @@ -58,7 +57,7 @@ void TIM2_Init(void) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000 - 1; + TIM_TimeBaseStructure.TIM_Period = SystemCoreClock / 1000000; TIM_TimeBaseStructure.TIM_Prescaler = WCHNETTIMERPERIOD * 1000 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; @@ -82,7 +81,7 @@ void TIM2_Init(void) * len - received data length * @return none */ -void WCHNET_UdpServerRecv(struct _SCOK_INF *socinf, u32 ipaddr, u16 port, u8 *buf, u32 len) +void WCHNET_UdpServerRecv(struct _SOCK_INF *socinf, u32 ipaddr, u16 port, u8 *buf, u32 len) { u8 ip_addr[4], i; @@ -115,7 +114,7 @@ void WCHNET_CreateUdpSocket(void) TmpSocketInf.SourPort = srcport; TmpSocketInf.ProtoType = PROTO_TYPE_UDP; TmpSocketInf.RecvStartPoint = (u32) SocketRecvBuf; - TmpSocketInf.RecvBufLen = RECE_BUF_LEN; + TmpSocketInf.RecvBufLen = UDP_RECE_BUF_LEN; TmpSocketInf.AppCallBack = WCHNET_UdpServerRecv; i = WCHNET_SocketCreat(&SocketId, &TmpSocketInf); printf("WCHNET_SocketCreat %d\r\n", SocketId); @@ -201,16 +200,19 @@ int main(void) Delay_Init(); USART_Printf_Init(115200); //USART initialize - printf("UdpServer Test\r\n"); - printf("SystemClk:%d\r\n", SystemCoreClock); + printf("UDPServer Test\r\n"); + if((SystemCoreClock == 60000000) || (SystemCoreClock == 120000000)) + printf("SystemClk:%d\r\n", SystemCoreClock); + else + printf("Error: Please choose 60MHz and 120MHz clock when using Ethernet!\r\n"); printf("net version:%x\n", WCHNET_GetVer()); if ( WCHNET_LIB_VER != WCHNET_GetVer()) { printf("version error.\n"); } WCHNET_GetMacAddr(MACAddr); //get the chip MAC address printf("mac addr:"); - for ( i = 0; i < 6; i++) - printf("%x ", MACAddr[i]); + for(i = 0; i < 6; i++) + printf("%x ",MACAddr[i]); printf("\n"); TIM2_Init(); i = ETH_LibInit(IPAddr, GWIPAddr, IPMask, MACAddr); //Ethernet library initialize diff --git a/EVT/EXAM/ETH/UdpServer/User/net_config.h b/EVT/EXAM/ETH/UdpServer/User/net_config.h index 3867ffe..ee56af5 100644 --- a/EVT/EXAM/ETH/UdpServer/User/net_config.h +++ b/EVT/EXAM/ETH/UdpServer/User/net_config.h @@ -29,10 +29,12 @@ extern "C" { #define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */ /* The number of sockets, the maximum is 31 */ -#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) +#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN) #define WCHNET_TCP_MSS 1460 /* Size of TCP MSS*/ +#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ + /********************************************************************* * MAC queue configuration */ @@ -49,94 +51,115 @@ extern "C" { #endif /********************************************************************* - * Functional configuration + * Functional configuration */ -#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ +#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */ -#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ +#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */ -#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ +#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */ -#define SOCKET_SEND_RETRY 1 /* Send failed retry configuration, 1: enable, 0: disable */ +#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */ -#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ +#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */ -#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ +#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */ -#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ +#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */ + +#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */ + +#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */ + +#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */ /********************************************************************* - * Memory related configuration + * Memory related configuration */ -/*If a single socket cannot reach full speed, +/* If you want to achieve a higher transmission speed, * try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4) * and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/ #define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */ -#define WCHNET_NUM_PBUF (WCHNET_MAX_SOCKET_NUM+WCHNET_NUM_TCP) /* Number of PBUF structures */ +#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */ #define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */ -#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64) /* memory heap size */ +#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */ #define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */ -#define WCHNET_NUM_IP_REASSDATA 4 /* Number of IP segments */ - -#define CFG0_IP_REASS_PBUFS 4 /* Number of reassembled IP PBUFs */ - #define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */ -#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */ +#if CFG0_IP_REASS_PBUFS +#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */ +/*1: When using the fragmentation function, + * ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/ +#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +/*2: When creating a socket that can receive fragmented packets, + * ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure + * (the parameter initialized when calling WCHNET_SocketCreat) is sufficient + * to receive a complete fragmented packet */ +#else +#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */ +#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */ +#endif +/* Check receive buffer */ +#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE) + #error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error" + #error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient" +#endif /* Check the configuration of the SOCKET quantity */ #if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP ) - #error "WCHNET_NUM_TCP Error)" + #error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1" #endif /* Check byte alignment must be a multiple of 4 */ #if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0)) - #error "WCHNET_MEM_ALIGNMENT Error,Please Config WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" + #error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1" #endif /* TCP maximum segment length */ #if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60)) - #error "WCHNET_TCP_MSS Error,Please Config WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" + #error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460" #endif /* Number of ARP cache tables */ #if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1)) - #error "WCHNET_NUM_ARP_TABLE Error,Please Config WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" + #error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F" #endif /* Check POOL BUF configuration */ #if(WCHNET_NUM_POOL_BUF < 1) - #error "WCHNET_NUM_POOL_BUF Error,Please Config WCHNET_NUM_POOL_BUF >= 1" + #error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1" #endif /* Check PBUF structure configuration */ #if(WCHNET_NUM_PBUF < 1) - #error "WCHNET_NUM_PBUF Error,Please Config WCHNET_NUM_PBUF >= 1" + #error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1" #endif /* Check IP Assignment Configuration */ -#if((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)) - #error "WCHNET_NUM_IP_REASSDATA Error,Please Config WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " +#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1))) + #error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 " #endif /* Check the number of reassembled IP PBUFs */ -#if(WCHNET_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) - #error "WCHNET_IP_REASS_PBUFS Error,Please Config WCHNET_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" +#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF) + #error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF" #endif - +/* Check Timer period, in Ms. */ #if(WCHNETTIMERPERIOD > 50) - #error "WCHNETTIMERPERIOD Error,Please Config WCHNETTIMERPERIOD < 50" + #error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50" #endif /* Configuration value 0 */ #define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\ ((CFG0_TCP_RECV_COPY) << 1) |\ ((CFG0_TCP_OLD_DELETE) << 2) |\ - ((CFG0_IP_REASS_PBUFS) << 3) ) + ((CFG0_IP_REASS_PBUFS) << 3) |\ + ((CFG0_TCP_DEALY_ACK_DISABLE) << 8)) /* Configuration value 1 */ #define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\ ((WCHNET_PING_ENABLE) << 13) |\ ((TCP_RETRY_COUNT) << 14) |\ ((TCP_RETRY_PERIOD) << 19) |\ - ((SOCKET_SEND_RETRY) << 25) ) + ((SOCKET_SEND_RETRY) << 25) |\ + ((FINE_DHCP_PERIOD) << 27)) #ifdef __cplusplus } diff --git a/EVT/EXAM/ETH/WCHNET Protocol Stack Library Application Note.PDF b/EVT/EXAM/ETH/WCHNET Protocol Stack Library Application Note.PDF index ae613e1..7f028b5 100644 Binary files a/EVT/EXAM/ETH/WCHNET Protocol Stack Library Application Note.PDF and b/EVT/EXAM/ETH/WCHNET Protocol Stack Library Application Note.PDF differ diff --git a/EVT/EXAM/ETH/WCHNET浣跨敤鏂囨。.PDF b/EVT/EXAM/ETH/WCHNET浣跨敤鏂囨。.PDF index a3540a8..0079ed3 100644 Binary files a/EVT/EXAM/ETH/WCHNET浣跨敤鏂囨。.PDF and b/EVT/EXAM/ETH/WCHNET浣跨敤鏂囨。.PDF differ diff --git a/EVT/EXAM/ETH/WebServer/.cproject b/EVT/EXAM/ETH/WebServer/.cproject index 471085d..82f70ab 100644 --- a/EVT/EXAM/ETH/WebServer/.cproject +++ b/EVT/EXAM/ETH/WebServer/.cproject @@ -60,12 +60,12 @@ - - - - - - - - - - - + diff --git a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.settings/language.settings.xml b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.settings/language.settings.xml deleted file mode 100644 index 6180976..0000000 --- a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index e908e16..0000000 --- a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/USB_Device/ch32v20x_usbfs_device.c=UTF-8 diff --git a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.template b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.template index e1dcdb7..9aa4a1f 100644 --- a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.template +++ b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/.template @@ -14,3 +14,4 @@ Description=ROM(byte): 256K, SRAM(byte): 64K, CHIP PINS: 64, GPIO PORTS: 51.\nWC PeripheralVersion=1.4 Target Path=obj\SimulateCDC.hex MCU=CH32V307RVT6 +CLKSpeed=1 diff --git a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/PRINTF.h b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/PRINTF.h deleted file mode 100644 index 3a33fad..0000000 --- a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/PRINTF.h +++ /dev/null @@ -1,36 +0,0 @@ -/******************** (C) COPYRIGHT ******************************************** -* File Name : PRINTF.H -* Author : MJX -* Version : V1.00 -* Date : 2022/03/31 -* Description : Head-file of Debug printf switch -******************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ - -#ifndef __PRINTF_H__ -#define __PRINTF_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/*******************************************************************************/ -/* Defining the serial printout switch */ -#define DEBUG_SW 1 /* General print monitoring switch */ - -/* If the above macro is defined then the output is printed via the serial port, otherwise it is not processed */ -#if( DEBUG_SW == 1 ) -#define DUG_PRINTF( format, arg... ) printf( format, ##arg ) /* Uart printf output */ -#else -#define DUG_PRINTF( format, arg... ) do{ if( 0 )printf( format, ##arg ); }while( 0 ); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/UART.c b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/UART.c index e5960f8..18394fd 100644 --- a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/UART.c +++ b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/UART.c @@ -436,7 +436,7 @@ void UART2_DataRx_Deal( void ) { /* Overflow handling */ /* Save frame error status */ - DUG_PRINTF("U0_O:%08lx\n",(uint32_t)Uart.Rx_RemainLen); + printf("U0_O:%08lx\n",(uint32_t)Uart.Rx_RemainLen); } else { diff --git a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/UART.h b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/UART.h index 48a5ba2..0dd95fc 100644 --- a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/UART.h +++ b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/UART/UART.h @@ -21,7 +21,6 @@ extern "C" { #include "string.h" #include "debug.h" #include "string.h" -#include "PRINTF.h" #include "ch32v20x_usbfs_device.h" #include "ch32v20x_conf.h" diff --git a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/USB_Device/ch32v20x_usbfs_device.c b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/USB_Device/ch32v20x_usbfs_device.c index cfc139f..78bc2a4 100644 --- a/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/USB_Device/ch32v20x_usbfs_device.c +++ b/EVT/EXAM/USB/USBFS/DEVICE/SimulateCDC/User/USB_Device/ch32v20x_usbfs_device.c @@ -84,8 +84,8 @@ void USBFS_Device_Endp_Init( void ) USBOTG_FS->UEP0_DMA = (uint32_t)USBFS_EP0_Buf; USBOTG_FS->UEP1_DMA = (uint32_t)USBFS_EP1_Buf; - USBOTG_FS->UEP2_DMA = (uint32_t)(uint8_t *)&UART2_Tx_Buf[ 0 ]; - USBOTG_FS->UEP3_DMA = (uint32_t)(uint8_t *)&UART2_Rx_Buf[ 0 ]; + USBOTG_FS->UEP2_DMA = (uint32_t)UART2_Tx_Buf; + USBOTG_FS->UEP3_DMA = (uint32_t)USBFS_EP3_Buf; USBOTG_FS->UEP0_RX_CTRL = USBFS_UEP_R_RES_ACK; USBOTG_FS->UEP2_RX_CTRL = USBFS_UEP_R_RES_ACK; @@ -211,12 +211,12 @@ uint8_t USBFS_Endp_DataUp(uint8_t endp, uint8_t *pbuf, uint16_t len, uint8_t mod { memcpy( USBFSD_UEP_BUF(endp)+buf_load_offset, pbuf, len ); } + /* Set end-point busy */ + USBFS_Endp_Busy[ endp ] = 0x01; /* tx length */ USBFSD_UEP_TLEN(endp) = len; /* response ack */ USBFSD_UEP_CTRL(endp) = (USBFSD_UEP_CTRL(endp) & ~USBFS_UEP_T_RES_MASK) | USBFS_UEP_T_RES_ACK; - /* Set end-point busy */ - USBFS_Endp_Busy[ endp ] = 0x01; } } else diff --git a/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.cproject b/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.cproject index 6a1fb42..ac8cb33 100644 --- a/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.cproject +++ b/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.cproject @@ -140,15 +140,5 @@ - - - - - - - - - - - + diff --git a/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.project b/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.project index 4f65741..2d3e392 100644 --- a/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.project +++ b/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.project @@ -1,7 +1,7 @@ - + APP - + @@ -48,7 +48,7 @@ 1595986042669 - + 22 org.eclipse.ui.ide.multiFilter diff --git a/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.settings/language.settings.xml b/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.settings/language.settings.xml deleted file mode 100644 index 44d26b5..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.template b/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.template index 6d76edd..0a695fc 100644 --- a/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.template +++ b/EVT/EXAM/USB/USBFS/HOST_IAP/APP/.template @@ -1,16 +1,15 @@ -Mcu Type=CH32V20x Address=0x08000000 Erase All=true Program=true Verify=true Reset=true - -Vendor=WCH -Link=WCH-Link Toolchain=RISC-V Series=CH32V307 Description=ROM(byte): 256K, SRAM(byte): 64K, CHIP PINS: 64, GPIO PORTS: 51.\nWCH CH32V3 series of mainstream MCUs covers the needs of a large variety of applications in the industrial,medical and consumer markets. High performance with first-class peripherals and low-power,low-voltage operation is paired with a high level of integration at accessible prices with a simple architecture and easy-to-use tools. - PeripheralVersion=1.4 -MCU=CH32V307RVT6 Target Path=obj/APP.hex + +Vendor=WCH +MCU=CH32V203RBT6 +Mcu Type=CH32V20x +Link=WCH-Link \ No newline at end of file diff --git a/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.cproject b/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.cproject index c616d3e..9a05a92 100644 --- a/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.cproject +++ b/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.cproject @@ -152,15 +152,5 @@ - - - - - - - - - - - + diff --git a/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.settings/language.settings.xml b/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.settings/language.settings.xml deleted file mode 100644 index 089b5ae..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.template b/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.template index 7d3803b..783a087 100644 --- a/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.template +++ b/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/.template @@ -1,16 +1,15 @@ -Mcu Type=CH32V20x Address=0x08000000 Erase All=true Program=true Verify=true Reset=true - -Vendor=WCH -Link=WCH-Link Toolchain=RISC-V Series=CH32V307 Description=ROM(byte): 256K, SRAM(byte): 64K, CHIP PINS: 64, GPIO PORTS: 51.\nWCH CH32V3 series of mainstream MCUs covers the needs of a large variety of applications in the industrial,medical and consumer markets. High performance with first-class peripherals and low-power,low-voltage operation is paired with a high level of integration at accessible prices with a simple architecture and easy-to-use tools. - PeripheralVersion=1.4 Target Path=obj\HOST_IAP.hex -MCU=CH32V307RVT6 + +Vendor=WCH +MCU=CH32V203RBT6 +Mcu Type=CH32V20x +Link=WCH-Link \ No newline at end of file diff --git a/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/User/Host_IAP/usb_host_iap.h b/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/User/Host_IAP/usb_host_iap.h index 53aea69..d7e4082 100644 --- a/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/User/Host_IAP/usb_host_iap.h +++ b/EVT/EXAM/USB/USBFS/HOST_IAP/HOST_IAP/User/Host_IAP/usb_host_iap.h @@ -28,16 +28,16 @@ extern "C" { /* File Descripton */ /* *@Note - 锟斤拷锟斤拷锟斤拷CH32系锟叫的碉拷片锟斤拷锟斤拷锟斤拷锟斤拷risc-v锟节核碉拷CH32V系锟叫猴拷cortex-m3锟节核碉拷CH32F系锟斤拷 - iap_flash.c/iap_flash.h锟侥硷拷锟斤拷锟斤拷iap锟斤拷app锟斤拷要锟斤拷iap锟斤拷锟斤拷锟斤拷锟斤拷锟街癸拷锟斤拷澹琣pp锟斤拷锟斤拷锟斤拷锟斤拷锟街癸拷锟斤拷澹� - 芯片flash锟侥诧拷锟斤拷锟斤拷锟斤拷锟斤拷 - ***2022锟斤拷6锟斤拷13锟斤拷*** - 1锟斤拷锟芥本0.1锟斤拷 - 锟斤拷锟斤拷锟侥达拷锟斤拷锟斤拷锟絝lash锟街o拷锟斤拷锟街o拷锟街节讹拷锟斤拷iap锟截伙拷锟斤拷flash锟斤拷锟斤拷锟斤拷写锟诫,锟斤拷蹋锟斤拷锟饺★拷锟叫o拷椤� - 锟斤拷锟斤拷锟芥及flash锟斤拷写锟斤拷锟斤拷锟斤拷锟侥诧拷锟斤拷锟斤拷使锟斤拷DEF_FLASH_OPERATION_KEY_CODE锟斤拷锟斤拷锟斤拷DEF_FLASH_OPERATION_KEY_CODE_0 - 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷始时写锟诫,DEF_FLASH_OPERATION_KEY_CODE_1锟斤拷每锟轿诧拷锟斤拷flash前写锟诫。 - 使锟矫宏定锟斤拷锟斤拷锟斤拷iap锟斤拷锟斤拷锟絘pp锟斤拷锟诫,锟斤拷iap锟斤拷app锟斤拷flash锟斤拷锟斤拷锟侥达拷锟斤拷统一锟斤拷一锟斤拷锟侥硷拷锟斤拷 - iap锟斤拷锟诫开锟斤拷锟斤拷锟叫猴拷锟斤拷锟斤拷锟矫o拷app锟斤拷锟斤拷锟斤拷锟斤拷锟絀AP_VerifyCode_Erase(); 锟斤拷锟斤拷锟斤拷 + *suitable for CH32 series MCUs(include CH32V series with risc-v core and ch32F series with cortex-m3 core) + *The iap_flash.c/iap_flash.h file includes the definition of the start and end of the iap area code required + *by iap and app, and the start and end definition of the app area code,the operation function of chip flash. + ****2022-6-13*** + * 1 version 0.1, + *All operations involving flash read, write and erase use DEF_FLASH_OPERATION_KEY_CODE, DEF_FLASH_OPERATION_KEY_CODE_0 + *It is written at the beginning of the main function, and DEF_FLASH_OPERATION_KEY_CODE_1 is written before each flash operation. + *Use the macro definition to distinguish the iap code and the app code, and unify the iap and app codes for flash operations into one file. + *The iap code opens all function calls, and the app code only opens the IAP_VerifyCode_Erase(); function. + * */ /*******************************************************************************/ diff --git a/EVT/EXAM/USB/USBFS/HOST_KM/.settings/language.settings.xml b/EVT/EXAM/USB/USBFS/HOST_KM/.settings/language.settings.xml deleted file mode 100644 index db264e4..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_KM/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/USB/USBFS/HOST_KM/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/USB/USBFS/HOST_KM/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index c2e24c5..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_KM/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/ch32vf20x_usbotg_host.h=UTF-8 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/USB/USBFS/HOST_KM/.settings/org.eclipse.ltk.core.refactoring.prefs b/EVT/EXAM/USB/USBFS/HOST_KM/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index b196c64..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_KM/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.cproject b/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.cproject index 754e7b1..67c7f45 100644 --- a/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.cproject +++ b/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.cproject @@ -140,15 +140,5 @@ - - - - - - - - - - - + diff --git a/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/language.settings.xml b/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/language.settings.xml deleted file mode 100644 index 3cee6af..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index c2e24c5..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/ch32vf20x_usbotg_host.h=UTF-8 -encoding//User/main.c=UTF-8 diff --git a/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/org.eclipse.ltk.core.refactoring.prefs b/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index b196c64..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_MTP_FileSystem/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/EVT/EXAM/USB/USBFS/HOST_Udisk/.cproject b/EVT/EXAM/USB/USBFS/HOST_Udisk/.cproject index db9803f..23a5a15 100644 --- a/EVT/EXAM/USB/USBFS/HOST_Udisk/.cproject +++ b/EVT/EXAM/USB/USBFS/HOST_Udisk/.cproject @@ -150,15 +150,5 @@ - - - - - - - - - - - + diff --git a/EVT/EXAM/USB/USBFS/HOST_Udisk/.project b/EVT/EXAM/USB/USBFS/HOST_Udisk/.project index 5c29331..45fdb9e 100644 --- a/EVT/EXAM/USB/USBFS/HOST_Udisk/.project +++ b/EVT/EXAM/USB/USBFS/HOST_Udisk/.project @@ -1,18 +1,18 @@ - + - Host_Udisk_Exams - - + Host_UDisk_Exams + + org.eclipse.cdt.managedbuilder.core.genmakebuilder clean,full,incremental, - + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, - + @@ -23,7 +23,7 @@ 1595986042669 - + 22 org.eclipse.ui.ide.multiFilter diff --git a/EVT/EXAM/USB/USBFS/HOST_Udisk/.settings/language.settings.xml b/EVT/EXAM/USB/USBFS/HOST_Udisk/.settings/language.settings.xml deleted file mode 100644 index 43c9af3..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_Udisk/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/USB/USBFS/HOST_Udisk/.settings/org.eclipse.core.resources.prefs b/EVT/EXAM/USB/USBFS/HOST_Udisk/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index f813796..0000000 --- a/EVT/EXAM/USB/USBFS/HOST_Udisk/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//User/Host_UDisk/UDisk_Operation.h=UTF-8 diff --git a/EVT/EXAM/USB/USBFS/HOST_Udisk/.template b/EVT/EXAM/USB/USBFS/HOST_Udisk/.template index 8dff4cd..74eefb4 100644 --- a/EVT/EXAM/USB/USBFS/HOST_Udisk/.template +++ b/EVT/EXAM/USB/USBFS/HOST_Udisk/.template @@ -1,16 +1,15 @@ -Mcu Type=CH32V30x Address=0x08000000 Erase All=true Program=true Verify=true Reset=true - -Vendor=WCH -Link=WCH-Link Toolchain=RISC-V -Series=CH32V307 +Series=CH32V203 Description=ROM(byte): 256K, SRAM(byte): 64K, CHIP PINS: 64, GPIO PORTS: 51.\nWCH CH32V3 series of mainstream MCUs covers the needs of a large variety of applications in the industrial,medical and consumer markets. High performance with first-class peripherals and low-power,low-voltage operation is paired with a high level of integration at accessible prices with a simple architecture and easy-to-use tools. - PeripheralVersion=1.4 Target Path=obj\Host_UDisk_Exams.hex -MCU=CH32V307RVT6 + +Vendor=WCH +MCU=CH32V203RBT6 +Mcu Type=CH32V20x +Link=WCH-Link \ No newline at end of file diff --git a/EVT/EXAM/USB/USBFS/HOST_Udisk/User/main.c b/EVT/EXAM/USB/USBFS/HOST_Udisk/User/main.c index 1bf0883..a5bffeb 100644 --- a/EVT/EXAM/USB/USBFS/HOST_Udisk/User/main.c +++ b/EVT/EXAM/USB/USBFS/HOST_Udisk/User/main.c @@ -54,6 +54,7 @@ int main(void) USART_Printf_Init( 115200 ); Delay_Init( ); printf( "SystemClk:%d\r\n", SystemCoreClock ); + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); printf( "USBFS HOST Test EXAM %d\r\n", DEF_TEST_FUNC_NUM ); /* General USB Host UDisk Operation Initialization */ diff --git a/EVT/EXAM/WWDG/.settings/language.settings.xml b/EVT/EXAM/WWDG/.settings/language.settings.xml deleted file mode 100644 index da600e9..0000000 --- a/EVT/EXAM/WWDG/.settings/language.settings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/EVT/EXAM/WWDG/User/main.c b/EVT/EXAM/WWDG/User/main.c index 97ba04a..6287588 100644 --- a/EVT/EXAM/WWDG/User/main.c +++ b/EVT/EXAM/WWDG/User/main.c @@ -4,19 +4,19 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : Main program body. -********************************************************************************* -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* Attention: This software (modified or not) and binary are used for -* microcontroller manufactured by Nanjing Qinheng Microelectronics. -*******************************************************************************/ + ********************************************************************************* + * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. + * Attention: This software (modified or not) and binary are used for + * microcontroller manufactured by Nanjing Qinheng Microelectronics. + *******************************************************************************/ /* *@Note - Window watchdog routine: - This routine demonstrates that the watchdog is fed between the window 0x40 - 0x5f to - prevent the watchdog from being reset. - -*/ + *Window watchdog routine: + *This routine demonstrates that the watchdog is fed between the window 0x40 - 0x5f to + *prevent the watchdog from being reset. + * + */ #include "debug.h" @@ -93,10 +93,11 @@ int main(void) u8 wwdg_tr, wwdg_wr; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); + SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n", SystemCoreClock); - + printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); printf("WWDG Test\r\n"); WWDG_Config(0x7f, 0x5f, WWDG_Prescaler_8); /* 48M/8/4096 */ wwdg_wr = WWDG->CFGR & 0x7F; diff --git a/EVT/PUB/CH32V20xSCH.pdf b/EVT/PUB/CH32V20xSCH.pdf index 35faf46..8074167 100644 Binary files a/EVT/PUB/CH32V20xSCH.pdf and b/EVT/PUB/CH32V20xSCH.pdf differ diff --git a/EVT/PUB/SCHPCB/CH32F&V208C_R0/CH32F&V208C-R0-1v1.PcbDoc b/EVT/PUB/SCHPCB/CH32F&V208C_R0/CH32F&V208C-R0-1v1.PcbDoc new file mode 100644 index 0000000..86e6d7f Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32F&V208C_R0/CH32F&V208C-R0-1v1.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32F&V208C_R0/CH32F&V208C-R0.SchDoc b/EVT/PUB/SCHPCB/CH32F&V208C_R0/CH32F&V208C-R0.SchDoc new file mode 100644 index 0000000..3326e5e Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32F&V208C_R0/CH32F&V208C-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32F&V208G_R0/CH32F&V208G-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32F&V208G_R0/CH32F&V208G-R0-1v0.PcbDoc new file mode 100644 index 0000000..77b4ef8 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32F&V208G_R0/CH32F&V208G-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32F&V208G_R0/CH32F&V208G-R0.SchDoc b/EVT/PUB/SCHPCB/CH32F&V208G_R0/CH32F&V208G-R0.SchDoc new file mode 100644 index 0000000..c498ab2 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32F&V208G_R0/CH32F&V208G-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32F&V208R_R0/CH32F&V208R-R0-1v1.PcbDoc b/EVT/PUB/SCHPCB/CH32F&V208R_R0/CH32F&V208R-R0-1v1.PcbDoc new file mode 100644 index 0000000..012e3d8 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32F&V208R_R0/CH32F&V208R-R0-1v1.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32F&V208R_R0/CH32F&V208R-R0.SchDoc b/EVT/PUB/SCHPCB/CH32F&V208R_R0/CH32F&V208R-R0.SchDoc new file mode 100644 index 0000000..b7a5329 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32F&V208R_R0/CH32F&V208R-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32F&V208W_R0/CH32F&V208W-R0-1v4.PcbDoc b/EVT/PUB/SCHPCB/CH32F&V208W_R0/CH32F&V208W-R0-1v4.PcbDoc new file mode 100644 index 0000000..feb862f Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32F&V208W_R0/CH32F&V208W-R0-1v4.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32F&V208W_R0/CH32F&V208W-R0.SchDoc b/EVT/PUB/SCHPCB/CH32F&V208W_R0/CH32F&V208W-R0.SchDoc new file mode 100644 index 0000000..51861da Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32F&V208W_R0/CH32F&V208W-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203C6T6-R0/CH32V203C6T6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203C6T6-R0/CH32V203C6T6-R0.SchDoc new file mode 100644 index 0000000..99712f4 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203C6T6-R0/CH32V203C6T6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203C6T6-R0/CH32Vx03C-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203C6T6-R0/CH32Vx03C-R0-1v0.PcbDoc new file mode 100644 index 0000000..1e7336a Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203C6T6-R0/CH32Vx03C-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203C8T6-R0/CH32V203C8T6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203C8T6-R0/CH32V203C8T6-R0.SchDoc new file mode 100644 index 0000000..77e9b3b Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203C8T6-R0/CH32V203C8T6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203C8T6-R0/CH32Vx03C-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203C8T6-R0/CH32Vx03C-R0-1v0.PcbDoc new file mode 100644 index 0000000..1e7336a Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203C8T6-R0/CH32Vx03C-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203C8T6-R1/CH32V203C8T6-R1.SchDoc b/EVT/PUB/SCHPCB/CH32V203C8T6-R1/CH32V203C8T6-R1.SchDoc new file mode 100644 index 0000000..71769ae Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203C8T6-R1/CH32V203C8T6-R1.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203C8T6-R1/CH32x203C-R1-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203C8T6-R1/CH32x203C-R1-1v0.PcbDoc new file mode 100644 index 0000000..1ee839b Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203C8T6-R1/CH32x203C-R1-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203C8U6-R0/CH32V203C8U6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203C8U6-R0/CH32V203C8U6-R0.SchDoc new file mode 100644 index 0000000..fbf18a1 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203C8U6-R0/CH32V203C8U6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203C8U6-R0/CH32x203C8U6-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203C8U6-R0/CH32x203C8U6-R0-1v0.PcbDoc new file mode 100644 index 0000000..5616ca2 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203C8U6-R0/CH32x203C8U6-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203F6P6-R0/CH32V203F-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203F6P6-R0/CH32V203F-R0-1v0.PcbDoc new file mode 100644 index 0000000..58f2f5a Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203F6P6-R0/CH32V203F-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203F6P6-R0/CH32V203F6P6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203F6P6-R0/CH32V203F6P6-R0.SchDoc new file mode 100644 index 0000000..b39a31e Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203F6P6-R0/CH32V203F6P6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203F8P6-R0/CH32V203F8P6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203F8P6-R0/CH32V203F8P6-R0.SchDoc new file mode 100644 index 0000000..2959c2a Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203F8P6-R0/CH32V203F8P6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203F8P6-R0/CH32V20xF8-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203F8P6-R0/CH32V20xF8-R0-1v0.PcbDoc new file mode 100644 index 0000000..0418721 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203F8P6-R0/CH32V20xF8-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203F8U6-R0/CH32V203F8U6-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203F8U6-R0/CH32V203F8U6-R0-1v0.PcbDoc new file mode 100644 index 0000000..73f14c7 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203F8U6-R0/CH32V203F8U6-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203F8U6-R0/CH32V203F8U6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203F8U6-R0/CH32V203F8U6-R0.SchDoc new file mode 100644 index 0000000..24d9566 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203F8U6-R0/CH32V203F8U6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203G6U6-R0/CH32V203G-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203G6U6-R0/CH32V203G-R0-1v0.PcbDoc new file mode 100644 index 0000000..e10f623 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203G6U6-R0/CH32V203G-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203G6U6-R0/CH32V203G6U6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203G6U6-R0/CH32V203G6U6-R0.SchDoc new file mode 100644 index 0000000..cd37edd Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203G6U6-R0/CH32V203G6U6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203K6T6-R0/CH32V203K6T6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203K6T6-R0/CH32V203K6T6-R0.SchDoc new file mode 100644 index 0000000..444be7d Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203K6T6-R0/CH32V203K6T6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203K6T6-R0/CH32x203K-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203K6T6-R0/CH32x203K-R0-1v0.PcbDoc new file mode 100644 index 0000000..27ac52a Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203K6T6-R0/CH32x203K-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203K8T6-R0/CH32V203K8T6-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V203K8T6-R0/CH32V203K8T6-R0.SchDoc new file mode 100644 index 0000000..671716e Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203K8T6-R0/CH32V203K8T6-R0.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203K8T6-R0/CH32x203K-R0-1v0.PcbDoc b/EVT/PUB/SCHPCB/CH32V203K8T6-R0/CH32x203K-R0-1v0.PcbDoc new file mode 100644 index 0000000..27ac52a Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203K8T6-R0/CH32x203K-R0-1v0.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203RBT6-R1/CH32F&Vx0xR-R1-1v2.PcbDoc b/EVT/PUB/SCHPCB/CH32V203RBT6-R1/CH32F&Vx0xR-R1-1v2.PcbDoc new file mode 100644 index 0000000..92c4e9e Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203RBT6-R1/CH32F&Vx0xR-R1-1v2.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V203RBT6-R1/CH32V203RBT6-R1.SchDoc b/EVT/PUB/SCHPCB/CH32V203RBT6-R1/CH32V203RBT6-R1.SchDoc new file mode 100644 index 0000000..2536070 Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V203RBT6-R1/CH32V203RBT6-R1.SchDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V20xG8_R0/CH32V20xG8-R0-1v1.PcbDoc b/EVT/PUB/SCHPCB/CH32V20xG8_R0/CH32V20xG8-R0-1v1.PcbDoc new file mode 100644 index 0000000..848466d Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V20xG8_R0/CH32V20xG8-R0-1v1.PcbDoc differ diff --git a/EVT/PUB/SCHPCB/CH32V20xG8_R0/CH32V20xG8-R0.SchDoc b/EVT/PUB/SCHPCB/CH32V20xG8_R0/CH32V20xG8-R0.SchDoc new file mode 100644 index 0000000..c9b096a Binary files /dev/null and b/EVT/PUB/SCHPCB/CH32V20xG8_R0/CH32V20xG8-R0.SchDoc differ