From d02abf2cc0ca2faf76d05abe7a70af3f23a21b29 Mon Sep 17 00:00:00 2001 From: James Goppert Date: Fri, 25 Mar 2016 04:38:07 -0500 Subject: [PATCH] Removed CMSIS. --- Documentation/Doxyfile | 3 +- Tools/check_code_style.sh | 1 - cmake/configs/nuttx_px4fmu-v1_default.cmake | 3 - cmake/configs/nuttx_px4fmu-v2_default.cmake | 3 - cmake/configs/nuttx_px4fmu-v2_ekf2.cmake | 3 - cmake/configs/nuttx_px4fmu-v4_default.cmake | 3 - .../CMSIS/Device/ARM/ARMCM3/Include/ARMCM3.h | 264 - .../CMSIS/Device/ARM/ARMCM4/Include/ARMCM4.h | 265 - .../mathlib/CMSIS/Include/arm_common_tables.h | 93 - .../mathlib/CMSIS/Include/arm_const_structs.h | 85 - src/lib/mathlib/CMSIS/Include/arm_math.h | 7318 ----------------- src/lib/mathlib/CMSIS/Include/core_cm3.h | 1627 ---- src/lib/mathlib/CMSIS/Include/core_cm4.h | 1772 ---- src/lib/mathlib/CMSIS/Include/core_cm4_simd.h | 673 -- src/lib/mathlib/CMSIS/Include/core_cmFunc.h | 636 -- src/lib/mathlib/CMSIS/Include/core_cmInstr.h | 688 -- src/lib/mathlib/CMSIS/libarm_cortexM3l_math.a | Bin 3039508 -> 0 bytes src/lib/mathlib/CMSIS/libarm_cortexM4l_math.a | Bin 3049684 -> 0 bytes .../mathlib/CMSIS/libarm_cortexM4lf_math.a | Bin 2989192 -> 0 bytes src/lib/mathlib/CMSIS/library.mk | 46 - src/lib/mathlib/CMSIS/license.txt | 27 - src/lib/mathlib/math/Matrix.hpp | 31 - src/lib/mathlib/math/Vector.hpp | 9 +- src/lib/mathlib/mathlib.h | 6 - 24 files changed, 2 insertions(+), 13554 deletions(-) delete mode 100644 src/lib/mathlib/CMSIS/Device/ARM/ARMCM3/Include/ARMCM3.h delete mode 100644 src/lib/mathlib/CMSIS/Device/ARM/ARMCM4/Include/ARMCM4.h delete mode 100644 src/lib/mathlib/CMSIS/Include/arm_common_tables.h delete mode 100644 src/lib/mathlib/CMSIS/Include/arm_const_structs.h delete mode 100644 src/lib/mathlib/CMSIS/Include/arm_math.h delete mode 100644 src/lib/mathlib/CMSIS/Include/core_cm3.h delete mode 100644 src/lib/mathlib/CMSIS/Include/core_cm4.h delete mode 100644 src/lib/mathlib/CMSIS/Include/core_cm4_simd.h delete mode 100644 src/lib/mathlib/CMSIS/Include/core_cmFunc.h delete mode 100644 src/lib/mathlib/CMSIS/Include/core_cmInstr.h delete mode 100644 src/lib/mathlib/CMSIS/libarm_cortexM3l_math.a delete mode 100755 src/lib/mathlib/CMSIS/libarm_cortexM4l_math.a delete mode 100755 src/lib/mathlib/CMSIS/libarm_cortexM4lf_math.a delete mode 100644 src/lib/mathlib/CMSIS/library.mk delete mode 100644 src/lib/mathlib/CMSIS/license.txt diff --git a/Documentation/Doxyfile b/Documentation/Doxyfile index fad7cab292..cf5eee1de5 100644 --- a/Documentation/Doxyfile +++ b/Documentation/Doxyfile @@ -599,8 +599,7 @@ RECURSIVE = YES # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. -EXCLUDE = ../src/lib/mathlib/CMSIS \ - ../src/modules/attitude_estimator_ekf/codegen +EXCLUDE = ../src/modules/attitude_estimator_ekf/codegen # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded diff --git a/Tools/check_code_style.sh b/Tools/check_code_style.sh index 54ce08c680..c7b4afe4b3 100755 --- a/Tools/check_code_style.sh +++ b/Tools/check_code_style.sh @@ -34,7 +34,6 @@ for fn in $(find src/examples \ -path './mavlink' -prune -o \ -path './NuttX' -prune -o \ -path './src/lib/eigen' -prune -o \ - -path './src/lib/mathlib/CMSIS' -prune -o \ -path './src/modules/uavcan/libuavcan' -prune -o \ -path './src/modules/attitude_estimator_ekf/codegen' -prune -o \ -path './src/modules/ekf_att_pos_estimator' -prune -o \ diff --git a/cmake/configs/nuttx_px4fmu-v1_default.cmake b/cmake/configs/nuttx_px4fmu-v1_default.cmake index de8753341c..1ed8e7f902 100644 --- a/cmake/configs/nuttx_px4fmu-v1_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v1_default.cmake @@ -103,7 +103,6 @@ set(config_module_list # # Libraries # - #lib/mathlib/CMSIS lib/mathlib lib/mathlib/math/filter lib/ecl @@ -165,11 +164,9 @@ set(config_io_board ) set(config_extra_libs - ${CMAKE_SOURCE_DIR}/src/lib/mathlib/CMSIS/libarm_cortexM4lf_math.a ) set(config_io_extra_libs - #${CMAKE_SOURCE_DIR}/src/lib/mathlib/CMSIS/libarm_cortexM3l_math.a ) add_custom_target(sercon) diff --git a/cmake/configs/nuttx_px4fmu-v2_default.cmake b/cmake/configs/nuttx_px4fmu-v2_default.cmake index e4dfb1969f..6e96c71e25 100644 --- a/cmake/configs/nuttx_px4fmu-v2_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_default.cmake @@ -112,7 +112,6 @@ set(config_module_list # # Libraries # - #lib/mathlib/CMSIS lib/mathlib lib/mathlib/math/filter lib/ecl @@ -174,13 +173,11 @@ set(config_io_board ) set(config_extra_libs - ${CMAKE_SOURCE_DIR}/src/lib/mathlib/CMSIS/libarm_cortexM4lf_math.a uavcan uavcan_stm32_driver ) set(config_io_extra_libs - #${CMAKE_SOURCE_DIR}/src/lib/mathlib/CMSIS/libarm_cortexM3l_math.a ) add_custom_target(sercon) diff --git a/cmake/configs/nuttx_px4fmu-v2_ekf2.cmake b/cmake/configs/nuttx_px4fmu-v2_ekf2.cmake index 77526b4afd..5652fed6ac 100644 --- a/cmake/configs/nuttx_px4fmu-v2_ekf2.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_ekf2.cmake @@ -112,7 +112,6 @@ set(config_module_list # # Libraries # - #lib/mathlib/CMSIS lib/mathlib lib/mathlib/math/filter lib/ecl @@ -174,13 +173,11 @@ set(config_io_board ) set(config_extra_libs - ${CMAKE_SOURCE_DIR}/src/lib/mathlib/CMSIS/libarm_cortexM4lf_math.a uavcan uavcan_stm32_driver ) set(config_io_extra_libs - #${CMAKE_SOURCE_DIR}/src/lib/mathlib/CMSIS/libarm_cortexM3l_math.a ) add_custom_target(sercon) diff --git a/cmake/configs/nuttx_px4fmu-v4_default.cmake b/cmake/configs/nuttx_px4fmu-v4_default.cmake index 8bb4005353..d642deea91 100644 --- a/cmake/configs/nuttx_px4fmu-v4_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v4_default.cmake @@ -111,7 +111,6 @@ set(config_module_list # # Libraries # - #lib/mathlib/CMSIS lib/mathlib lib/mathlib/math/filter lib/rc @@ -170,13 +169,11 @@ set(config_extra_builtin_cmds ) set(config_extra_libs - ${CMAKE_SOURCE_DIR}/src/lib/mathlib/CMSIS/libarm_cortexM4lf_math.a uavcan uavcan_stm32_driver ) set(config_io_extra_libs - #${CMAKE_SOURCE_DIR}/src/lib/mathlib/CMSIS/libarm_cortexM3l_math.a ) add_custom_target(sercon) diff --git a/src/lib/mathlib/CMSIS/Device/ARM/ARMCM3/Include/ARMCM3.h b/src/lib/mathlib/CMSIS/Device/ARM/ARMCM3/Include/ARMCM3.h deleted file mode 100644 index 8f39acd9dd..0000000000 --- a/src/lib/mathlib/CMSIS/Device/ARM/ARMCM3/Include/ARMCM3.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************//** - * @file ARMCM3.h - * @brief CMSIS Core Peripheral Access Layer Header File for - * ARMCM3 Device Series - * @version V1.07 - * @date 30. January 2012 - * - * @note - * Copyright (C) 2012 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef ARMCM3_H -#define ARMCM3_H - -#ifdef __cplusplus -extern "C" { -#endif - - -/* ------------------------- Interrupt Number Definition ------------------------ */ - -typedef enum IRQn -{ -/* ------------------- Cortex-M3 Processor Exceptions Numbers ------------------- */ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - HardFault_IRQn = -13, /*!< 3 HardFault Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 System Tick Interrupt */ - -/* ---------------------- ARMCM3 Specific Interrupt Numbers --------------------- */ - WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ - RTC_IRQn = 1, /*!< Real Time Clock Interrupt */ - TIM0_IRQn = 2, /*!< Timer0 / Timer1 Interrupt */ - TIM2_IRQn = 3, /*!< Timer2 / Timer3 Interrupt */ - MCIA_IRQn = 4, /*!< MCIa Interrupt */ - MCIB_IRQn = 5, /*!< MCIb Interrupt */ - UART0_IRQn = 6, /*!< UART0 Interrupt */ - UART1_IRQn = 7, /*!< UART1 Interrupt */ - UART2_IRQn = 8, /*!< UART2 Interrupt */ - UART4_IRQn = 9, /*!< UART4 Interrupt */ - AACI_IRQn = 10, /*!< AACI / AC97 Interrupt */ - CLCD_IRQn = 11, /*!< CLCD Combined Interrupt */ - ENET_IRQn = 12, /*!< Ethernet Interrupt */ - USBDC_IRQn = 13, /*!< USB Device Interrupt */ - USBHC_IRQn = 14, /*!< USB Host Controller Interrupt */ - CHLCD_IRQn = 15, /*!< Character LCD Interrupt */ - FLEXRAY_IRQn = 16, /*!< Flexray Interrupt */ - CAN_IRQn = 17, /*!< CAN Interrupt */ - LIN_IRQn = 18, /*!< LIN Interrupt */ - I2C_IRQn = 19, /*!< I2C ADC/DAC Interrupt */ - CPU_CLCD_IRQn = 28, /*!< CPU CLCD Combined Interrupt */ - UART3_IRQn = 30, /*!< UART3 Interrupt */ - SPI_IRQn = 31, /*!< SPI Touchscreen Interrupt */ -} IRQn_Type; - - -/* ================================================================================ */ -/* ================ Processor and Core Peripheral Section ================ */ -/* ================================================================================ */ - -/* -------- Configuration of the Cortex-M4 Processor and Core Peripherals ------- */ -#define __CM3_REV 0x0201 /*!< Core revision r2p1 */ -#define __MPU_PRESENT 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - -#include /* Processor and core peripherals */ -/* NuttX */ -//#include "system_ARMCM3.h" /* System Header */ - - -/* ================================================================================ */ -/* ================ Device Specific Peripheral Section ================ */ -/* ================================================================================ */ - -/* ------------------- Start of section using anonymous unions ------------------ */ -#if defined(__CC_ARM) - #pragma push - #pragma anon_unions -#elif defined(__ICCARM__) - #pragma language=extended -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) -/* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning 586 -#else - #warning Not supported compiler type -#endif - - - -/* ================================================================================ */ -/* ================ CPU FPGA System (CPU_SYS) ================ */ -/* ================================================================================ */ -typedef struct -{ - __I uint32_t ID; /* Offset: 0x000 (R/ ) Board and FPGA Identifier */ - __IO uint32_t MEMCFG; /* Offset: 0x004 (R/W) Remap and Alias Memory Control */ - __I uint32_t SW; /* Offset: 0x008 (R/ ) Switch States */ - __IO uint32_t LED; /* Offset: 0x00C (R/W) LED Output States */ - __I uint32_t TS; /* Offset: 0x010 (R/ ) Touchscreen Register */ - __IO uint32_t CTRL1; /* Offset: 0x014 (R/W) Misc Control Functions */ - uint32_t RESERVED0[2]; - __IO uint32_t CLKCFG; /* Offset: 0x020 (R/W) System Clock Configuration */ - __IO uint32_t WSCFG; /* Offset: 0x024 (R/W) Flash Waitstate Configuration */ - __IO uint32_t CPUCFG; /* Offset: 0x028 (R/W) Processor Configuration */ - uint32_t RESERVED1[3]; - __IO uint32_t BASE; /* Offset: 0x038 (R/W) ROM Table base Address */ - __IO uint32_t ID2; /* Offset: 0x03C (R/W) Secondary Identification Register */ -} ARM_CPU_SYS_TypeDef; - - -/* ================================================================================ */ -/* ================ DUT FPGA System (DUT_SYS) ================ */ -/* ================================================================================ */ -typedef struct -{ - __I uint32_t ID; /* Offset: 0x000 (R/ ) Board and FPGA Identifier */ - __IO uint32_t PERCFG; /* Offset: 0x004 (R/W) Peripheral Control Signals */ - __I uint32_t SW; /* Offset: 0x008 (R/ ) Switch States */ - __IO uint32_t LED; /* Offset: 0x00C (R/W) LED Output States */ - __IO uint32_t SEG7; /* Offset: 0x010 (R/W) 7-segment LED Output States */ - __I uint32_t CNT25MHz; /* Offset: 0x014 (R/ ) Freerunning counter incrementing at 25MHz */ - __I uint32_t CNT100Hz; /* Offset: 0x018 (R/ ) Freerunning counter incrementing at 100Hz */ -} ARM_DUT_SYS_TypeDef; - - -/* ================================================================================ */ -/* ================ Timer (TIM) ================ */ -/* ================================================================================ */ -typedef struct -{ - __IO uint32_t Timer1Load; /* Offset: 0x000 (R/W) Timer 1 Load */ - __I uint32_t Timer1Value; /* Offset: 0x004 (R/ ) Timer 1 Counter Current Value */ - __IO uint32_t Timer1Control; /* Offset: 0x008 (R/W) Timer 1 Control */ - __O uint32_t Timer1IntClr; /* Offset: 0x00C ( /W) Timer 1 Interrupt Clear */ - __I uint32_t Timer1RIS; /* Offset: 0x010 (R/ ) Timer 1 Raw Interrupt Status */ - __I uint32_t Timer1MIS; /* Offset: 0x014 (R/ ) Timer 1 Masked Interrupt Status */ - __IO uint32_t Timer1BGLoad; /* Offset: 0x018 (R/W) Background Load Register */ - uint32_t RESERVED0[1]; - __IO uint32_t Timer2Load; /* Offset: 0x020 (R/W) Timer 2 Load */ - __I uint32_t Timer2Value; /* Offset: 0x024 (R/ ) Timer 2 Counter Current Value */ - __IO uint32_t Timer2Control; /* Offset: 0x028 (R/W) Timer 2 Control */ - __O uint32_t Timer2IntClr; /* Offset: 0x02C ( /W) Timer 2 Interrupt Clear */ - __I uint32_t Timer2RIS; /* Offset: 0x030 (R/ ) Timer 2 Raw Interrupt Status */ - __I uint32_t Timer2MIS; /* Offset: 0x034 (R/ ) Timer 2 Masked Interrupt Status */ - __IO uint32_t Timer2BGLoad; /* Offset: 0x038 (R/W) Background Load Register */ -} ARM_TIM_TypeDef; - - -/* ================================================================================ */ -/* ============== Universal Asyncronous Receiver / Transmitter (UART) ============= */ -/* ================================================================================ */ -typedef struct -{ - __IO uint32_t DR; /* Offset: 0x000 (R/W) Data */ - union { - __I uint32_t RSR; /* Offset: 0x000 (R/ ) Receive Status */ - __O uint32_t ECR; /* Offset: 0x000 ( /W) Error Clear */ - }; - uint32_t RESERVED0[4]; - __IO uint32_t FR; /* Offset: 0x018 (R/W) Flags */ - uint32_t RESERVED1[1]; - __IO uint32_t ILPR; /* Offset: 0x020 (R/W) IrDA Low-power Counter */ - __IO uint32_t IBRD; /* Offset: 0x024 (R/W) Interger Baud Rate */ - __IO uint32_t FBRD; /* Offset: 0x028 (R/W) Fractional Baud Rate */ - __IO uint32_t LCR_H; /* Offset: 0x02C (R/W) Line Control */ - __IO uint32_t CR; /* Offset: 0x030 (R/W) Control */ - __IO uint32_t IFLS; /* Offset: 0x034 (R/W) Interrupt FIFO Level Select */ - __IO uint32_t IMSC; /* Offset: 0x038 (R/W) Interrupt Mask Set / Clear */ - __IO uint32_t RIS; /* Offset: 0x03C (R/W) Raw Interrupt Status */ - __IO uint32_t MIS; /* Offset: 0x040 (R/W) Masked Interrupt Status */ - __O uint32_t ICR; /* Offset: 0x044 ( /W) Interrupt Clear */ - __IO uint32_t DMACR; /* Offset: 0x048 (R/W) DMA Control */ -} ARM_UART_TypeDef; - - -/* -------------------- End of section using anonymous unions ------------------- */ -#if defined(__CC_ARM) - #pragma pop -#elif defined(__ICCARM__) - /* leave anonymous unions enabled */ -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) - /* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning restore -#else - #warning Not supported compiler type -#endif - - - - -/* ================================================================================ */ -/* ================ Peripheral memory map ================ */ -/* ================================================================================ */ -/* -------------------------- CPU FPGA memory map ------------------------------- */ -#define ARM_FLASH_BASE (0x00000000UL) -#define ARM_RAM_BASE (0x20000000UL) -#define ARM_RAM_FPGA_BASE (0x1EFF0000UL) -#define ARM_CPU_CFG_BASE (0xDFFF0000UL) - -#define ARM_CPU_SYS_BASE (ARM_CPU_CFG_BASE + 0x00000) -#define ARM_UART3_BASE (ARM_CPU_CFG_BASE + 0x05000) - -/* -------------------------- DUT FPGA memory map ------------------------------- */ -#define ARM_APB_BASE (0x40000000UL) -#define ARM_AHB_BASE (0x4FF00000UL) -#define ARM_DMC_BASE (0x60000000UL) -#define ARM_SMC_BASE (0xA0000000UL) - -#define ARM_TIM0_BASE (ARM_APB_BASE + 0x02000) -#define ARM_TIM2_BASE (ARM_APB_BASE + 0x03000) -#define ARM_DUT_SYS_BASE (ARM_APB_BASE + 0x04000) -#define ARM_UART0_BASE (ARM_APB_BASE + 0x06000) -#define ARM_UART1_BASE (ARM_APB_BASE + 0x07000) -#define ARM_UART2_BASE (ARM_APB_BASE + 0x08000) -#define ARM_UART4_BASE (ARM_APB_BASE + 0x09000) - - -/* ================================================================================ */ -/* ================ Peripheral declaration ================ */ -/* ================================================================================ */ -/* -------------------------- CPU FPGA Peripherals ------------------------------ */ -#define ARM_CPU_SYS ((ARM_CPU_SYS_TypeDef *) ARM_CPU_SYS_BASE) -#define ARM_UART3 (( ARM_UART_TypeDef *) ARM_UART3_BASE) - -/* -------------------------- DUT FPGA Peripherals ------------------------------ */ -#define ARM_DUT_SYS ((ARM_DUT_SYS_TypeDef *) ARM_DUT_SYS_BASE) -#define ARM_TIM0 (( ARM_TIM_TypeDef *) ARM_TIM0_BASE) -#define ARM_TIM2 (( ARM_TIM_TypeDef *) ARM_TIM2_BASE) -#define ARM_UART0 (( ARM_UART_TypeDef *) ARM_UART0_BASE) -#define ARM_UART1 (( ARM_UART_TypeDef *) ARM_UART1_BASE) -#define ARM_UART2 (( ARM_UART_TypeDef *) ARM_UART2_BASE) -#define ARM_UART4 (( ARM_UART_TypeDef *) ARM_UART4_BASE) - - -#ifdef __cplusplus -} -#endif - -#endif /* ARMCM3_H */ diff --git a/src/lib/mathlib/CMSIS/Device/ARM/ARMCM4/Include/ARMCM4.h b/src/lib/mathlib/CMSIS/Device/ARM/ARMCM4/Include/ARMCM4.h deleted file mode 100644 index 181b7e4335..0000000000 --- a/src/lib/mathlib/CMSIS/Device/ARM/ARMCM4/Include/ARMCM4.h +++ /dev/null @@ -1,265 +0,0 @@ -/**************************************************************************//** - * @file ARMCM4.h - * @brief CMSIS Core Peripheral Access Layer Header File for - * ARMCM4 Device Series - * @version V1.07 - * @date 30. January 2012 - * - * @note - * Copyright (C) 2012 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef ARMCM4_H -#define ARMCM4_H - -#ifdef __cplusplus -extern "C" { -#endif - - -/* ------------------------- Interrupt Number Definition ------------------------ */ - -typedef enum IRQn -{ -/* ------------------- Cortex-M4 Processor Exceptions Numbers ------------------- */ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - HardFault_IRQn = -13, /*!< 3 HardFault Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 System Tick Interrupt */ - -/* ---------------------- ARMCM4 Specific Interrupt Numbers --------------------- */ - WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ - RTC_IRQn = 1, /*!< Real Time Clock Interrupt */ - TIM0_IRQn = 2, /*!< Timer0 / Timer1 Interrupt */ - TIM2_IRQn = 3, /*!< Timer2 / Timer3 Interrupt */ - MCIA_IRQn = 4, /*!< MCIa Interrupt */ - MCIB_IRQn = 5, /*!< MCIb Interrupt */ - UART0_IRQn = 6, /*!< UART0 Interrupt */ - UART1_IRQn = 7, /*!< UART1 Interrupt */ - UART2_IRQn = 8, /*!< UART2 Interrupt */ - UART4_IRQn = 9, /*!< UART4 Interrupt */ - AACI_IRQn = 10, /*!< AACI / AC97 Interrupt */ - CLCD_IRQn = 11, /*!< CLCD Combined Interrupt */ - ENET_IRQn = 12, /*!< Ethernet Interrupt */ - USBDC_IRQn = 13, /*!< USB Device Interrupt */ - USBHC_IRQn = 14, /*!< USB Host Controller Interrupt */ - CHLCD_IRQn = 15, /*!< Character LCD Interrupt */ - FLEXRAY_IRQn = 16, /*!< Flexray Interrupt */ - CAN_IRQn = 17, /*!< CAN Interrupt */ - LIN_IRQn = 18, /*!< LIN Interrupt */ - I2C_IRQn = 19, /*!< I2C ADC/DAC Interrupt */ - CPU_CLCD_IRQn = 28, /*!< CPU CLCD Combined Interrupt */ - UART3_IRQn = 30, /*!< UART3 Interrupt */ - SPI_IRQn = 31, /*!< SPI Touchscreen Interrupt */ -} IRQn_Type; - - -/* ================================================================================ */ -/* ================ Processor and Core Peripheral Section ================ */ -/* ================================================================================ */ - -/* -------- Configuration of the Cortex-M4 Processor and Core Peripherals ------- */ -#define __CM4_REV 0x0001 /*!< Core revision r0p1 */ -#define __MPU_PRESENT 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ -#define __FPU_PRESENT 1 /*!< FPU present or not */ - -#include /* Processor and core peripherals */ -/* NuttX */ -//#include "system_ARMCM4.h" /* System Header */ - - -/* ================================================================================ */ -/* ================ Device Specific Peripheral Section ================ */ -/* ================================================================================ */ - -/* ------------------- Start of section using anonymous unions ------------------ */ -#if defined(__CC_ARM) - #pragma push - #pragma anon_unions -#elif defined(__ICCARM__) - #pragma language=extended -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) -/* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning 586 -#else - #warning Not supported compiler type -#endif - - - -/* ================================================================================ */ -/* ================ CPU FPGA System (CPU_SYS) ================ */ -/* ================================================================================ */ -typedef struct -{ - __I uint32_t ID; /* Offset: 0x000 (R/ ) Board and FPGA Identifier */ - __IO uint32_t MEMCFG; /* Offset: 0x004 (R/W) Remap and Alias Memory Control */ - __I uint32_t SW; /* Offset: 0x008 (R/ ) Switch States */ - __IO uint32_t LED; /* Offset: 0x00C (R/W) LED Output States */ - __I uint32_t TS; /* Offset: 0x010 (R/ ) Touchscreen Register */ - __IO uint32_t CTRL1; /* Offset: 0x014 (R/W) Misc Control Functions */ - uint32_t RESERVED0[2]; - __IO uint32_t CLKCFG; /* Offset: 0x020 (R/W) System Clock Configuration */ - __IO uint32_t WSCFG; /* Offset: 0x024 (R/W) Flash Waitstate Configuration */ - __IO uint32_t CPUCFG; /* Offset: 0x028 (R/W) Processor Configuration */ - uint32_t RESERVED1[3]; - __IO uint32_t BASE; /* Offset: 0x038 (R/W) ROM Table base Address */ - __IO uint32_t ID2; /* Offset: 0x03C (R/W) Secondary Identification Register */ -} ARM_CPU_SYS_TypeDef; - - -/* ================================================================================ */ -/* ================ DUT FPGA System (DUT_SYS) ================ */ -/* ================================================================================ */ -typedef struct -{ - __I uint32_t ID; /* Offset: 0x000 (R/ ) Board and FPGA Identifier */ - __IO uint32_t PERCFG; /* Offset: 0x004 (R/W) Peripheral Control Signals */ - __I uint32_t SW; /* Offset: 0x008 (R/ ) Switch States */ - __IO uint32_t LED; /* Offset: 0x00C (R/W) LED Output States */ - __IO uint32_t SEG7; /* Offset: 0x010 (R/W) 7-segment LED Output States */ - __I uint32_t CNT25MHz; /* Offset: 0x014 (R/ ) Freerunning counter incrementing at 25MHz */ - __I uint32_t CNT100Hz; /* Offset: 0x018 (R/ ) Freerunning counter incrementing at 100Hz */ -} ARM_DUT_SYS_TypeDef; - - -/* ================================================================================ */ -/* ================ Timer (TIM) ================ */ -/* ================================================================================ */ -typedef struct -{ - __IO uint32_t Timer1Load; /* Offset: 0x000 (R/W) Timer 1 Load */ - __I uint32_t Timer1Value; /* Offset: 0x004 (R/ ) Timer 1 Counter Current Value */ - __IO uint32_t Timer1Control; /* Offset: 0x008 (R/W) Timer 1 Control */ - __O uint32_t Timer1IntClr; /* Offset: 0x00C ( /W) Timer 1 Interrupt Clear */ - __I uint32_t Timer1RIS; /* Offset: 0x010 (R/ ) Timer 1 Raw Interrupt Status */ - __I uint32_t Timer1MIS; /* Offset: 0x014 (R/ ) Timer 1 Masked Interrupt Status */ - __IO uint32_t Timer1BGLoad; /* Offset: 0x018 (R/W) Background Load Register */ - uint32_t RESERVED0[1]; - __IO uint32_t Timer2Load; /* Offset: 0x020 (R/W) Timer 2 Load */ - __I uint32_t Timer2Value; /* Offset: 0x024 (R/ ) Timer 2 Counter Current Value */ - __IO uint32_t Timer2Control; /* Offset: 0x028 (R/W) Timer 2 Control */ - __O uint32_t Timer2IntClr; /* Offset: 0x02C ( /W) Timer 2 Interrupt Clear */ - __I uint32_t Timer2RIS; /* Offset: 0x030 (R/ ) Timer 2 Raw Interrupt Status */ - __I uint32_t Timer2MIS; /* Offset: 0x034 (R/ ) Timer 2 Masked Interrupt Status */ - __IO uint32_t Timer2BGLoad; /* Offset: 0x038 (R/W) Background Load Register */ -} ARM_TIM_TypeDef; - - -/* ================================================================================ */ -/* ============== Universal Asyncronous Receiver / Transmitter (UART) ============= */ -/* ================================================================================ */ -typedef struct -{ - __IO uint32_t DR; /* Offset: 0x000 (R/W) Data */ - union { - __I uint32_t RSR; /* Offset: 0x000 (R/ ) Receive Status */ - __O uint32_t ECR; /* Offset: 0x000 ( /W) Error Clear */ - }; - uint32_t RESERVED0[4]; - __IO uint32_t FR; /* Offset: 0x018 (R/W) Flags */ - uint32_t RESERVED1[1]; - __IO uint32_t ILPR; /* Offset: 0x020 (R/W) IrDA Low-power Counter */ - __IO uint32_t IBRD; /* Offset: 0x024 (R/W) Interger Baud Rate */ - __IO uint32_t FBRD; /* Offset: 0x028 (R/W) Fractional Baud Rate */ - __IO uint32_t LCR_H; /* Offset: 0x02C (R/W) Line Control */ - __IO uint32_t CR; /* Offset: 0x030 (R/W) Control */ - __IO uint32_t IFLS; /* Offset: 0x034 (R/W) Interrupt FIFO Level Select */ - __IO uint32_t IMSC; /* Offset: 0x038 (R/W) Interrupt Mask Set / Clear */ - __IO uint32_t RIS; /* Offset: 0x03C (R/W) Raw Interrupt Status */ - __IO uint32_t MIS; /* Offset: 0x040 (R/W) Masked Interrupt Status */ - __O uint32_t ICR; /* Offset: 0x044 ( /W) Interrupt Clear */ - __IO uint32_t DMACR; /* Offset: 0x048 (R/W) DMA Control */ -} ARM_UART_TypeDef; - - -/* -------------------- End of section using anonymous unions ------------------- */ -#if defined(__CC_ARM) - #pragma pop -#elif defined(__ICCARM__) - /* leave anonymous unions enabled */ -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) - /* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning restore -#else - #warning Not supported compiler type -#endif - - - - -/* ================================================================================ */ -/* ================ Peripheral memory map ================ */ -/* ================================================================================ */ -/* -------------------------- CPU FPGA memory map ------------------------------- */ -#define ARM_FLASH_BASE (0x00000000UL) -#define ARM_RAM_BASE (0x20000000UL) -#define ARM_RAM_FPGA_BASE (0x1EFF0000UL) -#define ARM_CPU_CFG_BASE (0xDFFF0000UL) - -#define ARM_CPU_SYS_BASE (ARM_CPU_CFG_BASE + 0x00000) -#define ARM_UART3_BASE (ARM_CPU_CFG_BASE + 0x05000) - -/* -------------------------- DUT FPGA memory map ------------------------------- */ -#define ARM_APB_BASE (0x40000000UL) -#define ARM_AHB_BASE (0x4FF00000UL) -#define ARM_DMC_BASE (0x60000000UL) -#define ARM_SMC_BASE (0xA0000000UL) - -#define ARM_TIM0_BASE (ARM_APB_BASE + 0x02000) -#define ARM_TIM2_BASE (ARM_APB_BASE + 0x03000) -#define ARM_DUT_SYS_BASE (ARM_APB_BASE + 0x04000) -#define ARM_UART0_BASE (ARM_APB_BASE + 0x06000) -#define ARM_UART1_BASE (ARM_APB_BASE + 0x07000) -#define ARM_UART2_BASE (ARM_APB_BASE + 0x08000) -#define ARM_UART4_BASE (ARM_APB_BASE + 0x09000) - - -/* ================================================================================ */ -/* ================ Peripheral declaration ================ */ -/* ================================================================================ */ -/* -------------------------- CPU FPGA Peripherals ------------------------------ */ -#define ARM_CPU_SYS ((ARM_CPU_SYS_TypeDef *) ARM_CPU_SYS_BASE) -#define ARM_UART3 (( ARM_UART_TypeDef *) ARM_UART3_BASE) - -/* -------------------------- DUT FPGA Peripherals ------------------------------ */ -#define ARM_DUT_SYS ((ARM_DUT_SYS_TypeDef *) ARM_DUT_SYS_BASE) -#define ARM_TIM0 (( ARM_TIM_TypeDef *) ARM_TIM0_BASE) -#define ARM_TIM2 (( ARM_TIM_TypeDef *) ARM_TIM2_BASE) -#define ARM_UART0 (( ARM_UART_TypeDef *) ARM_UART0_BASE) -#define ARM_UART1 (( ARM_UART_TypeDef *) ARM_UART1_BASE) -#define ARM_UART2 (( ARM_UART_TypeDef *) ARM_UART2_BASE) -#define ARM_UART4 (( ARM_UART_TypeDef *) ARM_UART4_BASE) - - -#ifdef __cplusplus -} -#endif - -#endif /* ARMCM4_H */ diff --git a/src/lib/mathlib/CMSIS/Include/arm_common_tables.h b/src/lib/mathlib/CMSIS/Include/arm_common_tables.h deleted file mode 100644 index 9c37ab4e5a..0000000000 --- a/src/lib/mathlib/CMSIS/Include/arm_common_tables.h +++ /dev/null @@ -1,93 +0,0 @@ -/* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. -* -* $Date: 17. January 2013 -* $Revision: V1.4.1 -* -* Project: CMSIS DSP Library -* Title: arm_common_tables.h -* -* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions -* -* Target Processor: Cortex-M4/Cortex-M3 -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* - Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* - Neither the name of ARM LIMITED nor the names of its contributors -* may be used to endorse or promote products derived from this -* software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -* -------------------------------------------------------------------- */ - -#ifndef _ARM_COMMON_TABLES_H -#define _ARM_COMMON_TABLES_H - -#include "arm_math.h" - -extern const uint16_t armBitRevTable[1024]; -extern const q15_t armRecipTableQ15[64]; -extern const q31_t armRecipTableQ31[64]; -extern const q31_t realCoefAQ31[1024]; -extern const q31_t realCoefBQ31[1024]; -extern const float32_t twiddleCoef_16[32]; -extern const float32_t twiddleCoef_32[64]; -extern const float32_t twiddleCoef_64[128]; -extern const float32_t twiddleCoef_128[256]; -extern const float32_t twiddleCoef_256[512]; -extern const float32_t twiddleCoef_512[1024]; -extern const float32_t twiddleCoef_1024[2048]; -extern const float32_t twiddleCoef_2048[4096]; -extern const float32_t twiddleCoef_4096[8192]; -#define twiddleCoef twiddleCoef_4096 -extern const q31_t twiddleCoefQ31[6144]; -extern const q15_t twiddleCoefQ15[6144]; -extern const float32_t twiddleCoef_rfft_32[32]; -extern const float32_t twiddleCoef_rfft_64[64]; -extern const float32_t twiddleCoef_rfft_128[128]; -extern const float32_t twiddleCoef_rfft_256[256]; -extern const float32_t twiddleCoef_rfft_512[512]; -extern const float32_t twiddleCoef_rfft_1024[1024]; -extern const float32_t twiddleCoef_rfft_2048[2048]; -extern const float32_t twiddleCoef_rfft_4096[4096]; - - -#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20 ) -#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48 ) -#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56 ) -#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 ) -#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 ) -#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 ) -#define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800) -#define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808) -#define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032) - -extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH]; - -#endif /* ARM_COMMON_TABLES_H */ diff --git a/src/lib/mathlib/CMSIS/Include/arm_const_structs.h b/src/lib/mathlib/CMSIS/Include/arm_const_structs.h deleted file mode 100644 index 406f737dcc..0000000000 --- a/src/lib/mathlib/CMSIS/Include/arm_const_structs.h +++ /dev/null @@ -1,85 +0,0 @@ -/* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. -* -* $Date: 17. January 2013 -* $Revision: V1.4.1 -* -* Project: CMSIS DSP Library -* Title: arm_const_structs.h -* -* Description: This file has constant structs that are initialized for -* user convenience. For example, some can be given as -* arguments to the arm_cfft_f32() function. -* -* Target Processor: Cortex-M4/Cortex-M3 -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* - Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* - Neither the name of ARM LIMITED nor the names of its contributors -* may be used to endorse or promote products derived from this -* software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -* -------------------------------------------------------------------- */ - -#ifndef _ARM_CONST_STRUCTS_H -#define _ARM_CONST_STRUCTS_H - -#include "arm_math.h" -#include "arm_common_tables.h" - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = { - 16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE__16_TABLE_LENGTH - }; - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = { - 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE__32_TABLE_LENGTH - }; - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = { - 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE__64_TABLE_LENGTH - }; - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = { - 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH - }; - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = { - 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH - }; - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = { - 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH - }; - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = { - 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE1024_TABLE_LENGTH - }; - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = { - 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE2048_TABLE_LENGTH - }; - - const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = { - 4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE4096_TABLE_LENGTH - }; - -#endif diff --git a/src/lib/mathlib/CMSIS/Include/arm_math.h b/src/lib/mathlib/CMSIS/Include/arm_math.h deleted file mode 100644 index fafa15029d..0000000000 --- a/src/lib/mathlib/CMSIS/Include/arm_math.h +++ /dev/null @@ -1,7318 +0,0 @@ -/* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. -* -* $Date: 17. January 2013 -* $Revision: V1.4.1 -* -* Project: CMSIS DSP Library -* Title: arm_math.h -* -* Description: Public header file for CMSIS DSP Library -* -* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* - Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* - Neither the name of ARM LIMITED nor the names of its contributors -* may be used to endorse or promote products derived from this -* software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. - * -------------------------------------------------------------------- */ - -/** - \mainpage CMSIS DSP Software Library - * - * Introduction - * - * This user manual describes the CMSIS DSP software library, - * a suite of common signal processing functions for use on Cortex-M processor based devices. - * - * The library is divided into a number of functions each covering a specific category: - * - Basic math functions - * - Fast math functions - * - Complex math functions - * - Filters - * - Matrix functions - * - Transforms - * - Motor control functions - * - Statistical functions - * - Support functions - * - Interpolation functions - * - * The library has separate functions for operating on 8-bit integers, 16-bit integers, - * 32-bit integer and 32-bit floating-point values. - * - * Using the Library - * - * The library installer contains prebuilt versions of the libraries in the Lib folder. - * - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4) - * - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4) - * - arm_cortexM4l_math.lib (Little endian on Cortex-M4) - * - arm_cortexM4b_math.lib (Big endian on Cortex-M4) - * - arm_cortexM3l_math.lib (Little endian on Cortex-M3) - * - arm_cortexM3b_math.lib (Big endian on Cortex-M3) - * - arm_cortexM0l_math.lib (Little endian on Cortex-M0) - * - arm_cortexM0b_math.lib (Big endian on Cortex-M3) - * - * The library functions are declared in the public file arm_math.h which is placed in the Include folder. - * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single - * public header file arm_math.h for Cortex-M4/M3/M0 with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. - * Define the appropriate pre processor MACRO ARM_MATH_CM4 or ARM_MATH_CM3 or - * ARM_MATH_CM0 or ARM_MATH_CM0PLUS depending on the target processor in the application. - * - * Examples - * - * The library ships with a number of examples which demonstrate how to use the library functions. - * - * Toolchain Support - * - * The library has been developed and tested with MDK-ARM version 4.60. - * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly. - * - * Building the Library - * - * The library installer contains project files to re build libraries on MDK Tool chain in the CMSIS\\DSP_Lib\\Source\\ARM folder. - * - arm_cortexM0b_math.uvproj - * - arm_cortexM0l_math.uvproj - * - arm_cortexM3b_math.uvproj - * - arm_cortexM3l_math.uvproj - * - arm_cortexM4b_math.uvproj - * - arm_cortexM4l_math.uvproj - * - arm_cortexM4bf_math.uvproj - * - arm_cortexM4lf_math.uvproj - * - * - * The project can be built by opening the appropriate project in MDK-ARM 4.60 chain and defining the optional pre processor MACROs detailed above. - * - * Pre-processor Macros - * - * Each library project have differant pre-processor macros. - * - * - UNALIGNED_SUPPORT_DISABLE: - * - * Define macro UNALIGNED_SUPPORT_DISABLE, If the silicon does not support unaligned memory access - * - * - ARM_MATH_BIG_ENDIAN: - * - * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. - * - * - ARM_MATH_MATRIX_CHECK: - * - * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices - * - * - ARM_MATH_ROUNDING: - * - * Define macro ARM_MATH_ROUNDING for rounding on support functions - * - * - ARM_MATH_CMx: - * - * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target - * and ARM_MATH_CM0 for building library on cortex-M0 target, ARM_MATH_CM0PLUS for building library on cortex-M0+ target. - * - * - __FPU_PRESENT: - * - * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries - * - * Copyright Notice - * - * Copyright (C) 2010-2013 ARM Limited. All rights reserved. - */ - - -/** - * @defgroup groupMath Basic Math Functions - */ - -/** - * @defgroup groupFastMath Fast Math Functions - * This set of functions provides a fast approximation to sine, cosine, and square root. - * As compared to most of the other functions in the CMSIS math library, the fast math functions - * operate on individual values and not arrays. - * There are separate functions for Q15, Q31, and floating-point data. - * - */ - -/** - * @defgroup groupCmplxMath Complex Math Functions - * This set of functions operates on complex data vectors. - * The data in the complex arrays is stored in an interleaved fashion - * (real, imag, real, imag, ...). - * In the API functions, the number of samples in a complex array refers - * to the number of complex values; the array contains twice this number of - * real values. - */ - -/** - * @defgroup groupFilters Filtering Functions - */ - -/** - * @defgroup groupMatrix Matrix Functions - * - * This set of functions provides basic matrix math operations. - * The functions operate on matrix data structures. For example, - * the type - * definition for the floating-point matrix structure is shown - * below: - *
- *     typedef struct
- *     {
- *       uint16_t numRows;     // number of rows of the matrix.
- *       uint16_t numCols;     // number of columns of the matrix.
- *       float32_t *pData;     // points to the data of the matrix.
- *     } arm_matrix_instance_f32;
- * 
- * There are similar definitions for Q15 and Q31 data types. - * - * The structure specifies the size of the matrix and then points to - * an array of data. The array is of size numRows X numCols - * and the values are arranged in row order. That is, the - * matrix element (i, j) is stored at: - *
- *     pData[i*numCols + j]
- * 
- * - * \par Init Functions - * There is an associated initialization function for each type of matrix - * data structure. - * The initialization function sets the values of the internal structure fields. - * Refer to the function arm_mat_init_f32(), arm_mat_init_q31() - * and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively. - * - * \par - * Use of the initialization function is optional. However, if initialization function is used - * then the instance structure cannot be placed into a const data section. - * To place the instance structure in a const data - * section, manually initialize the data structure. For example: - *
- * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
- * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
- * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
- * 
- * where nRows specifies the number of rows, nColumns - * specifies the number of columns, and pData points to the - * data array. - * - * \par Size Checking - * By default all of the matrix functions perform size checking on the input and - * output matrices. For example, the matrix addition function verifies that the - * two input matrices and the output matrix all have the same number of rows and - * columns. If the size check fails the functions return: - *
- *     ARM_MATH_SIZE_MISMATCH
- * 
- * Otherwise the functions return - *
- *     ARM_MATH_SUCCESS
- * 
- * There is some overhead associated with this matrix size checking. - * The matrix size checking is enabled via the \#define - *
- *     ARM_MATH_MATRIX_CHECK
- * 
- * within the library project settings. By default this macro is defined - * and size checking is enabled. By changing the project settings and - * undefining this macro size checking is eliminated and the functions - * run a bit faster. With size checking disabled the functions always - * return ARM_MATH_SUCCESS. - */ - -/** - * @defgroup groupTransforms Transform Functions - */ - -/** - * @defgroup groupController Controller Functions - */ - -/** - * @defgroup groupStats Statistics Functions - */ -/** - * @defgroup groupSupport Support Functions - */ - -/** - * @defgroup groupInterpolation Interpolation Functions - * These functions perform 1- and 2-dimensional interpolation of data. - * Linear interpolation is used for 1-dimensional data and - * bilinear interpolation is used for 2-dimensional data. - */ - -/** - * @defgroup groupExamples Examples - */ -#ifndef _ARM_MATH_H -#define _ARM_MATH_H - -#define __CMSIS_GENERIC /* disable NVIC and Systick functions */ - -/* PX4 */ -#include -#ifdef CONFIG_ARCH_CORTEXM4 -# define ARM_MATH_CM4 1 -#endif -#ifdef CONFIG_ARCH_CORTEXM3 -# define ARM_MATH_CM3 1 -#endif -#ifdef CONFIG_ARCH_FPU -# define __FPU_PRESENT 1 -#endif - -#if defined (ARM_MATH_CM4) -#include "core_cm4.h" -#elif defined (ARM_MATH_CM3) -#include "core_cm3.h" -#elif defined (ARM_MATH_CM0) -#include "core_cm0.h" -#define ARM_MATH_CM0_FAMILY -#elif defined (ARM_MATH_CM0PLUS) -#include "core_cm0plus.h" -#define ARM_MATH_CM0_FAMILY -#else -#include "ARMCM4.h" -#warning "Define either ARM_MATH_CM4 OR ARM_MATH_CM3...By Default building on ARM_MATH_CM4....." -#endif - -#undef __CMSIS_GENERIC /* enable NVIC and Systick functions */ -#include "string.h" -#include "math.h" -#ifdef __cplusplus -extern "C" -{ -#endif - - - /** - * @brief Macros required for reciprocal calculation in Normalized LMS - */ - -#define DELTA_Q31 (0x100) -#define DELTA_Q15 0x5 -#define INDEX_MASK 0x0000003F -#ifndef PI -#define PI 3.14159265358979f -#endif - - /** - * @brief Macros required for SINE and COSINE Fast math approximations - */ - -#define TABLE_SIZE 256 -#define TABLE_SPACING_Q31 0x800000 -#define TABLE_SPACING_Q15 0x80 - - /** - * @brief Macros required for SINE and COSINE Controller functions - */ - /* 1.31(q31) Fixed value of 2/360 */ - /* -1 to +1 is divided into 360 values so total spacing is (2/360) */ -#define INPUT_SPACING 0xB60B61 - - /** - * @brief Macro for Unaligned Support - */ -#ifndef UNALIGNED_SUPPORT_DISABLE - #define ALIGN4 -#else - #if defined (__GNUC__) - #define ALIGN4 __attribute__((aligned(4))) - #else - #define ALIGN4 __align(4) - #endif -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /** - * @brief Error status returned by some functions in the library. - */ - - typedef enum - { - ARM_MATH_SUCCESS = 0, /**< No error */ - ARM_MATH_ARGUMENT_ERROR = -1, /**< One or more arguments are incorrect */ - ARM_MATH_LENGTH_ERROR = -2, /**< Length of data buffer is incorrect */ - ARM_MATH_SIZE_MISMATCH = -3, /**< Size of matrices is not compatible with the operation. */ - ARM_MATH_NANINF = -4, /**< Not-a-number (NaN) or infinity is generated */ - ARM_MATH_SINGULAR = -5, /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */ - ARM_MATH_TEST_FAILURE = -6 /**< Test Failed */ - } arm_status; - - /** - * @brief 8-bit fractional data type in 1.7 format. - */ - typedef int8_t q7_t; - - /** - * @brief 16-bit fractional data type in 1.15 format. - */ - typedef int16_t q15_t; - - /** - * @brief 32-bit fractional data type in 1.31 format. - */ - typedef int32_t q31_t; - - /** - * @brief 64-bit fractional data type in 1.63 format. - */ - typedef int64_t q63_t; - - /** - * @brief 32-bit floating-point type definition. - */ - typedef float float32_t; - - /** - * @brief 64-bit floating-point type definition. - */ - typedef double float64_t; - - /** - * @brief definition to read/write two 16 bit values. - */ -#if defined __CC_ARM -#define __SIMD32_TYPE int32_t __packed -#define CMSIS_UNUSED __attribute__((unused)) -#elif defined __ICCARM__ -#define CMSIS_UNUSED -#define __SIMD32_TYPE int32_t __packed -#elif defined __GNUC__ -#define __SIMD32_TYPE int32_t -#define CMSIS_UNUSED __attribute__((unused)) -#else -#error Unknown compiler -#endif - -#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) -#define __SIMD32_CONST(addr) ((__SIMD32_TYPE *)(addr)) - -#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr)) - -#define __SIMD64(addr) (*(int64_t **) & (addr)) - -#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) - /** - * @brief definition to pack two 16 bit values. - */ -#define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ - (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) -#define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ - (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) - -#endif - - - /** - * @brief definition to pack four 8 bit values. - */ -#ifndef ARM_MATH_BIG_ENDIAN - -#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ - (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ - (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ - (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) -#else - -#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ - (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ - (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ - (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) - -#endif - - - /** - * @brief Clips Q63 to Q31 values. - */ - static __INLINE q31_t clip_q63_to_q31( - q63_t x) - { - return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? - ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x; - } - - /** - * @brief Clips Q63 to Q15 values. - */ - static __INLINE q15_t clip_q63_to_q15( - q63_t x) - { - return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? - ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15); - } - - /** - * @brief Clips Q31 to Q7 values. - */ - static __INLINE q7_t clip_q31_to_q7( - q31_t x) - { - return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ? - ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x; - } - - /** - * @brief Clips Q31 to Q15 values. - */ - static __INLINE q15_t clip_q31_to_q15( - q31_t x) - { - return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ? - ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x; - } - - /** - * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format. - */ - - static __INLINE q63_t mult32x64( - q63_t x, - q31_t y) - { - return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) + - (((q63_t) (x >> 32) * y))); - } - - -#if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM ) -#define __CLZ __clz -#endif - -#if defined (ARM_MATH_CM0_FAMILY) && ((defined (__ICCARM__)) ||(defined (__GNUC__)) || defined (__TASKING__) ) - - static __INLINE uint32_t __CLZ( - q31_t data); - - - static __INLINE uint32_t __CLZ( - q31_t data) - { - uint32_t count = 0; - uint32_t mask = 0x80000000; - - while((data & mask) == 0) - { - count += 1u; - mask = mask >> 1u; - } - - return (count); - - } - -#endif - - /** - * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type. - */ - - static __INLINE uint32_t arm_recip_q31( - q31_t in, - q31_t * dst, - q31_t * pRecipTable) - { - - uint32_t out, tempVal; - uint32_t index, i; - uint32_t signBits; - - if(in > 0) - { - signBits = __CLZ(in) - 1; - } - else - { - signBits = __CLZ(-in) - 1; - } - - /* Convert input sample to 1.31 format */ - in = in << signBits; - - /* calculation of index for initial approximated Val */ - index = (uint32_t) (in >> 24u); - index = (index & INDEX_MASK); - - /* 1.31 with exp 1 */ - out = pRecipTable[index]; - - /* calculation of reciprocal value */ - /* running approximation for two iterations */ - for (i = 0u; i < 2u; i++) - { - tempVal = (q31_t) (((q63_t) in * out) >> 31u); - tempVal = 0x7FFFFFFF - tempVal; - /* 1.31 with exp 1 */ - //out = (q31_t) (((q63_t) out * tempVal) >> 30u); - out = (q31_t) clip_q63_to_q31(((q63_t) out * tempVal) >> 30u); - } - - /* write output */ - *dst = out; - - /* return num of signbits of out = 1/in value */ - return (signBits + 1u); - - } - - /** - * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type. - */ - static __INLINE uint32_t arm_recip_q15( - q15_t in, - q15_t * dst, - q15_t * pRecipTable) - { - - uint32_t out = 0, tempVal = 0; - uint32_t index = 0, i = 0; - uint32_t signBits = 0; - - if(in > 0) - { - signBits = __CLZ(in) - 17; - } - else - { - signBits = __CLZ(-in) - 17; - } - - /* Convert input sample to 1.15 format */ - in = in << signBits; - - /* calculation of index for initial approximated Val */ - index = in >> 8; - index = (index & INDEX_MASK); - - /* 1.15 with exp 1 */ - out = pRecipTable[index]; - - /* calculation of reciprocal value */ - /* running approximation for two iterations */ - for (i = 0; i < 2; i++) - { - tempVal = (q15_t) (((q31_t) in * out) >> 15); - tempVal = 0x7FFF - tempVal; - /* 1.15 with exp 1 */ - out = (q15_t) (((q31_t) out * tempVal) >> 14); - } - - /* write output */ - *dst = out; - - /* return num of signbits of out = 1/in value */ - return (signBits + 1); - - } - - - /* - * @brief C custom defined intrinisic function for only M0 processors - */ -#if defined(ARM_MATH_CM0_FAMILY) - - static __INLINE q31_t __SSAT( - q31_t x, - uint32_t y) - { - int32_t posMax, negMin; - uint32_t i; - - posMax = 1; - for (i = 0; i < (y - 1); i++) - { - posMax = posMax * 2; - } - - if(x > 0) - { - posMax = (posMax - 1); - - if(x > posMax) - { - x = posMax; - } - } - else - { - negMin = -posMax; - - if(x < negMin) - { - x = negMin; - } - } - return (x); - - - } - -#endif /* end of ARM_MATH_CM0_FAMILY */ - - - - /* - * @brief C custom defined intrinsic function for M3 and M0 processors - */ -#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) - - /* - * @brief C custom defined QADD8 for M3 and M0 processors - */ - static __INLINE q31_t __QADD8( - q31_t x, - q31_t y) - { - - q31_t sum; - q7_t r, s, t, u; - - r = (q7_t) x; - s = (q7_t) y; - - r = __SSAT((q31_t) (r + s), 8); - s = __SSAT(((q31_t) (((x << 16) >> 24) + ((y << 16) >> 24))), 8); - t = __SSAT(((q31_t) (((x << 8) >> 24) + ((y << 8) >> 24))), 8); - u = __SSAT(((q31_t) ((x >> 24) + (y >> 24))), 8); - - sum = - (((q31_t) u << 24) & 0xFF000000) | (((q31_t) t << 16) & 0x00FF0000) | - (((q31_t) s << 8) & 0x0000FF00) | (r & 0x000000FF); - - return sum; - - } - - /* - * @brief C custom defined QSUB8 for M3 and M0 processors - */ - static __INLINE q31_t __QSUB8( - q31_t x, - q31_t y) - { - - q31_t sum; - q31_t r, s, t, u; - - r = (q7_t) x; - s = (q7_t) y; - - r = __SSAT((r - s), 8); - s = __SSAT(((q31_t) (((x << 16) >> 24) - ((y << 16) >> 24))), 8) << 8; - t = __SSAT(((q31_t) (((x << 8) >> 24) - ((y << 8) >> 24))), 8) << 16; - u = __SSAT(((q31_t) ((x >> 24) - (y >> 24))), 8) << 24; - - sum = - (u & 0xFF000000) | (t & 0x00FF0000) | (s & 0x0000FF00) | (r & - 0x000000FF); - - return sum; - } - - /* - * @brief C custom defined QADD16 for M3 and M0 processors - */ - - /* - * @brief C custom defined QADD16 for M3 and M0 processors - */ - static __INLINE q31_t __QADD16( - q31_t x, - q31_t y) - { - - q31_t sum; - q31_t r, s; - - r = (short) x; - s = (short) y; - - r = __SSAT(r + s, 16); - s = __SSAT(((q31_t) ((x >> 16) + (y >> 16))), 16) << 16; - - sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); - - return sum; - - } - - /* - * @brief C custom defined SHADD16 for M3 and M0 processors - */ - static __INLINE q31_t __SHADD16( - q31_t x, - q31_t y) - { - - q31_t sum; - q31_t r, s; - - r = (short) x; - s = (short) y; - - r = ((r >> 1) + (s >> 1)); - s = ((q31_t) ((x >> 17) + (y >> 17))) << 16; - - sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); - - return sum; - - } - - /* - * @brief C custom defined QSUB16 for M3 and M0 processors - */ - static __INLINE q31_t __QSUB16( - q31_t x, - q31_t y) - { - - q31_t sum; - q31_t r, s; - - r = (short) x; - s = (short) y; - - r = __SSAT(r - s, 16); - s = __SSAT(((q31_t) ((x >> 16) - (y >> 16))), 16) << 16; - - sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); - - return sum; - } - - /* - * @brief C custom defined SHSUB16 for M3 and M0 processors - */ - static __INLINE q31_t __SHSUB16( - q31_t x, - q31_t y) - { - - q31_t diff; - q31_t r, s; - - r = (short) x; - s = (short) y; - - r = ((r >> 1) - (s >> 1)); - s = (((x >> 17) - (y >> 17)) << 16); - - diff = (s & 0xFFFF0000) | (r & 0x0000FFFF); - - return diff; - } - - /* - * @brief C custom defined QASX for M3 and M0 processors - */ - static __INLINE q31_t __QASX( - q31_t x, - q31_t y) - { - - q31_t sum = 0; - - sum = - ((sum + - clip_q31_to_q15((q31_t) ((short) (x >> 16) + (short) y))) << 16) + - clip_q31_to_q15((q31_t) ((short) x - (short) (y >> 16))); - - return sum; - } - - /* - * @brief C custom defined SHASX for M3 and M0 processors - */ - static __INLINE q31_t __SHASX( - q31_t x, - q31_t y) - { - - q31_t sum; - q31_t r, s; - - r = (short) x; - s = (short) y; - - r = ((r >> 1) - (y >> 17)); - s = (((x >> 17) + (s >> 1)) << 16); - - sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); - - return sum; - } - - - /* - * @brief C custom defined QSAX for M3 and M0 processors - */ - static __INLINE q31_t __QSAX( - q31_t x, - q31_t y) - { - - q31_t sum = 0; - - sum = - ((sum + - clip_q31_to_q15((q31_t) ((short) (x >> 16) - (short) y))) << 16) + - clip_q31_to_q15((q31_t) ((short) x + (short) (y >> 16))); - - return sum; - } - - /* - * @brief C custom defined SHSAX for M3 and M0 processors - */ - static __INLINE q31_t __SHSAX( - q31_t x, - q31_t y) - { - - q31_t sum; - q31_t r, s; - - r = (short) x; - s = (short) y; - - r = ((r >> 1) + (y >> 17)); - s = (((x >> 17) - (s >> 1)) << 16); - - sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); - - return sum; - } - - /* - * @brief C custom defined SMUSDX for M3 and M0 processors - */ - static __INLINE q31_t __SMUSDX( - q31_t x, - q31_t y) - { - - return ((q31_t) (((short) x * (short) (y >> 16)) - - ((short) (x >> 16) * (short) y))); - } - - /* - * @brief C custom defined SMUADX for M3 and M0 processors - */ - static __INLINE q31_t __SMUADX( - q31_t x, - q31_t y) - { - - return ((q31_t) (((short) x * (short) (y >> 16)) + - ((short) (x >> 16) * (short) y))); - } - - /* - * @brief C custom defined QADD for M3 and M0 processors - */ - static __INLINE q31_t __QADD( - q31_t x, - q31_t y) - { - return clip_q63_to_q31((q63_t) x + y); - } - - /* - * @brief C custom defined QSUB for M3 and M0 processors - */ - static __INLINE q31_t __QSUB( - q31_t x, - q31_t y) - { - return clip_q63_to_q31((q63_t) x - y); - } - - /* - * @brief C custom defined SMLAD for M3 and M0 processors - */ - static __INLINE q31_t __SMLAD( - q31_t x, - q31_t y, - q31_t sum) - { - - return (sum + ((short) (x >> 16) * (short) (y >> 16)) + - ((short) x * (short) y)); - } - - /* - * @brief C custom defined SMLADX for M3 and M0 processors - */ - static __INLINE q31_t __SMLADX( - q31_t x, - q31_t y, - q31_t sum) - { - - return (sum + ((short) (x >> 16) * (short) (y)) + - ((short) x * (short) (y >> 16))); - } - - /* - * @brief C custom defined SMLSDX for M3 and M0 processors - */ - static __INLINE q31_t __SMLSDX( - q31_t x, - q31_t y, - q31_t sum) - { - - return (sum - ((short) (x >> 16) * (short) (y)) + - ((short) x * (short) (y >> 16))); - } - - /* - * @brief C custom defined SMLALD for M3 and M0 processors - */ - static __INLINE q63_t __SMLALD( - q31_t x, - q31_t y, - q63_t sum) - { - - return (sum + ((short) (x >> 16) * (short) (y >> 16)) + - ((short) x * (short) y)); - } - - /* - * @brief C custom defined SMLALDX for M3 and M0 processors - */ - static __INLINE q63_t __SMLALDX( - q31_t x, - q31_t y, - q63_t sum) - { - - return (sum + ((short) (x >> 16) * (short) y)) + - ((short) x * (short) (y >> 16)); - } - - /* - * @brief C custom defined SMUAD for M3 and M0 processors - */ - static __INLINE q31_t __SMUAD( - q31_t x, - q31_t y) - { - - return (((x >> 16) * (y >> 16)) + - (((x << 16) >> 16) * ((y << 16) >> 16))); - } - - /* - * @brief C custom defined SMUSD for M3 and M0 processors - */ - static __INLINE q31_t __SMUSD( - q31_t x, - q31_t y) - { - - return (-((x >> 16) * (y >> 16)) + - (((x << 16) >> 16) * ((y << 16) >> 16))); - } - - - /* - * @brief C custom defined SXTB16 for M3 and M0 processors - */ - static __INLINE q31_t __SXTB16( - q31_t x) - { - - return ((((x << 24) >> 24) & 0x0000FFFF) | - (((x << 8) >> 8) & 0xFFFF0000)); - } - - -#endif /* defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) */ - - - /** - * @brief Instance structure for the Q7 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - } arm_fir_instance_q7; - - /** - * @brief Instance structure for the Q15 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - } arm_fir_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - } arm_fir_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - } arm_fir_instance_f32; - - - /** - * @brief Processing function for the Q7 FIR filter. - * @param[in] *S points to an instance of the Q7 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_q7( - const arm_fir_instance_q7 * S, - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q7 FIR filter. - * @param[in,out] *S points to an instance of the Q7 FIR structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed. - * @return none - */ - void arm_fir_init_q7( - arm_fir_instance_q7 * S, - uint16_t numTaps, - q7_t * pCoeffs, - q7_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 FIR filter. - * @param[in] *S points to an instance of the Q15 FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q15 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_fast_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q15 FIR filter. - * @param[in,out] *S points to an instance of the Q15 FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if - * numTaps is not a supported value. - */ - - arm_status arm_fir_init_q15( - arm_fir_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR filter. - * @param[in] *S points to an instance of the Q31 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_q31( - const arm_fir_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q31 FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_fast_q31( - const arm_fir_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 FIR filter. - * @param[in,out] *S points to an instance of the Q31 FIR structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - * @return none. - */ - void arm_fir_init_q31( - arm_fir_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the floating-point FIR filter. - * @param[in] *S points to an instance of the floating-point FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_f32( - const arm_fir_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point FIR filter. - * @param[in,out] *S points to an instance of the floating-point FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - * @return none. - */ - void arm_fir_init_f32( - arm_fir_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q15 Biquad cascade filter. - */ - typedef struct - { - int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ - - } arm_biquad_casd_df1_inst_q15; - - - /** - * @brief Instance structure for the Q31 Biquad cascade filter. - */ - typedef struct - { - uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ - - } arm_biquad_casd_df1_inst_q31; - - /** - * @brief Instance structure for the floating-point Biquad cascade filter. - */ - typedef struct - { - uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - - - } arm_biquad_casd_df1_inst_f32; - - - - /** - * @brief Processing function for the Q15 Biquad cascade filter. - * @param[in] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_q15( - const arm_biquad_casd_df1_inst_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q15 Biquad cascade filter. - * @param[in,out] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format - * @return none - */ - - void arm_biquad_cascade_df1_init_q15( - arm_biquad_casd_df1_inst_q15 * S, - uint8_t numStages, - q15_t * pCoeffs, - q15_t * pState, - int8_t postShift); - - - /** - * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_fast_q15( - const arm_biquad_casd_df1_inst_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 Biquad cascade filter - * @param[in] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_q31( - const arm_biquad_casd_df1_inst_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_fast_q31( - const arm_biquad_casd_df1_inst_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 Biquad cascade filter. - * @param[in,out] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format - * @return none - */ - - void arm_biquad_cascade_df1_init_q31( - arm_biquad_casd_df1_inst_q31 * S, - uint8_t numStages, - q31_t * pCoeffs, - q31_t * pState, - int8_t postShift); - - /** - * @brief Processing function for the floating-point Biquad cascade filter. - * @param[in] *S points to an instance of the floating-point Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_f32( - const arm_biquad_casd_df1_inst_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point Biquad cascade filter. - * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @return none - */ - - void arm_biquad_cascade_df1_init_f32( - arm_biquad_casd_df1_inst_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - - /** - * @brief Instance structure for the floating-point matrix structure. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - float32_t *pData; /**< points to the data of the matrix. */ - } arm_matrix_instance_f32; - - /** - * @brief Instance structure for the Q15 matrix structure. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - q15_t *pData; /**< points to the data of the matrix. */ - - } arm_matrix_instance_q15; - - /** - * @brief Instance structure for the Q31 matrix structure. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - q31_t *pData; /**< points to the data of the matrix. */ - - } arm_matrix_instance_q31; - - - - /** - * @brief Floating-point matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_add_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - /** - * @brief Q15 matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_add_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst); - - /** - * @brief Q31 matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_add_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_trans_f32( - const arm_matrix_instance_f32 * pSrc, - arm_matrix_instance_f32 * pDst); - - - /** - * @brief Q15 matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_trans_q15( - const arm_matrix_instance_q15 * pSrc, - arm_matrix_instance_q15 * pDst); - - /** - * @brief Q31 matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_trans_q31( - const arm_matrix_instance_q31 * pSrc, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix multiplication - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - /** - * @brief Q15 matrix multiplication - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @param[in] *pState points to the array for storing intermediate results - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pState); - - /** - * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @param[in] *pState points to the array for storing intermediate results - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_fast_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pState); - - /** - * @brief Q31 matrix multiplication - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - /** - * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_fast_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix subtraction - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_sub_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - /** - * @brief Q15 matrix subtraction - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_sub_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst); - - /** - * @brief Q31 matrix subtraction - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_sub_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - /** - * @brief Floating-point matrix scaling. - * @param[in] *pSrc points to the input matrix - * @param[in] scale scale factor - * @param[out] *pDst points to the output matrix - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_scale_f32( - const arm_matrix_instance_f32 * pSrc, - float32_t scale, - arm_matrix_instance_f32 * pDst); - - /** - * @brief Q15 matrix scaling. - * @param[in] *pSrc points to input matrix - * @param[in] scaleFract fractional portion of the scale factor - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to output matrix - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_scale_q15( - const arm_matrix_instance_q15 * pSrc, - q15_t scaleFract, - int32_t shift, - arm_matrix_instance_q15 * pDst); - - /** - * @brief Q31 matrix scaling. - * @param[in] *pSrc points to input matrix - * @param[in] scaleFract fractional portion of the scale factor - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_scale_q31( - const arm_matrix_instance_q31 * pSrc, - q31_t scaleFract, - int32_t shift, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Q31 matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - - void arm_mat_init_q31( - arm_matrix_instance_q31 * S, - uint16_t nRows, - uint16_t nColumns, - q31_t * pData); - - /** - * @brief Q15 matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - - void arm_mat_init_q15( - arm_matrix_instance_q15 * S, - uint16_t nRows, - uint16_t nColumns, - q15_t * pData); - - /** - * @brief Floating-point matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - - void arm_mat_init_f32( - arm_matrix_instance_f32 * S, - uint16_t nRows, - uint16_t nColumns, - float32_t * pData); - - - - /** - * @brief Instance structure for the Q15 PID Control. - */ - typedef struct - { - q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ -#ifdef ARM_MATH_CM0_FAMILY - q15_t A1; - q15_t A2; -#else - q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/ -#endif - q15_t state[3]; /**< The state array of length 3. */ - q15_t Kp; /**< The proportional gain. */ - q15_t Ki; /**< The integral gain. */ - q15_t Kd; /**< The derivative gain. */ - } arm_pid_instance_q15; - - /** - * @brief Instance structure for the Q31 PID Control. - */ - typedef struct - { - q31_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ - q31_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ - q31_t A2; /**< The derived gain, A2 = Kd . */ - q31_t state[3]; /**< The state array of length 3. */ - q31_t Kp; /**< The proportional gain. */ - q31_t Ki; /**< The integral gain. */ - q31_t Kd; /**< The derivative gain. */ - - } arm_pid_instance_q31; - - /** - * @brief Instance structure for the floating-point PID Control. - */ - typedef struct - { - float32_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ - float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ - float32_t A2; /**< The derived gain, A2 = Kd . */ - float32_t state[3]; /**< The state array of length 3. */ - float32_t Kp; /**< The proportional gain. */ - float32_t Ki; /**< The integral gain. */ - float32_t Kd; /**< The derivative gain. */ - } arm_pid_instance_f32; - - - - /** - * @brief Initialization function for the floating-point PID Control. - * @param[in,out] *S points to an instance of the PID structure. - * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. - * @return none. - */ - void arm_pid_init_f32( - arm_pid_instance_f32 * S, - int32_t resetStateFlag); - - /** - * @brief Reset function for the floating-point PID Control. - * @param[in,out] *S is an instance of the floating-point PID Control structure - * @return none - */ - void arm_pid_reset_f32( - arm_pid_instance_f32 * S); - - - /** - * @brief Initialization function for the Q31 PID Control. - * @param[in,out] *S points to an instance of the Q15 PID structure. - * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. - * @return none. - */ - void arm_pid_init_q31( - arm_pid_instance_q31 * S, - int32_t resetStateFlag); - - - /** - * @brief Reset function for the Q31 PID Control. - * @param[in,out] *S points to an instance of the Q31 PID Control structure - * @return none - */ - - void arm_pid_reset_q31( - arm_pid_instance_q31 * S); - - /** - * @brief Initialization function for the Q15 PID Control. - * @param[in,out] *S points to an instance of the Q15 PID structure. - * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. - * @return none. - */ - void arm_pid_init_q15( - arm_pid_instance_q15 * S, - int32_t resetStateFlag); - - /** - * @brief Reset function for the Q15 PID Control. - * @param[in,out] *S points to an instance of the q15 PID Control structure - * @return none - */ - void arm_pid_reset_q15( - arm_pid_instance_q15 * S); - - - /** - * @brief Instance structure for the floating-point Linear Interpolate function. - */ - typedef struct - { - uint32_t nValues; /**< nValues */ - float32_t x1; /**< x1 */ - float32_t xSpacing; /**< xSpacing */ - float32_t *pYData; /**< pointer to the table of Y values */ - } arm_linear_interp_instance_f32; - - /** - * @brief Instance structure for the floating-point bilinear interpolation function. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows in the data table. */ - uint16_t numCols; /**< number of columns in the data table. */ - float32_t *pData; /**< points to the data table. */ - } arm_bilinear_interp_instance_f32; - - /** - * @brief Instance structure for the Q31 bilinear interpolation function. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows in the data table. */ - uint16_t numCols; /**< number of columns in the data table. */ - q31_t *pData; /**< points to the data table. */ - } arm_bilinear_interp_instance_q31; - - /** - * @brief Instance structure for the Q15 bilinear interpolation function. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows in the data table. */ - uint16_t numCols; /**< number of columns in the data table. */ - q15_t *pData; /**< points to the data table. */ - } arm_bilinear_interp_instance_q15; - - /** - * @brief Instance structure for the Q15 bilinear interpolation function. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows in the data table. */ - uint16_t numCols; /**< number of columns in the data table. */ - q7_t *pData; /**< points to the data table. */ - } arm_bilinear_interp_instance_q7; - - - /** - * @brief Q7 vector multiplication. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_mult_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Q15 vector multiplication. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_mult_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Q31 vector multiplication. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_mult_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Floating-point vector multiplication. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_mult_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize); - - - - - - - /** - * @brief Instance structure for the Q15 CFFT/CIFFT function. - */ - - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - } arm_cfft_radix2_instance_q15; - - arm_status arm_cfft_radix2_init_q15( - arm_cfft_radix2_instance_q15 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - void arm_cfft_radix2_q15( - const arm_cfft_radix2_instance_q15 * S, - q15_t * pSrc); - - - - /** - * @brief Instance structure for the Q15 CFFT/CIFFT function. - */ - - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - q15_t *pTwiddle; /**< points to the twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - } arm_cfft_radix4_instance_q15; - - arm_status arm_cfft_radix4_init_q15( - arm_cfft_radix4_instance_q15 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - void arm_cfft_radix4_q15( - const arm_cfft_radix4_instance_q15 * S, - q15_t * pSrc); - - /** - * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function. - */ - - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - q31_t *pTwiddle; /**< points to the Twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - } arm_cfft_radix2_instance_q31; - - arm_status arm_cfft_radix2_init_q31( - arm_cfft_radix2_instance_q31 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - void arm_cfft_radix2_q31( - const arm_cfft_radix2_instance_q31 * S, - q31_t * pSrc); - - /** - * @brief Instance structure for the Q31 CFFT/CIFFT function. - */ - - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - q31_t *pTwiddle; /**< points to the twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - } arm_cfft_radix4_instance_q31; - - - void arm_cfft_radix4_q31( - const arm_cfft_radix4_instance_q31 * S, - q31_t * pSrc); - - arm_status arm_cfft_radix4_init_q31( - arm_cfft_radix4_instance_q31 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - /** - * @brief Instance structure for the floating-point CFFT/CIFFT function. - */ - - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - float32_t *pTwiddle; /**< points to the Twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - float32_t onebyfftLen; /**< value of 1/fftLen. */ - } arm_cfft_radix2_instance_f32; - -/* Deprecated */ - arm_status arm_cfft_radix2_init_f32( - arm_cfft_radix2_instance_f32 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - -/* Deprecated */ - void arm_cfft_radix2_f32( - const arm_cfft_radix2_instance_f32 * S, - float32_t * pSrc); - - /** - * @brief Instance structure for the floating-point CFFT/CIFFT function. - */ - - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - float32_t *pTwiddle; /**< points to the Twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - float32_t onebyfftLen; /**< value of 1/fftLen. */ - } arm_cfft_radix4_instance_f32; - -/* Deprecated */ - arm_status arm_cfft_radix4_init_f32( - arm_cfft_radix4_instance_f32 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - -/* Deprecated */ - void arm_cfft_radix4_f32( - const arm_cfft_radix4_instance_f32 * S, - float32_t * pSrc); - - /** - * @brief Instance structure for the floating-point CFFT/CIFFT function. - */ - - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ - const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t bitRevLength; /**< bit reversal table length. */ - } arm_cfft_instance_f32; - - void arm_cfft_f32( - const arm_cfft_instance_f32 * S, - float32_t * p1, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - /** - * @brief Instance structure for the Q15 RFFT/RIFFT function. - */ - - typedef struct - { - uint32_t fftLenReal; /**< length of the real FFT. */ - uint32_t fftLenBy2; /**< length of the complex FFT. */ - uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ - uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ - uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ - q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ - arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ - } arm_rfft_instance_q15; - - arm_status arm_rfft_init_q15( - arm_rfft_instance_q15 * S, - arm_cfft_radix4_instance_q15 * S_CFFT, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag); - - void arm_rfft_q15( - const arm_rfft_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst); - - /** - * @brief Instance structure for the Q31 RFFT/RIFFT function. - */ - - typedef struct - { - uint32_t fftLenReal; /**< length of the real FFT. */ - uint32_t fftLenBy2; /**< length of the complex FFT. */ - uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ - uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ - uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ - q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ - arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ - } arm_rfft_instance_q31; - - arm_status arm_rfft_init_q31( - arm_rfft_instance_q31 * S, - arm_cfft_radix4_instance_q31 * S_CFFT, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag); - - void arm_rfft_q31( - const arm_rfft_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst); - - /** - * @brief Instance structure for the floating-point RFFT/RIFFT function. - */ - - typedef struct - { - uint32_t fftLenReal; /**< length of the real FFT. */ - uint16_t fftLenBy2; /**< length of the complex FFT. */ - uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ - uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ - uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - float32_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ - float32_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ - arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ - } arm_rfft_instance_f32; - - arm_status arm_rfft_init_f32( - arm_rfft_instance_f32 * S, - arm_cfft_radix4_instance_f32 * S_CFFT, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag); - - void arm_rfft_f32( - const arm_rfft_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst); - - /** - * @brief Instance structure for the floating-point RFFT/RIFFT function. - */ - -typedef struct - { - arm_cfft_instance_f32 Sint; /**< Internal CFFT structure. */ - uint16_t fftLenRFFT; /**< length of the real sequence */ - float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */ - } arm_rfft_fast_instance_f32 ; - -arm_status arm_rfft_fast_init_f32 ( - arm_rfft_fast_instance_f32 * S, - uint16_t fftLen); - -void arm_rfft_fast_f32( - arm_rfft_fast_instance_f32 * S, - float32_t * p, float32_t * pOut, - uint8_t ifftFlag); - - /** - * @brief Instance structure for the floating-point DCT4/IDCT4 function. - */ - - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - float32_t normalize; /**< normalizing factor. */ - float32_t *pTwiddle; /**< points to the twiddle factor table. */ - float32_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_f32; - - /** - * @brief Initialization function for the floating-point DCT4/IDCT4. - * @param[in,out] *S points to an instance of floating-point DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of floating-point RFFT/RIFFT structure. - * @param[in] *S_CFFT points to an instance of floating-point CFFT/CIFFT structure. - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. - */ - - arm_status arm_dct4_init_f32( - arm_dct4_instance_f32 * S, - arm_rfft_instance_f32 * S_RFFT, - arm_cfft_radix4_instance_f32 * S_CFFT, - uint16_t N, - uint16_t Nby2, - float32_t normalize); - - /** - * @brief Processing function for the floating-point DCT4/IDCT4. - * @param[in] *S points to an instance of the floating-point DCT4/IDCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - */ - - void arm_dct4_f32( - const arm_dct4_instance_f32 * S, - float32_t * pState, - float32_t * pInlineBuffer); - - /** - * @brief Instance structure for the Q31 DCT4/IDCT4 function. - */ - - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - q31_t normalize; /**< normalizing factor. */ - q31_t *pTwiddle; /**< points to the twiddle factor table. */ - q31_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_q31; - - /** - * @brief Initialization function for the Q31 DCT4/IDCT4. - * @param[in,out] *S points to an instance of Q31 DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of Q31 RFFT/RIFFT structure - * @param[in] *S_CFFT points to an instance of Q31 CFFT/CIFFT structure - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. - */ - - arm_status arm_dct4_init_q31( - arm_dct4_instance_q31 * S, - arm_rfft_instance_q31 * S_RFFT, - arm_cfft_radix4_instance_q31 * S_CFFT, - uint16_t N, - uint16_t Nby2, - q31_t normalize); - - /** - * @brief Processing function for the Q31 DCT4/IDCT4. - * @param[in] *S points to an instance of the Q31 DCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - */ - - void arm_dct4_q31( - const arm_dct4_instance_q31 * S, - q31_t * pState, - q31_t * pInlineBuffer); - - /** - * @brief Instance structure for the Q15 DCT4/IDCT4 function. - */ - - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - q15_t normalize; /**< normalizing factor. */ - q15_t *pTwiddle; /**< points to the twiddle factor table. */ - q15_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_q15; - - /** - * @brief Initialization function for the Q15 DCT4/IDCT4. - * @param[in,out] *S points to an instance of Q15 DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of Q15 RFFT/RIFFT structure. - * @param[in] *S_CFFT points to an instance of Q15 CFFT/CIFFT structure. - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. - */ - - arm_status arm_dct4_init_q15( - arm_dct4_instance_q15 * S, - arm_rfft_instance_q15 * S_RFFT, - arm_cfft_radix4_instance_q15 * S_CFFT, - uint16_t N, - uint16_t Nby2, - q15_t normalize); - - /** - * @brief Processing function for the Q15 DCT4/IDCT4. - * @param[in] *S points to an instance of the Q15 DCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - */ - - void arm_dct4_q15( - const arm_dct4_instance_q15 * S, - q15_t * pState, - q15_t * pInlineBuffer); - - /** - * @brief Floating-point vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_add_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Q7 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_add_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Q15 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_add_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Q31 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_add_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Floating-point vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_sub_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Q7 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_sub_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Q15 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_sub_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Q31 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_sub_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Multiplies a floating-point vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scale scale factor to be applied - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_scale_f32( - float32_t * pSrc, - float32_t scale, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Multiplies a Q7 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_scale_q7( - q7_t * pSrc, - q7_t scaleFract, - int8_t shift, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Multiplies a Q15 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_scale_q15( - q15_t * pSrc, - q15_t scaleFract, - int8_t shift, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Multiplies a Q31 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_scale_q31( - q31_t * pSrc, - q31_t scaleFract, - int8_t shift, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Q7 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_abs_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Floating-point vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_abs_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Q15 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_abs_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Q31 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_abs_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Dot product of floating-point vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - void arm_dot_prod_f32( - float32_t * pSrcA, - float32_t * pSrcB, - uint32_t blockSize, - float32_t * result); - - /** - * @brief Dot product of Q7 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - void arm_dot_prod_q7( - q7_t * pSrcA, - q7_t * pSrcB, - uint32_t blockSize, - q31_t * result); - - /** - * @brief Dot product of Q15 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - void arm_dot_prod_q15( - q15_t * pSrcA, - q15_t * pSrcB, - uint32_t blockSize, - q63_t * result); - - /** - * @brief Dot product of Q31 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - void arm_dot_prod_q31( - q31_t * pSrcA, - q31_t * pSrcB, - uint32_t blockSize, - q63_t * result); - - /** - * @brief Shifts the elements of a Q7 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_shift_q7( - q7_t * pSrc, - int8_t shiftBits, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Shifts the elements of a Q15 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_shift_q15( - q15_t * pSrc, - int8_t shiftBits, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Shifts the elements of a Q31 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_shift_q31( - q31_t * pSrc, - int8_t shiftBits, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Adds a constant offset to a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_offset_f32( - float32_t * pSrc, - float32_t offset, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Adds a constant offset to a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_offset_q7( - q7_t * pSrc, - q7_t offset, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Adds a constant offset to a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_offset_q15( - q15_t * pSrc, - q15_t offset, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Adds a constant offset to a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_offset_q31( - q31_t * pSrc, - q31_t offset, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Negates the elements of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_negate_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Negates the elements of a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_negate_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Negates the elements of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_negate_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Negates the elements of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_negate_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - /** - * @brief Copies the elements of a floating-point vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_copy_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Copies the elements of a Q7 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_copy_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Copies the elements of a Q15 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_copy_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Copies the elements of a Q31 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_copy_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - /** - * @brief Fills a constant value into a floating-point vector. - * @param[in] value input value to be filled - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_fill_f32( - float32_t value, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Fills a constant value into a Q7 vector. - * @param[in] value input value to be filled - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_fill_q7( - q7_t value, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Fills a constant value into a Q15 vector. - * @param[in] value input value to be filled - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_fill_q15( - q15_t value, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Fills a constant value into a Q31 vector. - * @param[in] value input value to be filled - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_fill_q31( - q31_t value, - q31_t * pDst, - uint32_t blockSize); - -/** - * @brief Convolution of floating-point sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - */ - - void arm_conv_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst); - - - /** - * @brief Convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. - * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return none. - */ - - - void arm_conv_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2); - - -/** - * @brief Convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - */ - - void arm_conv_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst); - - /** - * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. - * @return none. - */ - - void arm_conv_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst); - - /** - * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. - * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return none. - */ - - void arm_conv_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2); - - - - /** - * @brief Convolution of Q31 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. - * @return none. - */ - - void arm_conv_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst); - - /** - * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. - * @return none. - */ - - void arm_conv_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst); - - - /** - * @brief Convolution of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. - * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - * @return none. - */ - - void arm_conv_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2); - - - - /** - * @brief Convolution of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. - * @return none. - */ - - void arm_conv_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst); - - - /** - * @brief Partial convolution of floating-point sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - /** - * @brief Partial convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] * pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] * pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2); - - -/** - * @brief Partial convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - /** - * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] * pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] * pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2); - - - /** - * @brief Partial convolution of Q31 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Partial convolution of Q7 sequences - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2); - - -/** - * @brief Partial convolution of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - - /** - * @brief Instance structure for the Q15 FIR decimator. - */ - - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - } arm_fir_decimate_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR decimator. - */ - - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - - } arm_fir_decimate_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR decimator. - */ - - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - - } arm_fir_decimate_instance_f32; - - - - /** - * @brief Processing function for the floating-point FIR decimator. - * @param[in] *S points to an instance of the floating-point FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_f32( - const arm_fir_decimate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point FIR decimator. - * @param[in,out] *S points to an instance of the floating-point FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - - arm_status arm_fir_decimate_init_f32( - arm_fir_decimate_instance_f32 * S, - uint16_t numTaps, - uint8_t M, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the Q15 FIR decimator. - * @param[in] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_fast_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - - /** - * @brief Initialization function for the Q15 FIR decimator. - * @param[in,out] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - - arm_status arm_fir_decimate_init_q15( - arm_fir_decimate_instance_q15 * S, - uint16_t numTaps, - uint8_t M, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR decimator. - * @param[in] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_q31( - const arm_fir_decimate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_fast_q31( - arm_fir_decimate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 FIR decimator. - * @param[in,out] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - - arm_status arm_fir_decimate_init_q31( - arm_fir_decimate_instance_q31 * S, - uint16_t numTaps, - uint8_t M, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - - - /** - * @brief Instance structure for the Q15 FIR interpolator. - */ - - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ - } arm_fir_interpolate_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR interpolator. - */ - - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ - } arm_fir_interpolate_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR interpolator. - */ - - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ - } arm_fir_interpolate_instance_f32; - - - /** - * @brief Processing function for the Q15 FIR interpolator. - * @param[in] *S points to an instance of the Q15 FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_interpolate_q15( - const arm_fir_interpolate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 FIR interpolator. - * @param[in,out] *S points to an instance of the Q15 FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - - arm_status arm_fir_interpolate_init_q15( - arm_fir_interpolate_instance_q15 * S, - uint8_t L, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR interpolator. - * @param[in] *S points to an instance of the Q15 FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_interpolate_q31( - const arm_fir_interpolate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 FIR interpolator. - * @param[in,out] *S points to an instance of the Q31 FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - - arm_status arm_fir_interpolate_init_q31( - arm_fir_interpolate_instance_q31 * S, - uint8_t L, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the floating-point FIR interpolator. - * @param[in] *S points to an instance of the floating-point FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_interpolate_f32( - const arm_fir_interpolate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point FIR interpolator. - * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - - arm_status arm_fir_interpolate_init_f32( - arm_fir_interpolate_instance_f32 * S, - uint8_t L, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - /** - * @brief Instance structure for the high precision Q31 Biquad cascade filter. - */ - - typedef struct - { - uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ - q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ - uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ - - } arm_biquad_cas_df1_32x64_ins_q31; - - - /** - * @param[in] *S points to an instance of the high precision Q31 Biquad cascade filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cas_df1_32x64_q31( - const arm_biquad_cas_df1_32x64_ins_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @param[in,out] *S points to an instance of the high precision Q31 Biquad cascade filter structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format - * @return none - */ - - void arm_biquad_cas_df1_32x64_init_q31( - arm_biquad_cas_df1_32x64_ins_q31 * S, - uint8_t numStages, - q31_t * pCoeffs, - q63_t * pState, - uint8_t postShift); - - - - /** - * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. - */ - - typedef struct - { - uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ - float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ - } arm_biquad_cascade_df2T_instance_f32; - - - /** - * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in] *S points to an instance of the filter data structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df2T_f32( - const arm_biquad_cascade_df2T_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in,out] *S points to an instance of the filter data structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @return none - */ - - void arm_biquad_cascade_df2T_init_f32( - arm_biquad_cascade_df2T_instance_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - - - /** - * @brief Instance structure for the Q15 FIR lattice filter. - */ - - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR lattice filter. - */ - - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR lattice filter. - */ - - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_f32; - - /** - * @brief Initialization function for the Q15 FIR lattice filter. - * @param[in] *S points to an instance of the Q15 FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - - void arm_fir_lattice_init_q15( - arm_fir_lattice_instance_q15 * S, - uint16_t numStages, - q15_t * pCoeffs, - q15_t * pState); - - - /** - * @brief Processing function for the Q15 FIR lattice filter. - * @param[in] *S points to an instance of the Q15 FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_lattice_q15( - const arm_fir_lattice_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 FIR lattice filter. - * @param[in] *S points to an instance of the Q31 FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - - void arm_fir_lattice_init_q31( - arm_fir_lattice_instance_q31 * S, - uint16_t numStages, - q31_t * pCoeffs, - q31_t * pState); - - - /** - * @brief Processing function for the Q31 FIR lattice filter. - * @param[in] *S points to an instance of the Q31 FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_fir_lattice_q31( - const arm_fir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - -/** - * @brief Initialization function for the floating-point FIR lattice filter. - * @param[in] *S points to an instance of the floating-point FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - - void arm_fir_lattice_init_f32( - arm_fir_lattice_instance_f32 * S, - uint16_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - /** - * @brief Processing function for the floating-point FIR lattice filter. - * @param[in] *S points to an instance of the floating-point FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_fir_lattice_f32( - const arm_fir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Instance structure for the Q15 IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_q15; - - /** - * @brief Instance structure for the Q31 IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_q31; - - /** - * @brief Instance structure for the floating-point IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_f32; - - /** - * @brief Processing function for the floating-point IIR lattice filter. - * @param[in] *S points to an instance of the floating-point IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_f32( - const arm_iir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point IIR lattice filter. - * @param[in] *S points to an instance of the floating-point IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize-1. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_init_f32( - arm_iir_lattice_instance_f32 * S, - uint16_t numStages, - float32_t * pkCoeffs, - float32_t * pvCoeffs, - float32_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 IIR lattice filter. - * @param[in] *S points to an instance of the Q31 IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_q31( - const arm_iir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 IIR lattice filter. - * @param[in] *S points to an instance of the Q31 IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_init_q31( - arm_iir_lattice_instance_q31 * S, - uint16_t numStages, - q31_t * pkCoeffs, - q31_t * pvCoeffs, - q31_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 IIR lattice filter. - * @param[in] *S points to an instance of the Q15 IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_q15( - const arm_iir_lattice_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - -/** - * @brief Initialization function for the Q15 IIR lattice filter. - * @param[in] *S points to an instance of the fixed-point Q15 IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process per call. - * @return none. - */ - - void arm_iir_lattice_init_q15( - arm_iir_lattice_instance_q15 * S, - uint16_t numStages, - q15_t * pkCoeffs, - q15_t * pvCoeffs, - q15_t * pState, - uint32_t blockSize); - - /** - * @brief Instance structure for the floating-point LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - float32_t mu; /**< step size that controls filter coefficient updates. */ - } arm_lms_instance_f32; - - /** - * @brief Processing function for floating-point LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_f32( - const arm_lms_instance_f32 * S, - float32_t * pSrc, - float32_t * pRef, - float32_t * pOut, - float32_t * pErr, - uint32_t blockSize); - - /** - * @brief Initialization function for floating-point LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to the coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_init_f32( - arm_lms_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - float32_t mu, - uint32_t blockSize); - - /** - * @brief Instance structure for the Q15 LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q15_t mu; /**< step size that controls filter coefficient updates. */ - uint32_t postShift; /**< bit shift applied to coefficients. */ - } arm_lms_instance_q15; - - - /** - * @brief Initialization function for the Q15 LMS filter. - * @param[in] *S points to an instance of the Q15 LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to the coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - */ - - void arm_lms_init_q15( - arm_lms_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - q15_t mu, - uint32_t blockSize, - uint32_t postShift); - - /** - * @brief Processing function for Q15 LMS filter. - * @param[in] *S points to an instance of the Q15 LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_q15( - const arm_lms_instance_q15 * S, - q15_t * pSrc, - q15_t * pRef, - q15_t * pOut, - q15_t * pErr, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q31 LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q31_t mu; /**< step size that controls filter coefficient updates. */ - uint32_t postShift; /**< bit shift applied to coefficients. */ - - } arm_lms_instance_q31; - - /** - * @brief Processing function for Q31 LMS filter. - * @param[in] *S points to an instance of the Q15 LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_q31( - const arm_lms_instance_q31 * S, - q31_t * pSrc, - q31_t * pRef, - q31_t * pOut, - q31_t * pErr, - uint32_t blockSize); - - /** - * @brief Initialization function for Q31 LMS filter. - * @param[in] *S points to an instance of the Q31 LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - */ - - void arm_lms_init_q31( - arm_lms_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - q31_t mu, - uint32_t blockSize, - uint32_t postShift); - - /** - * @brief Instance structure for the floating-point normalized LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - float32_t mu; /**< step size that control filter coefficient updates. */ - float32_t energy; /**< saves previous frame energy. */ - float32_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_f32; - - /** - * @brief Processing function for floating-point normalized LMS filter. - * @param[in] *S points to an instance of the floating-point normalized LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_norm_f32( - arm_lms_norm_instance_f32 * S, - float32_t * pSrc, - float32_t * pRef, - float32_t * pOut, - float32_t * pErr, - uint32_t blockSize); - - /** - * @brief Initialization function for floating-point normalized LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_norm_init_f32( - arm_lms_norm_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - float32_t mu, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q31 normalized LMS filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q31_t mu; /**< step size that controls filter coefficient updates. */ - uint8_t postShift; /**< bit shift applied to coefficients. */ - q31_t *recipTable; /**< points to the reciprocal initial value table. */ - q31_t energy; /**< saves previous frame energy. */ - q31_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_q31; - - /** - * @brief Processing function for Q31 normalized LMS filter. - * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_norm_q31( - arm_lms_norm_instance_q31 * S, - q31_t * pSrc, - q31_t * pRef, - q31_t * pOut, - q31_t * pErr, - uint32_t blockSize); - - /** - * @brief Initialization function for Q31 normalized LMS filter. - * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - */ - - void arm_lms_norm_init_q31( - arm_lms_norm_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - q31_t mu, - uint32_t blockSize, - uint8_t postShift); - - /** - * @brief Instance structure for the Q15 normalized LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< Number of coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q15_t mu; /**< step size that controls filter coefficient updates. */ - uint8_t postShift; /**< bit shift applied to coefficients. */ - q15_t *recipTable; /**< Points to the reciprocal initial value table. */ - q15_t energy; /**< saves previous frame energy. */ - q15_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_q15; - - /** - * @brief Processing function for Q15 normalized LMS filter. - * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_norm_q15( - arm_lms_norm_instance_q15 * S, - q15_t * pSrc, - q15_t * pRef, - q15_t * pOut, - q15_t * pErr, - uint32_t blockSize); - - - /** - * @brief Initialization function for Q15 normalized LMS filter. - * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - */ - - void arm_lms_norm_init_q15( - arm_lms_norm_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - q15_t mu, - uint32_t blockSize, - uint8_t postShift); - - /** - * @brief Correlation of floating-point sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - */ - - void arm_correlate_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst); - - - /** - * @brief Correlation of Q15 sequences - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @return none. - */ - void arm_correlate_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch); - - - /** - * @brief Correlation of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - */ - - void arm_correlate_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst); - - /** - * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - */ - - void arm_correlate_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst); - - - - /** - * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @return none. - */ - - void arm_correlate_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch); - - /** - * @brief Correlation of Q31 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - */ - - void arm_correlate_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst); - - /** - * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - */ - - void arm_correlate_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst); - - - - /** - * @brief Correlation of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - * @return none. - */ - - void arm_correlate_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2); - - - /** - * @brief Correlation of Q7 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - */ - - void arm_correlate_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst); - - - /** - * @brief Instance structure for the floating-point sparse FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_f32; - - /** - * @brief Instance structure for the Q31 sparse FIR filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q31; - - /** - * @brief Instance structure for the Q15 sparse FIR filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q15; - - /** - * @brief Instance structure for the Q7 sparse FIR filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q7; - - /** - * @brief Processing function for the floating-point sparse FIR filter. - * @param[in] *S points to an instance of the floating-point sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_sparse_f32( - arm_fir_sparse_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - float32_t * pScratchIn, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point sparse FIR filter. - * @param[in,out] *S points to an instance of the floating-point sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - */ - - void arm_fir_sparse_init_f32( - arm_fir_sparse_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 sparse FIR filter. - * @param[in] *S points to an instance of the Q31 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_sparse_q31( - arm_fir_sparse_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - q31_t * pScratchIn, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q31 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - */ - - void arm_fir_sparse_init_q31( - arm_fir_sparse_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - /** - * @brief Processing function for the Q15 sparse FIR filter. - * @param[in] *S points to an instance of the Q15 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] *pScratchOut points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_sparse_q15( - arm_fir_sparse_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - q15_t * pScratchIn, - q31_t * pScratchOut, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q15 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - */ - - void arm_fir_sparse_init_q15( - arm_fir_sparse_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - /** - * @brief Processing function for the Q7 sparse FIR filter. - * @param[in] *S points to an instance of the Q7 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] *pScratchOut points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_sparse_q7( - arm_fir_sparse_instance_q7 * S, - q7_t * pSrc, - q7_t * pDst, - q7_t * pScratchIn, - q31_t * pScratchOut, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q7 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q7 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - */ - - void arm_fir_sparse_init_q7( - arm_fir_sparse_instance_q7 * S, - uint16_t numTaps, - q7_t * pCoeffs, - q7_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - - /* - * @brief Floating-point sin_cos function. - * @param[in] theta input value in degrees - * @param[out] *pSinVal points to the processed sine output. - * @param[out] *pCosVal points to the processed cos output. - * @return none. - */ - - void arm_sin_cos_f32( - float32_t theta, - float32_t * pSinVal, - float32_t * pCcosVal); - - /* - * @brief Q31 sin_cos function. - * @param[in] theta scaled input value in degrees - * @param[out] *pSinVal points to the processed sine output. - * @param[out] *pCosVal points to the processed cosine output. - * @return none. - */ - - void arm_sin_cos_q31( - q31_t theta, - q31_t * pSinVal, - q31_t * pCosVal); - - - /** - * @brief Floating-point complex conjugate. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_conj_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex conjugate. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_conj_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - /** - * @brief Q15 complex conjugate. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_conj_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - - - /** - * @brief Floating-point complex magnitude squared - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_squared_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex magnitude squared - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_squared_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - /** - * @brief Q15 complex magnitude squared - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_squared_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - - /** - * @ingroup groupController - */ - - /** - * @defgroup PID PID Motor Control - * - * A Proportional Integral Derivative (PID) controller is a generic feedback control - * loop mechanism widely used in industrial control systems. - * A PID controller is the most commonly used type of feedback controller. - * - * This set of functions implements (PID) controllers - * for Q15, Q31, and floating-point data types. The functions operate on a single sample - * of data and each call to the function returns a single processed value. - * S points to an instance of the PID control data structure. in - * is the input sample value. The functions return the output value. - * - * \par Algorithm: - *
-   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
-   *    A0 = Kp + Ki + Kd
-   *    A1 = (-Kp ) - (2 * Kd )
-   *    A2 = Kd  
- * - * \par - * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant - * - * \par - * \image html PID.gif "Proportional Integral Derivative Controller" - * - * \par - * The PID controller calculates an "error" value as the difference between - * the measured output and the reference input. - * The controller attempts to minimize the error by adjusting the process control inputs. - * The proportional value determines the reaction to the current error, - * the integral value determines the reaction based on the sum of recent errors, - * and the derivative value determines the reaction based on the rate at which the error has been changing. - * - * \par Instance Structure - * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. - * A separate instance structure must be defined for each PID Controller. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Reset Functions - * There is also an associated reset function for each data type which clears the state array. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. - * - Zeros out the values in the state buffer. - * - * \par - * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. - * - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the PID Controller functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup PID - * @{ - */ - - /** - * @brief Process function for the floating-point PID Control. - * @param[in,out] *S is an instance of the floating-point PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - */ - - - static __INLINE float32_t arm_pid_f32( - arm_pid_instance_f32 * S, - float32_t in) - { - float32_t out; - - /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ - out = (S->A0 * in) + - (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - - } - - /** - * @brief Process function for the Q31 PID Control. - * @param[in,out] *S points to an instance of the Q31 PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. - * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. - */ - - static __INLINE q31_t arm_pid_q31( - arm_pid_instance_q31 * S, - q31_t in) - { - q63_t acc; - q31_t out; - - /* acc = A0 * x[n] */ - acc = (q63_t) S->A0 * in; - - /* acc += A1 * x[n-1] */ - acc += (q63_t) S->A1 * S->state[0]; - - /* acc += A2 * x[n-2] */ - acc += (q63_t) S->A2 * S->state[1]; - - /* convert output to 1.31 format to add y[n-1] */ - out = (q31_t) (acc >> 31u); - - /* out += y[n-1] */ - out += S->state[2]; - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - - } - - /** - * @brief Process function for the Q15 PID Control. - * @param[in,out] *S points to an instance of the Q15 PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. - * Lastly, the accumulator is saturated to yield a result in 1.15 format. - */ - - static __INLINE q15_t arm_pid_q15( - arm_pid_instance_q15 * S, - q15_t in) - { - q63_t acc; - q15_t out; - -#ifndef ARM_MATH_CM0_FAMILY - __SIMD32_TYPE *vstate; - - /* Implementation of PID controller */ - - /* acc = A0 * x[n] */ - acc = (q31_t) __SMUAD(S->A0, in); - - /* acc += A1 * x[n-1] + A2 * x[n-2] */ - vstate = __SIMD32_CONST(S->state); - acc = __SMLALD(S->A1, (q31_t) *vstate, acc); - -#else - /* acc = A0 * x[n] */ - acc = ((q31_t) S->A0) * in; - - /* acc += A1 * x[n-1] + A2 * x[n-2] */ - acc += (q31_t) S->A1 * S->state[0]; - acc += (q31_t) S->A2 * S->state[1]; - -#endif - - /* acc += y[n-1] */ - acc += (q31_t) S->state[2] << 15; - - /* saturate the output */ - out = (q15_t) (__SSAT((acc >> 15), 16)); - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - - } - - /** - * @} end of PID group - */ - - - /** - * @brief Floating-point matrix inverse. - * @param[in] *src points to the instance of the input floating-point matrix structure. - * @param[out] *dst points to the instance of the output floating-point matrix structure. - * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. - * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. - */ - - arm_status arm_mat_inverse_f32( - const arm_matrix_instance_f32 * src, - arm_matrix_instance_f32 * dst); - - - - /** - * @ingroup groupController - */ - - - /** - * @defgroup clarke Vector Clarke Transform - * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. - * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents - * in the two-phase orthogonal stator axis Ialpha and Ibeta. - * When Ialpha is superposed with Ia as shown in the figure below - * \image html clarke.gif Stator current space vector and its components in (a,b). - * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta - * can be calculated using only Ia and Ib. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html clarkeFormula.gif - * where Ia and Ib are the instantaneous stator phases and - * pIalpha and pIbeta are the two coordinates of time invariant vector. - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Clarke transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup clarke - * @{ - */ - - /** - * - * @brief Floating-point Clarke transform - * @param[in] Ia input three-phase coordinate a - * @param[in] Ib input three-phase coordinate b - * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta - * @return none. - */ - - static __INLINE void arm_clarke_f32( - float32_t Ia, - float32_t Ib, - float32_t * pIalpha, - float32_t * pIbeta) - { - /* Calculate pIalpha using the equation, pIalpha = Ia */ - *pIalpha = Ia; - - /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ - *pIbeta = - ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); - - } - - /** - * @brief Clarke transform for Q31 version - * @param[in] Ia input three-phase coordinate a - * @param[in] Ib input three-phase coordinate b - * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition, hence there is no risk of overflow. - */ - - static __INLINE void arm_clarke_q31( - q31_t Ia, - q31_t Ib, - q31_t * pIalpha, - q31_t * pIbeta) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - - /* Calculating pIalpha from Ia by equation pIalpha = Ia */ - *pIalpha = Ia; - - /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ - product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); - - /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ - product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); - - /* pIbeta is calculated by adding the intermediate products */ - *pIbeta = __QADD(product1, product2); - } - - /** - * @} end of clarke group - */ - - /** - * @brief Converts the elements of the Q7 vector to Q31 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_q7_to_q31( - q7_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - - - /** - * @ingroup groupController - */ - - /** - * @defgroup inv_clarke Vector Inverse Clarke Transform - * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html clarkeInvFormula.gif - * where pIa and pIb are the instantaneous stator phases and - * Ialpha and Ibeta are the two coordinates of time invariant vector. - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Clarke transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup inv_clarke - * @{ - */ - - /** - * @brief Floating-point Inverse Clarke transform - * @param[in] Ialpha input two-phase orthogonal vector axis alpha - * @param[in] Ibeta input two-phase orthogonal vector axis beta - * @param[out] *pIa points to output three-phase coordinate a - * @param[out] *pIb points to output three-phase coordinate b - * @return none. - */ - - - static __INLINE void arm_inv_clarke_f32( - float32_t Ialpha, - float32_t Ibeta, - float32_t * pIa, - float32_t * pIb) - { - /* Calculating pIa from Ialpha by equation pIa = Ialpha */ - *pIa = Ialpha; - - /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ - *pIb = (float32_t)-0.5 * Ialpha + (float32_t) 0.8660254039 *Ibeta; - - } - - /** - * @brief Inverse Clarke transform for Q31 version - * @param[in] Ialpha input two-phase orthogonal vector axis alpha - * @param[in] Ibeta input two-phase orthogonal vector axis beta - * @param[out] *pIa points to output three-phase coordinate a - * @param[out] *pIb points to output three-phase coordinate b - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the subtraction, hence there is no risk of overflow. - */ - - static __INLINE void arm_inv_clarke_q31( - q31_t Ialpha, - q31_t Ibeta, - q31_t * pIa, - q31_t * pIb) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - - /* Calculating pIa from Ialpha by equation pIa = Ialpha */ - *pIa = Ialpha; - - /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ - product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); - - /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ - product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); - - /* pIb is calculated by subtracting the products */ - *pIb = __QSUB(product2, product1); - - } - - /** - * @} end of inv_clarke group - */ - - /** - * @brief Converts the elements of the Q7 vector to Q15 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_q7_to_q15( - q7_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - - /** - * @ingroup groupController - */ - - /** - * @defgroup park Vector Park Transform - * - * Forward Park transform converts the input two-coordinate vector to flux and torque components. - * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents - * from the stationary to the moving reference frame and control the spatial relationship between - * the stator vector current and rotor flux vector. - * If we consider the d axis aligned with the rotor flux, the diagram below shows the - * current vector and the relationship from the two reference frames: - * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html parkFormula.gif - * where Ialpha and Ibeta are the stator vector components, - * pId and pIq are rotor vector components and cosVal and sinVal are the - * cosine and sine values of theta (rotor flux position). - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Park transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup park - * @{ - */ - - /** - * @brief Floating-point Park transform - * @param[in] Ialpha input two-phase vector coordinate alpha - * @param[in] Ibeta input two-phase vector coordinate beta - * @param[out] *pId points to output rotor reference frame d - * @param[out] *pIq points to output rotor reference frame q - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * @return none. - * - * The function implements the forward Park transform. - * - */ - - static __INLINE void arm_park_f32( - float32_t Ialpha, - float32_t Ibeta, - float32_t * pId, - float32_t * pIq, - float32_t sinVal, - float32_t cosVal) - { - /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ - *pId = Ialpha * cosVal + Ibeta * sinVal; - - /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ - *pIq = -Ialpha * sinVal + Ibeta * cosVal; - - } - - /** - * @brief Park transform for Q31 version - * @param[in] Ialpha input two-phase vector coordinate alpha - * @param[in] Ibeta input two-phase vector coordinate beta - * @param[out] *pId points to output rotor reference frame d - * @param[out] *pIq points to output rotor reference frame q - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition and subtraction, hence there is no risk of overflow. - */ - - - static __INLINE void arm_park_q31( - q31_t Ialpha, - q31_t Ibeta, - q31_t * pId, - q31_t * pIq, - q31_t sinVal, - q31_t cosVal) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - q31_t product3, product4; /* Temporary variables used to store intermediate results */ - - /* Intermediate product is calculated by (Ialpha * cosVal) */ - product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); - - /* Intermediate product is calculated by (Ibeta * sinVal) */ - product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); - - - /* Intermediate product is calculated by (Ialpha * sinVal) */ - product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); - - /* Intermediate product is calculated by (Ibeta * cosVal) */ - product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); - - /* Calculate pId by adding the two intermediate products 1 and 2 */ - *pId = __QADD(product1, product2); - - /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ - *pIq = __QSUB(product4, product3); - } - - /** - * @} end of park group - */ - - /** - * @brief Converts the elements of the Q7 vector to floating-point vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q7_to_float( - q7_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @ingroup groupController - */ - - /** - * @defgroup inv_park Vector Inverse Park transform - * Inverse Park transform converts the input flux and torque components to two-coordinate vector. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html parkInvFormula.gif - * where pIalpha and pIbeta are the stator vector components, - * Id and Iq are rotor vector components and cosVal and sinVal are the - * cosine and sine values of theta (rotor flux position). - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Park transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup inv_park - * @{ - */ - - /** - * @brief Floating-point Inverse Park transform - * @param[in] Id input coordinate of rotor reference frame d - * @param[in] Iq input coordinate of rotor reference frame q - * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * @return none. - */ - - static __INLINE void arm_inv_park_f32( - float32_t Id, - float32_t Iq, - float32_t * pIalpha, - float32_t * pIbeta, - float32_t sinVal, - float32_t cosVal) - { - /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ - *pIalpha = Id * cosVal - Iq * sinVal; - - /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ - *pIbeta = Id * sinVal + Iq * cosVal; - - } - - - /** - * @brief Inverse Park transform for Q31 version - * @param[in] Id input coordinate of rotor reference frame d - * @param[in] Iq input coordinate of rotor reference frame q - * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition, hence there is no risk of overflow. - */ - - - static __INLINE void arm_inv_park_q31( - q31_t Id, - q31_t Iq, - q31_t * pIalpha, - q31_t * pIbeta, - q31_t sinVal, - q31_t cosVal) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - q31_t product3, product4; /* Temporary variables used to store intermediate results */ - - /* Intermediate product is calculated by (Id * cosVal) */ - product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); - - /* Intermediate product is calculated by (Iq * sinVal) */ - product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); - - - /* Intermediate product is calculated by (Id * sinVal) */ - product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); - - /* Intermediate product is calculated by (Iq * cosVal) */ - product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); - - /* Calculate pIalpha by using the two intermediate products 1 and 2 */ - *pIalpha = __QSUB(product1, product2); - - /* Calculate pIbeta by using the two intermediate products 3 and 4 */ - *pIbeta = __QADD(product4, product3); - - } - - /** - * @} end of Inverse park group - */ - - - /** - * @brief Converts the elements of the Q31 vector to floating-point vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q31_to_float( - q31_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @ingroup groupInterpolation - */ - - /** - * @defgroup LinearInterpolate Linear Interpolation - * - * Linear interpolation is a method of curve fitting using linear polynomials. - * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line - * - * \par - * \image html LinearInterp.gif "Linear interpolation" - * - * \par - * A Linear Interpolate function calculates an output value(y), for the input(x) - * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) - * - * \par Algorithm: - *
-   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
-   *       where x0, x1 are nearest values of input x
-   *             y0, y1 are nearest values to output y
-   * 
- * - * \par - * This set of functions implements Linear interpolation process - * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single - * sample of data and each call to the function returns a single processed value. - * S points to an instance of the Linear Interpolate function data structure. - * x is the input sample value. The functions returns the output value. - * - * \par - * if x is outside of the table boundary, Linear interpolation returns first value of the table - * if x is below input range and returns last value of table if x is above range. - */ - - /** - * @addtogroup LinearInterpolate - * @{ - */ - - /** - * @brief Process function for the floating-point Linear Interpolation Function. - * @param[in,out] *S is an instance of the floating-point Linear Interpolation structure - * @param[in] x input sample to process - * @return y processed output sample. - * - */ - - static __INLINE float32_t arm_linear_interp_f32( - arm_linear_interp_instance_f32 * S, - float32_t x) - { - - float32_t y; - float32_t x0, x1; /* Nearest input values */ - float32_t y0, y1; /* Nearest output values */ - float32_t xSpacing = S->xSpacing; /* spacing between input values */ - int32_t i; /* Index variable */ - float32_t *pYData = S->pYData; /* pointer to output table */ - - /* Calculation of index */ - i = (int32_t) ((x - S->x1) / xSpacing); - - if(i < 0) - { - /* Iniatilize output for below specified range as least output value of table */ - y = pYData[0]; - } - else if((uint32_t)i >= S->nValues) - { - /* Iniatilize output for above specified range as last output value of table */ - y = pYData[S->nValues - 1]; - } - else - { - /* Calculation of nearest input values */ - x0 = S->x1 + i * xSpacing; - x1 = S->x1 + (i + 1) * xSpacing; - - /* Read of nearest output values */ - y0 = pYData[i]; - y1 = pYData[i + 1]; - - /* Calculation of output */ - y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0)); - - } - - /* returns output value */ - return (y); - } - - /** - * - * @brief Process function for the Q31 Linear Interpolation Function. - * @param[in] *pYData pointer to Q31 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - * - */ - - - static __INLINE q31_t arm_linear_interp_q31( - q31_t * pYData, - q31_t x, - uint32_t nValues) - { - q31_t y; /* output */ - q31_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - int32_t index; /* Index to read nearest output values */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - index = ((x & 0xFFF00000) >> 20); - - if(index >= (int32_t)(nValues - 1)) - { - return (pYData[nValues - 1]); - } - else if(index < 0) - { - return (pYData[0]); - } - else - { - - /* 20 bits for the fractional part */ - /* shift left by 11 to keep fract in 1.31 format */ - fract = (x & 0x000FFFFF) << 11; - - /* Read two nearest output values from the index in 1.31(q31) format */ - y0 = pYData[index]; - y1 = pYData[index + 1u]; - - /* Calculation of y0 * (1-fract) and y is in 2.30 format */ - y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); - - /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ - y += ((q31_t) (((q63_t) y1 * fract) >> 32)); - - /* Convert y to 1.31 format */ - return (y << 1u); - - } - - } - - /** - * - * @brief Process function for the Q15 Linear Interpolation Function. - * @param[in] *pYData pointer to Q15 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - * - */ - - - static __INLINE q15_t arm_linear_interp_q15( - q15_t * pYData, - q31_t x, - uint32_t nValues) - { - q63_t y; /* output */ - q15_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - int32_t index; /* Index to read nearest output values */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - index = ((x & 0xFFF00000) >> 20u); - - if(index >= (int32_t)(nValues - 1)) - { - return (pYData[nValues - 1]); - } - else if(index < 0) - { - return (pYData[0]); - } - else - { - /* 20 bits for the fractional part */ - /* fract is in 12.20 format */ - fract = (x & 0x000FFFFF); - - /* Read two nearest output values from the index */ - y0 = pYData[index]; - y1 = pYData[index + 1u]; - - /* Calculation of y0 * (1-fract) and y is in 13.35 format */ - y = ((q63_t) y0 * (0xFFFFF - fract)); - - /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ - y += ((q63_t) y1 * (fract)); - - /* convert y to 1.15 format */ - return (y >> 20); - } - - - } - - /** - * - * @brief Process function for the Q7 Linear Interpolation Function. - * @param[in] *pYData pointer to Q7 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - */ - - - static __INLINE q7_t arm_linear_interp_q7( - q7_t * pYData, - q31_t x, - uint32_t nValues) - { - q31_t y; /* output */ - q7_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - uint32_t index; /* Index to read nearest output values */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - if (x < 0) - { - return (pYData[0]); - } - index = (x >> 20) & 0xfff; - - - if(index >= (nValues - 1)) - { - return (pYData[nValues - 1]); - } - else - { - - /* 20 bits for the fractional part */ - /* fract is in 12.20 format */ - fract = (x & 0x000FFFFF); - - /* Read two nearest output values from the index and are in 1.7(q7) format */ - y0 = pYData[index]; - y1 = pYData[index + 1u]; - - /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ - y = ((y0 * (0xFFFFF - fract))); - - /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ - y += (y1 * fract); - - /* convert y to 1.7(q7) format */ - return (y >> 20u); - - } - - } - /** - * @} end of LinearInterpolate group - */ - - /** - * @brief Fast approximation to the trigonometric sine function for floating-point data. - * @param[in] x input value in radians. - * @return sin(x). - */ - - float32_t arm_sin_f32( - float32_t x); - - /** - * @brief Fast approximation to the trigonometric sine function for Q31 data. - * @param[in] x Scaled input value in radians. - * @return sin(x). - */ - - q31_t arm_sin_q31( - q31_t x); - - /** - * @brief Fast approximation to the trigonometric sine function for Q15 data. - * @param[in] x Scaled input value in radians. - * @return sin(x). - */ - - q15_t arm_sin_q15( - q15_t x); - - /** - * @brief Fast approximation to the trigonometric cosine function for floating-point data. - * @param[in] x input value in radians. - * @return cos(x). - */ - - float32_t arm_cos_f32( - float32_t x); - - /** - * @brief Fast approximation to the trigonometric cosine function for Q31 data. - * @param[in] x Scaled input value in radians. - * @return cos(x). - */ - - q31_t arm_cos_q31( - q31_t x); - - /** - * @brief Fast approximation to the trigonometric cosine function for Q15 data. - * @param[in] x Scaled input value in radians. - * @return cos(x). - */ - - q15_t arm_cos_q15( - q15_t x); - - - /** - * @ingroup groupFastMath - */ - - - /** - * @defgroup SQRT Square Root - * - * Computes the square root of a number. - * There are separate functions for Q15, Q31, and floating-point data types. - * The square root function is computed using the Newton-Raphson algorithm. - * This is an iterative algorithm of the form: - *
-   *      x1 = x0 - f(x0)/f'(x0)
-   * 
- * where x1 is the current estimate, - * x0 is the previous estimate, and - * f'(x0) is the derivative of f() evaluated at x0. - * For the square root function, the algorithm reduces to: - *
-   *     x0 = in/2                         [initial guess]
-   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
-   * 
- */ - - - /** - * @addtogroup SQRT - * @{ - */ - - /** - * @brief Floating-point square root function. - * @param[in] in input value. - * @param[out] *pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - - static __INLINE arm_status arm_sqrt_f32( - float32_t in, - float32_t * pOut) - { - if(in > 0) - { - -// #if __FPU_USED -#if (__FPU_USED == 1) && defined ( __CC_ARM ) - *pOut = __sqrtf(in); -#else - *pOut = sqrtf(in); -#endif - - return (ARM_MATH_SUCCESS); - } - else - { - *pOut = 0.0f; - return (ARM_MATH_ARGUMENT_ERROR); - } - - } - - - /** - * @brief Q31 square root function. - * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. - * @param[out] *pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - arm_status arm_sqrt_q31( - q31_t in, - q31_t * pOut); - - /** - * @brief Q15 square root function. - * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. - * @param[out] *pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - arm_status arm_sqrt_q15( - q15_t in, - q15_t * pOut); - - /** - * @} end of SQRT group - */ - - - - - - - /** - * @brief floating-point Circular write function. - */ - - static __INLINE void arm_circularWrite_f32( - int32_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const int32_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = wOffset; - } - - - - /** - * @brief floating-point Circular Read function. - */ - static __INLINE void arm_circularRead_f32( - int32_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - int32_t * dst, - int32_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (int32_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update rOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - /** - * @brief Q15 Circular write function. - */ - - static __INLINE void arm_circularWrite_q15( - q15_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const q15_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = wOffset; - } - - - - /** - * @brief Q15 Circular Read function. - */ - static __INLINE void arm_circularRead_q15( - q15_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - q15_t * dst, - q15_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (q15_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update wOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - - /** - * @brief Q7 Circular write function. - */ - - static __INLINE void arm_circularWrite_q7( - q7_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const q7_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = wOffset; - } - - - - /** - * @brief Q7 Circular Read function. - */ - static __INLINE void arm_circularRead_q7( - q7_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - q7_t * dst, - q7_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (q7_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update rOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - - /** - * @brief Sum of the squares of the elements of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_power_q31( - q31_t * pSrc, - uint32_t blockSize, - q63_t * pResult); - - /** - * @brief Sum of the squares of the elements of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_power_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Sum of the squares of the elements of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_power_q15( - q15_t * pSrc, - uint32_t blockSize, - q63_t * pResult); - - /** - * @brief Sum of the squares of the elements of a Q7 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_power_q7( - q7_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Mean value of a Q7 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_mean_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult); - - /** - * @brief Mean value of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - void arm_mean_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - /** - * @brief Mean value of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - void arm_mean_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Mean value of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - void arm_mean_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Variance of the elements of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_var_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Variance of the elements of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_var_q31( - q31_t * pSrc, - uint32_t blockSize, - q63_t * pResult); - - /** - * @brief Variance of the elements of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_var_q15( - q15_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Root Mean Square of the elements of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_rms_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Root Mean Square of the elements of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_rms_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Root Mean Square of the elements of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_rms_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - /** - * @brief Standard deviation of the elements of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_std_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Standard deviation of the elements of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_std_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Standard deviation of the elements of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_std_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - /** - * @brief Floating-point complex magnitude - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex magnitude - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - /** - * @brief Q15 complex magnitude - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - /** - * @brief Q15 complex dot product - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] *realResult real part of the result returned here - * @param[out] *imagResult imaginary part of the result returned here - * @return none. - */ - - void arm_cmplx_dot_prod_q15( - q15_t * pSrcA, - q15_t * pSrcB, - uint32_t numSamples, - q31_t * realResult, - q31_t * imagResult); - - /** - * @brief Q31 complex dot product - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] *realResult real part of the result returned here - * @param[out] *imagResult imaginary part of the result returned here - * @return none. - */ - - void arm_cmplx_dot_prod_q31( - q31_t * pSrcA, - q31_t * pSrcB, - uint32_t numSamples, - q63_t * realResult, - q63_t * imagResult); - - /** - * @brief Floating-point complex dot product - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] *realResult real part of the result returned here - * @param[out] *imagResult imaginary part of the result returned here - * @return none. - */ - - void arm_cmplx_dot_prod_f32( - float32_t * pSrcA, - float32_t * pSrcB, - uint32_t numSamples, - float32_t * realResult, - float32_t * imagResult); - - /** - * @brief Q15 complex-by-real multiplication - * @param[in] *pSrcCmplx points to the complex input vector - * @param[in] *pSrcReal points to the real input vector - * @param[out] *pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - * @return none. - */ - - void arm_cmplx_mult_real_q15( - q15_t * pSrcCmplx, - q15_t * pSrcReal, - q15_t * pCmplxDst, - uint32_t numSamples); - - /** - * @brief Q31 complex-by-real multiplication - * @param[in] *pSrcCmplx points to the complex input vector - * @param[in] *pSrcReal points to the real input vector - * @param[out] *pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - * @return none. - */ - - void arm_cmplx_mult_real_q31( - q31_t * pSrcCmplx, - q31_t * pSrcReal, - q31_t * pCmplxDst, - uint32_t numSamples); - - /** - * @brief Floating-point complex-by-real multiplication - * @param[in] *pSrcCmplx points to the complex input vector - * @param[in] *pSrcReal points to the real input vector - * @param[out] *pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - * @return none. - */ - - void arm_cmplx_mult_real_f32( - float32_t * pSrcCmplx, - float32_t * pSrcReal, - float32_t * pCmplxDst, - uint32_t numSamples); - - /** - * @brief Minimum value of a Q7 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *result is output pointer - * @param[in] index is the array index of the minimum value in the input buffer. - * @return none. - */ - - void arm_min_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * result, - uint32_t * index); - - /** - * @brief Minimum value of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output pointer - * @param[in] *pIndex is the array index of the minimum value in the input buffer. - * @return none. - */ - - void arm_min_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult, - uint32_t * pIndex); - - /** - * @brief Minimum value of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output pointer - * @param[out] *pIndex is the array index of the minimum value in the input buffer. - * @return none. - */ - void arm_min_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult, - uint32_t * pIndex); - - /** - * @brief Minimum value of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output pointer - * @param[out] *pIndex is the array index of the minimum value in the input buffer. - * @return none. - */ - - void arm_min_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult, - uint32_t * pIndex); - -/** - * @brief Maximum value of a Q7 vector. - * @param[in] *pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - - void arm_max_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult, - uint32_t * pIndex); - -/** - * @brief Maximum value of a Q15 vector. - * @param[in] *pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - - void arm_max_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult, - uint32_t * pIndex); - -/** - * @brief Maximum value of a Q31 vector. - * @param[in] *pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - - void arm_max_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult, - uint32_t * pIndex); - -/** - * @brief Maximum value of a floating-point vector. - * @param[in] *pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - - void arm_max_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult, - uint32_t * pIndex); - - /** - * @brief Q15 complex-by-complex multiplication - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_mult_cmplx_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex-by-complex multiplication - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_mult_cmplx_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t numSamples); - - /** - * @brief Floating-point complex-by-complex multiplication - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_mult_cmplx_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Converts the elements of the floating-point vector to Q31 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q31 output vector - * @param[in] blockSize length of the input vector - * @return none. - */ - void arm_float_to_q31( - float32_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Converts the elements of the floating-point vector to Q15 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q15 output vector - * @param[in] blockSize length of the input vector - * @return none - */ - void arm_float_to_q15( - float32_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Converts the elements of the floating-point vector to Q7 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q7 output vector - * @param[in] blockSize length of the input vector - * @return none - */ - void arm_float_to_q7( - float32_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q31 vector to Q15 vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q31_to_q15( - q31_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Converts the elements of the Q31 vector to Q7 vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q31_to_q7( - q31_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Converts the elements of the Q15 vector to floating-point vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q15_to_float( - q15_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q15 vector to Q31 vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q15_to_q31( - q15_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q15 vector to Q7 vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q15_to_q7( - q15_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @ingroup groupInterpolation - */ - - /** - * @defgroup BilinearInterpolate Bilinear Interpolation - * - * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. - * The underlying function f(x, y) is sampled on a regular grid and the interpolation process - * determines values between the grid points. - * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. - * Bilinear interpolation is often used in image processing to rescale images. - * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. - * - * Algorithm - * \par - * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. - * For floating-point, the instance structure is defined as: - *
-   *   typedef struct
-   *   {
-   *     uint16_t numRows;
-   *     uint16_t numCols;
-   *     float32_t *pData;
-   * } arm_bilinear_interp_instance_f32;
-   * 
- * - * \par - * where numRows specifies the number of rows in the table; - * numCols specifies the number of columns in the table; - * and pData points to an array of size numRows*numCols values. - * The data table pTable is organized in row order and the supplied data values fall on integer indexes. - * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. - * - * \par - * Let (x, y) specify the desired interpolation point. Then define: - *
-   *     XF = floor(x)
-   *     YF = floor(y)
-   * 
- * \par - * The interpolated output point is computed as: - *
-   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
-   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
-   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
-   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
-   * 
- * Note that the coordinates (x, y) contain integer and fractional components. - * The integer components specify which portion of the table to use while the - * fractional components control the interpolation processor. - * - * \par - * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. - */ - - /** - * @addtogroup BilinearInterpolate - * @{ - */ - - /** - * - * @brief Floating-point bilinear interpolation. - * @param[in,out] *S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate. - * @param[in] Y interpolation coordinate. - * @return out interpolated value. - */ - - - static __INLINE float32_t arm_bilinear_interp_f32( - const arm_bilinear_interp_instance_f32 * S, - float32_t X, - float32_t Y) - { - float32_t out; - float32_t f00, f01, f10, f11; - float32_t *pData = S->pData; - int32_t xIndex, yIndex, index; - float32_t xdiff, ydiff; - float32_t b1, b2, b3, b4; - - xIndex = (int32_t) X; - yIndex = (int32_t) Y; - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 - || yIndex > (S->numCols - 1)) - { - return (0); - } - - /* Calculation of index for two nearest points in X-direction */ - index = (xIndex - 1) + (yIndex - 1) * S->numCols; - - - /* Read two nearest points in X-direction */ - f00 = pData[index]; - f01 = pData[index + 1]; - - /* Calculation of index for two nearest points in Y-direction */ - index = (xIndex - 1) + (yIndex) * S->numCols; - - - /* Read two nearest points in Y-direction */ - f10 = pData[index]; - f11 = pData[index + 1]; - - /* Calculation of intermediate values */ - b1 = f00; - b2 = f01 - f00; - b3 = f10 - f00; - b4 = f00 - f01 - f10 + f11; - - /* Calculation of fractional part in X */ - xdiff = X - xIndex; - - /* Calculation of fractional part in Y */ - ydiff = Y - yIndex; - - /* Calculation of bi-linear interpolated output */ - out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; - - /* return to application */ - return (out); - - } - - /** - * - * @brief Q31 bilinear interpolation. - * @param[in,out] *S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - - static __INLINE q31_t arm_bilinear_interp_q31( - arm_bilinear_interp_instance_q31 * S, - q31_t X, - q31_t Y) - { - q31_t out; /* Temporary output */ - q31_t acc = 0; /* output */ - q31_t xfract, yfract; /* X, Y fractional parts */ - q31_t x1, x2, y1, y2; /* Nearest output values */ - int32_t rI, cI; /* Row and column indices */ - q31_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & 0xFFF00000) >> 20u); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & 0xFFF00000) >> 20u); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) - { - return (0); - } - - /* 20 bits for the fractional part */ - /* shift left xfract by 11 to keep 1.31 format */ - xfract = (X & 0x000FFFFF) << 11u; - - /* Read two nearest output values from the index */ - x1 = pYData[(rI) + nCols * (cI)]; - x2 = pYData[(rI) + nCols * (cI) + 1u]; - - /* 20 bits for the fractional part */ - /* shift left yfract by 11 to keep 1.31 format */ - yfract = (Y & 0x000FFFFF) << 11u; - - /* Read two nearest output values from the index */ - y1 = pYData[(rI) + nCols * (cI + 1)]; - y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ - out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); - acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); - - /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); - - /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); - - /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); - - /* Convert acc to 1.31(q31) format */ - return (acc << 2u); - - } - - /** - * @brief Q15 bilinear interpolation. - * @param[in,out] *S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - - static __INLINE q15_t arm_bilinear_interp_q15( - arm_bilinear_interp_instance_q15 * S, - q31_t X, - q31_t Y) - { - q63_t acc = 0; /* output */ - q31_t out; /* Temporary output */ - q15_t x1, x2, y1, y2; /* Nearest output values */ - q31_t xfract, yfract; /* X, Y fractional parts */ - int32_t rI, cI; /* Row and column indices */ - q15_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & 0xFFF00000) >> 20); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & 0xFFF00000) >> 20); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) - { - return (0); - } - - /* 20 bits for the fractional part */ - /* xfract should be in 12.20 format */ - xfract = (X & 0x000FFFFF); - - /* Read two nearest output values from the index */ - x1 = pYData[(rI) + nCols * (cI)]; - x2 = pYData[(rI) + nCols * (cI) + 1u]; - - - /* 20 bits for the fractional part */ - /* yfract should be in 12.20 format */ - yfract = (Y & 0x000FFFFF); - - /* Read two nearest output values from the index */ - y1 = pYData[(rI) + nCols * (cI + 1)]; - y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ - - /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ - /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ - out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u); - acc = ((q63_t) out * (0xFFFFF - yfract)); - - /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u); - acc += ((q63_t) out * (xfract)); - - /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u); - acc += ((q63_t) out * (yfract)); - - /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) y2 * (xfract)) >> 4u); - acc += ((q63_t) out * (yfract)); - - /* acc is in 13.51 format and down shift acc by 36 times */ - /* Convert out to 1.15 format */ - return (acc >> 36); - - } - - /** - * @brief Q7 bilinear interpolation. - * @param[in,out] *S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - - static __INLINE q7_t arm_bilinear_interp_q7( - arm_bilinear_interp_instance_q7 * S, - q31_t X, - q31_t Y) - { - q63_t acc = 0; /* output */ - q31_t out; /* Temporary output */ - q31_t xfract, yfract; /* X, Y fractional parts */ - q7_t x1, x2, y1, y2; /* Nearest output values */ - int32_t rI, cI; /* Row and column indices */ - q7_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & 0xFFF00000) >> 20); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & 0xFFF00000) >> 20); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) - { - return (0); - } - - /* 20 bits for the fractional part */ - /* xfract should be in 12.20 format */ - xfract = (X & 0x000FFFFF); - - /* Read two nearest output values from the index */ - x1 = pYData[(rI) + nCols * (cI)]; - x2 = pYData[(rI) + nCols * (cI) + 1u]; - - - /* 20 bits for the fractional part */ - /* yfract should be in 12.20 format */ - yfract = (Y & 0x000FFFFF); - - /* Read two nearest output values from the index */ - y1 = pYData[(rI) + nCols * (cI + 1)]; - y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ - out = ((x1 * (0xFFFFF - xfract))); - acc = (((q63_t) out * (0xFFFFF - yfract))); - - /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ - out = ((x2 * (0xFFFFF - yfract))); - acc += (((q63_t) out * (xfract))); - - /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ - out = ((y1 * (0xFFFFF - xfract))); - acc += (((q63_t) out * (yfract))); - - /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ - out = ((y2 * (yfract))); - acc += (((q63_t) out * (xfract))); - - /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ - return (acc >> 40); - - } - - /** - * @} end of BilinearInterpolate group - */ - - -#if defined ( __CC_ARM ) //Keil -//SMMLAR - #define multAcc_32x32_keep32_R(a, x, y) \ - a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) - -//SMMLSR - #define multSub_32x32_keep32_R(a, x, y) \ - a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) - -//SMMULR - #define mult_32x32_keep32_R(a, x, y) \ - a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) - -//Enter low optimization region - place directly above function definition - #define LOW_OPTIMIZATION_ENTER \ - _Pragma ("push") \ - _Pragma ("O1") - -//Exit low optimization region - place directly after end of function definition - #define LOW_OPTIMIZATION_EXIT \ - _Pragma ("pop") - -//Enter low optimization region - place directly above function definition - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER - -//Exit low optimization region - place directly after end of function definition - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#elif defined(__ICCARM__) //IAR - //SMMLA - #define multAcc_32x32_keep32_R(a, x, y) \ - a += (q31_t) (((q63_t) x * y) >> 32) - - //SMMLS - #define multSub_32x32_keep32_R(a, x, y) \ - a -= (q31_t) (((q63_t) x * y) >> 32) - -//SMMUL - #define mult_32x32_keep32_R(a, x, y) \ - a = (q31_t) (((q63_t) x * y ) >> 32) - -//Enter low optimization region - place directly above function definition - #define LOW_OPTIMIZATION_ENTER \ - _Pragma ("optimize=low") - -//Exit low optimization region - place directly after end of function definition - #define LOW_OPTIMIZATION_EXIT - -//Enter low optimization region - place directly above function definition - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ - _Pragma ("optimize=low") - -//Exit low optimization region - place directly after end of function definition - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#elif defined(__GNUC__) - //SMMLA - #define multAcc_32x32_keep32_R(a, x, y) \ - a += (q31_t) (((q63_t) x * y) >> 32) - - //SMMLS - #define multSub_32x32_keep32_R(a, x, y) \ - a -= (q31_t) (((q63_t) x * y) >> 32) - -//SMMUL - #define mult_32x32_keep32_R(a, x, y) \ - a = (q31_t) (((q63_t) x * y ) >> 32) - - #define LOW_OPTIMIZATION_ENTER __attribute__(( optimize("-O1") )) - - #define LOW_OPTIMIZATION_EXIT - - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER - - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#endif - - - - - -#ifdef __cplusplus -} -#endif - - -#endif /* _ARM_MATH_H */ - - -/** - * - * End of file. - */ diff --git a/src/lib/mathlib/CMSIS/Include/core_cm3.h b/src/lib/mathlib/CMSIS/Include/core_cm3.h deleted file mode 100644 index 8ac6dc0788..0000000000 --- a/src/lib/mathlib/CMSIS/Include/core_cm3.h +++ /dev/null @@ -1,1627 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version V3.20 - * @date 25. February 2013 - * - * @note - * - ******************************************************************************/ -/* Copyright (c) 2009 - 2013 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef __CORE_CM3_H_GENERIC -#define __CORE_CM3_H_GENERIC - -/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions - CMSIS violates the following MISRA-C:2004 rules: - - \li Required Rule 8.5, object/function definition in header file.
- Function definitions in header files are used to allow 'inlining'. - - \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
- Unions are used for effective representation of core registers. - - \li Advisory Rule 19.7, Function-like macro defined.
- Function-like macros are used to allow more efficient code. - */ - - -/******************************************************************************* - * CMSIS definitions - ******************************************************************************/ -/** \ingroup Cortex_M3 - @{ - */ - -/* CMSIS CM3 definitions */ -#define __CM3_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | \ - __CM3_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex-M Core */ - - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - #define __STATIC_INLINE static __inline - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ - #define __STATIC_INLINE static inline - -#elif defined ( __TMS470__ ) - #define __ASM __asm /*!< asm keyword for TI CCS Compiler */ - #define __STATIC_INLINE static inline - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - #define __STATIC_INLINE static inline - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - #define __STATIC_INLINE static inline - -#endif - -/** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all -*/ -#define __FPU_USED 0 - -#if defined ( __CC_ARM ) - #if defined __TARGET_FPU_VFP - #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __ICCARM__ ) - #if defined __ARMVFP__ - #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __TMS470__ ) - #if defined __TI__VFP_SUPPORT____ - #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __GNUC__ ) - #if defined (__VFP_FP__) && !defined(__SOFTFP__) - #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __TASKING__ ) - #if defined __FPU_VFP__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif -#endif - -#include /* standard types definitions */ -#include "core_cmInstr.h" /* Core Instruction Access */ -#include "core_cmFunc.h" /* Core Function Access */ - -#endif /* __CORE_CM3_H_GENERIC */ - -#ifndef __CMSIS_GENERIC - -#ifndef __CORE_CM3_H_DEPENDANT -#define __CORE_CM3_H_DEPENDANT - -/* check device defines and use defaults */ -#if defined __CHECK_DEVICE_DEFINES - #ifndef __CM3_REV - #define __CM3_REV 0x0200 - #warning "__CM3_REV not defined in device header file; using default!" - #endif - - #ifndef __MPU_PRESENT - #define __MPU_PRESENT 0 - #warning "__MPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 - #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" - #endif - - #ifndef __Vendor_SysTickConfig - #define __Vendor_SysTickConfig 0 - #warning "__Vendor_SysTickConfig not defined in device header file; using default!" - #endif -#endif - -/* IO definitions (access restrictions to peripheral registers) */ -/** - \defgroup CMSIS_glob_defs CMSIS Global Defines - - IO Type Qualifiers are used - \li to specify the access to peripheral variables. - \li for automatic generation of peripheral register debug information. -*/ -#ifdef __cplusplus - #define __I volatile /*!< Defines 'read only' permissions */ -#else - #define __I volatile const /*!< Defines 'read only' permissions */ -#endif -#define __O volatile /*!< Defines 'write only' permissions */ -#define __IO volatile /*!< Defines 'read / write' permissions */ - -/*@} end of group Cortex_M3 */ - - - -/******************************************************************************* - * Register Abstraction - Core Register contain: - - Core Register - - Core NVIC Register - - Core SCB Register - - Core SysTick Register - - Core Debug Register - - Core MPU Register - ******************************************************************************/ -/** \defgroup CMSIS_core_register Defines and Type Definitions - \brief Type definitions and defines for Cortex-M processor based devices. -*/ - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_CORE Status and Control Registers - \brief Core Register type definitions. - @{ - */ - -/** \brief Union type to access the Application Program Status Register (APSR). - */ -typedef union -{ - struct - { -#if (__CORTEX_M != 0x04) - uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ -#else - uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ - uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ - uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ -#endif - uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} APSR_Type; - - -/** \brief Union type to access the Interrupt Program Status Register (IPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} IPSR_Type; - - -/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ -#if (__CORTEX_M != 0x04) - uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ -#else - uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ - uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ - uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ -#endif - uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ - uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ - uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} xPSR_Type; - - -/** \brief Union type to access the Control Registers (CONTROL). - */ -typedef union -{ - struct - { - uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ - uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ - uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ - uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} CONTROL_Type; - -/*@} end of group CMSIS_CORE */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) - \brief Type definitions for the NVIC Registers - @{ - */ - -/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ -} NVIC_Type; - -/* Software Triggered Interrupt Register Definitions */ -#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ -#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ - -/*@} end of group CMSIS_NVIC */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SCB System Control Block (SCB) - \brief Type definitions for the System Control Block Registers - @{ - */ - -/** \brief Structure type to access the System Control Block (SCB). - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ - uint32_t RESERVED0[5]; - __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ -#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Vector Table Offset Register Definitions */ -#if (__CM3_REV < 0x0201) /* core r2p1 */ -#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ -#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ - -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ -#else -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ -#endif - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ - -/*@} end of group CMSIS_SCB */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) - \brief Type definitions for the System Control and ID Register not in the SCB - @{ - */ - -/** \brief Structure type to access the System Control and ID Register not in the SCB. - */ -typedef struct -{ - uint32_t RESERVED0[1]; - __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ -#else - uint32_t RESERVED1[1]; -#endif -} SCnSCB_Type; - -/* Interrupt Controller Type Register Definitions */ -#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ -#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ - -#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ -#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ - -#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ -#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ - -#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ -#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ - -/*@} end of group CMSIS_SCnotSCB */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SysTick System Tick Timer (SysTick) - \brief Type definitions for the System Timer Registers. - @{ - */ - -/** \brief Structure type to access the System Timer (SysTick). - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ - -/*@} end of group CMSIS_SysTick */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) - \brief Type definitions for the Instrumentation Trace Macrocell (ITM) - @{ - */ - -/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __O uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ - __I uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __O uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ - __I uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ - __I uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ - __I uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ - __I uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ - __I uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ - __I uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ - __I uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ - __I uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ - __I uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ - __I uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ - __I uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ - __I uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ -} ITM_Type; - -/* ITM Trace Privilege Register Definitions */ -#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ -#define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ - -/* ITM Trace Control Register Definitions */ -#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ -#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ - -#define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ -#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ - -#define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ -#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ - -#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ -#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ - -#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ -#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ - -#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ -#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ - -#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ -#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ - -#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ -#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ - -#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ -#define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ - -/* ITM Integration Write Register Definitions */ -#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ -#define ITM_IWR_ATVALIDM_Msk (1UL << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ - -/* ITM Integration Read Register Definitions */ -#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ -#define ITM_IRR_ATREADYM_Msk (1UL << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ - -/* ITM Integration Mode Control Register Definitions */ -#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ -#define ITM_IMCR_INTEGRATION_Msk (1UL << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ - -/* ITM Lock Status Register Definitions */ -#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ -#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ - -#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ -#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ - -#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ -#define ITM_LSR_Present_Msk (1UL << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ - -/*@}*/ /* end of group CMSIS_ITM */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) - \brief Type definitions for the Data Watchpoint and Trace (DWT) - @{ - */ - -/** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ - __IO uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ - __IO uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ - __IO uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ - __IO uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ - __IO uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ - __IO uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ - __I uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ - __IO uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ - __IO uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ - __IO uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ - uint32_t RESERVED0[1]; - __IO uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ - __IO uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ - __IO uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ - uint32_t RESERVED1[1]; - __IO uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ - __IO uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ - __IO uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ - uint32_t RESERVED2[1]; - __IO uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ - __IO uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ - __IO uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ -} DWT_Type; - -/* DWT Control Register Definitions */ -#define DWT_CTRL_NUMCOMP_Pos 28 /*!< DWT CTRL: NUMCOMP Position */ -#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ - -#define DWT_CTRL_NOTRCPKT_Pos 27 /*!< DWT CTRL: NOTRCPKT Position */ -#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ - -#define DWT_CTRL_NOEXTTRIG_Pos 26 /*!< DWT CTRL: NOEXTTRIG Position */ -#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ - -#define DWT_CTRL_NOCYCCNT_Pos 25 /*!< DWT CTRL: NOCYCCNT Position */ -#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ - -#define DWT_CTRL_NOPRFCNT_Pos 24 /*!< DWT CTRL: NOPRFCNT Position */ -#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ - -#define DWT_CTRL_CYCEVTENA_Pos 22 /*!< DWT CTRL: CYCEVTENA Position */ -#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ - -#define DWT_CTRL_FOLDEVTENA_Pos 21 /*!< DWT CTRL: FOLDEVTENA Position */ -#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ - -#define DWT_CTRL_LSUEVTENA_Pos 20 /*!< DWT CTRL: LSUEVTENA Position */ -#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ - -#define DWT_CTRL_SLEEPEVTENA_Pos 19 /*!< DWT CTRL: SLEEPEVTENA Position */ -#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ - -#define DWT_CTRL_EXCEVTENA_Pos 18 /*!< DWT CTRL: EXCEVTENA Position */ -#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ - -#define DWT_CTRL_CPIEVTENA_Pos 17 /*!< DWT CTRL: CPIEVTENA Position */ -#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ - -#define DWT_CTRL_EXCTRCENA_Pos 16 /*!< DWT CTRL: EXCTRCENA Position */ -#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ - -#define DWT_CTRL_PCSAMPLENA_Pos 12 /*!< DWT CTRL: PCSAMPLENA Position */ -#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ - -#define DWT_CTRL_SYNCTAP_Pos 10 /*!< DWT CTRL: SYNCTAP Position */ -#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ - -#define DWT_CTRL_CYCTAP_Pos 9 /*!< DWT CTRL: CYCTAP Position */ -#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ - -#define DWT_CTRL_POSTINIT_Pos 5 /*!< DWT CTRL: POSTINIT Position */ -#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ - -#define DWT_CTRL_POSTPRESET_Pos 1 /*!< DWT CTRL: POSTPRESET Position */ -#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ - -#define DWT_CTRL_CYCCNTENA_Pos 0 /*!< DWT CTRL: CYCCNTENA Position */ -#define DWT_CTRL_CYCCNTENA_Msk (0x1UL << DWT_CTRL_CYCCNTENA_Pos) /*!< DWT CTRL: CYCCNTENA Mask */ - -/* DWT CPI Count Register Definitions */ -#define DWT_CPICNT_CPICNT_Pos 0 /*!< DWT CPICNT: CPICNT Position */ -#define DWT_CPICNT_CPICNT_Msk (0xFFUL << DWT_CPICNT_CPICNT_Pos) /*!< DWT CPICNT: CPICNT Mask */ - -/* DWT Exception Overhead Count Register Definitions */ -#define DWT_EXCCNT_EXCCNT_Pos 0 /*!< DWT EXCCNT: EXCCNT Position */ -#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL << DWT_EXCCNT_EXCCNT_Pos) /*!< DWT EXCCNT: EXCCNT Mask */ - -/* DWT Sleep Count Register Definitions */ -#define DWT_SLEEPCNT_SLEEPCNT_Pos 0 /*!< DWT SLEEPCNT: SLEEPCNT Position */ -#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ - -/* DWT LSU Count Register Definitions */ -#define DWT_LSUCNT_LSUCNT_Pos 0 /*!< DWT LSUCNT: LSUCNT Position */ -#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL << DWT_LSUCNT_LSUCNT_Pos) /*!< DWT LSUCNT: LSUCNT Mask */ - -/* DWT Folded-instruction Count Register Definitions */ -#define DWT_FOLDCNT_FOLDCNT_Pos 0 /*!< DWT FOLDCNT: FOLDCNT Position */ -#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos) /*!< DWT FOLDCNT: FOLDCNT Mask */ - -/* DWT Comparator Mask Register Definitions */ -#define DWT_MASK_MASK_Pos 0 /*!< DWT MASK: MASK Position */ -#define DWT_MASK_MASK_Msk (0x1FUL << DWT_MASK_MASK_Pos) /*!< DWT MASK: MASK Mask */ - -/* DWT Comparator Function Register Definitions */ -#define DWT_FUNCTION_MATCHED_Pos 24 /*!< DWT FUNCTION: MATCHED Position */ -#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ - -#define DWT_FUNCTION_DATAVADDR1_Pos 16 /*!< DWT FUNCTION: DATAVADDR1 Position */ -#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ - -#define DWT_FUNCTION_DATAVADDR0_Pos 12 /*!< DWT FUNCTION: DATAVADDR0 Position */ -#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ - -#define DWT_FUNCTION_DATAVSIZE_Pos 10 /*!< DWT FUNCTION: DATAVSIZE Position */ -#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ - -#define DWT_FUNCTION_LNK1ENA_Pos 9 /*!< DWT FUNCTION: LNK1ENA Position */ -#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ - -#define DWT_FUNCTION_DATAVMATCH_Pos 8 /*!< DWT FUNCTION: DATAVMATCH Position */ -#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ - -#define DWT_FUNCTION_CYCMATCH_Pos 7 /*!< DWT FUNCTION: CYCMATCH Position */ -#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ - -#define DWT_FUNCTION_EMITRANGE_Pos 5 /*!< DWT FUNCTION: EMITRANGE Position */ -#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ - -#define DWT_FUNCTION_FUNCTION_Pos 0 /*!< DWT FUNCTION: FUNCTION Position */ -#define DWT_FUNCTION_FUNCTION_Msk (0xFUL << DWT_FUNCTION_FUNCTION_Pos) /*!< DWT FUNCTION: FUNCTION Mask */ - -/*@}*/ /* end of group CMSIS_DWT */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_TPI Trace Port Interface (TPI) - \brief Type definitions for the Trace Port Interface (TPI) - @{ - */ - -/** \brief Structure type to access the Trace Port Interface Register (TPI). - */ -typedef struct -{ - __IO uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ - __IO uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ - uint32_t RESERVED0[2]; - __IO uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ - uint32_t RESERVED1[55]; - __IO uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ - uint32_t RESERVED2[131]; - __I uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ - __IO uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ - __I uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ - uint32_t RESERVED3[759]; - __I uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ - __I uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ - __I uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ - uint32_t RESERVED4[1]; - __I uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ - __I uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ - __IO uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ - uint32_t RESERVED5[39]; - __IO uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ - __IO uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ - uint32_t RESERVED7[8]; - __I uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ - __I uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ -} TPI_Type; - -/* TPI Asynchronous Clock Prescaler Register Definitions */ -#define TPI_ACPR_PRESCALER_Pos 0 /*!< TPI ACPR: PRESCALER Position */ -#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL << TPI_ACPR_PRESCALER_Pos) /*!< TPI ACPR: PRESCALER Mask */ - -/* TPI Selected Pin Protocol Register Definitions */ -#define TPI_SPPR_TXMODE_Pos 0 /*!< TPI SPPR: TXMODE Position */ -#define TPI_SPPR_TXMODE_Msk (0x3UL << TPI_SPPR_TXMODE_Pos) /*!< TPI SPPR: TXMODE Mask */ - -/* TPI Formatter and Flush Status Register Definitions */ -#define TPI_FFSR_FtNonStop_Pos 3 /*!< TPI FFSR: FtNonStop Position */ -#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ - -#define TPI_FFSR_TCPresent_Pos 2 /*!< TPI FFSR: TCPresent Position */ -#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ - -#define TPI_FFSR_FtStopped_Pos 1 /*!< TPI FFSR: FtStopped Position */ -#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ - -#define TPI_FFSR_FlInProg_Pos 0 /*!< TPI FFSR: FlInProg Position */ -#define TPI_FFSR_FlInProg_Msk (0x1UL << TPI_FFSR_FlInProg_Pos) /*!< TPI FFSR: FlInProg Mask */ - -/* TPI Formatter and Flush Control Register Definitions */ -#define TPI_FFCR_TrigIn_Pos 8 /*!< TPI FFCR: TrigIn Position */ -#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ - -#define TPI_FFCR_EnFCont_Pos 1 /*!< TPI FFCR: EnFCont Position */ -#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ - -/* TPI TRIGGER Register Definitions */ -#define TPI_TRIGGER_TRIGGER_Pos 0 /*!< TPI TRIGGER: TRIGGER Position */ -#define TPI_TRIGGER_TRIGGER_Msk (0x1UL << TPI_TRIGGER_TRIGGER_Pos) /*!< TPI TRIGGER: TRIGGER Mask */ - -/* TPI Integration ETM Data Register Definitions (FIFO0) */ -#define TPI_FIFO0_ITM_ATVALID_Pos 29 /*!< TPI FIFO0: ITM_ATVALID Position */ -#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ - -#define TPI_FIFO0_ITM_bytecount_Pos 27 /*!< TPI FIFO0: ITM_bytecount Position */ -#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ - -#define TPI_FIFO0_ETM_ATVALID_Pos 26 /*!< TPI FIFO0: ETM_ATVALID Position */ -#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ - -#define TPI_FIFO0_ETM_bytecount_Pos 24 /*!< TPI FIFO0: ETM_bytecount Position */ -#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ - -#define TPI_FIFO0_ETM2_Pos 16 /*!< TPI FIFO0: ETM2 Position */ -#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ - -#define TPI_FIFO0_ETM1_Pos 8 /*!< TPI FIFO0: ETM1 Position */ -#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ - -#define TPI_FIFO0_ETM0_Pos 0 /*!< TPI FIFO0: ETM0 Position */ -#define TPI_FIFO0_ETM0_Msk (0xFFUL << TPI_FIFO0_ETM0_Pos) /*!< TPI FIFO0: ETM0 Mask */ - -/* TPI ITATBCTR2 Register Definitions */ -#define TPI_ITATBCTR2_ATREADY_Pos 0 /*!< TPI ITATBCTR2: ATREADY Position */ -#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL << TPI_ITATBCTR2_ATREADY_Pos) /*!< TPI ITATBCTR2: ATREADY Mask */ - -/* TPI Integration ITM Data Register Definitions (FIFO1) */ -#define TPI_FIFO1_ITM_ATVALID_Pos 29 /*!< TPI FIFO1: ITM_ATVALID Position */ -#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ - -#define TPI_FIFO1_ITM_bytecount_Pos 27 /*!< TPI FIFO1: ITM_bytecount Position */ -#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ - -#define TPI_FIFO1_ETM_ATVALID_Pos 26 /*!< TPI FIFO1: ETM_ATVALID Position */ -#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ - -#define TPI_FIFO1_ETM_bytecount_Pos 24 /*!< TPI FIFO1: ETM_bytecount Position */ -#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ - -#define TPI_FIFO1_ITM2_Pos 16 /*!< TPI FIFO1: ITM2 Position */ -#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ - -#define TPI_FIFO1_ITM1_Pos 8 /*!< TPI FIFO1: ITM1 Position */ -#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ - -#define TPI_FIFO1_ITM0_Pos 0 /*!< TPI FIFO1: ITM0 Position */ -#define TPI_FIFO1_ITM0_Msk (0xFFUL << TPI_FIFO1_ITM0_Pos) /*!< TPI FIFO1: ITM0 Mask */ - -/* TPI ITATBCTR0 Register Definitions */ -#define TPI_ITATBCTR0_ATREADY_Pos 0 /*!< TPI ITATBCTR0: ATREADY Position */ -#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL << TPI_ITATBCTR0_ATREADY_Pos) /*!< TPI ITATBCTR0: ATREADY Mask */ - -/* TPI Integration Mode Control Register Definitions */ -#define TPI_ITCTRL_Mode_Pos 0 /*!< TPI ITCTRL: Mode Position */ -#define TPI_ITCTRL_Mode_Msk (0x1UL << TPI_ITCTRL_Mode_Pos) /*!< TPI ITCTRL: Mode Mask */ - -/* TPI DEVID Register Definitions */ -#define TPI_DEVID_NRZVALID_Pos 11 /*!< TPI DEVID: NRZVALID Position */ -#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ - -#define TPI_DEVID_MANCVALID_Pos 10 /*!< TPI DEVID: MANCVALID Position */ -#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ - -#define TPI_DEVID_PTINVALID_Pos 9 /*!< TPI DEVID: PTINVALID Position */ -#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ - -#define TPI_DEVID_MinBufSz_Pos 6 /*!< TPI DEVID: MinBufSz Position */ -#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ - -#define TPI_DEVID_AsynClkIn_Pos 5 /*!< TPI DEVID: AsynClkIn Position */ -#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ - -#define TPI_DEVID_NrTraceInput_Pos 0 /*!< TPI DEVID: NrTraceInput Position */ -#define TPI_DEVID_NrTraceInput_Msk (0x1FUL << TPI_DEVID_NrTraceInput_Pos) /*!< TPI DEVID: NrTraceInput Mask */ - -/* TPI DEVTYPE Register Definitions */ -#define TPI_DEVTYPE_SubType_Pos 0 /*!< TPI DEVTYPE: SubType Position */ -#define TPI_DEVTYPE_SubType_Msk (0xFUL << TPI_DEVTYPE_SubType_Pos) /*!< TPI DEVTYPE: SubType Mask */ - -#define TPI_DEVTYPE_MajorType_Pos 4 /*!< TPI DEVTYPE: MajorType Position */ -#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ - -/*@}*/ /* end of group CMSIS_TPI */ - - -#if (__MPU_PRESENT == 1) -/** \ingroup CMSIS_core_register - \defgroup CMSIS_MPU Memory Protection Unit (MPU) - \brief Type definitions for the Memory Protection Unit (MPU) - @{ - */ - -/** \brief Structure type to access the Memory Protection Unit (MPU). - */ -typedef struct -{ - __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ - __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ - __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; - -/* MPU Type Register */ -#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register */ -#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register */ -#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register */ -#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ -#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ - -#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ -#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ - -#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ -#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ - -/* MPU Region Attribute and Size Register */ -#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ -#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ - -#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ -#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ - -#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ -#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ - -#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ -#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ - -#define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ -#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ - -#define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ -#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ - -#define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ -#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ - -#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@} end of group CMSIS_MPU */ -#endif - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) - \brief Type definitions for the Core Debug Registers - @{ - */ - -/** \brief Structure type to access the Core Debug Register (CoreDebug). - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ - -/*@} end of group CMSIS_CoreDebug */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_core_base Core Definitions - \brief Definitions for base addresses, unions, and structures. - @{ - */ - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ -#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ -#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ -#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ - -#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ -#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ -#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ -#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ -#endif - -/*@} */ - - - -/******************************************************************************* - * Hardware Abstraction Layer - Core Function Interface contains: - - Core NVIC Functions - - Core SysTick Functions - - Core Debug Functions - - Core Register Access Functions - ******************************************************************************/ -/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference -*/ - - - -/* ########################## NVIC functions #################################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_NVICFunctions NVIC Functions - \brief Functions that manage interrupts and exceptions via the NVIC. - @{ - */ - -/** \brief Set Priority Grouping - - The function sets the priority grouping field using the required unlock sequence. - The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. - Only values from 0..7 are used. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. - - \param [in] PriorityGroup Priority grouping field. - */ -__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - - -/** \brief Get Priority Grouping - - The function reads the priority grouping field from the NVIC Interrupt Controller. - - \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). - */ -__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - - -/** \brief Enable External Interrupt - - The function enables a device-specific interrupt in the NVIC interrupt controller. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - - -/** \brief Disable External Interrupt - - The function disables a device-specific interrupt in the NVIC interrupt controller. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - - -/** \brief Get Pending Interrupt - - The function reads the pending register in the NVIC and returns the pending bit - for the specified interrupt. - - \param [in] IRQn Interrupt number. - - \return 0 Interrupt status is not pending. - \return 1 Interrupt status is pending. - */ -__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - - -/** \brief Set Pending Interrupt - - The function sets the pending bit of an external interrupt. - - \param [in] IRQn Interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - - -/** \brief Clear Pending Interrupt - - The function clears the pending bit of an external interrupt. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - - -/** \brief Get Active Interrupt - - The function reads the active register in NVIC and returns the active bit. - - \param [in] IRQn Interrupt number. - - \return 0 Interrupt status is not active. - \return 1 Interrupt status is active. - */ -__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - - -/** \brief Set Interrupt Priority - - The function sets the priority of an interrupt. - - \note The priority cannot be set for every core interrupt. - - \param [in] IRQn Interrupt number. - \param [in] priority Priority to set. - */ -__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - - -/** \brief Get Interrupt Priority - - The function reads the priority of an interrupt. The interrupt - number can be positive to specify an external (device specific) - interrupt, or negative to specify an internal (core) interrupt. - - - \param [in] IRQn Interrupt number. - \return Interrupt Priority. Value is aligned automatically to the implemented - priority bits of the microcontroller. - */ -__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** \brief Encode Priority - - The function encodes the priority for an interrupt with the given priority group, - preemptive priority value, and subpriority value. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. - - \param [in] PriorityGroup Used priority group. - \param [in] PreemptPriority Preemptive priority value (starting from 0). - \param [in] SubPriority Subpriority value (starting from 0). - \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). - */ -__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** \brief Decode Priority - - The function decodes an interrupt priority value with a given priority group to - preemptive priority value and subpriority value. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - - \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). - \param [in] PriorityGroup Used priority group. - \param [out] pPreemptPriority Preemptive priority value (starting from 0). - \param [out] pSubPriority Subpriority value (starting from 0). - */ -__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - -/** \brief System Reset - - The function initiates a system reset request to reset the MCU. - */ -__STATIC_INLINE void NVIC_SystemReset(void) -{ - __DSB(); /* Ensure all outstanding memory accesses included - buffered write are completed before reset */ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@} end of CMSIS_Core_NVICFunctions */ - - - -/* ################################## SysTick function ############################################ */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_SysTickFunctions SysTick Functions - \brief Functions that configure the System. - @{ - */ - -#if (__Vendor_SysTickConfig == 0) - -/** \brief System Tick Configuration - - The function initializes the System Timer and its interrupt, and starts the System Tick Timer. - Counter is in free running mode to generate periodic interrupts. - - \param [in] ticks Number of ticks between two interrupts. - - \return 0 Function succeeded. - \return 1 Function failed. - - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function SysTick_Config is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - - */ -__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = ticks - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ - SysTick->VAL = 0; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0); /* Function successful */ -} - -#endif - -/*@} end of CMSIS_Core_SysTickFunctions */ - - - -/* ##################################### Debug In/Output function ########################################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_core_DebugFunctions ITM Functions - \brief Functions that access the ITM debug interface. - @{ - */ - -extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ -#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ - - -/** \brief ITM Send Character - - The function transmits a character via the ITM channel 0, and - \li Just returns when no debugger is connected that has booked the output. - \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. - - \param [in] ch Character to transmit. - - \returns Character to transmit. - */ -__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) -{ - if ((ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ - (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - - -/** \brief ITM Receive Character - - The function inputs a character via the external variable \ref ITM_RxBuffer. - - \return Received character. - \return -1 No character pending. - */ -__STATIC_INLINE int32_t ITM_ReceiveChar (void) { - int32_t ch = -1; /* no character available */ - - if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { - ch = ITM_RxBuffer; - ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ - } - - return (ch); -} - - -/** \brief ITM Check Character - - The function checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. - - \return 0 No character available. - \return 1 Character available. - */ -__STATIC_INLINE int32_t ITM_CheckChar (void) { - - if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { - return (0); /* no character available */ - } else { - return (1); /* character available */ - } -} - -/*@} end of CMSIS_core_DebugFunctions */ - -#endif /* __CORE_CM3_H_DEPENDANT */ - -#endif /* __CMSIS_GENERIC */ - -#ifdef __cplusplus -} -#endif diff --git a/src/lib/mathlib/CMSIS/Include/core_cm4.h b/src/lib/mathlib/CMSIS/Include/core_cm4.h deleted file mode 100644 index 93efd3a7ae..0000000000 --- a/src/lib/mathlib/CMSIS/Include/core_cm4.h +++ /dev/null @@ -1,1772 +0,0 @@ -/**************************************************************************//** - * @file core_cm4.h - * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File - * @version V3.20 - * @date 25. February 2013 - * - * @note - * - ******************************************************************************/ -/* Copyright (c) 2009 - 2013 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef __CORE_CM4_H_GENERIC -#define __CORE_CM4_H_GENERIC - -/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions - CMSIS violates the following MISRA-C:2004 rules: - - \li Required Rule 8.5, object/function definition in header file.
- Function definitions in header files are used to allow 'inlining'. - - \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
- Unions are used for effective representation of core registers. - - \li Advisory Rule 19.7, Function-like macro defined.
- Function-like macros are used to allow more efficient code. - */ - - -/******************************************************************************* - * CMSIS definitions - ******************************************************************************/ -/** \ingroup Cortex_M4 - @{ - */ - -/* CMSIS CM4 definitions */ -#define __CM4_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ -#define __CM4_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ -#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16) | \ - __CM4_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x04) /*!< Cortex-M Core */ - - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - #define __STATIC_INLINE static __inline - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ - #define __STATIC_INLINE static inline - -#elif defined ( __TMS470__ ) - #define __ASM __asm /*!< asm keyword for TI CCS Compiler */ - #define __STATIC_INLINE static inline - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - #define __STATIC_INLINE static inline - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - #define __STATIC_INLINE static inline - -#endif - -/** __FPU_USED indicates whether an FPU is used or not. For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. -*/ -#if defined ( __CC_ARM ) - #if defined __TARGET_FPU_VFP - #if (__FPU_PRESENT == 1) - #define __FPU_USED 1 - #else - #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #define __FPU_USED 0 - #endif - #else - #define __FPU_USED 0 - #endif - -#elif defined ( __ICCARM__ ) - #if defined __ARMVFP__ - #if (__FPU_PRESENT == 1) - #define __FPU_USED 1 - #else - #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #define __FPU_USED 0 - #endif - #else - #define __FPU_USED 0 - #endif - -#elif defined ( __TMS470__ ) - #if defined __TI_VFP_SUPPORT__ - #if (__FPU_PRESENT == 1) - #define __FPU_USED 1 - #else - #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #define __FPU_USED 0 - #endif - #else - #define __FPU_USED 0 - #endif - -#elif defined ( __GNUC__ ) - #if defined (__VFP_FP__) && !defined(__SOFTFP__) - #if (__FPU_PRESENT == 1) - #define __FPU_USED 1 - #else - #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #define __FPU_USED 0 - #endif - #else - #define __FPU_USED 0 - #endif - -#elif defined ( __TASKING__ ) - #if defined __FPU_VFP__ - #if (__FPU_PRESENT == 1) - #define __FPU_USED 1 - #else - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #define __FPU_USED 0 - #endif - #else - #define __FPU_USED 0 - #endif -#endif - -#include /* standard types definitions */ -#include "core_cmInstr.h" /* Core Instruction Access */ -#include "core_cmFunc.h" /* Core Function Access */ -#include "core_cm4_simd.h" /* Compiler specific SIMD Intrinsics */ - -#endif /* __CORE_CM4_H_GENERIC */ - -#ifndef __CMSIS_GENERIC - -#ifndef __CORE_CM4_H_DEPENDANT -#define __CORE_CM4_H_DEPENDANT - -/* check device defines and use defaults */ -#if defined __CHECK_DEVICE_DEFINES - #ifndef __CM4_REV - #define __CM4_REV 0x0000 - #warning "__CM4_REV not defined in device header file; using default!" - #endif - - #ifndef __FPU_PRESENT - #define __FPU_PRESENT 0 - #warning "__FPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __MPU_PRESENT - #define __MPU_PRESENT 0 - #warning "__MPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 - #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" - #endif - - #ifndef __Vendor_SysTickConfig - #define __Vendor_SysTickConfig 0 - #warning "__Vendor_SysTickConfig not defined in device header file; using default!" - #endif -#endif - -/* IO definitions (access restrictions to peripheral registers) */ -/** - \defgroup CMSIS_glob_defs CMSIS Global Defines - - IO Type Qualifiers are used - \li to specify the access to peripheral variables. - \li for automatic generation of peripheral register debug information. -*/ -#ifdef __cplusplus - #define __I volatile /*!< Defines 'read only' permissions */ -#else - #define __I volatile const /*!< Defines 'read only' permissions */ -#endif -#define __O volatile /*!< Defines 'write only' permissions */ -#define __IO volatile /*!< Defines 'read / write' permissions */ - -/*@} end of group Cortex_M4 */ - - - -/******************************************************************************* - * Register Abstraction - Core Register contain: - - Core Register - - Core NVIC Register - - Core SCB Register - - Core SysTick Register - - Core Debug Register - - Core MPU Register - - Core FPU Register - ******************************************************************************/ -/** \defgroup CMSIS_core_register Defines and Type Definitions - \brief Type definitions and defines for Cortex-M processor based devices. -*/ - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_CORE Status and Control Registers - \brief Core Register type definitions. - @{ - */ - -/** \brief Union type to access the Application Program Status Register (APSR). - */ -typedef union -{ - struct - { -#if (__CORTEX_M != 0x04) - uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ -#else - uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ - uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ - uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ -#endif - uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} APSR_Type; - - -/** \brief Union type to access the Interrupt Program Status Register (IPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} IPSR_Type; - - -/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ -#if (__CORTEX_M != 0x04) - uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ -#else - uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ - uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ - uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ -#endif - uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ - uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ - uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} xPSR_Type; - - -/** \brief Union type to access the Control Registers (CONTROL). - */ -typedef union -{ - struct - { - uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ - uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ - uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ - uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} CONTROL_Type; - -/*@} end of group CMSIS_CORE */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) - \brief Type definitions for the NVIC Registers - @{ - */ - -/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ -} NVIC_Type; - -/* Software Triggered Interrupt Register Definitions */ -#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ -#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ - -/*@} end of group CMSIS_NVIC */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SCB System Control Block (SCB) - \brief Type definitions for the System Control Block Registers - @{ - */ - -/** \brief Structure type to access the System Control Block (SCB). - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ - uint32_t RESERVED0[5]; - __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ -#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Vector Table Offset Register Definitions */ -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ - -/*@} end of group CMSIS_SCB */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) - \brief Type definitions for the System Control and ID Register not in the SCB - @{ - */ - -/** \brief Structure type to access the System Control and ID Register not in the SCB. - */ -typedef struct -{ - uint32_t RESERVED0[1]; - __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ - __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ -} SCnSCB_Type; - -/* Interrupt Controller Type Register Definitions */ -#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ -#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ -#define SCnSCB_ACTLR_DISOOFP_Pos 9 /*!< ACTLR: DISOOFP Position */ -#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ - -#define SCnSCB_ACTLR_DISFPCA_Pos 8 /*!< ACTLR: DISFPCA Position */ -#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ - -#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ -#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ - -#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ -#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ - -#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ -#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ - -/*@} end of group CMSIS_SCnotSCB */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SysTick System Tick Timer (SysTick) - \brief Type definitions for the System Timer Registers. - @{ - */ - -/** \brief Structure type to access the System Timer (SysTick). - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ - -/*@} end of group CMSIS_SysTick */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) - \brief Type definitions for the Instrumentation Trace Macrocell (ITM) - @{ - */ - -/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __O uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ - __I uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __O uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ - __I uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ - __I uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ - __I uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ - __I uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ - __I uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ - __I uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ - __I uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ - __I uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ - __I uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ - __I uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ - __I uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ - __I uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ -} ITM_Type; - -/* ITM Trace Privilege Register Definitions */ -#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ -#define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ - -/* ITM Trace Control Register Definitions */ -#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ -#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ - -#define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ -#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ - -#define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ -#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ - -#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ -#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ - -#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ -#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ - -#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ -#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ - -#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ -#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ - -#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ -#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ - -#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ -#define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ - -/* ITM Integration Write Register Definitions */ -#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ -#define ITM_IWR_ATVALIDM_Msk (1UL << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ - -/* ITM Integration Read Register Definitions */ -#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ -#define ITM_IRR_ATREADYM_Msk (1UL << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ - -/* ITM Integration Mode Control Register Definitions */ -#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ -#define ITM_IMCR_INTEGRATION_Msk (1UL << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ - -/* ITM Lock Status Register Definitions */ -#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ -#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ - -#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ -#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ - -#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ -#define ITM_LSR_Present_Msk (1UL << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ - -/*@}*/ /* end of group CMSIS_ITM */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) - \brief Type definitions for the Data Watchpoint and Trace (DWT) - @{ - */ - -/** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ - __IO uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ - __IO uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ - __IO uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ - __IO uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ - __IO uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ - __IO uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ - __I uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ - __IO uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ - __IO uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ - __IO uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ - uint32_t RESERVED0[1]; - __IO uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ - __IO uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ - __IO uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ - uint32_t RESERVED1[1]; - __IO uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ - __IO uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ - __IO uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ - uint32_t RESERVED2[1]; - __IO uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ - __IO uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ - __IO uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ -} DWT_Type; - -/* DWT Control Register Definitions */ -#define DWT_CTRL_NUMCOMP_Pos 28 /*!< DWT CTRL: NUMCOMP Position */ -#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ - -#define DWT_CTRL_NOTRCPKT_Pos 27 /*!< DWT CTRL: NOTRCPKT Position */ -#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ - -#define DWT_CTRL_NOEXTTRIG_Pos 26 /*!< DWT CTRL: NOEXTTRIG Position */ -#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ - -#define DWT_CTRL_NOCYCCNT_Pos 25 /*!< DWT CTRL: NOCYCCNT Position */ -#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ - -#define DWT_CTRL_NOPRFCNT_Pos 24 /*!< DWT CTRL: NOPRFCNT Position */ -#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ - -#define DWT_CTRL_CYCEVTENA_Pos 22 /*!< DWT CTRL: CYCEVTENA Position */ -#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ - -#define DWT_CTRL_FOLDEVTENA_Pos 21 /*!< DWT CTRL: FOLDEVTENA Position */ -#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ - -#define DWT_CTRL_LSUEVTENA_Pos 20 /*!< DWT CTRL: LSUEVTENA Position */ -#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ - -#define DWT_CTRL_SLEEPEVTENA_Pos 19 /*!< DWT CTRL: SLEEPEVTENA Position */ -#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ - -#define DWT_CTRL_EXCEVTENA_Pos 18 /*!< DWT CTRL: EXCEVTENA Position */ -#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ - -#define DWT_CTRL_CPIEVTENA_Pos 17 /*!< DWT CTRL: CPIEVTENA Position */ -#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ - -#define DWT_CTRL_EXCTRCENA_Pos 16 /*!< DWT CTRL: EXCTRCENA Position */ -#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ - -#define DWT_CTRL_PCSAMPLENA_Pos 12 /*!< DWT CTRL: PCSAMPLENA Position */ -#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ - -#define DWT_CTRL_SYNCTAP_Pos 10 /*!< DWT CTRL: SYNCTAP Position */ -#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ - -#define DWT_CTRL_CYCTAP_Pos 9 /*!< DWT CTRL: CYCTAP Position */ -#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ - -#define DWT_CTRL_POSTINIT_Pos 5 /*!< DWT CTRL: POSTINIT Position */ -#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ - -#define DWT_CTRL_POSTPRESET_Pos 1 /*!< DWT CTRL: POSTPRESET Position */ -#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ - -#define DWT_CTRL_CYCCNTENA_Pos 0 /*!< DWT CTRL: CYCCNTENA Position */ -#define DWT_CTRL_CYCCNTENA_Msk (0x1UL << DWT_CTRL_CYCCNTENA_Pos) /*!< DWT CTRL: CYCCNTENA Mask */ - -/* DWT CPI Count Register Definitions */ -#define DWT_CPICNT_CPICNT_Pos 0 /*!< DWT CPICNT: CPICNT Position */ -#define DWT_CPICNT_CPICNT_Msk (0xFFUL << DWT_CPICNT_CPICNT_Pos) /*!< DWT CPICNT: CPICNT Mask */ - -/* DWT Exception Overhead Count Register Definitions */ -#define DWT_EXCCNT_EXCCNT_Pos 0 /*!< DWT EXCCNT: EXCCNT Position */ -#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL << DWT_EXCCNT_EXCCNT_Pos) /*!< DWT EXCCNT: EXCCNT Mask */ - -/* DWT Sleep Count Register Definitions */ -#define DWT_SLEEPCNT_SLEEPCNT_Pos 0 /*!< DWT SLEEPCNT: SLEEPCNT Position */ -#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ - -/* DWT LSU Count Register Definitions */ -#define DWT_LSUCNT_LSUCNT_Pos 0 /*!< DWT LSUCNT: LSUCNT Position */ -#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL << DWT_LSUCNT_LSUCNT_Pos) /*!< DWT LSUCNT: LSUCNT Mask */ - -/* DWT Folded-instruction Count Register Definitions */ -#define DWT_FOLDCNT_FOLDCNT_Pos 0 /*!< DWT FOLDCNT: FOLDCNT Position */ -#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos) /*!< DWT FOLDCNT: FOLDCNT Mask */ - -/* DWT Comparator Mask Register Definitions */ -#define DWT_MASK_MASK_Pos 0 /*!< DWT MASK: MASK Position */ -#define DWT_MASK_MASK_Msk (0x1FUL << DWT_MASK_MASK_Pos) /*!< DWT MASK: MASK Mask */ - -/* DWT Comparator Function Register Definitions */ -#define DWT_FUNCTION_MATCHED_Pos 24 /*!< DWT FUNCTION: MATCHED Position */ -#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ - -#define DWT_FUNCTION_DATAVADDR1_Pos 16 /*!< DWT FUNCTION: DATAVADDR1 Position */ -#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ - -#define DWT_FUNCTION_DATAVADDR0_Pos 12 /*!< DWT FUNCTION: DATAVADDR0 Position */ -#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ - -#define DWT_FUNCTION_DATAVSIZE_Pos 10 /*!< DWT FUNCTION: DATAVSIZE Position */ -#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ - -#define DWT_FUNCTION_LNK1ENA_Pos 9 /*!< DWT FUNCTION: LNK1ENA Position */ -#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ - -#define DWT_FUNCTION_DATAVMATCH_Pos 8 /*!< DWT FUNCTION: DATAVMATCH Position */ -#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ - -#define DWT_FUNCTION_CYCMATCH_Pos 7 /*!< DWT FUNCTION: CYCMATCH Position */ -#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ - -#define DWT_FUNCTION_EMITRANGE_Pos 5 /*!< DWT FUNCTION: EMITRANGE Position */ -#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ - -#define DWT_FUNCTION_FUNCTION_Pos 0 /*!< DWT FUNCTION: FUNCTION Position */ -#define DWT_FUNCTION_FUNCTION_Msk (0xFUL << DWT_FUNCTION_FUNCTION_Pos) /*!< DWT FUNCTION: FUNCTION Mask */ - -/*@}*/ /* end of group CMSIS_DWT */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_TPI Trace Port Interface (TPI) - \brief Type definitions for the Trace Port Interface (TPI) - @{ - */ - -/** \brief Structure type to access the Trace Port Interface Register (TPI). - */ -typedef struct -{ - __IO uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ - __IO uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ - uint32_t RESERVED0[2]; - __IO uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ - uint32_t RESERVED1[55]; - __IO uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ - uint32_t RESERVED2[131]; - __I uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ - __IO uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ - __I uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ - uint32_t RESERVED3[759]; - __I uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ - __I uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ - __I uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ - uint32_t RESERVED4[1]; - __I uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ - __I uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ - __IO uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ - uint32_t RESERVED5[39]; - __IO uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ - __IO uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ - uint32_t RESERVED7[8]; - __I uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ - __I uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ -} TPI_Type; - -/* TPI Asynchronous Clock Prescaler Register Definitions */ -#define TPI_ACPR_PRESCALER_Pos 0 /*!< TPI ACPR: PRESCALER Position */ -#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL << TPI_ACPR_PRESCALER_Pos) /*!< TPI ACPR: PRESCALER Mask */ - -/* TPI Selected Pin Protocol Register Definitions */ -#define TPI_SPPR_TXMODE_Pos 0 /*!< TPI SPPR: TXMODE Position */ -#define TPI_SPPR_TXMODE_Msk (0x3UL << TPI_SPPR_TXMODE_Pos) /*!< TPI SPPR: TXMODE Mask */ - -/* TPI Formatter and Flush Status Register Definitions */ -#define TPI_FFSR_FtNonStop_Pos 3 /*!< TPI FFSR: FtNonStop Position */ -#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ - -#define TPI_FFSR_TCPresent_Pos 2 /*!< TPI FFSR: TCPresent Position */ -#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ - -#define TPI_FFSR_FtStopped_Pos 1 /*!< TPI FFSR: FtStopped Position */ -#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ - -#define TPI_FFSR_FlInProg_Pos 0 /*!< TPI FFSR: FlInProg Position */ -#define TPI_FFSR_FlInProg_Msk (0x1UL << TPI_FFSR_FlInProg_Pos) /*!< TPI FFSR: FlInProg Mask */ - -/* TPI Formatter and Flush Control Register Definitions */ -#define TPI_FFCR_TrigIn_Pos 8 /*!< TPI FFCR: TrigIn Position */ -#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ - -#define TPI_FFCR_EnFCont_Pos 1 /*!< TPI FFCR: EnFCont Position */ -#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ - -/* TPI TRIGGER Register Definitions */ -#define TPI_TRIGGER_TRIGGER_Pos 0 /*!< TPI TRIGGER: TRIGGER Position */ -#define TPI_TRIGGER_TRIGGER_Msk (0x1UL << TPI_TRIGGER_TRIGGER_Pos) /*!< TPI TRIGGER: TRIGGER Mask */ - -/* TPI Integration ETM Data Register Definitions (FIFO0) */ -#define TPI_FIFO0_ITM_ATVALID_Pos 29 /*!< TPI FIFO0: ITM_ATVALID Position */ -#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ - -#define TPI_FIFO0_ITM_bytecount_Pos 27 /*!< TPI FIFO0: ITM_bytecount Position */ -#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ - -#define TPI_FIFO0_ETM_ATVALID_Pos 26 /*!< TPI FIFO0: ETM_ATVALID Position */ -#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ - -#define TPI_FIFO0_ETM_bytecount_Pos 24 /*!< TPI FIFO0: ETM_bytecount Position */ -#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ - -#define TPI_FIFO0_ETM2_Pos 16 /*!< TPI FIFO0: ETM2 Position */ -#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ - -#define TPI_FIFO0_ETM1_Pos 8 /*!< TPI FIFO0: ETM1 Position */ -#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ - -#define TPI_FIFO0_ETM0_Pos 0 /*!< TPI FIFO0: ETM0 Position */ -#define TPI_FIFO0_ETM0_Msk (0xFFUL << TPI_FIFO0_ETM0_Pos) /*!< TPI FIFO0: ETM0 Mask */ - -/* TPI ITATBCTR2 Register Definitions */ -#define TPI_ITATBCTR2_ATREADY_Pos 0 /*!< TPI ITATBCTR2: ATREADY Position */ -#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL << TPI_ITATBCTR2_ATREADY_Pos) /*!< TPI ITATBCTR2: ATREADY Mask */ - -/* TPI Integration ITM Data Register Definitions (FIFO1) */ -#define TPI_FIFO1_ITM_ATVALID_Pos 29 /*!< TPI FIFO1: ITM_ATVALID Position */ -#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ - -#define TPI_FIFO1_ITM_bytecount_Pos 27 /*!< TPI FIFO1: ITM_bytecount Position */ -#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ - -#define TPI_FIFO1_ETM_ATVALID_Pos 26 /*!< TPI FIFO1: ETM_ATVALID Position */ -#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ - -#define TPI_FIFO1_ETM_bytecount_Pos 24 /*!< TPI FIFO1: ETM_bytecount Position */ -#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ - -#define TPI_FIFO1_ITM2_Pos 16 /*!< TPI FIFO1: ITM2 Position */ -#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ - -#define TPI_FIFO1_ITM1_Pos 8 /*!< TPI FIFO1: ITM1 Position */ -#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ - -#define TPI_FIFO1_ITM0_Pos 0 /*!< TPI FIFO1: ITM0 Position */ -#define TPI_FIFO1_ITM0_Msk (0xFFUL << TPI_FIFO1_ITM0_Pos) /*!< TPI FIFO1: ITM0 Mask */ - -/* TPI ITATBCTR0 Register Definitions */ -#define TPI_ITATBCTR0_ATREADY_Pos 0 /*!< TPI ITATBCTR0: ATREADY Position */ -#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL << TPI_ITATBCTR0_ATREADY_Pos) /*!< TPI ITATBCTR0: ATREADY Mask */ - -/* TPI Integration Mode Control Register Definitions */ -#define TPI_ITCTRL_Mode_Pos 0 /*!< TPI ITCTRL: Mode Position */ -#define TPI_ITCTRL_Mode_Msk (0x1UL << TPI_ITCTRL_Mode_Pos) /*!< TPI ITCTRL: Mode Mask */ - -/* TPI DEVID Register Definitions */ -#define TPI_DEVID_NRZVALID_Pos 11 /*!< TPI DEVID: NRZVALID Position */ -#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ - -#define TPI_DEVID_MANCVALID_Pos 10 /*!< TPI DEVID: MANCVALID Position */ -#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ - -#define TPI_DEVID_PTINVALID_Pos 9 /*!< TPI DEVID: PTINVALID Position */ -#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ - -#define TPI_DEVID_MinBufSz_Pos 6 /*!< TPI DEVID: MinBufSz Position */ -#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ - -#define TPI_DEVID_AsynClkIn_Pos 5 /*!< TPI DEVID: AsynClkIn Position */ -#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ - -#define TPI_DEVID_NrTraceInput_Pos 0 /*!< TPI DEVID: NrTraceInput Position */ -#define TPI_DEVID_NrTraceInput_Msk (0x1FUL << TPI_DEVID_NrTraceInput_Pos) /*!< TPI DEVID: NrTraceInput Mask */ - -/* TPI DEVTYPE Register Definitions */ -#define TPI_DEVTYPE_SubType_Pos 0 /*!< TPI DEVTYPE: SubType Position */ -#define TPI_DEVTYPE_SubType_Msk (0xFUL << TPI_DEVTYPE_SubType_Pos) /*!< TPI DEVTYPE: SubType Mask */ - -#define TPI_DEVTYPE_MajorType_Pos 4 /*!< TPI DEVTYPE: MajorType Position */ -#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ - -/*@}*/ /* end of group CMSIS_TPI */ - - -#if (__MPU_PRESENT == 1) -/** \ingroup CMSIS_core_register - \defgroup CMSIS_MPU Memory Protection Unit (MPU) - \brief Type definitions for the Memory Protection Unit (MPU) - @{ - */ - -/** \brief Structure type to access the Memory Protection Unit (MPU). - */ -typedef struct -{ - __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ - __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ - __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; - -/* MPU Type Register */ -#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register */ -#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register */ -#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register */ -#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ -#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ - -#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ -#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ - -#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ -#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ - -/* MPU Region Attribute and Size Register */ -#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ -#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ - -#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ -#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ - -#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ -#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ - -#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ -#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ - -#define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ -#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ - -#define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ -#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ - -#define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ -#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ - -#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@} end of group CMSIS_MPU */ -#endif - - -#if (__FPU_PRESENT == 1) -/** \ingroup CMSIS_core_register - \defgroup CMSIS_FPU Floating Point Unit (FPU) - \brief Type definitions for the Floating Point Unit (FPU) - @{ - */ - -/** \brief Structure type to access the Floating Point Unit (FPU). - */ -typedef struct -{ - uint32_t RESERVED0[1]; - __IO uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ - __IO uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ - __IO uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ - __I uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ - __I uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ -} FPU_Type; - -/* Floating-Point Context Control Register */ -#define FPU_FPCCR_ASPEN_Pos 31 /*!< FPCCR: ASPEN bit Position */ -#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ - -#define FPU_FPCCR_LSPEN_Pos 30 /*!< FPCCR: LSPEN Position */ -#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ - -#define FPU_FPCCR_MONRDY_Pos 8 /*!< FPCCR: MONRDY Position */ -#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ - -#define FPU_FPCCR_BFRDY_Pos 6 /*!< FPCCR: BFRDY Position */ -#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ - -#define FPU_FPCCR_MMRDY_Pos 5 /*!< FPCCR: MMRDY Position */ -#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ - -#define FPU_FPCCR_HFRDY_Pos 4 /*!< FPCCR: HFRDY Position */ -#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ - -#define FPU_FPCCR_THREAD_Pos 3 /*!< FPCCR: processor mode bit Position */ -#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ - -#define FPU_FPCCR_USER_Pos 1 /*!< FPCCR: privilege level bit Position */ -#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ - -#define FPU_FPCCR_LSPACT_Pos 0 /*!< FPCCR: Lazy state preservation active bit Position */ -#define FPU_FPCCR_LSPACT_Msk (1UL << FPU_FPCCR_LSPACT_Pos) /*!< FPCCR: Lazy state preservation active bit Mask */ - -/* Floating-Point Context Address Register */ -#define FPU_FPCAR_ADDRESS_Pos 3 /*!< FPCAR: ADDRESS bit Position */ -#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ - -/* Floating-Point Default Status Control Register */ -#define FPU_FPDSCR_AHP_Pos 26 /*!< FPDSCR: AHP bit Position */ -#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ - -#define FPU_FPDSCR_DN_Pos 25 /*!< FPDSCR: DN bit Position */ -#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ - -#define FPU_FPDSCR_FZ_Pos 24 /*!< FPDSCR: FZ bit Position */ -#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ - -#define FPU_FPDSCR_RMode_Pos 22 /*!< FPDSCR: RMode bit Position */ -#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ - -/* Media and FP Feature Register 0 */ -#define FPU_MVFR0_FP_rounding_modes_Pos 28 /*!< MVFR0: FP rounding modes bits Position */ -#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ - -#define FPU_MVFR0_Short_vectors_Pos 24 /*!< MVFR0: Short vectors bits Position */ -#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ - -#define FPU_MVFR0_Square_root_Pos 20 /*!< MVFR0: Square root bits Position */ -#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ - -#define FPU_MVFR0_Divide_Pos 16 /*!< MVFR0: Divide bits Position */ -#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ - -#define FPU_MVFR0_FP_excep_trapping_Pos 12 /*!< MVFR0: FP exception trapping bits Position */ -#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ - -#define FPU_MVFR0_Double_precision_Pos 8 /*!< MVFR0: Double-precision bits Position */ -#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ - -#define FPU_MVFR0_Single_precision_Pos 4 /*!< MVFR0: Single-precision bits Position */ -#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ - -#define FPU_MVFR0_A_SIMD_registers_Pos 0 /*!< MVFR0: A_SIMD registers bits Position */ -#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos) /*!< MVFR0: A_SIMD registers bits Mask */ - -/* Media and FP Feature Register 1 */ -#define FPU_MVFR1_FP_fused_MAC_Pos 28 /*!< MVFR1: FP fused MAC bits Position */ -#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ - -#define FPU_MVFR1_FP_HPFP_Pos 24 /*!< MVFR1: FP HPFP bits Position */ -#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ - -#define FPU_MVFR1_D_NaN_mode_Pos 4 /*!< MVFR1: D_NaN mode bits Position */ -#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ - -#define FPU_MVFR1_FtZ_mode_Pos 0 /*!< MVFR1: FtZ mode bits Position */ -#define FPU_MVFR1_FtZ_mode_Msk (0xFUL << FPU_MVFR1_FtZ_mode_Pos) /*!< MVFR1: FtZ mode bits Mask */ - -/*@} end of group CMSIS_FPU */ -#endif - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) - \brief Type definitions for the Core Debug Registers - @{ - */ - -/** \brief Structure type to access the Core Debug Register (CoreDebug). - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ - -/*@} end of group CMSIS_CoreDebug */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_core_base Core Definitions - \brief Definitions for base addresses, unions, and structures. - @{ - */ - -/* Memory mapping of Cortex-M4 Hardware */ -#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ -#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ -#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ -#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ - -#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ -#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ -#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ -#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ -#endif - -#if (__FPU_PRESENT == 1) - #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ - #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ -#endif - -/*@} */ - - - -/******************************************************************************* - * Hardware Abstraction Layer - Core Function Interface contains: - - Core NVIC Functions - - Core SysTick Functions - - Core Debug Functions - - Core Register Access Functions - ******************************************************************************/ -/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference -*/ - - - -/* ########################## NVIC functions #################################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_NVICFunctions NVIC Functions - \brief Functions that manage interrupts and exceptions via the NVIC. - @{ - */ - -/** \brief Set Priority Grouping - - The function sets the priority grouping field using the required unlock sequence. - The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. - Only values from 0..7 are used. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. - - \param [in] PriorityGroup Priority grouping field. - */ -__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - - -/** \brief Get Priority Grouping - - The function reads the priority grouping field from the NVIC Interrupt Controller. - - \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). - */ -__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - - -/** \brief Enable External Interrupt - - The function enables a device-specific interrupt in the NVIC interrupt controller. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ -/* NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); enable interrupt */ - NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ -} - - -/** \brief Disable External Interrupt - - The function disables a device-specific interrupt in the NVIC interrupt controller. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - - -/** \brief Get Pending Interrupt - - The function reads the pending register in the NVIC and returns the pending bit - for the specified interrupt. - - \param [in] IRQn Interrupt number. - - \return 0 Interrupt status is not pending. - \return 1 Interrupt status is pending. - */ -__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - - -/** \brief Set Pending Interrupt - - The function sets the pending bit of an external interrupt. - - \param [in] IRQn Interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - - -/** \brief Clear Pending Interrupt - - The function clears the pending bit of an external interrupt. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - - -/** \brief Get Active Interrupt - - The function reads the active register in NVIC and returns the active bit. - - \param [in] IRQn Interrupt number. - - \return 0 Interrupt status is not active. - \return 1 Interrupt status is active. - */ -__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - - -/** \brief Set Interrupt Priority - - The function sets the priority of an interrupt. - - \note The priority cannot be set for every core interrupt. - - \param [in] IRQn Interrupt number. - \param [in] priority Priority to set. - */ -__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - - -/** \brief Get Interrupt Priority - - The function reads the priority of an interrupt. The interrupt - number can be positive to specify an external (device specific) - interrupt, or negative to specify an internal (core) interrupt. - - - \param [in] IRQn Interrupt number. - \return Interrupt Priority. Value is aligned automatically to the implemented - priority bits of the microcontroller. - */ -__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** \brief Encode Priority - - The function encodes the priority for an interrupt with the given priority group, - preemptive priority value, and subpriority value. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. - - \param [in] PriorityGroup Used priority group. - \param [in] PreemptPriority Preemptive priority value (starting from 0). - \param [in] SubPriority Subpriority value (starting from 0). - \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). - */ -__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** \brief Decode Priority - - The function decodes an interrupt priority value with a given priority group to - preemptive priority value and subpriority value. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - - \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). - \param [in] PriorityGroup Used priority group. - \param [out] pPreemptPriority Preemptive priority value (starting from 0). - \param [out] pSubPriority Subpriority value (starting from 0). - */ -__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - -/** \brief System Reset - - The function initiates a system reset request to reset the MCU. - */ -__STATIC_INLINE void NVIC_SystemReset(void) -{ - __DSB(); /* Ensure all outstanding memory accesses included - buffered write are completed before reset */ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@} end of CMSIS_Core_NVICFunctions */ - - - -/* ################################## SysTick function ############################################ */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_SysTickFunctions SysTick Functions - \brief Functions that configure the System. - @{ - */ - -#if (__Vendor_SysTickConfig == 0) - -/** \brief System Tick Configuration - - The function initializes the System Timer and its interrupt, and starts the System Tick Timer. - Counter is in free running mode to generate periodic interrupts. - - \param [in] ticks Number of ticks between two interrupts. - - \return 0 Function succeeded. - \return 1 Function failed. - - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function SysTick_Config is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - - */ -__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = ticks - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ - SysTick->VAL = 0; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0); /* Function successful */ -} - -#endif - -/*@} end of CMSIS_Core_SysTickFunctions */ - - - -/* ##################################### Debug In/Output function ########################################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_core_DebugFunctions ITM Functions - \brief Functions that access the ITM debug interface. - @{ - */ - -extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ -#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ - - -/** \brief ITM Send Character - - The function transmits a character via the ITM channel 0, and - \li Just returns when no debugger is connected that has booked the output. - \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. - - \param [in] ch Character to transmit. - - \returns Character to transmit. - */ -__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) -{ - if ((ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ - (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - - -/** \brief ITM Receive Character - - The function inputs a character via the external variable \ref ITM_RxBuffer. - - \return Received character. - \return -1 No character pending. - */ -__STATIC_INLINE int32_t ITM_ReceiveChar (void) { - int32_t ch = -1; /* no character available */ - - if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { - ch = ITM_RxBuffer; - ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ - } - - return (ch); -} - - -/** \brief ITM Check Character - - The function checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. - - \return 0 No character available. - \return 1 Character available. - */ -__STATIC_INLINE int32_t ITM_CheckChar (void) { - - if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { - return (0); /* no character available */ - } else { - return (1); /* character available */ - } -} - -/*@} end of CMSIS_core_DebugFunctions */ - -#endif /* __CORE_CM4_H_DEPENDANT */ - -#endif /* __CMSIS_GENERIC */ - -#ifdef __cplusplus -} -#endif diff --git a/src/lib/mathlib/CMSIS/Include/core_cm4_simd.h b/src/lib/mathlib/CMSIS/Include/core_cm4_simd.h deleted file mode 100644 index af1831ee17..0000000000 --- a/src/lib/mathlib/CMSIS/Include/core_cm4_simd.h +++ /dev/null @@ -1,673 +0,0 @@ -/**************************************************************************//** - * @file core_cm4_simd.h - * @brief CMSIS Cortex-M4 SIMD Header File - * @version V3.20 - * @date 25. February 2013 - * - * @note - * - ******************************************************************************/ -/* Copyright (c) 2009 - 2013 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef __CORE_CM4_SIMD_H -#define __CORE_CM4_SIMD_H - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - - -/* ################### Compiler specific Intrinsics ########################### */ -/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics - Access to dedicated SIMD instructions - @{ -*/ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ -#define __SADD8 __sadd8 -#define __QADD8 __qadd8 -#define __SHADD8 __shadd8 -#define __UADD8 __uadd8 -#define __UQADD8 __uqadd8 -#define __UHADD8 __uhadd8 -#define __SSUB8 __ssub8 -#define __QSUB8 __qsub8 -#define __SHSUB8 __shsub8 -#define __USUB8 __usub8 -#define __UQSUB8 __uqsub8 -#define __UHSUB8 __uhsub8 -#define __SADD16 __sadd16 -#define __QADD16 __qadd16 -#define __SHADD16 __shadd16 -#define __UADD16 __uadd16 -#define __UQADD16 __uqadd16 -#define __UHADD16 __uhadd16 -#define __SSUB16 __ssub16 -#define __QSUB16 __qsub16 -#define __SHSUB16 __shsub16 -#define __USUB16 __usub16 -#define __UQSUB16 __uqsub16 -#define __UHSUB16 __uhsub16 -#define __SASX __sasx -#define __QASX __qasx -#define __SHASX __shasx -#define __UASX __uasx -#define __UQASX __uqasx -#define __UHASX __uhasx -#define __SSAX __ssax -#define __QSAX __qsax -#define __SHSAX __shsax -#define __USAX __usax -#define __UQSAX __uqsax -#define __UHSAX __uhsax -#define __USAD8 __usad8 -#define __USADA8 __usada8 -#define __SSAT16 __ssat16 -#define __USAT16 __usat16 -#define __UXTB16 __uxtb16 -#define __UXTAB16 __uxtab16 -#define __SXTB16 __sxtb16 -#define __SXTAB16 __sxtab16 -#define __SMUAD __smuad -#define __SMUADX __smuadx -#define __SMLAD __smlad -#define __SMLADX __smladx -#define __SMLALD __smlald -#define __SMLALDX __smlaldx -#define __SMUSD __smusd -#define __SMUSDX __smusdx -#define __SMLSD __smlsd -#define __SMLSDX __smlsdx -#define __SMLSLD __smlsld -#define __SMLSLDX __smlsldx -#define __SEL __sel -#define __QADD __qadd -#define __QSUB __qsub - -#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ - ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) - -#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ - ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) - -#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ - ((int64_t)(ARG3) << 32) ) >> 32)) - -/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ - - - -#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ -#include - -/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ - - - -#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ -/* TI CCS specific functions */ - -/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ -#include - -/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ - - - -#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#define __SSAT16(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - -#define __USAT16(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1) -{ - uint32_t result; - - __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1) -{ - uint32_t result; - - __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#define __SMLALD(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ - __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ - (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ - }) - -#define __SMLALDX(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ - __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ - (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#define __SMLSLD(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ - __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ - (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ - }) - -#define __SMLSLDX(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ - __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ - (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -#define __PKHBT(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ - __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ - __RES; \ - }) - -#define __PKHTB(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ - if (ARG3 == 0) \ - __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ - else \ - __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ - __RES; \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) -{ - int32_t result; - - __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ - - - -#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ -/* TASKING carm specific functions */ - - -/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ -/* not yet supported */ -/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ - - -#endif - -/*@} end of group CMSIS_SIMD_intrinsics */ - - -#endif /* __CORE_CM4_SIMD_H */ - -#ifdef __cplusplus -} -#endif diff --git a/src/lib/mathlib/CMSIS/Include/core_cmFunc.h b/src/lib/mathlib/CMSIS/Include/core_cmFunc.h deleted file mode 100644 index 139bc3c5ec..0000000000 --- a/src/lib/mathlib/CMSIS/Include/core_cmFunc.h +++ /dev/null @@ -1,636 +0,0 @@ -/**************************************************************************//** - * @file core_cmFunc.h - * @brief CMSIS Cortex-M Core Function Access Header File - * @version V3.20 - * @date 25. February 2013 - * - * @note - * - ******************************************************************************/ -/* Copyright (c) 2009 - 2013 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#ifndef __CORE_CMFUNC_H -#define __CORE_CMFUNC_H - - -/* ########################### Core Function Access ########################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions - @{ - */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#if (__ARMCC_VERSION < 400677) - #error "Please use ARM Compiler Toolchain V4.0.677 or later!" -#endif - -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - -/** \brief Get Control Register - - This function returns the content of the Control Register. - - \return Control Register value - */ -__STATIC_INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - - -/** \brief Set Control Register - - This function writes the given value to the Control Register. - - \param [in] control Control Register value to set - */ -__STATIC_INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - - -/** \brief Get IPSR Register - - This function returns the content of the IPSR Register. - - \return IPSR Register value - */ -__STATIC_INLINE uint32_t __get_IPSR(void) -{ - register uint32_t __regIPSR __ASM("ipsr"); - return(__regIPSR); -} - - -/** \brief Get APSR Register - - This function returns the content of the APSR Register. - - \return APSR Register value - */ -__STATIC_INLINE uint32_t __get_APSR(void) -{ - register uint32_t __regAPSR __ASM("apsr"); - return(__regAPSR); -} - - -/** \brief Get xPSR Register - - This function returns the content of the xPSR Register. - - \return xPSR Register value - */ -__STATIC_INLINE uint32_t __get_xPSR(void) -{ - register uint32_t __regXPSR __ASM("xpsr"); - return(__regXPSR); -} - - -/** \brief Get Process Stack Pointer - - This function returns the current value of the Process Stack Pointer (PSP). - - \return PSP Register value - */ -__STATIC_INLINE uint32_t __get_PSP(void) -{ - register uint32_t __regProcessStackPointer __ASM("psp"); - return(__regProcessStackPointer); -} - - -/** \brief Set Process Stack Pointer - - This function assigns the given value to the Process Stack Pointer (PSP). - - \param [in] topOfProcStack Process Stack Pointer value to set - */ -__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) -{ - register uint32_t __regProcessStackPointer __ASM("psp"); - __regProcessStackPointer = topOfProcStack; -} - - -/** \brief Get Main Stack Pointer - - This function returns the current value of the Main Stack Pointer (MSP). - - \return MSP Register value - */ -__STATIC_INLINE uint32_t __get_MSP(void) -{ - register uint32_t __regMainStackPointer __ASM("msp"); - return(__regMainStackPointer); -} - - -/** \brief Set Main Stack Pointer - - This function assigns the given value to the Main Stack Pointer (MSP). - - \param [in] topOfMainStack Main Stack Pointer value to set - */ -__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) -{ - register uint32_t __regMainStackPointer __ASM("msp"); - __regMainStackPointer = topOfMainStack; -} - - -/** \brief Get Priority Mask - - This function returns the current state of the priority mask bit from the Priority Mask Register. - - \return Priority Mask value - */ -__STATIC_INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - - -/** \brief Set Priority Mask - - This function assigns the given value to the Priority Mask Register. - - \param [in] priMask Priority Mask - */ -__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - - -#if (__CORTEX_M >= 0x03) - -/** \brief Enable FIQ - - This function enables FIQ interrupts by clearing the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -#define __enable_fault_irq __enable_fiq - - -/** \brief Disable FIQ - - This function disables FIQ interrupts by setting the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -#define __disable_fault_irq __disable_fiq - - -/** \brief Get Base Priority - - This function returns the current value of the Base Priority register. - - \return Base Priority register value - */ -__STATIC_INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - - -/** \brief Set Base Priority - - This function assigns the given value to the Base Priority register. - - \param [in] basePri Base Priority value to set - */ -__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0xff); -} - - -/** \brief Get Fault Mask - - This function returns the current value of the Fault Mask register. - - \return Fault Mask register value - */ -__STATIC_INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - - -/** \brief Set Fault Mask - - This function assigns the given value to the Fault Mask register. - - \param [in] faultMask Fault Mask value to set - */ -__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & (uint32_t)1); -} - -#endif /* (__CORTEX_M >= 0x03) */ - - -#if (__CORTEX_M == 0x04) - -/** \brief Get FPSCR - - This function returns the current value of the Floating Point Status/Control register. - - \return Floating Point Status/Control register value - */ -__STATIC_INLINE uint32_t __get_FPSCR(void) -{ -#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - register uint32_t __regfpscr __ASM("fpscr"); - return(__regfpscr); -#else - return(0); -#endif -} - - -/** \brief Set FPSCR - - This function assigns the given value to the Floating Point Status/Control register. - - \param [in] fpscr Floating Point Status/Control value to set - */ -__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) -{ -#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - register uint32_t __regfpscr __ASM("fpscr"); - __regfpscr = (fpscr); -#endif -} - -#endif /* (__CORTEX_M == 0x04) */ - - -#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#include - - -#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ -/* TI CCS specific functions */ - -#include - - -#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/** \brief Enable IRQ Interrupts - - This function enables IRQ interrupts by clearing the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void) -{ - __ASM volatile ("cpsie i" : : : "memory"); -} - - -/** \brief Disable IRQ Interrupts - - This function disables IRQ interrupts by setting the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void) -{ - __ASM volatile ("cpsid i" : : : "memory"); -} - - -/** \brief Get Control Register - - This function returns the content of the Control Register. - - \return Control Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, control" : "=r" (result) ); - return(result); -} - - -/** \brief Set Control Register - - This function writes the given value to the Control Register. - - \param [in] control Control Register value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control) -{ - __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); -} - - -/** \brief Get IPSR Register - - This function returns the content of the IPSR Register. - - \return IPSR Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - return(result); -} - - -/** \brief Get APSR Register - - This function returns the content of the APSR Register. - - \return APSR Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, apsr" : "=r" (result) ); - return(result); -} - - -/** \brief Get xPSR Register - - This function returns the content of the xPSR Register. - - \return xPSR Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); - return(result); -} - - -/** \brief Get Process Stack Pointer - - This function returns the current value of the Process Stack Pointer (PSP). - - \return PSP Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, psp\n" : "=r" (result) ); - return(result); -} - - -/** \brief Set Process Stack Pointer - - This function assigns the given value to the Process Stack Pointer (PSP). - - \param [in] topOfProcStack Process Stack Pointer value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) -{ - __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) : "sp"); -} - - -/** \brief Get Main Stack Pointer - - This function returns the current value of the Main Stack Pointer (MSP). - - \return MSP Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, msp\n" : "=r" (result) ); - return(result); -} - - -/** \brief Set Main Stack Pointer - - This function assigns the given value to the Main Stack Pointer (MSP). - - \param [in] topOfMainStack Main Stack Pointer value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) -{ - __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) : "sp"); -} - - -/** \brief Get Priority Mask - - This function returns the current state of the priority mask bit from the Priority Mask Register. - - \return Priority Mask value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, primask" : "=r" (result) ); - return(result); -} - - -/** \brief Set Priority Mask - - This function assigns the given value to the Priority Mask Register. - - \param [in] priMask Priority Mask - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask) -{ - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); -} - - -#if (__CORTEX_M >= 0x03) - -/** \brief Enable FIQ - - This function enables FIQ interrupts by clearing the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void) -{ - __ASM volatile ("cpsie f" : : : "memory"); -} - - -/** \brief Disable FIQ - - This function disables FIQ interrupts by setting the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void) -{ - __ASM volatile ("cpsid f" : : : "memory"); -} - - -/** \brief Get Base Priority - - This function returns the current value of the Base Priority register. - - \return Base Priority register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); - return(result); -} - - -/** \brief Set Base Priority - - This function assigns the given value to the Base Priority register. - - \param [in] basePri Base Priority value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value) -{ - __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory"); -} - - -/** \brief Get Fault Mask - - This function returns the current value of the Fault Mask register. - - \return Fault Mask register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); - return(result); -} - - -/** \brief Set Fault Mask - - This function assigns the given value to the Fault Mask register. - - \param [in] faultMask Fault Mask value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); -} - -#endif /* (__CORTEX_M >= 0x03) */ - - -#if (__CORTEX_M == 0x04) - -/** \brief Get FPSCR - - This function returns the current value of the Floating Point Status/Control register. - - \return Floating Point Status/Control register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void) -{ -#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - uint32_t result; - - /* Empty asm statement works as a scheduling barrier */ - __ASM volatile (""); - __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); - __ASM volatile (""); - return(result); -#else - return(0); -#endif -} - - -/** \brief Set FPSCR - - This function assigns the given value to the Floating Point Status/Control register. - - \param [in] fpscr Floating Point Status/Control value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr) -{ -#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - /* Empty asm statement works as a scheduling barrier */ - __ASM volatile (""); - __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc"); - __ASM volatile (""); -#endif -} - -#endif /* (__CORTEX_M == 0x04) */ - - -#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - -/*@} end of CMSIS_Core_RegAccFunctions */ - - -#endif /* __CORE_CMFUNC_H */ diff --git a/src/lib/mathlib/CMSIS/Include/core_cmInstr.h b/src/lib/mathlib/CMSIS/Include/core_cmInstr.h deleted file mode 100644 index 8946c2c492..0000000000 --- a/src/lib/mathlib/CMSIS/Include/core_cmInstr.h +++ /dev/null @@ -1,688 +0,0 @@ -/**************************************************************************//** - * @file core_cmInstr.h - * @brief CMSIS Cortex-M Core Instruction Access Header File - * @version V3.20 - * @date 05. March 2013 - * - * @note - * - ******************************************************************************/ -/* Copyright (c) 2009 - 2013 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#ifndef __CORE_CMINSTR_H -#define __CORE_CMINSTR_H - - -/* ########################## Core Instruction Access ######################### */ -/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface - Access to dedicated instructions - @{ -*/ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#if (__ARMCC_VERSION < 400677) - #error "Please use ARM Compiler Toolchain V4.0.677 or later!" -#endif - - -/** \brief No Operation - - No Operation does nothing. This instruction can be used for code alignment purposes. - */ -#define __NOP __nop - - -/** \brief Wait For Interrupt - - Wait For Interrupt is a hint instruction that suspends execution - until one of a number of events occurs. - */ -#define __WFI __wfi - - -/** \brief Wait For Event - - Wait For Event is a hint instruction that permits the processor to enter - a low-power state until one of a number of events occurs. - */ -#define __WFE __wfe - - -/** \brief Send Event - - Send Event is a hint instruction. It causes an event to be signaled to the CPU. - */ -#define __SEV __sev - - -/** \brief Instruction Synchronization Barrier - - Instruction Synchronization Barrier flushes the pipeline in the processor, - so that all instructions following the ISB are fetched from cache or - memory, after the instruction has been completed. - */ -#define __ISB() __isb(0xF) - - -/** \brief Data Synchronization Barrier - - This function acts as a special kind of Data Memory Barrier. - It completes when all explicit memory accesses before this instruction complete. - */ -#define __DSB() __dsb(0xF) - - -/** \brief Data Memory Barrier - - This function ensures the apparent order of the explicit memory operations before - and after the instruction, without ensuring their completion. - */ -#define __DMB() __dmb(0xF) - - -/** \brief Reverse byte order (32 bit) - - This function reverses the byte order in integer value. - - \param [in] value Value to reverse - \return Reversed value - */ -#define __REV __rev - - -/** \brief Reverse byte order (16 bit) - - This function reverses the byte order in two unsigned short values. - - \param [in] value Value to reverse - \return Reversed value - */ -#ifndef __NO_EMBEDDED_ASM -__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) -{ - rev16 r0, r0 - bx lr -} -#endif - -/** \brief Reverse byte order in signed short value - - This function reverses the byte order in a signed short value with sign extension to integer. - - \param [in] value Value to reverse - \return Reversed value - */ -#ifndef __NO_EMBEDDED_ASM -__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value) -{ - revsh r0, r0 - bx lr -} -#endif - - -/** \brief Rotate Right in unsigned value (32 bit) - - This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. - - \param [in] value Value to rotate - \param [in] value Number of Bits to rotate - \return Rotated value - */ -#define __ROR __ror - - -/** \brief Breakpoint - - This function causes the processor to enter Debug state. - Debug tools can use this to investigate system state when the instruction at a particular address is reached. - - \param [in] value is ignored by the processor. - If required, a debugger can use it to store additional information about the breakpoint. - */ -#define __BKPT(value) __breakpoint(value) - - -#if (__CORTEX_M >= 0x03) - -/** \brief Reverse bit order of value - - This function reverses the bit order of the given value. - - \param [in] value Value to reverse - \return Reversed value - */ -#define __RBIT __rbit - - -/** \brief LDR Exclusive (8 bit) - - This function performs a exclusive LDR command for 8 bit value. - - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -#define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) - - -/** \brief LDR Exclusive (16 bit) - - This function performs a exclusive LDR command for 16 bit values. - - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -#define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) - - -/** \brief LDR Exclusive (32 bit) - - This function performs a exclusive LDR command for 32 bit values. - - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -#define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) - - -/** \brief STR Exclusive (8 bit) - - This function performs a exclusive STR command for 8 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXB(value, ptr) __strex(value, ptr) - - -/** \brief STR Exclusive (16 bit) - - This function performs a exclusive STR command for 16 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXH(value, ptr) __strex(value, ptr) - - -/** \brief STR Exclusive (32 bit) - - This function performs a exclusive STR command for 32 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXW(value, ptr) __strex(value, ptr) - - -/** \brief Remove the exclusive lock - - This function removes the exclusive lock which is created by LDREX. - - */ -#define __CLREX __clrex - - -/** \brief Signed Saturate - - This function saturates a signed value. - - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (1..32) - \return Saturated value - */ -#define __SSAT __ssat - - -/** \brief Unsigned Saturate - - This function saturates an unsigned value. - - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (0..31) - \return Saturated value - */ -#define __USAT __usat - - -/** \brief Count leading zeros - - This function counts the number of leading zeros of a data value. - - \param [in] value Value to count the leading zeros - \return number of leading zeros in value - */ -#define __CLZ __clz - -#endif /* (__CORTEX_M >= 0x03) */ - - - -#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#include - - -#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ -/* TI CCS specific functions */ - -#include - - -#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/* Define macros for porting to both thumb1 and thumb2. - * For thumb1, use low register (r0-r7), specified by constrant "l" - * Otherwise, use general registers, specified by constrant "r" */ -#if defined (__thumb__) && !defined (__thumb2__) -#define __CMSIS_GCC_OUT_REG(r) "=l" (r) -#define __CMSIS_GCC_USE_REG(r) "l" (r) -#else -#define __CMSIS_GCC_OUT_REG(r) "=r" (r) -#define __CMSIS_GCC_USE_REG(r) "r" (r) -#endif - -/** \brief No Operation - - No Operation does nothing. This instruction can be used for code alignment purposes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void) -{ - __ASM volatile ("nop"); -} - - -/** \brief Wait For Interrupt - - Wait For Interrupt is a hint instruction that suspends execution - until one of a number of events occurs. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void) -{ - __ASM volatile ("wfi"); -} - - -/** \brief Wait For Event - - Wait For Event is a hint instruction that permits the processor to enter - a low-power state until one of a number of events occurs. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void) -{ - __ASM volatile ("wfe"); -} - - -/** \brief Send Event - - Send Event is a hint instruction. It causes an event to be signaled to the CPU. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void) -{ - __ASM volatile ("sev"); -} - - -/** \brief Instruction Synchronization Barrier - - Instruction Synchronization Barrier flushes the pipeline in the processor, - so that all instructions following the ISB are fetched from cache or - memory, after the instruction has been completed. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void) -{ - __ASM volatile ("isb"); -} - - -/** \brief Data Synchronization Barrier - - This function acts as a special kind of Data Memory Barrier. - It completes when all explicit memory accesses before this instruction complete. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void) -{ - __ASM volatile ("dsb"); -} - - -/** \brief Data Memory Barrier - - This function ensures the apparent order of the explicit memory operations before - and after the instruction, without ensuring their completion. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void) -{ - __ASM volatile ("dmb"); -} - - -/** \brief Reverse byte order (32 bit) - - This function reverses the byte order in integer value. - - \param [in] value Value to reverse - \return Reversed value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value) -{ -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) - return __builtin_bswap32(value); -#else - uint32_t result; - - __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -#endif -} - - -/** \brief Reverse byte order (16 bit) - - This function reverses the byte order in two unsigned short values. - - \param [in] value Value to reverse - \return Reversed value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value) -{ - uint32_t result; - - __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -} - - -/** \brief Reverse byte order in signed short value - - This function reverses the byte order in a signed short value with sign extension to integer. - - \param [in] value Value to reverse - \return Reversed value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value) -{ -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - return (short)__builtin_bswap16(value); -#else - uint32_t result; - - __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -#endif -} - - -/** \brief Rotate Right in unsigned value (32 bit) - - This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. - - \param [in] value Value to rotate - \param [in] value Number of Bits to rotate - \return Rotated value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2) -{ - return (op1 >> op2) | (op1 << (32 - op2)); -} - - -/** \brief Breakpoint - - This function causes the processor to enter Debug state. - Debug tools can use this to investigate system state when the instruction at a particular address is reached. - - \param [in] value is ignored by the processor. - If required, a debugger can use it to store additional information about the breakpoint. - */ -#define __BKPT(value) __ASM volatile ("bkpt "#value) - - -#if (__CORTEX_M >= 0x03) - -/** \brief Reverse bit order of value - - This function reverses the bit order of the given value. - - \param [in] value Value to reverse - \return Reversed value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value) -{ - uint32_t result; - - __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - - -/** \brief LDR Exclusive (8 bit) - - This function performs a exclusive LDR command for 8 bit value. - - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr) -{ - uint32_t result; - -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); -#else - /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not - accepted by assembler. So has to use following less efficient pattern. - */ - __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); -#endif - return(result); -} - - -/** \brief LDR Exclusive (16 bit) - - This function performs a exclusive LDR command for 16 bit values. - - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr) -{ - uint32_t result; - -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); -#else - /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not - accepted by assembler. So has to use following less efficient pattern. - */ - __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); -#endif - return(result); -} - - -/** \brief LDR Exclusive (32 bit) - - This function performs a exclusive LDR command for 32 bit values. - - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr) -{ - uint32_t result; - - __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - return(result); -} - - -/** \brief STR Exclusive (8 bit) - - This function performs a exclusive STR command for 8 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) -{ - uint32_t result; - - __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - return(result); -} - - -/** \brief STR Exclusive (16 bit) - - This function performs a exclusive STR command for 16 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) -{ - uint32_t result; - - __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - return(result); -} - - -/** \brief STR Exclusive (32 bit) - - This function performs a exclusive STR command for 32 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) -{ - uint32_t result; - - __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - return(result); -} - - -/** \brief Remove the exclusive lock - - This function removes the exclusive lock which is created by LDREX. - - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void) -{ - __ASM volatile ("clrex" ::: "memory"); -} - - -/** \brief Signed Saturate - - This function saturates a signed value. - - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (1..32) - \return Saturated value - */ -#define __SSAT(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - - -/** \brief Unsigned Saturate - - This function saturates an unsigned value. - - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (0..31) - \return Saturated value - */ -#define __USAT(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - - -/** \brief Count leading zeros - - This function counts the number of leading zeros of a data value. - - \param [in] value Value to count the leading zeros - \return number of leading zeros in value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value) -{ - uint32_t result; - - __ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -#endif /* (__CORTEX_M >= 0x03) */ - - - - -#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all intrinsics, - * Including the CMSIS ones. - */ - -#endif - -/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ - -#endif /* __CORE_CMINSTR_H */ diff --git a/src/lib/mathlib/CMSIS/libarm_cortexM3l_math.a b/src/lib/mathlib/CMSIS/libarm_cortexM3l_math.a deleted file mode 100644 index 6898bc27d0f736c2c77bb036a208b34ffebe6811..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3039508 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

A6hS1Q(9D%M{r)?+HxXDZffD%Ni*)^jS>cPiF< zD%O80)`Ke6hbq>KD%OuG){`pMmnznqD%PJW)}t!crz+N~D%P(m*0UA9iS1ZE7t!j_5&#P2PpOnDB}Ku7=mIyfntAw zV!wf6|AAsZf?|JyV!wi7|AJyagJOS!V!wl8|AS&bgkpb$V!wo9|Ab;cg<^k&V!wrA z|Ak^dMlf$5@@FXaYbf?_DE4zG_ID`udnopQDE5OW_J=6;izxPwDE5;m_LnI3n<)05 zDE6Z$_NOTJt0?xbDE6}`_O~eZyD0X*DE7lB_Q$C1VZV%G|BPZkjbeX|V!w@I|BYfl zj$(g~V!w`J|Bhlmk79q1V!w}K|BqrnkYaz3V!x1L|Bzxokz#+5V!x4M|B+%pl45_7 zV!x7N|B_-qlOpavh;b_RJ1O=*DdPTvn5bfZlp^jwh?y$(Pbv0ODfU+>_FF0TUn%xu zDfVY6_G>BjZz=Y3DfV|M_IoMze<}8ZDfWjc_KPX@k16((DfX8s;{Jn}vts|5Vn3Q9 z?mvi8EB31?_OB`SvnlqsDfYW5_P;6i!zuR1DfY`L_RlHy(<%1XDfZhb_TMS?<0$jK=7XDaq< zD)w(G_H!!scPjRKD)xUW_Jb<+hbs1qD)x^m_LD01mn!y~D)yf$_M{uws9(BJMxP87lS_E#(RTPyZoEB0e6_Gc^hYb*9|EB13M_IE4x zdn@ApgB-A8Ke%FlxMIJ!V*j{eKe=LmxnjS$V*j~fKe}Rnx?;b&V*k2gKf7XoyJEk) zV*k5hKfGdpykft+V*k7%?mx(>EB4nb_S-As{(~I6Vn4oOf4*YBzGDBrVn4rPf4^eC zzZ(7l0C&ju55GTr{(St9uOEJX`1pDJA>Tgy`ta$)pATO?{P^(U^ZgI`?%}tG&mR7I ze(pnB5aQI~qlbSUzIpiN;gg3y9=>?^;o*aa{~f+}_}$@ihrb=ZcKF%hV~2kozIFK3 z;Zuh{9lmt<(cwdf{~W$^_{}+vh5Y64mBUZYaWdo|hi@EyarngH59hc&q~#(`7(Q_L zzv26a-y1$}_`BijhMyZgZuqz1+lF78*TIlK8@_D#vEjpp{~Eq)UavzwYxt|-tA?K% zK5F=x+=D7k*y&c;VlLZx?=D_;lgVg)bL=T&}Z1{#*EN;kSj)7XDiJYT>7aj~4z} z_-5gkg-;g#SomV$hvhmqMypRrpllPlYcPepL8S z;Xj4%6n<0qOyMtuuM~b#_(MvoQTRmR4}~ujeo**8;s1p16Mj$lJmK$zuM>Vw z_&DL;gl`jmP53n7&t%*z_`4*oaz-r#qG z&kg=I=G{VmHu%`!UxRNAel_^i;7@}u4SqEE(BMCV?+ku3_{`uhgRcyJGWf{gAA@fU zelhsO;17c@41O^9z~KLa?+bn}_`Klng0BmHF8H|M--2%oel7U4;Ln0D3w|v4u;9Of z?+Sh^_^jZsg0BjGD%J^v{8R8v!7l}$6#P*kUljYH;Ddty3BD)zo#1nVzX`r3_?h5i zf`19VCHR%#Q-VJUz9jgO;6sA{2)-lujo>qazX-k}_=(^nf`16UA^3&h6M{boz99I4 z-~)pH2fiQpecc_z zzXQGw_&MO?fPVwN4fr+S(||t%z6|&=;KP9b0=^6QE#R|&zXHAr_$lC{fPVtM3HT*g zhaB=pz!w2O1bh(iKfw0@zXN;@@HfEM06znK4Dc_&w*bEadW06zhI1n>{QHvqo?d;%eV0Q&;q2Y?R%`hV#Dq4$T*ANqdi`l08CjvxAc z==P!4hfW{*eCYC_$A=Cd`g`c^p|^+59{PId>Y=BHjvo4X=;oo9hfW^)ccEhfW>(bm-EdM~4m_`g7>cp*M%l9QtzT%AqHR zjvV@N=*FQJhfW;&aOlFJ2Zs(E`fupIq4$Q)8~SeOx}oQWjvM-I=(eHPhE5y$Z0NF~ z$A%6Y`fKQ}p|^(48v1JJs-dTbjvD%D=%%5UhE5v#Xy~G$hlUOs`e*2#p?8MP8Tw}E znxSWgjv4x8=$4^ZhE5s!WayHiM}`g=`eW#hp*M!k82V!9ilHZlju`r3=!T&ehE5pz zVCaIO2Zjz9`d{dNq4$N(7y4f4dZFiqju-k}=ysvkg-#dxT)p?8JO75Y}_TA^o!jurY<=vJXu zg-#XvROnKnM}-a*`cvpmp*Mxj6#7!=N}(r(juiS)=tiLzg-#UuQ0PLT2Zat4`cLRS zq4$K&6Z%f*I-%!;juZM#=r*C(giaIsOz1M9$Ak_O`b+38p|^z268cK$Dxs%@juQGw z=q90;giaFrNa!M=hlCCi`bX#p=`1fQ& zIz;FXp*w`$5IRHX3!y87o)9`h=m()2gkBIjLFfaa3xpmJIzZ_Ep!~{S`=INC zo)0=c==Y%8gI*6hJ?QhG%Yz;dIy~s_pu2!7QHo(?)X=;xrDgI*3gIq2h{ zi-R5xIymUxpnHSf4LUdI+n{TMo((!S=+~fIgI*0fHR#izOM@N_IyC6dpgV)!3_3ID z%b+WRo(wuN=*OTNgI)|eG3djf3xggEIxy(Jp!gTVuX{{`<0z85?%_+9Y2 z;B&#_;`fum+k&qJPYZq)ye#-w@UZy(VeqctTfwt}Uj?rUJ{3GF_*3wv;7h@if*%Dh z3O*D(DELqCp5QydbAsOluL(XAzbgy=61*k&O7N86C&5dCj|2}1{t>(*_(t%I;1|Iw zf=>jG2>uYfA^1Y@gy09k3xW>>4+#DbydU^J@O zj{^?}{tdhv_%{4*B=|M(YT(nrqk%sIZw9^$JQ?`05HH5Rmk1sV{11CIv|5BwdtJMebk?7-K7s{>C5jt=}BxH<50;N-x^fr|qV z2M!MW8@M;{Zs6R&w}EQ|&jyYS{2I75@M_@Hz^8#r1CIs{4g49nGw^2M%)pm{D+5mk zjtu-5xH0fz;Kaa(feQl<1`Z7T7q~C*Uf{gIcY*5y&jpSP{1&(^@LJ%sz-NKW0*?g_ z3;Y$hEAUp}tiV@+s{&62jtcw~xGC^b;H1Dufr|nU1r7@Q6SybvPT-utH-T#c&jgMM z{1Uh&@Jis6z$bxA0*?d^3H%YbBk)GxjKCLxD*{i1uNn9ua6{mQzzKm50v7}x2pkaj zA8fKLIJ0v-h%3iuOn zC*V!MnSd_=R|1{{90~Xla3kPFz=?nl!AAx>2sjY%AK*T~dw}x*-vO=zJO?-q@EhPZ zz-xfh0G|Oa13U&e4Dc7=F2GxWvjATKt^zy-I12C+;3mLJfRg|p0WJbO1ULxr58xia zJAiWl-vF)wJOele@C)D;z$<`L0G|LZ0lx-t2;dLE9e_6gX8^tcTmg6ja0K87zzu*G z04D%G09*ig0B``*|ET*>@1xE~eUG{x^*ri$)bFUe^K|M-bI~@`WAI9>RHsWs9#aHqFzOv ziux3FDe6(wp{PGmccR`zor(GqbtURa)RCwkQ8%JqM4gEG5OpEyLDYe$|4{d#-b0;- z`VMs+>N(VLsNYbxpbDl?h4gg{JZX`uTWQ^oW#LOp~!2=x!@9@IOib5P%)u0cJ6ItKL%>K4>1s8dj%pe{i@f;t5C2kH*g8>ll- zU!bl)J%Ks`^#ke#)C;H+P#>T!Ks|su0Qo=ie&qYe^O4^puSY(QJRbQw@^<9w$kUOZ zBQHljjyxRsH}Y=e+sLz#Un8$ZK8-vY`7`onb-l$WxJ@A}>WgiaZqgC-P3@o5(YfUm~wWK8ZXM`6Kd1qT zK7~9A`4jRcB249^^a7bCBO4uR%V8JO=p-@)qPP$WxG?ATL2a zf;2eXRFb=dr$HUB`Nk zbsXzA)@`iUSf{Z*V_n92jCC06FVnGMtte03Pu|8s5#CnKz z5bGb-J*;j%~itQS}(us&d2z9`PM<9q}A-9Pt}*8}S-(8u1x%8Sxl#81WZz z7x5Nx7V#Bv74Z~t6!8;r6Y&yp67dmn5%Cal5b+Oj5AhCh4)G0f4e<&+&fa zy~g{D_ZaUl-dnt{cu(Z+Oq}e&M~s`-Jxh?+@M^yf1i9@P6RE z!25vr0P{aI?}vX6zX$Ui^BeOT^BMCP^B40L^A+ zpG$~lw-8YtAyT|T6txR6w?l~KokDEs65>F&5UoBTV*Em+1%xQ>6=Hs$5G(tIxN$&; zLxVz`6_bRfO%fJ;lCW7OiE8U4;jm2-bybr@WA!BAvQHB6j!7cZIZ2e&O%jXhCyCXK zlf;guN#dw$lDOcWBoaK6M7DR5sA!)gYC0x~wVjj1uC7Vqc=sf6$u~(P`X`Cpz$7uF zcakvrCW-a^lf<5ZN#f+-BymNHu|tP z6mOKfs6EO(wWgy6_@mrufhc!zZ^$;E_<{)-VyE2bVj?&>Z09?>Z9GO z8>8JjnxfrDUD56f?r3*{C)%CujdoYGN4sk}qTOpdqusl@qTR>4qurN$(e6Zlv^zHt z?Viya?Kb+N-Rt|K-FpV2-6sd5-B+|2pRULFtdKI>>BgU8H zjPVuJ#rS5|$M}{u#`rch#rXEQVtmb>7+;Dv##huH+F)>xmz7VE34iuE;C z$NF6MSYNy&)|csw^_A7d`WDs4`c^l_`gSzM`i{C{eHYxZz64LKFWVdIt7wn))pW%A z)^^7Fc6G)2j(5lUF8N}8iT+q$ZXnh-qc_%P^u_wt_s9D748;0Q4#xVfXquR&Ya-vG ziCI=nEU{@~W0fWvsx@)ip^0RtCJO5`F{fS=%NjMYxk(fIU7Bd|Xd>0CiRtZ{nAf3+ z6`h*c+NFtu-I_S#*F<_i6D7TxSkR}58~Qb|Z9o%;2Q_g{ixU}ooG7)#iG|iUvC0-F zwpYc8Bh_)@ygg1#cEpJ+XPhXnixZ3M1*coX88riJ84|LiWXp4gGOq??9Y5H5ez_w0Qe8J>H&g ziMP+P#@mczd!l-d3$KRg(3Kc`K$ zXXumdrIyL|h1SXTRkq3Y?NyWQN2({=&pRgDvz(Ld<#m(oi|Z%b*ECMH?`)cEKjxZj zzv!N9pW>Np&+$&SSGG^K*LF;{uj`y_-`zFYexiG_{jzVeeX4)5JufiXKC^eSUG`13 zZ|I+F-#akberj;Cy-iDSPtz0J`IZFtENg;$i7mmsu`0pcP@UjD?MQGZI}_Z6bqVe{ z^$G4}jS23}O$qM(t^{|BC&8WSO>j?dPjJucNN}&{OmJ`QN^l?SPH>;`C%DrC3GR~K z1owiz1osX73GQtJ3GTy#3GQ>+6nBO`#a(Kd;$CQ-;$CH&;@)00#eJlDiu=4{iaX0W z#a&)E#l5(GihE7t6!*@iDehygDejA&DefHa6nAC&6nAaM6!*H$Dem1}Q`{%Ir?@Zs zrnsm2r?~S1Q`|Fqr?_R`6!(VyDek=kQ{1Npr?}g+MBg+$(U)&Y^v$v+`j*%deH*J1 zeGS!#zSE9GU$QgNS6G+mn^T|YTh^H9+uW4s+wV&BwRjSJsoq52^!7yGypBZQiq1se z)~-a~!R|!g8GoWLJ&@=t=}q)4=u7n7(4XkrHjwB$JecS^r%m-`=u>^AmZ`pl)~UW# zwyD1DRa1ROs;BzSJEr=woKt<}byIzd>!zwM_-8I#BqI;_EvVW>CFEG_Nvv;ab_D%I|=%4D_J22IEYH+HrP1iN6Mc1mV zx@NcOnzKsR>Z^6F$)RgWPF*Xg)3w?4y0)}Y*ETij+CG=AHG6a|#j9&Y?YcI%L)Vsf z>e`krT|3aNYps4=OAF{)aj&k;@6)xF{knGJfUX@H)U~tPG|i$<(`=S$TD5hW=CDoE z>Z+z`jn&gMmt&fi>71sO)lJhD)lbt_H%`-bG)>cvx~6FtJkzvn?=-EVeVSI&F-=?B zIZfNuHBCF-Jx#mhpQhyorfD;Jr)fstG;MwVG;PnoH0|WzH0_F>Z_9+P0l1oL0yt#c72j#X=9ROQ&W;-pDW4H>`8K@c#|AO?MaTg9Z8Pmok@-@ zT}h4u-ARsCf083DkmM-tO>)fdOLDC2PjcKikmNWtnB+LCB|9v7vcqOcc2rxF9S&Qv zqpm91(O8}Aa5<74na*TKSzWSYQGK#wbz`z)M^m!ns4LlV!ISLB_9iZz+r z^)yzedR&fFPo^`~Q&yMiSyZ3uS>2fG+0m5hIqFLFT=1lNvc0LEiuP1bO-HI{ZD*=y zS68a%cz3Gjl0Vgx8%Xuc=uPz)eW{-H{i&Wk1F4>qgQ=b?dYa#AN%L1()BJW@n%`NK z=C7|#^EWxu`~`Js{@L|u{-up+{!LA3{(Y`Af3r8uU(}xFpWBhjZEmt?`&|~T#cR=~w_CJ%9Tsgxr$yV^Wzi0HTeLF)i&oNW(H8Vs zv>W;@+O`3Uc6iXDozpY4QcH%m(3+vGvSn!7t1`4B)fw7(M~0T=%+Si~GPK3@8QPl0 z3~gsqhIY)Ap6m5BbS$xDIyP2iIvT1o9jBd{j>5W3$DI01$Fjyu$L6L? z$9`9)qs5!)nBJc0nAef%Skam3*xHrpIM|)(I1|Wpl=Nmg7W8F0Zs^Z+Y#YdQ93ISc zoYS)$rIswmLTi>|l`YG$y(-Ibq&mxS-kIenugh{QuFrC;Y0Pr$Y|3&Rb7eU$da@ij z-YiFDdzPcNBg?U_Gt05NE6Z`BJIis|pXJC4WI1N`W;tYEmSaPImSgWgmgCf5mZMG2 z_T*c#J+rLYo+Y+y&&H~3PeXOK=d?51Q&^YnnNy$bS=N~C+1!-v+3(8sw0N^U)7!H> z^E$FUD>}11Tf4G72fMR9X9C%tlHP33g1&6e4gJ}kZ3Ee!!-LtLb9#=a)RN;_XwC7g zvgLTTSLJw)ROfikJ99kcbvd5J^*Nq3jX9p3O*x)pt{l%rZ;q$3J;zhqk>gp{nd8~r zmE$?lo#VOe&++61ay&D8b3C#y$Fre7$Fp}J$8%~h$J3_g`tvQh{#n*s{}NlSe`8gy zzo9zUf7+SrFRaV;&#BM#FKf*8Z*I!Fv4xc^$d_6`i^MtzEhPgWb9Q zGl5)xNpG%yL0_)_hW=dtwt-y#;lW)0IX%x`YRU62wC4F&+4B6`tMdFus`LEkoq7K9 zx;+2l`aJ)d#ytPdrab>KSDyc(H_u<$p69Ra$n&r3%=7Q=%JZM-&huXm@= z)tkLmy{O%)&+V}4%R8<5mM*J)pxdgq2CRBuCocVfLUB14kK3`wmn6K|>%GZy&^7RYee7&MQU$5!N*VlID z>$|%0_2b?7`lUd=KBG5ZH~RAR_5Jz!o`HP*l0_TD50%vQWz**c|;GExA z;9S{X;Jk65zRcc8>$tgg_xsJ_s-y0Or? zqp8q&)K%!b;4O4kv==&SItra@I}4q=x(c1gy9=F{0)@^Qy@gJruh6-^ztFj7pwM}8 zu+VwMQsk|&7J2QqBCoTm$Xj1s^6qmLd7ImdymLE>yvsX_ zyj!}8ya&3Aysd#EZ*gytcYa@ycV&N(_r`%D@1emW?^%7i*JhdSt+r10I&9Oubyd^7 zjn&h=F6VS_S>1H+qWbCH)s54=JDR3@kGiINFLEUt zdnqv8JEM2H*XWz>UEe?5yJuj!_vGMo?-fgNpvqbtu-l3Q&Z^=-eRXl5sjfIMyS_NE zw6Qp_si`=y&s7{~ZZ8hZ?I;c`?<@{%=_(E!=q?Vl_7(@`_Z0_L_7?|k94HPP8Y~W+ z)k^|4OG%*GS`u*BN&0u}8g zftrqzz}n7|z^<;6!13;qz@=`HtoE$6(T(Q{nSyr3A#Aees zR@wB1YMXw#&Zf_)x9Q6oZTjXWo4(&=(_7kY`n(RCzM|8nZ|$<_2fJW|pwFh? z&~MYX4cPRT4QH^_@+n`Y~6j ze$iX1SGJexwH>AUy3SI4cUP%?qPtYT94OUi_Ll0huTWnbDp!5I~Q8ZovUo+&h1s@&Lh?3&hvHU&c*fR&NYqY z&Yex=&SS1}=S6S1v$DP1S=&+WT-RCd+}%~~Jkee5yc{TZ&g?CB%D!^vhW>Kr-hp!G zsljq*o29}#%Ua=GVyp0Otg7%fR9ARU*Hw7u)K_?yHCA{xH&uA|yDGdb?G@g69Tnac zofY1#T@~Jg-4)(5y%pXCeHGpt`YXKK1}eOV2P?eiES27c)=KXxTcvkFKqtI~V1z0zCTQR!XRS?S%~Rp~v^UFp3XsPxY4t@O&iO7DjL zO7Gr*O7E$`N^hHGMqrk8Mqr6;Mqp#rj6g&6jKJx-8G$+VGXl#RX9PAk%?Rvw%?Px# z&j`%xm=RdfIU}&OYewK;_l*CKiZ_qZ9O>`-_}qMM_H)*Avv2mzr~7%j`Sf#fZtk3% z-JKoo?CdP}m>tgU>@N41UGCYGEdexQA#|)H{KIh=8L){Y2pHQEm;(qQC;@{gF@*#H zjldCO%L?JViWw`C8C$ke@2kH&56CK#RmI_t^{s=SU$y(vJ9N+dL-$5-=spY&-DlCE z`wcj9C-{;33UTDVNglb+sU!DW?#P|;NA4}*$bCyZazB=i-0!s`cdj3~cZ?(VZS%UNbr?Mf>WOa*8>u~5t87;hy-7QA)xRfV2B~$$RQA@A&|HsIOm7p zrZ5DL#3A@d8iMb%A(-hyaN8Jy$L0{cu!i6VZwMCt5Zn!h;7K?HpGHIQ6MoFm#4*Q` z#~e=`b0UAtT^5eHSH)xQJ?WVHLObS0`Z0IaIObkAkGT)5W9}>Om^<~4x$D6(_eOZk zeHa~cUxO2l!cRDcIN><*gcGO}PU23ubN+<8DV%VR#1rl#>4f`EJK<*f33uB#;U1eO z+zac3`@uWm7XAr$H#p&*geTmm(FykxKGJAnq_N~kk@hthYZN}#7-Fn(e0lh z$C9TWPn~)qf9hQpPQ6#fQ|~?L)cZm|^{yJH-s|S6_knfledV8e*Mn2W;+(rro^$U~=iKM~Id?@k z=Ux-fx%Z`W?o0igyJnno56pA!sddi1^v}5)!8!LZJm;Q8@DFL=Q|=XF%DqWWx#!fB z`<9<_w}dJ8mN?};mZseI+LW8?Q|^v2<=!@@+$YwQ`_Y?nOMlAU3#QyV;gtIAiZIh&6KC4{(oFkOpJ~^OnfAb(X-}=0_R^neH-ee=Fq~=6 zqM7y$KG$9$=GvR&TzgKkc1xIRZ;5m5V`;8^ug|qR#$0>boNJ$0bL~fOt}Xq! zb}yJ~?}T&hvuLhe;0x~(vGDGb3-4WO;eF08yeq=Odre$;?@J5sOMT&8GZx+hbKyO; z7T!yL;oS%p-otR=J&P9JH~7+fg;;uTl1uM7we-H_m)AfW`y^p1(_r1RK?ifq& zZFA{;VlBNN{iSy=SbFb-OYgI2>0J;s&XP3FQ#3B}G=5p2@mEC}e@~+EFLWBeYS8%W zCXIh!(fC(Bjb9IF{Ed*tKa6PnYy1+<5SMU{yo3wXC0yb!;Wvd#_#^QW{*iPE|4zSz z-!?AckIhT?3+od8gMSIX8(hMlgqQG7qf7Wt#ATi(FY`QgnHPo2{Hx++{yph3|Al^; zziM3OUpFuFA6S?9ul&pW_24r9MtGV3FuKftjbGsz;tJ1^S9pQC!b|)W{-$t+e?{Rh_4<>Y{K}e^tDy zzb9SQzc8-qubWr(53H;DSN>J~dT>>LBfP4A7+uxB#;@rNaZTsQYq~&P(ZR48$*u18{u&(Jp_}BEi!8QF!cuoH_x~Bg`T=!Y>y3bSBeNnjX zzban$-;=KUUl`Z@*Ujtx2iA4}tKho-MtI%-FuLx4jorbuQ`pe+9{xH0)KZ|bb-w=27H_1EtbLx)%t#C(wOT43hEZxz+H}2?f zn|Jh2tULOT{vG{Za7TY9yrX{>-O(?IyZ(LhuKzA|*Z*9&>%S)6_1~B7`d=D%{Rie< z|EYD?e;M5MABK1RXVG2%8{(e-CV9_)PTljr74G?OiTC`ErF;JO#y$US^Pc~Sb;j6-j(W}DO#A^aaz9tCNYl0-aCOi^f6F!n&6TUNE z6CRtd2`{YIgdc*}geT!^!l%(|!cXMu22Z_ih~n$Ud(!L17v}562iEJxSHbJX8{zB5 zhtccC*Te&ZBOe$7^}vvX2gW1uf$@>_!1&I1U_3S-7%!{`#t*>*<4O3y_%wQ8{6xMH z@YEZDD83QAC%qATVZIT3V7(E16}}OC7`+jEO*{-Z@?juQ4+BYf7(5am1|LZegYS%o z!DI7b@WOf+{17}0o`esBPosyyPb5dYOL4^KB1gP0am1G5=fI`AB$bJrZ7qkA!E@BjFqJE#W!!mhi3kmhiFkmhiptmhiUumhg%7mhfZnmheva zmhf5hmT*BnHr}Nk8=s4hjrXO;#+T+}kHOoEm?*!k9?*t!9?*!kQ?*yM%?*u=F?*yMk?*tbVPl_T>z9;eI7bZ`BVDaQvAy0l7 z@#NR!yQDz9OG@IqM1Q6HG1^nv+>^?~_S_<{Lh z^nv*``P3Asr=}!6H9wM`n%|jE%@@{F^M~-M`Dygj{E7N76r~TtFRTy4uc8mbugPbj zKs^g3@mcth^ep_&d=|d2o`pYz&%#fmXW>tjKz=R>E}zKjI&8|pdvt@xb$Sb9!= zZ$2kKv7VDZhR?~*qUYoV^^y3w^pW_b^^y28`bhkS`dIu{`dIwl{8;?N`dIui{8;=f z`dGZ6UYMUtFU&8k7v{_8h4~HjiTSPciTSauOgB9n);lQq|d4Etk0<*qR*+HtS_XmqA#Sc zsV^l-`cnGN`cnEK`cnES`pWv6dTB}0OY1x9rS(Jf()x+|CX%FYqVKG4q93AfqMxL1 zsqd|CsUM?nsSE3S>Bs1M=_2~kx8b1gHo?Xb3{-2$C}pq-`R|u7x1yHi8r!1nIg6vhN|t%tw$?fFS)4 zK@KAXSs*baiNEoZ#%Mx|(Ucyeb4HAAn=yLViqYqGj4n7ay6eX1eJ@7O{1{ydVst-@ z(T7otULbJ_oQTU6GA^%Caru~z%Sk3K*Vwqc!NuhfAD7cYTyBVQ zc}t4Rr*d3ImADMlxJ+nqnbPBO&WOuxGcNC1arxYi%LOMccip(W@5SYrAD2r(T<(W) z`7nyh3nYOQ(1eX)2^$9qo5T}xfk@aDGGVV#3Hz8%*hwZ~*Vu%;!6obwpRm(H!fuEO zdrL~#r*gtZm4pq{giUA(o6-|@&Pdp8Ghy#q3H#hm*aatHcin`&?ZB#|MWL<&R_sgg-#ok}7nbP`E1NuETNLEQAEj5YkXh~$ECy~67L^@^?*|U4Aik|2xI&Y-tj+vtOtQ0-9Q*_Zu(LFasA9yKx?x*N-kfH}+iav@`^b$$a zD4Ld6u(Z4i((({b+bEHit7KYUr_%BXou;!)TCTHcd6P@aV?HfsgtXig)AF{Ime1t0 zoK@0tOHIo=T3VjyX*qAC<&K$__pG!$wbOFZNy|MqEgyJkdG4p>a*&n>VOlMOuV5K_6=duo4mmrKv8!apUZ*nl37w&fOvbLW8GDn<*ke9pXM~L16f^d=l(Em` zjGa|7c1z9JJ6gt`=ove2WbBTavG=TuJ+(7-(aG37H)9`o8GG($>~fH?2VurOiZb>R zK@ki^Q4H>IfTARh${2y76%s|)C=@-WA-88xw8o<728W^}9+g)F6m5tox+S6LsSNWf zC<;^*B{USJbQH}QDB3nrbk{=Ba~nkq4vKbN6y5hwbmpUIDL~PFh@yuPiY|~WQbV&0 zhGiKXWEm3A$~7X(RLCr|MrD~}I*ZhqEK_5%%m$ZbMtoMT3t6TiW|=K1%bdztw5DVk zpk^6D%QBRnWpYNAX`5MQ*UB>Ic9tnPS*Gh|nSC$I%=|1<3bIT;%rb{jmRTS<1fV$u z!*U7^atev(WI*JU3Yk;ZsGM?4=a3eYQ)+BZ+2C@@h|kF_A*VFNoU$e5lv6o}0wt#a zHK!0-PN8%dH*!kb%qhE8PC2)8O2Nq~T{oxfdpTw1=af>AQ~F^}IgE130?8v?H1A+o z-oZiMA@RK2CGt*%%sXpT-Z`f8NRP=oH8$^TaCv9M=jEP|cN${e*^=_kshmf?Yvi4_nRj-rymM~nor05hx^CXt_wvrn&pV|c@ASjGa~S2F1yZ0fw17g6 zk3x=*LXK}^L;P1$#v(piQxWZc7F9OfE2(Qb1d3 z0o~CG=tM6#m{CAGW&z!^3h2}>phc&E_S^z`;1$rhUqH)20Ud+|^e8HzOQcBG&?2*f z6`55~WQKUrt`SA1N*0-Qs>qzsMY_%unL1l!Hn}1*=8JY+C^Aj4$ZShR=1eX!HKoY3 z)FQK^6`6@%bZSPC>6k@k&nhxg8|HP2OwTPc2VRkx`$eW46q!L-WR9XDvqVZXKuZc_ z{0e0J%Fh`;AWBM=EGg?$NjafQbc-n|b+)8zawTQVm+Y2MQkr5(*_KMmnOtIkQc_xK zN!ig#%0w?Yz$hslv!v`C@gJCrm!!|e!8}XRDDqvVc#IP+1!%k)BKcHY3P%(_q zFpSbM1vfCPZDQE2g<H!X8E|>;kDE1X{re ztfE3+0TucR$OKVQD`Z7oqblk#T|su3idthU>IPR)M|?%z5h`j!tf*U3MLm@(D4|qT zpjK2utEiM-Q3#`=w#|yVYgN>9yMpdG6}9VD)P1j_&isn96I9fGSWyq7in>6m$Ua)d z_OYsqgQ`p7Re7JNs{3TsU8Ab*Fq(eNtYLdr4V&6EX4R=-J-3D(cr|S9*PPX$h7H0Rb`;gHB~qt1 z&^o&T@30E$>=3Wp8${jRAnWWpRcBA=I=#u%*`NP5xjH-M>-MHlXPaW3-InU?nOtW! zlsel|>+FtJXD52y*)ZyC$E>q^R-K*Nb!OA4vpu)Y9(Z+j?$@2opw14$I(rn=*(K7T z3ADiySVLU}4Rwe&Y=UUG1lds6sfKz&H|QOv!S1jPb(3qTW4>YU2o1FpYp`OVN zhEN)6OKqq-T0@=a4TmrqYR7D-dsai8+6`vMX{bH7p&ob*b?!HuouHu(!iIVjHPj{2 zr1#M#yN@;9RnT;Yc+=h|n(jW?bl0h-dqOwq1E$FyuuXT9Yr12;X&(qpw<$K=ZK>&= z$xUWoX}T@7>F#JvccMdI1*7S9%%;0%HQlM*WDcCB+jE=lf!B2Be$zP!n(iQMx<^sd zT_OM>QGk&c05|}E#DPo_KqW~4)+hjuX@CqFfDKsyHaGxAJdlS1P=_J_TM_`LGC)ZM z=2HP6Gyo_aD5L>E+XP_O0^r<+J`fH7T^E3T4}h5ulwklsKLp?~0$_o(kP+I#Mp%o( zL5m~tmOLU_>WFM{YgCInrd!CEX<=iw#cgmcZp63bvCvY-VvF07THLAJLPtsqjMNrK zXf2M?Tgu32ac#53?OHAF+-{*`r^R*M7Ps%UxS8Kl#zBkghb`_fYH);74dHsagzL};rMv8`=MZS7QUqmwc`<5 z$D{O)GBY~b%wQHJLuf$cwM*S?Ry<>=695N(DC|V$2*KV-U8{;B-&+3tP7xT z1c1H~Hc50{lI((YstZo&EZeAgZdU3VyU!M4-|XL6Szl`coBU9h8d z!9?#mq|xZWZ*n zA>Ok`M9&?OJ#L-qaVK<-9y2|5%=WlVuE&k}o;?2V{q$L(l6 zZld>`kx@*W>1X&lv|jZV>jkqo~I%kv>hKeU`%d8uY8s zpkIYe5q*~;``S9y*G}j@Jz@IngzamaTwfdWeS0GG-HF)OwxzyyCifXi>2s9Y*LJkN zHqrYIW%NDD>}z{gUz^%}X5#d@iQCr>yuLQ~`_3fjYlE<_9YuX@i45o&I$&qmz*_|a zZ-@`<88L8YeRVpZNDSNSz+ zl|QCeVV}Qhud=KB2Di$O_*Hg8ShaV=Renoac;@4PGSaS$*P2ZB%^iz2aCzUmYRM&JuThl3h4Uoo~ zLYZs&uC=D0+iN`OtU08+rtf=e`pjPg!(h#!!ZrOcTGJQEIx(0JTK5;|hP;7o;2U5A9}*k# zKDmJnsSW&u-hg)Bus7HZe3RS2$NUDiDQwvL;s(AgZQy6hhCEU?@EvUfpXeJ5X>7lE9x+?? zh}~jF+?GD(x7d-eXyEvZRrzzizAIKWoB;ad)AgdwYT_@ zv*nE3E&agT(&zpbHw?C%S-7PiMO*q3*+$0bwminR(J|Qehxj%&CbpFWavO}PZU2Pc zhV9w5J!ZF=F}LlH`E7PAY&!?yw!bZH`)BetK32AsvAXT=Xxsio-{wZfwlX)j{XJ{j zpW55}*x7c*?zVs6ZToY7n;Qq)&OF@qkD_gVi4t)5PRIlx2$CRFxKjv>HJHj!&L+>*?{64#5?{hoC zh~HuMg&lWC+;R4$9pO~ok@uAyb*SzT``V5`={v;8*ik3uj<9R(2JcaGq6xa($e2<}sJ%J+k9E#ctj_Eym#_aJk zcF&%1d%=j`V`jphFcbHjnY0(2%6lxO>}f-F&!x1zfYSFk%GlE;=AK7cd%?NA$IhHR zZ|Lp?``%tK^Y^$}u;)#}z2Gp~3l``;zK`w8`(U3K68mu80DWeted2`Phx3Mg{D9q; z54e3|%rb6=pWePU|wV+YQ@J977l18<+0 z`}^P^*mq~)K5-Q76HD{}Kfn&;18^V=i39b3JaC89fpEec@CWRHeZUtiE^lo z)I)Wm9U2q;5KN3iI37CGCf1=bwGXkmbLfrSLv`*Q8gu^;%!5O379JW$(V?+Kj_3(` z#80pzdjgJvA%4V6h$CS_9yt^0C^(^yV1InX&)Fk;&K(6~{)m|iN5Wh@a^})ea3&wI z6Xi%7tI&@}I|?TH5jQc8w7GfYO{}9}Y9Fz4=g1qo(0|7}3g-S1HxG_re+;+iC|ClL zBq@?Srb%STkmwMO%!V9Ej(8Fu3M4TUp|6falBWu(lNwBFkUC|O3T2VxxlPJLhxAF8 zREHi(&U{iC2Bc4gq%w&}a)AtC+c-o=*bp0mAsFF9d<1LFh#Zn5YA7DlLpatRqGNW5 zjk%#X;)nPczU8qvak2=$0!Ak6$(GbDB>87wT}Ts9h=AWF-bu zP~NdQ^N&R;I1Z@rSer!0<^nl^b?Zc)U?=DVoG26g1e*{i>V!N26Y4~p&?j)LcVbW2 z6K2Algd_fhod_pztarjqq?7PeKEWr-i9S(Jh>3O*Qu>KDGER(%d7{m%lknU=;U~_C zKXFfliFXpt{1a^)oCK5bM4Lw^;R1}Hokw6okD#4L(9R=h=Mg#PN6^kAXy*|aOC$13 z8R;W!L{5y6J~KxSWsS(GJ%Y9!`6G7(Z95|8{s`K3jIlm9$Ii?ei&JOpkG-)t561pH96R%9EH05#IR7}6XV@t^1EvI}=a2nRIHN$*1^CIn`(CDKXPd&53?W z&WuxIW}d?K>(rdur~J%0^=Iy>F!N5$xqm9og419Yo_dq$)LbHG$Q(VB=hzuK2WQG0 zKf~t4nK~!Wz??eM=JXlV+nGIQ&zL!P=FIssb}pR3@$VTom(Id7`3#>cXZl<{Bj(y! zIML6@xp8L9P3XsDorP2TjGsGa{@gti=H6L2_s`(-p9S;q4C?JHTvC)q(G;BHQRoED z0wx>ED2t-bZAzXvlrnKCb>dOf434}euy#=qMJ+?5q z%LzKeCfE#2zzm<@Gh#x_$O$>4Ce)0cAaiDd&e;hz=b&#BKf&k11h!ohaxP80nLLqa z%0!u|6LqFdv>6F3nBc}|}rQ|26-vgi1eJ13|7xjYrl)v0){Phsg(1*X$rIsDOvwd4l^4WRU650KK~2pC zJw=wx6kD=We92A8B|nvy!c<*~Q++8-&80j=7s?bY)G4vhrqn{8Dhp$(EzGI0u%_0+ zo}x=<3YPAaSbEcF=1-MnFx8gf)L2H-XhF?jy_`W?&Y&%4(3Uf3%Nexg4BB!AZ8_8C zum;YonYplM&}K7evl+D6jGFs1XtP-ef5tqTQA=vB&84|Fhc#wy&CMmO8FO?YFQU1$ z#9#;($^wTWv4GD9E|jITFqXfOBcrcrL+uT3LT~};17CY!DHxYzYJiA{yD#m1ITT0$ZHA6Ye~pyDadJQ$Y&YI zXIaQ)Iml&s$YTY_V@1eeCCFjrU+`NRQxQ6@A#_DY=%j(rH4~xJ7D6{{ghm~N1};M9 zJcMrh2weyex*H;NDMIKz5<}qnX~<7wava3u3LcY_L`<%cF*!}eHYVq| znB3-LazTj6T`?w?q?p{7f5C5UOpV!bEoN8rn4L6YcFm00X)9(o?3j%@F&nrsJLkph zwjZ+#LCo%kF}oDS>^|}fev7PNaU=oaNEMGGDI$*4$vBds;_ypb9LX|qq{YUOJQqhg zd>knXaik~4k+Kv=27k_P=@m6jC$u!?lbG0;6)zgsWrJ1^!W-?ZqY1(Nf>!g{Mn`ZJ}n(6pyrWmA|UYKUe zQJNVb85=`0%FkKu3dkr`JmX+QMyZn-B|~MDCY@2TOh#$3870qUln$R!ib6)|i5aCV zWt4%Ov4N6tR#eDywTx5MGms@^oVuBDGFHZE+8HP7WSo|paq?cq>G&C^7-XDYm~qNc z#u@w^kzx2UYzfczG&wN?R}RdZZcZSz^RAY|39m{m(sR_)7KI;Uh^OwH1HE$deF zU+`PE2KjB?%DN3Z%jTS{3*4-m^RjN+&$@*m>vqGeTZ*!7AI)JaAcs})9KAy1usWHu zSEwA;WO7)G&0%>ihjsWIRupnrPt0LuDTfV|9J`|CyXdpt-RZG@@~t^yB$C87K6Oo3-fL{ z%DV%kfK<=|z_0>R1qD#S3uuKXfEo$eEL8vvx`0)f0sw3Qt8xX<=3yG40J>rUl%xXa z%LSyZ6gW&RARVp1RrCVdHVRzLglyI-a1FbFwVeV7+yd6|3S8TVWdsGT8y2`yRN(rM z%T~~$hG9jz3W{0IT+=S8ZKuSw+>+YyN?gY;Y3-oI^}-TYj!N7BDccpa ztU)eoS3y~;;$^2ol(jku*(_DonsnK%FlDX9mfb2>);fIIs|aPSCziFcRMrM^*={Rk zZ$*V`wzaZXgFwc5gp-W6ArwzQ)6VUJf)RzO9C+*VuhEBXom#)@AvS2SR)_zimn zt2!$_fDE?kt@v$!1+;?|zZ{_n{)+f zF%`VUR_GR2!8<&R3l+R4R-B4d!3S~$X)6`9tybu^R^hAgf8I7KeBG?@ZL7jJ?F!Oy zDtybW&>gSBcYIhzP~m$aj7JrIfK)MnRsmeY%>q!>t9X?GL{+boRR>U2y-8QG7E{$* zY?Wa;=_)n6tJaX7R>OOG4ec86x>-YeR!wNwHLUB@1mHsU>eYm{UjyBsCUnCZ z=tVW5kJj-zR;TNr&chf1h&s_F>r9=h8x5vz0IqJd`8v@S>PAO5TE zP4~1q-_z?%*Qg6!v(EIadeDGgN?oTO0LWTxKgKk*odQm;-BMqdBHqb8C zpu3>Kbnyn>B^vO)4Zce?h$h`YdQ5|8u?@P%HHZ%1zpCUL+`2$ zxu-Ssp59QpM#Jcu4W(x_gr?n4yG}!BLDt&y8bZf!Xx*S8^umVLiyFcJX<}Wp3A$L5 z?SdxP#hU^knnIUs27qcBO}dHon5NNUn{1D38XdkVw1uY86PrO>Y8nH%X?K;T57&d+ zJ+0~YbhtL$Xa-%g>GZ5-(6pOw*J%bV7xGrG8Fc)n*A1FMFKl|fs2L0Z-~kC3KmoqX z0kSOsvMWMXDgm-D16YRv+ExM5(E#7l0j$G-fE*R?Sb*=@0BbuitqZV@2gJ4y^9Mle zhJb5FKdRfEuXORg+C>Ih7a!RElcNB5N;-&cF|K9` z!0amnt8WZ!cOUO0&Q(f}Rc127;5%zz(o192b?tbsDn2kO8c zXaj!$*I&ak0o?loZvbrt|7I2j=Yasu0dY9LBjDVRg!4WM&iNQP&tu^nkAw3&9?tCq zIIk1ooKAxCIR%m9Dk3K}L{967j2eiXGZDF9A#%w_$r3RnPsWfU6+_BQj83pII>p843?HMjLX6IfF}f(l=&}-%6KYIO zX)!sY$KFHfQOqu5aWo0yXc~{BC=o|< zWE?F}akRw7nIsoy(tMmjg*cNF<4i${GbJ^yB(=Db*5e9l#Fd;GR|-~KDYBXJ2 zA9v6o?&QL_Q;6bD2}__UkU%qd0?iT$G*2ebB9%bPY=TK~2`0lQn5>Xs@?wH1N(rW{ zCX|$xP%?T#$r=eIZzhzYl~BrV!by1vC*voaY>;sBVZtd!38xH_SQ<}aD3Qc+WD+Y- zNvy;r*)*SIQ6b6Z#3Wmgl59y!s%br`qDE59nMt)^CDoFbbkly)MT4Z93zKdkO1dSG z!ZLUY%MvLpPo}UUmBPwgip}sTHY=pqyqIE(Qi?5WDK(>~)U1(G^JYpdS}C>crQD34 zaJl=ez^24sm0$degRq%xq)XSl48;qqdJD@qxztY@^Wk@HtVa6*)8Lv#Bc#cHz0)^rw0p)Wd$`>S*FBzzwGf}-@p?WDm{alFpg$VUaL>AAJ zS-ePP@v@NR^J11SN?E>aWc9q6)r(eEF9%saA7=exl=aJGjwnz$q9o>of|L_VX3i*B zIinQjf!ln=^OfrR62v1AoYIBpJ0RFN!8 zMX_uZ&2m%>%m1eSXoP^8BcbLfs5u&u5eDjvg*xM)&UnN|1gI?$YDyg$uJ2l!zQ#Om(bEY{7xez)Qp($l2XD;%Lz2CzVZuvA2`_^t3Nt znoLt^F-@mo`Or5Wep|_KX*12Iv5b(0woHSJln&Fd#Z7BzGGnCmjG0#8_Y^T>r}2yf zkKHtp@zQ3-hu4F&kqOhV>~xr6GA#UVqQO0%;W8rJ+tByj%}ALL9{KQ_NSHA)X2ye| z1CIk3qQB_xXaqo=;ZR=$)E5bLML}KBP)`ih6AN|3K^^f>KLXSb)LRVdEg{3a3WCCZ z4@qbU6W3wfK$N(NIEaNfaT`IQ-cYDFCgveb!bcRSHwEg=iA9K$Kx43`$LJV{v2h$~ zi-@T|*IJBoe7bOPbD(oAz7#G)}K8=_bhZ;** zF)wbzvYZ%z8ewo{NQu25s-fh!`IuV>-089}{B+v~3WxVqxsxydMqg1A~z8J`}tU4gVhu!oqvH zaIeDq+OYj~5fRZ43GrYm8=ln>1D?|mA2DHQApyJs-#9!DVEFU$0W1ZBApuLlVMxIe zNqCNfr7^Hn0hYK76Bqbb)gLGS=kWVq`wyRdyYsKKZ;0pq%R3K7U)`Gi+86X+`!jKf zeEr#9{o_CR%ed%O5QM`1bqve(JvW z?(C2Fzw>{)@BGTc-+1zWP4&0`qxb*H<3G@pw;mb4^62+?<;^eus>*@tUw>%*UGt6n zJ?DY^U;h5<8^4=+{onp{?=|-Vq! zL%1^e|M;ENYghmFuU`EZg+IL_{f{rM{N3OGy~|ryA6)*;fABk({=2_%{nGkh`Yk&C zOEjIhsQx(o{>iu6H~!1fSHJefpNU_8_9vhGg%^#Ff8+UMq44atpZ@X(x8Lu+_eZ?@ z&Tl-?-~KC)mA8K7k@BX>{q=|D8_t8@e?9g3-fItD{fqa1ll|Gft$QEb{hN1wc6)UD zmu|T?*KbO%{4R6A{N)>ec>Vr$>)PtIU%mRLS6*ECy~__S|IVfBmwt<;=|8(bkUzUP zhTBuP{rhnH@8R|@;dU7N*B3n8{+-yry7=wbpI-d)*uT8kiT{g>x8ncb#jnPr3p@VL zFaBBlPcAkRe|+&q;{Uz)ONoDW@n0qWpNl_C{L_m;@((XwP5$iSmy`eG;y07QMUec1 zi%#nIFYcuN;l)MDzxdBn|KQ>urT({zM*8nxFzNsG;=Amd*p7>i+%zcLT{v84Z-kDw!D(qRgypviIKGIiGWmJ+hOC zG=!*(6qQnuBv~ay%BV;gDJ%8AuJ7;vxF6^7xChQTpU?HaUeDL-b=+;uCuFwf60Tb_ ziSt`iiT16D#M;(aLY#?AI50&K*-W8C3sWHRo5_a|VRk31nVpCDMYT}y_>|fhmEAQhmI7nXEml`&uq-lo{1P{p23)7Jg;N? zc%H^w;<*>o%~KV#fwv?^iuYWM6K`@%4lg;Tg*PbX7q4545TA971)o7o5}$fZ1D{;X z6rWhk?!A05dVASpqW99pRP9}f9@#q+&AM+iT4i5fwEw>6(USM*PQ+i1c4M$xAG)uZF~%SPAl7ml9Xzbl$cfGJv2U_B~KU^c2u z;8WB)fxajP!PY2w!Fy5eg5^>9f(2181k<9H1xZmN2mGQe4>&|69Wah+IG`T&^?*#& zP9ec4Z6VI62qF5Ya-pTj0iiFETZ9K96@=R(J%k%0&kNs(Y!fbsToO)+6c&k!G#BxT zOc1e&yepy`IVo~9l2cSH@}%hQ$Pm%3k=I05BKkz9A~uN)L`aLhh;S0S7m+1)J>rSj zxrjNj_=vp+Lm~_hI!BNX8b{nbs1`ANP$Gi)5MPASA?66LLu=s|4o!u>I5ZHxbm)1w zkocW&Gx00oapIZbb>igkF>#-8_QTfUYKOJM{SV897atY~e|4BWeC_bxFfoalFe{0{ zutbTru)7j>!X_myhwYF|4^x+n4hxX<2)iU{7S<`L9`;A_aG03Xo-iw^En$gLi=p*W zpF$_3IzzWhH-@T7Uk~+@&JHb-CWm%Ndxfq@n}-U^sE3-#h=<0?>~tqVCXTO86Nn;fzr8yd3jh(n0M5xtP;BXS`XNBBeD9bpRDEcZKDTJBS@ zy z#eqMMCI;?P3J5%L%CP}k zj(G>j9y1AWIHnYkc1$3k;TTiE#IXhcZ7M_l$|_I&Jya_Eb5%0^n^hwGXH@L{xm7j& zHB`m@{Z%>q3sl$qo~w@e&8xQi@v2q(X{(+03sEEaT~c%L>rm76`>iJB$A6sLPyhH| z--zQAzE_XG^nHE2+IQu6p0A*KjIW`(lW&x|wr{EWVc%|b4&OEP6(1puQ6FQC7N2O1 z8$Q=HGJJY8LVeaWtbK$|sQMV45cG*Y!RS+Z;)i$li9YYu6Aj*iCyTrdPtv?2Pr7+u zJ*ns2c~a7Q=_H3Yzvi-+p5};GsOA%|OPZx#?V8D6KQ;Zlc(qP@X=%xM1!(Q|D$rW@ zY|;AU`CY5klUuvOQ%yU~(@Q(RGe_IRvq@Xt^RxDDPd1%(4@I4i9!@$f9;rHI9(Qz7 zJVtbUJ?M3fJS23bJuG!OJ*c|N?l*LY-1~H!+}CtV+y(V$?)rKz?xA{G?!|hd?rnNZ z?z4K|-MCM6yQ!V3b@Mot>bRM?Gw!Q z*jJjZ*maw|v-@p!*KUt_uAQ2Bke#c!kzI=UVY}Pr%yw_gr)^ivU)b_ll-g=o#M-)B zINGLJsMyw6@Yue!SUIz5@$L+t<()GcmRV=qE&b1=S)MvmZ7F)@jV1k=Wy^6J9;;>> zHLD^U7po|nBr6M>Dl1u=ZmVrJi&o#QcUrewD_LK+wzsCiU-s~KO7L%XT7S1*gsIW1gz1}d$%jb{go)IF$>cY1fhncI zv|fg(ZHDRn08{+ORSG7WQC|_J+XALM6sA1~roI-YzZ*`$cehzM5p8fXis6KW!b#DG z6Cr?>)6b1R(cPjI@|JqzHZ2f&Hff|JjyvZGL!{!sdyF4P*qHNa%z$Y^6}xP8qPJZosx` zfvq(P+iS&V4K`UfY_w9?Y*Db`3}Mp=s^`JhtA_3O61Lz3Y{S34`mh=Kk4wRp)P-&7 z0$Y;=+w(kZ(Q4SH?XXqHV7spQ6~LzThmETNo0nVF9=316oZP?gPOboRT&3$SqA)W-}|$OqJj2C8%c)af>;R4b^}FsRl- z&;f-lpkjQWX0o7ax}a|MpmL$0cB!CxC7^zHK?OTN4L^Y@{tn(O#{??L4{9j~s;LL+ z=>RGk3Tm1Rs#*-{S_dlI25LJDsyi1l3JP2UN*oJ{YzE3KEMpET?FDL02G!06^}Y@& z-Uw>m399}H)O|5D5tQBv6kkm0FsQ#eP=FcGfCo@PG|)jhP{L)Pg*!kEZ9or$KoK)Q z6Mw_jfGl1CVH5*t_ycjM0eP?=_5lhZ1C3+?m0STjxdW8)9B5?#sAUT1Wi8wbNJa^W zhWU^L(2W{Ujxo@VGf+p(^KfR0`OB@F;AO#wBnL|g-c3IUQj2}H#y zdKBnN7bwdHXv+(zD+=f<1t_clXzT`1StHO{J5bsH(ApQEwx!5&Ah-x1Ic*@iokB7| zcj`cS#z1=xKz)8desJrHBhn}&~gw^Ga2YP87TT3&~yn;_st0Msr4^nMg5{shpx0Z_dq(7iKIzAw;zI8Z+o z=syKqKrXm}VsHgz;0|iQCEN$M&;qWZ6Wl{TxQLJ7CZ@nuEP%UMBZY(0I0=q}gNqZ~ z2Oqc)A#fuS;7a7dov4CK(FV6-1g^yr+=~Oa7!PnW0pMyPz}*nwauUJqq=W0p1NTz| zE~pgTP!+hMI&eq#!6iKbxAX#BQx~|WesEDE;HJjGRZWAtngf@$1a51cJOa+E5*%10 zI5917WSnd~;Li4gOA`jSCJwGm2HcwhxHuJXa~k04bimyifXg!hw`U2i&lcRD6SzQk zaDzVJ3Io9%hJs6s0=Gy8*BA@#F%ev3D!9o^aFw~>F7v@O*j?kHNh@1sB^2ZuSMZ+758HufgT^fZOc@*V_;7cMx3gdvL=e z;EF$jJ01ge1b!%SX45t{>h1>wo`LmnP<@aX;f zk0|;3m+*s!^51oW@$Vnv-TE3)y1q&Tudfhl>&pb|`Vukx=QnZV&o3hU&mwX1&jPXI z&ph#IZI-yT_MM1Xn;~@9riqWF%TI~LrN_k6rH4f3QX^rvR8JgQswGx`-y&Z8 zt|ZR=E+d?OUnQh|mk|GcT_iexOXCXZ9grE4+|zl)q(*LwV*?2FK7^43o69KyaG`>FGEn~ zVV>rN37+}=#J4#fqH&IkNSxb7n9Xe^1R%qjpIs+Eo?RlJot-0}nVlw!&5o0oe~gfy z|L7;@{^%k*{dhr^`tgMP@B4jn=l42t;rA-C*Y{Gg!uKLF{r5cb+nIFo)tN+c;0!@l zorxf`&IFK$zj=@=zd4X2zgd#Cz8R6ZzG;&urd7#x)AD5Mv;^63T8PXy%}1V@;v_$q zVkRd~Z6aGvt&xPL7D&IoPLW!^ek5go?I$^Y?IcNjZ6W>ra-Y=srG`}arHthDr5G}| zToS{V6jJ|ZDyj5yI4StEFG>BgGl~7PCF$d&0qOSS2@+}YDCyLs1ZmIY0n+ruZc^g} z8!2gmj$|>h8Y46@8?!h*5%X+(FeZEab&TWq(-_I|dolmUs$#mvN@9w~&c*nSCC4a_ zkz<&~f?|d~xy4j`vW|)PWDukMNj--9lU&T_k76L__z|iFgg?c zbaXU2YqT%garAk#T^}w*7k|i(_WKYYee6R-G|LCC=;0CD=&BK;=$H}p zXuT2H=shFC(bL1bqVEqgMW+m}M_CQeMu`r8iduQ!7uEj0HR{6qdr=POjN_5U{ul|XO!h2eU!-HQsnZ$m&g|b1CjXy z?U9}Xjgg82HzFAa3L*#Jr9|F%7Zn-x&MQ*)olWGPce;_^`j19F=ogDj>)#!DrhjXs zc>hYo`rE09*KY?Rir>D7@PB(RLiO$Sh;47rMSOY_A5rrrB!c$FIl|w}tKLz7zJn>vGtmuJo|XuIMnwE{`yo zF0-)BUFu=|uMdZnz1|ZR`Fcy3-s{Csp4Xp3e{^<+Hg`6LW_Ml>b?(d#J<>@IW$5$@ z9eiaTTKP&nl=MnG)bQ1=Q2tkRp+7t3LRve9L(X?V0?<(xqTEp&!rGA>^6_P8NbO69 zkocE+Ar>#?LPTHkhx}=03VGfBJNR<@r{LiBj$qC9yTLo#OM<_>NDY4UA~ZPjg?+H| z3*BJ37qY>OFZhDrw`~c&)wU2sZ5s|UZEFn@Zo3_{`usvr=W|+6$#b8e;OAyRn$J~( zc0Csf`rgVO)ZDrnnA18Q=+^ow@Mvp&AWLg;;K!E4z&kAgfr%}afi^A20}r=|1#WEF z9@zhEHK5|zcmU~HM}YCOx&Xmvg#pV?V*_42^$sX`Y7!9gR4G9FsXzeFQ>K8qCky^9 zPlo*SpFH*Vc~ar8_9WAv<4J`7RI|N*Q?sUjR zdBEr+`QV2){ewR5;rk8VHTR3W6YtZ!ZST8z%iP!VX1p)yJ=)0OUEjFumD)Js<=FVd zOTMwxi={EyYrMhFtFhswP_X>Ww_g>!m%2dQK1X`ek?V z`XP6^`X=|`J0I7LZn8U_zd7$1aI?oz z_hz-D;LS|O^(ueIcU1$1UU8`msRI551c2(VQ_*t3k&{^r>P*$nsK&=#V zI8#aIAXhnIzpe7A{kI#J?OSh9>`QLg*+<<_wl}-6$6oTrirv;5@9ZWk?%Fk1O0m{=&AYywvtWd8}NT9sA8wInO&Yc5u5 z*VL?dukl!|UR}0)clC|sovYQBSyv$exaw|s>Z*pN=v6*ThO4U<6Ib3^JiSt5ap_8$ z1?h^rh0PTW3xz9u7F<_W%oi`eG4H*6+r0X6ih25FS971sYUa9^_n3=b{%yu^x!Y{A zq|&UVB*E-TiGvxXM9Iv)gwsr=WX_bQDeNU)31woPTwl} zWt?8rW$af}ZfsCQH9lNqW6WA4Yy9IPi}CA=pN(!`d~B3)G2h7lVxW=HMO`DwivmXM z7uO8u3*Q*_7Tz?hD~vbHEwnQXEtEGjD`Yd2EBtD}UD#}}Qjl*jR1j$Jpg_mqVgbJa zxnM=#zMw~6t)N1Ge*sm0bAgrqL-ok{`g#uef_fVHYq~=DeY#unZ|HtIPt|>W-cq;vyo7Gf zd3xQj^CLP|=kMq!pHJ1+`t+t(WHlv~Hc#(#k%^s}+9kr>4!hc1_iDmox>=g=%g&r>8lS%dgp; zyL7TXxASB{?$wjz+{ly8xrQgTa|KU|=dPaEp4)w5DW~+ra8C4zCpktZuIC7yNX=Q( z2+ZlxFweQJp_~(~!JlKS!H^@QF_XQf-kaU6-jH3YUYs4J9+z#X?v*X5Zj`-pTrT_d zah~j}$2Vq29G}Y4Ki-wafBbINZ?%hA9cr;zm()D7Lez}1wAJLZ;Dcsa^Qv@N&sAqK z3sn0u{Z;R0YN%e$qq6A*M|snIkJ6{B9i2V9`tb-!?tc;@j zS$aj|vx5psXR8zh&k_o(XHP3EryWojOIwnEmG)BpZd#H2<+K3#)HFx{(m3TE(!R>+ zrrno2l6F>ZZ<@W_)--9kU#XkrMpNG%d6`;qq&_wJNJ*-}k<`?EN5WGVWSvr5Wc5?e z%POXN$_l0`$!<$!kzGp}mHCoVBh!}>EAuGDOy)+4uuNXciZm^yL)tH;NZLBZPg*NQ zOpyY$|a2`T23da32)M5)PSE2-XOF{ww%es~#1s;p#6%LM#kdnUi7_PhiT+NwCi*!cM6^HQr0DYmPSLvw zlOm-FcSZ6N5=0Ub%tgWyghkvEmW0g{+JviIxmEz?E z#p4+S_r|{yV2>{o*c2Zo@GDMJ;7c5rz+l|u{#SAJ`ya){?XQkA-G4PsaDQIhPyVF1 zXZ+D|+5CQSPW+B>Qv9ZI8~C;2y7wK8yR=U{&VL_&oXS3qIQZCC+{oUw*s8s=vC(_S zV)gd+$L`+yGIomZQEUTWZEO9Gf&gn^O?rA=RIw5cMt8(?&q}F z-4AKTyK8Cixmnumt|Ho_T{*O~yOL=(y9k=tt}xolP9Iv^PA6L4PAi)0PD7f^PEFdz zoyxQxZW-DoZZVo4_dc33H#d!mo0T@iMMo>=TBn9{EmBW%eWP-4jZw!qhp082Jye3T zovP3Igv!I&K%M5OrZ#evQxiE#sAe4bR6&kR>cWmB>XRK*YQ~O8s_l*->cJge)Ya|I z)EC=rsCnB>sjl1gsWRI&sT;PdQoGm{sKxA3R3COR>QQz9>K1lhYX3Ga>a}g#sKMJ9 zsmHf%qCx^d8DaZPsbrg@M6yj&wAdynoNON`6Rd-jTGl=ag|(An!1{v1!}^pm&C*0^ zV7W(0V5y~;vfQNXXDO%5F<+%TVlJknF<+oqGv`u7m@_E9nNle&ObL{1CK|O*ne>Oqm&>O$GD)q&E*XiF(#w4!)3no$%OPgCd_4JdE6=uxh0 z(V_%wIYCj`a-6~pzcM+sdow9c`8|C{ZR?34-%#`F! zOce7?TPcE@7%2-Iw@{ilGEmNLq^H8u!+*LVIw6Q9u6BeP!7Xm?Y|9_ z_W%B)oQH=iJfz|AA3R?F`;Srx56^!aDDv>2gGcY*jg%62`2F2PQU1G`!uXet@@}1; zQo7DS30~hqQCnxEu&!^V4F6%G-1q~34B;PE%E>=$lpTNADWBGMP;RYpP-51&D7tGq zDLdD8Qzln=D0QoR6zb|eis7mNg?IG;WqL)J(y$^%Nmvo5n65}r_OD1&W|xmpnwAwP zsmn?ft7R36@bYoW;?fDq(iqUQckpgR3f zrAqzKr2hM^Pwo6}N-g|uL-qRZOjY>qMWz29M14CGNxeElr3TI z%5UY=$ZyqDt#1ufu5VAM6VvU~y6GM&b$WiZ6Y>YN5>-Gn{wo+o_k?@xHp|2ZM8|98TfeuhNxe(uEew<3wJ z-zp>)ztu_fe`}qn`qn#f+uP{GPjAu^Yu*$k(%#%oGi4m5?^m_(rnN5q~@N6q^zEoNlrZ@NwPh& zNpw9Mll!|llFPbDeGJ~^{1KiRRXGFhhUQS#=l-sJw* zlgVYTmy;u3GpFdi-kZYnS|;U3r&daHr*%qpr(cS5CoSbjXI=_J=Z%!XSC3LEU-hMs zUVTY1e6^Os|7u(6&kn)V)(*wg^BwxBo*ho9${pdUtR1PTA77TF*1oJyjeq$v)#Bx7 zs_4sKsejtHroC?8n|8VVNLp~aZklGhL)y;v&@@N@(jL9IoR<0GZkqFpS7~xD#?lyH zET_G1V?BGTP4FzWP3f#@oAFuUHutlu&&g*ypXZ(}d0u%o`1zBwn$HK$?s`6Z_IoRR zdUGppdQPisx?8JW`q5UWbe7i0^p7o>>33Sn(-T`Br`xpjryp+lk-o8oKBNB`Z$`zl zBN?P;`WeR0Tr&ipkusK_p38Xk^kzoM)7FfTrz08KPk&|bJY~(Cdm@zC@mwI@lL98WH1PBq`pY-;Yy%xa#=bZe%|I@-*a#nvpJHU8KrtKqR{R@&p(EXT(e zvyMEzo3-_ESJvpGsjRw38?%!h@nqXRlFOEUWR%VD$SZreDK5LFsW>~KsUh2@sW)4) zX(pSli6Lj`A%D*8hsrte56yF|9|q<~JWS1@dw4x(=)sem>IcI)@eh`AY#waSm3$zc zOaDMSclf?@Zq0piZsPrdT-*Egxia^=a~bc?COIal8(a4xk`^_*j)%{lqT@N+DU z+2_U^Zk=mvczG_f;qy7ShD~|O4SVx;G$`dw-LuGRz88|0cP}%~_ukDsjeG5RyYGF@ zo4>p1eB0f9=Zo(upAWrjb^g@du=4_UbIz~USD){xe|^5Z{@Zz?eoMZ2y->b*y+%G= zy+i)+9ddr%os0RYcN+7Z?!3!ayz?uc{mzaHQ+1LTn(GWM~MJL96q?b{cR-+p~@ z_w64Sf8Js(dUfk?QRyv%BI1@`k>#!QBB@)qikNP_E}FPGThw%ut@!*+iQ<5pM#Z`} z1BwN2W)-hj)fT_2>MgFR`dOS>#c|2C>c}P4D)URbs=_b*tjxdES=o50ta9iQwQ}v! znM$4#xk{CiZI$*V-)>M!T5nt_DY?;75_My;#OwycWyu?&m$%-~y*ydrbGf-9{c>SN z_2saN-pj@nijzFhR`SlOwo zO=bR9Apy7=Qg-L6QQ5nzhssv3ZYkrvHgR3;TJv@1YZtF4T#L9~an1Dlt80?i=dLkd z-%COz!(F`v zcQ+mGvLD=S1Gwvl;qJ2*{k-)9rr|YA#ci05444vsm=+_L8cCQQ_KSyLl1yNtqG7VG zz=XBKq|H~G!PLpY^l=w@z$9kCMBanR9Id$sQ%Z(uwTG!ygX!H5Q@pvL3nqH0whgAc z0;W6_rrj5&-TCO63+!+r6yanz!3jx)lTrsKX84W+oE{B0MM7|zw&W9VvdZCv z^}tD6tUDYk&qtOTceFP!d8 zd2VphGvUNH!pR?R$c8Nt4%@&6wt^~b2Lad;Th5I(&cN2_hV4-gTciNC2^qGEGi(=a z*fQd-i2*>5w>P5Y)?MXm&89(;8JR5}mTng*)v2kLDNDy{`;E(5B*7u20OB@&dr3>3fr zbuXy@BcOmvpn-g#f_R{VAfN<$poLRF4T?Yy!axxmKoc92>3}R`fiRqaG_rs=nt?oK zdvbw7Xh0(YKqYoSC#Qf?jsmTS0JU%fz0f7)0m-xi(Jc1$0NpeL<=h6^DFW(A1Nw;u z3i1XTvIZ*B0Xk9uN)iED;s$DBNIU}sl?EjB0Ep^a|8tlt z22^MXbf^QAs06eq4%E08=#d>La#Q?$Aj;|CFF==rK$)+AHXi|XRs(%r1q#gr8chN! zjRrdP14?xSS~Ue~)dG4w3KT02G|LZE%K>!D5N8Uc8xO==59Is#V?R*vOQ7LLK*hB{ z$Jc?93xJl>ftqPR&*4DP-ayk1K-H!|*E&GiDnQ%PK;6PX-#kF!>_Fr6u}MJYjX>zr z6Q64xl%E5%pA6Jb0R4x73-AFq-~_I~3fzGqxCBjb z3(DXcWWYU$fs5D&Zh{+J1uM7jx7;Fc7? zHA#Vc5(5_{0B(vGToo6%t8L)27{P6Aq6&cXG6M&e2u`dK9ND+I32Tk8YY z)(P(I1-Q7U;O3gZ)!hSkR|_uhCb+$FaD7+7{S|`?yZ~-67hGWmxWiO%i3#8qY2X@3 z;2tBvMTUZ#3;AYh@S^KZ{;$NaBPke(b&tGEGko^Yhq;+B+Z}x_qkAH~2_AMLO4*Vg`U-`Y^ zwb>dmHX*XHCuo&;CuFm6XUqx_;Bj{2mB3}9{_R6E$t8=)BuL5l8+b=s?kkQTZCW8G{j` z!f%{z*RLTW^%^IAdg1^PGpI#>3O}wC%b}GxDN)9dXZDmRwi#r&AqSsPNMPEsb@M}_toqoNhNcEW zYtVm7opU`=@ZXg!e}2^v7lhtyITvz^II2g_7&Cfbb>_dVO|Q=rOxN*9D>(7IU z1f9p)R*qg8aXVU^Db0mUTsmvdWIY~9bQNVWQ4B(fBUR6s{+0$19Sy&j-b{HD$2|vl9b9Oh>+p3o<<-&^z#XN~QWsoc2`d8A~^{w2pnWH3%uQGRrTR-W;pf5L7 z6n@J?{Sr6J;4{+0vTknK(EFrAj2m|@uUC_%++=oI1(%Vgn_YHVzbzt(aOds(Ballf z^laOyW}iY*Zdl$al1L$K-XylGzA%h5tz)xm>Y@+nOIq5l=P6F4pB+uR^j$4U3=Ffo zh(iXXJu3Tl+kMm^i3A$&o}nm`gi2_;53)*-SUT!DUyS0&rWqV z(yX-B9ueARlB9mbp1E5qF-M#$_5{E95%W7_Xix3y@fa@}6VI(D12Ji-$~>NzJ7Y{T zeR(E*pT;y~7V`)S-;1eB>*5jVtc*Dp_aE=PeMyXdxD;>fXl~4is}t`Bz2ull!yI0^ zQc{fFkrv*S>A)COu3x+l;kQj_3kUd&j#y)@^$r(+PqQk2NIpspUH>D|D$SyV3O znd}tbk2TSl=#^c2>mKmNcr@znHSu7Np@u~7?cG2Z^H{8EuVm74^q%42y#Z_AqR%F= z?8~(ojb?%WwO?_0Z}hodzkQiwt~c`rq~ib?S& zGi67Y)H(9+{TvrvFQ3g{eltA!;@zkG!cJb%hLS(|i#ORuw_X$2&zfx*y}ZM8e-w*) z^hZ+M{>f0;=#a5H`wcsUqHiCc-2aeeS9DS#r@*0OOwr4;Ck3uqtw$}Xgb4^Z&qfhR z*9C4_eTqta)h}@JSYOl@CI-P7me#0M4SB(99e1NF!`%h_!^)$$OV0}$u@*$hbhZg< z=cGnmnOzdJp(91vF^e2Xaq)|?7qC1qP;DPoB%5?VYuYGkyIRA6fo@sgRno_K;(Fv zys+P;7mL)#ND=Tzk+(qe^t)x)@%9qj? zUV4TybSz7sYBCFbHYOzVrRaEQ;ex4*kB@k0(ke~nqsXq%xYcTzlYN^*6BjeGm&d$FNNql)!_NZH1NZ1Vz*|-p_Z6Q+>C-J9i_IerH>luOB7 zefBX}>9Dd2j1U#N-4zKGLWGpLWyq6@jy|&Ql-5)qJcYe zdX!q3w+D9qU03=OvKpZ7D5m_pV=N%xzPYjpdq;rL)>!2OC+h-+jBYD8yB7v9roUJI z7ZDrK|AgV#c!YO=;*89(KzI1#K96KMf z;LjqxP30EzkiVyZvPyi;6aPa@9xD8d75+w3IVy3!nf{$kk5%fL!~HKNeN(C3Xz$;k z!>t-Cqv^kEgNEuM6LJ5BTYjq5jvW4(rwdfK+pqcM&$Oyq=#BZkjG0%B6>9h6-^8nS zVeYnHE}^YfRFUV$yAZ6FV@&e9Ykf(L`0DIu+4xe;%}>{FjRk&_U|iC#(31bSq!zcI z#D!DGc?#BjYr4XZvk#B^?*4P-I0ws1Ust}@$3?}feUs%@j+-jy`BF~^s^=e#@ja<+ zsJ<%f2fA7j$c=riS=v%CBiubX)ldv>!NOOQ-5XHZnTlAPT=f z(HV8(t}>%fj%w)%C)FR`YGqv~yrlZPjW(~I=-J-j-DEC!vT*#OH>KF%Wam|?ch38W zlint7-g7KhPev~2dS@KzJh?`Z@b*5vbn@5V9o{4teoY^rWv@rxdYUfn!(JjDp_*fy zPrU9}UDBK~F7-O2)~-n+C424W`Kfs=-`DHQ43C!MRb#J*wVGOuMMu1Hd;_$q6L)#J z^A>37I<9+4Jbk8>Cicnmv(0y{sPPuhglR7AU1{Z>Tm00teFW1yT|awjM^yQHo;S(S zRu?q!yios8`*o_ErxWvM?S13BJbzfQ=^PVV_mIn1&=Ga~=pobTs56!L%wzO-iVn5- zx`zzs9i89TlHq?pKcb^o=;P5OL9d%YHT3v=P(ruTLfWI4$5QtZFQ>g5SJ9o+bk$|AyJtp`~v#wKm&4DiNYW|^m18th_nVX9B zHnNJk%cVWnJ8^=^U7T@N@3Pl-H@_(EQ~Ri0Zi}O;r=BI&xZP9qIF&`tajQwpJeB4e z>Ne8eaO#1wg`4bupHA)HtmsxP#;D)=V7Hr|j+B0d^B>p0Hdgw5Ya^~LPE>uZxW}$} zwiWtJ>m{y!r+W1FyU|=VC06vaA3M8p)AJkHGoExE>DD&L&=7LX$Otev;K$%9s-ABk zl>F7D^y_1T{M>ezHQE;gBJ+le5IdXU$Cy-?eK~T5kF9)M#<$oR?ibc~@eGPLWSJCq zsqCsUOvqt%xwh|(VW#w~v%c$^q14kZ=gUR=jeOOsoiDWO80pq!I!jCi7`@^Mbhi6* z-e|?m*m>`!$3|}|q?~=%CyiW2*qznBF&kHHSa8aHC1YI2)$8PR+1faor`D;|lWNSo zBiqUBK)JE!YM_(fo7cwqy~a+{VZV%v3Z?u_4PG8Am!*!@JrM5{&Iv3}mb`hdHrAlY2HD4vMl*OpF3XP? zOwGZ}n^3mDc{AQDWNf#+CQGGRkKBsg4f}4hl$dvRz1M!3U8$?LYaHHfzIQms&XPgR zoc?#9-3>ukbK4C@b``QI=AwVa?TqAaoBPc$*>%UZuPYFVk4)suQ>n)+{BzS=5!CXMxtWi3DbnF@tv zOLwtx8&)$Ot2x1Dn|fz8D^vC&n|v1+tGwArn_7z`tER{1HtWh&R3d&2jI?-AcCzGr;zcn$Dc z;5ET(gVzYJ6<#yEc6bf(TH-auYm3(yuQgtCy!Lnx@Lu3O!Fz-E2=5i%GrV_r5Aj~& zJ;i&A_ZaUr-gCV7I0HBfI1@MB3U?LmEZkkV!*G}3PQ%@XI}Udp z?mXOmxC3z);!ecfh&vK@CGJezow!4Bm*P&v-HJOFcP;K*+`YJiaTnuG#@&oN8h17B zY~0eq;b-0b~MX z17rkb1!M+f2V@9j31kXn3uFvr4P*{v4`dKz5o8i%6J!)*6=W7<7i1V@8Dtt{8)O`0 z9b_J4A7mh8A!H(CBV;6GC1fUKCuAsODP$^SD`YHWEo3faFJv%eF=R4iGh{SmHDoqq zH)J?uIb=FyJ7hd$J!C#)KV(2;L1aQ?Lu5o`MPx=~M`TE3Nn}c7OJq!BO=M1FPh?PJ zQDjnNQ)EZDej_Z)9*}ab$92b7XX6b!2vAcVu{Ed1QKIdt`iMePn)QfAj$81<(_qH$abo zUI9G=dI$6n=q1ooptnGefnEbW2YL_mAm~NVlb|<2kAhwWJqvml^f2gU(9@u|L63u8 z2R#pZAM`-zh0qhBH$snuUI{%DdMETy=%vt8p|?VhglcG08kBVLuJu7-w^swk<(bJ;0MURVK7d|=%vw9qqjznjb0l)H+paM;ONEClcP6BkB(j)Jv(}L^zi8A(bJ>1M~{zQA3Z;M zf6M?d3&2bOvjNNqFe|{!0J8(k5HL%?OaZe6%os3hz{~-&2h1Qai@;0*vkA;7Fss1K z0<#OuFfhx&OarqG%s4RXz{~@)56nO?3&BhTvk}ZlFe|~#1hW&&P%uluOa-$Q%vdmM z!OR7-7tCNVi@{6=vl+~2Fss4L2D2N?a4^fkOb4?a%y=;C!ORDD#mpD8U(A3p3&u^SB zXUw26i^fbEvuVtzF{{SR8nbK6urbTVOdGRp%(yY@#>^YDZ_L0k3&%_xvvJJGF)PQ+ z9J6!G&@oHLOdYdz%-At&$IKnGcg)~1i^ohJvw6(uF{{VS9=>|Xz|H}?2kaoQi@;6-y9w+l zn4zn{&H}p&>@cv)z)l0Z4N>Sgu`1UH!OjG`6YNm1OTkVB zyA|wMuxr821-lpQV6cn9P6oRf>}as7!OjM|8|-kf%fU_uyB+L!uGV<(N>G$T?AWzq=Z@VwcJSE6V<(T@Ja+Wh)njLm-92{r*yUrV zkKI0Y{Mhwl=a1b#eg=T)Vdp>mXWodyfB4^3Wj+7l*GJ6B{lo9?uG;($f1aUd?_d1+ z>jz5y;`4nR^Zkp@zp+H=FTNg6TgJcm`uO&|TgTTcI(TgzUw`KLpmlsdXUx^s@%`m; zvaaL%J^uFnAAJ8_=PLf-_24oO|AW`ZfcxYhyk5HpxBtQGM=AWchSxLM?$#P!-(&k@ z*6?~?{j9Tw*Z*lH_Zr@hYk`xicz+BP>Q?c7b^N2O;{D@)VX%t#(;|y!74L7T&GZW1 z?>M1`6}p$_lUpW-=6VHF4 zu=-Ej2PuNve&T+J6!@@!`@&DKY6160pm5Xz?vs>5+6%Z}nq{~aaNqD8o0!M_Q>tA% zkNe2UoHCF5>5QAfJnpN42%dS|UxH_+=Ww5GxYjU-`%SSaVGj4*+X2%#+MH`F7lfz~(F zr%&~q-%zij_DxKqewnA&PNSYh{i95yzWoR`oJPHS@QrsG_3x|O%oOS&Y4ZLQ>Lb-X zc?$J%ZN_2>^>Z;)XbSZ-c;m0HsIQdlXJ1io_X}lzMg4Vba`=jRe8N)VE9&!`-|Jsc zuemS0`hxn+r3#iGrr-8E0)3+jD~7Q+|R|381;enuYPx_j+2^1-g);Lpel zEVAmKksnr;w|z#Qn0zuiiF`4TerpnWW5}K~iTv?X_S7Wuh#2dhN#v8nZ&MSpWYeeNOj55)a1gXkx6o9_*xzsP)* zIEa2D>Vw4~`VX7m!h`5X6gid$(4X)sycj^g!t9hkfc}Lo+hYLzjQ9(M0rWS1n;8et z?+j=TzC-^LoKf)({gBp&$ame&kYf(Z_(e0?BDhl{T^q> z$2aKz%A;!DpdXx)q`g6ZIQsqc8}y4=H3DzYKhno6_MxBD(r@iUe`$RnuMhpE=4SUk z^qgLuPz35*rK9BB2Kdabvsu%t3*azNT^t;8se)ORK z4c*b)gMQdgA*%=dai+`vW9crywJOuLk1JvqcDG|Ib^v?bwu0S?je&uUiqzh8NrMWa zV56d9Be2(vi3oOgx1%FEzK*E#UcWW#JC6ArhuF`v;=Zr*{QuW_JH09|e|G&YugcFC zzSiry?ch^h$foqn(<|Tc>t&eti zNq=y4=k;IGC;Ykbk1y&M+I*H@)Hm#P@8}ox4}bSK>qULU=wo+#Q9tpYU6+1QU(v9^ zy9@Le=d5_|0)0leC3`K{|O^ZKCyk2F88 zFPeGgsOPKxXsxrJ*C)O5=5EjHm-3`#p4T@W+2#GY`lliL-#=F$b@@N~%+*h=vhuNW z^;H)wzU5r~)$l+6^PE2Gn#EpxPQSIsic_A`cfGXf70>Cv_TT5g=k#H>p100(`mrCQ zIMkQz@LGOWe|Ev@W1rQh-F^DG&+6BHet55E^=<7}S@Bu@+l;F}c}5?1;MWg7qo4cF z>4Top*S-B|$7l3+-*nmG8GYU^i??`2zgOP;=F|GVQ3u@pwEl1Uzk5Ed58UE`BcIj} z{@-PrKdmp^ruh9S{o&lz7Cfa-d}HC{r}T>_zJJA2`o@kg9`uy{@zdwmdrBYq%Zoof zsh_<5gQuU=SHAJ<^-tdrr+&Js~ zX8rK2$EP>zi+3ysH0zJQe5qrzKKZk6TQ}>Mw_AD1W_|Pg;=S4W=V!V-Fk2tJQFH&< z`svS>?>Jjuz1lggXX~$LKHqY-KKsMn-#Y`^GE?7v*$X?*)W46vZ<(3;_fs`3g_y``20R^BMa8{SSL$1|D$H zn2|H^feD|TGXpPpwV~Y%{9xVNSDk?;bYJ7!$MJ>VN9V`!h8x$p?s5F#{Apbt$0Is- z*za+C;^tr0c^t1;b?Uz!!!KUwJohm?(8GAqg8y##Fn)C8o4-ATCq4SuOAp~oEpET_A-t*GO}!t&pDwud z_=oVQF%R$X5I!~Ym8BlStG@luM-Spxo3(!YK|JfSOGiG4Z@t~z`9Zwv;f-VddEI^Z z)FS)x)+b#Zq9f2;Ipgl_3S-(?S^^sJ^1Z0M|Zym&z-sO*n9BZ6SSc=j?YE;SY3UU~GVcj4XBHf_EO z|NipH8}7ox=Um+NE_{5yt&hA5FYo&Ews+y@C(K>?EL+@%kS(S>aCnzV*4^+=1sGH{+Q*@cnbwzU2oD_k!Cw0Q>EI_w5{j3tA1lodYoK z$4<9%09w7DZs!0@cys;RIRJ-$^q<=}0K5MCt=l*NN3Q$GZ5)89hmF3C1F+A?i*Mrq zZ2a*dw{ZXtY1sNU4#4wwFLfIS;Kt3rxRnDi@4hE*EfqP;Q%~8 zxnT+i;EF@npTYt7dg(=zIRM+d_U>d3z&`iRn9Kp#Y3%irIRO71a@AxG!1R&FP38c! zzkS!q9DrBmt~Qwi(Eg8wH*)}5Hux~?M zK9?MKBM0ET3wOVf1MuEeYu(5Jcz^Wo6FC5v&3<Am9w4#4T-SDnBCm_6&)8#n-e|NPbs9DuF%eBuTUz}_Qn zynzGI{?}eNZ~)q0aK;TBfc^fp?+qM)hJpXMfdkNXyJc?R0POqOch_?Oj+^@8^&Eii zy{BK#0eJN6vDb3|mOJ^X>p1|8XP$ID2Vkvk?XKqlynXXV*K+`#ezV2(9Dq;O|LQsp zz|LLgUB>|^-=B6J2Vn3qqpsrsjC=oz>o@>kUva{99DsrAx4n)7(Dls?uj2qbc5{pC zH~>d>`)WJ~;Gj+~jOPGMKIQ)L9Dq|gj~UMa=-2nE@f?7)?(aCB1F+$D#dr?Dq}?|g z&jA=WcIojPfaMqeVH^iw$;Ma4aR3Ib_~eF4!}9^f{L2jGhr zE*;AOcy_1b$8rG9ySwdJ4#2BBZ8DYv&~pA#V>tjzUirfq4#2yuUmL>#=)36gF&u!U z-nnTE2jIMC`;FlMOndtLF&u!mUprz92jGW=yN%%h{IuEnV>kd`oYP_q2jG<%-;Cw} zJhuMJqd5Q*M?X561JGx!NuxOc7v0}?GzZ|U0qDH)k)t^Pz24n@GzZ}BM>ZJE z0r+uB%h4QwBX9nG6bImqX|Ijq0Q6e$#3&BH;eSmT#Q``h-eSc8=sD(+Q5=Aee>;8@ z2cSonViX79=wJRZiUV-|uoXvf0G`?P-y=By=l=A;NDja;vz{5r0T_A1w2>Tu4F-)H z$pKh=P|uMZfW2=xdn5N(Q9Dr-b-8F&(aKpZ%MsNT&ZE?*A4!{ntpE-g9kRR5n6aa{$uxHt}lJd-r_j>dl990Jc18rQsZa9ozkWEeGJYc*_c>1**fYz&bxRwKO;^bYgwB$z@QE89l`+^ z`sejSH~=sIv;PndK*ygi8^QtDVd>L{Z~zW%edrJlz!T^1HG~6j^w4`V4!{pRdJN(KY;xTN zgE#;`J$2F`4#0^m+7IFYoObM4#43%t~H1Q&@gkUK^%bBkN<5T2VnK3 zz8c5@Xz~1;133VbCp|lm1Mp+NM+b5M7WTShAO~RD(D4H~02|*kU?2zJh!3tD$N^}# z$+-hL0N-~zejo?nl+OD z0XXH(76Ui{Z#?yDe-6O@3%}~m0eEoNcl&by)*Cv%KL=po!sh-QfQ1)L@6Q3~^yjVp zIRNk8G`>Fv;KZW`_vZk7x=xS&9Du8Ty{JD2VBOEo=+6Oo`LkpCa{$Kwc3^)Fz@;0s z>CXY^bi(%iIRIU5-?%>qU{uT1`*Q$Zxq9jT9Dp7E{-YlU;J)jB?8gB(Z2!;taR63r z`Bpy;z@Kl;>&F3Dskyly2cZ395BB2#On>T*ejI@PKbz2x1F-ZOBl>Xw7Io~~j{~sj zBUkm~0QB1U!hRfpm8YEEj|1?|&d2uS0DSPy!TmS@>y2sX#{szhw4M8L0FExU?8gB( ze5dvMaR7$zu}VJc;_ir`Mvs9Dr|{|J9cRu+J)A_2mG3dG-5!IRJ0|{7PRA z!0L_9_2mHEy3y>u9DqKrKiHQ8@bJXD`f>o;TzOMp4!~MxjqS?;IOOaheK`Q{bZhL( z0hlx8%Dx#J(JWWm+83mjke1=mC8>0KaU}t}h3m@vWWv zasV!yuytP!z=BIQ?#lrfb<$dWIRNGHEA{07oY;BEz8ruvhW*)x1Mv1!zx3e%lq-JU zhXb%?m(Tie06zWj-98+EP0o6?4+r3_MbG!)04zRrP9F}y9i3^-;-2jK4Kn)+}6+H87F9}d9bqc7{j0r)E3 zKF0xQc~7T49Du3EoZN>4@J6d+`)~jTe|l&i4#3=J59q@I7}Z?#;Q)N~{2qNc0Q0`y zu@48J&AQw4;Q+KbW3xUSfES)vzYhoChb`9Z!vUCb*UEi30N=D-whss3na^AF;Q;J5 z`Ol{6dDn}7YvKUBf8@WKH~_02^j#AN;IkvYXyO1Idhth19Dt)HzthA4SoryCO&oyM z?Otr+04z6kZW9Nf|CUcRaR6?bIlGAiaQvB%H*o+SSnr`G4#2(NPHW--w4Z-h69-_} zoLieX0GG|Xsfh!y=*t_LH~`zNIj)HV(4ynWCJsQ;gF~A*0C%oGu!#fE^~OF;9DpCT z@72TsSn-W+O&oxChj(q_033PprA-`wuI;)saRBz)>AWTmz?{9#ZsGuZf7}^O9DrvA zoYKSrICS2LO&oy!8z0xi0l0A3QB53xmdhR9!~r;LQimoEz`^?-)WiY!ZP9-5=Ngtd ze%{_q9Dob%X=vgA>@>Me69-`0U3)Zf06u(r*Cr0YQ@`xg!~r;UkJe2bfcr*l*TeyM zYZyKU%hl12AgZGEE$S(?%@a!~yuG-%?E+fY!s~t$X1B?0iqlCJw;Q?=8{9 z0k~+RC7L(@cV6A1i34!s=kb4}HXMM%&sw~R1JL~2Voe-??`~SGi39M)iHkLH0J?9v zSQ7`}<7F3X;sC_|Yx4j3cMgDG=K%Qq8~}fw1K{uD0Qmbk0Dc|^z|ZFZ_&gi{pN|9J z^Kt-uehz@|!vXO9H~_vc2f+8|05~2T0LO;|;COKW96t^~bv(lXaC|ucjyDIu@#g?I z9~=PZhXdezaR8h@4uJE?0dRgf0M0iD!1?C@xE?qFt`81?>xBd0`r!b$o;U!mFAjj~ zjRWBN;{doGIRLIt4uI>G1K|4Q0Jxqx0IqKifa{$D;QHqPxF0wG?hg)t`-KDG{^0<) zpEv;SFAjkFjRWBR;{doHIRNfY4uJcW1K|GU0Jxub3kSgc%>i(~a{%1`902P92f+Hk z0kB?h0IVMz0P6_{!1}@gu-k$XQ`osaSUU2}dUmO7I83(}n#sRS2aRA!I z`o{sV9&!Mzj~oE&B?rLz$pNsQasaHa902Pr2f+Hv0k9r(0Ibg(0P8ge!1~Pru%2@O ztnVBE>pcg+`p*HdA8-Kd4;%pd1qZ~9K5ZA94Wfj~oE|B?rL%$pNsRasceF9Dr)S4F|yf%K@+- za{%nm902<@2f+T#0kEHQ0POD^0Q)@$!2ZtxFb{A5%m*9*^8yFJ{J;S)PjCRt7aRcd z1_!|W!2vLjZ~)9F902nQ2f+No0Wi;S0L(WW0P_w9!2H7jFb{D6%tssm^AZQZ{KNq; zPjLXuR}Y5+VBX>Yn7=px<}nU{`HTZ#UgH3m-#7r~ISzpNjssxc;{cfdH~{8B4uJWP z17Kd{0GJ;+0Om;!fccUGVBX{am_IoH=1~rS`IG}-UgZFoUpWBgSq^~tmIGkky`J4k_UgrRq-#Gy0c@BX2 zo&#Xs=Kz@hZw&`P9^e4T2OI!-fde2vZ~){94uE{Y0gyL10P+V1Kpx=$$R`{Cd4&TY zziSXu7Y9Hd;{eEK z8~}NZ10cU~0OUCifPBXRkoPzM@*f949^?SXha3QTkpmz4uE{g0gyL20P-gX zKpy1)$fq0td6feozj6TNSq^}F%K?ygIRNr62S6U?0LaH20C|}MAU|^ef?@;e7Wp639__Z$Fup93KOa{%-K902_Q2S8uI0ni_C z0Q3nQ0Q~|7K;OUt&_8eh^bs5Y{R9U&;UvL2Q85{up1_waj!2!^JZ~*in902_Y z2S8uK0nndt0Q4yw0R0LFK;Oav(7$j1^f4R&{R{^{U&8^=-*5o*IUE4}4hKNr!vWC$ zZ~*i{902_g2S8uM0ni_D0Q5;c!U51PaRBs9902_j2S6Xi0nkrz0Q6NH0R0sQK%d0{ z&~I@7^j#bP{TBy7AI1UDk8uF>WgGzg83#b0#sSc;aRBsf902_r2S6Xk0npEJ0Q7Yn z0R0^YK%d6}(C={o^nDxv{T~NFAIJgF4{`wXg&Y9=AqPO8$N|tVasc#=902_z2S6Xm z0nkr!0Q8j{0R1HgK%dD0&~I`8^qm|4{U--NAIbsHk8%L?r5phLDF;BG$^p=?asc$L z902_*2S6Xo0npEK0Q9vS0R1foK%dJ2(C=~p^t~Ja{VxYVAIt&J4|4$Y#T)?rF$X}O z%mL6Za{%F70C*P%0RQ3u;9(p9e2fEtmvI2_GY$Zr#sR?BH~@GX2LONL0N`;P z0DO)EfY)&V@H-9wp2q>e_c#D}9|r*c;{f1+8~}Wf1ArHD0PsT&0G`MJz!y0Hcq0b@ zf8+q*ksJVgk^_KOascp44gj9X0l+so0C*<{0RQ9w;GrA^S;N2Vm{F?)ShjRe% zaSi}p&H=#BIRJP%2LNB^0O0K$0Q{W;fX8zH@OcgZUe5u*?>PW?J_i8b=K$dS902^k z`cM3K|C?X)d;DI1#-H_f_`Cd_{%$|R&+;?DqLSx>jAY zu3gu#YuPpJ+IEe*)?M?iefNNS!9C&LaF4iG+%xVS_mF$ZJ>}kVkGa>}bM8I&pnK6h z>E3jYx>wz^?p^n=d)Ynh-gb|>*WL5(eQSWVz?xufutr!btQpo0YlyYPnqqCS##n2t zIo2L)khRE~WNorWS*xsB)-G$9wal7kZL`K%>#TX!K5L-0(3)s%v_@Jht(n$NYpAu< znrdye##(Ewxz=85u(jBlY;CqiTdS?v)^2OKwcMI+ZMVi->#h0LetUquz@A`lut(S{ z>>2hBdx*Wno?>sY$5eYw>^b%xdyu`zo@8&bN7<|FS@te_n7z!NW^c2{+3W0i_C9-{ zz0jU$Z?s3+EA5%~PJ5`m)ShZ@wa40P?YZ_|d$7IOo@{TnN879I+4gRGxV_w-Zg028 z+w1N5_I@*fS-?zSHZUWY70e7~2Q!3O!c1YdFk_fC%p7J9Gl*HlOky@Mqwp2YEM^xo zj9JD^W41Bln03rNW*;+C{Z(oAW#G-H}I&75XW zGpJeAOlmeYqncICtY%j;tXbAfYqmAxnsv>*W?wU~S=dZ$HZ~)hmCej%XEU@}+DvV> zHe;K$&D>^hGq_pYOl~$eqnp*u>}Gc}yjk8%Z?-q%oAu57W`7w#7LW;K0~tY9kQrnL z8A6tjDP#*7L)MTvWDglc7LiG06B(uQl_RsrE;5WPBh$z>GLEbx^T<9jkSrt<$wo4g ztRyqZPBN4%B~!^(GM20*bID#Zm@Fof$!0Q|tR}O`ZZe!KC)3GxGM=m_^T~cPpe!g8 z%7!wctSB?ejxwYyDO1XpGN!C4bIP7Fs4Oaz%BC`^tSYn0t}?7FE7QuhGOnyE^UA(5 zuq-SS%f>RYtSmFj&N8$tEmOIt*Qg zPD8h$8x~DIxJn5PD{6?FjiOIy_yTPEWU|so4Rq8BtmpV*crcP70spHgj>O6IyI#6AxPE;!7)#_|@w>n&1u1;6CtK-%6>U?#- zI$&L}PFOdrBi0q`jCIF4WL>gOS+}fX)-~&#be~p>%4W}I&fXMPFy#xBiEJd%ys8FbX~emUAL}d*R|{1b?-WOUA#_SH?O1D)$8na z_d0xCzD{4aujAMC>-=^97yuT4319;l0akz+U3m5~|fH`0f7=-5$F$rt} zqrfUK3+w{Jz%nomYy;!KIxr9H0|UWAFcEA7Bf&~A6YK;-!BQ|4Yz1S%S}+&v1%tt2 zFd1wHqrqx08|((d!E!JiYzO1PdN3dC2Lr-_Fd=LRBf^R>BkTx6!jdp0Yzbq+nlLBq z34^LwR4^%Q3ZufRFe~f|!@{yKEo=+p!n!ao>5k><~s5F^A2D+j>y!@&@- zL`)G|#2B$g%n^IUAhAeH5}U**u}aJmyTmZDOiUBo#5l1|%oF>>K(SCv6dT1zu~N(w zJH=43R7@3H#aOXc%oTgZV6j+C7MsOrv0BU)yTx#^Tuc|+#dxt^%oqE`fU#gq7#qfj zv0}^^JI0W)WK0=b#+b2Y%o%&eps{F78k@$bJ+F>gW7ilqmW^p++ZZ?2jd^3=7&sP= ziDTm!IaZFDW9Jw;mX4`o>li!Mj=5v+7(5n_$z$^vJyws|WA_+7mXGOU`xrmgkNF4w zPx${2@yP!hE6;25VEl9L%I(`89{&tqpzSk%H>M#g&uhC{{4;!lwtM~6m`<9%X1l%q zY)mcw*}B~-iyG6YmD;y^@;{Afu^l_L>+pMHI^?Jx?WX#x?!8#nEu>i_lBEi#s+^;yN2%` zZA_yd*|%Zk2jlNsba2Cp(;CwQ`yA2m`JIhvrNPHFjJ~BY9s1JA4Qo$oOy{lMsiE6- zjj2<|^BNu;72j*h#SKplZA{;O*|p)`{*9^Ywmljy>fM;S%xG#@rdwlL?)`oZJuYiZ zxNMR6{M@;zOLcd1LOD2 zpU`k@YE1w6VN%2JJsQ)?D@|#*sdZzzcE{Tq25lL~|L8j#+HcgDW?pf3!xw8drftVh zYdCSG#?xL%}kAJT7eZyw^#s9wNj}52o5x?(*pBpaUws)Fy<*yB=ZPYt$H}3x$ zHeaoGy5gZf8lGCJcN+7`Uk!Wy(JLKr^{;fEE90eyR=Vcl0M zx_0fA9$%(a(Qt0BwBWi`ijPj{m0s9%+7k;~LamC*~(??gWUo7!c&$MUD4T~-x_e?!TZ&cj>a?f6g&O9 zN4jC}-HKyA?~#sNuzPXXt3A>WC+t~loO`4$pYK(?IITx|`Qo<4F%x^FHU4NYjdH z{HWr|LEY1kVMiA&uIQc?U*p(f{nNUq6K_7QXw|-Z8oA{O#fQ6ePq$A$vFN{H_jLVU z9gCLBc25^Pb#igqFW01X4>`3M{oyrf>g%T!H_g2!t#-;8MZX8HNvC{qX0hLm*Q9=3 z&MH3We@z)FNO7hjXk?Rjo7@q}yArY+Aa=Inh zDLO3bmhRo;;^M8(yQPPwUQ)DO&@GK?eOb}tk#6az$1X3%PU@DvY1g$F*uPuq`1F;< z(OtTwJKJAf{C-TgwBY4##no-QrTNEoFJ9fWTe|)I9!1OLx~1dK>{Yb-`RerPSG|k> zd;99N>F!O%m6jeqtXOa7tJ1~CUt4rv^Qtswt>MMPe_WaV zd}ny^+(%cYO(%{h9)9Y|wDZX$iyn7gnYLShRI&chD^sfvM-|s!bY=SRrqRVekGwLC zJ8ev{!LC=P-8LFqY`NBzDSte+SpJW$X{RaUig_P&O~cO^Uv$b{(`y@FSG;*k*R7Ew|~KUixH0@!|4a)4(Yci;MqxMcVR= z8;f^ex*|QW(WGLd=~twUKb};i(O0ByH{Vq3b@>%(#;G?KD;;x1`gr}xMY+or>Bsjc z7YD6=Mf!5$lw#Vim#3#rx~2I3jmy)ZwQnt2K6-iD|{;?kJ94?eeth$UBQ`7habBaoAnOr5(e~0b|GVi$=d~|Q7vA+? zamBwcNk5(SP|@+VOVWuOKU}Q$z$NL94<0UN47((~b;BdYj^|yHemM5gqTl|Pq_0{% zR!raclJxX~$BLPMUYz<5e!RH(or}{p`_Cv&edOZw(0^wXzmL2)Z8+?U9*cf-@Ygf>(pF~edwapVS}>Re)vV{`?t&D zmd+QYOUC44;XW6oHxHdtY_R@CX~U(TEH?iwtneqFES7$yOFFK{Q^m7)cS-y2_H=Pt zzbIHgN^e(E#D=DT-Er*wL@ICAAK>9zHqD^C38!nF09&lPQ-yfAedF}GMW z;lkAOpy!M6mtUB!UTj{m!XX!?W1g5-oVMA8snz8#6xS}gAl<*s{9^p;7o_bzpI`L2 z_kuL+#sx*Yeix({j(M?ox8nuryX9Xhj@~)``SeT0UCYM*-s9!s?N826Lw9+l_~P;N z(>C9~QY;v8e!Az@SBuf-oS&BM_*$`ZyYth*tGr&^zv}s^^YgD4OMiP_I=k_WqFp{O z?X&xv#i8TROMm_FX0g|W=cNg^y;Ur+&v|LJj&B!J*E}y>*y^2Pn;$x-+n#%;81!W4 z^hD2hizlz^obKECz2cnn(b{uC-$zwyiBqjN_|M|)>77#3Xa6i(_3f0d z8TVtc#W9`Ip$Gm{th;%qwCMkSD!%*m%rxNce-$@8duIBs7T>s3e>6d5!TO2m#)U;Ha#nPvzpPK$VYOxefclzS%#nNqmoRS_b7EiCvJtbW+ ze)06-xKq;lKP;Z+o_R`oaNibb#15yVohP(NyDmC8P5!Axnlbm}^!ouzq;N4Qn;JhjAss$>*>u*O zC!}S6T{dlT=?Uq+gO^Kl_c|dp+_YRec!?9z<3BH#?pknsTK~Z1)0g9qPZv&HKD9Xg z_;kmQ%csA$JU-3acZKxszm7|9U$;UU`^0hSmG4$a+x0yzJzT7qZtrkh>N94=v}o1i z(w<+fn09*q*!13BE2V>OJ2ss&e5KU(!ei6>pRANt-sRZTcGs2D(|;V3`VU$;9rx5R zX~ugir@2FpNpEi7Dy@CgG3kS*R;m5k$D|iuZ-k7OSN8cOIQCyk?cO_C-gh zbr!6Wp4;WgVUGGZIoU( z`QSA9q>a*+8yuYWnYvLr=c9wt{NFZ8{U;xk+8(fR8gRxzY3$gIQ|C<%O0RvoaoXmy z1Ji$6Z<1cR^}w`L?@iLNXC0Up&EF)=+U&se_BxxUCB8TyP3XL7+Wz(f(teL_n)W*T zfb@Ec&C(W|ACL|?aIC)ZKe$yo<~2L`@Az%g#S0r!p0aKF&;1Rl!}r^! z&KEYMCwAK|&DgRbt=zO-`r-3-sr?Jvr6s1cOXsh?efsm{cIlGSwomV_)h?Yhb^CO~ z>uuB43%5^gN48BLwcQ~-*`aOfHeiRe^-^uq|Gl(By7I|3>EyLrr`vnBNq3ytIz7He zoAmlUt<$uHd!?^_X`Ke#w^#b8-HvJB^Y%)!2JDzV-E^ov#6UW9ea;zLP$IdZyEFDwF)-iUh9dpOtIdCqV6X(V`a;}^+ z=gv8FE}c{7);V^ropa~jHQ-usO}I8(Bd!(KjBCd=R9#DPO}VyQW3DyVoNLcD=vs75 zx;9;-u2t8pYu7dGT6Rslwq4_{b=SOW-#y@7a8I~5+#~K4_l$eTJ>*_;Pr0|;W9~Kg zoO{nb=w5VBx;NdU?p61!d)GbeUUpBrx839Jb@#k`-x^>ouqId=tP$1=1Y%R7XTbr%X)@p0Ewc8qQEw`py+pY1|dTYM5-yUEu zuqW6X>=E_~dxpKk9%3)Cr`TKUG4>jJj=jeoWG}KO*_-T9_9}apy~`eEFSDoF+w5`n zI(weI&mL$mv?tmd?UD9Md#1h99%?VOr`lWXvG!VfuD#bDY%jJa+nept_G){!z1tpc zFSn=L+wJl8dV9XT-wa?DFcX*!%m`)$GlSW|3}KcqQGn3iL3}u!wQ<<&ISY|CVm)Xk< zW)?G(na#{-W;HXL+06`RmNV0t?aX*)Ju{!#&kSf5G!vQ)&4^}2Go#tj3~81$Q<^Q! zm}X5gr`gjCY8Ewqt*+0_hdmNnCwZOyo5T{ExQ*9>eHHWQnT&B$hDGqc&* z3~iP+Q=6^L*k)}rx7phaZWcF_o6XJWW_2@rHM_?QZfi*3fV%&kTqlu*+T}AMPw4$L`IQSWER;)hLL4t8req1k#%Gq*+&MF zg=8YxNJf&CWG2~3hLWXZD%ncLlC@+m*-HkK#bh$sOh%K{WH#ANhLh!FI@wOfll5di z*-r+P1!Y3nP)3v$Wk%UihLj~`O4(Azlr?2e*;59UMP*XiR7RCmWmef$hLvSyTG>{{ zm33ua*;fXZg{w>)*;q!Fm1SnxS%#LSWop@4#+J2ZZrNJ~m&Ijr*<41K)n#_sU51zC zWqR3O#+UVFe%W6KpbO9m=mvBIx&obn?m&m2OVBCk7IX}{2AzZMK?k9W&`IbfbQHP@ zorUf~hoQ^RY3Md|9J&sjhweiMq6^W9=tguTx)PmF9QJJh~p8kM2hYqzlps>4tPfx+0yC?nsBEOVTOnmUK+I zCY_V+Ne88i(n;y2bX2-3ot5rNho#HXY3a6fT)Hlum+ngkrVG=F>Be+qGomZgnd#1S zXu7nGqEpkY>DY8_Iyc>$4o(-Rlhe)V=yY{DJKdcQPnW0D)9vZ_bbUHM-JcFn7pN1| z4eAJWg*rpsp$<`(s8iG}>KJv6I!E234pJAXlhjS>D0P)OOWmaoQR5HHI#=DR4ptYdlhw`YXmzzZTivY=SC^~P z)$Qtdb-g-Y-LDQ<7pxQ34eN+?#X4i%u?|_6tW(x4>zH-TI%nOp4q6wjlh#e^sCCsk zYu&XDTbHfV)@|#!b=^8|-M0>07p@c6jqAvD)3VeI(OZ>4qg|p zlh@7b=ymlvd)>VbUze}b*X`^0b^SVj-9H9^1z-Z$07ifnU4W~hJj^Z8rTNLfpuUW*arrJgyhJ+_+G*cS$dg<)dY7)FMbowmpS z*x6>m(6F?Msr~VF#n`Ym%nf_P;IKGM4x7X1usX~RyTkCXJWLPU!}zei#$bNf9|nj8 zVuIKpMu-(+hS(v7h$Ui**doS=HDZp~BL;~@Vv^V-Mu}Ap3TBC2VwhMaripE0oLDF3 ziG5=Z-AQZZF*6=TI(F<0yrgT-PoS!@=g#cI0+v&C-Lp7cMK zi|Jy!7%$d~`C`8qFcypnW5XCRR=iFAA3Mg7vE&88l(A)u8EeLzv1be#i^im}X^a}H z#;mbx3>(YFw6SfB8|%irv2P3<3&+H{0y)UkDp9c#zjv3Cp}i{I>k6%@-cmEALGaRF@Nlz0}%f{)4#{B&+_Z>`)B$6@#kmx^YQo1^7jS% zpUnY?pEujji=RK+&yUYD+vkbTH{0in&pX@ajn6;Z=a26*+xLm@H{17%?>pP~jqg9( z_mAT-+wq9wGu!cr<2BpyisLui@r&cx?0ClUZFYR)csD!Var~Pd|2QAb&PSY|X6Gl) zSF`gK?7!Lhi}Ts+e8%~0c7Ef0H#^^P{+pfuxE`8a4{?1oyFP;bH@jZq`e}Ck#P!td zdW!3-+4U9ITeIseuD@p2UtEvPuE)4On_ZuAy*5|Z>&8QyUB7WXH@lvL{WrV5<9cs) zy~p+6?D~)Uq1pWq_eZn)Bkq@G_eX7_8{zs>I7;V0*2_jBCe&F=5G-<#dytJRk{$ASOW4|x$_p$$%_Wzg%O7lR>2c`KS z=7rL{5c5N6eu#OZG*85QQJODe-YCr*F@KcikC;bF^GM7mrTHZ0mD0Qt^Gj)diFu|p z&%}IFnr~v>Da|`E|CHvRn1@R9P|QcA`6%Y4(!3P&Q)zyRd8#x|#e7wouVUUR&08^l zmFBOQ$4c{9%x9(fEatV+ycY9YX?}}&t~AfZd{>(9V%{swdoll&=D(N+OY>mNho$*2 z=Ec&y81rLkevEmtG*8BSS(-0n-Ylzmvsd5J{2B9TX&#OFv^1Z_yjq%9V}32ouQAV- z=GmBUOY?2ayQO(I=HJr%8}o2!9*+6AG#|&jT$-0-elE?=F;AD~>6oue^L5PIrFlE% z@6!Ao^LS|50NKIc_Q*fDPKh1DCLdFAEo>ed8Cv_BA=A;N_i&o zO)1|*-YMms$Umk06M3kVhaw-9@=@faQeKMuRLW10r%HJ$@>MBcMcyjqt;k=c{1thu zl*b~UmGW8SwNhS-{8q|uk>^TzF7jO|-$mXl<-N#%rTiCpu#^WQAC~fAw?a1Gy{2h6`l*c2Vm-2b! z^-^As{9elMk>^W!KJtAj-$&jr<^9P2rTia#K&cOiexTG3L|;(q3!*l=_6| z7fSs?^bMuHA^L|>{}6pdsgH<$qSQ}BUs38SqQ5Bh7tv>w`ix-zW#s@o{Zgs#i2kG0 ze?%Wr>O-O*DfJ`Kmz4UF=ub-hN%SeDJ|+5tL(vzN`l9HMO8rsvNu@q1 z`lV986n#^vZ;Jk@)IUWZRqCUnpDOiJ(N~rFs_3su{Z;f?r9LbAtx~@geOIaPivFwA ze?=cw>cgTREA?a1mzDam=+8?1S@db8J}vsSQoj~`Td8l0{;kx%MITq{fkJ zmHN8q?@Ik$^m(N|FZ#VwzZZR9sqc&auhjoVA6V)GqaQ5wgV7h3`oicBOAbKviKRX< z`o;J^C{gu|rM@xx$5Q_oePpSRjDE7zPexx^>MNtaEcKVsXO{ZR=r>FKX7rtyM*P&idr& zm$QC3`sS=}j{Z68pQDe?`snDVvwk}I>a4Gh{yOWgqtDLz?C7_%emnZ^tnZHgJL|ur z56}AW=*P2uJo@siFOU8_>(8T4&-(P}*Ry^-`u41EkN!RD-=mMu`uOPQvwlAM`mC>y z{yyvPqtDO!{OI?yen0yDtnZKhKkNU42V^`T_&~-7f)`}GAoxMX4}vFTJR$f(#utJ& z_)zeoj28tz%J@<6q>Lv8U&{DW@TQD61%Jx;Q}C#a zM+KkC_*C$!j8_G}%J^0Atc+&`-^%z_@UDz^1^>$USMacmhXo(Y_*n3=jF$yJ%lKLF zw2Y?(U(5Jf@V1P%1%J!(V zU+}<;2L>O^_+aqDj28w!%=lsO#Ed5fU(EPo@WzZc27k=>WAMm~M+TqF_+;?Pj8_J~ z%=l&S%#3FS-^}=C@Xm~P2LH_XXYkOBhXx2X)QqPFU(NVx@YamC z27k@?Yw*~N#|EFx_-ydn%mD~~oAKM=xf#z5zMJvg;Jq2|4gQ<)-{8R+4-P(@@!{ab z87~fgoblt}$r(=$zMS#p;LRCt4*s0+=it#9j}AVa@#)~z8Ltk0o$>47*%{9czMb*y z;N2PT4*s3-@8IDX4-Y<`@$um087~ihp7HbG=^0NCzMk>*;O!Z25B{F<_u%mvj}Jbd z@%iBO8Ltn1pYi+P`5Dg-zMt{^;Qblz5B{Gy0P){52Oxeea{%J^W)497*~|fmzbkV9 z;_uEJfcRON0}wwua{%JAWDY=lw#)&D&zd;^@!2y6AihiH0K|989Dw+)nFA2tJ#zr! zSY!@B9GlDmh+~yG0CDUx2Oy4R<^aU8%^ZL@)|mqk$3Ala;#_17K%AS*0f=*zIRJ6) zG6x{eW#$0Hxy>AaIM7ma{%IA%N&5X_c8|{?#0Xjh?T7 zt;`&NSUWQZAlA~%0f@CVa{ywk%^ZMOdou?h*5b?oh_yL$0Aj7q9DrE6GY25n^2`B< zwLNnHVy({{fLQx82O#!>%mIkKA#(s?ugDyL*gG-@Aoh~X0f@aNa{ywm$sB;#dol+g z_M*%Ih`lLu0AjDo9DvxnG6x{`vdjU9y)AP9Vz0{_fY|#o2O##s%mIkKF>?T7ugn~P z*gG=^AokMC0f@ada{ywm&6RJr_A!|Q5PNav0L0#$IRLR&XAVH@-I)UrdwJ#n#NM7c z0I}C+4nXYvnFA2BK;{6%Y>+tsF)L&aK+F!A0}!)B<^aTOkvRY{Yh(^U%pREo5VJ_; z0K{yPIRG)MWDY>gE|~)mvrOgy#B7r}05R)i4nWL4nFA2BQ04%{Y?L_wF)L*bK+H~= z0}!)R<^aTOl`Frp`J~JNh}kQ10Ad!)9Dtb3G6x`LwafvC*)4MbVwTGsfSBzv2Ows> z%mIkmFLMB57R(%gm<=-rAZEqP0f^Z#a{ywN%p8E2Ei(roX3fk2h}ko90Ad!+9DtZj zGY24M)yx5i*)_)ui~VN~K+Lw80}!)r<^aU(n>he63ug{M%*L4m5VLaT0L1K^IRG(B zXAVHj)|mqkvv%eH#O$3p05OYa4nWN2nFA2BdafLRrOwP8fSBbo2Owtq%mIj5KXU+L z_Rk!E$O4%I5ZNGe03s`74nSmw%mIijkvRa7EiwlnvPR|rME1xWfXE`50}$CHa{wZ% zWDY=Nm&^f(ER#6^k!>;uAhJ&807Ul59Dv9|nFA2nD02WJD`gHqWT(slh%A*k0FkXS z2OzRm<^V+Y${c{mVwnRF*(`GaBCBN%KxDTZ84ml;9DvAnnFA16FLMAQ`(+M5WWme< zh-{cS0Ff0l2OzRz<^V*N%p8EomYD+(Su=A0B70^IKxEO(0f=mxIRKGWGY25DYvuq% zmdzZ1$hMgS5Lq{K03!Ql4nSn#%mIjOocZyQl`{t*vUBDDM3&ARfXLRF0}xp|a{wZH zXAVGQ@yr2;Y@Rs)k<~K?AhLVr07RD09DvC7nFA16KXU*g`)3Y7bOD(I5ZyrL07O@i zIRMceWDY=d37G>B-9qL7MAwix0MR{U4nTAfnFA2rMCJfQSCKgY(OqN?Ky(?I0}$Ot z<^V+3kvRa-ePj+mbRn4o5Zy@T07O@kIRMd}WDY=dDVYNh-Ad*FMAwoz0MWf<4nTA< znFA2rOw8>S`_CMJ=x#CxAiA8)0f=rVa{!|2$sB;_eliCjx}eMfh;Arz0HQ0(9DwMK zG6x{Kq|5<`ZYgsBqHD?=fasnw2Ozqr%mIjQDsup$tI8aJ=&mvcAiAu~0f=rZa{!|2 z${c{`zA^_Oy0FXvh;A%%0HQ0)(V1cYnFFxV^eZw4AiA~80f??Ga{!`y%N&5{;xY#y zy1C2&h^{Vk0HV9g9DwNZG6x{Kz03iKt}k-{qWjAnfan4<2Ozq^%mIk5FmnK+JIow_ z=n^vrAiBlO0f??Ka{!`y%+>Qpe_WY40MSim4nTC3nFA2rW##}xmzg;L(QRf9Ky;m% z0}$P3<^V(&nmGW`jb;u&bfuXC5Z!6!07RFXIRMeEW)47ft(gN5-D~CmL>HSm0MX56 z4nTCZnFA2rZRP+(mzy~N(d}jqKyHYo0MSin4nTC(nFA2rb>;v>mz_BP(QRiAKy=-i0}$PJ z<^V(&o;d)~jb{!(bmf@?5Z!s^07RFbIRMeEXAVGg?U@4*-FxN$L>Heq0MX574nTDE znFA2redYi}m!CNR(d}mrKy>|?0}$PR<^Ti>$Q*!R1DOL5tRQm$f*oWIK(K_&0SLB` zIRL>LG6x{oL*@Vki^v>+U=x`G5Ue6|0D@g)4nVMs%mE0tkvRatIx+_!*hl671PjR= zfM6q;0}!kva{z*!WDY>El*|DLwvssj!CEp0AlOUh00fK49DramIT#K0pE&@*ZZZcT zSWe~u1l!3RfM7kD0}$*da{z(`Wez~Fq09jYR+Kpa!HzNqAXrl700djg9Dra=nFA2) zDRTgVMP&{^u&K-e2v(Ij0Ku*@2OwBh<^TlS${c`TU6}(A>??Bsf`w%cK(Mh~Js-PA z@5})Rc9uOq8!Rnz0QT${|NP@?>_2k=g1u!9K(M&X0SGpiIRL@xG6x{oUFHA;%gY>q zV0)PZ&^WVq<^Tly%N&4UftdpkY%p^Gf)(aqh7G|EGY248V&(t@Tg)7QV2zmr5bQB? z0D?tk4nVNU%mEm*Wn<<51iQ=}fMA)K0}yO8a{z*MW)48G&&&Y`7MeK#!A7&^ql1-Z z4nVNe%mE0NnmGW$Rx<}6SZn401bfXKfMBti0}yOBa{z+XW)48G+spw7mYY4#9c(vq z09KsVm^lE!elrIkSa9Y51RKsAfMCU$0}$*udwx7va^?VhHoq}*0D?7V4nVNy%mD}% zojCx(rZWd1Sas$A1iQ{0fMD5~0}yOGa{z*MXAVHH@5})R7M?i(!NxNOAXs_k00cYF z9DrcynFG+__r}Zt2-coC0Kwif2OwB{t{i~B8nfr~gVkpaK(PDF0SK0#IRL@-GY248 zf93!L`_Bx3`rl{PzmEO;{j=&nkNx}mW(E8A_hbKl9`^6&WB)!6_V4py|2{AF@AG5- zz7O{A`(gjSFZS>IWB-l^_V4&$|Be^-@A%EGk0!NWB<+v_V4^)|IQco z@BCr^&L{To{9^ykH}>!RWB;xP?BDf){kvYUf7cK8?|Q=iU0>M0>ka#N{bB#EN9^DA ziT%4?v47Vu_V0Se{$1bLzv~_Qcl~4k?g#AO{ek_vUz+Rt2m5zFVgK$g?BD%{{k#9L zfA=Hy@BYO8-LK8{{fqs(pRs@UH}>y-$Nt^_*uV7v`?o$||JDoa-}-_5TTifm>kIa8 zy}|yiKiI$ZsJULBuz%|n_HX^d{;g-&zx56Kx87m@)<5jude~gAkJ!KU68pD)V*l1t z?BDu|{abIbf9r2qugBQG^%?uOUSt2(Z|vWCj{RHTv4875_HX?!>-_-xw?AP2_6zLa z{(=45Ps)0K!T#+x*uVV;`?nvJ_5OtY+pn;H`xo|aKg0g*Z`i;64*R$NVgL3+?BD)~ z{o60GfBPr)Z$HKU?XTFs{TBPT|6>34W9;AljQ!iMv48tF_HRGO{_XGBzx^KjxBp}R z<^k;Ae1QF%7qEZx1NLv8!2Zn_*uQxL`!|1J|K<_w-+Y4on^&-Z^9%NGp27ajH`u>< z2m3ewVE^VJ?B9HZ{hODtfAbUeZ=S;bGY6oax3GWn7xr%+!~V@@*uQxV`!~N~|K>UD z-+YJtoAo65huFV)5&JhkV*lnz?B9He{hK$jfAc5yZyv?|&8OJEc@_IN zzheL9S?u3@i~XB-v48V#S-#m}~oA0rI^FH=({>T310qkEs!2ab0>|cJs{^bemU%tTp|cJt{^c3$U%tWq|cJu{^cp`U%tZr|cJv{^dFBU%tcs|cJw{^d#RU%tft z1*}QS4tn#s1}0>|cJx{^eQhU%tiu<=wK*zu3P#T-Ny*`|bAi{p$~~ ze|-Y>uV29a^$pm+{sH^fM_~W@iL&l1uz&pp_OH*t{`DK!zrF+e*MDID`Vj12KZ5=1 zOR#_a3HGl~!T$9t*uTC7``5o<|N0p0Uq6HW>ua!o{SEf7&%yrnJJ`Rz2m9CmVE_6c z>|Z~G{p*XcfBg~muTR4M^-I{lz6tx+KVkp+DC}Q9h5hTRuz&p(_OH*v{`FgB-FIRC z`Y-HXABO$w$FP5W8TPL~!~XSY*uQ=a``5Q&|N1xVUmu74>*uh4eI53%zr+6ZdDy>x z5Bt~mVgLF+>|Y;<{p$y@e|;hLuRp~8^@-TOei8fEH)8+#N9DfX{F#s2lFW!ld*sOGWM@;#{Tus*uOp+ z``1rn|N3g|Uw@7L>$9Yc>|cM5{p-`QfBic4uW!fx z_3ydv``7Pd|N4IHU;mH&;{n(|K7jq>1=v4+fc@hM*gw92 z{o@VTKmL$w9)bPi6WBjqf&Jqb*gu|u{o@Ki-4=<3HFx9)$hlL)brFg#F`3 z*gu|x{o_m6Ki-7><4@Q>9)=js4@-*gu|){o~u% zf93$x{2Tkn!?AyS9Q()1v48v=`^VFbv=lzN_zC`w!Kza7=1HqB>TNS?y0$$I>ya{fg>XJLa{2QJo9tr1mqabLE`X{zi2! zozvRysLr)>Ui%-_wcwhl{gCQfan02J$p5aTxTb2qq`KBzbG3g`U5l>C+E1yjRo86o zuT+9Rcog;)LLpyt^KNMt+nRX{#CUW zTa#-)t6HnA*|on_t>xDA+V85?dTV~|e^q;dJ)!o)s=dOVVehbq)IM3Yx7cH9->lku z>_N4UR_#spsM=Sn_AYx^?Xy*Tn?0`f-KxFM9$5Qu)!t~2tbMs^@3e>3K3%o9+GA_q zuG)L;!L^T9?alV++SjZ0ZhLs`^HqDhJ-+t+s=eO~Q2T(@Y+y#HeZgvWFhkTnVKrNr zF>2qinmx=QwU1cMCT0|~ikYSM7pqyuOjG-f)vROYsr|=l7BUmneq=Q(nVD*TvYMsL zRJC7O&01!z+P|!3F*8~1XI8VCnXUFWt69!WSNomStY_w{{m*I^G!xc-Xf-RE8Eb#E znkCJYwO?Aznr6=0KgIs5nY8v(t69~|YIZfl);?=B+nRA}-?f^3&A_z}Tg}F19n?Sog@ zP)4kM@hUsYkhM=9v=C1wwDvQhHwVz*Qb(y{P_p2-~)7O4~mGx!*+W)V* z0G&Ynd_dI|=nQlRI)wUpf~s54G1Si+RNaFPqJAEs>Lzp)_45igPwQE=i|UKVMRHO**Ig`ID-P(n;0Nr&L{) z&Z>TXrRuVDTJ`fSRoA8S(tYW`>gQpqZcIm}E7O_P&(Bm{nog~LzNYHhbZ+(YH&qv> zldGT4sk%CyUH$w{)#d5*>gRi^u21JzKmSv8fjYtZ`Jk#R)EU;#4^>^FPO*NzsOlPZ zj`j0LRTrs~te;P+x=Nj8{rpnZW$H9_n>x<=d8exT)Pd?kb)xn2QB_x}Gp(PWs=8F2 zYW;jw)wSweb+0*vX;Zdu2yYt}i}&!1ucRVS^R)=}5bt5w~#4!eGyt?IUQ-1YNrRrjp}ub+pj zx^W$O{k&Y&o$Ju+=jp0$UB_NOZ&!8iI{5l|ysDem(bv!GRo%S~zkZ&t>h^W~_49sJ z_m2V8&jVI$03)cM7p&L;hEP9GSg{3+p?==5VhNoDj1}9! zIO^veEB1kb)Xzg!Yy=~zpO>uI35HTXPl^4P7)$-UWyM}F7%T>p>G8kkGb>hu+0@T( zRxAh8sh{t}{wwBFKmS>=AWW!!KD1&*m{I-wXvLB+rTY0&?7w18_4B6{i^8Pp=Tj?I zg;~|luU0Gz)2g3utymZ4RX_h)u`o=mem=HhWv2x*tDm2(SX#x@{`Y)s#o92p`uW?6 z#bI*w^SKqP!|dwkcPo~M>DABoR;;fvm|y+;Z^Z&J!TR~&iWOpp_4C6OOT-lG=Zh=W zh&k5JA6G0AldPXlu2>~zSwFvAu}n;}e!jV4otS6+{By-ZG12<@=!%tMrr0TlT0c)+ zu~m$*u{I_KN}6&x2QN7$dHq7q8ec zhKwa+%JuW*6>G+v>*voa7QII>>H7I}?BDb16}!f;>*v`kwvBPu&%0Ob8w0POhp*T; zMqWQJU$Jux9ZSd5>*wn$*8XHLckCU5ub;>NADa(GUq7#p{Z|aXex4uu_k2J0?|Fah zzlj4-zYm~t1N=HyfCEs!KcI36H~`hV|KsnkT!U}`xCefI{XT-qP3RB~Kz!cHS*YJ% zP`L~ofcpIgmFvI(2=-q&5L^fjK>dD%%9Y>%)bCHITnfjNTfqUS-?vb?7aV~4eGHYG z@mV+kalR^NgS+AUaXB~u_4^$v*MkGV{c!%dARK`D{ScKa!U3q?A5pm^9Dw@$5|wMh z0jS?UQMo7_0B(xwldHl3sNY{vxh$?{ZVLyXe&0pqzHk8Q_hD3S3ZVv~be&0vs{%`>5_kmPy5C@=s zUr6N+aRBP~iBxV82Y_p2z2P2l0P6RVRBqCq9slPlS+BTD9Dw?LCY9U70jS@1Qn^nY zfckwXl^ewYsNa`TxldE2%2ne4 z)bFpUTs95>x6S^>b>jfk@4u;BI1WJlew@mc;{ep}EG4nX~WoyxW20Mzf_sa!k` z05{M6%+=!naQE!rTs{s!{eGXy_2U54@BgV>Kn_6texS+~C_wPGS9ip~^Mn z0Mzdvs$4`4K>dEA%2nh5)bB4c&s0uh{eGj$b>skWAI(2pNDe^#ekAi! z4gj~(d{w`1sd6tl09;J-Sp9yc%GKlm)bDSqTuu%^{eGv)_2dB5?|-UXP!2%-eyGY7 zC zSPlR;)_h#QFROBAIRN$hv?{lj1HiR4Z*y-s0QLL0DmRw{P`|IMa(6iZ_4~Zc_m$&Y zzwfJZe>nj4`@kwUm;+G1FRXHhIRN$h#45L#15m$jta6Vz0QLLG0QXt`;X=zp+-MF!{l2uyo#p`4?^BbnD#yBh-&*Bfa{z+qFU_50*1x10k|zi&?d ztQ_?EeRP$Z&HxSUnrS0jS>> zs6VKlA*kOcSUp?70jS?MSUr2d0jS?cSUsD-0jS?ssK2P5VW{6{SUuZNIRO8A-(mIa zgZ{&_5FCK|{fO1G5*z@}PUufOOThuC->;}|sh+v0-@jNri@^b?-_Q8}2JU1fFe zJHOUinn1p;F7G92zO5lv3nSt`}3v4aj37mm_!l#`=$Uubsq-r`)!lJD;rm&Uena z=9(YxJ3jv7KSn%P0}g=dH+n7y8~}^`dyWUW9&i9u|Iu?n-~gyTr00sj0U&n-{D@o< zH~@w(d5($UO`db2`jeiE0tZ0#DLq#O4uI-cdM*nb0M)njTo*V1s(SuZ`4IBW~*YsQ)H~^}@2_EM;IjYYIUgtSGs^96kJa7OE-}4+F)%*0^A2bXO308~%ZbBo{rsNSgO9)UlSiv$Ni^+`Qf2@ZhjmwGM}901if^;{=7 z0IGlLxlnKbR3FuIrQiUNI|Y7fv485RdTtdQ0M%Rd+$%T$s>cdG>p5Dg*Xp@jZ~(~V z0?#G43l4zly?X8!901jW_1rKx0IC=3xnpnuR8Q7(%isX0-mK@I!2wV`TF*^`1E6}f zp1TGIK=o`rw+#+}>fL(o8yo=D!v!Dr968m?_1rl)0EVY~PMzxOg139lo$Bv;E*=~J z)#vqGJvacW-|M-2Z~#=_*K_^g0I2@2=K{h3P<>#}6@&wz`oY8#Jf~3gg+1304uI+p zdoCgz0M#e#Bi0Fb*${6_VhiSKxhr|LZu|Eb{ss2;TEhQa|*y=c!J zg#(~^(w&mFKLgel_td&uLYCYtMCs13>O8@h@^= z;Q){uOMHx6SvUZypY6G{Z~!d6<~g>Y00PGaLZbJNMjYH~^}LPJGmJq*X7S_^IbmtDZXXRnM_jy>-vMh6A8_?4Fwq z2SD}OJGtA&0Z=`6&+Uc-pnC6~`wa&`_27vQdycs3#e42J901jm_uO(g0IE0dx#w^I zRFB?s)8PQ9UcKk8!vRn|d(Ul$1E6~M#J@cU-s0h&6R-OC#LGQrUiI@mmmUs)>g#*1 zJsbel-zOgLIr-$~6Q3tn9}a-(_j@is901k#_gsHC0IL5FAHZt@P#XY#0JQ?(08l#s z{s6TE-~iaUy~Y5w2H*ftdjS3cwFuwi`Y_ zwGZF`PzwP*1ho<108lFdz67-s-~dod0X_w_72p6+YXQCmwHM$3P>TURhP|5_4uHk} zYxo+}Zh!+oEeH4<)OLUaK&=P(9@Kt-13)bZ_#iemYB&HE`>)}PP&>jo0B`&M0pPVI z-~d?czlLvOW3Pq-KrIURDAcBa13;|`_$t({fCE4+3-~P5wtxdbtqb@r)V_cNKrIaT zFx19?17NZL8oms*GvEMFO9MU)wKd=XP-_Fe4YfDm08onqJ`S}x-~iZMt>FMry953X zwLIVeP}>8354Aqv08sk_{tvZ4-~dn?1b&doiW&|8wL{){uP^$zE0JTftFHy?`4uHwF8h#VCPT&BT?5p8FQ40kQ0JTxzM^P&U z4gj@N;7?IY1r7kURp0=atgYc&ne46M08onsK9c1`YtVV&IFJ?x^7aP)i050JUY{mr-j54gj@h;Ga>81`YtV zY2c?(s|F4LwQJz7QOgDn0JUx4w^8c`4gj@p;J;A|2Mz$Wap1>MD+dk$wR7OlQA-C7 z0JU}C*HLQ+4gj@x;NO`puHgVsn+JX#wR+$HP`d~I9<_Yn08rZpejl}d-~dqj2mT+m zfZza78wh?NwSwRPP&)|zAhm?x09fq5hF@s5hSwaT_7MC-Y7xN!pf(ZwL~0em0ibpf z8~|z=!Dpnl5gY(&9l>{`_7NNaY9Yagq&5;90BR+{mo(d{h67-+{~A6ewUwM-`K?aP zC2B9h0iYHWd`xOH!2zIF6MRi-H^Bj*mJ@tVYCFLJpw<(7PijBG0iYHXd{Amb!2vK^ zv4$^7?I<_^7W?;_Qq-1$13;}Q_@>mJf&)M;DmVbtrh)@twrUMu)oj-q4gj^R-~d?c zzlPsRtt&VH7W=Q^znU#v!vUZ+7W`PVm1{Tv)XsuGYqoR^2f$+gHT+s?ZNULB+q;H; zOD!%q0MzD!13;}Vui0g_yWjv&%L_g)wY}f~Q0oi6FSWnm08k4IKCs39Yd8SZ3WEbc z?J)Sm)DnXOKy5Mj#nc*u13>LD_{Y>Dg9AWqGWf~VDuV++?K1ew=F8M@0L-_k;Wtz3 z3=ROb&)`2(3k?ncwb9^5Q!5P)0JYQLPg6?`4gj^);8#;?4GsXc*Wh1U?7xNsKy5ZS z0Mu%O17N;e4S$kqy^wg2D%Pz#WJ0BQrm0iaeO`2vO=)NlZ(B?t$=u!WlZ0%{Gy z0igCE`3KY@gabfrLh=&~tEk}sP`i-)1!@_>0id=a900>QyyhXb58(h%3z2*XY9qn{ zpjIOJ64XwF13)cB@+qjT2nT>#i{x8Sdl3!*wHV3AFl?rV13;}t@-?X42nT>#j^uMt z+Yt@`wI0d$p!Opi0BS*!4?=B7H~`d&BwvKuk#GR0B}qOBwI$&IP-~KW6KYSw0iYHo z`6$$;gabgWO7c~xT?q$(T9)LqP}>p?fMH!V`7VZi)o=i)g$W0M+L(rs5&N$VGb4Yd zh67+&n%C5%wk8|^YHgBlL+wpC0Mz0nABWnUZ~&;)NxlxXJK+FO%aeQ_!}e-80Mz;< z--p_tZ~&+UNL{%i8vsC5emz_9O{{5NXh!U3Q*F8OiP%7p_!?OgKbsHF=BfZDp` z*HLR14gj@x$-ko(FB|}B^OB!OtzI|))b1sJ&#?R&4gj@%$?v1qFB|}i{nzCGQ41Ij z0JVY152RKw8~}?Q)D}bVTEcJuEVfXSUr4QCH~`chCjXFH#BczpO-z0wwTj^YP`jA? zMQRzt0id=q`Hj>%h66zDWAY!Vg$xJ4Vk0&AkL$@+YaK3 zh67-+|C)SJYDdEXuvk(}J}I@O;Q&x;8V&%pr{Mrt?7t=-mD<#B0H{?>zN*EpYB&JY zvL>IE+SYIYsC7-gtHr)*H~<#=ugQnC*jVlPu}5}lW?Ss6h67-+wE8B?r=4<6r^Yt5 zw#m1p_BI>?=}4` zw(m9msr3&BfZG4$|7-ivI{s*C{1fZf`Kdd=?@rbAP^Ws` z1fCCd6L@aK;(4CbS>QPnd*}HdqxV9+2HqES9C(k^ci{aJQ|G-OqwzotopD0_2*wX} zB^X!7XuKVxaY%g%#wT?v7`Ml0JQD+FocsTMLH!HO3+iPsU#O$OJR-Ku{5nSSj#xJH zkvbjBQ|fmxf7Ab4ulY`l8aY6H5aa`OLy#N9qLC;4k~7pFLHS)qIZyo;VyM^&{jwj3nPOK^ZwPy% zUv>zwQS1}y7Gbwg&j@>_Uv>`lkFbBJi-cW7y(H|Ve%Vp|vag6~Vs{bC#2zDtiJeC5 z68nvqC3YS4p0M|bQDO&D9}4@Bm?U;1^`x*TsWXM0*)RK(x>VSu)T_c?rH&PLEU`uG z+kV--)WgCarcM@iGWD~tpZjH3Q*R4t+B;r+7Di3wu26AQ$iCkBX}PyH|K|9<%e z#QN|T`sGJZUkv|(x?}hq#PaY*s8fcYLj5xQ7wVef*AT12-=Pi~eo(*sqkj2K)KkNs zA_j+_)i3|6Uw#>}HvBbWZ1{21cf-Hym)}P{IQ&8C#Nj7WKMwzqm>GU0_2%$5sY8b! zN_{%~(|-A_)U(5%B?g9{OZ_|iUt(VP#p(aMmLE-hJ^X9x?%{V+j}L#GI(_)*)bGQ8 zr>-AM;(LfmyCnTfuLM zS%B*js{rpMMga~?eOT~e>c-a8jTN3uomp_^TKF?D2XJZX)q+=3#}*u$`nKTP)V&4w zrXDVMcrBcq*a7%Cb#=kjskaN>P90uw_*(cpF#&LU>iL4_`~UGvEI{}_n7?mRyugp; zJBly(xj3id5&m2Jrs5Z1_I^!V8`sFSa?M;j_rSeyPuv^#s5lGQyFUY-1<%B5?HcCJ zv*MZY?0ANX`}niv87ofY&z^U{yWpKrE0=e~yW*Yk?s$iaTlu@?9V^b|@18NBxR{R( z#)#r*K6V&Gio5yPVvH$H=VOmCsJNbwO~$C=fIfB^!;EFdG_`0Mhx*=xlU1I-HuI=ydUUzyMw6 zqx-P|#0zrU02@I(BCtKTA;dd!+X5RyJSDe1utBgzut~5@uu-VdiOnK@l-n}cG}t!S zIM_PaJchlw4TLR(O@wWPjU*nI+fLX};(fVog^eYinA=|1VAx{VWa68-t%l7;ZA@%9 zYGPv3VcTKjVe4V@Vf$eNiWld$AvPkmA~vJ=bzoXpAp{?ACj7e_>|N# z#K*+f#OK8K#0M3x8?2(^qw4=D6hGX3S$taY$-yAp=f(HM2No~gePeuNd}VxQd}n-U z@!r7_+{YGA-hFR;aPjKF3fxD>SI1{JY`}eZ@%F(2+{cgq2N2&M3?TmBKjjNJh5!Zt zwg3j8yaUG~zyQD~zyQqmr-q+n8ejlm9bf>;gK%tw>sQ`{V=3Gp7z-Ex*bDa$CIbcl zRs#kAhQsp$+W`Xr^KlG7|DPTh5g35-M;ue)eJJ0=F(}@b@>3kM;(aQg#W5~00Oh|p zCdPPBzKmmNj2EyqFo5`f?ZD!|0FcL0{~NHK7zG^0f50WU%_U<0KjaS z&tSP=0ARe#cd%bD05D&gb0Vto;V@&8f<)3;?3Vled3jL@&R*!9g0Vwa) zV`1o5<;i;N4E;+?4Ge%-8~T|T92fwxIWPcXc3=R+^3d^|LZY9FaTnOU;xS^ z_Sho!gYu3&76}GGj1qf;*d_J{F-`0dVx3?B#6YoEh>d~)5Hke>AeIUSVD^s3T8X`a z0T7b~10Yt5eMAfw41m}!_7gE*FaTn~*jL1e!2pOIV}B7-1_L10jD1E78VrEgH1-=Y zYcK#}+1Pi)xWNFF|BgNAv2o?gdkh_Wk=Q!+BQbX{0Algjm&EA70EpdVe-hIN12Fs4 zWB#fG;M@T0S2zP;0IDb890M=_)gN$90`{=#6*z|hds+1job!M^t$GN~k-*+o{RHfB z=T@lRf^#si*WqTs(SWl71^|}>3;>P?_CDMXFaS6q_ycf7zyRQo;4i=}fnx&a1b+f9 z3K#$!6)*s}D_{U{TEGC{x_|+|fx%ya8v_PlzQ1#4;L?BrsLlrdk8^NTm&3U__(!Va z;oKhlCpbS~0C0iuuiyxQ0l*!?|AJEl1_0Lx{|pWi7=Y@NIA;kAK=n-U_nhkl_X+48V?UgBMWS2MoZ@)do+XmJb+!{Z<>iLG_F9{hiwg z*AWcBuC)yY05=j0!0x3D1^|~53?Tj=9@SsM_jhh){C_)eIKcqS_jitG{J%P?2jv`5 zFaWrt;4k(r+F$^1O~C-{UA4gg;HH8BP!k6Xz}{^ee1{r1U;y^+odc`7Sn2<}fkO)h z0Jj$W$i`9|48X=#8+-|lE*OA~y*Bt0HEX~CY;3l{r{DmC0od4WgI}5N-v$G)vF)5< zIL2TAsz2tOWbiP!%3uK0m;o=NwhS16&80SY8ntA=0H`4Y20-l?FaT=CfB{e|1`L22 zF^&Or>a&68wZZeK1p@|PbG;4TN9`9d0Fwo6@IY$4fB~4SXoCT$zFhi$UErdF0mT2~ z0(Tw!(PU8@3;?b>7=Xzt=fbN#9=^YG=i$Tnz+`tD{MKZ-=Psz8q31Y&0g(Fu z{%g9R4F+Jkp$$GvjT0~c(;aQ_V``d!0hn%SJHFhh(+K|D27jhz2^fIsrZ)IAHA=t$ zOn0@xuc=7_24K3a4Zckc5-z8zJD7GfZQK20M!NcTp{8E6xfSMj)0A^dXi7$|&1O{NXN1ONqIZa>yW}CFZ0LXy?15ka`^#5|0ZPNw=Fk7b$ z2B7+@`2L=oMXnYY06AP>0OWQNKT+M+^#5s)BL)UwwpW|@i`imrFaXt?^&B+fHRPs& z0hlf4xohOIfdQDU*9HS1_YDldY(dYBBUg_2klBiDFaUDvzyQd(0|Ouz4-9}DJum=j zSAYRnJgN-_K&~J0DYI4EU;xynAbv$n3gTI2+j>qRH7LLU%=T>)|Dxsu7=YQvp0lVr z#_9i;Am^Znak0OtF&!2rm~1p^>g7Yx9Br8e8w|jFQP1sGy?4(6Cthv7tLKQD zFWV-bZN6@KaDIG$eh=TD-%oY>b$t)%df`WK{qQEZANUm9U#i2e`^Wd^dEoo=d{Ui# zJwJSZa_ixPwBdv3dBY#!`NJ#WeSAyr2ObLVE7ix>`}~&PFFcnvJQuxxcrlCz_%e)- zROepf2i^_i3E!XbmFn1Q{H40}=KGVgj_=Y+>C z!+%8nZfImq{*Ja z_s71$_s8DB_s9Oh_s1T>_s2fM_s3qs_s4$1_s5>X_s71%_s8DC_s9Oi_iuv%$UejO z$6mwt$9}{2$DYIY$G*e&$KFfzucPjD)Vr3wi0_a6i0_X*iSLhniSLiSiSLj7iSLg+ zitmqon(9=W@82drK=y2^M=g7o`~&P?@)EFzQ@v@~%c;J!>}m2Lu&>FJz}`;vqoZ!L z?DJG7TJ}4>KlVJnKlVMoKlVPpKlVSqKmGu|KmGx}KmJ0h?<{`;-yi=1-yeSi-yi=2 z-yeSj-yi=3-yeSk-yi=4-yeSl-yi>mJexKcfc&4f{Gqn|Bl39gmr{LY`BV7*_*eM; z_*?k?_+R+`_+$9~_-FY3_-m;?vi!MJ4_W>mzCZpSzCZpTzCZpUzCZpV`BnIjK8}dV)>`|{%tS-`LFo?__L`VvHV@~&&WZ<_iuv%$Ui2J4S$*ZHvDJu z-tebWJz@FV`2KA$0Quwi{`lwk{`l+o{`l|s{`m8$9h=ns@N4Cogae8=B4?_Bs#TX;}A>fMs##+VU)lQlaEElr0^+xfAA`Ne;>obv+(_Wj0^8-3;*)Dz?=|1=5vKPBmB(g5_3xUn$I=n zobWfFi_A&kbNK$?b>wIJ92TDEbDKFXywB%8GC+8s%LZhG@WNEzm7Ffa6Y>4MCcW@R ze1Dfg$RcEt@JW1sa<#~hcNrFSS%q)9tV8Ar|HSuiBNK&>wuP6v>_mnNPj%Ufj1}JM zvKJXFJl171GFo`8%Wh*Q74q#ATWTa3o3jc-`{n<@c*{r0d5;$BPd?rwgWbV;t6hBU}GrWfbZ`%h~g1$ zn_#0TUeP8u2OB2paw@*zwhlH=)ZdJ{n~IO%`;%*f@9#DgIW^c+QBPCx7Pq~y!LY@! z$rPV)TMe5{@f&>q&DeB`@8J8p&8PSezCZCGe1EqQ6)$qz5gRh7 z9Ev~U`xB4E_jeyf@k;ky@L?3sbl(OaNAXVgeei)455@N)m(9hbJchpFZjVMjb$c|6l;(12{GS1|YtGV+VX+ zd;-T7I6qhe7=Zo0V-VsaI5xrciLc<;1=kOj0R{lJ!TpKv;MfNkfcOxOjer4wm4KOu zKY{Px!Bjf@3ddT&0Ki_r0K~^|Yz7QKd=1BLz;MLp;QczrBfbakAO449L5v5mAus^2 zA}}NIM;uE60}#K&u_iDl@lPC!0+SLyh4Jc`mG~=;Wr1ml-{M#o7=ZXMj)j2%h#%uv z85n^0GmfQ!0f=AYSR3;V>yn=y8{CN%VR!+?STP+^)cVU{=fjh z0+9z`gJ1yS3psWO1^||bJONt-0|0A8-he%V0f0p!kH99u0Kh7dS8)HS&n7;TW1C-RhW_gZ0}vn1v2ic}xc}4{6MxRJbT9z%>l|wb0|0vm0|1K$0|1*xKZDhS z0f@hcK6gwXY#;qDzMo_NU;yF+;`@^W;IRTQ0PzR0Cp@Mgexb)2zyOFnV1E#c00R&| z(PI^00OButECUQc{6>#;fB}gA=&=wm0AeH9M`ka1%!Jqp_7kxbFaTmJ*jL0_zyOH7 zV1J2^>9H9w0Ae*@0K{&v--zXa0TA24z9ZHH20-kG7?Aj&sos_Nq8>ZKek7Iz20&~H z`;u4_7yz*+>`!7*U;xCXuusKT#eVe|miVk5+aks#zN^Q+zyQRD_1G9OGVx`xpW)AX zEDd{_*cups__iK z+=(TcKS68}3_yHik3E6`h>z^CNiYCnmG~>fF2MkZW#Z2e+XMq3)``C({&T9kB!0BV zO2Gh#of1P8pW0)qU;yG@jii<2_c6zf9~L3_yH(kF6797vCQL+hg#=;=usK&-Yk87=ZZu9?J&<5WnAJ{a^r5 z{|7Dr7(mqffhzz80CxcV04@O-0Neub1-J%a0B{e$AC!-f>h-`?0Iz`i4+dcOQiEqG zzX80X2JeXaJN7J`6A|@x;QoUF*s~)CAl21TenqOIqx=hef9GVt{Rabps{vjE_a6)Z zE(drH+zv1RxE|m=a6iBRqV7%9yMZeL1_1XT48VN<8axSZ2^aue6YwUuCtv_@QNW|% zrhoy!RRIHly8;FP_a6)ZZVMQI@?F5cYA^t}|KMS8W557xuGHXVaA&{(Y%bN{X>e=6 z0N~nyx52#u1AvPI9tSrE3;?c>FisLukI2@F8_P2in1cqiO{FaWqvU;xUG za;_8@0Ng3?)2ORrvb6?Zg=+-{V6wLce}#($24J$e2A_qi1qNWUy9U37%jI=ZR1YQU zpeX;#xnN)brW|G@y@#(|HUuB^cT;LgFJgG&bn0Jjc&9j+Z1fa%^E z{M~eM4F&)=4-5eAKNtYqJum>%<<9AY+Xn`qd_VAi=Kv}n(7A!c2b3@9+(F_8a0$Tx z%(keBFTgbf1Au!71_1XT3;=E-@d>#9U;uCz!2qHz2i!(50Jx6CJCy&J>TW1MGS%5o z{$#4F5%o0ST7m(X?Nt+hFVg*jy3Tk<&zR$a*ionQ{qi77y#U6;+y8{)L;N`pNW6M{Rabp8w~~k zR~igJ`P0s&CZ4MN>QqMo?ll;I^0A$pO?=jTwHgcn?lu?zTy8J`^X;7DZN6Sjych02 z7=ZG@i4QwR+~UQ~8CU)|@#LC#GTeVK0J!GFo8kV00hljJ4gkJ?4F(W(3e5L+4m(_S zFaYyyo#PJIop?9gcQ62p|2rq%eB&Anzgz$4K4Q(nKW z2Opm6^xOrzes~SsSIXDdbHF#}`5dF?mh$l<4`0t8pPToR^6d@7sqwY-evi?6_goNs zYK;@m9l?jzxJvo*kteV5iBHV9#TTyei8apgeHs7wyvz&uGRzlzT;>tJE%OVXmU)LS z>p3}^r|@@}zwmmP*Z8WQ^CLOXFZtj(L-2+qPf{Mb$b z{5A9!K3k3NCVhvGh91N>LqEcsLvP}Xp-=I_(6jhnaIjO}we&SU7J3}t3jK~xh2HO% zJ&^LKWk006Y1tc|gNUyr`y}N>%buxa=hU));6-8=rF>`EQSd9Vui#x`cj3!mkKw~$ zr`3_aEV~Y01$z%3D0U$HQ0zl^qu7o3BG{8D4_Wpnyj1K`&sBx5Dmymi7t8L24~spV z@`xjUSavnO0`_*w6PA4rZx_40mOWob9&qIU$}hmy_haNoVB6zgc+N3-z4Av=9F^3rto&STUmpYVi{Z+ zXBFF3{=Sb@#;ouGAIpqsxTuWr$U_zW;B$dFA-uxp3UfyIhR-GDl<*LrYs@*}Cq5UM zlfqkkt}8$mtn%qu*KkHl4s*G5AG#0P`Dhnmdi+FCAJpaN@OUUN@OZrN@Ogu7MY9e zMFyMA1a~s!OA3c{*^LYrZt1ce884jEWj{JVxTxy}bcAqJY#Z>^I`SHY$6~{{&Jli# z&Eh&qcrSTio~Ic3iNcMsMO?=TXU6vM{KLpQjC?~lhUiS;+t?JIR~Y$(=vs6xx)&Ql zxH`6i=L^CS#8wbKk4@k@-E0BR2aG&GbU!vg?WcH<+lbfz z*pAqc*p%1+*qYd!ibJ_=%KO7+#RgD3%WYh20L8!DCdLL(yv%KAYyidA+~&pxhD+c_{3))-_;i~;^3)U`bf1Coj4y!=pg5!Z9*qCUJ5#(8-S55(z6~}&%yL z{+Qyb?rUKK;Dh0dDL(5y8#VyG9P=9=4;w)7U-t>|4HYkT9};`s+11WDR@}t2jbWe`b)eK$C9uCA`eOY6UU^`hvKU^hK0V2{G!M! z5+4SA>$R!HpFtlxwg%RQ4G?)kU~}kiFgt7jusm!4@qAMLPvrf;^}z;!J z@_N7`u>m5FC-Qe9Z^v}MW1f+x6ZtuIFOHpxPlfJpV*`M_VgnfN=GZJ)Ej9ocF7}c= zyEZlem@hT}STHt#J!`l$=>9e~0GKj1fW4bG_8Ay7Hh{gmHa38GYuI;=X~TiR27vp5 z4FKl_8zAysBF_bE9UDNrJICU|>e8+@>bxgU<24#ZDX(6*llA2*jR33&)V4b zm_p>CME;4*g*Nsuu?lPeVi?%V#5S-2Y%aC2r-_AN0}vy@-iAAZ4PbMzjXe%m1RKES zY8!i<*bFv+&E+<+o5%+d&lBD6F(6_>*Z^=n@DGR~VFQR?ia+78C%7Eg0OF~7>WS__2BJYA&9X0?lJZu1Bd)NTP{ICIt1!4mb zBg6(U+1thjAf|{7K&+9NBQZ#90AiE)Z^SII0f=Sd-x1@)1~A><#{VNGiVYyXw8v1f z0Zeyzj5YEa#K%VWd#qOcZFGMd8zAx(!~;+H3Fgmw>^Slfh%sXWh=1-eX>5SVHz0aTqx(4?-Ou-(a{%t3^P~IuJ#;_6pLqLl9pF6ZdcjAyesB}+C-L!vhp+ojy!+tW z>v=i10~;WC^}(mt^G^JEy^q9~*ZTsW;{Bof+t>hlzu;WFZ}2bPKe!m;8;D(H6bU))e@z6E?!6luWr1^pFZ({>!{v=+x z=2zm82Y+1i(YaROt(vdkv&4wOZJE#Le&#p2pZN~{%luEgZ^;MekbxshexUo2C+L3U z3%Vb9gYHNEp!<q3K$@P?(I z6Hi$B8{LmSNB5)O6AxJVzwO}t%0BR8`Ht)d;*Ne!*%yh&8~k0_Bj|qT>jqCZ__@K$ zm3`y)%00{eLHGMJA=bt-lD*{5j%O%)%AYOIm>3$*T=tj03*HIuhIb@;4c$+SEb(H4 z4=a1m-#ueM_F&?>2G2G4t+FQ*pEY=_vOj$+GA3o8`dDSm%6|2+%$Sya3(sIPV_x>J z&jscLu_oq->}8)j%puv+KDU@-vbTNiF$ZOj``l!X%3eqJ`y6I2V*|*(hv(sQKKP&V z2V6EFBajuy4EYb}ewQi87HojvamxRI*WxlM_?q%p(ETpM9R}Y}{<7;% zbZGDjgHISdLiyjWi_yvQ&(Zy^v*o|LE=Q-E?#I7J_j|4%&ObJQ@PNek6JFr912%y0 z1h*})0faZW?STy-JYs;aC!U`03%6yk0fcWP9-idqA2xvSAh!*%5rr4I?T8H^JjrcKYyja+ zZhJERgh#n;iVc9Rip?tg%57Q3Gqx=@K=9Cne+CpLiaX!lLgPxz|X z0K%``m&Kcl47r+j%0l@yT0Tf?IJf7h11aC+2iS++o1wRKY0~;XtICif! z_KxBo=zhmUz(%kE6fePksh<+1A)sU@h1HioZA(gFR;Nrp5*U`^N?VyTJxX zycqFef(K*ozQ+DjJP7-c7(n8=D1PKvlG^~UcmBVj;ISzFggxq*l;Tru8>=<;D%ce^ zfQ{uEdlqa98vv{e8zA^6HWzB_VX!f50L9B3JHvhkOTz{LTf@EvYr_Trd&B+)i^B#0 zo5MZ_tHTBWyTb+m%fki;K1lFD6#sK95F5Z`Lydo6vZBTY2!01xA~t~Hi{z;~k0baS z!P`)L5`V=pOT{l8%ftpyd=r1iF;B2hY=GchfQ`C;B%X!hr|5oS0FJF<1AzVGZ<*|M z3^sTZiqE3^9kT`d#|8k)#RgD(7v1leugU%z8vraAe-P{+8$j`5biZTB!D|RUgXtQ_ zoP)n$y2vr<;41`AA@~WV%N)}VK7!)iiGL8hgWwy0{bK`wo#Q_TuORpY=Knk94)%@> z02Yrw4mOVs5Ig~}du#x(eEfN^eQW^p_Z{;G`^W#+_7v~ec~X2|znkLux=xQ>pu=@v zDPFJVkmB=tZr~|APjs-yTJ-$EWx(FSYj|HN&aU?h?gO?C9^^40jT4U@p+hyUz?(eg zq;Uv7qM<`=jd^A0?&MyF|>ruenyHM)xVp5oM! z58#F#JCr;@2YIYf@+ZZeC9lvi$gx`T4crsC=dn<9isYonPSGKft0`VAIqbES(Gil{ z9?L~1NX~=*`bT;JS?|Y4k5He=&k=Fmi04KeSNaQ??bjrI=hwSn-OH zy*1Au;;s>Il^%y1=~vVV|y zJ|<)@r8uYTt6Fwfif77BLw5NXlwIdzlQGIzWz0r=Qh5+Qwi)A$b;dl{BXdA@sm~4O zNW>W7Q=eWrLut1;t$N*#lecKP_ z=Q4!j%COwpLH^Q}$ zPj2(twYn`Ve9UcTWPtFr6o;{UcN;w7E-Bt(ISGhkBJPhx$izGJ}EK)tO5NPafXO5L|j4jX3)3pD@Xhw;s(OoQ=CBf ze2NPQ&u8wtuaEC9{ZBvP{WkaU^%K4yxW3MxaQwjU1Gm@peJgN!U4O#mb$!>)I1PvbM;)Ed8@1CI;{JUVb_jsJGw&YB_XI&MWzmaNWRj1ILy8!LRjel6+$BI~E@J zEce1aNxtD{`#nqk;g>r$A9$a z`JQmlz(1uA65bg&XW*OCCkf9C924J#F(`e+-1jjmedS}9F&wz0^qY@$#(dz9_#DUp z=|^xZpEJ^*30Dj}F>u7d4+A%pe)bp~b2jk7zy+n>eXb(|Z0>JF2H4zpnPB^|519Kd zGh{y`Tu=5z!tnyX3*0X7y1?lIp9@?L*@g^|z2mYE86bPeWg{|D_7cy}WvJ{am#xSE z*;^hv=J^M17I>NLwUl2OxLDv}viB1H6}Xq|L)R6I7jy?QK=!2T7RHzC&4gdc9(CQs z_zavX@F{c|u_@WNjCaSOWdA1IN%k>w-*u+!XV<030NK~fH|*_%9|dj{cv0X)vfo{o zBLigLCmbm7pTK>v4UiAm3dn%KcLLW5JST9Rz;6P#3A_ed1sM?djQp8|$52xk8G!AB z3<%sM;Vr^hu$_|56GYYR^S2H`sjOXfAqh$Pu20s&)4~rU$5&)e!Q+f`R(Da z>p3L4JT;qKuKU?oN`PCW^iPx?1<31&GC;VlN!{i@p+$Mim<2?Dl znit964L>*hTg|)V&uX3~|26#9@K>=>8LPqX1v6l5N}eP?H2lx-JHy|U983PC;t0u~ z#D-)nh5snI3Lnxjm+%wAKMcPx{6We2(V&JFuE?AowrHQw-D+gwA~tzoZ*of`3djc49H<2%`*VSj2q zV6V8(A{+zz#_h|nD>c7(_x{Yoehj-Y?8UGXHGfkaIqX5r_hkP`9;A3~*m;s4DGnR< zT-b4vKgn(jdrk5x*=J#wNxr4Hq~ssZ!{>zLW3sa%J}7yLKj4@^*im6WNglVuUJ5%& z@;l|}hdm^D&--^75Oz=4J7MR9eG_&~*fTcXJgy}D!+5M217WX(of7s**d@p|#z5F1 zVSh*;I#$IP2sOLf>f~CH)q9E%ce@X~GXRuM-|9IpDS}&p>h`>7&p? zp?^Z}guV$qgKS}phh7PN5_%-`N9c{v7ojI4pRoy?D-rr2^gzh}B=;rnL(c2_*s<=* zhCB~BuHSc=#xn?c9dcUNpKy$j$03J9{_1()&p4(LayH~^$kmXidfxbNu0!-blDrH# z8S+u@({&loAmkt~pJ$-)z<%fCYP`5^O~m)?7tPZ}r5ev5e%^Cjj<%nyy* zgtx{#i1Dxfw_?2O_++2NxQ_80<2c4|jN2HmF-~KA>V6nc_sVj&wz8p^H)DTZyn!`=Nr#8o~M2<*)O^tYSywH3hf1&Y0`9f<%Hli9) zjA)L?M>Iy1BU+oXP1UAiQ*%?ksj;ct)S8ves%90lnzQm*jalWa)|PBbwWZk7+>&o; zY$><2#%1HGamBdixO`k=Tsf|FZ+35WZ*gz)-u&Liz2&{F)!FK5b+Nj+I$zybU9N6z z%eGb9ifzqp`L@Qka$Bn>>#2H*o@P(p)95LCT32OPRaX^PHLuFAYFt%b)jBCVsXD1R zsd-XS2M;nipkG2lU4yg_)4rv~eAJRCaJfwAJc4u{GacA?+ z{LaRm<(;i%*|KU`v8=f)U)ESwE^ED_f4T8;`EqODY~O0%V&CSz`M!;P z%Y9onW;a$h7B@C;%x`SmSl-y0lg+8-6myz$@;Qw;<($?t*)!EM#WT%k@@E>)l+U!L zWK*gs#gyihd`e?VIi>YL_CWPO@j&x|{DH;;5b{- z^wuNUBh@3tBh5$hM;ecmkF-W-qpQ)y=;r8rbYpZmx^+i(M|DSWNAr&Sj>aA39j(RL z;%afRxVboA+*n*LZoQPfRJ~NZ)O;y_sqs?zQfseluWGMiujXF)UX8uVy;|32*H_mU z*Eg@vuWwvmUf((^JF7aYIIDS9epchG@~qZV*;Cb1#Z%3v@~0Y4l~1)MWs|B&#iZt> zd{SdlIjMDDc3*X0abNSk{JzG0<$bMn*}7_7v97r;U)NYyu4}!Ky-~eUywQ9kf1~k6 z`9^D4Hmn*}3~LU{hc$+k!&=v5*HqUO*EFxmuW4LUUelVH&8%h?Gn+H>nT?s{%+}-C zR&3qgpp-H&-_oH#cw2 zZ*JUN-rSm-&8_AZbDMMXxsAEy+}3m1bJcUjbIs@S=NiwI&$XszQ>&@P)aKNDYGZ0S zwe?W;Q1wvpQ1hYup~geyL#++jhH68xp}8U7(AZFJXuXxaRlQZb)qE>|tMOL(R;$R0 zswj$Pkr$1kELxw>K3{#l_c_ z*jQLDY`vJhSiM-h*nBa6vGHR0VryhJvKm>8Y>v!FHb#~sTi0dRRo4~QHLuIBYg|`e z*P5Npu4Wgro3r!TjoIbw)|1(j)sw}O%_s9G8&8%`wkBi~stLt}=7fAgV?sHh_4VxQ z)z^!!H@}{Lz47((>#a4}nrcn4rnx3x(^ylkX}zAkUcFwt-h4fOz43badTU5Fq#9BT zX%5MUG=`KzT32URS63HTH?PjGZd_en-8v;Zr8=cJrFlwzO5>FBl-6U}W7T8DW6j6% z#~P27kF~~RW2!O5nC6&#Ok+$rrgc|#S9Mo$SM#p?uEt&EU9I!8^Q-fV^PA`A=QqwT z&u?wbwpLqON&dJm*$r?E-f!@y_vmPy;;23d^3Nu@n-pEtC=;cX3=am z^Jb%2Hd|L_S5{XRS2nNAuWVddUfG(F&8TJ+GnzB<8I2j`jMn$E?^WL`zSsO-{=LTc z%I~!f&JL~)E)H%UoFCjcxIDP^)$FU)SBtMUznXuw@zwIHt)y<0bAH&iziH#Bd^Z)n_5-q1Qb zJG(l&IJXi;J5V=NC6FE-!BVB>PGAlj0}MpX5Jj{G|LzYj`%i8eR-< z4$p@-hL^)z*JjsN*A~|{ug$M*Tw7k-IxRb`I;}XZd0Kv2@;EmD$Q_WwElkGGEzPS*~oo zn!Q@RTD;nPHGj47YWZqw|7`zi|6>2<{`vlm{mcDZw`8|ew-mQDZ^>_I+*01sIyXDF zI=48td2W7gKtv`O0IvZ+9h*|l~F?-vlIPS+B_YM1VSl4kgIqvZ>{awes-`1O48#nLg z`(V~{xBXW6=8~?%j*r7Gjl=9`KgH=r<-gr^-1%|b?Qz^^v!N&3EtaR{|F!G5>*Bb_ z;<&f7p@(zaSMq=8I_|+Z?#H&$c`SK0bgOmBiAB?nkNbTw4jg40d zsIB`ApO6l0WkbKo9iQFc)y5eo#epl+fxBlzdH&_H-9FcK;HToi-%kgAFdN##PhYwR z<08&@B?t0O9!>}DlMP+L8LvO!ue%QXQx4=M|ET-G4V>}b55LuQ;4`*9G`BzHH~aRo zTZmucbq)P6Cw`*u@UHE=o}oGS`dZ)guI;>zq2J~_lg7^N+Ro!2dIj76Z0x$O?L6(F z=W(6~$6eF4orgR0gKYoSggd&n^DKw{G1v3(pnYv8pn;zhW-}Ey)b52HE`cQisKHjjefo(v!ScF{+Gv0>N;)@Tle#w9LN1t zHuU%G%jIih=5`(T(Kv36t@x<=GaG*I<%H#7S9Be?AP)R;9N4x4pXR_r54)%9z^miH zN8-Si4L^GVS$W1`f7^B7H{!s5jst%%JR7==1AlZ_WcCH-nP-Nv2Ek@XdX`e zkwd!PsG&y>J$X-)Z`$5t5=z?} zY;WfI$$RFu(mEhJdC#$S#-2&(YxS^Vh>56!ZI3;DKfvy6s1C62cMiz*vg@!XV~bsS z*YYDw6E2)Icj5AtbNl+nu2{Zs?0Jh8jkUu* zvU1hRB_CO`VBzwyc3j`Yv9>$?8@zw{%0(+KTD&AnyH6h2aQvzZE?BkltOX10YO-wY zy2Yjs`j&CAc8+-$ELgY9dUlue7WuLB*7?DGi!vK%Y(H-Ky4g!EK6&NhCF}h>y zG_c(_W$P|kzIgG9CC9H?vUJ{>rAyb%o9u_oUb1NUYCqzP@kj8Tt_>5%5Bk=`3EkZ@ zZ13?$%{~5OXP$g!=kL5Tm#n*JwYE$@bJo0>%NNc)bJay_7A={3;_=6Kf4Or7lg52? za(3bPBj&BkmabT}z+9BBYn(7{(v)BzSoC{ z52o=G#vR#v$eJZ9mMmDiOF)J zbCye^rK{HT+W6=_K@zEV)|yp|maJX7YR%e1-;E)4>;xnTGAzpvvDL=$Hu9IO|H#KC zX3Zh3kL^~BtoF*^o9|QZo4+sLFWL^ z!nJF&zBQ{l9UJX^i2|ku z4o4+&UDNFo-?7!~n`?^fa#pm&zO$_#>+Gu678!0sEU|C4ZRq~pSAMhb-{E)pz4+ZF zwjSTH)$9{?zJF##OYFPQ`mB%B_UY@2?D2T$+QUY8wu0k2?6}|aJ)J*s9PPkc%Ca{;Q)F9g!wB1M){fsV>pYY0^F4A| zkzp~$66cG4wB6gQ?6tRJJ8hY+wzIVybS3QX{zdv#_TKIj_|*+;D1Bsf_ge!UTQg5_ zhrZciT}#=qFw>SY8(8-%Trb$doWIG^^?u#@&sd)c!1upRzhQsoclulC<3exj^#42k z|I_|V>-1lze~>+#-cG-?)o1WY^?diF|8e`H=ldc0_)Asi_=)rv*dP1H?;l5hk^Qmr z(m#X#;v!w|eCy9yVt;f#RP|1}bM)dty3W=5PDWWr*<qXz{+Hj|>SO7b1+|jP- ze18XJ>l=4vr|jBR@=M)?3F5ZHF18OgxCabVE_fG*{~QAc3t<;WcMSDi7?!&@){F|< zI@pFEyuqyeu1AQ~+TGp3Q`OE=3mC<5i`D+R+BIr7s{Ml6 zYt{aq+MCt>k=i@e-lz6qwf~@YE3I8zW%G^S9ZB13*Q@?fv?j~WQhx#MVFpdA|3%s{ zS@uWje~tFgEc;9K|Bm($(_88nHgyYoC?BA;-#d)<;4GV={#mpKWv;u}{~Pp2XW5O~ z|5e%#Wf>?B`~Qmez%1LU{&v~}>{E93kD#@ev!D8h(C(FG6V#tZyJwc2qW&D(ky+*l zsGT1573%ye^UJyX!p;uH`VVkxmTDjIFQ!PKaO^k z{l5BhXw67mtN!O`_sc9E)j9qyS{r14uKr)snxXWn`ft(hlV$su5ytrsqTRb=Zx*I* z$4(gE+r5mRIC;X6M@$+wesXW`IN#CvJAT}_$&+o{q$7`<&^dnokk6hlb4CZtut8%> zZd%4(Yg!Jsac@gwk~fE#E`Dz|Z|il#KJue&t#h}0ciD+o-MhWH@rq^p4;waP*lTZ3 zJaKE!iIc18+j~AUW9xfod|*boEpJWVUaiPp8&Mh_^O0#={`70-F8koJ)3@$@^7Hn0 zx07w{q+4vQ=cJRj?sMWv)~kNBF&{CpXHtI5p<8~i>>JyQO}E(J=56(`)3>%xvLj}k zymiQl_8S{G^YhEUv3>82f4zOgrt-BBt;xf_yqt4Qu1?zezLV^j-BhWY;v$L2kVhH^aXM;vFXhWVdIr)XWmj*qf_`X|{@HPHU$g>0F1fp2Loq3LOy z!nU5)e%1_N{_kO9)jF2OFn>R!dd9z3P519rziAsA$f|Ntexx;xQ&?Y?b4|_a8~(R# ze=UMxOFqM!;r`dUJzuu9{6sTfvR?c2T+J~j{iXdqmhK$(p1jajSJ-E_)hDma@>4nZ zx9v0JT>F#HWbYRH?6!R6_$)tz-VkNpeR(~s13!Lv*dF=Fd|LDOk26)#W2_E=l7)GG zyBU_))4?d|4jI56=?2p1XXF~)EH1L&@Ro;b>n1V=mPc$g&t}oEyUKo?&$@MBca}}@ z1I~EVnrAz!G_TsH%r3la(4mj}{@FBfuGxbQV3OO9(ePZ$Y<17AtneGw8Fnix3?Dma z;0GBnX{l_jk*&!l9CRzIOYM_qb2*rwWzWR@Ze^7>pJ%gap0`h#t;ug?Wvh4A=C`ua zxsA0&x=JpM3n&KMu&iqvKj{lseYkz{?Bg{0N{{ceKkVi)=h>Mw+C9uxec?8_^4;y8 zn|o~BxM9E5J8g2#sv10Ox0CQ>dk$s@2A*uX&|b4YoAUq2@^bgQys)p_z3;;Z zm6uNaa5=xX{NU8FR+VQ_JE}a-#`&(W_4tmhW~Vng$Fa^5`#xvu-RIlTbw1`xobUI$zGJJ|JUbsufmmYoOSYl= zeAn3dxKHla+^%%KKeBbcGtNFNe{V1Pwm6CPS>EG zD|Xz(=vW)4#<-1jcK6!FGPYvjep&v)KHc|meb;j_cQoC{9=2}3o0hZeOV6aoUV3 z2XB@iZexclEbJX|W?ILOti>I4zn#_&I$Zl1YaEBwNsC;fovHQ=wRlZzU!;}+OaBtJ zm#Mu*?U&Tvr1mRn?^OGzYVT9~u-d;<`vR@a)tA)1OlyM-qnzK}uKxc}A4ie>!)R?k zWH0&$sU4&3lhlU-#Qxc87pPsW_99w4&qlQ;^R~V}Z)-oJ?Z2(|ch%mg_GY#JMeQG}{kq!w)qYFu zx7BV@`;^)rsQpK^I7Zy3zXxl7s=mJm>pR|OE&MKy+e7Vp)$Xs>BCft4r<>!5N6_MR z)1Impx10VvwXmP)pRX1_oc?8MuTbmwp>4+-Xa66nMK6O_#rv|Z?~nKSn)-Xunhaw; z^8N1lc4XhGvA+=CI%2}4cZzS_+!LgpO+DVeH*>_qYI1(ehqip_r@L=@ZvB_Gw>JL3eqp!8)3^56FSJgyV>TF? zRlR@t^>)Pdw*URZ|F27r-@4nP?< zdHgl|=G*g6zPRsKjx$uN+;huBN456c+qNG4mE(rmQLWygGs^AxVVizBw6|y6DXV{N z)K`vkRI6Nl;w`*0d;W~7b@n$0JbuJC4E_V~YUuDJ`&;JC-?O92ya(-57L5z&6~^?n zBi_#m9n&hShR^Iv*y5O$Wk*cq8$FF#e50quNEW7L`~HP}RqI3S%X_fE%AShJQ&ttW zru7(djn`Q}H$T*x#sRGF3e&>97pBFpu;e{ov9&HtYXKVvFs*ah`*Sg^BRJSGt?$}e z7pC=gryH2oo^}@78<^IIJKeyvj<&8ryLPJC->|>uCYrX|q|mChyF|IVnR4X- zgYM^&=KdW~E*`g`T+HgUAPNmrqVadW6UsH&4>;pNYaZ{c(!6LNL%BYia2e}oo9$!3 z5>1@z=b~Jk)`2Zn7<+aR1HXYnNDI=b3)ot0T?4i_m|qgG#cJpJX4{%Cyf)6fBVskJ zvyIdG!g15=W5<~d(OJ5-4U27~Y(+CNHu-&~j;+LqW}8d#T~ii!0f79chMtc6pF*C> z;l1U&N6Q0x%Qb!F1*ZTL4WC+G(hCSRuVkmQ#AC z%sp#DLX#Xh3Jhr?K++^=Xj2l^@Ld6k2C2ILV94mgBfFWB3C`IiZZsG#+Qs-91hDZw z{WJ+E`u{bi#LSL`89aUXzLz(zXk1x+p}eX6zkmHwINog*%5MM{Mh@38~9*5_qHDTp7WssP(SebbVB`*%m10gj=?@A7-`yBFGee8*NTA1}*#SvF0g+0`PS{x zvFSM5r|U2o^( zKDj=75gS~>)v30hGuGPT#J{gT@MRq&+WviHIL-k{cQZx9aQ&)ozv?;iZ2SM6xE|JiV* zdv#s+sr|0nzfk+6+Nah2gWCVD_7%0;)Z(~u-zCq-T0B?UebnN*(mzZszAOD&t&iV- z1?P$1apa&2=NUWkqaD~re}56qbHw;bQ{E}g(~DvcO0Zi4ZYZ=Y{WqpJDZ zh(>nUiY*6xujYa88-MG4r%yj^`o7!Bo{3w=4Z7-{ z*WR8ob;gM^dW=(L{Hvj3zj4mj&fZ?_-u?S|&7S?X41UfB%{alf4t~~oJ%4`B$?v!r_i8W3XWsL>w#x`tjxram+%}eu>I||PtVErC!dLJFq7_S zbU*e9`^%ko2v?^+Y^&StGvrPClh0!BnSQ=qgGK{5(L2ku{8vDu8-8hOlwDiL^neY8 zlIPBCy_fB=ASw)^q2cl5+1WH4xic|pA3ydCngf0H6EqX-Q)ZV`x3Y3vr_*yQEAu;@ zVYjk!seSV76Pz8m+g52-`s!IUSJ|h`)@``;AzOJkI`*x!bbfy}&1tqj&*sp?wGKd1 z!|Z^r`|4cl*#p;lard=e+_~1p_MI}jc-XD1bgtE(MCSs}wvE1U>U->yXTQds@cRwR zfG`FYtFQv?s%ScQvp(;-n@jS9s_hDLigDTbp@DHqe};hdz28g!v-Y{|8~m!y z(L3{hoagfk(4ctKq6vvtwF?$icQ)j^mI3Rx9}K0G02)N54yKo~On)U9OC7)A=W&*p zzQ+yky}aj&)|JgKG_IRCtZ0dS%dH>l?4o+fOeNe5l-5V)YMfL-+YA)BL6(11pL%kSmkq{ z+Bj~Bo$SImNc%X>!=zo9)YEp{#2t>K`+fU#{Y*B@E_PDaaa3ZL=Za=i~hRX7~B#*h8Cc+hXay_Si<- zz5U(5q`1d{C7w!WOPOYG^m)SrOF8JtaX*aAfrVVx?xpmRF|egHB#80C^XM#tucmZ! zGWKzPp5VX&X0_iy*UxkC4t>T3&kWhKBW4wvx&vFyo99{n^OjFon#KCk3ocsGP1oos z1+H?4T?*#p5SvG%)kl`mpQQd&^?9!xKU4h`>aSCOgZh`Ne~tRrtADflcc>38%lUBZ z_`UC`|AhMBBJ5{;vj2zbzpDOE)c=|KO?x&RKb+Q%hwnrmehvMD)$dauo)i1eQU7A~ z;mvS7`9ti#Uj5tDzf*k^0p?V`b3Bme3cfW_?NMrvRXaoNnQGm=wd0Y=e2?c%yH@Sz z)Ly0bchugX78%I#Ja5`RR_i{r^?A;0{~KD9kIpl*)^RAC*#D^g|4eKB*VTVZeOz?D zKa|$?@2B>I+J30|cDSFvQaem7^M&8-RXbYkVQR;!ovhZMmmNP-{aI?!ft)A!VGGq? zs&!^{1-^a^Sd6 zsD(#EAIFmxdJwHAw^{4SGSZt#@k`>0 z<0ejir?}$XJK&1sM;flUyWxsG*UwnIrJ8Zp_MT4~7B=y$?bYFZ!}hTp#>UAbt0Stq z+8?ZN$hWs=n?5%G>iK^)Kkwv7_MNch!Pm0g-@C=WIhSvpzV*GQ#P{mz^sPfq_^y5D zQ}b_{|AYBGlSWL;`w!>X4R-9@)3@$(${6w_PyPr;o;b4N*gu>0L56N~;Qja&9;mj6@F9;3FE zWv}HzX4A^o-ky43wP?n$ZFzO<_Uf?z{cDrHHtwgz*pXF!H2wG3QH5npj;@Z|URlm$ zHLV&qx|%tEj}H__zXp1@`|1-n@s92N*xSpmw!e9={dv|tJ1&OXIgc>!In{QRKK3GK z(g#jql}K%elS(6J@^U+S`5As9awg~7F$UqC#kQW-d#xFO@Os!-wN9nUdsg@%)nD_4 zszP5Hpa;CyU|f~TnLL5@UGd8xxr$#l+E!Wep8vwe6aUiId+pP61shMo@(!o>`#YZ_A+}1awak7yK*K^v#t-uPAcT5>Du5ozF6D-ewi-2JKaa= z+7wZDt95OCmyEJ^5gh#G^Cr2h&iocQ$TQs$9DI^%&t}oEduK#&f*)`O%_RF6bF8|R z6$HL@dTwQ9YNs>oR#p({d3MIr)@c=#jz zfLQ~lMYZ_C-qrRoT#miWgoY^)L+n`P&0ESM4Z^$3EKQP?&IN54K01NBi#CH2wA|49leDN^E_dHNJ2^2im8RU6f55eJiURVu+&s^@St&ksdq3b0u%3 z$3eT1NxSFL6YV9nm>mT;gtai8@_escl-f!!L}ovq+-o zjGecTI<^usl5OjJB)w#7zq(*0mF_GxbK>}S3{`q+W}l~K_QH4Dr}xw&MwgfNPS}5R zx!Q9y4>+Ja)p9DQ&K-Ni1a=%a%9wIv*=qTky%V%`{|V*pz2iQ3V7aiD)XaVRIJj>D zoBNK5gUch9PCLt>P0}*&kF?BP5$U>#@%n_KEM68jceKi1i`(Ez70 z9hKro#=d#h>;B#826m0J^EFMfB8t;ct4HM`3$s+Sclv2UgIyU(|7&yJ77`LGM( zd{@|de8*O^$LxF~SkV&uK4<;z^IhI`KITiD@AqvzzQZY=we#VF#S*JuvJKtmyWY;n zeR6%n?Gxw2Z{<7V?87qKe6_pcB-Uq@5B_ZTac|klF0^g2#Bun$_6kRY6v2cAXe_@~Q`?$I5x!7vD4||>bZd#tQFFlib1HZ*@b`6hgg*}XS z!l%30#_5N5alWoizS@0H?*?{>aX7HVQ|WB^_u$jPUmF;&Jn@0$o$%@K=XoZ`i~(#i ziRHnBy0rP1=hGc-zX9IFSfiby_5`(VRoiyt3j5DhyGShqmhG3Qy-e*jYQLoRCbeHt zd#BnzRePV>ht)c6X6Jo@zRlH_)V@q>WAs&8+rM4?|DnF)JGOtAJva7)S91J8YR70h zt}EN!m9{qWGabLN?=8@N7!jOjwffGavA(lt?0c7M|Fzn0moW&ZK?ZUCj0M_WwWHM@ zrgp5_W7Ycex8wc!TRThJ@klt&r_?T0d%oJWYW;oKasEE6{k*n+QSEQ5y+!TqYX4a6 zpQ!csV&8v2{m0Zkp>{`{)8CIB|BCkiSna>4EqG40A6%LCJ!&I=)A3H*4!+EO9Dmx0 zYL8OeuNEYL{r>)}{WbMJrFMy0cu5=wR6zS1YOhjzjask+_TQ@ZPt<-*EnousA6NUg zYX4p>=)(WY-nYP4QC$D;-n~g~9zYb7h=>;niU>&v0aA?+LbyBx!b?D-+f&t)<#uZK+yOur@wgW9_g0zu&WG_RhTo2nB8F z-}&6R-*aZpoSB{7o!vR}SjK;-_;*D%o(ylL$bBWrr?Ot~>@e2{SP5r~#rTgD+Yr%~ zvRz=f{g#}tPPEs-?}Jvv2QgkN{O3x-K4|XDdM`GnF>*!={D&7~b!cx`)&_5Vc+jpe z)_q2>V_BQ>id}uq3pae3o7V7U+mZp8-*!e(EYdTz!A%YKa=OLppWM{?{W`~_OVxBo z$Cxg);mZ@5t}oNgiu4Tka!b0`$K{#Fpj}MU=REF?Mp>ruq*_3L0ray(+d}N**>~#tm@#C9XGy< zuP3GH4{JVqFzhs{=rtT9mX^}=hoz+x7~z}#c-LcTsWd*9Qgq}Z3BiYU5aFBtu(Xs9 zkNDEkwp8Pr{*Vn#e^^ZVn4}ALmUO=9k0x=mwDfp}PjSltDQv1>2IPo9YWPX{XKTO~ z7sohApqu=I_052T*&IaSBQq&86sz=8pCn{Jc8}Gf?@Ih=g3%SX)ge$?A7mES#m7zH*cMr6at0a3Xge*gfjS$GjB1`7sWX^J39-0WJ z!l&YuW4_a|mUJmRq6kyr?VYVn${c7;&G_=mcCgl!=5{P@(mgfdt#F`ZhE#L&&$s1*0Ym0Eib>+ zk|^;CrsL+PN?n4X?SPL+W1}cC0*Xe?f6n;t z(~P2=-SYAoMpq7R(vYtN!vRm@3|Wc*bngN;4Da6T1M;DT*YCi7!Uv^ELt%bLZVd@_ zCT=o#Lo@1f9MB6^fFaLCoSp9zc!+L9B=coG@HmJU!kaW8ouMdHl!Q7H$CoHu-`@5^ zTMjvshAPg7K0d#VGjYohVC&o4erPvC&ZMD^OQ3Ix6=2AllJxCuKeW44UjdcDy_wpy zz3oB7QMZx129?FSGLCWdkHX^=)R^!_$n`V~(3FpFxQ1qQHypgtP2OBr&w{q=rMdf| zO+=z!Q;|B87ZI0I;6829JbPO%uG7vzs>HHe!3oE7DC})V*vf-i@dLjOds`c1l^v9U zoq)J&j=ild#98NTGxo5zC9Pjob6X$gfXncJ=Bst3JkBK(6ZsZT9H2N-alGP0#Tkkh zC|;^~h2l!ZTNLk9{DI;I#YYq$SKO-jlH#uw8x%hy;@W#9?7&jbLyA)G;Gb0f z8O0YAUsHTtkv(3f->vwu;$Ibw9gY1y${9NvXZ?^rPO+mR`^XG8^V#IQfG^eXVTvOa z#U6_IbChSNn(5~#^4UrLM#Z&?w=2s1u@C!}TxUqn``5N_<@f31PfOGPV14Xf>|4Eh z6c_oT``_okJjuS*)cV*B%P{-P@z-xw>I&IMKMy5@EUJ9;^Ke4Q7KEfGgzULa7Hca{ zSybQuksl@Lk5>LDNq;3m67{b`NTU8ouwHgV{h`sg19?Oejv-q0qt7!ELMjoGl@PKH zAuSU^{PnZhx_)-!wzS>pZBuu@kjnM5z3U%MI{M@lwEeJxw)f{DT|w)g0e=N;d!$V~ z5B?h3(G45$1AQQpIhH|uDplL^+*E&>;ygjd42U>)s)A{mwzARNBI=lY>YDV3mMed_~A z`5x(}*3mA8q&pmc*mOkx!A712=Z>hue-z$dM_chMNVa$WI$BvN`!ZPH`Zl@_WFve= zJ^tJ=YzPmZb+lr3Pg+NNG>^j>NjRT%dSrD*} z%P;G=cv%;QWPYDtRxGL|!ABU@(Wcgt@XIPS;TLcm0>x1^pGuhZ#v@_=x{j74P0c73 z!9N&W7Y7OlNRx=ycbJz`tZdBmv zU>_)jTw8=thCTv+2E3KriQ)x`WADZpau5P+ecZ6Ai|XUMzR}0m2a|?6Dqw6`LqeU2 zn*rX?jCvb#w^;#(oQ60%-!4ZsZw>7d^ev)Ptj_4058l=nK?fuoVXT)-cyk=rfi`JC zI(I-H<%~0N*C4>wmt*Ne_chSR^u(6UlZn^L%X18e03Iz!zLuV@iZ6uZ!}$cFA+dm+@uF4^w`u z@(Y!}O!*bcuU7sxF<0>v#eBuyio6~vFZBc*sXU*7 z3^%sK$;wYxoTDi92D!z`FH>Bp_#MSHifa`)4T1XaR{Wvje=Gi2k;Vziy{yRVn*6U7 z|5uUMH^bjmY*dtbMYzX$19HX>v8CdF+8SDUpT~yK{%RxZ8w`81Jr))hH`n$!fiD;6 zSr-ZTbL;qhQGX5X1@&pM@%Y*StYL)}yLz4sKM;Oudc)EoUc=G>DGf^p;)@IAN5@{O z#G_I9k2<$BtJdZZXu zv8$*nJmiZeXCODqQ zwRJr6?S{*d43pqGGAxwBNu!uxHyB)q#zD_~yI~fX5Qi;2^X&%S^O#`ArW+IN+5qAc z?AR`0f*q%-Libn^3EwY);iDv7cmV=a_+As%Z#NuEx{0;5H$gD;itDn?@IqiBb831p zgaM!n4J}__$8qx^;y+S|ZUznW@nyIfY=h#3_QPCCI!8pT!2wUxv$D zK63`XYdVqxMWx_cu+=ykp3beh1wk$U0+LgkTD}j0LcUZx5MAKi$&VSSc_3O*%E_jl z4)AO(-6^7jgFJpLf|^{Qdl2*XGMY}92 z?tSva^DbBroj+&Jta(v945QO#Po6e)>a?j7i}LzJ3k!M_URX47@{9{6Le;Dplk?A; zGKHT!=zhVR3#N6SRyBD>KIHOxYEFKBiSaWucYhjt@Tiq)o_udXH}T-oiXDGy1Lkj^30g z7W|e^ytXBbEZt2H*e0|c_&BZVwTIkM`1yqXct&Br&Z0H zc5?I_B*{1TM)#sgeY#J^CrGDMN9RskIAb0@avbgPt)iX7-_)4Nngp8E)eq<+k;5++*B!Zif)NjC;&Ij3Uf9wgF{_?t84}1ReGU zS-wxP?ozd){P%2AYo<+ioQ^7oCPiGb9Cgs01RsIlpIkS{BLJwm+iC=MK7F@>F8EhbtY~$cw65_z6K$T`ZC~+zU81z8j#L=(6@qw zIuo}HysfVe`sxuzeOd5E-_4*+8jwy6E{Hp<07Kq{I9uQ9HvaKZUrTtS?=H|xQvgrb z0+m3!jBzCCA5=7QKY;S4?5vMM4yURHAns^XMo+^4jp`RIn$g1`XJ4xOY<*oR58GHD#lDII6^AK~Qe=BT`6-ILV98&k zc$p&KR~i0Y#oH9uE8eI0km6>=I>px&`I=8XV!J~dAoB}>tr?CB{1}bzq&&x-C|{_2 zALaWiKT?rXd?+U?aG+%XDNPLak}F9it`lZ{2-m2AK(=lzEbf! zigzlqePj9VSA0-W&J)77DF343tBT1s+8rAHjv{+;)cdjG{%nZJ^A+X%B0cBjQctO3 zxuQ(NLU@Jpa(=$39$>$NxtAyt$N`Db@U6k*p zSfE&>Sgcs0SgKgAXwLIk8B^di1it zGrJcXXYb-(y_;*}tVBL=2{umHH?v^p^qhttE=!4>32R;^*83KnSpG@d$axP}?8+G& z`=o7n>%$8leiUnoBZG3Y`h{Y<{BnLD`t}DlvW{YA2 zu-eyOSsdxSKmb=c5l(qhCIjs&|Ox>&KE|J$0Itj9=L0Q4f;R@dzV5LnWJF zSzQIo>dW#qT(zv8aaB&;fD=Nc$2?Hhu`!frSq({;ZCMSS&=~S9tD(WmZfyTRnOIiw zRa|H5X?Ov^4=!mPb2ct2+sQiSu(7S)g;;wXbJ(n7W*ckPF>{`AxPq-0)-lso8CuSe zq;<^SW{SP6V;1|W8=*yYk9Eu(0Z-wu#DT11egyI~xz1*x_?$5&R|Xi9D`_Wf09B`k z-R%_ZP0>Y;mlh^#?6E@-3UiSB<25Mbzd^Y}-$GavK4T{S+%w+8e}7>aJB-SCBm4H) z5fuIod{#gFxfP6k7GCVJvi_Mz2(E_{U;hjitD|K(^eV(=@g3G3%Yyx$EMEnE_I8}v z7Hpl_GSInG(-71$3u5!|X4=vL!3>-htP8dqY}?%Paw$bC`8AMoS~2nj5NjDZRU*F6 z2yp*V7ThLGw-FqqS;EZ|4Vu*yxQPgZL6pGgJx#ZxAqwkjB_ermfFxWG4@2x_fi02> zr%L>2g3%SXzES}FG-gI!>{Egy%!l`_ucYJ#bS&#D6Ncff)!mPZo{7}M%ye}($+_^b z1rw;KDP!!3l6WlP0(jdPdn))5@Yu}|TOR)7%0>7-3t0BQdULroR%GiM>+}zD(?2+| zv~y{0Lh#_+!6(XU?BZNakEG(LdMJE4-byu!>^OML#U+rvWe+&LycGH0o7zz~E{x8uq*=!g<|04mk@W3cp`OeqCBr=sbL!yQ+}89AIn$ zsg93&Rns{z@nNV$ljV2sczk|$k)F`8OZTolyF)zRt196r#fPChUu?+f$wHZV-M#57 zK_G(?oPInM?N~H4sR#p25i;|LIlO~OsFt)5m@2_iL)5B@NBMbMEJrA9&vvGXsIYi$IH>dBLu@0?V)4(6h zSjT3g1UmUfNmmYU1v~G7=_f6wL6Xor6@)^ViNE9-=9dh%F@JXQS(;|V58)?+ICp&08JKs~rtM=Fk2oTxZM@dCw5 z6|YcSsd$T`*wCTx2g+|yd_?ha#jT1jDe_umIsUBJ4)sC4Sg{`wZ5ORgM6MIz7|3vq zAFn(O3`{p&`I*YoG)DR5iZZqVx$i2!UU8%1R>h}@kb716Un>8m^6wH+9?tpan91iF z9zxs1{IZCM&n6=Ncnv>U!@FyEv4-RDMV|L9)3I%n^omi%T*Xrq^A-Cm4pbbbDCZaY zx0< zHz;mY+^o1o@d?E`#itdYSA1EqUhy@>*A;)OxI^(B#rG6HP;5~ARIyRU z*@|rx_cjKW|E)g$ke2@McaM>tg~iPs16$4)KD@pb33PE1_ZUfwwTw9p?=M^Zx!Gf+ zM)nvfsJsP@slV%pA5w!5v)hFqvJoL(f=qmmk%r1t%+5dkIDdzc?x@dnG~= zwXZ`+qV}-0!^ol0xC42ZeNFshidKE^^OS^Rsziv{>BN^=hmf=c8Gnb7NU+05>hAQT z({`^6bBB@Q`gP?y1~|JTp*EkpnOG~4X4h)3SouKgFPwRD{iIEdx8wYn4)rI++9t*1 z#bQV^WzpjH6CSoxR9E&ou6&@s%Sbr3btk_1bqzfSNzmlMg4`J?GZJU?qlA8Ug2Oyv&^&U`QHC4G?h}Sv2$vxm)@#B$@cxJoDRzA!L!gR1hk}j~ zCDsNc_NE?Tds7d41CoXQ1|(NV;&Ii`yg@P=7teDP^ZdXMg;?PH3}wd=UY3}DPcWq( zT^rXh+Aei`&8Je^uFA#g_q%rSdq!zSwpcB#&zTNQJO^uoH}v9@G(Qi`2Ul}Oq;);MnlTS zjGQ!V#^i}(<}8>yW!gkc*>(~vsx{>p8WQ_!d~&!bPmqddmk{jl(;@#o3n$HwYnHD_ z$zQzt=?jY{mbqrk+$m-}4`}*31DA@jpYAkmI}==Up&uYE)DovU&SbCM`q! z(^tV9`hCyGHy6WUF&mz@zHJ+h@;X(=TlEm{Q6e^C|GXdOAHYH#{j2807a(u8qU?{+ z@m<(%R{21s>jn?ALEL3KP3}=L6cW^D9A~2BTLFfQLBQ5m3PWHQM7BjZ%ffsk@Z;c3 z8j#KyG=6JHs55cZ;0?{FosipZ1sHNF;_Q5@VLarwvY0Q!O}?}@m^2`rpW^K;NqU zjYMD$_ti%1@qJVFi&dG zj&F^=b=*-;=Qt~R3&Hc8uUuUDS;mhAbV{126XSovp_XK#-BUsryI^1GD(SoyyzA4VNez9kX) z(WXc~syy3C@`cKus(iWfYzG+6E)LUQt^94ubMhzSIUdOPCzO9#`PYt2Fy2Kykk2H7Z>M;?hM%lF#C_YAVwNJWbK1P3in)r(wsH2wD97uOSgtr&u|iSm z4e`^IpP^Wz$m^Bqjg5S%@=|{YU#0x_6mM0$OYvUC2NjLYe2emI)2aU{MX`v0->&>` z6#t<3N5u~m8x)gm=dw>V^rW*sfwVjjrJjK&D&JKx*_Pf{!^;%UP&DfeCMYjsFwjR^ z3-zC;c!AT(zBIK z*l)Q<51rrdTR8V;3+-LpyQsOg&^37e!6n;5D{k1Banntatksz}wz$b@xc~B3-Vd#$ zWpqx1Gqj??$y^=#-j1jKx?^56c5;mNHsfDv8~U#I-A%i9EPeC+P^T+)Ww?>8ZmdV; zqUwrz>; zU&XFJEPkair|y-;_I1A2RBH7iTfNvLm5uw*n%##bUGzv(T3>7%xhY*s842`#QkmU* z%SUdcLp_haxO!j5zx31b550sMJ##1jUzPuL^1oo`n~g;~-fZl)x?)$$>^B<=)}`-u zvaTq9rLkMxn~hyo9|N1J)9~Cf=5aQxpv)yrY8iXg^kz*Lqo%PEBi%U(=TBmsE~O2d zmZ9EHU~b80@#VJ5ccq4;b{e~FjBE|XcodyuXJ9v&R~jSBoQBoQ9{b2?)lH7egRwVB>2$?00=PWpNr1915jy{Y5C0HVmA16lkwvBqPEpY__~f3^w~+^8w?@ z8}dc+tcavY(;7)@L_~b+>)nz*O@=Vt$O!6>gddf_FyG_A-GacB<4IS$0|6ACI?K&OTuk^h(QpC;|}!>-F9k8gWekr8^t<&e8sk-=ARYz3`v@NULK;N4Mt zV0VYlsK%c=`q%g$Pqv7$vJ3X(VEq*tXHxhL_^h7zbH`DTQ)XLmhn%xnj+T7xvu&kw zFI7$7eECpX>+-3h0L}W9M-+<+_*{$`}fNFBN zMXr;X**DWe3+&l@=Y%ypf-2Q;*#{@J738@gPFfypf7~6X`5WeldHujP%!wP{QA73$ z3l~Lb=B7FF#B-M95_xhxXUPtbaVItIj3i7)e8{#g;mxb8tvVLg)aG zByO!aJcP&d9Bqo+9t0%eOkX;FgE5qMLJmCTSf~>CGWZz$2zcXoW2}K+3%?HDINlfR z$$SX^R}%>2ZNZ)i@A??Lal9*bz;h-_1fGY|4*q=j8u&}#7sKBLzX84xK7`ZI5v-;QT_qptAsqYonVQIU92QX6`xH?qWQ8!bQ2YxQxTKHfPc-ZReg7c7AE+R&XS z$9qdk{s`t4N&5bh5^o{(uU9sT`Sy#?i=3AzF;paEX8w|>mq8&fU5?GDnJ{&MmzC$u zk9t`{z4>{+w$e}V7W(N~3-2TS!o2bYUXORYiW0nJyDqERJ^>s)=v{hAZOI9A=4+>P(q6qh^w%ksTQw8AFkp z^V3&jGo2`t>}|Zmu6iu<2u5-ehEJ^V85!X@EQUp7uADtCLOXzQY{AM}<}OdaDspw& zHK{97R)(+jt_xl7_HSAF&+p%ESLR_qh5p}aY-E=81TxRlZaA4R4+U-o9;wUlgrkj} zGV~GnGvKWUp|cLU-n9Y@IS6vLzR1!3yg=&X8o8z#DycfHrABI&VQ=DITB3nYddKVC&-?b%=^S zdu-%>gfUG4JlzQ>Jm1BPBT2tm(a3Gb>)wS%NaHBSZXHg2jfonB!n3ntoKd|E0fuJW zV#pO6As~;J?iG0ZIO=d5rk-&r2K6F6KPFJO8T$D4W}L~3XjPZP??lhp1^~d_~U1DjPGd6+h-g#2%akmvkT%14NhZ$pHHoG$WJFi{$>ro zO~dch@H!&&JWGV0*NM>c0TFsQf17$Zf17$vz`3S;7b4_~h>+*=<3PrA_-x}CNKeI6 z75gj36vrq|P~@|O>CRWYNbxeoRf^wLyiIYv;(dw_DQ;G*Q+!$R9YvmB=4ZwbT9C){ z@CYIrso?|dSj1F~KNyljsG{w|Hb zSL1)8{8r^(Q~q`3QGC(IR*QPG6nWp0XPZluUOce7@;wxJ|1h4tc4E2WV8!u@Y!eti zS#i4JY(+k&7{5qyvEr4AeD*T_21Pk<;J>eYt>S+vKA`xxBJWS8e@5{I#WxgbwPU=T zPvCpX|5@=9#lI>3Los>mh^9X3;i`OMC&iN#^ArmePg9ih4*8h!oJ7m?;}p+UtWun& zc!A?hvi-vboWP3_|MT(`0$=AU!4WFPm zQL$2Ss$z}ee8uGJVVQ<6S6rdEN^!N~8pXAWw=1qwyhrgq#SMyE6rWHu=UwWfRs4R) z$KaPgw&nltZ!D}&@1kN~a{u2R<#)v4_81Gp{#Y4TZp1L)>Xld-kau}~j3Z&Qn;idg zK569?U?k@H{)=R^#~&r&7);_Q!TC*&O(C^=;WCbFT`yy0drLidZ>d8MFXIT--ctJ` zSOravU?FeslVy=$yy|)#ui9G~mVUZa#;cadc*d{g|3~uw-JR~8>APP{Pu-0t)7tC? zFVktbPU>Wwj!rF;(V5JTzU;%ADaH6nnyvzHx-1IDXOc&ySUVh%Ik_=(?BseUe;~$V zuJ3Pj`XgRuw9AagWdCI7-p-Q;J*Vwm14<_&Mx~E%)UT;AKa?k=gaq3H6f4K`5n^Oek#-BeF?X$bBD9xdcr3LWYdI0+ILtYA=Gnb|Dl= z`^XP`#|LR_-H43GN5WSkSqcU*9B+!t<|d^b>1uZx>E4LMk_9$b31dR;Iz+g`@P}ur zf3S`l`91@O^O?{MK2n80cf_ypKaMQha<_tS6se&6B?~e}Brk7y6dui3j;W<{*k{~J z;Ko6FCe;k zKz1Qzp9o}y{U4Ei7ZEg;(*W-4y_B+l4rGOG5k^=Ryvp248SV(&Ldq#DLiRhN6dyzi z+k;Dc9Z@>?1sR!{DAbWIhljE<@udY6Ilf|p2L#81GwU@nd^(rNO90`#Oaj*)6b69^ z93Q}N%vd5tlg5U8$x(#fl4u-ZK0Lmy8mcAnu+M~RNqp=xskJ0>c{MoW2%KmlUt=Y~ ziwaD*mV{i!)J38g9w|xzYlS?E@HD*VTzpwAU+Gy;tb~Y{cNB68oL}D2@grLz3H&1) zZNzv>`I1rxJfz@*xBjtR6p>@A_hYhZNi@P^tp|aJBq_|XAv}I$7iC#T22DIN9ukBI z9FM|55_oi|iN(Q@2@^lIk;qG2yu@d-;H+JYO%eVIFT-3Us2<@2zILTz{SJq@NUxEo za|nK}m%2f&u5(U2Pu>jTm{AlSv4oT0Gn~JKPyS2jMyq#(@_@7AhNS=w`2zd_S5Ae36oFp70 z^vlY~G|w=ZAwdd72v7TM{;P{>3;Zerb&{8Jb$zTk7B9fOpG52T9r^ zEp96~wj#bWj}CGxAif%&T`eZ(0AtiopwjV24Fg_=%mEA>{%gkx_ZYTJva*;xvVx&P z9Jn=zh-VBQ#!?yH|6u7*>pX9E9tI9eF2J+iOU;x2^Z0)b|ISN&oUs4kvnke*e`oQ} z8-0a9UNp6Ygr&e6H9?}oci+*DJcOu^HX);LJZO^! zr1LT&9wDL5#LWP2Xhtnfahy^rQD@@#@V4`PJ_j8W$T44rn|v36HfcaQTM-#0q0Yqd z4anBF=s4e&MSU=L2Kuf8ZPI{revd?~d*e*pH3+cvt$@B#gi#;Ntbx8eK$|omomS`_ z)LQ|DOdi8~9{PBmsE=kGbG-M1W*Sqb-=pxGj1r9_%Xc?hZZ!%;+o*AjqyH&9uDzNd z9Phk64FjYM-8OhblP`i?F$s0%6utu9u9tcoM>fKE9BtsuaU22KT=O6uu3P#Y33Vnf zqIFq1MXj4RhW9iw`(_M}H6C~WPGfj%yP6oov$o_4hV2f13~xsA7#<(iXz$=T=G29V zc8zT($DG*x;Fwbx5!c%YBC2vS5%RQQQJ#hs%Cql5`DH}NuOdQz9TD>P5Fvjb5%ODz zkbja0`4@?h=k-tdw}_CZfraw_AVNNjn}PD#M98x*%kT*rZpQYOk%yk;MCf5hf_m;H zLVg1gdbSXuhaCsXvt6P*I~iIA7EK*(p~+)=&_5%TPqP`;1|`C=mE%ZZTZ zbK+pe>iRQ1+ONTi!xhg~tWxB8q1-%0J{!nirO5L_{=15|DXv%K`C+`+Ac32euTy+k z@sElh5K}N_srV@ojo;rip683ajO9UJYvpr@;7?Fq?2eFQx02zd8lEtAhkV8}99XGx z=c^n$)J!L1Hqc|%`_Pa{`BfT!v&z#dN%SYpXn}OZ4&CK)qRtd~T4>QIrld_-@JuxC-(8q~oT6MW;H#9MrZ`KnMv>1Ardy(Twc@pka{VCw7Ul0$yi4%`MY)b3$NQc7 zo=|*7@dd?t#n%-7SMm3X?68n`ZE-dP~<8Kh99R$J2CkJ#UjPzvBSX{ zK1}gU#j_MAD^6FOt$3j#jql8d#%bbJie`-YCgtUNM0~CCcPsu-@xK*+r1+SkT$f1q ztn&Y(_)EpN6yH_+lj28;jf#I)q#c3fOjl(4MxN~(F{;S-WAdjc<}0$jW4O%R1`beu zkRmPij6YkkN^zRv0>z6JFIT)uah2j~#ak4=ulRuCLyA9E{E6bv6*=dE<#HR z|6a>*IwGP4BZ|rG7#@WZA63j%H21T_<7MBpclkZccaWMnHr%KAd&aF`rvfIlB7tDf zxQfKF;h{PV1yy&TeviH}r7mlQeH$4O4H~=jig#CevdO z1o>~O;Rx~G^7luGi<=xF_VfRwCLD|rU%lTk;!9!fnHvJh$=u_MHz#lXdms9;4fGcKlp8 zn!NwgJ}#rlj|D3WlSh;1OHJQ`G3DV2W6I~@8g@70?@jnFazV%cFs8g69LAJsy1_cb z`DpdIMh% zL%yA3yt#znM&#KU39km1l8HZTeb*O>Q}FuiV0?KzY0k-Ma!h$DBHT0Z=dU0lx{>=B zIE;tN_n^pR1`hu<{`r~{p|m@KZ!&z_^v9G(QuuVR8TlaGQHWN^+-~jB`NvELUbZnS5nh2+v1#hRD`X_S!&J*gHga10o)U-yX;=pzO~A zSz%uj*$)u$S9lpy7QL5HwlRx4Xq@L%wDs>i|q3?7m^2|I*5hp-dgmV}7kgT~l$7U)*+NJZco zz_GBpR|z@6R066LYQ*)%Kbu@@bT|t3B={o}2b4>5OHT|2l@}uZa(Gv^c>&>9!g;`b zC3_U{Pr_TdtpodC@cT;kSHvR?bBkYAV;D%c1AZs`zBI5?-BIqSAQ?|LLg3h5`i{4Z zachy`UGVI`v+o{39MuekA8W}`-cBcTfDi92D&wmL`e4xjj=dS<%&+cqoOuQw`b~^8 z?~$P(sDfw%Q-IW9il36poAkG5lzhAKEql|g6u{FR zkM7ljMhSS5^sIYZ?qw9Jsd42eAcsyHJ7(fe$9r#2!vKxydW&Xs4dm>4VfpA@hPRI+ zisQ&e7>|Q?GjkltmxbAsv7-#eu-k=?RDAtCec$PD@ z;s<>lYeR8+9@N@U+-8B}c{?%Se7%K9eE%eVL=qqLX%J3*d@pC6v+ZhPT$yhNiTiFI zf~BE*3@i89`$5Hvys^J}aoFfCxQhM99a8 zkZ0e7@>7YB=WaWcUr2^qb zWc$SQmnqU#PyRZ^n-upp*1SREH!A*E@h6HuSA16SUp>}*8rnG?AHQu%JVUWUk(PXh zPgb0vI9qXvq8Vdesr+{o*C^7EMm@EPcPl=kXvUbgD*u$?i;Ax*{z~x;#rGBer1+^~ zqvDr}9$p@qe``fE#(cc;ofNw&<|+14{FY*=V!0wmGpKjGB8M}`b598(M=*%jD{=^f z{CY)>T9AK6k;4|`UsvQv1^K@#dSRbWQ{>PETC{V3b} z!KR{3Ih7MC*H*q>ncdSpJ*(cscg9RePSu2}wN@-7SnA{!Ae44S*+a0%niWEew%ox!I$%lA^&7;aqU>A;J>Ih0_+ZO>rYX z6v;5h;V??M(&rihDGMQhg{K2Sr-u2)kmlZif0vD@Kkbm{Mry#jeJS9MOdmq%$M=aS zd^%s8-O};+Ujm=;3$kTo?}X2saX}Bq9qgwBQ|P!u0;Z?q4h@(h3`F`2(jV&GKaatphVX0WXs1tzH|=%Iis#Knzhfo`4O)8=d38e8#)E+ zatk}xlI#MH(Icv68pdD=A<5AaGnz0F-oxlpEs4p(%yVl=_+^+E3d+zPfvf;OBO#<9 zKD8$=&u5u=df0w;YPxB@nrqOngF*j@==mKxcJ!u3y`%C94Hflf=6T2DfjurB)Nbg+ zSZUYXu~^*|3hiM+KZuPBWf@j{2ST&VX-{LjgzOpYuL-jo@TNX7wWrNF{t+j&n>X)+ zQc?g-u~)Nv{8SvW9U>Q2%~~)`m%ari_`|_8E;AMEHCH*-O~}Tff6J`p-c_NirB%bIkjqjm6JDl-aIFd0eJ~0{+snxTDMY{pihF2z~gmH zT#=#yBggk6(tQ7-qugSl{6DtQbOYc`8uAK71TXvRhHZqIAYI36$EGw}9tthVX}=B?m3XwO2vfg1*W+XF717xVO= z|9<2jHokM$fJ zwB?XZsHWgr)Kp2XTb&qCbsJ5jveSSM`H)vQxx+Rixo>02PzIx|Gs^F1exKH z=08`vz@BgvHg4+veuH;QWWcW013K1c#g=p^Z;YIl7b|ZJm!vefDUqUkH}%?tuo8wu zirl_g^_>yx^P#>2A&oC)m!y0Y3A2y?oXbA`wECZYQkr&4S(mMCV{X^A_@DH8X3Xup zxI?GLQ0BM}50zm?b@=w!5pNW23Uy|f+xMZe+hgf(w2$S23-y|?EY$bz_6+;W>yMY6 zUjN+gPc${O;7$tlfjNTGzXMr^E_l%ssWiO+9;4hfVIO!qp!W z>xj?^%dTr5I<;{dzNO;97Lk9)wpFpCV~_3h`(Lceu$zzj!R5um2UxO$O+sv~ZiJVe zHw}NGUS<3brHBzUlom#MZw3BB6`T)?8O%>ol#i^?$k`H-CT&1qp12BudzdH0Wa>sX zGC?H#S4kJX-RC+%dkR%y4s#zs%4+6W?T!TP?~9e@vh%8@3eKvgb0dpDxqTlYZA=wx zHlpz9GI_UjGRU#;8UKerw~Xupvb)F*-im+TPoV$(tPoNzxl7S@5M?&Gv&4Sk*C)j& zHb&3$Fq}~tsFOCV7iS{P zE5iY7Pg4ggLrd428}*LNYhUP{ANAVhb?rQ+FuzY}{>i!d1HGIQZ*+-QxcZzyGfuha zTcLuMxyH`m4Vi#1h8*heSlf>SYxfk`9b}soe-_}LW`=!QAA(7NGF?#q_B1%`+gc!1 zT2nP;=CrBfq^ti=TO|&$$sukhF{T-R|DD6i2*JDCwn6aDHI7ZnfR;JSQ?E+7I(&_{ zBE*H72VsZ!W}g>RvusU$cM^atv*~O3?@Jm9Fmm0L=F@|Yay&oAnV!)A1X#hc$4gWF z<77L;J1zWv;L%8rSH_@US&^iV`*yEEm~kerDg+psaU6H!`>Amzj_=m`N-t4uS^*Hr zd|3}X4q^?wNdwa9fQTpwbtaCFqy&B0{(CU>?aL0qaW#kr&ge_FL*!cec(0i9CEFoJ zAfk^^0y#t82-+@R5%lr+SU$eS8GY+PGfe?J-BmaVT>oqwN%{?nMlKic{TCV`jiX$$ z9pZbC>zO1+_62w=8|Qh*8QqL$`RJa3w~wO)$AO<5M{A%tjw3*uYZ;`|2z}d0s55yH z{Wkhs@Pvq z>JRD1DnCJSlA_cf;@KTyJ{K!4S6rcZgQC(2iu&plpHmcj4#MA5 z{tt@M!@>P-ju*j_o^1p5{8_OL5$!&^KMapwb$w`t*zX*Jo_&fj`+#o$c8JX=4_tyB zqG7X_`s~94cBNvm^&r?H!k;b;(<%{8&8cq@TigLQhMApW;a;>G%-oc_3H+>ZFZZ;x z`ff4OuujbEjCli}!3J@S*dTK1Um1`Y8+MG>=w|*PXJWg%%4pAM@kZxO3?ZKeYeN|H zgqkVs$$$2GgUmUQYe$M0mgxrW7+g$zFeJOs7KDUOF2cX(Pe1V72+yP!N?Cw3UPz`N zgk+N!>EC0YY`G)uWkTuSd*QUHOyT$My-3NX?Qhn;nf8oLqwh`vuYVTwIm5?#I zDb6wf?~_nx;wFN(^KHPp>N6{CFM_K`fT#Yze-$v-;@$q;;2Kv^4 zW|{(cx*BA}z3+@8N&kSNk;}vd(Ntf1GvrXD8i2UPkn3p}pi%w2MKgLMMx3da5zpw8q=#3d5A`I*h@Yu|&D&@o6AKMpHMNRtnlL($hp z*T8b7R{Wr^W6b|ZWR)G1fHfX>%^CAQ3gWC2w&zKG?f7~#`+*NRoH~rAHGh3lSIXml z<{%r9Z47as;xNVkw7xbDOZtqwD%f{qJ3-|6B1RQ+6;DyjSCo2!9NTWn4^bShnB1qn zK*Q%Mn!dG}1F%BFS1HPQ+(#eyLzQbo#D%^`A9#At!sd*{_xx5L%(kc7e;>FF8$omn z{O6rN7XPoDXWs)ihuW*V z$4f}srG#Mg`a9tE7`^5|GbY#nTqMJ9OSK5??GNC{t$Hq**oF=$@OFXl>X%UGXn;b>&FEQCfASm z8D!FA$2Z>B_3S?I*Vpll?4#q$IZx>L@)ivo?^E=432bJ+nOy&$Fzn4XtGScwUqSym z+n-!NE$X%LC)bmTdb9GpoM3XjA9U>3G`W7CeNg}K4shgKX5Y*AMuMLFzQ(}gUEF_{ z;qBlB1&8k()??ay#u~>q=@8AUXT5wguU;!w9*&?7rjNbYoFt%m>mLBx=w|dr_+D0k zA^RcR?lX14yKn@N$$jh!$eA=Coj-!Pn}j+OR|VeCj9P&g7S{?el=x8L_RF3&+cPi3Erdu>D&)}lrzr6Ek%H>uhP=T2Q%xL zuZQ1*H)%jRk3nBk^9F82oUN}0`j|eskG&pY)K>scw;LH7{euJWsn}rwX3lV0V zk^2z>P^20Y{wCy_>SMnE0V^9P8}H)XOd_DUuATvHABVl(U|)Ug66o7*=`(o|{dZbF z^0j96vBS7dJ2j!t3KG)fL*`KQvF&RmUMqgCUq>ICbsR6lf%ma_y|GT%o+tLP{ik)( zyn43P2i(Wzb;CY2uQQ^I%L4l=KUi_N;@OH-iq(n>6_+S3SG-Q~CdFG7*-2o2n-sSY z(N}#!v5ts~_gNz3eyRAThQFo!2g*x#336X34-kF47pON&k>{g1eduD9D^VP%I7D%@ z;y6XNk<=^o0+f0I&eCwH7x0%Wzd~`9qSOcC?^6CjMX4WzC)ba32@(F1%Kbu-_btou zd&RdErJfMpp#1*&@PAghruy(x=G0u=?6vYeo4+sn-y_I0sSl6Y^l99eeRXVkY-OyZ ze)W5~&TkvDvX@n7eDr0{ZQ-&BS_%1+IlQE*(^^H^)2(jIH{=G71r4I zONHL|wpHxPX!lzAw(^_?FVem~^3j*Yzio7)Lt+DBm9Yp$&oNK_lq)xN+cdHkrtiXQ?RED(zf3$BTkmdOQhd8h> z69`L-1y~pggyjkWX!+Vr1-N6<n@(_j}kB2;GD{i%xm1`}Ao#Bq4Ojg1t6v#E(fDcDXLtMf^&k(ddD&G6X2*{ubNqiX+%&eRau zPJpIK94~>fA!o6F&x39UUkZ<-BxrONNO7z-y>T?eFL1zs-~kvn4wuPcZg&XU+2-0E z>R@+hndi;T^IDd4F6i!EQsP}u;VwrCawy+p&9jO$c?Z949WL!JKs|D-D?oZe3>7Q zgIEJ^(tvbMM?{o_Iukbwysd9zcJpi%--bSj2F~bPnxwDJ(#L0=DPOX!Vm2bUKc#Vo zyb%F*`RbvM$H(JEl?VFPgJzlnc)I6s5|$e!;7QVNP&9I9z!q>J!i+O=$+n6oAjdwW zaYpqE2rx9`8X#9>gn&F=x@X|+<9OYwm)3|g^>PGg58gQLuf;x(aV9UK|GMDEJb}vP zyp^_KkA$Z_WFdLl`aVD(vJ=9MGx`i~&<_8`RuP|jUylk3Y!#+i4mO}ocv(2)wu%_? zrmbL%;snKMioBN@KTq*;#TAM-DBi4ihvGeo_bZBx0(zbzkNfC3Md^#I zLzEw`I95^W4e^tdpQ0%BhwvKZFIF_RjpfQqeL{|1K9=kIigzipd&BSt6*nm+*XOGm zZfqNGD*p$?_Y^-+{69r@k)>V~r5}y_j#d76MfM~qC-n?GRe64egyHPO{j+-x_?Lb& z_Z%o_{yc{ow0Cd`^BiCw$!geqYJE61wlQ)}W^4fdvp)K=&)CNB#J=Fd6Vvd$wMfrM z(TR^t+60-2keJBWND*TrJ>9-->k+=VGt(|c%;NS;xA;u#MiA=D9SqI{7yc;XVO_vt z?oF^0c9EB}s>&1P6bhh^VW6yk|h-xLAKvy z{4a%1f0k^2vg_bM{~H)fq#$xf>HYxH+9fR+pw$58fy)3-`y}5lDTz?gpntyLsJP&$ z*Ac@87PBobtBt1`Wv99V4AvYFs58;lK|!{xy5@jnDLghNU@lCfYYs^Ir5kNBb)7Tg zS<*Btt|^m+Iip6#=KZ}n-$K-3yAmO2_L^(5=;wM_t~Wo=%Zhq6W`;zY=ou$>t|~mE zs_?AwU32r7Fy`c;-uM!)dt`$*ChB$1yDT>rSS7p>U-_1?^_(|K28$SSS5IW)21K%K-orHhB%6LAT&?jV&k?W>3 zpB!}TJKAj~n`ycM@Fop;wx!2d0fy{{IJ{B^ZaLn=qljdG8LxanKeGa~Nkic?L;iOS zNYk0PDvM_LZy@(E33W#9+u-ed@4w(8X3RerwgszU&ffp>Mlr@c+yq5pjtGt^k$W9J@p%uG3CIs(3wHK|-2*$b4g$ zh}$LDW+d4qlJ*1$+UkS0OBAE-X=fOyI82f6q6|M*af%}Ed4^x4$oEb1s}#Shc$?yS z#rqT=QrxWgoZ_oQ+)t+e%&vvy&g)8w8FqPXxgUYy!y(y)A(T>$gxD8AuJO54X!ZrT z7xAH=^Uv%HFo7w8eF4q~x5vH!{G z2`5c%kb>~+n9m6C*pip{^NL2#d?cXKC-EORKXz0+c2p(e=EI|tzO*)w12GmJJ#zx{ z*>BIho5+u+YNpYiImt?RXu`j^ruyK_!FDzu#rX{#-n#*qCZ)Mu@Hz*5@Tgal=N%R0 z=Kn|KoqTas&s!OAa!IK-CeQ00EuI)FlnDS|OIi{(Q|F(cgE+m+KwB;_kTVfd}2|!)7x8z8lzk@8wuG9`Cz@-wQx5_rt%7{V)3t zuHTsY;~hLbMeuf;$oCk!GI%tPfqNQMQ+;ec;`B99Wb1Gduw7-}53f%_-%p-`BH{nN z37M-b-sDw@FhetXG9F9Ml2B*jCW5!~-GO)3dW11wyN^8wyh#Jn>EfY$B-EL>nc!`G zTx*|=FzU1W*jIozX+S!Ip^tLLnK-`J+xqG(eY{Ut&n)K}c#{UCGXeT?tpG#v9NGHn zp|7bv_BzNhO#wXJVq~MV%)6E=Jl~}$4TgD5&?}qD@aH?{803< zTP0**YQ+!yI@T#1iLA1NGO)(u?m+eeSdC;!eeA@&08CR2Ih;C-ooU|@_vsPjfk!DG zL&SOOOvHKVs^NVU*~UMrT=lW4P|>>Sy9>4bmN~3HTXeeukLqD_@bX_Br`|>L2^aY1OL! zHN?Dzn0u@LSp5{}r$FCX`KGQs$YuO$#6u=h_s43kJb1Gba;qT+*+^aPjO~r#)!Q2* z%eFUW)%oiYo@#7^_#DKyuQRI>ej}?AMwX9~(f1sD0We%G-vA88%$v6w!P$Bm8Z*DG z47=Rx(cOfKNBg^n!dCXfk6$Il11$LRP) zzQPS68UBFa_qMSlf%_4ptU*xHJ_YRd>plg%X6W1qXNI_E+>ie#yx-fFoeKDj@_XB| zQ^6}>)Blb?S9U6(0)G*L>{KucS%Srf0EM0Evsi{8EDMWREJG01pRL+-Pd(l_KlD2m z;6_U7soTpCc$?AjA;OM3QEsiIbq74d=(rQu`g_Tt6nOmINCTq}T|k z^GW;%t_vtk+$VH{mn{!Sc8wHPfhZfaDg58BKT^UcM(t;#FbrJwXzF8LaOKwnU(R_$;(I zR$2@mvjhA9|I>+sC1{)p;)~)?2|CjRHD!acO2T{XWN9Ns5!rVxg+!tE1UP<&lFfrWi79#B5m9drQ}MrG=!o{#q=6=uGW?TE4aCM!K5xGDJ%IzXWY`Zm zXP=uY?9&qA*RkX+WomMn!vUH;z8b^Ej7z4?zqn?ab69L=xX*PAyjKtLItH%e{btVv zwghl!F~psOf41$?P5_G}H2!Dg_|PG39)y%@h>OVsk?a6?lZHI|*Zr&jL-s?Q|C&fC z$En7{faA4n+VOfS`dF?Cc#{UCGX+iA8WQSETorgjGwL(Q-C+e7GI_qhTD%k2A(Htr zzp!Er(4+zBtU*MSggO&93%q?C6VTzxMi}*Fz#Dy6f;MSDI-3zeIpa*+QUuugsx5t4 zh%@>)l48}E%`^q@bSL0MFEdKOlce9EXyoof z-{V4r8E52vgaBMqH72|@GVN&?pi%vTMKgLZK%C{INV=Qj$QGhd(_mDb590~&o+kdSuxp|EAx*NT6%@f^PnTL$YmUIub; z*Bo00uQ%2S+x0|ShW~Vp@3|nx47Sw=Y|CI9McW0hGvcX={S^l*4p-#+Eaj>cs}&b2 zE>T>rc%9-+iqcm{dg-_UH)%LugW1P^La~mBi}zU~||n6Fr@SfV&kafsq*#c_&kOR2X? zu|{#e;-!jg(ag`$5FoqkO$6d-80l-=_Gw;%^nD9+B>2<)t3M zn{^DFyTbgXUV&|uH|rVX8x06QQNxqhHORbT#FuJ3`?=J2rXoAKmn9b%{5y`?Drc8y$g$qqvH0z|KnO*uW*4a=NLRWV9TkvYNLDO%7}MU z=tigEgJrAV%W~dqd*v72%J#9)_b;!$;)~D&=XQ9i`ktJDyWg5SHK%O%9~KnG-pTpd z7w!X`6)|x4+Y6q8G^{?Z({*h9_Dwgwx5Bx;`W?ti%meQn^HTM5U!<)ZxO?YzBuFe6O^W{HtHITzNzF^VPmAQa(`kg|o8F?v~+}GY0Pd zaKSsrxY)e{+AbP0BR6Nz?j1F?kY!4gX=Ul|cNe~1JvAq``wthsdrW`iS%i}8SP(kZ zXoAhieSTYIEOcAW?u>}DJCr?ScV@c#eXPK6PppSk=#&v1?#byH!_m1v|00BPzqMfd zrvBW$Vy0gv_cY|TGP~Z5jY3#iH90>fa-7uDg3xJ9`QbKq?eZ_e17jVWFH#%6{OliJ zy0MCe%SMu_Xt=XKk^b#g19lB`FaN^nR1o_`tFm1K!pX9C1hN&o-d_l9f34W{`n&wXcMw(bkpotd+&Rq3uP-Hg~vZN0Te9y?|CJM-$^cRHnP#J(CgR5Umd`1JDF z@Ysr-zvFc(mqXZH4|I>i-{%sL_!o+#$y%RqcmyKwEeUp;usMco-sz@3NYW6%OM%AWK6{@kT89%2NPb)5Lvi@^m8Z!?}RQ|&HqTsg^UiT$sOiK_>D1`xa5A1 zgntMwWh~^pYPSlI!u!&j?OsLtB+_%;0?__^lhpsm-nRfoQC

}+;7$&v(!ya@{d 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

!c`8V?OZ%!9#*vX2kMig6cd3@4>wb%VPzb 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%0AF zG=0Xn5HWVbgb>kbhAYgZ3ua8MAhXFgC;ObpdJr2Y;vsKHM5AVXM}kNaevhC^Kj`O3P`hT{+Jk>%7+}S6SregZMf>DBOtF-qE zCJ0uR8Aua*RnG9AD|A1>k%H$6P7o{*EclJ!F~MI2!&y#wd_D0vFG{;-8%|$WrTE3!P5n`?0~8# zxQ`KgF0jx)54I3X1hwqIRYL1;-K*yTm89zj$yDLIf+yUg@06V4cd6jr5!i`$HshWD zPixC z#Ob8)u_6T#=Kw;hbs4nuM$C5@KBT;O8%DOGu(tq}Y*_CL<&Egk$*}$|l+VXg2G$2El&3{h#2JN#wMQK5N1QR)us#$jKH`iC zhV_w9exn+>w?gPh)#n&tkAb%KhOS_T|*66CYj#3AtBISTo6b?vn zQBGFXqVu0ok1y7rJvte#i*R2U}$v;LH%*5h~6e&IK6o6h2tlx zLkfM)9Om!kSD#o?A7e`Hl+?xF2Ez0c$4;Nv)_)EzN$jY<*mPRzm@cP{!xf9;3;ej5 zaq@J0MaK^bq?Dx2=Q;~dT#}Jf8dV$waew4U?!SFq=m3pv#&w2|#pq;2IGT4CKH(>tu>4*Q3D>E_7RAX`H^;L1c$g*+X zQHIe>{GDvA$MC$MK6+ z+HD3b-26tk_~Atp<{mMHWR2-ZC#CLNrEp@d|mPklhs)XD$H{?Q!X9sk@!e=@-$FJ~G2}=7P--#lO8snp( zvW2z>p4$h&2H;g?x<|VC21qBTbf(lJtK2$!n zpn;kM`Mj%?r5AH~g!4`XmoSvQVU0Jt0K%9rOk?r@;c?dU;at>J)0h{-H^9y#)0iFM zk0{E^j?u7QRsK9Jd}`wIns}|DCN8^#icu4n*M*8Ts*xY(zmb=dl@az5IlU2X1FD;x z$jZb;)jK9G`LI$G7aG*Wg`xlNOk9{xx2ixRr~juWF3FwInITiBG;xW;l9Op-;E$2E zGm5?_xiii>SGA{n{H&yk!TcXKarl=`b?e?cG?z*4Yy{^#oQ9lWA_b@9G~`>)D1vi| zkbj0gwV9Txfza0h6bpt{(=A2m8IJ4ot~%*5dPlnd6w{dBoX4o=?BAWopd?&3`TsSK zK}VMA?#y6jXHC@snr7z}>iBc_b$X=MSNs8#%E3QhVp?eFn}<3PLPoq+c!^TBxeT4X+mmFF=f;OEY- z<~IX=-TaDO{C;a5vmE?RWgfE#{Fol555{2nD$iq9Veo!~P89snNPUN35|FAL3il$% zsQ$IT`#`zpF}J|qsmx<`!Jps7Pq%~0^O$9>a?$e+=8I@PS-kTM-~ zpC~w0aJt|E!6kxf?+*TN5LzwggI+K6J%a2@$akM$5*iw5wdV%RA&oZKSCIYRZ+#c> z#PgcYRo~}*qIpfysn2VooKE?a_hh(j;XF%T^Ihb}JRN^0*puOY1Lint%gqy}fTG$a;u>g5l8L;WyWsgg0cE8D-?xllGY!-<8ev@YbRA|0DUTB`ifm3WhjE7eq;B8 z{{FB@OmOHQnhnU%zw&3qf=S~kk@^n7ByqR|8N5i$1nuuW znBDV)1Mqh$^8`OC%TGq4SbkKM=Lyfb%7vp=UCuP?w#RVU;J1SYQA{5d5m^kXxu`@x zEbG8V^JD$6Zr%LWpc4L?C$NM<>bK?zC)n?B-lJ8`6WEDDv0tDp8rvwx*^H6M`XT<_ z{f@p8ZlK_B!E*)A7c3Iw^U8Qi1o<41zD97R;2VPKz8JWxkuOlq57741z6Vg{=Qs8_ zE+8NH<8xVYpQB6K@7d?*oRlj2A}8PHXoF`6DmWjgkJ9D0eHKoBVe+1OH#g{gaNo?w z4}LN~KDWoNWBjsC-)RSYzFp;hdtC0D_2Liu!h0Ru4!m1fAJI^TIad-niG+DGY=2#voI7e zD=vk77oH8koa6!6VzcF1Ql5yxpsa@c({f@r(ZL&$O*>BCteKNx49!$(!!ES%qJ;mv z>Rxm3zLH^m-mMJa^{P!apZ5+}hN+5lM8?9}(bokg=ceHao_E7f1I>LG&wH|AqQu8M z?+c~G$2@-*%BN0wdOlF0M10J%M;w*-nCC;Gl=ztEBcc4xE(~X=dKcyh)44a?22@u^ zT5;$31`yUHc#2YYo<9Q8sNNiZ9^84Z9IqC~n=F!1>dteTaCuT&{F{uyFxK%8%G`qb zse!3a77b=zO+E@{pf{ZS&@qfk_v&V!W1wnXhCfeXd@Z$6R#-pwbkOX4)n?xstM)md z@n|q)D;RR2%|6}1y$(b62U&+fDX&|XVLOQ@Tqs_LVT(XZ%nZvl1hXICm@530AXRu8 zRNUm42d%?%erFi<7(eTf?96^DESCjT*q2~XaZeBrI_w9aq3U~8DVep*mNjZuw`w%1 zF)X~6IoOOr$Ka7kAEwsUDII)uPX_-5K|Fm=xxUF)QX7q8BMSYWbjf#`SnsTu@ z<@S(?7+yg>*c=v)%gNRK=(W`4Ap^T0-lLS!()62)4x3b z|L+Q828H}4UpUz%dRcMtA-JEZMuf5u5ioHV_6OmKxC?udwa+5@aVPeQODDnp?V$Z_ zu+LETyi)rg9zXo@{%qQjd8Eo=Ni8>hIbI>?u65-Ll_=gYYoTWwkn;VyFS)UoGb{X%ZVMnH8P`AL>{ zbm?K^y6W4q3#Jtn`-7BGt3hj(gSW$O1mw#BFI@F9Wx9qyyZNm|Lb;r+l{QYS(cf9ej&KeElWqiyBu^3wOhS7KviSpARO1l+;cJn&~etgl9AI2R)ew@4MFfbZN z!EY7~qO{vW&~AP|f!{jVksqHIoxYo3)?r{Y&d2a)u**UluZNqP-x@6BGk@gAZ4}M# zZ!j}V5;WD*m?u7|nSiE|dXu2`HxtY+f}K{{-xIJvRTXOc{qR@S+RILOa7APA5){pw zVVORvm!RGGSdVfKVF_;g|(GhP@^#{NAgH$Lk#_4L7#(oqACkgdnk0Mw6$e(e# z`PGMId)R5^PP?`vy6yi6S<^T-^I)ksmj4M^Q+ITf9c8(&JRHRm4=H{F-K~z7MU7SG zG+8F=peyXz>aO`X(Npc<^mV~?m}pst0jhNvpjwB)u)HOBbA5z;70+g-2&ySD=pI6I zph@>3f*d20R%b1NQ-z)`xIl1;pxUp6zZ-<+)QsWR3*IBhi5czL4-wTFJYYW*1ZgEO z2~?{BK*~gL{pDuC+lXj@4~ze&g?>TYUnU~oUkd$|&}`V`;}xt;1fO`pmSWHEXwhG1 zvCkGdhX}qy#D0|EL~)-i?lZ)`MC=y{s{5Z2-)eEcUF`oR_>kD6Se$eUvVUWG*v^Q4 z!304*ceL*)*i|r7u)koQpsG*!A1`!~;KhPh3SJ|q>Jk2L7h2UHX!d1{_a(udf*%Ne zEQl`nH}~7w?~;$sCnsN|Iqo6)1$BPg2;D(2T`)s1TQEmZ=XP*btr_;<=1o7;@Lz0% zAFb)_bHJP1WpiBIrXOPR-fa+Zv}Q!v-UV>P>RxX`Q23x0oI*=_ zl&^x9$pq7ZalT|qHy>JUt&wz+ht9sL-)SloK?Wxa3zq8+N?Xyxs~>4Q|C>bsat#pJHps z>S5aIQ4X-d;+cTk zU}((17~&XzXF?cJJw{~IU5&p6Oqe-1o=JNSG?dDD6Bsr@n*&CnbR_3BBSZQbo~ zu9V-#tzgHlC>McLp6ijZ(J&EzY0$3daaRkA*bm!}q0K%j5_6c!(?QtO^}#uw1F5&XuU*Qbh0*G;V zbToQgZlqU2V>PW z@L?r6Y7zjeq69iStD=sRvjljy@-T!z57i9)@bJM=YB2uQgA=;0P+LV{0;eA2eE4B- z*SaSCxR}$&Z!nJ(PPl+@txk*UBY>?Cn(t%qCrC>5!vq_pD*5UOOGK%Ck>oqvH24-# ziUH1qHjQBfCOJ$cB$#<^?YhR0eELHBj2T9Dt70UW6q6LAY;=U#t(phfoFH!IB^;X! z_=w|Ln)^W`iv;qE3MQT&V4+kz{yoa%bu92t-&%#kp!=&BnAt(HFVgDwxYy8ufSTuU zm{~=mp!1=%I+;7$P*vfWHa|2gqZ_nVC$jg$Lvv{QWuaw3vj$jdtU;~(F#H~WY#W*n zt6eL1Jgi5za+muBc%J_+EsX1$^GtKL5RH#4Pe&ZY}m)fezqbK7Zt_!~CA(M}MuII~9Ra zSBisXn)!aCN`;=KOwONvTlN8|!_Z|T^m`ZsYo*v;Ptho-Q&2*aze{5@7F@01oLA&#@3;BqF9rJ;v6U;~Dwe!{B_deXU(s2<{ ztU;9;dunUv6A)SZV5o{|cUf1+(_d@np|$giQAky+omX+(DcEPLKIh+AJ5NWPT&q@V zSHS*44-y3 z7Qq(I_YCn0!K=jmW+M2iZ`lDi zh`suj9cb=_()~Fi!fzM+K>QsN_j0lSN$eZpJ-{{jjzok@5$q#)hTvGiiA4CHNkn{e zg}z+qYXo_x4Bgj=`#nN$7ThBCWkSC!i0V-3U?0Qupes|zeucDOFhP*dJ?-_{eGj2~ z3#xVn_dKDwEJXk33(gi)?Fsf*34N{LZGv|Q-XnOw;B$i81$PU6Ab3zvEo_4ScS8Rt z$ki#Pr;echHltr?-V{Oi6hSUxk>)ZOae&|;K`v?0o=eR{u51zK2&!de(3E?mJ(s$O z4+?U{i!|Re#LDgaJ+a>-$g#(7odx83jeIKCBj@O}_Y3O!Y$J3B!6ZSBZRkH+Fh{Vj zpswc;LUXQ8|M`Lw1PcVG3Ua(ee{%&(1Q!V|5nLv?T5yfvI>GgVn*>!q1HM~?-YU3V zaEIV7!M6lI7W_5D%+~>UAE2j=R04y3_pU046bzhTYi52c@G&a zT1+25{m$v1PH#~>zWC1KPm5d37(e6A8K2H5e_G{FMdLNc1I@1ZD^nH~|FGvXmt|r4 zHo^h2+vk$~TD&C0Z4#Td>i{9PgND|`P zg|G}8fr0`WJ3bExrM}c-SO+WI@p(ubojX3i63V&b z^J}5}$KUap#f1Dr?)Y2+!laGUJrhlCRPnBy01bZFMAwGF%VZ;J5}CdgEb5 z-p(jo8I%{tbUa-RrTqKW^8ULrttUQWtH!9#864y(DAtO?aINcMw1LM$6_8~cW{dX8 zGaI*9*|=2;b2p%VL3>xb#d0 zJV%2l?KT;-Hq(h`ltzgkf_9q-vpe2&yg%|`$9QS4FS!g5I<=p(X zfFJ9L>BA5-$nPGQ8HVkFY7i3619V!^Nd1VQ_ICi|+N##uo`ydpsSu#lIjGdC*4ti( zt1B8~Is9qf49N1M+6nE>hwUmCjuLe_*Mb@G29*td9|oyVT#VBhBRGyrP+1($a{z*+ zH^nao$T;2nc4IWc@t9Wbv}-$}+x|bl-o_^;q%2j#ZrWXP%nw^;NLdD3R!ALx?zfg| zFDws7vBX2lQoGJ>nk5)glx1xgB2~L@U5QQw%`(e_K7KvU88a{ta+UN?qE@%0eQ6&xaXw%}O70zs}jGTfzt ziv-zE(Ed6>KEI^ZS`2WH(5+Eev{!RgpjyMjv#9T1<>w8!1~p8O!dmpN)<~o|a8AnS zhR8uSk#$V;3nmD*7wjm=`3U{>6g*vUfS@W@%sn+fSS$ZJz7x%bS%*cFCOJp7rgc2& z{jazORs<_gJ{R6nm#GNNg&W~%$GPa5t2V{1XuRenqxOn{2cGlA-WtEA_HEvSVYR$j zwU&FkE^c5Q^cm+j>6sI@vS3%OwL8nROJchCvb;xPs@;CXXO-lhRql(rZoem{?l@vZ?feqLbGajPcN_~dcb6O4(YfYL zn+mGKUz>Gfdse%C&zF(C%Z?encb5Ct!Ef(9U;296$D(?hHx(Atgs=2<(eP74*&%$) z&hjMj7v+Te($m{qGug;Da(bR#?u$RY+#3~h>ze$q)g$wLNVl(hk0u*(+T~O`;;R<6 zV%_VtZi&Bj<^FJ^_L?gj#@=MK=v|)dZ_^-tO|4sdCj31_uy7WQFz zEz30ymYLUW@+NORV$__rtI?WtC;6(J^c3 zqGJ)~?flZSG_Tw{6{X|L%+1Mt;h5EX=a=5z)~(2C$<&_JR>5^tT)`8$$nkk7t@Exf zK$!FXjxq{EskbSqe&gk0>pc&p1V0wI8s}MXO)81LanF}gC@t@K>l;lx7!hW!Wyo6B z4=AX4BTB6VWu~~Y{>XRFmobWib?aQLh(>-{--x&c={b*i7~SO4oN+mk$VtQvH@_Y$ zc|ZK9HGAPEv%NRBMsB^_%O}^~<;$H?(00jvOSw*xKih26a+mi=lqdS-u?6OG<3?xw z#M*TDY2!$g)uSN#72`&8xntXQNjkzhA;-=(+a7$q?UDma?<+{pwHRAAIF=^mI(Fp# z#urBETs&{iJIibG`8O@RnYODoUGWd=EF8aB$Kc!3t~-oaa>*m%37ZeFw$LhVDE~bX z>%q$EOV@#uXyXlIXJlPZn>_M?3@wLnR#!ylnRz8`d|^`*sHL0Gnv7b>^+vo4--vM& zIrzL~iiNkCLmh%!7^T^9VKJq8!?-JHU0}`!gnM67|Lja6Vyy2Y^5NN61Ao>J&i7tg z7{2~Uh4o`Z68v~tczm&BbxcUh_fL{PMeJ3sUf+E{>*t6s6zTJ|Vc1`URg~{>a{g7w z8b(+qeH*^701@%lOyAdxz6Zlx;=4exaNexeY$3fq_G8u@pOYG&?`LwHD`Yj_ZA{Ij z;yKDk$yRHg&q-ViuEzyAU&uJ$Qo5F?NIfm;qcE8JFm|BU0w34ds+m*a#k>bbXLFEf zwm|wKxe8|9yBG9n(2*=M^FAiIKgr8TZlvq^Bp)T0`$;Z?u6`H(%m+w%Rv6XCl6p|( zc7-{z3|F~`sgd^Rgsk7jxHzp*j~79A<4Zbhvcd}qHfL5F(wIv z3x=!_GZC+y7*$5K%)PK|2Tw7okYY_{Zv<&oO0|{yHKbKB#VPth(yE;5D0&y@T4NE= ztgFI%R(NAo>C`uw#lvupRmJ1bO;JU$s(c!#;B3ONs(>7t8%nXNgc_>w*OOL7FZTq7SK!HOBL47!4bz=}cv* zTt`yn@&b~tgRH^vi#ZK<0vP77I1Zi~!ng`9b<8{u1~GAIuw$?EV9>6P2TOW0;l#Gb z*7@@BP9xxy2~Ho16TH_ggq@iW%cCL7dUIh(JBbcYMI@;DoCbz_A%bhv=Tp+ayqbYK znI@SwWa=BTUPC5$d78!1!BkO%96~1C1GpT#%yiQXSvF)})R6rLT>g+t9`q7ug!{IK z%HLT!p^!3i@0LpDMSr{_P(HF0B_hyz^;M*wg{=IY^I#-l^64ghBSegFl`p2_#s}wW z3ET*Q-a0lUQ_Tw^C?~DI^8_+(>18GgD!Dd=n(JJNhsqPVq9=mYbsVnm8RfXu(;iWW z&KK7k1QUe&3^St00IiMJBsQw(qH06Nu5w8PVn!>x)K5%8En3E_9)<)xFj!B=1A*P8Wvo~~ zp9T+`oH2;NfXW`$O5KZpI>2%b-;YWy!oOIq3R*IT9B8DG;KWemT}wlxieWHJN`<`U z(W?`GFta+e2ZG8vd5C^vFeav{oZ(#JRxES|3^!I7;Vpc@d^Z<+k0H?85f86f_5e@Qu$G!S@}fv`KbK;fROUTh{`9hh7kFzwKUK( z>oPBxWLPLUDI_@(MtZ{CA%sKFD2Yer)9{V5ACCW^a=Z>EXtpP8BHBZ!iI5GJG}tZ` zk`2u46P051t%6o{LBq=qv1UFEOb%Su2WzPa7WZmP8a6>g@ck2jcn(!5<87zhRqCCL zqVdqcl%i4LU#XB+)zrz#G&qb?icA=YjVDw}BOOOaj%qgui24)6r&l{OSL>j$&qFu> z?WyohRm1SZu5vxXN+~9dtqV0rU|KBWqKb{i153T*Bt1qPk*`NKAV5&X!GyR7PFoyG z=;_!J7^u>oRDESNh|pLW^9Zh{oULpJ5uD%^nowQkI+);uIV%+9;82uj!Ck2i_-B@! zr$HH1Cqfe|j*8K^6+0QKs@%VXo5%PJu2tRkG8Eron?7k;(FM6PE*xKsFR@KG{ulSb zf~yCo`l*TsO*6x)=5L(bu4B`V)@*;vW(l1dwY1Jpv|8Raxl^b3?7~j%tmuB$^h7J# zKelD>l(wLTCgh&k?!u-+E-e->Q>gWhFLi3VuyHwrJX< zdB>*79xpC`(c5k}c+Bi}2`#O{epYlM8Q197)Qa)92((Y`bjQ2|E3%(;vEPbJggAX3 zbSvnoo3i5ZS<`0Lz(ngbzcr*EBi)MVVlu4E#0n97Wta)^3GtaNth)Xwy;fPH z6IV^ivg-G<3Noyki4a;bO)RqXpLk)kTJb-bB7uiOq(!y(&ULnE*{+Qa^FC!xYJTa?ywp+qqult(WI%DsILVU z=1ea(3VTj29z5~lp<~BQooG<%TzydEUy`ezj70MynZZWk(3z7bOqe>c=irHBry5Ra zRJ@m_a7fYkKkgX7@%xH}J)9gB4xCZkNfp7k$;J50;l!fpW2dUzSFz0sFDQ!KvEz%U z6&byzO`L>#u@!VO3QxbVQ|N-6LfZB;rp+im-Kha7FZfC}94?4R-KsN~z6Mval>3HQ zGt&#FViU56Wv7y*I42uScXIGtK(KwNjZj^>Jyhwsm}nkO)>!w2ycG7M=5zNtOE^PP@`k>NKe)l#WlbV9WaWPOYQjEn#qjf=)>= zAxN{jc?e$c0IB@xR`uuDq>Vxc@7|;3a7!z`9(vaBFY;X;u{ivSuqEE5)|H;C%pNr` z5^?+E>!S*PIW-C(ORkv#`TFTmBQCV#i$K3?&o{W=D~(WBW@sb0a_dxk!NFkqb@1ok zA`X6Qjw2STR0o3p&QQQGn!$!|c}%^Ps_c($RNRB{L7&VYhZzjxj#m#OV6BGY#NN2=9{_>IV5_%A&{fz-#Oz!38(QZHM&o1h!#aRg z+U;UkxcSWjKR=j|ANgp0i(%GbU^MdKxXfjtjjJp9I|SxoRm8gr{@n4dZf0Of+ljY2 z+;qHmSK@aBLt5rnD;@8huyFI+-3s}D9rFgqw|;u$6>lLiW}WOt>kYZ z#^e{lPAmGMJ_L>6h1&ib_)F0QkbabcA!vq08=Sc*aa`0t(?`X&>n@jUE~>Sq*2<8VX6uwe;M=SIjc2AXlY`E5dn%C@GJJMG$z=(hhO_MDlP zkkX~%*zkU&itet44=)y;(2DMSVngcqJ?hAiBTWCw9<`eR_nfhCQ&%mDtod*3^BjPdRP6M$P5gmRbac?O!cQ@!iRp_ol_Yzv|^}&6x&}WJJM8P>? zUn2CCLaRHd5bh?Sxx2-9)Oj4F<9?wZ7x%3~zaaE0Lhly*MC`v1`iRiq3C&KB`3oZ= zo|-~a7K?Nfp<4=l8Zp8!k_9`9dqCX#2|ZBgvxOcb^c10|2|Zir`9fbQ^tD3YCaBK$ zAe|2g{e<}2CiF`}zbZ7(pE6$`3jL+fUkm+%(7y;>4P7t&*B~O_4TNqYbX%d5gziGb zOQgGCK-?+QMLxrc;FB-(M4_h%T`cqhBKTY{xJmF8LEZ;R_iqH_(I&|^AUIACk5L8L z57ke=jeR29F~$lr!M%d} z1-Z4)a6c3A9GZNNfvVpEs(uStN9-F2s{RW0i9&Z4RQ(q0dkUQ^$lY4rXaVq>3^KyWWfsrRsRO}SwhbjTqwwWaE8A@@K(Xw z1vdz86nt3lalvhZ&j@lOo&4Sw{6O$y!7l_43jR~@J3%$R!bGt`e~I$)vp)e}Dn57c zu8?zCmZ$1xfhrvQafD0%N5r4%C*ZE0Z|#mjv+j>oe+xQW_)Q>!E+E2xXb6hq(x)P; zmzI>2>Zdxntlr!NM1og;s)9CH`*39SmTU@NQR}9#<;x6fRrpQTZDDKrHZj|F%1O!b z9xO5DzBll|g6iRG_dv$$m4lEFfQ*~(;EQ39P1|HP_1@4lH!inZ!I=fMsZt=<44$MyjyPAX>m1wTy}WiffoH+6d1?qKGi7BIu?KL zPK0D=b0xwYMTm#@fZBsEop`%O9Sgq;p?B;l_pU?OpCXS%r5MLN<9646=ICo_-kW>% z+*2N9Zz%WXZzvBpT0$DGWw|HAo4KOrc{vjxk>{=EJL2`-|9ZrlJ>_w>(PC>kdf{?U z{(?p^tHW>eH1Licg$V)&fYM-4;juR^GD-?3^V z5pv5*M_=nY@WB4grymIGoeN1uCl<5oketCe+h2F2CymkrcsTJofbv3I1@FkG@V6P{ zVW3+3bHzAj5Z`3g=Zb2A?+$mSIb2HQwwA z2vcv+0&^0~T83{Z%n>o3=N%co2ITf)1T8&~;X99SfbBsUzD!2)Qc#93maZ>H>{Xt< zK3*B(c_k>r*NLt>gjJO9V{+apBxLx$C9hW_zGC$8o^u=-KHkabIoCH!q6ZkB(L#Fh zVNH-@f--!5a>x(L@Tr@1$BO4DpBhYz3(D|SXV~#U8NQVaJE5`+pBgYsbY%F{;N}O* zd>d)7D6AHVn>~NDNJipj&tuADRNF^J8^zn%;_d#Rw+9@Px&ZV+3GyA2QX)YXNRS1= zAeV`^wk(S$#M>j{?a83GryP^wyj6mz3EnaZ@^=Yxbuh>^;*D#8o)^R$2RF>xi$QPO z9h2hxk`tu5xdCC+A9n0vq%yC>i!ACiI^44tG^YbmY(VC{tU%8Gqd0^$@1yH#lG~9c zN5Jt3kkO0q=Lk4LqA@y;)B~#SS9ohcqHz<=??cy2Vz`G`_8g3rQSkA#2I+lamd}yqe&Tku#zXNqe^>-$++sMq8{qlt8yOZm{lPU zcg(7Y&r<&DqJT##Q$1C>XRDT8PZh10RoR}SLe^6SD`r)yqa1rxq+;f{*gRL+8`VvY z{?$=wEZU<)N7FGAqnP@TYMep?r|C}fIe#xQu#KcjtP*leK*`nY%$#4?7oN`sS&I$s zOjvE9b@3Y*Z^d$~#&KQjOZfYchNtnzky-3R_=8BC5&Jh7l4!UIhJi3N*aZd+_kt<} z)sW-4g)lVw9)^Y%OijSLA%!WEX~2D;Mh*?FVVFom3JjOS5YIL-1HsnD6Q%Z43$ z027`ayQY*1Er!#FaJmoP>pD)>ilO0#pO2sUDr`HrY@3B6ep(7wyjyy~xw#|!c_xkd z@X>j0RTa{V*i3a?wR3sFC>!uc|smsH$!+465o{ zvg*viEtM4P5LIn^F#J{3_A?Evw#ImxRJHMKTF8Q%XL=bKpXFpYs%p#QGpDMJrM8;h zt~J}!8>?*&y|LP^Ro-+zvW4ERG|!(`I2w_ z1^(dj|5IYtkx^|Or9Xd0QCSM6s?VQQcT14+I^Jw8?8+Mpv!UDB=k zK4FoljR^_ZqEB#N-AmzBTqukifWfo2+XX#uFf9auD_CqZZqu>Pnsj5+aeK?y%mZt zL1hvp)l%Pg+$xy8pcpSYIEwMMspz7bh)i3n5aZ=|0Fs=xcypjW08)8`TxA?eP%CGU z=q0vc>o zjO4XC0-9l^)RXvs209F~l7UuhX=KmX+?a_MKCfB6$md{_i+thPtyc66Z-R@Tn>UAF zcvFfga|&TF;Se-3t|N0vZ8C+9#~~q)XN5ctfxA-Lqh%C(RjOHviqORg5nqVvdV^`u z*+iX$_;EO(6kj^4pz9i!%nfIziVX!#<{HzDCh=?Owhp@9@$M^f!r_6AA44~+?1B7R zIey@*6eD91dQgN~(e4gqcafLKGV(ww6rdD~<6~%#x?oXRsgn9k*ox#i@SqgAeGKhRDeZnMrEqo@h2-gC z+lQEI0?~(>g*lymv^wtL8o~0J0FCM;Fpz1C(Ef>Rgm`cW&6F{Zkgbeo5y-;1iJT@5 zv*4XDS{ctG{0Qy%p~;DbtNKCJ5GFKe0=e*^4kc}{PMZ5!kAt@kD%4PdgvulKb*u>t z$xk*C_bBtM`a~uJ-10)n844SvnDkN5$OS<-M7cObDS!B*SK(A4IQ>Ex+ZBYVRf<6z z=ix5r7;#k`9p|AgXRq72%3{?XD9A10wG|g1wm?fqMB_8i>9}TmmFkEtF`D4ZA?T3! z$TgWEw)4D>D=c6=&r7#>)jcuv_NqC|IyDXmtduT4oC7%CYM9%~m1$JQ?&dQEo=Tw6=m^Y@2RFBCMd!<)(ft!%h4z3YahGHE0hD6-Rt`?P z-wMNSYc+HO@KhZp3mM&~Q`oBapflOVSN5W+LRE^Z_aMW2p^;v~%g`RzJ@Ry32W=W7 z3C}>Imz+y)~VQd8fibk1iYz9Ae1h%g~G59A-%pE2rUv91vJ3)>&2cBhE_Zt}Y0Cqk+JZ zvy7Rc=aS)RiRTjkj%or(gGTpBU_w0@OK3&sbZCr&2rLZ@2fV~3j+u3&6lVahG@wrr`hzg2dOJ}l(uk1zDlJW;%^ufsC3q=nOnh{AwpgMvrlhHEy zuG1#88m_EH5?EdIGc#!wM;Zz7m>ovPaZP$B_>UhS7etyE}|KZtcz{!8jR~-Kkb5vY!GE zOjjW^^D`T|1bQ(vWZ-3qz`bP{wL zbOv-bv{onbqup6=%9 zw^T0}TU?M>z$YVkfghG?@CtzqddLTOTq)A84hZ=>#V4d$#r|e3(ya0P2FI1*zF2%a z;{o-(jW@#l)=tB3Jv_gkHN$PlT;^E0d;jl|P%P$|*cVT`b@fW;3+qSa%B6~MpW znvPRR#n$x8!04ITiA}A+iB<|e#4#(eV{%7pK!%m(Z)Tl70!NNIHXYd%r<|If(G za5NYjDU!%TST}0iR2@L7=bw_d$r_zu{ln~+X8m$$Kin)a0!b|i%dl4A@X}X^dL@zo zJPig~@Y~tT=I|pS8@x1sI;S7Zw|Wz;hW)Hb`1j)<_FvCQw9Z&=Wg$I1GOVlT`7h~j z)f-_=4xVw+$$8gfTGbQNtVtQxY5aV5NmwG{PW+eR?uUrqV#FJri2c_0xDnq%=A8o} zJW<7JtZ*y=pL#gKNh&!kb(|a~LIe*`=@U;O7Cbjo*SXjn#Gv{v|w>rt$Divi9q*xzq`mIA&ETPbe zKqNqAyhjd>ZSnA#YU)*=1ccw?PF%5hCTkX<1O(4kRoTSQoaKDppYO0$6uRsaowee- zt%@^LJ!)iQYl3~fD2|1C)<{@X?Q-AZh%3UEge~=6X&pHe0d*Z?tC&Rcbm z@i42~%Ri{op=ljX0xBPb9ygQL{(8fVZK|M(YVX{^K)HPETq%D(;3#M}zXA+6IEK_p z^W%8bl^mlS{=OyyQQD1TS9iRrh_@UOGG2NoKjLC&9R@~YA9kpkslg7ZkQ>LcZhsLq zAZx02vy``>+bWRmcsnE;h7AkGOYb_~yJ2?o^EPzGxUg1AyWI)O&F@e*!|=n7{Gy>X zzb9eVVPG^;!7rwYd^`p>H@~Rvh!;aV@~a80`R#z&%`Yb&^-%@C?UndtWI6M0@~h?I zw_Ese98dKY2Ka?)Xz9?5i~3VR?JuYKshzia6#h~iR_Z^Pb{K+Yxa^0&MJ|8LFV#=b z?s6H5d@v2nM_p)LF3giF*~Ziss0UXB+DLR2m+?p&v;$b8T7vvyU}l_de#Pyac@wOa z()={7(QW_VKW`PG(ko`3MT`kCdmh>Hh_Xuth zd|Ysw;PZkn3%(=xy&%Os$ghsz|L=2FCOQko-$w8p!OH|66;$&6@E3zlgZ}Fg@m`~- zCQ-@r`)h<=E%dEIZxGxp_Kyo) zCiDwJ?-KfLp+6FOKN0CaM8u2enAm&K@iM*9g7t{ZFA@IQiG7M-rnvVI_dKy5DL7u- z&lC3|v7aNjNN^bu<#)5-U4okhm7G1?Ul#fu!9#-Og1qXEd~mIqLVZrDjnJurJq1rE zqPrL%IEaY+j~6T;f?tu)GlgCt^kSix3w;w2{B9+pyf%vcqk`K6UliOW_@3a0M1=c7 z=);1)2u7e|VESSN8wfTRY)?e|9f{x*5c|G@gT;NgxK9%MX@ZxC`=#Q3wbU{vbROrhEmkO>HTqAg=;N5~x2tFVwIf$k|3K|m=1u1V#TD|vx{e(VKkRrT% z?#BsE5xh|FVnKBt7yc;VOaJOU2&{a5ZJoHU7ramKK|x9cGyF4xFA44xd`ob*pn5;T z|EEHKC3r-zT<|ABi|-xyj}WXSSVu5Hu#I3xLG}Jbxb8x$bGx8(h3+RvnPu{)5IAw7 zpgQLU`XZrc2+kEO5nLju-mmb_>s-lawct9z^@5axrn@@d22}4|pgP|MRPSHltKyI1 z()9m{Af={BtMhEYpM^Hj7HCglY9g<5C93x`&@Xh7pn6ZkzPr%soH1yMUNhVf!LtQN z3l<6%3sNSV{;v?cPVff7w*+?!Qfiz2)%z4k;ce2L1u4T#TD?z!1BD(UNYQS(PZlf` zq_{TiDe+BQDo7!3(zgmyUYqm=LCSuU-YWR4;ERH<3F`Okr$X!ZErr4v{+OTzGwBFH z{T^;4bT`2)K}w6$|5U;0g6e$?Glj_MewE;Lf;R}>CU}P+Ma${`F+ob0lm1HZTfrX$ z)q5Fc^xq{6?@Q+~{6gaFF0I!IgqH3Q{rrQj`sYXvFqPWOie-w=F9uw3vbL5juGe>*`+$CJ(!%n|G>m?tze-M<#ZW2U|vTVcG0cI&4-{891!h;C6Ks$F5_abBF*S03;A z#Xdo>jbI1CB*9d{Y{4ACzJmP)^8|+qju0Frm@ha%ut0FC;4Hzpf+d2B1eXXd6RbR5 zTqpMH1vdz86x>2Y`E3=n1)me#CHR)$Zov-(_X{2pJS_N)V7cH=f(FNBh|ep?(>A2z z1nUdN3;G4s`UU*)*bV)s3Z@HY2xbfB2&(Za{HyUQaD>>863iEzAjs1uY)8d{vjpb~ zmIy8qTq3wkaJAqX!F7V`1vdz86x<@XRnQiEPH?-R8s{QiyM_Kh@MFQx1P>F@{&}v4 zSWZN~e-bn}z62ky;1Sjf{M{h#EyX^L_O(Ovp$wt3iQuQ&E8JCk1;36dDQSL}N=`}Z z)TMK3QgV{tj~|rtk8jMRrNL*H-C)l>EQYGhLCYDc=YOUL*wrASWK!$19VIS@b{KJdwkpb@q8df*#np<}Uo~~`!b=#K(b~iEXrZ+zln9{+p zJ5<{cD9$kKj9Iq?zCF{h^S-zy@b!4ZE*O4UV9XrDzWn(afj-w8_J-8Sfx90v>|J+` z3e4MO*uTW)1ztU3*r}KG3aqMQ+J#5b0&jLV?ML$41(r@QZF5)Sz+=~%_V7Thz^JE9 z`_TuyfmvUfcH<`HSYO=%@UtIYul%p`}h0o-W}h~Odnd! zZoTg1%wNl@*-dI~%gpQ)X?M8nq0FP}Bke&)*Jt`0R=2O7usZX(71iy%Z(o)9arG#B zK%e=UMN6XWH?|aI&W(t+3)@Y~{CP>V-Db_m%x|M=*gr%M$eggUhP`ioc4oi$n)X*m zQZhH(UDJ-4&^mK&=NLQhorak&J|AP>*SALIl_P4|2~U}s&wf?Qe(JPuGm0;dwWqDy zpK(jm+IG*{A7pghTH8)t{94AD=fv5)e|RS2{h#9OnNuIj*t4#Vz5SzmGS2E#*X};# z){H)f>)Nlqusq{|Tk6@DcUzRP?DYEf=m%zI?ERs>J+k@v85=h?uxH&cI^*lH4eci* z2WQ;fppo5de(#KT-fU!VJer;{cX_;hZb65Pn+7(vQ};B@XkV*|ojka9M(4Mi*h60o z&v^8fruN#5AG_Z-!EeWI{;GTZq-OTU)_c1j`?;B2cfF)pzPf(*Z`&o=uf#-k-_$(WUbghtZXd^Yvgdh@c3a#a#lB-OZ%Y}@x} zuWmaI^{^Wxcj-2yMlXBZ{q4F9?381F-nL0Mdqi*h&bw-LyK6zNeRGSjZsz@c?49e% zyT1N@U%PvgLtX1u?`QA3<)f~zWu9U0Xz*s&UyAzMhi`nL>+Sarum{zBvg?-5&a@A& zy1#4hW_k9`+P8P@oj=GvaNVk|Pu)J)?j5_N>)$>fV((osr>oUrn7y^uw65HVw_MTNqU7rm**X~_6q3fCFjz)a- zx}N#?82jS})w@1Zd#qh&%`fTq7LBv7Y4XqXu(!tB18)C3{jDw&?ZFA}rPsf0l6~9V zJJMebFR+u_+vz`CG}(@N@Zt0uKbm4Erre#rVc=BzrpIqiPkiPAdqBoD>8-jB~S%0y8>*!wT7q*#YpZj@Q z`mzTuv8POJm)@ky9Q*mBjni8^GuOUgPObD?2F|l5SYhdxe>C5|=c@89pIo%S&WbzK zWpnsKyZNmjb@}GjMfO>(-t2Num&Nu655CZ4*PB<^4|jdC%ao#}_TQhqzstq7ud;`o zd3%>{A6sTOe{WTn&qrNj_nfe#OW&~N_M`up)1~pI751fbrgfQc?n?Wni1A$-M_+G8 zt{UE@Z|M#8E`Pr+pG{wFe|3Lmm!s`&w)49ucbWd#Eq1$?61q%WcdLEIS@pYYAHCLo z?(^zhZf$zIeM9lDX`g;_hizL&({9p*b@o4ITRo?w-MxK_ed*ihrrmqrllJh*gVGwW*lJ(lCDcD}OF%l6}SzV19fZioHz z#=V_Ct@)~bch1|LAB)~)KlZ`)&Ob)KVYi*Jwe$TkZ`qz2n>xQ%=N&uy?mIh=ZM@t5 zJp0DZ<66IOAAbMJ&TpiAV2__Muk+@fAKIBQMV-x|AKNAOP3*kwyie@*eMWXZc?% z_ViVr&RORkwTn}}OZ{l^xAv!Re3|<7=I`xoMSD`u-}{5@tNnWFS+PIa_QTJmZtDGu z{l(BNsWayoW%ItfFLmR?p0Y)&*QO5q+FSNxx0R`5+DDY_-Lp7#&y;FqT^Gzw-M+DU znYZPIss1C;W!W!{P2JZertBXV3`=dWAhxVl?bB1A*b!HD_m+&*7aG&6Ug{;ao0MHOqG|emrFZ@_<=18{%a--um*QQ} zy6m-Y-%GjpleT47t=*Y2B)3CZ>FH%Dw{A=9NojEmst-scvKhudVy?1Zbsl97_v%8E|3(W0&Z+soAW``U4 z1`V8`-nCQcJ0o(EdW&bfYTAr{)U`R)Ds|~Jb@lmt)rB21)hmZ3t77$Lt5>vzskT0x ztFCQ7SB@E&)%y3U^8CzO|nD1GLkBVpV3}d)LWXq`?R!PQ{Vse+D8(4Q$2g@eV=1j?x-L3xa_lf<$d+8 zw&Olu20T*d{n+EP((I`^Y3~M~f9syBrw?A@BZzsWUL~CA^XKJTwLEgHProxC)WgmV z^l8}eSuL5?%||}tn|iUeo6m)TKh+Zot$cQSsMXQWJjtyz;)6p04%} zyXSp4D@*7J@z`IsXHt8F8RjM z9A3=xF3RLSI8qOALj>#*%B(4%oOL2}@w}~>1@K=JDW|x8H!^IGf%g|O#Q=iP|Ix1#Yb;EoBii&f=)f~lm;%++}V7^^ML0vjq99~p3|AdazvuFK+clMS<2@}?cWDmh4EFS#v`-Tr z+1>M2^g)gKo4e=gu}3sZp4xg|k3O#XamCQnb<$}~z)_*6Vd^=}&h70U{_`$sidOvb z;8k4FaAp^Hh_~I)#Enn!SS7rpnLIec!}IEW&9UykJ;r!G)@<~6?-3gCOk?2i*yFDM zE6ozK>mDi1Z#8RWXFOJ3{HXB~9`u;i?W^Viv(@8C$`4I!%LP&&+G+qMYJo5Efm7hGaATk^a-#3}Kbrfdg~%wx$KpDYs(asPCUQ>Ko` zg{CY`LdIYBt#9%){W9y^Kd&m%EY2!+pX6Sq8JUyrKBBTxQq!I8w{yzEQUS9;a*t6;fyZtw)<%-Ypj|NJ3JF=vC; zh3To(Gv1>8Y2~S0uH2!u?`^L%8?;9|d8V<_+W&xd@(!_b>$byM$LpPLE|-sMwLfaz z+`gRF`s5V3?aw%`UCT*#^I~7t?s18B^K!ecojY3Vc5w1-t^WE?ZtnZ;YcF1Y=B9Z4 zSX=q)mfP0c=US7J^KKSKZ?uN;BX06hAGC!%ce>3u@I`xU(OS30A3wCbvkTn{Th-dh zKc=}k_YBf*D;w?hbw`+Xqv-&*+rOf;Lx**BOX0<9t2ev4%^#brUHiz&t?!j|ZAgmT zZDmomwnfZ$E9+XI<@9ZJ{dTxSTePmqH6y)3d+%YM>sVEdwpT`ytL%7#_Jw}9t7B1% zwspiW*CT^EwGR8=x%R%t4p4l1fblbP*DDix2dt}>y55ZKAMmOR$F+9SkbvmzO^S0VBLd>p<%+#? z#s+*9{$VkMc);@&dm)Nu6m<*;@y3TxVPN7 zXr*Vfe(EjI={E; z9XR~yRc8yU0fB{fr=5e$hX(GvdcgU;`KUmd;a2BD%khD?POWsFVK*hvO+3$8Uoj)_ z-M>?uB|dWkyK_f6kLk8I-i)nI`HRy7w0o8HU#$JS~@4~*&6u$ zUzxN2#a)5D#5`x`SNj9MooaFN2|FCv%dpC6XYq-^?^pAjgo1N{{q2*T5*3#M1D}RF z<&VA|IHt>QC+`h+0#kmzclvqlVc?RHPn=E!Jqv6}y5V%C?sedqh3A}#>^}y&*Zu3X ze)6}#$o)H<`W*QkxY1y()3Bd`fp!lTI-O|@3rzHz?quo{6L>m&j8o>S#J~x22Rh|G zPYbkY?B--&l^s}hLg{qJr!X+o(bj49ma@PXKMb9w{i+VUHdW+wTGSADp|-=3^G|Ew z#Z$G8@9zH%yss>FyxqVJ`VpG$7&=@Wl(#g-(etKWkfA8hF}lGpXyVf^j?c%L2i+L` z(lOwfO;BU?T}M-~Q;`3KOO6khy9LGfIN`V^(kp0c&R)k2s;)uhhc`LCxzaP}wD)pH zS5E(+L20uc(^n4(5*(W37@RRODARkmW98`aK>?Y)9Y_C~67=)9k7I%F%%ISo&W<0R z&J8LlGk5&yusF#4x}GEJ){3CHW4VqyEY}5nWwkhXUf&#~_*m&+YP~b)`HDP;o_F^J z4Y5ylxS%*3RG%8|;P~c5(3f++9V&XA3;J*L2Z!>IOF>5jPaSNh-3U6bz3Fhg^ls3{ zz2_Y~c0CTN?R&(5Yw$8?Sm#a${b%ojKKxwgFnP$Apx%2IJ4ELG49Xrj(_#DGfS_yq z@eZ@>!h$x04|Z4|5FNDSY!8Q@%Myb&PxEx>BTo;yYwO_f=W9+-d8vs*^5UYP3Ga0s zY7Hxb68Eqi`UlnoZ5iEYk76*$&%E4zlY2*yNoltItbBH`@s|YqP1l9NU5|y@|DGxh z-Z<;0eP1KP-~_LC_LT`{!T)d{+eclr32sikZl5#5Dfq|hv-S>l%HaD){K*)Q z-VXcT@4E$O^jd2#-`6|X(`1po@%Vwk_v)tGkG2~g+$VOd{hRtR!R@aG*$)ky6r6jy zyS@1C^x*Qf9`>C(<^)?#vbVRLwkUXGHxv7H-BtwGnd{pBFXxSXRw79`; zTh`9tIniZy`vdm}@A;f<_vPi0;E=lsc2-wU1@}4?YWMQ+h2WI!KkZg-xf*XiV_(mT`8&MkfW=)eg4HpOg{&yt0SgQ~$i+|4KdWt}ZJH zeo^FL_ijs7aASd~UE|^U;I#!3yZKjJgDnf$c1K5K&o$?X@i3kWp2+ zwoh90L)3Liw%NvJA6-{J#vq&;nv? zvqILKpJY4GYC*{T$HQ%x|FbMa{;QAer?YE9J}0Sc715hQu2j3&{*dkrc`vfE-7nlT+y_;^cbXI+cOW|0X zn?bE13e&+hwJKKViqSo67T*zs*6s7OX_8Are|~nbd3?|?H0qD3&E^*KPE$z_ak^uyHC-=-o}N9> z`hCKU&?|5Jtbc8~A6monu+BGq7J6}}y|wkvH=)Pgnpm%2^f@#_EV0g%{tES9$hMyQ zH88aAuO_S3B@v;kEh?>^nZ$=yZ_TsX5SkjQPENL(uq!9Dz%SBjsBdxTv@05`@#U4F z*6p9H);_2Y?Kby?)q{C$p?3rCT2bX6v zTv5jG`LYGpBhURc;aT&n~9mWEx4ZLw^( zUK6GnQ*HS#vpH;Vc!8yD!Ok$dk!hA;p$EdIhecZ+d~+%MOc@TGnO`^-iOt#``2>7fNx>)4xGY0G+`%? zuCsjU8ydFMWQk?7S4`O5hqEllc_xST_M2$=&NC~lTj(%L2cN>Qv$OhG-tJlvHl{{p zspwr7w*0Wd^84V{uu^Ml%bDX?;h~=lEP1np;gX3W%dgAz!rxVPT5Q{49RA~2y~UtY zR^dw5G7IB-j^XVg*%tL*l;Nu7i56*bs_-b?aEq|Y9^p~1e_Lq91H!xf^U)%}b$B?d zZzivjs7!bOv}TCA0B2p`B< zZSkPj_VB`Y3oLS%?+dS4G~L4C`jPM@X5%bYM4t{H8a3GB3-?m^*@HbTbb8+mAKKg7 zV!@^d;foubEPlOy9$x#(!os%dU3mElxy2!mZ{g!z1r}ASHQ{z8?dCJyhKA35Tx%ZI z6ca94USi&-UrM;bBg_2Vk?im{HSy-kgre{#pF+(a*j0tg_xv)qTh|a?GVFu-Elqp4 zm;N(zYh!LiaprCFn=5o8^qyTbx6$fHJlS@_{I;ce#QPEZ&F#0^Mfg~3HNTgrh_I_# zW$xJ3JK~^bf%$`rei73zPd9gJ?Hh4#%{cRWbB0FD9X`a|Hh4_LIs0Db*Sx1hbno;w zH@rS8Vsg5(`Ek+0h{7+H=6|=Yh^V-tZ@#u{eZ;aILh~&D?GdwQcbbie-xm=&u-@#| z$fFU@6=i1n0cRrkvK+Iu{VqqOHYb{eeZLjqlpk(p-TP5QX_VS*^^cbkF5f?yeeVA; zBKzqJv-ZFr5%O#I%zBOqjQDxtirKoPh=`&+r_JupONcnS@sL?WReHqZYV-jSQ96iDWh1CXU2^%b6O&byg9a?nK4@)={Byb zS?5jD$gUHVW*L2KBY#b{Gkcxo5*a$(#B9etugFPrC1yRH{UZIBa?GkD`bL(lYcajD zX=r5q&T3OX+p&@Rj~1GSMNEl2cPZU;{0{#}$49ZI;mSpk-9HDL_Q+Zp858!y^y;~d zk>y$MOsj_Pj67EV#Iy_RVB|}k+or3&9gqCS@uKPFE$1T-^gUtvzU#Hft~2(VY8viF zuG+HI^!KNyk;;p!O<(VL8@cx5Lenz?zDD*=nPECtq=`J$Hr~`WJ~VQf?J(1ro3W7* zL;IMnS(zI7X|=CuN3YySly%W5OjJ|CMSe_8389z4lJO&`NH z{k&KhwP$y;N$LPul=qt|lM-vwsFj5UCV3q;QC%$3O+vF=qK-_AHMy?#iduR+*ktBI zzo?|ZA11t${i0%7?@g|58WuI9-%}H_x#ObN?!IkuaP-tD<6jp|QhLsb8p%3oVys*e zB^h$Sq>t5_sJX|snT(Zhi5e8U#$>o)Pt-@V#U^fl|Bd>(V3tXJ^QowDuO^y2s=pYu zseQP~fZCf;o}>DiXlfotZN1jjL|OMTYD%TjWP9VsC=|pduiJh`h5l!163z~enp+_? ziPVXXIzE_Z^4>T(YShg(XwzFOj17XOMNiP5Z!D~t8|`#> znsKJpvgivPV~x*_UKf396DAV7wnY!E?qz)G)xPK>%T>lD`A4Id6f2BP%+Ey^EV40n zns_z3qtM7$cH(aI`z5-@DZx*p#pP_{UA%YE9cx;Qm?7Vy&oovW&Hh&#t=?T^bR{%A z`kXM+=#?}fnsXuE=+2akXd}BYqg6KxqJv)jHZm%$h&Jp0$>>tohGCG;6udlP_~#5eR=w$f zVX>J`?5Mum4PV?hh&>=&XE@NuGIm+Q62phT9Ai7~%r;CN=Mmd~-4w&r+^(^zfuju{ zZ|WNxZ#c+su+FephteK~FYb1!@{Jwv3_f<4c~287CUm3k>MEq z^|4ZguHn14+hY&%Ifez355&GGYB9)ZJ|25G zj@+7P@c!z{*xI=f2DgWOiXAsfYw%Cwuh_YMUkwr-hQvBMy)iJK9vget@UekHk`^1! zyJgU!$&3Bk{GY+q?d7pkD^D17_}0fh%RgY?Qr#Z=F@3v%$#Y)Zw#0P?5zD1Ek~WhyScT{+T%Zv-L`8_#NW$yXfP0ipTG!kKZvKzpFle=Xm_?`uGgu z@mc8OGl|D%qmR!h9-oyyKC^gycKY}XxNXDi2N9FNahj?X+EpS>L4K|H<- zIlhy4d^d7@NAdWsXr@eC#4S(4+KO2D%v$1|3IXHAZ0E&*;8~XAnNGm7EypvSfM;EfXFdVXz8vpB0^S8V-iZXf8*;oO z33ylJcxMvu?#S>CCE#6>;hjpryCuUrmVkFnhIcLj@16|rU;^Gn8Q#eRyqhw-qX~Fd zWq4;3@b1d+4kzGUmf@XFz`HHOJDz}dU50l)0q?#HXFwv(0vXPPM4SyWoDqpQD`Yq` z5^;9OaE2t}ERo?%NyOPA!x@u^vqpw9ClP0l3};Xx&LSDkq(q!eGMrI~IICnhvl4N3 z$#8}x;w+QlOiRSsCc_z*h_gfy{y#M!HdGdK}vu^!IkM4ZifIHMDBR_o!+PQux(hci40 zXSp8E^dy|^dN|{gaMtVL%umAEuZKGz33q`W?t~=V4SKjEl5kh(;m%0H-Jyp&Bnfwk z9`2MR+%0;zW0G*!=;6*u!rh~XJ17Zvksj`(B-~AUxTBJASLxx-O2XZxhdV3@cbOjU zv?SbZdbs0~aM$VK&P&4Gr-wT*33s6scVZImMk(&dB;1u!+?h$ZJEgcolW>9d64Xd3sFftBnNmtD6r=s@PMGugQUO*Q;K`MF! zUGxa4=oNI)Go+$-&_xfChF(G!Jw+ON3tjXWY3Ma{(Q~As_s~TTl7?PH7d=TDdJ|pr zC~4?bbkVbonlrK9)LK@XUYUQh=;VLEz49rTFl=oNL) zGp3_=)IkrKj$Tp+J!Lw2OC9u>>F70e&~v7v_tZfTnvPyn2R&&zdQ% zqj%Lo51Wo&RtG(8I(l0j^tkEhb#>75rla@OK@XgcURVb`aXNZq9rVcQ=#_QQGpD0> z)^J#{*IYaR618R)fj&~s;?_trrVo`GImjGjCLy}1}YdIoxRF?#k4^zLHx z@EPdk#pvlX(A$gA<7c4P7o+FTK<_U`29SX)K#WWv1KEHW89@fJ0x>d!3}gplWC$6^ z62!<9GLS8ZkuhW-YY-!I$UycWMh20AEJBP-A_Lik7#T$dvI;RWiwtBJVq_Q@$TGyp zG%}EFh>>w*BI^(%^TWH(}DIGM29${`NQ6u%6WNdm8Br#(A`vp9Ok_tQWJsCFl0?XqGLbEbkTGQ; zYZ4)I%0l)eLI#zEEJ}n-Dht_^2pLrtvMLcWt1M(!B4k)u$g)Jpw6c(GiI8z+A?p$$ z^U6Z@B|-+4g)B^jOe_o8m1S;*2v$keist%;DaWg%-5A#=+@ z_9j9GmxU}&giJ0A*_;R&T^6!B5i+|hWOpKDcv;BuM9B2AknM?(@ns|H6Cv}WVb?OxH-sjg~)VsknIYQ@#Y}w6(aM^LG~*|2AqQ|ScptG2idR? z8F3D>Vj(i)9Aw8rWXL(ll7+~WbC4|ykum2WYZfAN&O!DpLl|d)LS)!E$g+jVv~!Vd3y^W=BI_0)^Ug)~EkFjIi!5A#OgtCaxBwY>F0yg~ zGV@$y=K^HtxyaH5$kcO@tqYK`=OSwtAal<}_AWpMpNlMBfJ{CY*}MQ5eJ-+k0W$ks zWcLDO__@gP1<3Ssk?jkR@#iAz7a;S`MfNYi3?LV?00CwKxtI+IFeAvttU!R7K`v$o z0?ZKdFiQ|%rjUo(f&epyJj@ydm^tKO_8`CvA`i0&0cH|;m`w;UqsYUoLV%e?9%dH; z%rNpW%Mf6uk%!ra05gs}%sK>^dE{aCA;1hI53>*fW+Hi*jR-I!$-}HffSE}iW+wv7 zQ1UQK5n!g0huMk%GnPEeS_GK6RGI^NI@G+yw!>opnnN2=sH+;-+ z@-fTdW2Tdj*$y8wo_x%D_?Y?RWA?+x3@9J7AUZ%&_t? z%i?3Em5$r_Ujb%)e9Zg`F#F?U23UYuARjZq0?Y>am=P9WR>;T9umH0|K4ypom?iQt zQ!K!2k&hW;0cMRn%p40ad*opTS%6t24>QR^%qDr5Q5IrW$-~UD5VK1jW|)PTW%4l7 zEW~V+hZ$!fW}Q6DJPR@VBPGtolKMtPW#7GhS)!_2f0vr`^ssD+rN@-R~^ z#B7y^8EYYCtvt+J3o(1;VFp`>Su77T*+R@_d6>}_VphvTIb4X@Ee|u?Ldl9%jBpnEmoF11`cWn1`8g5oW_Y%!rFHE9PNlT!h&%4>RN<%#wMSDHmb3 z%)^Yi2(xA$X3j;JJ@YVwF2XFDhnaK{X45>(sEaVG=3!=CgxNI@GwdSFvU!+k7h$%| z!;HHKvu++{-bI*w^DqN1!YrJJnRpRq<2=mBi!dwaVP;;0**On0^dijCd6=meW46x2 zjJ+7Mb{=N##hAVGFoQ3~ES`s%d@*M8T+HZ;F{|fdW?ziiJr^_lV$AZnnCTZ|w$H_k zzZkQAE@uA4nEi9X02G4-;DQM#1{=TyBTx)hfD2}z80-KS3_&qi0xp<>Vz32VFb2h7 z4Y*(qioqUm!5|caMc{%-C&$% z9!kJIaKS*7fQ8_Ki6{XZ!385x0#;@MMM+sOCE|`uIupL}59wlHsxL`g?z#W~LPE3<$MEPZ?Mq4w#-Yuss|wK4oBiIADIt!2WQ+0F{9S;(!S%0~^Ev zBUA=fhy!M*4D1jG3{e?aA`Y0MGO$G)Fh*ryjW}SA%D^6Rz#x@@MdE--Dg&Fu0i#p~ zR*3^Kalk;8gN5RNi7E#h#qrM{QVv#% z17@lm>=XwKRXJEH4w$NPuvHu|R^?!=IAE^I!CrB|V3mW#;(*C22b;wKqg4)8ivwn> z9PAbc3|Bc=E)JNka=ATD+e3K0V7rcR*VB?tOD#9 z2Mk#SSTYWnvI?+e957}TV9hvS&MLs3aloKefJNhgNvi;x#sQ;N0alFzW~~D38V3wp z1z0u?n6?VAZ5%Le6=2;sVBRXgzOli;Re*(KgNdsE8^;DCR{>Uz4Q8$a>>L{mT?JS= zHki5!uyt%Ob`@al*kJA|z}~UJ;8lXfV}r@71e?bOqgM%5j}2z866_uu3|}Q!J~o)X zO0a!wFn*O_{n%jsD#8A-!2ni*1!RK>tOOg#1|wJrR*(&5uoCPb8w_D3SVA_K!b-4( zY%qqEU=7(|4lBVPvcVu$f<>W$KC;0;R)K|NgNdvH8_5PESp`;-4Q8?m>?9iuWffRTHkisPu$62umQ`Ra z*NOv8w_bRSW-5a(rU1!Y%r$PU`^RzPOHJ5 zvcaHMgGFV7Nv#H($_Ara4OW#6X0;mZDjN)IHCR?QnAU2rt!yx^)nHxOU|y@izOuo< zR)d9QgNdyM8_NbGTMbs04Q93)>?|7$Z8cb0HkjIKu(fP3w$)&5*^78v+iu<$G}@wH&%SzzRA!OFA1%-4dQ zXMv%w1xwEYQ(p_Vo(0Cf4y-*3%zYi$dlne{I%i)>!0gw7-DiQ} zuLH}^0@Ggywx0#YzYeTF3(S8V*nburfI7GUEI0vma06Iy1nS@lu;2{T!5v`1A*h2( zz=Bgy2e*I)$Dj_b0SnGS9oz#J9E3W!2rM`Wb#N0{a1`p`DzM-z)Wcn1!C|O}%fN!u zP!G3(1;?Qtt^*6sLp|IF795CrxDYHj5%q8*Sa2lj;YzUJOw_}jV8NlNhfBeNQ&A7M zf(6H-98&9I2-kFHyAh^^>8^DI34wHI~X_~ z^>95HI3EpgKNvV54RApiI3W#iLl`(B4RA#mI3o>kM;JIH4RA>qI3*2mOBgsN4RB2u zI42EoPZ&5T4RBEyI4KQqQy4fZ4RBQ$I4ccsR~R@f4RBc)I4uouTNpSl4RBo;I4=!w zUl=$r4RB!?I57=yV;DFx4RB=`I5Q1!XBap%jc{ogI5mxMYZy2-jc{!kI5&-OZx}c@ zjc{=oI5~}Qa~L=}jc|1sI6IAScNjQ4jc|DwI6aMUdl)!Ajc|P!I6sYWe;7DGjc|b& zI6;kYgBUnMjc|n+I75wahZs0Sjc|z=I7N+cix@aYjc|<^I7f|ej~F;ejc}0|I7v-# zlNdNkO>mVMI7>}%ml!xqO>mhQI89A(n;1AwO>mtUI8RM*pBOk$O>m(YI8jY-qZl|+ zO>m_cI8#kn6gI8{w>s~9*|O>nIkI9E+@uNXL3O>nUoI9W|_vluv9O>ngs zI9p9{x0ol#o15TrF>tz?;dU`_yqe*9F>t<`;eIi2z?$KLF>u0~;f67A#G2uXF>uD3 z;f~?I>TgyvTrvhuSu@-+298-XTr&pFSu@--1`b*?Tr>twS~J`<298=YTr~#HS~J`= z1`b;@Ts8(yTQl4?298@ZTsH>JTQl4@1`b>^TsQ_!Tr=D_298_{Tsa2LTnpSe1{3QR zxO5Dhx)!)~3>>=_xONPjyB4^23>>@`xOfblycW253>>`{xOxnny%xB83>>}|xO@zp zz81KB3>?1}xPA?4~xPbWkf?D7PGH?W2;0iKu23z0`GH?i6;1V)$3R~b7 zGH?uA;Tke<4qM?KGH?)E;UY3{5?kRWGH?`I;VLq47F*#iGH@7M;W9FC8e8EuGH@JQ z;W{#K9$Vo)GH@VU;X*QSB3t1`GH@hY;Yu=aCR^c7GH@tc;ZibiDqG=JGH@(g;aW0q zE?ePVGH@_k;bJmyGF#zhGH^6o;c7B)HrwECGH^KC;Bqo>I@{oOGH^WG;CeD}KHK1a zGH^iK;DR!6LfhbmGH^uO;EFPEM%&fOoXb2&cJE^ z3%8wtHmvgmx1H| z7p^}8=l?I<|Ns9F{p-#%x(xmMZFXi1{pXwBIx+Om*9=lI^yif&^kwMJ&s{W%p}#Mo zaVkT9f572|4E;Q>P1iB>^Id+ji=m%)N6%vn{ruCyFEaG|c+a}W(C^2te8tf38?oy< zL%;tSX(&UV$LL#$41GR-z493Pyq^B9LPx@4MonmA==03a6|m^@UANwlMW1&)+m1z_ z|H|_oEc!lD9D1_o`|19ED2u+Y6N4wQ==+OHn8Tv)Q)kgi7Ja|n8c?(0`<{5{5R1P5 zIY#GL^gQ@KxXGgDV^r5?EP7rPfuC6P{4`7sVA1pRx*&!{&)4*gnJjwVsySsWdj2+? zZ)DN)m~YQv)AQN?tsa}6*CPWg+4TH=i&3!Yc}|_vl}*ogUey3LJ?{y-#BruR8xa3`DI?;&ww4!!SZ=a_Kl{r_3vz@hUX zVw*RI&WCUOJ{&qPj-DUEq4T4=?LQnkPXeFM=g|4$(_;;X&YK;9J2-Uy+?{ZQL+8<> z%nKYkpN=fM!=dwPXu}H*onP5|zjEk2o2(nmq4VwDrFagVcMujJDCdcVStOXuy$&4amg{*GZLaOphGJL=D+ z^LezvaxR_M$FFbZ()oSE=>V6`^8+tWbLo8V?RT9^=Y8<6$6Px9orZtl(tR*FM$M)B zVe+&nF5MT7IcZ$FKLVE&bLl?mT3yGb`(@*1hDZ0!{tjIp-9NJrn(^p966!ef=ziLB zR>hv(kkao+FZ(S0cFag0azWAcxS zJi0H}47|sq`!go!6_4)I=8@ldbiWoyh4ARUy*V+FNB6HqQZA3~WB=(@Ji4D3XSDL@ zzV@9X;M4sbm}|hN``mn?EuZf9E=BHqy6@Cpr|>J^6- z(R`|3zLlo)sh*K7E#XsrV_Q_ur+TM+0ZTyj&-z@6fa;-lv&{umAH7U>7Erx3f10m= z>Zj<0egdke>c@{3P<<5_F-<`A){^0i1XO>$)2enpi z6+)_Ke_q=nr22N0?4Xe9-2(^D2&w*E(tKS=^>E{gCqk-^y|X_Esa`gis1Z{Ad^;dY zNcD75w{#)Z*B>4i3#s1jZC)>=`g{3tMnv^^|8`vw)#u+=nu(}h&(3fXQT_gCv`R$v zyy5r0BC79Ql%qsc?`K|_Dx&(|PqPL4jnX5znDL-(f4)v=x_Sc2O>Gt;Gh+(+!JOa1w#xhh@i*9Uy;t4sa+1)Wj4)X%S;J5`tZ`>6K| zbgAEeCtRyb{lE3Bow}3vN>pxw}3${n5A3FR}Foxe*cukl|QBBA`|>YD@!0^t4I0Y z&-N2~ln3%XuIN!d_|!`uA3pJym`*i#d6A@lW(t=QyzW) z({4HC(*cpkTC|Os5zX7qv^yHn{B2)~w-L?bZolho zMDw|-lf#W@UblS7WFwm28T6lPMDx5-la)p^->azFVnp*ki@*a$H2>Rt^|TSq1KU<# zGotz6^MQ|yXkK{O=$#SG4^I^TG@^Op*Uw=_G+&e-O){c+xGP)#x#H3edDPy&0~-F ze>A4~>|0BXG0kh+(jtv%e!K8;sxi%T%O)2Z(|q@|tj3t;y%WOQjcNYtb4X}H^I(s@ zh9)#09@=PQLi6J7FO()UKMq~sXF~I2U$a3bG++K4Io5>c%~SWyFroRgUYErtG>^_H zTxUY_>9C8tOlV#mG4!Yj&993ZE|}0f+vNUj6Pj<&neg0%=G{L!KAF(`+vkbagy!Mj zCPkaje0+LGnhDLzbsrX)(EL1pOsxsc(_hwin9zLv`c;uB&D(GEGcu+5`|EsLQ<}#o z{_Ac^^Lbs@?xr-apAsqMtsM>T`6Y7duZG8&4~XPysg@dc#yz` zRx{#5hOFb86E6~2E;lEBWbh&@bK*&UXDZBzFX=U>1b0iGNXsJTxaBW?h%J z=ETRmy7j}Hc$q>`s5$X7`Wq6=iKp>P&o(E%X41fNbK-3lJ#I87{${0wZ9zQF@^umm z;&Wytm|768GpL)R1@Sx9m%J>9=c#DyX+eC?%PB)Gi1%6WZh{5zKVq4`1@S=lRxGt3 zKFA|zg9Y(IPi*#B5IUtp>Q@k^#gg%-p!6)pHyc&N!2tSpI- z`j)A%Bwk9_xr-(7Q^QvEvm~Bs#k-M~#8+)?o?=P7)vDg}EQ!Awxo4#%@mNyz7E9u@ zzOW8h60bFCz$r`Ow*vNDu_T_$?#F#g;=2~Lys{+T>tvU2mc)NuSsi3aJlL^Ev6jS# z&CbrSBwozOxWtn9u~(z&EQu#m?(MWBzU=5bkrnY~p@oK4#GjQK+gcHiRyI_Lwpc0% z-_*^Dc(oJv23Qfl<{mTJig>oCZBwm?ZxcE%up-`V(74rB#J|njvdxNkxCu88S`i=T z7;xH(c)7Tet5(F%`RhKkBA!m``NoR)I_~)IR>a%ctPQpz{?6!hoE7nS1<&+=eukwwkE#sj<=CD@qYV;*;*6-*WF)fO*~-Wx^C9Q2PzH? zuqIw`?xoSz#1F1|Jk^?b!f~JHTN7W%3tnYSyy2;Yt=7aJmggL>CLYnE;*>SqTGi1+mQu-At8&y4%WZHNaQfBvEk@u4U7-mxKG z^z6##HpGw4n)=Cxc+%?r8XMwEhr34F5O2CfmSRKvDR4s@;!zvZDs6~QUG%e=+<)Pf z+Z5pV3eKxIe#afxjoJK~Y&WDc_4yzLs;&j(BLzxf^!GN8cRu*p7H<&$_pE z#80og^TUpK>Lp`C?1-<{YmKub-g^1{OgrMQH;*Z?BObd;L#-Y0+4rt>*b%R-=`XY= ze*0X3zCH2W^21j4#CP{oDC~*%whU3(6aW2qaUXl)!Sgu7?THT$yEW0Cc=6di{q2b# zza78Co_O+8E7sc+U#?*9vM1hr^`*o1#GlVrp0g(&z4ga+d*ajkk9%ZKyt;Sx8++o{ z!&ZH_C!SrmEy$ku_U3R*&m!7h_`>#)!Tvid&BoV9f-$w@)_ble16*VaSp`m`?}0iklK?mahH*7xTKt90blFJU{2h5&+&w+e_fRGms*7d0glb$rNAe>go{VrLU*a!&vLpEu5i@2x zl24&}v(%CN3LpLkNAfK~rtfkj|Dx&HVMp>Yezu==BtOGq^mRw_HT14NbR>V{O3`aa z@;Scxd~+nfW6h30NAf+sYNH*=|F|knb0i-`I=;Y>{1BrHRgUC~yiRI%B!48^gyTd$ z$?d5UC-O_`{xfkR-y|i@&WZe!aZ-0D@=>M^@8(2)O7-6UPUNeYeje#W{z`1+WGC`j z%64?d6^UWE>r*A;6(n*=#RUc$cKq8IP64zOt$=-6ZtYb`&@S-f9BDWhfd_v z_@8<0M1IZfPhXwLw^^MT;6(mS2rJr&e4OWwsZQkQSPac~B45XFaitUaJC_bNIg!tE z_YTXM{2sp_I?m+#Oing(CjY0k+QylDAQyp~GxrDPo>Y(AygJfUwU}|vNQQi z@~3y5$#44m;<+>VPHSI(bSD34{+r*<1m z7q@Di$*;P1soj};E7Mba7xJ%k56E1|$J)Kw+=cwC)k_^+$k)o4=IKKIR>-jKF6480 zcOB?LewUHmXczLmHtYQ3LjKpp`Z+G-gFQ`O=0bkhF7*Z%^2Nd*>~bN0?EI0#F65IX zE<5W&e%YB3*IdXq3vhYhLjKu$?kgAa(Jp0wb|F8l%NLCc`D!E1M!1l_mbfIzg?zS@ z-Z?Jhw@s9lxsdNRAg|7a{I^GMJ6y9)S` zRFGeHd1H44`F3tS2P(+F^XeR>ARq7H?qaa_etp73v`FkHb*DJ{9tNXfB zL4M!uP5&y$_xs^_MnV4H$f7F>@&Silzo#HS@Xh!a3i1Vyb3Q4^AB=ndTR}eIk%eIj z@(Z8oCn(4_?DZ>CLH?oN@?r(~h_?-D6yzsv`qru-U-82{t}FSA^Y~I%@)@^0F>xio zv3aDOEBTK3Wp1wIKl&Z*;z~YbgHvBu@*^$P!(7Rid^Tf(EBTZ6YG=5TPsu*I(3Skk zP^;Ch{LGTM7hK8Ld{ueFmHf^0t&d#E=UmBt<4S(# zyklQo$@ly!3vea>bL)SRuH=JWF->+QKh*MSjw|`19P=_)@<&Hsu5%@yw9&A`mHbl9 z8NM6&rfWqqH}X&W?K5*DA9Zz;y&L(d9V^`3$X6}T>gq=RYR~cg+{kAw{x#f<{MI^; ziEiY(`d^*tM*gc4Z;>1Mu%lM5b|XJFDshV&`LZv2?Ql8>A)bF7m5hD#=%lNu8@Ce|e1YawYl9mJ>E8$#3p=Y^RcZ z=MU;bO7fp~HJwtD4}D2_SxJ60XZ9T>`O?2nJynuF9rfd#l6-29^6yIWt22#*l;m4y z^p94Of2~}Wq9h+X^mMM0{OphK%ar76*Cy8~$=}}D(yk<*dy*O7o&4@?etPcYdzVi# zbtnJ(>1sQ7^1(kIc5^2`TzbpboqX{(?|ZwGKYlx8h&%b@X=!8K$uFN>KGmIkbC1@! z?&O~j6)blrAN`5`26yt)r&#WECtrP};~{tQ*AKg$awnf%;&sWL{Pr}T+wSDMSF4`5 zlm9+i_12wy_-e0j?&Qa(Dg)ffmlrulx|2V@$2!TKeEOb7+3w`m_Y{}7|KGRo_~TCg zy{NjyoqYV{EVc*v`6UrL9^~uy`C{ln{(j;;D-ZJdU!QRHAiqCygO>;S{_fMedyxMh z*?WKo?E`paJ<@~r1H^Ss^q_qK-7;r-(Efn5FAF_rpTMsRt2}7GK;Ej&9<*;@$dElA zw11$){D=qbBM7NF<3algihp16pnU~{&))T*{RP=`o_WwdgOBd-J!ro{c++0 z_C1VVG{KYhKdhC_@Pzws5cXxhC+&xrF>i$@?TfG#Z1kl45th$(deT0LF=GyS(te3| zl_x!E-^7>`7d>hJgoW!ZPufRe9q`DL_ESvqf9*;8D!$i$_N4t4(~hYp*@llEoE)^vE%{tUlHo)_GI!&5t? zUbJ7s@UO8K?b`_3YvV=xH(oIcFWSeU+3oE``#Csm-MwgE$A(P?xYv( z6Iqb@pBL>H`PlEK7wsGIz5mdQ_K&3TUwP3!lBY{PdC`87dqKavXkSU7Lx>mcFVWi* z<3;;S_NSzH(S8$4?_4k1can9e)Qk3?1gF+`(LR(UWvdtMN73EM_NIL)%fiIov_GZX z*ub0ishpo@;Z6Hh<~()qrhO|DYLwoze`QIxF5a|{V7g(|(uq7mK`U-%DxXDsS5VVrseBoA$vh8^7C|_QPcC|JR%L#jJUE z%A5AbIOJXQrhPKa(p%oNU#7ChBX8O_!(Q;poA%FiJNC(&_R$=D^~;;~)3n6}d(*y} z6ZO&Fw7;g8VTw2Hvk|ItylKBp-Ix+@+IQ2ofd>`nV{=3QibXg|)cr$Qgv zm($~i%!l^pL`RzX!2LJgn_=ri`*lW_Dtu_)j&HrU5AEOS+R@#I_VJA84)CGvTk@XgsiOT$Iquz5w2$d_ zV;>dmXIlGnh>G?#jXyX>Mf;oj51*obQ#bM+MuRSJ6JHt_fFFv|sA=!MiHjH`UGesfzYbg=W7| z(LSmr$G)g&Kb0J7)@ff=P-=*Z_E#O+9iyUsR^#nbRJ7m9QIoBreOK&x#VXo=Rn}3Z zqJ3EDmm5{IA1l$PQ$_o-l0$gDv_C7~U*b#qv>N{y`qF+a`F=}Z+PBq3?&wSVw`Si| z`qDnG)2_b0w4W>JZBJj?*TwBQ(3kdi4gWR5m-cy`8#uw2_Iu@Nr}@&puWp0p`qKWd zGryPk(mt@NUTb`5KiGs1n|*0t*eCbhzO+Bg{_Y`P+9!6#=%g?07h@g1;7j|)HZ@-J zrTt?S3-0;C{Wo6}{nVHCljU@O>r4B}{BM8prTt~;Jhd%-|n`_-~fiM!Cg zwV7G+E^znhW}i~Hb%Ln&HppwM{E*>!hsQ}@)?VweQcd_u5Y5BZRVf1HqqA>f7abi z^tXM`DZYt5w~L>TG|}%?Fu!FJeQ&iFb!?*ltyz~IP4vON^+f+B`r!`D9NI)*T$^KK zn&^*v>7L0=^vSIpp3_9XT!WWlP4vyB75`ro{d3Rld8&y%x<9UYv59`VO|9N&qOb0( z3DcYCuWR_i$4&Iv-S^#BP4wHPF8ZN~zPreQ-<#;ai@&(Ei9Wnr?y7F0AMd=@HBI#8 zZ5^<@iT=FbGS)WHr}yZ?Tbk(CYyHyhCi?b{{qIl{{d@0!b)tzrzLvk79;csg$;|WO z^z{v?yd)0x|C*JvuZq*>*J)nEIQ@Pz<~54b_jlIZyW{l#b+3w#(+Bu$X(UcR;2*!Y zjMEpm=GzW&`UCfW)ICn0;L+Fn#pxH^^Td!ieS=GLN5|-EPjUJaH_iJqPM_ks>1A>H6=!G6j?=gJesp1+{>3q8uZYvfc;)=Harzm* zdv!~kzQ)MF-EsOGXEZnzr_b@C+PXOXj%m|Qi`Vz~T>o?9^*?@f>BaH-Ab+m9B3?h_ zmk&0G*BAM8{4MeNBYSPWGhUzM8L!?KuV3<=R>|@DCU4x+G+zJYGq1Oa*GIXwS?75D zl-F+R8LzLh*%N8;`YSu$F)Uu6Wwdfkynf5eM^B2^ce(iF?0Ef`vDXXZ^w^x*>kmD@`b4}w(P2raC+HV_^?&Ck=o|gw+=~-n{~NrYaYceY z(!zz;CFm!;FX83{eWjHz-;todwCVoF3HnT5>XMkC-?Z|hXo9}emGvzX^qa-8LCFn=(c(_l3zSJeH2PNoFZT8<03HnqYTRApCzv^cm)!G2g1**v6Q4`a-}>^$FDJnMU;q2sHxu-`{(a^D67;>k)A{2B{jdEV z_%cBs?DiSoCFqCkU;9gfzSwuq`#V8@?BDU_3HoGz8#FsXzwC1l*CgnhjeN8$LI3Q` zirNHyv< zr^hZz)Q3Cj<;xTGz~>r>gTQfrch6hz}0@AW=W@&vBn6>MQPY?$?R>i@#me0!2U=x0*yNzxDf-m17HebJAEDM|XH@4K#9l0NCrer}zlUwUWHj!F8a zk8kgmqPw3!Bu2 zO9#f1^j~jY^H7pL?D@kVPtuS5f9sw}(wAL7{{=OlgIi;w@2q`$k%sFEao-cMIoCh7Nn{@%Gs z`o8`?cQ;PuACd$Ko-``r8j5o{$XtfAhmvWG3r( zpA(mxtnYnU*P>+D|6Bf-{$R2`_}lM)G+96V%)(Hw>Vipe&_dBBc4A}_2<7E+n5ad zf9tx@+miL`ukO4%S>OIk_Z>*qzkm8=N0asO-*fOpvVQ(cYfeqk*Z=jGXQk-xKl|~2 zrRej&a>&Ig`u*27xjaSR|A;fMNrC;pb=u<5Ts+@4}zz&puzr`R9x z%gIer>=SsVG%>|~fh!)5q}Vsmzg_bb`v-cQ*(Sw4f>UR9NU@(Fy|8PFeFcx)*DD3~ zzfu3q{Zi~RSpWK<6#ETs>@YmVzJn`|j83utp!mJmpz>V``_r5FP~4bkKwJ>FQ?eg&}aGUDfTs# zOn5s5_P^1ly8orv=kV*3AEnsu(DL%nQ~v3DcxOh6{SOmw{XWG$i1R=DImLd6VgLCf z#lDEqU(8IgKcc~%d&q=jE849k?bm3PdwHsT8<$mHoofHai&tKsY9Ghnqi#yI zpJUpLMyas>w>LU^XR7@jLz*^Dwa=sV!*Qwhdn_wSO11Cf>eHjC_J5qyym_j9ARiRA zPKEuyeb=|`Q|$}cu(fll{UMKC*CW+FktJRFq}nf16H80AZ=~?k!KwC-%v(4-)jpDW zb)!@5CyCuSKGnXGMXe{N+F!DC^wd=QOdfkAH`RWVwbKhz?K|1@>;0+rpS)c2aH@SM zd$v553j2S@!Q)S*+L!YFzn)LEKc)Wams0IhIknMisrIXU)%dMc`&Q0MdN*MD{?8_P5<@|{KIX_%{al}5I&lmhVV!uw?7p{!h zxAR!%Ya_7#ca1-*VZ=V3gMZuO8(iP%3he`H$3KBE5~8Wgdg=-?y6BC!8=9lK;y1or=~|4mDe*k`o;mI)F2 zjTV14Ibz?@h_2*8Mot9w|35?TDTvsQH2%iJKk4OZ{}-`OY3n7A zN98$B*MeJ|-?TmLL_Bmag z{$9j>r!y-)jM(?|#x0*l?0=f`z!wqwpr$XI5wRcYlE&Xf?2EeT|9*_vA62vHmxz5* zH{9|^#D1v@GXIX)H}%GEB@z3lN=~nc!2aL;bcd>l{Z#v&nG>d>6|5&NrNJAYBc zKC30|mqzTj`tIQs5&N$0`E_-~{;Rfo)<*2Zs=IMx#D1(UJ-0;c%Zfg@Jp%iGcjf21 zBC!8=?_0DtV!zgpbq6B$ZC!Q4k%;|USF}7Hv5)KP;q?*wxwhPYO4PotU*0%93j2T0 z?cbgiwa=?b<+)M&y_T*#KWg9C)w?c=+W&Q^?$W4zV3W?dB5FU_gO^?%wJ+?RYp#ph zAC}j!Vbngcfj8Y0wO?%cO}9qv8{2=w?NR&3KDzF%sC{GyFTW>hKiR7D?~B@3HssX! zsQqPy2NI+9ncce~C2GIfgY%Ja(CCLeQNpV^@!T9_Tt7~QTx`~{N6VT```G5|E5LlW6K^jC~803zWAY0``XSt zeMHp$wr}T-irVLP^tJRT?0@6ML&it#d+T`fq^SLG{WfJp?SrfPU~1HUxa1KzQTyWl z)gV7=e_Zb3!YJ(jy#-H)QTydCZT4W)zPVO=ACB5Tciy{?M(v{;+v$m@{d9v5Jr%XD zZrikHqxRSRtK|z(`|L_Lz8JON?%$8T61DH{*iElT?Z3Up3!&}XW+Q-*$);Cf6`La5H zAGNP<;G7?$_V+FC^h?w}za167MPdK%d$GlzQTzVp{`_~;{=awbE{WO)c>46RsQrK^ zE~<>$7x-jY6@~r3@AIv*qxK07?=dfGzu@OTEr{AT_{6n~qV^9Sk1dJXM|kq8Wl{SH zUr$~cwXd-3#nn;!3m@ISCTgGIvS#a}_8b27;>M_bhshf@N9{jsbKkb8eTbW4JEHa@ zURAy;YF}dQ`Fo@GCnomTAGJ^M#+MF8?N@xa=5Q4DzsZb?jz#TX?Afs{Y9Hg{57$TS zXYBg($$@>1AMZFdu)p!8>&^)5bG*3IS%LkI4fDcGCq=C58G*gskSX@kH%%Fe$v z4D6@;Pt}cqeU;Oe+#J|n`S#jd1N$r+Z@n$B-?GQ9I|BPI&)9ocVE<+Ny>|!pVP3nt zabQ2@1KaKkVE^N?*T)6+XC7Ua5ZI@A{+y)1e$8+GObP7U-1KE6uz&N@H-o@F&iY51 z1@?2Uo7f_-ud{d0R)PJU{Sw*)_IYl*yj@_w=f4iN5A6H=eO|}F{?8MibPntTt$v_u zU_a=cy}JkYg?0jsJ1DT9 zH1XXbfqkWK3?3HPU;6abBLe$O|Fv*rV87`#PmK=jJN>a~dSL(Qy1ioq`%vGUK0dG? zbzPTY9{B&U7?8I)*2KLV`D}OGqk9L0Kg}{E= zzF++}fc;NQzy77b{@OF2c{#Ap_TD3}1oqo*9{O4U`=5Ac`Rf7ff8wz_-VE%+?fvvy zf&IAA?b8DLa=&i-PGEoT*VEq(?9+`LogTpcC-v&`USQwuk$2w@?B8v)_k#fTKWSa? zQD8ss?N5Fj*w)2C)B0ZLglezppfD zaIdce`+-k+`kTPM;KqM{8`vMbb^mvPeZqI&{6hfypIqPl$H2bf{;{6|`-hu;_;X+% z@r>$U0{e+S-}7r=UvZO5eh=&~Zhh|`fqlm7I{z8iZ+uSrUjgiY@~`**9oT<--_G6F!YHeU&_QR9b1@>p(e&_nYKJ9)R*9Z1%Up#F?VBdDn9vcJuw;Pi3%h`?z+p{LS%u0{h9&-M1&Oul&@Uy@CDZ4-=90}}eziaf70QNtc{MV5H_CGr3ilc%3?%O9E4PgJHFZ_8lfc=mD zb>XqVKKR^0#{&D|fBg7Z@K0a--eZCN@$(Xo2lmN-Qg}SDU;ez`j|cY6A3T0Muzx;1 zsV=aOene(nU_bq)PwE2u>i4a#3+%6d?BWxFefIA)KM~k(-+uCmz`pyOH%rs?0@j!-Sq+Nf6%XUeE|C({4};cfc+2NeYie={SPjFvp#_R z56+!YAHeVc{@5BB#^?wih-_(B|?0-}L`LO>@{rAECH}&5S``^?* z5A1(a|9r6jP5tx2{x|i{5BuNLzYpwxQ~!Rj|4se-!u~h)?+^Rm)Sn0Je^Y-xu>Vc{ zdBOfS_2&os-^`yU?0++VzOetz{CUIvH}mHY``^sp2kd_{e?PGQ&HR1A{x|dY2m9ab zetw^@|IPgU!u~h&_YM2s%-=uke=|Q1u>Z~ce8B!U^Ya4x-^|Ys?0+*qPq6>Z{CvUw zH}mrb``^sZAMAf~Kaa5g&Ha4B{x|pY3j5#O&oAtMb3f0p|IPh;!~Qq-^A7vp+|NJk ze{;VNu>Z~de!%`W_xl3--`wvH?0<8=Pq6>Z{eHpzH~0Gn``_H}AMAf~zmKs0&HaAD z{x|pg3j5#O?=S3sbHC59|1JD}!~VDM`wsix!tX!qe+!=nu>UQ5KEVFB@Oc6I-@@ky z?0*ZNC$Rr5e7?Z`xA1ub``^On5A1&npGUC&Eqp$~{UQ6KEnRD^mz&U-_qwN?0-w2r?CGmeZIo}xAb`n``^;% zFYJFypU1HOEqy-2{UQ6 zKfwOC^nC&Q-_rL7?0-w&C$Rsme80f{xAJ`h``^m<5A1&{-$$_jt$aVh{Y-mKf?aE@_h;W-^%wV?0+lYr?CI6 ze80l}xAJ`p``^mY++AHe>%_PhZ5-`ev7?0;*|6R`iSJzv27xAwdN``_C02kd`q&m*w^ ztv#Q>{Wm5AHn{&@w^24 z-^TM3?0*~2Q?UPSJYT{7xAD9M``^a%7wmr<&ttIvZ9JdB{Wm5AHx2(@w^E8-`4XZ?0;L&ld%77Jzv89xAnXU z``^~{C+vS)&!e#aZ9SjD{Wm6AH)8)^}G!G-`4Xp?0;L&)3E<-JzvBAxAnXY``^yQ+JJ0j5|Lr{A!~VDPybt@|&htO)e>?93u>bA6AHe>%^S%K4-_H93?0-A& z6R`j7ykEfnxAVRM``^y{2kd`4?<27P?Yy7B{bA7AHn{&_r3)C-`@KZ?0jd`@8EqD_P>MoQ`r9w-dAD&J9vME z{qNv?7WTh`_gmQi4&HZR|2ug9h5hf~eHiw?gZE?D{|?@lVgEaLe}?_<;C&kQzoYkS z*#C~+w_*P~djE#~@92FT_P?X|bJ+im-q&IOJ9>YI{qN{~9`?VZ_j}m?j^6iS|2umB zhyCy9JOK8;qw@jS|BlWJVE;QhKY;!3=sW@TzoYX7*#C~s8({xCI)8xu@8~=N_P?X^ z3E2Nm&MRR5J2}6A{qN*F1NOg@^9|VlPR=`E|2sMVfc@{}JOuW?lk*YS|4zTVVe?Ie&ru@8moN_P>+!8QA|$&TC-*J2}6B{qN*F2ll^{ z^Bvg#PR@H^|2sSXf&K67JP7u`v-2U?|IW^fVE;QiKZ5=5>^uqfzq9it*#FMXn_&Mt zJAZ=x@9aDZ_P?|9DcJwc&Z}VmJ3GIE{qO8N3--UW^DWr_&d$4F|2sSXg8lF8JPh`~ zv-2_7|IW_KVE;QiKZE`6;yexZzl-xV*#9oh+hG5@IDdov@8UcT_P>ksIoSU$&g)?R zyEwmt{qN#D5B9%{^F7%AF3$U4|GPNg#GV&5A#si|E|tQVgI{2FNOW@>iiV;zpL|9*#EB1S7HCVI&X#j@9O*&_P?w1 zSlIur&Szo&yE?Ch{qO4h7WTiZ^IX{fuFiL1|GPQwh5hg5{1^7WoAY4U|8CBQVgI{1 zFNXc^=KL7;znk-9*#Bnfc@|8egO8ryZZvz|L*P&VE?Yw3fTW1?k`~fd$`Yl{qNy^1NOg%`wrOu9_~M2|9iL(f&K5{egyWvhx-!P{~qp7 zVE=o#Pl5gK;eG}7zlZx4*#92xUts@xxQ~JT@8Nz1_P>Yw8rc6H?r&iKd$`Ym{qNy^ z2ll_G`ySZ;p6-8O|9iR*g8lF5ehBuzr~4w<|DNuTVE=o%PlEmL>3#|Jzo+{q*#DmH zpJ4xcx{reW@9BOD_P?k5D%k&??yq3~d%Dkp{qO013--UK`!3l3p6|=I@teS z?(bm#d%4ep{qN;|5B9&8`##wJUhe;3|9iO)g#GX3eh~J*m-|B4|6cA7fBvzum-|H6 z|6cAFVgGx%Z-o8t<^B=&znA++*#F+{Ct?44yRU@(@9q8)_P@9LOxXY4?l)ood%N$1 z{qODm6ZXHi`%u{b-tI?X|9iVHh5hgC{uK7VxBFDs|K9FbVgGx(Z-xEu?fw<^zqk8X z*#F+{XJP+)yRU`)@9q8;_P@9LT-g8K?ssATd%N$2{qN)c7xur;{p^Eb|NFQfhW+p3 zz8LnukNacT|32=MVgLKMUxxkfw&YuNuj z?z3V4`?%kR{qN(x8}`4C`)}C)KJLR||NFQfhyCy4z8v1VgLKOUx)qg z>%JZKzpwju*#Exn<6-~%x}S&r@9VxE_P?+Dd)WWJ?(<>)`?}wU{qO6(ANIem`+wN~ zzUBd7|NEK`fc@`lUI6yLulWJk|Gwr4VE_A?FM$2;Yu*6%zpwcN*#Exf5n%uOnoofJ z?`vKG_P?L`1=#<7<{4oB`uYmpUXWjz#zn}RF*#Ca!F<}4una_az?`K{E_P?L`4cPyF<~d;h`9>`Kh69N?0=eh9N7Of^Et5pY36lc|I^Ix z!2YM1=YjoCGv5RIpJv_%_CL-15A1)Mc_7&TH1k2Q|7qrhVE@z155fMYnJ0q%PcvTx z`=4gs2=+hC{1NPbnt3GH|1|SSu>Wc1m0S+hQ{^7+HNboo?Ee7sRZ z7VQ53^IEX~1I%y1{tqzE1^Yk1d>8Eh0P|k3{{zf_!Tt|04+i@`zS+h zkHP*AFi!^iKhS&`?EgUXX0ZPQ&7Z;k4>XSk`#;cp8tnf-^J=jF1I@3&{tqiclK=W>}{{zjx!Tt|44+r}{(0m;1|3LF{u>S+i&%yo=G*1WnKhS&~?EgUXcCh~g z&ELWP4>XSl`#;cp9_;@>^LnuV1I_Qj{tq(G2m3$Bd>`!pAoG5(|AWl`!Tt|24+#4| z$b2B|{~+^%u>XV155oQrGEWHmKgfI`?EfJ1hOqyG%pb!34>FGk`#;EhBJBSl^NO(l zgUm0&{tq(G2>UXV2Ps08WHctur zKiGUF?Ehf%mazYW&0oU)4>pep`#;!xChY%U^O~^#gUxTk{tq_K3Hv|Td?)PxVDp}^ z|AWnc!u}674+{G~*nBAL|6uc?u>XV2kHY>BHctxsKiGUJ?Ehf%rm+8m&7Z>l4>peq z`#;!xD(wFd^Qy4_L(H$j{tq$F3j06Ad@Jn#5c96E|3l2b!u}624-5N0#C$C5{}A)C zu>V8M&%*u>F;5HoKg4`3?Eet+wy^(0%-_QP4>6Am`#;2dF6{ph^SZGAL(K2O{tq$F z3;RFBd@t<(5c9sU|3l3G!u}624-ET1#C$O9|4{S7u>V8N55xWsHBSutKh%6N?Eg^n z#<2fG%^$=54>gYr`#;otGVK3Q^UARQL(MP4{tq?J4EsOSd^7C-Q1i~P|3l3`!~PF7 z4-NZ2)OV8NPs9EXHBSxuKh%6R?Eg^n*0BFW&0oX*4>gYs`#;otHthc} z^V+cg!_05P{tq+H4f{XLd^ha>F!SE9|HI6G!~PF54-Wf3%zQZP|1k67u>Zr%kHh{C zGfxitKg@hN?Ef(H=CJ?6%%8*l4>OMr`#;QlI_&>2^Xjnw!_2S4{tq+H4*NgMd^_y_ zF!S!P|HI6`!~PF54-fl4%zQlT|8Vp2u>Zr&&%^!?H%|}yKiqsh?Ei4{_OSoM&ELcR z4>ykw`#;=#KJ5Q+^ZKy=!_Du*{tq|L5Bopdd_U~}aP$7K|HIAy!~PGK2Y~$_E*}8< zKU`h__J6qi0PO#8c>>t~;qnEr|HI`CVE>29AHe<(mq&p8A1T|E9bo@Q{KG$V2}a06!2XYrkAVFjAuj>@KSF*2_J4#t1?>L_`3l(o z5%LzW|0CotVE;$RW5E88kk5eqA0e*+`#(Z{1NMJ}JO}Lm2>A}!{}J*Yu>T|EKVbhy z$b-QCkB|?6{U0GO0{cHwegyV^q&x}i|48`~*#D98Cb0h_`M_J5>2 z4eb9&`5M^&k@7aM|0CsZVE;$TYgve_;Pd$pgXukCG39{U0SS1p7ZqehBt|lspma|0ww)*#A-TMzH^* z{*RJRg8d&QuLS!)N`49Uf0R5E?EfhFCfNT`@=mb-qvW4p|3}F~!TyhukAnRlB`*d0 zKT3WI_J5Q-73}{g`6}4|(ehTX|D)xvVE;$UW5NE9md}FyA1$v1`#)NK3-*7sJQwW$ zX!$PK|IzYZu>YgwzhM7I%Y(uGkCqRE{U0qa2Kzr+ehl`1v^*K?|7iI#*#FV;X0ZRG z<ZuLk=+T7C`of3!Rs?Eh%_wq|Shjh1(V{U0s=2Kzro9uD?@ zjC>sI{}_2W*#9x|bFlwo>g{*RHjgZ&>Pe+TA0vMV`#(k=5%zzKd?M_By1XLnf4cl4?0>pEBkX^=d?W0Cy1XOof4cl5 z?0>pEBd?f6Dy1XRpf4cl6?0>pECG3B?d?oCEy1XUqf4cl7?0>pEChUK@d?xIF zy1XXrf4cl8?0>pEC+vT^d?)OGy1Xasf4cl9?0>pEDC~c_d?@UHy1Zz|SNEmMkHY?^ z%ag+Xk39*#6!w3tyeaJeSou@f|FQC@u>WJ_Q(^zd%B#ZukCk7A{U0mO3j04+z7_U= zth_7i|5*7~*#EKeu(1DQa%alVShI$t%PDkCR`9{U0aK z4EsM$z8Us^oV+va|2X+)*#B|z(6ImG{*RNNhW#HWPYwG&PQDuUf1JEE z?Eg6VYuNvB^4PHd_ygBUuc=>bK|MBwZu>a%b(_#O|%d5lw zkC$JE{U0yS4*Ne|z8&^|yu3T?|9JU#*#GhJ@UZ{m<>O)h$IHvZ{*RZRhy5QfPY?S) zUcUbRy4~aD?P34N%iqKPPmsrl{huJ85BonsULW>Tv|DT`_fd6cQegOWv6Z8e}zn!2zfPdBmeFFTmC+HX8-!(zs0RQd@`Um*4OyJLS zCx5mH`U&{6PS97tpM8S<0{$)&^cnDXo1ou-zv~2j2mIY9=s)0RF+m>!Kbr~q5%^h6 z(3il^Zi4;sd^;z)Qo~Yk~&-z4t7ku_7 z>c8N-Fi{@{-;Ig-G5D@b)R)0`XOjL5zDtwzY4F{eq+f&Y+9Z7&eD@~l-{8AANgoH_ z%}M$>_^wXU*THvplKu|9%ainZ@ZFxI--GY^Bz+%z_b2K9;8`$99|+HeN%}!}R!q_t z!n0$N{t%uelk|!3Y?-8AglEkpo;kPk?3tv0glEwteIz`aCg~^PSv5&t3D2%c`b&70 zP10w=vuzU3xZ8QwP11M5vu~3A6P|^W^r7%rdfXI$56z&(_KM zRe07;*0;j5ce4H!p2d^(vG8o3te=Hv^<;f5Ji90J48M(M`DA@AJliMhci~w-S>FrK z{>l1Zco$682gAEzvVIue6_fSF@a~wbKZbY7WPLKcTPEw5;axLX-wf}b$@*t_7fsej z!@Fs+ej46Yll9f`?wYK>hIiRyeKx$?ChNE1T{l_Z4e!3m`fqp_X7EnDjdx>)ejMJF z8TxW~cV_6%;a!@+JM}i+tr_}tc-Lm=+u_}tp?`;WafUt~-pv`jqZ{$A&d}GxyE{XF z5AX5}eLlR~GxYoLuFuf-!@EC2{|{$@41GYH4KnltaaPFC7sS~iLw^uwi41*0oGmi+ z3vt%S&^N@{BSZfXXORqjM4U}B^b>Jb$8&eC(eRX^g(epoWdFLR?do3 z^hI%YoT5L9v*Z+gQk*TP=$GQGIYr+TXU{46r#OpF(MQGEbc%i|&Z<-NRdIHm!Ws4! z&azYVS#h?VqThusXvRebf!Kn&eoaw zwK!{M>f7S%ovD9|vv{UHF3#qe`nfo(XX@+X?4GH=i?e*DJ}=Jpnfkpr>u2iw;_RQP z|BJgoramz42ATT7xGQAp3*+vPsXvUnM5aD5?iQK)#kgx^a_6|2yGN$}G43Ln`pCGO zWa=m5u9B&*jJr#w{xa?|nflDQ+hpoDOkj?ow0rsd2ZOs$Y$})>M6K+`XpiU*j$|RUaF7v#I*oxT{Uo*T&s#s{S_aa#QuW zakrbQ-;KN8RDEyU{if=F<1RQ=9~^hXsruo#D^ArH_tHI+r*en9iM!-feRA9_r*g-< ziM!@heRJGBr|O^ME;>~o9e2~I`suic8VIJXIeacjKwtk#FLzJXK#Fcju}4^SDb-)u+eZdMbD98@X#w)wjppdn$ME8@Y>T z>Eq*Wo~56UyLy(sKJM;W`un)cXK|;$k-L4Cen0N|S^ECC`)BF@V-}FbOyEXl16le3 znH6N|3uJbXr9Y5aLY6*3W(!&R1(`Ku=^JGBkfnc+SwxmTLS_?L`U#m;Wa%qpc9EsO zkXc5SK0{_3S^5o`b!6!~WcHDz|BzWomOeygBU$04y>lBIuUc9W&Qky%cbK1XId+01xuVAhkZ?~&P0 zw*E(ELD~8snGI#@hh$cituK<yu=*l&xQqSyQ&YNoG&k`X`x1W$UA4 zHkGZPl37)@zDj0S+4?J)Wo7HLWVV&9-;!BZw!TYdU)lOEnT2KR!(=v=tsiqypXajm zWimU<)}P5NEnA-^v$bsfn#|g=^=&eH%htciEG}CgC$qV1{hZ9|vh{T`yUW(!$t*8h zpC_}uZ2g|h`m*(XGW*Nc|H&*cTOTO1!EF7Y%nGyhg)%$L)*s3&F-M;$v&9_!qRbj| z^o=rm%+Wu}EHXzQDYMBO{iMt)bM%!myUfvF$}BTSpDDA=9Q~%uI&<`$GW*QYf66R0 zM;|J)(H#A#%t~{ZnO@KAG)I3bv(y}BsS#gfOSZ2pL z`eT_T=jfAVww$A1mRWO-zFB6^Ir?XrMd#?FWj39opO#s5j=oxE*E#xYnPunbvt_oO ztKXJccdou$X5YE`Z<&SX>ceF=o~s|1S$VF$TxRFF`g573=jzjCww|kBmsxwRzFlVT zxy<0NV-}yQkC)keu6|x-^||_bnce5=?`4*stIwC&ey)CBX8pPPewqE}>i=aIkgE@v z-9WB>V0Hz$`hwXV=>iW*3pGkC@#=u6|;66}kF~ z*OW=|lB*Ay-AJx}WOgOF`jXk53?Pyl&24x-B6x>Xm&+;`l8t#<>`-Rmz1YZn%z>Kera}1dHSZ=J>}`2W*3#G zkDA?79y_XQ*j44}t7dnVr@xwAR-QgAPn4mB$Y38g^lM`mouJ<>|*} zSC*$Qo84KS{%m$>dHS^3t>x+0X4jUdZ=2m)p8joiae4Z<+0EtY=Vn)zr>~pcU7r4K zc6oXFyxHyL>Gx*Wm#6QW-Cv&mZ+3xs`oP%@=CLEZnq6U@zHoMjdHTcICFbc9XSbNA zUz}ZIzP@pGkNNt?*+u5-BWE|6ub-SoaG!nXliRU1z?&b9SHk z`p?;g=IcXeH=3^>on2|ZzI1k{`TEn@rRM8XXSbTKU!7fRzP@#Kulf4d*~RATV`n#; zub-V=ZN9#CcDMQZ+u7yjv(vqb-EO{qcXqw``rg_7=IeiF7o4vTp51W1et34p`TFA7 z9p~$hXP2C>PoCX!zJ7Uj&H4J~**)j$pJx}HuaBPHbiRIicGda%>e*fA>#t{*ov+WH z-FCiydv@LV`tI3%=j*>`7oN{f{7QD?`TFtMmFMfrXLp{jKc8KCzCL|+>-qZi*|q2E z+h_NluYaFie7-(@cJl@L`PtPM=<8>9U!cFAU4DT+e|Gx?`u*AU7wG$E_g|p@pDaLu zeE?(w3hW0UD^Orx0NH^8`vb@l6xb&~wxEEF!4+f;3hWyodr)Bi09k|r`v}M;6xdHd zR-wSY0_~zA5oAdU?2{l{QeeLX zS(5_$Cdi%?*gruQrNBN4vMB}jQ;=0Du&;vbN`d_qWLXOAvmo12V7~=fmje4P$i5WV ze?bZF@^SHkd-O4FN5q%AsL#>$kG(rr$M%+(0&cFHih4~cAKk^M+yC5!A!B0E`Re-c^BBKwrcRuMAov%z9q7kMfNX| z#VoRqiEL(({Y+#vi|lJ6yIEv^6Isq8`<%#j7TNDa*0adIC$gVK_CJvYEwT@aY-o}F zP-I1m?295hT4a9|S<)i=q{x;Q*)K)bw8*|GvZqC4P%k8lT4Wy;+0-I3suz+~EwZnQ z>}rwyRb*LW093DvM-D5Y?1w0WNC}+ z)B3UQK#~1gWNnM=+ah~gWd9af+#>t9$mYiE=OU{cv#*QnZp{8Jvb-_-yvX*($oO7B z);DI~7unyK{a<8(WA=fO4UX9lMpigxUl`fpnEhd7iDUMOku8qdFGkilM&|eevd1y| z$H*eb>?0$a9J8N{ta8l0GP27t`^(5O$LupB+Z?msjI49azB97VG5gQRLdWbwBO4vF zAC0VZ%)T_T(=q$g$Wq7bQzKg)vtNy@b|-OF9kZW}tai-4HnQ6> z``gHJ$Lw<>+a0stjjVUfzBjVpG5g=hg2(KGBO4yGAC9be%)U6X<1zc=$dbnf(kDl@ zJZ8TfS@W2Eb7aqBWYGUb7CmMk9oh7l{d8p2WA@dNU60vcN0vQipB>runEiHS-DCFM zk$sQZe@7NRW*;8e_?Z28WaVS_<&m9_*`G(2K4zaD+4`9MdSvZm_U)0qkJ-OR7C&Ym zAKCnv{d{EgWA^ot-H+MdN0vWkpC8%&7#aWb$oj|Z`y=}wv;PkkAZ8yRY(UI@Kv;p8 zeSxq8G5Z5y31apM!WP8r7lbv4**6G#5VL;}79j?ca2{+z%zi>xg_wPXunRH!3t<^z z_8G!9#9$oGg>{J8cL@6sv;PnlB4!^VY(&g{L|BQKeTlFWG5Zr?DPs01!dAp!EY5|s zh}pLYdl9pL5f&q6A0uo=Xg?#YMrdCn>_%vRBP>T~pCfEXXul(@M`+(8>_=$-BP>X0 zA0%u@Xg?&ZNN8Uq>_}*TBrHh?Q*sV$NeE+d4y;KCb8-&sNofBhEJ|n}C2UG)KP9Y6 z2(xky>`G{VB`iy5pCxQdXul<_OK9IE>`Q3>B`i#6A0})}Xg?;bOlV&w>`Z8XCM->8 zpC)WgXul?`O$c*yHtbDk|0XO>2$OR*Y))uDC#+6rUnlHNXn!XxPiUVfY)@#vC#+9s z-zV%(X#XcHP-q`0Y*1)FD6CLuUnuNQXn!ayQD~niY*A>xD6CNkb96TBQE2}tEK+D6 zDQr?`KPjwIXkRJpQfPlEEK_KoDQr_{zbUL!Xx}O9QwRff7A#a~A1Z8AXg?~fR0uP5 z7VK1Le=00hXrC%*TyRdkneY~)Fq5ZtDdZB&2 zuzR8Xy|8?teZH`LA&lP{uzsO^zp#Iy{lBn){QHv5fDH`o2Zj|4VFu5D9SrRch9wN` z6NW7e?H7hM4DB0+Jq+z1hD8kRBZf^3?I(s+3}F^ehg}TqFNS3d?K6gL4DC0Dbqwu0 zhJ6g}KZb=2?L&r*4DCmTl??4mhMf%UPllxo?Nf%W4DDBjwG8cBhP@2!UxvjD?PG?` z4DDxz)eP-xhTRP9Z-(Uz?Q@3h3}HM^gY^vUdxrfC?SF;^4Pio0gAEPshlUjm?TdyT z4egJHB@OM9hAj>4mxeVB?VE-@4eg(XMGftvhD{Car-oGx?W;chlvN=N>uIp8p?%h{ zts#u-X|S%Leb=zBq5apeu%Ug}u(6^2*s!u8%8`{qes~g(a4Z9oK-wn$f+UE`18^ZXW3hNu%_YM0S+W!p;9NGsC z8ywmX4l5kO44(o!9NHfaOB~uK4qF`BFAi%Q+BXh+9NIq)iyYcV4x1d>PY$ab+E)&{ z9NJ$F%N*Kg4%-~sZw~7m{?m89VSi}~v^~;80|N5tgL;KiavqSsYVYNg1+F`dt``cl;LzwQ9VY@>Z?~`G@L;K!g zzeD@qVZlTD;9tWeL`|M%cL;LMv-9!8CVc$a-_>*AaLzwuJVB^`jdVdTOY#Ip9EVU!q}e#Yahbgp9Fg!!r-3-iyy+|p9Gs9!swp_s~^Jbp9H%f z!tkF2%OAq@p9I?mS1WpHyF8AHx6t^MB(6sP{j|5m4`cA7?J+&9}b5T{yuR!obdOH@biUZ;soq}h;!nEpFbQFC;U9(q^R@riKC*<&nwP~IzPWS zEb9C`N1fkCoE&w2KXG)_`F+LNQRnv;hew^?XPh2&e!p>i9QXT<^W(VR ze;gpkeIDQhIqvfTN62xX7dS(X`~1Kma@^-hN{_dW`+UJMa@^+)&XMCje{hf-_j!bq z2l2HJC2uQKJRh99P{~)1Lm0T1Dr6&d_UlbIp+HUXUs9*A2?)=`98rZbIkY4 zQ;*jl^?ieL=BV!<95hFLAK|1q>iY>t%~9W1IBSmj{=#8%)b|-qo1?zpaNHdAeTVbr zsP8`0=X`w>UZQQw!(|2E*L?@t^$M}42-)H&+=^~%NxM}6Po+&Sv|7YEN# z-^Vz4j{1Ja(L=E8hY)Aa5#Qf9e2(}&$LVv#_dAZCBfjr({v7fBj|1q4=K-8RM?4?k z2s+|<0cX$=&ks0+j(DEHDRjj11&*O3o;Pp~9r65ugXoCo5u8LvJfGkwI^uZ+XVDSQ zFF1^jc%H#&bj0%wj-w-9FS^oJfZ~AK^$k?0E@i(qYd}jqmvLu;(e9 zN{2mP;aEECc?;*#Vb5PUm=1d$!^w2m^BIn&!=Bf0HXZi-hQsNw=Q*5ChdtlncslHP z59iZi&wn_e4tpNN33b@>A&#iSo)>XO9rpZ)L+X&{Nt{xLJYV9NI^=m1=hPw3pE#%v zc^<_{b;$E6j;ceRS8-My^8AX!>X7GIoK}ZC-{QDB$4v$n!Cd ztV5ocab_Lz{ES2EkmqTfT8BJeGGq=Xso72R+~8_&Vr$ALrLW&;K~U4tgKJ33kx?0gkYP-WPC&9rXTyL+qgU37ldF zyzxO^pA`Js;Gp*voMi{Szu+)C=zRvK*#Yl2IL;1u z-@$oy!21slv;*FUaH1XXeuN|KfcGVwX$QPN;ZQr^eF~@A0q<8h)(&{z!nt<9`xg$j z1OME|J{@_$`x%b51K!tgwjJ>PhQsZE_c@$y2fW|mcst;I59iwf?|(Sp4tO8L33tHz zA&$8H-WPGk?f3qOLvFwKNt|-~y+u z_x_5*Zol_goOb)Y-{QF2?|m2N-G1-CIPms+AI6Ed-}^C+y#3ynapvv!{)|I!zxQdJ zdi%X!B)C_j#Ot`@G-d_}k}w zALrjb@BcUe_c;&13AoSs0FJRj=iol)4>$<- zIgh|exX<}SQQ=wpoLAs1-0S>eZ|$zV&NFZt?sdL_<8ZI@4xER3oqym!-0M69C*oe` zBRCTGIxoSQxYzj!4#mCBQ*bKob-sdQaj)|hoQr#%zu;ip>pTW0<6h@8I2!jluff^4 z*ZB<&$Gy&Ta60aFzJud&uk#+9k9(c};DFrYJP0S`9_K?iBKJ5i!Wp^8`4JAuJj?Yt0Y=x*nSI7D|lPsAy@+xa4n(cR7)agOeG{)mHgxARDxq`RF@;watayb@>W zF6WmxOm{iY#A&+A`6iCjUCujkp6+t~i34?)^H7|qyPS{WNZsYU6ldx#=chPScR5eR zsk+PgDvs4%&RcP=?sEQ$gLRklSe&f8oX_HD-Q~O%XX`HKw>VsPInTxEy36@4j@Mnz zdvU(*bpDG2cBk`ToUl8c595g4>AV`v#$IAnJ^PsS;`)A=%v*`3atan9~^{)~fm zr}Jo>v^$+o5`*Hs6aQ=@2c!&D{oWMKW58w#i;l2Q8@DBF}ID~h&Prxa> z!~Ft|;T`T9a1QTq|A2#dhx-Ve#M|9Z;3(eiz5-|QcJ~)JjJLbbz-heQ{RWQX?e05p z9&dO5fdhHF`;bNZ-`?(i1V{3A_a!)!x4S>Vp}gIF3Qpzi?pJUuZ+G822V6N$_g43P zIKQ{L|HA>k)qNmN@U89#afEMmUx+h&tNTM7;#=J(;uPQNei6s`R`-oK$G5tF#6iB* zeI!out?nmrly7lgiL-o*`%4_=Tij>jG~eQW6UX@$_nkP;x48erfxg9kC{FY(?niN? zZ*gCWGkuHuQyl7B+^6DH-{O81$NCoctvJ`WxPQgLzQuhkPWCPCXK}P|abJtGeT(~B z9PV4(=i+qV;(iy$`xf`TIN!Ip|HT2n*?llh_|5Kzal~(SUyL(;v-@Kl@|)c!ozj5Gib{~!tf3y2>9Qm8wm*dRe?EV~w{$}^-IQ2KXU&pb($$dM{{Y~!Qaqw?) zAAd*Qf=%w{arAF;UyrkYllyxd{+rzAp>AHkl8g zBVdzx0XhRVnIE7-V3ThdIuACQf1m?lqj?BA5jL8Spd(?Uc?mibHkzNHLt&$N z3OW@wny;W^VWW8qIu|yYzo3I*qj?NE88({Fprc`E8_cWFS+T+V3LO?3%(KvGvB7)`9TywSyU=;D!Tbvy7#qyP z(223Zd<-2K8_dgGeK3B5`58JiHkhZOQ)7eq8ag&Mn75&GV}tn{Iylyw$DxyBz4;tE zI@X)lp|fMX`5ihu)|=;{(__8)9y&hOoA;sfW4-wwIzZN&2ci>Xz4;(ILe`rXqBCT@ z`5`())|)4yQ)IpQB05Ian>RZ1|9Y%9e?$k#dhhnX=CO6dfw-%u~^+vd(-J z9V_e1ThY0)&ioY}EbGi;(aEyTd=?!o>&$D>*|N_379B3@%yZG{vd(-L9WU$5d(ru_ z&iof0Fzd{N(FwE8d>9=u>&%PM8MDs(7#%X}%#+b6v(9{(fkX3Vbk3|be?|w*TJvah z(yTR~Mn}zB^J;X~tTn$zhs|2^Y;@YJHQz?Z&06zrbl$8r|3(MSTJvyp;;c0vM@PZ7;g74=nE#^#XpMP5I)T=h52Pb#jd?*jgVvZIq(f+pc|tmc z)|fA(V`z>I@=1J+4sx@Cq$5gF(Q#z+=&7aaiRcjuVPO4h-sdQA;npdT> zYPI=QI;>WkXQk6>wfR;$u2!3OrSodF`ByryR-1>V6Kl2kSUR#+o0p|CYqj}VIE9n-``tY?b+8I>c6)C#F+umHFb8X-ig_H>PuJ zmHA^j$X1z0rju-y`D8lER+(3(vuu_5Wjf4OnP;ZcY?b+DI?h&^cc$}fmHB5n&{mm; zrW0+I`Di-QR+*QkGi{amX*$$anWv^xZI$_II@VU1x2AJ#mHBHr*jAaxrju=z`D{Ac zR+-nPvu&mMZ93dmn&+m|ZKe5cI^I^A_g(;2tY z{5TzQE6tPBDYw#mIURE=&70FXx6=GM9ds+rqti*Z(tJ7{bt}!Q(^asknun(oZ>9NoI`USUm!~sth530p^j4Usr&Di*`Fc9` zR+zV^b8m(Ddph`5n8&A+Z-x1MI{H?a*Qc{@h53Ct{8pIfr_*nR`F=Y7R+#sv^KXUu ze>wnH$OF&`xI#XFj=&Z20(1thkRPB!aD_Ypoq{Xm3+NbJA#XtE;0pNzItW+DBhX2> zLOy|x!WHrgbQUg`U!cQqxjX}%hRfv}=r~+1??C6_a`^{35SPnC(22NQK7x+K};1%Y)Dfxm-Skj>zTmB6LPBmmi@+a+y2{os!GsOX!$f zCT~LLOE|cG(!*iKD&!9mkmdf|g@wrsqhtAKX@;`KdE|mwO6LhJ35FMdQ<%Q@B zT`E6Bhv-syB05Ev$`{cwx>Vli_orT4Dt|-==~8(lI!TwxC(%*5R9=bB(xviCbeJxc zXWG?k;8OV}I!>3$JJET%RQ`z$)TQ!JbfPYmkD?=Wsk{`OsY~Uj=ullMPerHdQu!)6 zR+q|K(Yd-r{)!IPCGuEwvM!O&df}DjOXRiaY+WM1MThGWc`iC#m&kX~@w!Cbi_X_2 z@?UhoE|CYL6LyJw7#*=oGG zc8Po%9kokNg;%4qc8UBN9kxs4+32)gBHu>G?Gkx6I&YWAztMraL>`V#+{N;7bmT6U zm!mUxvHTnzx{KxM=+s>-Uq{F8VtG3{cNfdw(ZRb|9*<7m#qxP{^e&dyqqBFh{2m>? zi{<&~^j$39N5}7Cc|SUT7t8&FP0aiGkCH5ARWSs>xe z$v;+P&sro8Nhk6m`A9mF7s*S~nY>7Tk`CoX@|1KcFOsjMV|kIhC7sKQBN$HecBwtF$^g?-4I;R)PpZ*owxKJLIPU?m7sdQ8?lvky*dZGL( z9o7rwS?RQ1DBnuQ^+I`9IC|2* zUrWdKLU~&{w-?Ia(!sq@9+yt;h4Q&{bT5?Gojmuxh4Q;}crTRarPF(%d@mi}3*~+3 z{9Y*kO9%Kud0;xhYvhCJ2(OVBrZc=oewYsN8hK(m#cSk?=@_q(H>PvEM*f%%@)~($ zI>~F~lj$h0kyoa(yheVR4)Yp$W;)GlnGW$bZuTzd#9k)U-%iK<0(o~j?-$6w ze_P#Yfjs<0b6YNukH57hWr4i>p{4gOke`2G&20zd*je^uXl{{^9LUxnP0( z{h;|f=F9KjF<|X{dH$}MOXth?-}ltq`SSiXAC%3P z|G#hM@ALHmbX)V?eEk6bIr;PX`T{C%cyGS`fLmI>F<+lRvvDuX*DrA03y;s&H}K2P z_s`cqaK(n4`T7VFFPb!8Kf#s3sQLN|ew{dQzW#!S@ARCn&!GK+4)gUJ#GTb*zP^L? z(d7C14|?Y`p05w#=^2gY>qmHOM}ztL658Hz`F#BeRb$VeuTSCf&rYAOU*XnW$LHx= zsJn0fJpBu==Wm;*kD>1Gwe$2dH2T-FdHNcz>Njtm{)U41~56|s-f1W;w_||XD(+}~%v=`^;i>N*Pw7*lPoKm$U+2%$FVX4Z zDf9GAe3O|zPyfV*MMLK4qgb2Lcb~;rxozg@ulOh{I!~X)(lv4O^jj?L za@Rb47a#m_(>(nb%^P1cPanqT?_DxaKgOmj&z+|)WA}5X%+sGyarV)<`ZT6Iyl1X{ zjqN9GnX7LjKCGRqf1_Ld;<@@bq7TfOtDmFpw6eMSI-Y*w_qqBz_FVM+Tzww5yz%*5 z{T_GU^8Q@d|8eJj^X6RrAHOtvajrg)VE&VH^@F@J;-R_vLW&RP&($AN`plHM`b6Hk zW$ax2BJKYiI#=IFby~l<`bTa#(siyrlHRYjovWW@U{ce$`btt(B+S)cvgiK0=jt{U+<@TsK$W$qo6J&DDRBbj$g3^`YEebNXEUDEl9(o1-t~mAC_Q^r!rL%l0|? zR3=PYKS#gHyS-M-(YNyD`89L&ue??H9DOjaeEGl}{V+Eb<;~F-^L)pQIr?K( zUYkBgpUhc%hRo3~b4h96Ir?T!yxDb*{+Y_GwsZ8+T~DJ*1t3Bl(O0Sc)mLJ`)t_%G5H6-pRKRw zj(uOu*5C8@o)2d0^J%ts+HCzkAMSs7w!WYJho70P|L6AlM`r5-YI|llTR%|ei*jb` z3yNGjX}12L%kCIGTc6O9nnQmue)dKFREB|>uh~SYwH@!)^D`=x+`YuJ6hW8!rA(dejIhyY}o(N4?lgr<*rSyQcFY0~(m)%up^PMcS)f9d)K71jEfhMfI(wSK1O zn*Cg@uj#9TudDSp{rSTu)%u+NJ}|vnztgvIZ&d4hdNt?2)%u?%{PJYAKBy)qKU@v_ zKYC}|!fJg{ufH(0T7Oj1s`1tOq-NbQvRc1X*Mfo7`lc$YdR6P6O1QprwLYrXvRYT` zr`lB&t=3nSd`m*L{;Glp?ylBn_0_6dtMyy0h+JQ-@9M;~E2{NhU3SVv)%vh*9({JT zeylrYpIogk>$ZfWRr<58oxZn9pVm1SY^&0*wX0}dmABk9V^LL= zey-$BB~|*mj+gvarN8UPrr%fT^P2eE7ghSbu1o!}O5a!IuWwiB|C$`UTBQ%{;^OD3 z^n-ob{_!e(VeJ+?P^CX?)xi8JePWZhPN~u_R-Zer3if~GlV^{p(m!_Tn**x!k-c$G zuPXgy*Ozsw(pUDs!L6(Gm)(3cTBXnI{g)G}AU;Ok6n9URzO(-=Y*eNH?1tQiRr=80 zx#p@W{b&tlUR*_Ut8s&xwG`Q_5ZqJmOi(g6aSv2-|heI`el~Bx9fL)GfV&5A76bo zOCQ|utoLW>hdVcQ+AMu>Kb`iA$Poku*ym-m>}k&Vv0PvHzz#X6ehj?0+}S(x2DjnQLe1)5|NkY!>YQ@Sn$CFiYRw z=>yK11^Yidt;@-?^zr@L@@S=gzDBA0D)sff6Suumf8ULbH&p8L`{qBZD)swy`Oo4? zeSe4Vo?EH^?~D5?D)j+oB>i2fAFx@oUn=zlHt6terT)P4`g~rgPw~JYT7g@ZlLxRO%(K5|lar9Q*s*G;O_Z}?C! zrc&SG)x(BX>OU-gq<^J8#MtLOD)l3FSk$pnU*c^ix31Kmc;$bBN_~pg4os}nuXyh> zjVtvnru}t$rT)cN58ha*k8#so*H-Fh>@fPWN_~wpr(aO1zp+d0S(W-6cQrVrQorN- zLyuMHdz}3K{tEq%UAOJ1&587=(GGg?v)Dt zmRnwZu0r4CZ6_YD(0}>h$cHNQVIG)WSfL;Dq2%leeVMm^G^s*==Jw0eEA(krJU*;K zzvf?cX%+f5YchLP=-)hbd*=#$oSjCstD)`Z^Parc~(fT(qW1g+9+0M*OEj zzvs9uw^r!;95%UOh5pa%BUe@E1O4dXODpt)9=hoK3VorY-aWHIf9T$OPp;4>I<53* zxqi_x1NN8e8|}V-N4fsdv}ZPz>mz;m_BG}DNvq43mFp{wPp>K0U;5{{v&;3Fj{B;t zT)%02pTElWo!)rTFXj4A@BQ@Ka($@7`hHQaANAWaKPuOk+UTcu%k`)JG5(Em*#9B9 zH@sA?U$y75XUg@h_I&ZNa{a40T^}sh$NJm(h2^mSgB#7sD%aQg!}F8M^|y}gon8+6 zKe+j|!^`!%MmG*9*Y`SPM(=X{uOG&`mg|GPv~&A%{jeW2Xj!f=cJRJPx&GK_MMAkg z*%t3MF4r$Rx!{g+eX}$B++41IHWJ^UTp#V~%dRZfPy6wai_7)ZzOm}Oa{aa6m7Gzo z&-Tz4Czb2B9rpUsGJUrPAKhQ3|Mr`lon`uPUr*m$rXTl{fose3<*w_oqD+5on~sah z^yw~YJ-1B1?z1f_%k=F|Xt*_Wzj*Y;GX1~TzWz*^KH#6ec&to6@Pj1}mgx)5TUA)5KlrU9 z*=72KcVCuKre8QCeq5Qp;p_X3EYm-HqF`{DKH_tx_bby++`6(ynZDu~`#Y8CFYef| zZJ9pf%epo%({Fsy1F2>Dj#IylFVlbg%9eY|^daBa@QyP5$hG}%F4LDh`{f2@`jdCm zTv?`1Ir{HQ%k(S%+2{N+eal&Io>iuQdBD0;%Jea3-C0+vpZTwxL#6tfo0jY;)!)4L z((R@CoEMMUSgPN7_s_MZ`ko^fEicvo{CoPsQhm@+ee|)wkX8k6xwvw|8{xTB?t`Y(@K0{oKnZwkp-vecP!` zOZ9ipcrCf~V|?D3_r{g#_nuUJcd5Sb560eJs{i|nb8arx2VVSXgHqW4w9mR+RjMz1 z&Vfry^@smw+6ATh#4FmKQ>tJ5odc(p>Kp&&z4{XUv|N9qida6Xfd*jMSOZ2_p^5ugi`rik>TvVbDeo>fPq96Xb zahWCh;-Bg_u|$7-WxMneee&&7N0jK7|5xL|CHm$sZq&a-|9t<3y-HyJ`)##x4HS&2UTZyTnT=(m5qQ9_Bn`)?ZGTcZE|ipX6hu>bvLwr^CT zA0HEZiN5@e-&H6@Va9C|HB%sF18O~QvYSe z_5;j(W?`{?0YggW7TX`t>cp&K`vj&Wl@-JO_uZWRcd>l~AAJ8?vHb&|AO5k}K7zW` zZ;S0Gc;%rli|s4Oull4I_P@^umw!-fpTRXF-z|py@3ZpTH;e5%*mTCL#r7Yhrv10r zK7{2no+-8;q4=C9itS4{GV=e5?N7*?d4I8e3N3FeEVf^v|NrF_+qdxRmMO*dFQj*! zSZp7|@SoC)?PvJ-rjf<=HKe>Sq}cw3D^D3vY@b8RseOv=cldR4_u_y09tL+Vw*TRU zCGCpsgV@`nRk8gL)8;iTwlCtfZmGrgN32PT%{A?Uxv^`ai|?O*}j1_G0@d zF5G`}v3(S^4>T;cpQ8SvYm4oxnDE{e#r9X+@&By7cUTlx8~1-^W_yRF>{6Gqu=L(V zv7p!x6?;KcR4jmiianOZUSls&V@>QeMiV`=OYa>7lp;+L6c7V?8KF{;JuHXB| zd#-%vK5b5$v$L~iZa#i`$(U#1lP^xje2W9o{AA3#2x796G5@09Suz>(Ft!f&6}p=4D8BbZL<9|HM%Db`9ofR8_vxV7|t~EzKIt+j!|!ufhC{#f{Y(%;V^Pv{Hll z9J52qG!GE3qnuf!!TgTXk8?Gc=kZ{5rUvspZ2VI-nD^1pOKULyZU(6 zm=B^e@~#H?{!cL0zp26ekfhox8q5<>-MFN|d=bYD=QNl%vN`;;2J=T;>`!PgkHm#M zqQQKUja5HuFt5b^&pjHNlk$7k@FJ`9FMT30*$1m&Wpus$uh6%PB%$K>g)JlVSGkJT=HJCp${D!dx z`TmbLDKgYxK26AbsRr|Ea?K?g%&)mRT%f@`n}%f^4d&adILFXn-p!m6puzl`-#DMt zn1?f>e~%jTafU4KQe$4u(Hre*%+DF#+N#Dpo$-z@)tIkye@UYn^LCPM)~S*2|F{F) z&(xU5!wafZV?NK*?PY4r>*19bsWHFjfNj1S^L$pW%vNK*&%>N_HRkuSsw%1FMf#=N1?&X?4f zKjeJuoEr0pmT=CfF`tOH@}wH`ikPpCsxiN4M&uzi<{9Zd*{{ZYBfIf?)R=d4B5#Kp z^N(Uex2iD@=~UikHRdBZkKdriyd;w+Yt@*av@mj&8uOG4UZEQg;wxFMOi*Lq(r!+i z8uOPXA6u-(Jf=;~(Q3?R5~W0`F|X|isx^0n8uOy6Rt-~Qew3r#5H<4s4}10`NR9bY?K=b2m^T$Q z$X|_o|HA@$z15gUm2k&HjeP&ZgiBr3m{-Mhby8z~)%dd_ zb{*?{N|}=4lD-glf#!3L$xF%-d>w z%2H$gR`Wwjjd@(5Cx9CBxeV8TqA{;4cy2F^`CX+WyJ^hx%JzCoBj5iqwwCQQ=6y9t z+Gx!G;*u>i=7H_&YN9b8Y+Xw|jd@}D&ueMS58LwW8I5^jXDcgd%okHumea`he~jR1 z361$D9=h2u?X4#%iV_wy(U@nJYm`i5zS%k_n#R1d1A`vX zn17}-^&yRUXk7{SY0O6(u=g&Fd1-I1-J&r+jh%m;M!x@{KXqQAF<))5{C67j*8UuL zk;eSBn8oL4%wyYr^bC#pY{HCRXv}Nt={-(ke%mOQqcrmU4`t0eL}R|2-Kn2x%zL|2 zv6sgDw~MmfH0HrkQ+Cjp50`p;D~)+^oi#twm>;)QwTVW)|D%75|AEGQxmS)P^-;KsR!IM{GB()Km`C`gQ3Wxta<**+#Qe%g({hM>|3~EMmqN_9yecV%n0MJL zEQFYUc~6)RF%R>(I2U3*=6bzsh-_!l1Bm&Z7t`-U%=6T5z6UYivy*!lV&3N<=i3nT zKgkIqLFD^C zj9EMfVjk}A@v|Z3Id_kU>UjF}MgbT!Nw5c72}-yI1gAMp2Am#}dRD?jx7bdO_gP1pbVZ%^}eE);t z>H&wcH?cu64UjbFMbhL}G-!bA))k9_XW zB8d6qT>=rryz)<5g%I=0*RX{U^UUM73Lx_RA5_B^K+HQ&-p7ZSf37g%L(D_(Jja8W zj~?jGgP528h2}!cPxlSyLd;WdZstJDR~P@lfta^`P0oRszn*-T4Ka^>TsRwIKKsNj z7R0>vq9ZJb`R%FwSrGaD4|Ho{Lgf2DP;WmIV%~eq04Buz_W`dN5cA--o?$@DhYy*^ zfPK7pAp>H5yh|DdF;9NtCJJJ{{M&&P#JqVPMM2D;Kb%TJ%%eZClZ2R0FP}g{%&QkF zNQn9MNv#CLJp1W?6A<(5@9iNV=G||bOF-oNA5;`TK;-)$bU>eg$oD@ew;e#_`yaF} zA3)^$A9V31fXMehXxKpjk?(&{#A*PM?|)F+8~~B;e^6H_fXMehD6t=a$oD^Jp(B9E z_dlrI3_#@jAN02rK;-)$WW)y$`ThsJW&ntM|AYDw0FI&nAn_jn01RRx0RS-(N|2Coq(S989OhQl+!Ew0ffxx9fmxmH_Q!1KV#b)2t*lkh&`@Gd`d|w4!3cctFHU>`+XBvV_qn zLL^A=Ormfa&xS~p;MqW&#^WcJ^`&c3T7;LASl*W=_W`jrPOg;T>r0}Vk{}duK&zC6 z@^y&ugqsdAmRydaVN@qE7U<5>mTSw#{dWZ*#aH+X36#%Lp-Lt~bOE%rnYcDbj9S4F zuJpUQJmJ>{Q59bvxF2QrwWv_KgG}dHV*Tdb-~V0FV;I@V;_A3ou;j!URBH+Xxyq ziRv2IpnSBx-!+YLW&b(kegd?Z%)W|fS<&M4X>Fgyn~el(B{=_E@I?^Y_%seejQ1kD#!7>~`j3giEyf;%c9f$J%3z56Op7=lcg zHXB=f+a2dL~^W!6zDCR{kj!ICdl6<}Grq7RArbvv9U7VnZ zj9;RNS~5Fo?%b%k(>-MnuO%Cq^vwaC4r6N1u>57k#-n zFTjg|t1O93T!2!2AA4rs0#WZ2gwl%QI#a6@lt4ixI$NQbr;VwV6(!lIv{cQcra4mr zXIx{Vf^t;2QT%z-OlN9=GbLA8Qc=#72{N;tDRTwML<=`?+~|nW1H(fiMg@lsLne6K zxH03v?C8XCQOl#^6QYJLj+{RZ#79Lg9vmArZ{S!DHxL)TB6{xJ#Zd#tp`jza~}S>PgoEepZK3yU#o+EMjReIK0IRRz~Q4Nj0*!6^Fgs0WT4HeqydXt?&ef2;TJs`br2F*0#k!q;W_-?dqWs`#RX{?9%0 zZx^8hLx+bB1>++I4;>l~zAjtef}`_1+|h{%(W{~oSH?ws*8%SJ+cpDz7Y^^1Iq2kw z_{h1@NuK|FaQ^LQ{Di@SgU658UMt)J9+{gr-UHvd>Ki>S>WgTX^85YqzukPd;cy{J z;+G*k;VU2BcS}KcAO)(X2-eS%_VgidW1e|L0?k%3{A(#C7II&0aPiUA=j+==8pLIo~HE(Pv|R zl(vtrHU2keadZs2(S9vOg9OfVVwWt5LRZ=uT?6OH#KidM*~=3Dvz2-1`v5=m{a*%S zR1d8RK+h$8!BcC$nXlhq09c?5T(9r8jqHEd!(}+wBB95s|KED}(e1zc{r=mKfy!}k zMB?_vz8+*!0w_=vUt?Sc3-=d-gxmWz-uo#2HK#A~&v)?GFYK>*_;??k74~gXDE)07 z_{;tKetl8DzNm5BFB|Dwzq3&M+c_wT9@hyF`d!AiX#9WGo5&=C_;d5Ey#pxz?Hm*Z z4^Vr!-na0rY%j|AzP&f!wTB+F|7q_6ihnx?w~>k38~I(vx9G2^?EChBA<=g|@%V86 z-^OS^ZJUD0`c>H)C`bgjAp@ZVz4I8+k_L@-MxA3hmY`^Vg zT&B_?z+RLoM{z?W+#YTp_xXK$_jL&{3*~(a-`e|@{${_=XMpxE-}14g{$s{C{ryOA z`uiSnn$b7Mf7@X6&3ny18Q)gvYX*hxHh5kB4J?4~Lw(@~yxuH;Z~g$qv2gnPK=pkB z|IMNPW99L9@F(TpK=tkP@6&jv{u`+O*y;Fu-M;bR_5B*~75q0)|210*pdVM?1q$c^ zFOyctOsttv#=`SG4xF);`eMbgj+R+G4H6pI6*Z zjn+15?JKSA)LOjZaXkgPNZ7h)ZGWvDt+ms&c9GVu(%S7>i~m^$pMOnj|JK@Ut*zAB zms;DSwH)-3!snT3t((>cV#`F&ELt0kE!wV=wRQ%!=)48m^b&14Nt<4)O>fnvcWKin zwDzJl{|dIKpKPuDqAlm6k2c;X`q-j=EVXGTZ5l0G-+2tJ?b|=79lWP;dkU?!)>;Rx zbU!nHiXw&!~%y9eY>#om=v=-f#`_gi) zHPu?B*4k;UtJZpIZQth(R~C)!W-!q44na_WhbOi?=>_)X=a0_<$Nifk1a-G@O5e3@9$MLs%4$n(D_ zH$=w&$r(ymxefi&{rSs+TMPdF!Kt$#NSQKgLnONG*uTjqEIC7^L;o!&tTeNLvaX4N z>Hy`lCP`nq;_KIE5E@JnfSm&XY(lC)%0;4)?jl`6I*zmlX(Q6|0R)Ujnt>FCGz7^9 z$sWmU010)Fm`LyYlkgQ%b$<#LBBdhziFCC;1D-}YfV2f^RevUoL5f70(4PfEkoqCH z^k+jWBm*RFe-8W<$boMHxv(Co3@Iy+2OlBb3gpA{NJjz%a3|9GKp{*(ninX7Q;|jo zieV6vXP^YyA{htjKoJrds0+LLN#P5ms(yMfA4$_sAKvR{0Dnh1+0PK}>nDSok&^n! z;i7&WU>;Bx;!80|j*&hQU{Vg3W* z5dT5Y$A2(%@E-!r{DYyc|1ik(4}m>?!{IBx5wON@BrNh91=IXO;RC-h@S0y3JmWVO z9`qXzxB7*{HGUIdtlva9$8R#6=r;w9@S6$){idV;UpE6<`^|(hKlGZsUnKnEI~#WR z&V`M>QSgcHe3;|A07Bnrc*l1Uyy&|a9`{8UVc%G|(RV3a<{J;AeG}ny-(@h&cLf~m zn*@D)S3!H<)zHj$E!6Q{2bsPRSa)E6P1=o2!gYjN9aGqBkoZ?jvM|(BFAg>qD)2julyjr2L*J~*DYKN3pCw%Am4!-n! z51)GW!UE5aFvasTyzdF)of(W$rWSEcZzIvHKkQmis*Vg8KscnEN7nw|fk|!99*%=AJ-DyDz7wyC>0M?yKn` z?(1k@_aA5n_f539`%kpgeH+bo-$D1f?WWt@_R)222j~*FLv)7QQTlJU6ZB2DQ}j8v zU+E)m=jfeo7wI3|ey0=NuF~_}ZqU=*ZqsAj?$LwY?$h3G4{3Y1N3@w6P3yWP(@eKC zy2mw>ZgtI}YhCl{64xR+-L;hd%k>F;!?lV&=UPo4ajm0wxHi!1U7P6y*A{xdYa2by zwVe)ieM=8=?WVn5due-D^j?}Pq1JU}sF|*8b&m^A-RdG#*Sbj5B`#8RhKr&4FBc>A z4Hr}OITwZch>Mkar;Dxn2N!#FqKlJyzKg4Rnv17;jEj$Yu#3Oi$ECm8!DXP@++~Pb z>M~5tav7=abq-axIgeG>IZsfRI!{(-I!{+Wa*j~na-OZe;5<)#6ul$3%Xx`VCM~LKj$CSPR?7^7S21>`p$dQT<4$FADs@V-#8sp*E^k5 zmph$NXFHu&L#IpXJ5E>Bmz=JvPdMFH?{)e^z1iu3I?3sgda)C&p5>IH4tL5>hd5=c z`#I&SU7d>6)=uSWnNy`&;8d*!PS4eE9UIln=$+0g$2N7oV~0A~u}gj5u}6Ky@ss+r zBcVCq$kc3g2dJUv^oT6Y8?h>N*o4jG8~3!{&pCtx#=)QbKYUR=BUFY%`S&&nhg#Snq>}iGz%T( zYi2qu(u{M6)eLn=(D*y7&^V*_aV;IzYYZGVX?PA>G+*p@YC7%rYMSg1Xe#Z|JHF_B zUyc1~%^&vXHCOC^)10=ysySePQ?u3nu4aw>15KR$BTbaOS~JByRWsT?Q!~&$Pvd1@ zq_MLv)0o*;X>{#tG%WjiO|RVxO`Bb-=DA(Frp)f0Cd;l@^VsgQ=8heee94ZTe8P^O zyw^^WyxC4Kd8M5^d5N8Aa-^MQ@&r4ZM=VUk4kz}RnWU^d!CRwDqkW8vBC%?13k=$Z?C%M}8&*UQ8 zN6G27>g2y{(~@u6W+$JwEl56UTbjJvwjz0>ZFTYr+xp~1wl9(+Y}=BK zZ9gWv*%B#ATULsZEk8wMD@mbj^;5cSj8b0Nn5ER%Sfv!(s8TX)oKpU_aZkBrd9K`_Ql>ndlC4C35y~?uca;}Yep6ma`9*m%Wxw)X$`<9r zlr>5^B~F=|5~a*anWD^3300P)3{qC6_$X^q9F+|z3gycbedU`JuCgoTvvqGur!`1z zvSy}MS@Tl!ttF``*7~Urtc_BySu0Y{S}RkJSlg%Ww02G1VC|K<+&Un2p>RqcNslQvDOg&|FHuZqjrPQrf*HYJ7-ARqN`ZIOD)#KD@Rw=1rR+*{6R{5#^ zRwb#h=d`P1# zi1hagc6zHqm|mxlrk5$?>DdbNbXuWIzo&3WzpQXiKdtahKd9)RzFjdSeZ68tdZHpM zJz6m-eWqeYdbnav`fx>bdVfV+x`$$Ux(fZdPE*CkbX~=^bhcto`bYDF>Fwsn)0@nH zO|LS)lwM$dEj`uzZu&#>hv_%W>GbpF>FLMKbJO>l7pMPdUYWkiyf!`7yg5C}ye)mI z`P=j{<{#3Bm=hU(=9~-{b5Vx1xqgP++&DvIZjnKmt1^1boHN?YyfU7f1!R<)4a&$h z3(3%!jmfxgHX-Ax+4PLFW^*!*m_=voGKG1}~K z#vrp_GJMU>WjL8#&agDQl_4{`pCL4RoI#qUX1q7e&S*6)%BVA~$S60h$;dHn%Fvj$ zW!yLI%D8I!A>*tmnR&#No4MOmlDWy$AT!C-G&9E3I&+SxL*^7y_smdJ-^?MV12X+g zhh{pPj?T0;4bPODPRkUVMrJZh7i9LD#Ad!WS)SQovNp5AWOHV|$&Snvll_?wO^#;X zFgcZZ!Q?{bag(c=`%La+{$%nnbB&2QGu|X4bG}J_<_wdv%yA~qGDA!nG6PLsWqO!& zX4;wbW}2B0S$Za%EUt+->x;2LR+q6^)=Oh$R*kV^R*A7kR+h1U7HvE*>z;8)))nJ1 zS-%=j%sOm5Gi#S|RMsZr#aT(l30X15tFq=AZ^)Wrye(^t@!qUpUv`cBNOr0GbauA5&c1c`XagX_QUOsgljeDU?O!q|27%Jd!QTxg%SX^Sf+w&S}}s zoI|pob9Ty(=WLXn%}J77&WV-X%88Oa$eAWn=ZuwQ<_wb+<^;-~ z16AH}1J}I$2EKV)4TAF48-(O7GZ>q<*kDTDY=g+WDF)GbV+@w&1skl)>u0br&)r~q zo}Iz|JadC%c?Je&^8^N$^C*Mcc|H0M^WNwu=QZkQ=RMUg&MVfh%FEPm$fNaJ^ZwB9 z%DbljIq#f4EC0B@D1X1cLH<^K^ZfPtw)xBSUGo>~`{vKl56YjSKRiE7e{B9R{VDl@ z`m^&r^%v&b>nG$}=&#O~>2Jyx>F>;E>L1AesCP2IQ}2BK3%zUkHG22*%k&=S=jf&7 zC+p?sKh!JFzol1`e@X8}{wckV{6l)Z`MdO}f=zn-f>nBY1xxiz3Kr-o3nKKK3MS}z z7mU*DUocp2Sb@J@Sb>|~Kk05Le5<>? zutj%&VV&;r!Y8`t3JY|v7N+aoD}1c`xbU8Cdf`>wg2HpUPYRFg))ns8Z7JNY`?hd{ z?x(^eT~<-7uDEEPuB>Q=u0_!VUHhU@x*kP?b^8_h>joFO>4p~B=}szA=*}uK)Qv6@ z>BbkabXOOB(%D?}R%cgHi_W2<=Q^i~Ds(Ot73kb7%FuaG1a&k;f9PZvUDqiox}Z~C zbW*3e=%7w}(N3M-qD?wf@oF7GalDRxakP$Eaior_c(RULahQ&O@i3ji#r<_g6?^MU zD0b3`C|2q$C^peqTCAtDs+g~{shHB)Rop8%RNNssRs2G7sklaRtGHb9usC0mT%0D! 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 z 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 z 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

    A*7dE&veefKvrIu~CoJdiEX!Y6 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

    R0m2pYMtJc&M9*8a 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

    #POZqaQxiFvdZW6jg z=q*B53Vja|_u`*Q{Ldx+aiO0V`V}Jhek<{Rl=%0A{)^DZh~WFX#QSg)Wc^zaQ6E0z zn4T>0>RZx?PZRnA;mZ-eArh}_OoDH`(8{(XXga4(jn4?u34#H^PJ%rJ`w0HC*=Bu8 z>h-MPYl6QMF$L@AosNCgP< zjS-{BHdo2%|0WRo)_Gj?<`8<5A&y-q^?gKLAy!Aqqs&%vr?x5DS@eY>Bl_m^BJ@?dP8X%4S<$9`Eouo`w7TO`{SA}?axS+%h3XxK5MgVC54)xg>k0ak*YpiT z5*87>07gqa7WxfWF;O=X+#aQPGRd1aL&ZcbA^1G%+2o5Fhm4Vx14H;=aYvO9OrKgu z;B%`{s@u(%NUS4h4OtOejt_&=@b<=0+j8W(rd8e|99Md;2JZ^*WnjU|fhi!ca)AHQ zsJ%#rEl0lBHnrubmO~VIElrIy> zD8g3O7m&;$nTCLEYVl@}E!2vD%UBSCSPh_qSP7tm*aoSB35m>lIe8P3!@>A2;UExT@H_Z zj-yy3yOgouP>z2+vZEBj6Y$_1##|fhT*D%{sJm3I7mjwWsf5RE&OAF22AUA)2ahu+ zh|uvAIuTy)W@PvZcxaFbEDxJJ&9LH_VxLgyVaeA*T#1s*KZSDa+32cpZgu2=C+T!f zn(DlNm0g0iQ5&4l8K}};gDNcnO0-n&62y+aMS*0PKvbIq3#@CfRWKC>6GwJPp41_^ zXG+hM_VdAky?)6ZJ7Irca%bxbm{uHtbo_>)3cIXSt59m`xl=#YGVO8aTOJNALz zElgVp+19nG$$k1{F#B1l)|IJNLBKj-th-`EPLGW7Fqil;cKdajq0A*dd`fePwgJA= zZq8E*He2oWo!d+NzqgdwSiwhYfG1OJg-;&(C;O9r%C=ym=y2Zr;gg3<8$CRK^uY0h zhebr5+9Kka+d@3;#!I^&hfO4&dV^kbDoeJ+ztzS)J`$XIuTGBJ9q)F{+C~h1P-pp)xH;He*;T!`KZx2cA6iKKN1a zx()~$U+~)7k3*8-v|$K4<$VZwZ-STdSQjm?z>x<*gWq!D$W%LB))k1*VW#n$DnE5Z z=-?crIm>+tqn27EvRuaNa<4;J=RweT1C^ z@fqZiPdlAfj0mT^-41z}ZVk)Zg|N;;8D7klaCNM9I>`49r@Si2<8@;F@ERYMcOSyc z!~Q_G2TVmxt{c-If_L(D!$~e;260TI=NJo9L<=R_COKgIaXg1ZIx3ce`#s^CGv!-A|R^HV=hY$KQ? zI74uq;AX*l1bKD7jgF7~jk=bL1$mDpoiE6HBfeh&k!SC8W;wH+)AGS>7^L|KL zP41xFYN0uk!+Ja=^m9Thvt0bcrrE35x9Ro1Hc%-ZEH-e_)95C-u&CNygKf`$S zMhNUJbh_XG!EC{x;0Qs!6f^$>K~CS0zEW_p;I)D`3f>}EBFKKveD@0SUQfDOkoR=b zPYJ5)4EhzJ)pZ8_rqKL^i<49=?>0fsF_Bhp;H)R>jpr!uPmHG{>g)T7(7gLKnFH^a#wl%a zr<()s-?v|u&3gJd@Bw_FIp)B%y}^>IsM4sNgNvh!$A_*eE*})PnY;Yl#l9^$b*{Au z#k&XP)O}eruJ}ISiJ~9+#vHyedd%VHVwNR6UK4X3x+vw z)*B09!7y)qL)6@Y`sg&@k!bUo1`on9ux#kd8Im-%KE`;u!9CX~!45zR77ugw)EGNm zrRFBzkysZj2wKk}byBX;ZB(sUaj?35s7=Tm@GNAwb{5r4sE^ILEJW&HXlKZ^d0c%= zPC_PW$jx!>oSe(>q}+x3n9rs1`9qh5ifR~N5dwc6<%2u#V2Gji^QP3ha_oF#DSh4~ zC4-W8&a>m+nMdgXRSs)bdmv^cl(Ha6OwSwX=7o}@V*+Hk?{;t=>-j+IU_niS*eskL#DkaGiHQ-^tWPFrIx zd^VCW&;B`>tgejG^Xxm2V5vWiwq3|sWK5#-hNA{au4PM^+2?tNe=T3sG(cp^ofGij zR<~u-cR;bYzhDNpdjci-+`|EC%KZaGd;bg;!+QaaYrN+nxY~Oy!mGS*;JDJur4TE; ze8^$SowMDTa_1>VO~XMOEabBo1`FpQ%ID@EINAq;g~JdVGnZK+1`8LEj2J8&Pa)-= zSa7;h@F}JHDQJhMB_P)19oxLbWF_f(AS<0o?XEwKp)m~dhVSo3GLPgXB!5P7Y#m6x zV#IM>hnde(wv${*ay-ds__$n>6G)bjoXorvNj?i7zi>I`=1KjH)RJqiGR%Unz(RdV zTsq>+Nf&`+5iNKdF(;FBmFC3xNKGNdO^yjO7tA-z=_KRlN#GZVkH10)wOMZQf@MN- zjYr(=l&|v4B{`ZBXRtxGf{dS@W|%YC+&@titR*Vym!MishiX7kW`6v1=mu2y0QqL< zT>Qdk{0yDT!VNfnhR)SlQ99pH-kkCEEmXG^ud2_@<3Hy&o=$EqF}|_6M2D{6bmkH@ zYYfi+B-#S?STj}yi0rA*792t_;yNLSsc{0+PpK5Z@E5!j2(~O()I&JzdLe|ldxDk~ z(GZY}rMQfRZej>tR0Pi>$Z>{ctn^nh@CSI9MZ6wYvzT4Y7)#gGV~kyFIOTXDUWfM@ z6F0dp-Q?C8ojf+DU0u1j>LT0S1NtA$kc5CRxQLM}hI-kKENml}kyfeOil5KYoZ;!O93`>CTMszNNuqNd7G>G4wM%52BEt1l zS5&7Hd4;w63a#TZ-Us=8-Z6$Lh^61i7UluN%1-dQ-h4 ztyxR09=@gAyVWDWV|r>wYZ*cTD>Gmv1jhEv=-b`ew!8(SaY+j7O-8JYAp$Lw^{|Ps{>gVcW&3&`Vn%xZ3KE|2xkDCUArlxmVxeF@Xau6 zO-t)CG{d?&yPNehFu!U9y7%hWBMaNb0?gUHqqPUo2My-rr^XUeb1oUsr(MP+J^Hlk zbXSi)y%Q~eYI^&O#Plxs&KWdv%K|CMnbs>tYNy0biG5OfcD}fi_2KG*_ST$iY_2p- zXny)-VPBGb9BQBr42o!Y8rfl_mBWFC{V6i7Xwnzp3@u=WHA?^2rZ4|j7BA6I;}$Gi zGBDCUP4z%k8BLL%e=y4i!Ft za)sde+`*^I9gNgy;USDa+X&mHqv0fZp=sXA-mm-k^2JLhjU-EUBY5Az=99=0# z+H{1SJZ?r<=Rwf; zJrWZb5U0~_0PU1F%OQ{d8(qJ0gmoT@_z3c>X4-iR(wy>^LLS?d_2WB)miHrsDK8D4 z?qd|Tsfj$MSHU~^)qqwz zyz@L(I@+Z*()4+7UO@L{1dXYX_Z9=G z3(Xfn=6^uwM}_9vL6-NT(EEk{ozU+Ka(aRJk4rl5Q>1-F>4LmpkuO{D62WnTlLRjl zoFy0%;#4j9)t*OSw$M3(qXhE=o9ex0Nc)P+9QOEi=2^|z1AvjKOq97;eSy=y3<6*@{_pJe?kQK;JXB&)Ul#kc9U#X+7?SDyt-?IA&vXiM8EV99?ms-d)nF zcsTU8zD-dZV@q@D_O6X7vx+xCkNe}bgNknj-n}-q>~`P0B%{u<#vIP|xi*ccsM~@wt1{`_dl8o}DLZdenQ2N9(-_v@AM3Kl-T8iaFvkcegcC`_wL|?oe!A z)S_rw@xwJg9#>I3D*s^d*tWU(zRaSw-hCa4t)o6SQ(Z?)e^gOrvFoBS`TOdmXT;Vm!Ey*1ZW)@|R&pgAD3 z-ZgS<&3(`{^TUCtr~lFF0o9B(&%dQ+FXErgT~ysRn1&eF`J|^5-%`^H=W;`$|Hv@E z(Y@|~yKHT)Q87I+y5hE)y9XJY)*QR;0XM!)cbCuHl9yzb$L_eXW@?hLaYWL*#F(8W zHFwtxN}QS)3cZYPOwM5Y;fsCl(wL3j&EB2w)b}bHb9hM1JN0c!e9+n&<%2`kkrpAK(pKpjtF?vm?{RMWLCDv9QHx^by9_+MMF{K*zT5l?Tp&>Tqj^chb z7uURiGF~YDO|hAMaZSIPdum|$Hl2KX_cfCfQrrulN8ak=ZiKxe(TlK8;(ZAFReTlB zr22SFp)1=i*N>EV;fgQ3rzRmSL6v0mdg*|xY<+I;wr2VCeJz6BgDaELkGrmX95vrv z!@TY~)BRy}Zguu?*8-%BGzU;S?@cMI_6M^Rrwb*y63FWsfYvH3f_~ha;y>#4-jvTYxDL?+;?;St=K<&H5eE@GT=4&{bt#NZs z!Gnr}7^j0an<`Hz#z%m|a(g%%1*Lf@C@9T2=5?zFV&60d)flWF`VMkLJxFkS=780G z8Ts>8sF{X)~F&D<&OH0VEVo!_}qyq(!E@9x^IM_h+W(BK^fke z;8^4BhTv-NJqWMza_qR$`v{IJyc~~1RnD!-P?bLcDrzwfuxmSt;ir)Ss`7ORH??cK zlUZ)_P`|*PYCj^mK}c83dcwXLNfZP#`wc+D|kySD4`44^Ycaw_=L&ioIxs1>C9)UAWkU` zdUHk0BcW8~ihLAg{4bbGk-sN-5k=18L&%E<7VPL6=2c&UIu}&@3i4h}axBRivM}4ph>g7{*7BjFo^4p7 zs7B9oo3XLbT6;{q+oH!=@riNhL&D24D^*Hr4!xeOEAC z*_O5~S#4hyMe|F9t!1m7s_e<^%&M`3D9_ni61UtQnLYyx_P+k+5 zPUU)Id$N3Mf)xuqMD=$pBvvKzJ(|=mZa@TEK^PP}c&ntPGp0sV<(S zt%HYsTS5uEWnAZ~WT4C@+?5RQo`Mu_B?FJaBL~;}4ueOKHGUSJ3TdKU;|Y-(U*l3W zW<%kNh~7#D>>5vCjS&ek6CyR9P$V^ma3m{tJ&vpxOu!O0tKfLTE_fP>y#`AZ7_L(E zQbjZT1Uz!F!Xw}j+zVi((N!IF&t=^gs=7>y)FoVjg%DE#_5!vCs-3f9jpDKIeYDmGJR)v(#cp@dBm4|5&4C}UXE&*VE;T`4R z9R<z$@Vir8FB(pmm|5VyNpo)4QsO~*x0$I~_-++wW?NkX)@6Y%7VN{$33N&6V*MFOJI#R2k_wi9wHB)Rb!KW8$O%wR7nZsp z(B)!lMyk#qPWmf&HlwU`s{+|RG3KP_K~Fy#pTtb(cQMmJqzuA={$hSX(?24!9hVL~ zvwDv8w7JfD0s@{kM=1Q2nVqZymVX`A4|Gb*vChth$keRN?wQw&vA$T9YJFwSu`W-w z&Mr{#JyUvh4JKRBfp(cl4InjDr3Q2^+Phtff>U|KhTm(@GU^kdnMi4rr+2}{^V$zh zAKkNO%BJ?|?I&3ABYJe|F@H?^^q$sx5MAj?wcZ8Z=?b({5f!dLXDnXG?ra@cU0}Vj z+FpVX(UEib4*!i7B#1KFxh?_94P{@@lJU zSTX<2*CtGxhJ^s>C}GJ`W9TIl0)qotsr^$k0~u-Q8R;2m{R7<=&z?Vf`jXk*15;2; zpV?Q{-3DruFYVWAXH>XNCfcXJ0#S$-D(u2hz{a%1rBfnepwGD9Bm`$6Agi zYZbn&ZQG^`7LedjxSosqM4<3@A zZ!8JH9BhESD7;?b>)V9YYK6v2S5P_C38l49wQ#|){vlHQ@JohH7&Q=&rJ;idUl8cV zt3Q6hg854Va~3QPfGsdYu5}=9@q(GNmn>PZcuDu~qI;l=e+Tw(`PkQv&yr@>F64pZ zTdrOB7chxyv_muC>5h?}?XmYqD=e`~_ z423K$8$sg{RzO$6kv14%sIS6q*tr-=q4IpU=7b03v0nM`jpX6P6C4pbIJ*hoi%}S2 z=}I}$rX%bu_f0ft8VY2&EKira)R6~4W3S&Z0t|@L<#L$nl;=yfbzYRm_dhM~W`uPf z1dUf9uNwp6blMG|o$}g3UK-*k4_U(U$`RIi5HyY5s48{j!vseQ^1YMsymt`i3oa5|Ey({Q(@O-m3GywQ@%--) z_X_S4RIh!Ae^F@8U6Sv0LH0}1hXnsD__5$8f?o-8TMzlW2rAt$=v<-43r-iDPsF`# zq2N*?{zU4v8u^NaR&&^(w+UTA1g&(w;J;sJrRxR#tnj@g@k+;wc-m@UzCTI&2SRiD zk>#r8-at40c;r*|I)MS9Qw0YT!Ivkfbhe;pN&3|izeMO&Lf4Ln!F<-Xe zXhFV=GhX#e;8dYG)6MwBg4YS^wGOunT`E{6SRttTCGzv$O*u~qJ}X!&sQM++PYC^` zpz3dkS8HZ~{dhfr7YK54o%BS(%LG+FMEoM5uMu1;c%z_NI|IHFq00qNW;eE4()HSd z$Ax}M@CCt_1@)SP{}%eNAh*J>-c%wG8w6GV1g+NA09*391N9n&M4?r`MSNGGdkSU> z>NN=$2|Y-#>Dq(>iC0rmkT+B4xq_;{BYv^a*9oeAk9aC9SU=V8f!l=MA$XVIy@EA@ z4+}mm_`KkLLDl~u?@giA{{ZxV3;luMUj;uAJR$g{U>xrGtY1sP^8}Lwy9z4%(BR7y zy1$@a(=bTrk%G!jH2C$JhRG67eGALGO7I%N>jaywZMa?HO9jgXwH@3a39Z*WP=Q1F zdd6;K zp*6)D1`P?d+iDb_y)CEij5axzuj}BC@S`d z%ex)>>|1U-XKTWyR%)O9rE86@u*+KbcD)hsY;$jW=Og!!=Nnu@-mZ72O~!6=-?r#2 z?|kGN@~Z}G$mDuo;BBmY@NSDjoOj66h)WH|9EtW!sP`Ff*ZUJ@Jv z`6(|ncv9MIkKPosV+?lK`}2H=^`$%q{e8@Kd>41&?V+em-i@e%;vA2d{h?U!#3