From d01a2e6f3c0d05af3ce71ae8969b37410bf8efb9 Mon Sep 17 00:00:00 2001
From: cnlohr <lohr85@gmail.com>
Date: Sat, 27 Apr 2024 14:00:00 -0700
Subject: [PATCH 1/3] Move attic to https://github.com/cnlohr/ch32v003fun_attic

---
 attic/EVT/Makefile                            |   47 -
 attic/EVT/README.md                           |   28 -
 attic/NHC-Link042/LibUSB/LibUSB.c             |  430 -
 attic/NHC-Link042/LibUSB/LibUSB.h             |   64 -
 attic/NHC-Link042/NHC-Link042.uvprojx         |  564 --
 .../Device/ST/STM32F0xx/Include/stm32f0xx.h   | 5111 ------------
 .../ST/STM32F0xx/Include/system_stm32f0xx.h   |  104 -
 .../Device/ST/STM32F0xx/Release_Notes.html    |  228 -
 .../Templates/TrueSTUDIO/startup_stm32f030.s  |  280 -
 .../Templates/TrueSTUDIO/startup_stm32f031.s  |  275 -
 .../Templates/TrueSTUDIO/startup_stm32f042.s  |  289 -
 .../Templates/TrueSTUDIO/startup_stm32f051.s  |  295 -
 .../Templates/TrueSTUDIO/startup_stm32f072.s  |  304 -
 .../Templates/TrueSTUDIO/startup_stm32f0xx.s  |  293 -
 .../TrueSTUDIO/startup_stm32f0xx_ld.s         |  273 -
 .../Source/Templates/arm/startup_stm32f030.s  |  244 -
 .../Source/Templates/arm/startup_stm32f031.s  |  239 -
 .../Source/Templates/arm/startup_stm32f042.s  |  254 -
 .../Source/Templates/arm/startup_stm32f051.s  |  257 -
 .../Source/Templates/arm/startup_stm32f072.s  |  264 -
 .../Source/Templates/arm/startup_stm32f0xx.s  |  257 -
 .../Templates/arm/startup_stm32f0xx_ld.s      |  239 -
 .../Templates/gcc_ride7/startup_stm32f030.s   |  294 -
 .../Templates/gcc_ride7/startup_stm32f031.s   |  287 -
 .../Templates/gcc_ride7/startup_stm32f042.s   |  302 -
 .../Templates/gcc_ride7/startup_stm32f051.s   |  307 -
 .../Templates/gcc_ride7/startup_stm32f072.s   |  316 -
 .../Templates/gcc_ride7/startup_stm32f0xx.s   |  304 -
 .../Source/Templates/iar/startup_stm32f030.s  |  300 -
 .../Source/Templates/iar/startup_stm32f031.s  |  288 -
 .../Source/Templates/iar/startup_stm32f042.s  |  318 -
 .../Source/Templates/iar/startup_stm32f051.s  |  333 -
 .../Source/Templates/iar/startup_stm32f072.s  |  346 -
 .../Source/Templates/iar/startup_stm32f0xx.s  |  333 -
 .../Templates/iar/startup_stm32f0xx_ld.s      |  288 -
 .../Source/Templates/system_stm32f0xx.c       |  358 -
 .../CMSIS/Include/arm_common_tables.h         |   93 -
 .../CMSIS/Include/arm_const_structs.h         |   85 -
 .../Libraries/CMSIS/Include/arm_math.h        | 7306 -----------------
 .../Libraries/CMSIS/Include/core_cm0.h        |  682 --
 .../Libraries/CMSIS/Include/core_cm0plus.h    |  793 --
 .../Libraries/CMSIS/Include/core_cm3.h        | 1627 ----
 .../Libraries/CMSIS/Include/core_cm4.h        | 1772 ----
 .../Libraries/CMSIS/Include/core_cm4_simd.h   |  673 --
 .../Libraries/CMSIS/Include/core_cmFunc.h     |  636 --
 .../Libraries/CMSIS/Include/core_cmInstr.h    |  688 --
 .../Libraries/CMSIS/Include/core_sc000.h      |  813 --
 .../Libraries/CMSIS/Include/core_sc300.h      | 1598 ----
 .../inc/stm32f0xx_adc.h                       |  450 -
 .../inc/stm32f0xx_can.h                       |  643 --
 .../inc/stm32f0xx_cec.h                       |  300 -
 .../inc/stm32f0xx_comp.h                      |  245 -
 .../inc/stm32f0xx_crc.h                       |  122 -
 .../inc/stm32f0xx_crs.h                       |  183 -
 .../inc/stm32f0xx_dac.h                       |  312 -
 .../inc/stm32f0xx_dbgmcu.h                    |  107 -
 .../inc/stm32f0xx_dma.h                       |  377 -
 .../inc/stm32f0xx_exti.h                      |  216 -
 .../inc/stm32f0xx_flash.h                     |  430 -
 .../inc/stm32f0xx_gpio.h                      |  358 -
 .../inc/stm32f0xx_i2c.h                       |  478 --
 .../inc/stm32f0xx_iwdg.h                      |  140 -
 .../inc/stm32f0xx_misc.h                      |  143 -
 .../inc/stm32f0xx_pwr.h                       |  197 -
 .../inc/stm32f0xx_rcc.h                       |  608 --
 .../inc/stm32f0xx_rtc.h                       |  807 --
 .../inc/stm32f0xx_spi.h                       |  588 --
 .../inc/stm32f0xx_syscfg.h                    |  262 -
 .../inc/stm32f0xx_tim.h                       | 1186 ---
 .../inc/stm32f0xx_usart.h                     |  599 --
 .../inc/stm32f0xx_wwdg.h                      |  109 -
 .../src/stm32f0xx_adc.c                       | 1240 ---
 .../src/stm32f0xx_can.c                       | 1631 ----
 .../src/stm32f0xx_cec.c                       |  607 --
 .../src/stm32f0xx_comp.c                      |  408 -
 .../src/stm32f0xx_crc.c                       |  361 -
 .../src/stm32f0xx_crs.c                       |  466 --
 .../src/stm32f0xx_dac.c                       |  692 --
 .../src/stm32f0xx_dbgmcu.c                    |  218 -
 .../src/stm32f0xx_dma.c                       |  705 --
 .../src/stm32f0xx_exti.c                      |  314 -
 .../src/stm32f0xx_flash.c                     | 1256 ---
 .../src/stm32f0xx_gpio.c                      |  540 --
 .../src/stm32f0xx_i2c.c                       | 1585 ----
 .../src/stm32f0xx_iwdg.c                      |  293 -
 .../src/stm32f0xx_misc.c                      |  167 -
 .../src/stm32f0xx_pwr.c                       |  566 --
 .../src/stm32f0xx_rcc.c                       | 1741 ----
 .../src/stm32f0xx_rtc.c                       | 2518 ------
 .../src/stm32f0xx_spi.c                       | 1334 ---
 .../src/stm32f0xx_syscfg.c                    |  320 -
 .../src/stm32f0xx_tim.c                       | 3349 --------
 .../src/stm32f0xx_usart.c                     | 2096 -----
 .../src/stm32f0xx_wwdg.c                      |  303 -
 .../STM32_USB_Device_Driver/inc/usb_bsp.h     |   48 -
 .../inc/usb_conf_template.h                   |   76 -
 .../STM32_USB_Device_Driver/inc/usb_core.h    |  495 --
 .../STM32_USB_Device_Driver/inc/usb_dcd.h     |  228 -
 .../STM32_USB_Device_Driver/inc/usb_dcd_int.h |   70 -
 .../STM32_USB_Device_Driver/inc/usb_regs.h    |  233 -
 .../src/usb_bsp_template.c                    |   82 -
 .../STM32_USB_Device_Driver/src/usb_core.c    |  712 --
 .../STM32_USB_Device_Driver/src/usb_dcd.c     |  648 --
 .../STM32_USB_Device_Driver/src/usb_dcd_int.c |  369 -
 .../Class/audio/inc/usbd_audio_core.h         |  141 -
 .../Class/audio/src/usbd_audio_core.c         |  776 --
 .../Class/ccid/inc/usbd_ccid_cmd.h            |  190 -
 .../Class/ccid/inc/usbd_ccid_core.h           |   63 -
 .../Class/ccid/inc/usbd_ccid_if.h             |  184 -
 .../Class/ccid/src/usbd_ccid_cmd.c            | 1091 ---
 .../Class/ccid/src/usbd_ccid_core.c           |  455 -
 .../Class/ccid/src/usbd_ccid_if.c             |  428 -
 .../Class/cdc/inc/usbd_cdc_core.h             |   95 -
 .../Class/cdc/inc/usbd_cdc_if_template.h      |   47 -
 .../Class/cdc/src/usbd_cdc_core.c             |  600 --
 .../Class/cdc/src/usbd_cdc_if_template.c      |  203 -
 .../Class/dfu/inc/usbd_dfu_core.h             |  142 -
 .../Class/dfu/inc/usbd_dfu_mal.h              |   78 -
 .../Class/dfu/inc/usbd_flash_if.h             |   50 -
 .../Class/dfu/inc/usbd_mem_if_template.h      |   51 -
 .../Class/dfu/src/usbd_dfu_core.c             |  842 --
 .../Class/dfu/src/usbd_dfu_mal.c              |  256 -
 .../Class/dfu/src/usbd_flash_if.c             |  164 -
 .../Class/dfu/src/usbd_mem_if_template.c      |  137 -
 .../Class/hid/inc/usbd_custom_hid_core.h      |   65 -
 .../Class/hid/inc/usbd_hid_core.h             |   64 -
 .../Class/hid/src/usbd_custom_hid_core.c      |  622 --
 .../Class/hid/src/usbd_hid_core.c             |  342 -
 .../inc/usbd_hid_cdc_wrapper.h                |   51 -
 .../src/usbd_hid_cdc_wrapper.c                |  404 -
 .../inc/usbd_hid_msc_wrapper.h                |   51 -
 .../src/usbd_hid_msc_wrapper.c                |  326 -
 .../Class/msc/inc/usbd_msc_bot.h              |  116 -
 .../Class/msc/inc/usbd_msc_core.h             |   53 -
 .../Class/msc/inc/usbd_msc_data.h             |   53 -
 .../Class/msc/inc/usbd_msc_mem.h              |   60 -
 .../Class/msc/inc/usbd_msc_scsi.h             |  145 -
 .../Class/msc/src/usbd_msc_bot.c              |  319 -
 .../Class/msc/src/usbd_msc_core.c             |  310 -
 .../Class/msc/src/usbd_msc_data.c             |   71 -
 .../Class/msc/src/usbd_msc_scsi.c             |  661 --
 .../Class/msc/src/usbd_storage_template.c     |  175 -
 .../Core/inc/usbd_conf_template.h             |  159 -
 .../Core/inc/usbd_core.h                      |   59 -
 .../Core/inc/usbd_def.h                       |  100 -
 .../Core/inc/usbd_ioreq.h                     |   68 -
 .../Core/inc/usbd_pwr.h                       |   65 -
 .../Core/inc/usbd_req.h                       |   55 -
 .../Core/inc/usbd_usr.h                       |   50 -
 .../Core/src/usbd_core.c                      |  366 -
 .../Core/src/usbd_ioreq.c                     |  175 -
 .../Core/src/usbd_req.c                       |  693 --
 attic/NHC-Link042/User/NHC_WCH_SDI.c          |  430 -
 attic/NHC-Link042/User/NHC_WCH_SDI.h          |   57 -
 attic/NHC-Link042/User/config.h               |    7 -
 attic/NHC-Link042/User/it.c                   |    0
 attic/NHC-Link042/User/main.c                 |   36 -
 attic/NHC-Link042/User/stm32_it.c             |  182 -
 attic/NHC-Link042/User/stm32_it.h             |   64 -
 attic/NHC-Link042/User/stm32f0xx_conf.h       |   83 -
 attic/NHC-Link042/User/system_stm32f0xx.c     |  331 -
 attic/NHC-Link042/User/usb_bsp.c              |  183 -
 attic/NHC-Link042/User/usb_conf.h             |   86 -
 attic/NHC-Link042/User/usbd_conf.h            |   62 -
 attic/NHC-Link042/User/usbd_desc.c            |  257 -
 attic/NHC-Link042/User/usbd_desc.h            |   75 -
 attic/NHC-Link042/User/usbd_pwr.c             |  233 -
 attic/NHC-Link042/User/usbd_usr.c             |  118 -
 attic/ch32v003evt/LICENSE                     |   12 -
 attic/ch32v003evt/ch32v003.ld                 |  159 -
 attic/ch32v003evt/ch32v00x.h                  | 2402 ------
 attic/ch32v003evt/ch32v00x_conf.h             | 1813 ----
 attic/ch32v003evt/core_riscv.h                |  632 --
 attic/ch32v003evt/embedlibc.c                 |  649 --
 attic/ch32v003evt/startup_ch32v003.c          |  193 -
 attic/ch32v003evt/system_ch32v00x.h           |   28 -
 attic/cnlohr-notes.txt                        |    7 -
 attic/dont_use_wch_printf.c                   |   84 -
 attic/external_crystal_run_from_ram_turbo.c   |   54 -
 attic/flashtests/wch_erase.c                  |   18 -
 attic/flashtests/wch_printf.c                 |   35 -
 attic/flashtests/wch_query.c                  |   39 -
 attic/flashtests/wch_reset.c                  |   15 -
 attic/flashtests/wch_write_simple.c           |  125 -
 attic/on-wire-protocol-notes.txt              |  175 -
 attic/wch_dump_flash.c                        |   54 -
 {attic => misc}/factory_bootloader.bin        |  Bin
 187 files changed, 86379 deletions(-)
 delete mode 100644 attic/EVT/Makefile
 delete mode 100644 attic/EVT/README.md
 delete mode 100644 attic/NHC-Link042/LibUSB/LibUSB.c
 delete mode 100644 attic/NHC-Link042/LibUSB/LibUSB.h
 delete mode 100644 attic/NHC-Link042/NHC-Link042.uvprojx
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Release_Notes.html
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f030.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f031.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f042.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f051.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f072.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f0xx.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f0xx_ld.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f042.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f051.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f072.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f0xx.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f0xx_ld.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f030.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f031.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f042.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f051.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f072.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f0xx.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f031.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f042.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f051.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f072.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f0xx.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f0xx_ld.s
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_common_tables.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_const_structs.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_math.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm0.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm0plus.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm3.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm4.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm4_simd.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cmFunc.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cmInstr.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_sc000.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_sc300.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_adc.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_can.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_cec.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_comp.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_crc.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_crs.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dac.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dbgmcu.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dma.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_exti.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_flash.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_gpio.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_i2c.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_iwdg.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_misc.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_pwr.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_rcc.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_rtc.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_spi.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_syscfg.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_tim.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_usart.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_wwdg.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_adc.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_can.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_cec.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_comp.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crc.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crs.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dac.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dbgmcu.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dma.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_exti.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_flash.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_gpio.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_i2c.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_iwdg.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_misc.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_pwr.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rcc.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rtc.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_spi.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_syscfg.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_tim.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_usart.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_wwdg.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_bsp.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_conf_template.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_dcd.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_dcd_int.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_regs.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_bsp_template.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_dcd.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_dcd_int.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_cmd.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_if.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_cmd.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_if.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_custom_hid_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_custom_hid_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/inc/usbd_hid_cdc_wrapper.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/src/usbd_hid_cdc_wrapper.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/inc/usbd_hid_msc_wrapper.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/src/usbd_hid_msc_wrapper.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_storage_template.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_pwr.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c
 delete mode 100644 attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c
 delete mode 100644 attic/NHC-Link042/User/NHC_WCH_SDI.c
 delete mode 100644 attic/NHC-Link042/User/NHC_WCH_SDI.h
 delete mode 100644 attic/NHC-Link042/User/config.h
 delete mode 100644 attic/NHC-Link042/User/it.c
 delete mode 100644 attic/NHC-Link042/User/main.c
 delete mode 100644 attic/NHC-Link042/User/stm32_it.c
 delete mode 100644 attic/NHC-Link042/User/stm32_it.h
 delete mode 100644 attic/NHC-Link042/User/stm32f0xx_conf.h
 delete mode 100644 attic/NHC-Link042/User/system_stm32f0xx.c
 delete mode 100644 attic/NHC-Link042/User/usb_bsp.c
 delete mode 100644 attic/NHC-Link042/User/usb_conf.h
 delete mode 100644 attic/NHC-Link042/User/usbd_conf.h
 delete mode 100644 attic/NHC-Link042/User/usbd_desc.c
 delete mode 100644 attic/NHC-Link042/User/usbd_desc.h
 delete mode 100644 attic/NHC-Link042/User/usbd_pwr.c
 delete mode 100644 attic/NHC-Link042/User/usbd_usr.c
 delete mode 100644 attic/ch32v003evt/LICENSE
 delete mode 100644 attic/ch32v003evt/ch32v003.ld
 delete mode 100644 attic/ch32v003evt/ch32v00x.h
 delete mode 100644 attic/ch32v003evt/ch32v00x_conf.h
 delete mode 100644 attic/ch32v003evt/core_riscv.h
 delete mode 100644 attic/ch32v003evt/embedlibc.c
 delete mode 100644 attic/ch32v003evt/startup_ch32v003.c
 delete mode 100644 attic/ch32v003evt/system_ch32v00x.h
 delete mode 100644 attic/cnlohr-notes.txt
 delete mode 100644 attic/dont_use_wch_printf.c
 delete mode 100644 attic/external_crystal_run_from_ram_turbo.c
 delete mode 100644 attic/flashtests/wch_erase.c
 delete mode 100644 attic/flashtests/wch_printf.c
 delete mode 100644 attic/flashtests/wch_query.c
 delete mode 100644 attic/flashtests/wch_reset.c
 delete mode 100644 attic/flashtests/wch_write_simple.c
 delete mode 100644 attic/on-wire-protocol-notes.txt
 delete mode 100644 attic/wch_dump_flash.c
 rename {attic => misc}/factory_bootloader.bin (100%)

diff --git a/attic/EVT/Makefile b/attic/EVT/Makefile
deleted file mode 100644
index a7938f4..0000000
--- a/attic/EVT/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-TARGET:=GPIO_Toggle
-
-all : flash
-
-PREFIX:=riscv64-unknown-elf
-
-GPIO_Toggle:=EXAM/GPIO/GPIO_Toggle/User
-
-CFLAGS:= \
-	-g -Os -flto -ffunction-sections \
-	-static-libgcc -lgcc \
-	-march=rv32ec \
-	-mabi=ilp32e \
-	-I/usr/include/newlib \
-	-nostdlib \
-	-I$(GPIO_Toggle) \
-	-IEXAM/SRC/Core \
-	-IEXAM/SRC/Debug \
-	-IEXAM/SRC/Debug \
-	-IEXAM/SRC/Peripheral/inc
-
-LDFLAGS:=-T EXAM/SRC/Ld/Link.ld
-
-SYSTEM_C:=EXAM/SRC/Startup/startup_ch32v00x.S \
-	EXAM/SRC/Debug/debug.c \
-	EXAM/SRC/Peripheral/src/ch32v00x_gpio.c \
-	EXAM/SRC/Peripheral/src/ch32v00x_rcc.c \
-	EXAM/SRC/Peripheral/src/ch32v00x_usart.c \
-	EXAM/SRC/Peripheral/src/ch32v00x_misc.c \
-	../ch32v003evt/embedlibc.c
-
-$(TARGET).elf : $(GPIO_Toggle)/ch32v00x_it.c $(GPIO_Toggle)/main.c $(GPIO_Toggle)/system_ch32v00x.c $(SYSTEM_C)
-	$(PREFIX)-gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
-
-$(TARGET).hex : GPIO_Toggle.elf
-	$(PREFIX)-size $^
-	$(PREFIX)-objdump -S $^ > $(TARGET).lst
-	$(PREFIX)-objdump -t $^ > $(TARGET).map
-	#$(PREFIX)-objcopy -O binary $< $@
-	$(PREFIX)-objcopy -O ihex $< $@
-
-	
-flash : $(TARGET).hex
-
-clean :
-	rm -rf $(TARGET).elf $(TARGET).bin $(TARGET).lst $(TARGET).map
-
diff --git a/attic/EVT/README.md b/attic/EVT/README.md
deleted file mode 100644
index e46758c..0000000
--- a/attic/EVT/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# General Tooling Notes For Using Official EVT With GCC but without Moun River
-
-This shows how to build the CH32V003 demo binaries without the horrifying MounRiver Studio.
-
-* Product page: https://www.wch.cn/products/CH32V003.html
-* or English: http://www.wch-ic.com/products/CH32V003.html
-* It has, for the English datasheet http://www.wch-ic.com/downloads/file/359.html "CH32V003DS0.PDF"
-* It also has the TRM http://www.wch-ic.com/downloads/CH32V003RM_PDF.html in English
-* Sadly, the EVT is CN only. https://www.wch.cn/downloads/CH32V003EVT_ZIP.html - It contains schematics for the devboard, evaluation board reference (instructions) and the rest of the dev system, minus the MounRiver Studio (MRS).
-* Software from WCH for WCH-Link: https://www.wch-ic.com/products/WCH-Link.html
-* Get https://www.wch.cn/downloads/WCH-LinkUtility_ZIP.html
-
-## Steps to run an EVT sample
-
-1. Install WCHLinkDrv_WHQL_S.exe from Wch-LinkUtil/Drv_Link
-2. Copy contents of EVT (CH32V003EVT.ZIP) "EXAM" Folder in to the EVT folder.
-3. On WSL or Debian based OSes `apt-get install build-essential libnewlib-dev gcc-riscv64-unknown-elf`
-4. cd into `EVT` on WSL or Linux
-5. Type `make`
-6. Open Wch-LinkUtil
-7. Select series "CH32V00X" from pull-down.
-8. Open the produced .hex file.
-9. Target->Program (F10)
-10. Target->Reset (F12)
-
-Profit.
-
-
diff --git a/attic/NHC-Link042/LibUSB/LibUSB.c b/attic/NHC-Link042/LibUSB/LibUSB.c
deleted file mode 100644
index 548bdbc..0000000
--- a/attic/NHC-Link042/LibUSB/LibUSB.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_hid_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the HID core functions.
-  *
-  * @verbatim
-  *      
-  *          ===================================================================      
-  *                                HID Class  Description
-  *          =================================================================== 
-  *           This module manages the HID class V1.11 following the "Device Class Definition
-  *           for Human Interface Devices (HID) Version 1.11 Jun 27, 2001".
-  *           This driver implements the following aspects of the specification:
-  *             - The Boot Interface Subclass
-  *             - The Mouse protocol
-  *             - Usage Page : Generic Desktop
-  *             - Usage : Joystick
-  *             - Collection : Application 
-  *           
-  *      
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "LibUSB.h"
-#include "NHC_WCH_SDI.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/ 
-static uint8_t  USBD_HID_Init (void  *pdev, 
-                               uint8_t cfgidx);
-
-static uint8_t  USBD_HID_DeInit (void  *pdev, 
-                                 uint8_t cfgidx);
-
-static uint8_t  USBD_HID_Setup (void  *pdev, 
-                                USB_SETUP_REQ *req);
-
-static uint8_t  *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length);
-
-static uint8_t  USBD_HID_DataIn (void  *pdev, uint8_t epnum);
-
-static uint8_t  USBD_HID_DataOut (void  *pdev, uint8_t epnum);
-
-USBD_Class_cb_TypeDef  USBD_HID_cb = 
-{
-  USBD_HID_Init,
-  USBD_HID_DeInit,
-  USBD_HID_Setup,
-  NULL, /*EP0_TxSent*/  
-  NULL, /*EP0_RxReady*/
-  USBD_HID_DataIn, /*DataIn*/
-  USBD_HID_DataOut, /*DataOut*/
-  NULL, /*SOF */    
-  USBD_HID_GetCfgDesc, 
-};
-      
-static uint32_t  USBD_HID_AltSet = 0;
-    
-static uint32_t  USBD_HID_Protocol = 0;
- 
-static uint32_t  USBD_HID_IdleState  = 0;
-
-uint8_t rxBuff[64];
-uint8_t txBuff[64];
-
-/* USB HID device Configuration Descriptor */
-const uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] =
-{
-  0x09, /* bLength: Configuration Descriptor size */
-  USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
-  USB_HID_CONFIG_DESC_SIZ,
-  /* wTotalLength: Bytes returned */
-  0x00,
-  0x01,         /*bNumInterfaces: 1 interface*/
-  0x01,         /*bConfigurationValue: Configuration value*/
-  0x00,         /*iConfiguration: Index of string descriptor describing
-  the configuration*/
-  0xC0,         /*bmAttributes: bus powered and Support Remote Wake-up */
-  0xfa,         /*MaxPower 100 mA: this current is used for detecting Vbus*/
-  
-  /************** Descriptor of Joystick Mouse interface ****************/
-  /* 09 */
-  0x09,         /*bLength: Interface Descriptor size*/
-  USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/
-  0x00,         /*bInterfaceNumber: Number of Interface*/
-  0x00,         /*bAlternateSetting: Alternate setting*/
-  0x02,         /*bNumEndpoints*/
-  0xff,         /*bInterfaceClass: HID*/
-  0xff,         /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
-  0xff,         /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
-  0,            /*iInterface: Index of string descriptor*/
-  /******************** Descriptor of Joystick Mouse HID ********************/
-  /* 18 */
-  
-  0x07,          /*bLength: Endpoint Descriptor size*/
-  USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/
-  
-  HID_IN_EP,     /*bEndpointAddress: Endpoint Address (IN)*/
-  0x02,          /*bmAttributes: Interrupt endpoint*/
-  0x40,//HID_IN_PACKET, /*wMaxPacketSize: 4 Byte max */
-  0x00,
-  0x01,          /*bInterval: Polling Interval (10 ms)*/
-  /* 34 */
-  0x07,	/* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,	/* bDescriptorType: */
-			/*	Endpoint descriptor type */
-  0x01,	/* bEndpointAddress: */
-			/*	Endpoint Address (OUT) */
-  0x02,	/* bmAttributes: Interrupt endpoint */
-  0x40,	/* wMaxPacketSize: 2 Bytes max  */
-  0x00,
-  0x01,	/* bInterval: Polling Interval (20 ms) */
-    /* 41 */
-} ;
-
-const uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] =
-{
-	0x06, 0x00, 0xFF,       // Usage Page = 0xFF00 (Vendor Defined Page 1)
-    0x09, 0x01,             // Usage (Vendor Usage 1)
-    0xA1, 0x01,             // Collection (Application)
-    0x19, 0x01,             //      Usage Minimum 
-    0x29, 0x40,             //      Usage Maximum 	//64 input usages total (0x01 to 0x40)
-    0x15, 0x01,             //      Logical Minimum (data bytes in the report may have minimum value = 0x00)
-    0x25, 0x40,      	  	//      Logical Maximum (data bytes in the report may have maximum value = 0x00FF = unsigned 255)
-    0x75, 0x08,             //      Report Size: 8-bit field size
-    0x95, 0x40,             //      Report Count: Make sixty-four 8-bit fields (the next time the parser hits an "Input", "Output", or "Feature" item)
-    0x81, 0x00,             //      Input (Data, Array, Abs): Instantiates input packet fields based on the above report size, count, logical min/max, and usage.
-    0x19, 0x01,             //      Usage Minimum 
-    0x29, 0x40,             //      Usage Maximum 	//64 output usages total (0x01 to 0x40)
-    0x91, 0x00,             //      Output (Data, Array, Abs): Instantiates output packet fields.  Uses same report size and count as "Input" fields, since nothing new/different was specified to the parser since the "Input" item.
-    0xC0
-}; 
-
-/* Private function ----------------------------------------------------------*/ 
-/**
-  * @brief  USBD_HID_Init
-  *         Initialize the HID interface
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  USBD_HID_Init (void  *pdev, 
-                               uint8_t cfgidx)
-{
-  DCD_PMA_Config(pdev , HID_IN_EP,USB_SNG_BUF,HID_IN_TX_ADDRESS);
-  DCD_PMA_Config(pdev , HID_OUT_EP,USB_SNG_BUF,HID_IN_TX_ADDRESS+0x40);
-  /* Open EP IN */
-  DCD_EP_Open(pdev,
-              HID_IN_EP,
-              /*HID_IN_PACKET*/0x40,
-              USB_EP_BULK);
-  
-  /* Open EP OUT */
-  DCD_EP_Open(pdev,
-              HID_OUT_EP,
-              /*HID_OUT_PACKET*/0x40,
-              USB_EP_BULK);
-  DCD_EP_PrepareRx(pdev, HID_OUT_EP, rxBuff, 0x40);
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_Init
-  *         DeInitialize the HID layer
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  USBD_HID_DeInit (void  *pdev, 
-                                 uint8_t cfgidx)
-{
-  /* Close HID EPs */
-  DCD_EP_Close (pdev , HID_IN_EP);
-  DCD_EP_Close (pdev , HID_OUT_EP);
-  
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_Setup
-  *         Handle the HID specific requests
-  * @param  pdev: instance
-  * @param  req: usb requests
-  * @retval status
-  */
-static uint8_t  USBD_HID_Setup (void  *pdev, 
-                                USB_SETUP_REQ *req)
-{
-  uint16_t len = 0;
-  uint8_t  *pbuf = NULL;
-  
-  switch (req->bmRequest & USB_REQ_TYPE_MASK)
-  {
-  case USB_REQ_TYPE_CLASS :  
-    switch (req->bRequest)
-    {
-    case HID_REQ_SET_PROTOCOL:
-      USBD_HID_Protocol = (uint8_t)(req->wValue);
-      break;
-      
-    case HID_REQ_GET_PROTOCOL:
-      USBD_CtlSendData (pdev, 
-                        (uint8_t *)&USBD_HID_Protocol,
-                        1);    
-      break;
-      
-    case HID_REQ_SET_IDLE:
-      USBD_HID_IdleState = (uint8_t)(req->wValue >> 8);
-      break;
-      
-    case HID_REQ_GET_IDLE:
-      USBD_CtlSendData (pdev, 
-                        (uint8_t *)&USBD_HID_IdleState,
-                        1);        
-      break;      
-      
-    default:
-      USBD_CtlError (pdev, req);
-      return USBD_FAIL; 
-    }
-    break;
-    
-  case USB_REQ_TYPE_STANDARD:
-    switch (req->bRequest)
-    {
-    case USB_REQ_GET_DESCRIPTOR: 
-      if( req->wValue >> 8 == HID_REPORT_DESC)
-      {
-        len = MIN(HID_MOUSE_REPORT_DESC_SIZE , req->wLength);
-        pbuf = (uint8_t *)HID_MOUSE_ReportDesc;
-      }
-      else if( req->wValue >> 8 == HID_DESCRIPTOR_TYPE)
-      {
-        pbuf = (uint8_t *)USBD_HID_CfgDesc + 0x12;
-        len = MIN(USB_HID_DESC_SIZ , req->wLength);
-      }
-      
-      USBD_CtlSendData (pdev, 
-                        pbuf,
-                        len);
-      
-      break;
-      
-    case USB_REQ_GET_INTERFACE :
-      USBD_CtlSendData (pdev,
-                        (uint8_t *)&USBD_HID_AltSet,
-                        1);
-      break;
-      
-    case USB_REQ_SET_INTERFACE :
-      USBD_HID_AltSet = (uint8_t)(req->wValue);
-      break;
-    }
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_GetCfgDesc 
-  *         return configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-static uint8_t  *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (USBD_HID_CfgDesc);
-  return (uint8_t *)USBD_HID_CfgDesc;
-}
-
-static uint8_t  USBD_HID_DataIn (void  *pdev,
-                              uint8_t epnum)
-{
-
-  /* Ensure that the FIFO is empty before a new transfer, this condition could 
-  be caused by  a new transfer before the end of the previous transfer */
-  //DCD_EP_Flush(pdev, HID_IN_EP);
-  return USBD_OK;
-}
-
-uint8_t u8Buff[4 * 1024];
-#define WCH_SDI_INIT 0xA0
-#define WCH_SDI_EXIT 0xA1
-#define WCH_SDI_READ 0xA2
-#define WCH_SDI_WRITE 0xA3
-#define WCH_SDI_READ_MEM 0xA4
-#define WCH_SDI_WRITE_MEM 0xA5
-#define DELAY_US_CMD	0xA6
-
-/**
-  * @brief  USBD_HID_DataOut
-  *         handle data OUT Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-
-uint32_t u32Check = 1;
-
-#define busy_on GPIO_SetBits(GPIOA, GPIO_Pin_1)
-#define busy_off GPIO_ResetBits(GPIOA, GPIO_Pin_1)
-
-uint32_t u8tou32(uint8_t *p)
-{
-    uint32_t u32Tmp;
-
-    u32Tmp = p[3];
-    u32Tmp <<= 8;
-    u32Tmp += p[2];
-    u32Tmp <<= 8;
-    u32Tmp += p[1];
-    u32Tmp <<= 8;
-    u32Tmp += p[0];
-
-    return u32Tmp;
-}
-
-#define BUSY_1() GPIO_ResetBits(GPIOC, GPIO_Pin_9)
-#define BUSY_0() GPIO_SetBits(GPIOC, GPIO_Pin_9)
-
-void u32tou8(uint32_t u32In, uint8_t *p)
-{
-    p[0] = u32In;
-    u32In >>= 8;
-    p[1] = u32In;
-    u32In >>= 8;
-    p[2] = u32In;
-    u32In >>= 8;
-    p[3] = u32In;
-}
-
-void NHC_Delay_Us(uint16_t u16Delay);
-
-static uint8_t  USBD_HID_DataOut (void  *pdev,
-                              uint8_t epnum)
-{
-	uint32_t u32Address;
-    //uint32_t u32Len;
-    uint32_t u32Tmp;
-    //uint32_t *pu32;
-    uint32_t i;
-    uint32_t n;
-    //uint8_t *p;
-	
-	busy_on;
-	
-	switch (rxBuff[0]) {
-		case WCH_SDI_INIT:
-			NHC_WchSdi_Init();
-			break;
-		case WCH_SDI_EXIT:
-			NHC_WchSdi_Exit();
-			break;
-		case WCH_SDI_READ:
-			u32Tmp = u8tou32(rxBuff + 2);
-			txBuff[0] = NHC_WchSdi_Read(rxBuff[1], &u32Tmp);
-			u32tou8(u32Tmp, txBuff + 1);
-			DCD_EP_Tx(pdev, HID_IN_EP, txBuff, 0x40);
-			break;
-		case WCH_SDI_WRITE:
-			u32Tmp = u8tou32(rxBuff + 2);
-			NHC_WchSdi_Write(rxBuff[1], u32Tmp);
-			break;
-		case WCH_SDI_READ_MEM:
-			u32Address = u8tou32(rxBuff + 1);
-			txBuff[0] = NHC_WchSdi_ReadMem(u32Address, &u32Tmp, rxBuff[5]);
-			u32tou8(u32Tmp, txBuff + 1);
-			DCD_EP_Tx(pdev, HID_IN_EP, txBuff, 0x40);
-			break;
-		case WCH_SDI_WRITE_MEM:
-			u32Address = u8tou32(rxBuff + 1);
-			u32Tmp = u8tou32(rxBuff + 5);
-			NHC_WchSdi_WriteMem(u32Address, u32Tmp, rxBuff[9]);
-			break;
-		case DELAY_US_CMD:
-			u32Tmp = u8tou32(rxBuff + 1);
-			if (u32Tmp < 50000)
-			{
-				NHC_Delay_Us(u32Tmp);
-			}
-			else
-			{
-				n = u32Tmp / 50000;
-				for (i = 0; i < n; ++i)
-				{
-					NHC_Delay_Us(50000);
-				}
-				n = u32Tmp % 50000;
-				if (n)
-				{
-					NHC_Delay_Us(n);
-				}
-			}
-			break;
-	}
-	
-	busy_off;
-	
-	DCD_EP_PrepareRx(pdev, HID_OUT_EP, rxBuff, 0x40);
-	return USBD_OK;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/LibUSB/LibUSB.h b/attic/NHC-Link042/LibUSB/LibUSB.h
deleted file mode 100644
index 5216d0a..0000000
--- a/attic/NHC-Link042/LibUSB/LibUSB.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_hid_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_hid_core.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_HID_CORE_H_
-#define __USB_HID_CORE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_req.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define USB_HID_CONFIG_DESC_SIZ       0x20
-#define USB_HID_DESC_SIZ              9
-#define HID_MOUSE_REPORT_DESC_SIZE    28
-
-#define HID_DESCRIPTOR_TYPE           0x21
-#define HID_REPORT_DESC               0x22
-
-
-#define HID_REQ_SET_PROTOCOL          0x0B
-#define HID_REQ_GET_PROTOCOL          0x03
-
-#define HID_REQ_SET_IDLE              0x0A
-#define HID_REQ_GET_IDLE              0x02
-
-#define HID_REQ_SET_REPORT            0x09
-#define HID_REQ_GET_REPORT            0x01
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  USBD_HID_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
- 
-uint8_t USBD_HID_SendReport (USB_CORE_HANDLE  *pdev, 
-                                 uint8_t *report,
-                                 uint16_t len);
-#endif  /* __USB_HID_CORE_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/NHC-Link042.uvprojx b/attic/NHC-Link042/NHC-Link042.uvprojx
deleted file mode 100644
index b35aa43..0000000
--- a/attic/NHC-Link042/NHC-Link042.uvprojx
+++ /dev/null
@@ -1,564 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
-
-  <SchemaVersion>2.1</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Targets>
-    <Target>
-      <TargetName>NHC-Link042</TargetName>
-      <ToolsetNumber>0x4</ToolsetNumber>
-      <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060960::V5.06 update 7 (build 960)::.\v6</pCCUsed>
-      <uAC6>0</uAC6>
-      <TargetOption>
-        <TargetCommonOption>
-          <Device>STM32F042F6</Device>
-          <Vendor>STMicroelectronics</Vendor>
-          <PackID>Keil.STM32F0xx_DFP.2.1.1</PackID>
-          <PackURL>https://www.keil.com/pack/</PackURL>
-          <Cpu>IROM(0x08000000,0x8000) IRAM(0x20000000,0x1800) CPUTYPE("Cortex-M0") CLOCK(12000000) ELITTLE</Cpu>
-          <FlashUtilSpec></FlashUtilSpec>
-          <StartupFile></StartupFile>
-          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F0xx_32 -FS08000000 -FL08000 -FP0($$Device:STM32F042F6$Flash\STM32F0xx_32.FLM))</FlashDriverDll>
-          <DeviceId>0</DeviceId>
-          <RegisterFile>$$Device:STM32F042F6$Device\Include\stm32f0xx.h</RegisterFile>
-          <MemoryEnv></MemoryEnv>
-          <Cmp></Cmp>
-          <Asm></Asm>
-          <Linker></Linker>
-          <OHString></OHString>
-          <InfinionOptionDll></InfinionOptionDll>
-          <SLE66CMisc></SLE66CMisc>
-          <SLE66AMisc></SLE66AMisc>
-          <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile>$$Device:STM32F042F6$SVD\STM32F042x.svd</SFDFile>
-          <bCustSvd>0</bCustSvd>
-          <UseEnv>0</UseEnv>
-          <BinPath></BinPath>
-          <IncludePath></IncludePath>
-          <LibPath></LibPath>
-          <RegisterFilePath></RegisterFilePath>
-          <DBRegisterFilePath></DBRegisterFilePath>
-          <TargetStatus>
-            <Error>0</Error>
-            <ExitCodeStop>0</ExitCodeStop>
-            <ButtonStop>0</ButtonStop>
-            <NotGenerated>0</NotGenerated>
-            <InvalidFlash>1</InvalidFlash>
-          </TargetStatus>
-          <OutputDirectory>.\obj\</OutputDirectory>
-          <OutputName>NHC-Link042</OutputName>
-          <CreateExecutable>1</CreateExecutable>
-          <CreateLib>0</CreateLib>
-          <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
-          <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\lst\</ListingPath>
-          <HexFormatSelection>1</HexFormatSelection>
-          <Merge32K>0</Merge32K>
-          <CreateBatchFile>0</CreateBatchFile>
-          <BeforeCompile>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopU1X>0</nStopU1X>
-            <nStopU2X>0</nStopU2X>
-          </BeforeCompile>
-          <BeforeMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopB1X>0</nStopB1X>
-            <nStopB2X>0</nStopB2X>
-          </BeforeMake>
-          <AfterMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopA1X>0</nStopA1X>
-            <nStopA2X>0</nStopA2X>
-          </AfterMake>
-          <SelectedForBatchBuild>0</SelectedForBatchBuild>
-          <SVCSIdString></SVCSIdString>
-        </TargetCommonOption>
-        <CommonProperty>
-          <UseCPPCompiler>0</UseCPPCompiler>
-          <RVCTCodeConst>0</RVCTCodeConst>
-          <RVCTZI>0</RVCTZI>
-          <RVCTOtherData>0</RVCTOtherData>
-          <ModuleSelection>0</ModuleSelection>
-          <IncludeInBuild>1</IncludeInBuild>
-          <AlwaysBuild>0</AlwaysBuild>
-          <GenerateAssemblyFile>0</GenerateAssemblyFile>
-          <AssembleAssemblyFile>0</AssembleAssemblyFile>
-          <PublicsOnly>0</PublicsOnly>
-          <StopOnExitCode>3</StopOnExitCode>
-          <CustomArgument></CustomArgument>
-          <IncludeLibraryModules></IncludeLibraryModules>
-          <ComprImg>1</ComprImg>
-        </CommonProperty>
-        <DllOption>
-          <SimDllName>SARMCM3.DLL</SimDllName>
-          <SimDllArguments> </SimDllArguments>
-          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
-          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
-          <TargetDllName>SARMCM3.DLL</TargetDllName>
-          <TargetDllArguments> </TargetDllArguments>
-          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
-          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
-        </DllOption>
-        <DebugOption>
-          <OPTHX>
-            <HexSelection>1</HexSelection>
-            <HexRangeLowAddress>0</HexRangeLowAddress>
-            <HexRangeHighAddress>0</HexRangeHighAddress>
-            <HexOffset>0</HexOffset>
-            <Oh166RecLen>16</Oh166RecLen>
-          </OPTHX>
-        </DebugOption>
-        <Utilities>
-          <Flash1>
-            <UseTargetDll>1</UseTargetDll>
-            <UseExternalTool>0</UseExternalTool>
-            <RunIndependent>0</RunIndependent>
-            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
-            <Capability>1</Capability>
-            <DriverSelection>4096</DriverSelection>
-          </Flash1>
-          <bUseTDR>1</bUseTDR>
-          <Flash2>BIN\UL2CM3.DLL</Flash2>
-          <Flash3></Flash3>
-          <Flash4></Flash4>
-          <pFcarmOut></pFcarmOut>
-          <pFcarmGrp></pFcarmGrp>
-          <pFcArmRoot></pFcArmRoot>
-          <FcArmLst>0</FcArmLst>
-        </Utilities>
-        <TargetArmAds>
-          <ArmAdsMisc>
-            <GenerateListings>0</GenerateListings>
-            <asHll>1</asHll>
-            <asAsm>1</asAsm>
-            <asMacX>1</asMacX>
-            <asSyms>1</asSyms>
-            <asFals>1</asFals>
-            <asDbgD>1</asDbgD>
-            <asForm>1</asForm>
-            <ldLst>0</ldLst>
-            <ldmm>1</ldmm>
-            <ldXref>1</ldXref>
-            <BigEnd>0</BigEnd>
-            <AdsALst>1</AdsALst>
-            <AdsACrf>1</AdsACrf>
-            <AdsANop>0</AdsANop>
-            <AdsANot>0</AdsANot>
-            <AdsLLst>1</AdsLLst>
-            <AdsLmap>1</AdsLmap>
-            <AdsLcgr>1</AdsLcgr>
-            <AdsLsym>1</AdsLsym>
-            <AdsLszi>1</AdsLszi>
-            <AdsLtoi>1</AdsLtoi>
-            <AdsLsun>1</AdsLsun>
-            <AdsLven>1</AdsLven>
-            <AdsLsxf>1</AdsLsxf>
-            <RvctClst>0</RvctClst>
-            <GenPPlst>0</GenPPlst>
-            <AdsCpuType>"Cortex-M0"</AdsCpuType>
-            <RvctDeviceName></RvctDeviceName>
-            <mOS>0</mOS>
-            <uocRom>0</uocRom>
-            <uocRam>0</uocRam>
-            <hadIROM>1</hadIROM>
-            <hadIRAM>1</hadIRAM>
-            <hadXRAM>0</hadXRAM>
-            <uocXRam>0</uocXRam>
-            <RvdsVP>0</RvdsVP>
-            <RvdsMve>0</RvdsMve>
-            <RvdsCdeCp>0</RvdsCdeCp>
-            <nBranchProt>0</nBranchProt>
-            <hadIRAM2>0</hadIRAM2>
-            <hadIROM2>0</hadIROM2>
-            <StupSel>8</StupSel>
-            <useUlib>1</useUlib>
-            <EndSel>0</EndSel>
-            <uLtcg>0</uLtcg>
-            <nSecure>0</nSecure>
-            <RoSelD>3</RoSelD>
-            <RwSelD>3</RwSelD>
-            <CodeSel>0</CodeSel>
-            <OptFeed>0</OptFeed>
-            <NoZi1>0</NoZi1>
-            <NoZi2>0</NoZi2>
-            <NoZi3>0</NoZi3>
-            <NoZi4>0</NoZi4>
-            <NoZi5>0</NoZi5>
-            <Ro1Chk>0</Ro1Chk>
-            <Ro2Chk>0</Ro2Chk>
-            <Ro3Chk>0</Ro3Chk>
-            <Ir1Chk>1</Ir1Chk>
-            <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
-            <Ra2Chk>0</Ra2Chk>
-            <Ra3Chk>0</Ra3Chk>
-            <Im1Chk>1</Im1Chk>
-            <Im2Chk>0</Im2Chk>
-            <OnChipMemories>
-              <Ocm1>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm1>
-              <Ocm2>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm2>
-              <Ocm3>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm3>
-              <Ocm4>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm4>
-              <Ocm5>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm5>
-              <Ocm6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm6>
-              <IRAM>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x1800</Size>
-              </IRAM>
-              <IROM>
-                <Type>1</Type>
-                <StartAddress>0x8000000</StartAddress>
-                <Size>0x8000</Size>
-              </IROM>
-              <XRAM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </XRAM>
-              <OCR_RVCT1>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT1>
-              <OCR_RVCT2>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT2>
-              <OCR_RVCT3>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT3>
-              <OCR_RVCT4>
-                <Type>1</Type>
-                <StartAddress>0x8000000</StartAddress>
-                <Size>0x4000</Size>
-              </OCR_RVCT4>
-              <OCR_RVCT5>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT5>
-              <OCR_RVCT6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT6>
-              <OCR_RVCT7>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT7>
-              <OCR_RVCT8>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT8>
-              <OCR_RVCT9>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x2000</Size>
-              </OCR_RVCT9>
-              <OCR_RVCT10>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT10>
-            </OnChipMemories>
-            <RvctStartVector></RvctStartVector>
-          </ArmAdsMisc>
-          <Cads>
-            <interw>1</interw>
-            <Optim>4</Optim>
-            <oTime>0</oTime>
-            <SplitLS>0</SplitLS>
-            <OneElfS>0</OneElfS>
-            <Strict>0</Strict>
-            <EnumInt>0</EnumInt>
-            <PlainCh>0</PlainCh>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <wLevel>0</wLevel>
-            <uThumb>0</uThumb>
-            <uSurpInc>0</uSurpInc>
-            <uC99>0</uC99>
-            <uGnu>0</uGnu>
-            <useXO>0</useXO>
-            <v6Lang>1</v6Lang>
-            <v6LangP>1</v6LangP>
-            <vShortEn>1</vShortEn>
-            <vShortWch>1</vShortWch>
-            <v6Lto>0</v6Lto>
-            <v6WtE>0</v6WtE>
-            <v6Rtti>0</v6Rtti>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define>USE_STDPERIPH_DRIVER,STM32F042, INTERNAL_PULLUP, USB_CLOCK_SOURCE_CRS</Define>
-              <Undefine></Undefine>
-              <IncludePath>.\User;.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\CMSIS\Device\ST\STM32F0xx\Include;.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32F0xx_StdPeriph_Driver\inc;.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32_USB_Device_Driver\inc;.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32_USB_Device_Library\Core\inc;.\LibUSB;.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\CMSIS\Include</IncludePath>
-            </VariousControls>
-          </Cads>
-          <Aads>
-            <interw>1</interw>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <thumb>0</thumb>
-            <SplitLS>0</SplitLS>
-            <SwStkChk>0</SwStkChk>
-            <NoWarn>0</NoWarn>
-            <uSurpInc>0</uSurpInc>
-            <useXO>0</useXO>
-            <ClangAsOpt>1</ClangAsOpt>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define></Define>
-              <Undefine></Undefine>
-              <IncludePath></IncludePath>
-            </VariousControls>
-          </Aads>
-          <LDads>
-            <umfTarg>1</umfTarg>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <noStLib>0</noStLib>
-            <RepFail>1</RepFail>
-            <useFile>0</useFile>
-            <TextAddressRange>0x08000000</TextAddressRange>
-            <DataAddressRange>0x20000000</DataAddressRange>
-            <pXoBase></pXoBase>
-            <ScatterFile></ScatterFile>
-            <IncludeLibs></IncludeLibs>
-            <IncludeLibsPath></IncludeLibsPath>
-            <Misc></Misc>
-            <LinkerInputFile></LinkerInputFile>
-            <DisabledWarnings></DisabledWarnings>
-          </LDads>
-        </TargetArmAds>
-      </TargetOption>
-      <Groups>
-        <Group>
-          <GroupName>User</GroupName>
-          <Files>
-            <File>
-              <FileName>it.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\it.c</FilePath>
-            </File>
-            <File>
-              <FileName>main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\main.c</FilePath>
-            </File>
-            <File>
-              <FileName>usb_bsp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\usb_bsp.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_pwr.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\usbd_pwr.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_desc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\usbd_desc.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_usr.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\usbd_usr.c</FilePath>
-            </File>
-            <File>
-              <FileName>stm32_it.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\stm32_it.c</FilePath>
-            </File>
-            <File>
-              <FileName>NHC_WCH_SDI.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\NHC_WCH_SDI.c</FilePath>
-            </File>
-            <File>
-              <FileName>NHC_WCH_SDI.h</FileName>
-              <FileType>5</FileType>
-              <FilePath>.\User\NHC_WCH_SDI.h</FilePath>
-            </File>
-            <File>
-              <FileName>config.h</FileName>
-              <FileType>5</FileType>
-              <FilePath>.\User\config.h</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_desc.h</FileName>
-              <FileType>5</FileType>
-              <FilePath>.\User\usbd_desc.h</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>USB_Class</GroupName>
-          <Files>
-            <File>
-              <FileName>LibUSB.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\LibUSB\LibUSB.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>CMSIS</GroupName>
-          <Files>
-            <File>
-              <FileName>system_stm32f0xx.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\User\system_stm32f0xx.c</FilePath>
-            </File>
-            <File>
-              <FileName>startup_stm32f042.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\CMSIS\Device\ST\STM32F0xx\Source\Templates\arm\startup_stm32f042.s</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>LIB</GroupName>
-          <Files>
-            <File>
-              <FileName>stm32f0xx_crs.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32F0xx_StdPeriph_Driver\src\stm32f0xx_crs.c</FilePath>
-            </File>
-            <File>
-              <FileName>stm32f0xx_exti.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32F0xx_StdPeriph_Driver\src\stm32f0xx_exti.c</FilePath>
-            </File>
-            <File>
-              <FileName>stm32f0xx_gpio.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32F0xx_StdPeriph_Driver\src\stm32f0xx_gpio.c</FilePath>
-            </File>
-            <File>
-              <FileName>stm32f0xx_rcc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32F0xx_StdPeriph_Driver\src\stm32f0xx_rcc.c</FilePath>
-            </File>
-            <File>
-              <FileName>stm32f0xx_syscfg.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32F0xx_StdPeriph_Driver\src\stm32f0xx_syscfg.c</FilePath>
-            </File>
-            <File>
-              <FileName>stm32f0xx_tim.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32F0xx_StdPeriph_Driver\src\stm32f0xx_tim.c</FilePath>
-            </File>
-            <File>
-              <FileName>stm32f0xx_misc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32F0xx_StdPeriph_Driver\src\stm32f0xx_misc.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>USB_Lib</GroupName>
-          <Files>
-            <File>
-              <FileName>usb_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32_USB_Device_Driver\src\usb_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>usb_dcd.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32_USB_Device_Driver\src\usb_dcd.c</FilePath>
-            </File>
-            <File>
-              <FileName>usb_dcd_int.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32_USB_Device_Driver\src\usb_dcd_int.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32_USB_Device_Library\Core\src\usbd_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_ioreq.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32_USB_Device_Library\Core\src\usbd_ioreq.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_req.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\STM32F0x2_USB-FS-Device_Lib V1.0.0\Libraries\STM32_USB_Device_Library\Core\src\usbd_req.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-      </Groups>
-    </Target>
-  </Targets>
-
-  <RTE>
-    <apis/>
-    <components/>
-    <files/>
-  </RTE>
-
-  <LayerInfo>
-    <Layers>
-      <Layer>
-        <LayName>Template</LayName>
-        <LayTarg>0</LayTarg>
-        <LayPrjMark>1</LayPrjMark>
-      </Layer>
-    </Layers>
-  </LayerInfo>
-
-</Project>
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h
deleted file mode 100644
index 53c8c01..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h	
+++ /dev/null
@@ -1,5111 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx.h
-  * @author  MCD Application Team
-  * @version V1.3.1
-  * @date    17-January-2014
-  * @brief   CMSIS Cortex-M0 Device Peripheral Access Layer Header File. 
-  *          This file contains all the peripheral register's definitions, bits 
-  *          definitions and memory mapping for STM32F0xx devices.  
-  *          
-  *          The file is the unique include file that the application programmer
-  *          is using in the C source code, usually in main.c. This file contains:
-  *           - Configuration section that allows to select:
-  *              - The device used in the target application
-  *              - To use or not the peripheral’s drivers in application code(i.e. 
-  *                code will be based on direct access to peripheral’s registers 
-  *                rather than drivers API), this option is controlled by 
-  *                "#define USE_STDPERIPH_DRIVER"
-  *              - To change few application-specific parameters such as the HSE 
-  *                crystal frequency
-  *           - Data structures and the address mapping for all peripherals
-  *           - Peripheral's registers declarations and bits definition
-  *           - Macros to access peripheral’s registers hardware
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/** @addtogroup CMSIS
-  * @{
-  */
-
-/** @addtogroup stm32f0xx
-  * @{
-  */
-    
-#ifndef __STM32F0XX_H
-#define __STM32F0XX_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif 
-  
-/** @addtogroup Library_configuration_section
-  * @{
-  */
-  
-/* Uncomment the line below according to the target STM32F0 device used in your 
-   application 
-  */
-
-#if !defined (STM32F030) && !defined (STM32F031) && !defined (STM32F051) && !defined (STM32F072) && !defined (STM32F042)
-  /* #define STM32F030 */   
-  /* #define STM32F031 */   
-  /* #define STM32F051 */   
-  #define STM32F072   
-  /* #define STM32F042 */   
-#endif
-
-/*  Tip: To avoid modifying this file each time you need to switch between these
-        devices, you can define the device in your toolchain compiler preprocessor.
-  */
-
-/* Old STM32F0XX definition, maintained for legacy purpose */
-#if defined(STM32F0XX) || defined(STM32F0XX_MD) 
-  #define STM32F051
-#endif /* STM32F0XX */
-
-/* Old STM32F0XX_LD definition, maintained for legacy purpose */
-#ifdef STM32F0XX_LD
-  #define     STM32F031
-#endif /* STM32F0XX_LD */
-
-/* Old STM32F0XX_HD definition, maintained for legacy purpose */
-#ifdef STM32F0XX_HD
-   #define   STM32F072
-#endif /* STM32F0XX_HD */
-
-/* Old STM32F030X6/X8 definition, maintained for legacy purpose */
-#if defined (STM32F030X8) || defined (STM32F030X6)
-  #define    STM32F030
-#endif /* STM32F030X8 or  STM32F030X6 */
-
-
-#if !defined (STM32F030) && !defined (STM32F031) && !defined (STM32F051) && !defined (STM32F072) && !defined (STM32F042)
- #error "Please select first the target STM32F0xx device used in your application (in stm32f0xx.h file)"
-#endif
-
-#if !defined  USE_STDPERIPH_DRIVER
-/**
- * @brief Comment the line below if you will not use the peripherals drivers.
-   In this case, these drivers will not be included and the application code will 
-   be based on direct access to peripherals registers 
-   */
-  /*#define USE_STDPERIPH_DRIVER*/
-#endif /* USE_STDPERIPH_DRIVER */
-
-/**
- * @brief In the following line adjust the value of External High Speed oscillator (HSE)
-   used in your application 
-   
-   Tip: To avoid modifying this file each time you need to use different HSE, you
-        can define the HSE value in your toolchain compiler preprocessor.
-  */
-#if !defined  (HSE_VALUE)     
-#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz*/
-#endif /* HSE_VALUE */
-
-/**
- * @brief In the following line adjust the External High Speed oscillator (HSE) Startup 
-   Timeout value 
-   */
-#if !defined  (HSE_STARTUP_TIMEOUT)
-#define HSE_STARTUP_TIMEOUT   ((uint16_t)0x5000) /*!< Time out for HSE start up */
-#endif /* HSE_STARTUP_TIMEOUT */
-
-/**
- * @brief In the following line adjust the Internal High Speed oscillator (HSI) Startup 
-   Timeout value 
-   */
-#if !defined  (HSI_STARTUP_TIMEOUT)
-#define HSI_STARTUP_TIMEOUT   ((uint16_t)0x5000) /*!< Time out for HSI start up */
-#endif /* HSI_STARTUP_TIMEOUT */
-
-#if !defined  (HSI_VALUE) 
-#define HSI_VALUE  ((uint32_t)8000000) /*!< Value of the Internal High Speed oscillator in Hz.
-                                             The real value may vary depending on the variations
-                                             in voltage and temperature.  */
-#endif /* HSI_VALUE */
-
-#if !defined  (HSI14_VALUE) 
-#define HSI14_VALUE ((uint32_t)14000000) /*!< Value of the Internal High Speed oscillator for ADC in Hz.
-                                             The real value may vary depending on the variations
-                                             in voltage and temperature.  */
-#endif /* HSI14_VALUE */
-
-#if !defined  (HSI48_VALUE) 
-#define HSI48_VALUE ((uint32_t)48000000) /*!< Value of the Internal High Speed oscillator for USB in Hz.
-                                             The real value may vary depending on the variations
-                                             in voltage and temperature.  */
-#endif /* HSI48_VALUE */
-
-#if !defined  (LSI_VALUE) 
-#define LSI_VALUE  ((uint32_t)40000)    /*!< Value of the Internal Low Speed oscillator in Hz
-                                             The real value may vary depending on the variations
-                                             in voltage and temperature.  */
-#endif /* LSI_VALUE */
-
-#if !defined  (LSE_VALUE) 
-#define LSE_VALUE  ((uint32_t)32768)    /*!< Value of the External Low Speed oscillator in Hz */
-#endif /* LSE_VALUE */
-
-/**
- * @brief STM32F0xx Standard Peripheral Library version number V1.3.1
-   */
-#define __STM32F0XX_STDPERIPH_VERSION_MAIN   (0x01) /*!< [31:24] main version */
-#define __STM32F0XX_STDPERIPH_VERSION_SUB1   (0x03) /*!< [23:16] sub1 version */
-#define __STM32F0XX_STDPERIPH_VERSION_SUB2   (0x01) /*!< [15:8]  sub2 version */
-#define __STM32F0XX_STDPERIPH_VERSION_RC     (0x00) /*!< [7:0]  release candidate */ 
-#define __STM32F0XX_STDPERIPH_VERSION        ((__STM32F0XX_STDPERIPH_VERSION_MAIN << 24)\
-                                             |(__STM32F0XX_STDPERIPH_VERSION_SUB1 << 16)\
-                                             |(__STM32F0XX_STDPERIPH_VERSION_SUB2 << 8)\
-                                             |(__STM32F0XX_STDPERIPH_VERSION_RC))
-
-/**
-  * @}
-  */
-
-/** @addtogroup Configuration_section_for_CMSIS
-  * @{
-  */
-
-/**
- * @brief STM32F0xx Interrupt Number Definition, according to the selected device 
- *        in @ref Library_configuration_section 
- */
-#define __CM0_REV                 0 /*!< Core Revision r0p0                            */
-#define __MPU_PRESENT             0 /*!< STM32F0xx do not provide MPU                  */
-#define __NVIC_PRIO_BITS          2 /*!< STM32F0xx uses 2 Bits for the Priority Levels */
-#define __Vendor_SysTickConfig    0 /*!< Set to 1 if different SysTick Config is used  */
-
-/*!< Interrupt Number Definition */
-typedef enum IRQn
-{
-/******  Cortex-M0 Processor Exceptions Numbers ******************************************************/
-  NonMaskableInt_IRQn         = -14,    /*!< 2 Non Maskable Interrupt                                */
-  HardFault_IRQn              = -13,    /*!< 3 Cortex-M0 Hard Fault Interrupt                        */
-  SVC_IRQn                    = -5,     /*!< 11 Cortex-M0 SV Call Interrupt                          */
-  PendSV_IRQn                 = -2,     /*!< 14 Cortex-M0 Pend SV Interrupt                          */
-  SysTick_IRQn                = -1,     /*!< 15 Cortex-M0 System Tick Interrupt                      */
-
-#if defined (STM32F051)
-/******  STM32F051  specific Interrupt Numbers *************************************/
-  WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt                               */
-  PVD_IRQn                    = 1,      /*!< PVD through EXTI Line detect Interrupt                  */
-  RTC_IRQn                    = 2,      /*!< RTC through EXTI Line Interrupt                         */
-  FLASH_IRQn                  = 3,      /*!< FLASH Interrupt                                         */
-  RCC_IRQn                    = 4,      /*!< RCC Interrupt                                           */
-  EXTI0_1_IRQn                = 5,      /*!< EXTI Line 0 and 1 Interrupts                            */
-  EXTI2_3_IRQn                = 6,      /*!< EXTI Line 2 and 3 Interrupts                            */
-  EXTI4_15_IRQn               = 7,      /*!< EXTI Line 4 to 15 Interrupts                            */
-  TS_IRQn                     = 8,      /*!< Touch sense controller Interrupt                        */
-  DMA1_Channel1_IRQn          = 9,      /*!< DMA1 Channel 1 Interrupt                                */
-  DMA1_Channel2_3_IRQn        = 10,     /*!< DMA1 Channel 2 and Channel 3 Interrupts                 */
-  DMA1_Channel4_5_IRQn        = 11,     /*!< DMA1 Channel 4 and Channel 5 Interrupts                 */
-  ADC1_COMP_IRQn              = 12,     /*!< ADC1, COMP1 and COMP2 Interrupts                        */
-  TIM1_BRK_UP_TRG_COM_IRQn    = 13,     /*!< TIM1 Break, Update, Trigger and Commutation Interrupts  */
-  TIM1_CC_IRQn                = 14,     /*!< TIM1 Capture Compare Interrupt                          */
-  TIM2_IRQn                   = 15,     /*!< TIM2 Interrupt                                          */
-  TIM3_IRQn                   = 16,     /*!< TIM3 Interrupt                                          */
-  TIM6_DAC_IRQn               = 17,     /*!< TIM6 and DAC Interrupts                                 */
-  TIM14_IRQn                  = 19,     /*!< TIM14 Interrupt                                         */
-  TIM15_IRQn                  = 20,     /*!< TIM15 Interrupt                                         */
-  TIM16_IRQn                  = 21,     /*!< TIM16 Interrupt                                         */
-  TIM17_IRQn                  = 22,     /*!< TIM17 Interrupt                                         */
-  I2C1_IRQn                   = 23,     /*!< I2C1 Interrupt                                          */
-  I2C2_IRQn                   = 24,     /*!< I2C2 Interrupt                                          */
-  SPI1_IRQn                   = 25,     /*!< SPI1 Interrupt                                          */
-  SPI2_IRQn                   = 26,     /*!< SPI2 Interrupt                                          */
-  USART1_IRQn                 = 27,     /*!< USART1 Interrupt                                        */
-  USART2_IRQn                 = 28,     /*!< USART2 Interrupt                                        */
-  CEC_IRQn                    = 30      /*!< CEC Interrupt                                           */
-#elif defined (STM32F031)
-/******  STM32F031 specific Interrupt Numbers *************************************/
-  WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt                               */
-  PVD_IRQn                    = 1,      /*!< PVD through EXTI Line detect Interrupt                  */
-  RTC_IRQn                    = 2,      /*!< RTC through EXTI Line Interrupt                         */
-  FLASH_IRQn                  = 3,      /*!< FLASH Interrupt                                         */
-  RCC_IRQn                    = 4,      /*!< RCC Interrupt                                           */
-  EXTI0_1_IRQn                = 5,      /*!< EXTI Line 0 and 1 Interrupts                            */
-  EXTI2_3_IRQn                = 6,      /*!< EXTI Line 2 and 3 Interrupts                            */
-  EXTI4_15_IRQn               = 7,      /*!< EXTI Line 4 to 15 Interrupts                            */
-  DMA1_Channel1_IRQn          = 9,      /*!< DMA1 Channel 1 Interrupt                                */
-  DMA1_Channel2_3_IRQn        = 10,     /*!< DMA1 Channel 2 and Channel 3 Interrupts                 */
-  DMA1_Channel4_5_IRQn        = 11,     /*!< DMA1 Channel 4 and Channel 5 Interrupts                 */
-  ADC1_IRQn                   = 12,     /*!< ADC1 Interrupt                                          */
-  TIM1_BRK_UP_TRG_COM_IRQn    = 13,     /*!< TIM1 Break, Update, Trigger and Commutation Interrupts  */
-  TIM1_CC_IRQn                = 14,     /*!< TIM1 Capture Compare Interrupt                          */
-  TIM2_IRQn                   = 15,     /*!< TIM2 Interrupt                                          */
-  TIM3_IRQn                   = 16,     /*!< TIM3 Interrupt                                          */
-  TIM14_IRQn                  = 19,     /*!< TIM14 Interrupt                                         */
-  TIM16_IRQn                  = 21,     /*!< TIM16 Interrupt                                         */
-  TIM17_IRQn                  = 22,     /*!< TIM17 Interrupt                                         */
-  I2C1_IRQn                   = 23,     /*!< I2C1 Interrupt                                          */
-  SPI1_IRQn                   = 25,     /*!< SPI1 Interrupt                                          */
-  USART1_IRQn                 = 27      /*!< USART1 Interrupt                                        */
-#elif defined (STM32F030)
-/******  STM32F030 specific Interrupt Numbers *************************************/
-  WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt                               */
-  RTC_IRQn                    = 2,      /*!< RTC through EXTI Line Interrupt                         */
-  FLASH_IRQn                  = 3,      /*!< FLASH Interrupt                                         */
-  RCC_IRQn                    = 4,      /*!< RCC Interrupt                                           */
-  EXTI0_1_IRQn                = 5,      /*!< EXTI Line 0 and 1 Interrupts                            */
-  EXTI2_3_IRQn                = 6,      /*!< EXTI Line 2 and 3 Interrupts                            */
-  EXTI4_15_IRQn               = 7,      /*!< EXTI Line 4 to 15 Interrupts                            */
-  DMA1_Channel1_IRQn          = 9,      /*!< DMA1 Channel 1 Interrupt                                */
-  DMA1_Channel2_3_IRQn        = 10,     /*!< DMA1 Channel 2 and Channel 3 Interrupts                 */
-  DMA1_Channel4_5_IRQn        = 11,     /*!< DMA1 Channel 4 and Channel 5 Interrupts                 */
-  ADC1_IRQn                   = 12,     /*!< ADC1 Interrupt                                          */
-  TIM1_BRK_UP_TRG_COM_IRQn    = 13,     /*!< TIM1 Break, Update, Trigger and Commutation Interrupts  */
-  TIM1_CC_IRQn                = 14,     /*!< TIM1 Capture Compare Interrupt                          */
-  TIM3_IRQn                   = 16,     /*!< TIM3 Interrupt                                          */
-  TIM14_IRQn                  = 19,     /*!< TIM14 Interrupt                                         */
-  TIM15_IRQn                  = 20,     /*!< TIM15 Interrupt                                         */
-  TIM16_IRQn                  = 21,     /*!< TIM16 Interrupt                                         */
-  TIM17_IRQn                  = 22,     /*!< TIM17 Interrupt                                         */
-  I2C1_IRQn                   = 23,     /*!< I2C1 Interrupt                                          */
-  I2C2_IRQn                   = 24,     /*!< I2C2 Interrupt                                          */
-  SPI1_IRQn                   = 25,     /*!< SPI1 Interrupt                                          */
-  SPI2_IRQn                   = 26,     /*!< SPI2 Interrupt                                          */
-  USART1_IRQn                 = 27,     /*!< USART1 Interrupt                                        */
-  USART2_IRQn                 = 28      /*!< USART2 Interrupt                                        */
-#elif defined (STM32F072)
-  WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt                                     */
-  PVD_VDDIO2_IRQn             = 1,      /*!< PVD and VDDIO2 supply comparator through EXTI Line detect Interrupt */
-  RTC_IRQn                    = 2,      /*!< RTC through EXTI Line Interrupt                               */
-  FLASH_IRQn                  = 3,      /*!< FLASH Interrupt                                               */
-  RCC_CRS_IRQn                = 4,      /*!< RCC and CRS Interrupts                                        */
-  EXTI0_1_IRQn                = 5,      /*!< EXTI Line 0 and 1 Interrupts                                  */
-  EXTI2_3_IRQn                = 6,      /*!< EXTI Line 2 and 3 Interrupts                                  */
-  EXTI4_15_IRQn               = 7,      /*!< EXTI Line 4 to 15 Interrupts                                  */
-  TSC_IRQn                    = 8,      /*!< TSC Interrupt                                                 */
-  DMA1_Channel1_IRQn          = 9,      /*!< DMA1 Channel 1 Interrupt                                      */
-  DMA1_Channel2_3_IRQn        = 10,     /*!< DMA1 Channel 2 and Channel 3 Interrupts                       */
-  DMA1_Channel4_5_6_7_IRQn    = 11,     /*!< DMA1 Channel 4, Channel 5, Channel 6 and Channel 7 Interrupts */
-  ADC1_COMP_IRQn              = 12,     /*!< ADC1, COMP1 and COMP2 Interrupts                              */
-  TIM1_BRK_UP_TRG_COM_IRQn    = 13,     /*!< TIM1 Break, Update, Trigger and Commutation Interrupts        */
-  TIM1_CC_IRQn                = 14,     /*!< TIM1 Capture Compare Interrupt                                */
-  TIM2_IRQn                   = 15,     /*!< TIM2 Interrupt                                                */
-  TIM3_IRQn                   = 16,     /*!< TIM3 Interrupt                                                */
-  TIM6_DAC_IRQn               = 17,     /*!< TIM6 and DAC Interrupts                                       */
-  TIM7_IRQn                   = 18,     /*!< TIM7 Interrupts                                               */
-  TIM14_IRQn                  = 19,     /*!< TIM14 Interrupt                                               */
-  TIM15_IRQn                  = 20,     /*!< TIM15 Interrupt                                               */
-  TIM16_IRQn                  = 21,     /*!< TIM16 Interrupt                                               */
-  TIM17_IRQn                  = 22,     /*!< TIM17 Interrupt                                               */
-  I2C1_IRQn                   = 23,     /*!< I2C1 Interrupt                                                */
-  I2C2_IRQn                   = 24,     /*!< I2C2 Interrupt                                                */
-  SPI1_IRQn                   = 25,     /*!< SPI1 Interrupt                                                */
-  SPI2_IRQn                   = 26,     /*!< SPI2 Interrupt                                                */
-  USART1_IRQn                 = 27,     /*!< USART1 Interrupt                                              */
-  USART2_IRQn                 = 28,     /*!< USART2 Interrupt                                              */
-  USART3_4_IRQn               = 29,     /*!< USART3 and USART4 Interrupts                                  */
-  CEC_CAN_IRQn                = 30,     /*!< CEC and CAN Interrupts                                        */
-  USB_IRQn                    = 31      /*!< USB Low Priority global Interrupt                             */
-#elif defined (STM32F042)
-  WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt                                     */
-  PVD_VDDIO2_IRQn             = 1,      /*!< PVD and VDDIO2 supply comparator through EXTI Line detect Interrupt */
-  RTC_IRQn                    = 2,      /*!< RTC through EXTI Line Interrupt                               */
-  FLASH_IRQn                  = 3,      /*!< FLASH Interrupt                                               */
-  RCC_CRS_IRQn                = 4,      /*!< RCC and CRS Interrupts                                        */
-  EXTI0_1_IRQn                = 5,      /*!< EXTI Line 0 and 1 Interrupts                                  */
-  EXTI2_3_IRQn                = 6,      /*!< EXTI Line 2 and 3 Interrupts                                  */
-  EXTI4_15_IRQn               = 7,      /*!< EXTI Line 4 to 15 Interrupts                                  */
-  TSC_IRQn                    = 8,      /*!< TSC Interrupt                                                 */
-  DMA1_Channel1_IRQn          = 9,      /*!< DMA1 Channel 1 Interrupt                                      */
-  DMA1_Channel2_3_IRQn        = 10,     /*!< DMA1 Channel 2 and Channel 3 Interrupts                       */
-  DMA1_Channel4_5_IRQn        = 11,     /*!< DMA1 Channel 4, Channel 5 Interrupts                          */
-  ADC1_IRQn                   = 12,     /*!< ADC1 Interrupts                                               */
-  TIM1_BRK_UP_TRG_COM_IRQn    = 13,     /*!< TIM1 Break, Update, Trigger and Commutation Interrupts        */
-  TIM1_CC_IRQn                = 14,     /*!< TIM1 Capture Compare Interrupt                                */
-  TIM2_IRQn                   = 15,     /*!< TIM2 Interrupt                                                */
-  TIM3_IRQn                   = 16,     /*!< TIM3 Interrupt                                                */
-  TIM14_IRQn                  = 19,     /*!< TIM14 Interrupt                                               */
-  TIM16_IRQn                  = 21,     /*!< TIM16 Interrupt                                               */
-  TIM17_IRQn                  = 22,     /*!< TIM17 Interrupt                                               */
-  I2C1_IRQn                   = 23,     /*!< I2C1 Interrupt                                                */
-  SPI1_IRQn                   = 25,     /*!< SPI1 Interrupt                                                */
-  SPI2_IRQn                   = 26,     /*!< SPI2 Interrupt                                                */
-  USART1_IRQn                 = 27,     /*!< USART1 Interrupt                                              */
-  USART2_IRQn                 = 28,     /*!< USART2 Interrupt                                              */
-  CEC_CAN_IRQn                = 30,     /*!< CEC and CAN Interrupts                                        */
-  USB_IRQn                    = 31      /*!< USB Low Priority global Interrupt                             */
-#endif /* STM32F051 */ 
-} IRQn_Type;
-
-/**
-  * @}
-  */
-
-#include "core_cm0.h"
-#include "system_stm32f0xx.h"
-#include <stdint.h>
-
-/** @addtogroup Exported_types
-  * @{
-  */  
-
-typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
-
-typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
-#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
-
-typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
-
-/** @addtogroup Peripheral_registers_structures
-  * @{
-  */   
-
-/** 
-  * @brief Analog to Digital Converter  
-  */
-
-typedef struct
-{
-  __IO uint32_t ISR;          /*!< ADC Interrupt and Status register,                          Address offset:0x00 */
-  __IO uint32_t IER;          /*!< ADC Interrupt Enable register,                              Address offset:0x04 */
-  __IO uint32_t CR;           /*!< ADC Control register,                                       Address offset:0x08 */
-  __IO uint32_t CFGR1;        /*!< ADC Configuration register 1,                               Address offset:0x0C */
-  __IO uint32_t CFGR2;        /*!< ADC Configuration register 2,                               Address offset:0x10 */
-  __IO uint32_t SMPR;         /*!< ADC Sampling time register,                                 Address offset:0x14 */
-  uint32_t   RESERVED1;       /*!< Reserved,                                                                  0x18 */
-  uint32_t   RESERVED2;       /*!< Reserved,                                                                  0x1C */
-  __IO uint32_t TR;           /*!< ADC watchdog threshold register,                            Address offset:0x20 */
-  uint32_t   RESERVED3;       /*!< Reserved,                                                                  0x24 */
-  __IO uint32_t CHSELR;       /*!< ADC channel selection register,                             Address offset:0x28 */
-  uint32_t   RESERVED4[5];    /*!< Reserved,                                                                  0x2C */
-   __IO uint32_t DR;          /*!< ADC data register,                                          Address offset:0x40 */
-} ADC_TypeDef;
-
-typedef struct
-{
-  __IO uint32_t CCR;
-} ADC_Common_TypeDef;
-
-
-/** 
-  * @brief Controller Area Network TxMailBox 
-  */
-typedef struct
-{
-  __IO uint32_t TIR;  /*!< CAN TX mailbox identifier register */
-  __IO uint32_t TDTR; /*!< CAN mailbox data length control and time stamp register */
-  __IO uint32_t TDLR; /*!< CAN mailbox data low register */
-  __IO uint32_t TDHR; /*!< CAN mailbox data high register */
-} CAN_TxMailBox_TypeDef;
-
-/** 
-  * @brief Controller Area Network FIFOMailBox 
-  */
-typedef struct
-{
-  __IO uint32_t RIR;  /*!< CAN receive FIFO mailbox identifier register */
-  __IO uint32_t RDTR; /*!< CAN receive FIFO mailbox data length control and time stamp register */
-  __IO uint32_t RDLR; /*!< CAN receive FIFO mailbox data low register */
-  __IO uint32_t RDHR; /*!< CAN receive FIFO mailbox data high register */
-} CAN_FIFOMailBox_TypeDef;
-  
-/** 
-  * @brief Controller Area Network FilterRegister 
-  */
-typedef struct
-{
-  __IO uint32_t FR1; /*!< CAN Filter bank register 1 */
-  __IO uint32_t FR2; /*!< CAN Filter bank register 1 */
-} CAN_FilterRegister_TypeDef;
-
-/** 
-  * @brief Controller Area Network 
-  */
-typedef struct
-{
-  __IO uint32_t              MCR;                 /*!< CAN master control register,         Address offset: 0x00          */
-  __IO uint32_t              MSR;                 /*!< CAN master status register,          Address offset: 0x04          */
-  __IO uint32_t              TSR;                 /*!< CAN transmit status register,        Address offset: 0x08          */
-  __IO uint32_t              RF0R;                /*!< CAN receive FIFO 0 register,         Address offset: 0x0C          */
-  __IO uint32_t              RF1R;                /*!< CAN receive FIFO 1 register,         Address offset: 0x10          */
-  __IO uint32_t              IER;                 /*!< CAN interrupt enable register,       Address offset: 0x14          */
-  __IO uint32_t              ESR;                 /*!< CAN error status register,           Address offset: 0x18          */
-  __IO uint32_t              BTR;                 /*!< CAN bit timing register,             Address offset: 0x1C          */
-  uint32_t                   RESERVED0[88];       /*!< Reserved, 0x020 - 0x17F                                            */
-  CAN_TxMailBox_TypeDef      sTxMailBox[3];       /*!< CAN Tx MailBox,                      Address offset: 0x180 - 0x1AC */
-  CAN_FIFOMailBox_TypeDef    sFIFOMailBox[2];     /*!< CAN FIFO MailBox,                    Address offset: 0x1B0 - 0x1CC */
-  uint32_t                   RESERVED1[12];       /*!< Reserved, 0x1D0 - 0x1FF                                            */
-  __IO uint32_t              FMR;                 /*!< CAN filter master register,          Address offset: 0x200         */
-  __IO uint32_t              FM1R;                /*!< CAN filter mode register,            Address offset: 0x204         */
-  uint32_t                   RESERVED2;           /*!< Reserved, 0x208                                                    */
-  __IO uint32_t              FS1R;                /*!< CAN filter scale register,           Address offset: 0x20C         */
-  uint32_t                   RESERVED3;           /*!< Reserved, 0x210                                                    */
-  __IO uint32_t              FFA1R;               /*!< CAN filter FIFO assignment register, Address offset: 0x214         */
-  uint32_t                   RESERVED4;           /*!< Reserved, 0x218                                                    */
-  __IO uint32_t              FA1R;                /*!< CAN filter activation register,      Address offset: 0x21C         */
-  uint32_t                   RESERVED5[8];        /*!< Reserved, 0x220-0x23F                                              */
-  CAN_FilterRegister_TypeDef sFilterRegister[28]; /*!< CAN Filter Register,                 Address offset: 0x240-0x31C   */
-} CAN_TypeDef;
-
-/** 
-  * @brief HDMI-CEC 
-  */
-
-typedef struct
-{
-  __IO uint32_t CR;           /*!< CEC control register,                                       Address offset:0x00 */
-  __IO uint32_t CFGR;         /*!< CEC configuration register,                                 Address offset:0x04 */
-  __IO uint32_t TXDR;         /*!< CEC Tx data register ,                                      Address offset:0x08 */
-  __IO uint32_t RXDR;         /*!< CEC Rx Data Register,                                       Address offset:0x0C */
-  __IO uint32_t ISR;          /*!< CEC Interrupt and Status Register,                          Address offset:0x10 */
-  __IO uint32_t IER;          /*!< CEC interrupt enable register,                              Address offset:0x14 */
-}CEC_TypeDef;
-
-/**
-  * @brief Comparator 
-  */
-
-typedef struct
-{
-  __IO uint32_t CSR;     /*!< COMP comparator control and status register, Address offset: 0x1C */
-} COMP_TypeDef;
-
-
-/** 
-  * @brief CRC calculation unit 
-  */
-
-typedef struct
-{
-  __IO uint32_t DR;          /*!< CRC Data register,                           Address offset: 0x00 */
-  __IO uint8_t  IDR;         /*!< CRC Independent data register,               Address offset: 0x04 */
-  uint8_t       RESERVED0;   /*!< Reserved,                                                    0x05 */
-  uint16_t      RESERVED1;   /*!< Reserved,                                                    0x06 */
-  __IO uint32_t CR;          /*!< CRC Control register,                        Address offset: 0x08 */
-  uint32_t      RESERVED2;   /*!< Reserved,                                                    0x0C */
-  __IO uint32_t INIT;        /*!< Initial CRC value register,                  Address offset: 0x10 */
-  __IO uint32_t POL;         /*!< CRC polynomial register,                     Address offset: 0x14 */
-} CRC_TypeDef;
-
-/**
-  * @brief Clock Recovery System 
-  */
-typedef struct 
-{
-__IO uint32_t CR;     /*!< CRS ccontrol register,              Address offset: 0x00 */
-__IO uint32_t CFGR;   /*!< CRS configuration register,         Address offset: 0x04 */
-__IO uint32_t ISR;    /*!< CRS interrupt and status register,  Address offset: 0x08 */
-__IO uint32_t ICR;    /*!< CRS interrupt flag clear register,  Address offset: 0x0C */
-} CRS_TypeDef;
-
-/** 
-  * @brief Digital to Analog Converter
-  */
-
-typedef struct
-{
-  __IO uint32_t CR;       /*!< DAC control register,                                    Address offset: 0x00 */
-  __IO uint32_t SWTRIGR;  /*!< DAC software trigger register,                           Address offset: 0x04 */
-  __IO uint32_t DHR12R1;  /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
-  __IO uint32_t DHR12L1;  /*!< DAC channel1 12-bit left aligned data holding register,  Address offset: 0x0C */
-  __IO uint32_t DHR8R1;   /*!< DAC channel1 8-bit right aligned data holding register,  Address offset: 0x10 */
-  __IO uint32_t DHR12R2;  /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
-  __IO uint32_t DHR12L2;  /*!< DAC channel2 12-bit left aligned data holding register,  Address offset: 0x18 */
-  __IO uint32_t DHR8R2;   /*!< DAC channel2 8-bit right-aligned data holding register,  Address offset: 0x1C */
-  __IO uint32_t DHR12RD;  /*!< Dual DAC 12-bit right-aligned data holding register,     Address offset: 0x20 */
-  __IO uint32_t DHR12LD;  /*!< DUAL DAC 12-bit left aligned data holding register,      Address offset: 0x24 */
-  __IO uint32_t DHR8RD;   /*!< DUAL DAC 8-bit right aligned data holding register,      Address offset: 0x28 */
-  __IO uint32_t DOR1;     /*!< DAC channel1 data output register,                       Address offset: 0x2C */
-  __IO uint32_t DOR2;     /*!< DAC channel2 data output register,                       Address offset: 0x30 */
-  __IO uint32_t SR;       /*!< DAC status register,                                     Address offset: 0x34 */
-} DAC_TypeDef;
-
-/** 
-  * @brief Debug MCU
-  */
-
-typedef struct
-{
-  __IO uint32_t IDCODE;       /*!< MCU device ID code,                          Address offset: 0x00 */
-  __IO uint32_t CR;           /*!< Debug MCU configuration register,            Address offset: 0x04 */
-  __IO uint32_t APB1FZ;       /*!< Debug MCU APB1 freeze register,              Address offset: 0x08 */
-  __IO uint32_t APB2FZ;       /*!< Debug MCU APB2 freeze register,              Address offset: 0x0C */
-}DBGMCU_TypeDef;
-
-/** 
-  * @brief DMA Controller
-  */
-
-typedef struct
-{
-  __IO uint32_t CCR;          /*!< DMA channel x configuration register                                           */
-  __IO uint32_t CNDTR;        /*!< DMA channel x number of data register                                          */
-  __IO uint32_t CPAR;         /*!< DMA channel x peripheral address register                                      */
-  __IO uint32_t CMAR;         /*!< DMA channel x memory address register                                          */
-} DMA_Channel_TypeDef;
-
-typedef struct
-{
-  __IO uint32_t ISR;          /*!< DMA interrupt status register,                            Address offset: 0x00 */
-  __IO uint32_t IFCR;         /*!< DMA interrupt flag clear register,                        Address offset: 0x04 */
-} DMA_TypeDef;
-
-/** 
-  * @brief External Interrupt/Event Controller
-  */
-
-typedef struct
-{
-  __IO uint32_t IMR;          /*!<EXTI Interrupt mask register,                             Address offset: 0x00 */
-  __IO uint32_t EMR;          /*!<EXTI Event mask register,                                 Address offset: 0x04 */
-  __IO uint32_t RTSR;         /*!<EXTI Rising trigger selection register ,                  Address offset: 0x08 */
-  __IO uint32_t FTSR;         /*!<EXTI Falling trigger selection register,                  Address offset: 0x0C */
-  __IO uint32_t SWIER;        /*!<EXTI Software interrupt event register,                   Address offset: 0x10 */
-  __IO uint32_t PR;           /*!<EXTI Pending register,                                    Address offset: 0x14 */
-}EXTI_TypeDef;
-
-/** 
-  * @brief FLASH Registers
-  */
-typedef struct
-{
-  __IO uint32_t ACR;          /*!<FLASH access control register,                 Address offset: 0x00 */
-  __IO uint32_t KEYR;         /*!<FLASH key register,                            Address offset: 0x04 */
-  __IO uint32_t OPTKEYR;      /*!<FLASH OPT key register,                        Address offset: 0x08 */
-  __IO uint32_t SR;           /*!<FLASH status register,                         Address offset: 0x0C */
-  __IO uint32_t CR;           /*!<FLASH control register,                        Address offset: 0x10 */
-  __IO uint32_t AR;           /*!<FLASH address register,                        Address offset: 0x14 */
-  __IO uint32_t RESERVED;     /*!< Reserved,                                                     0x18 */
-  __IO uint32_t OBR;          /*!<FLASH option bytes register,                   Address offset: 0x1C */
-  __IO uint32_t WRPR;         /*!<FLASH option bytes register,                   Address offset: 0x20 */
-} FLASH_TypeDef;
-
-
-/** 
-  * @brief Option Bytes Registers
-  */
-typedef struct
-{
-  __IO uint16_t RDP;          /*!< FLASH option byte Read protection,             Address offset: 0x00 */
-  __IO uint16_t USER;         /*!< FLASH option byte user options,                Address offset: 0x02 */
-  __IO uint16_t DATA0;        /*!< User data byte 0 (stored in FLASH_OBR[23:16]), Address offset: 0x04 */
-  __IO uint16_t DATA1;        /*!< User data byte 1 (stored in FLASH_OBR[31:24]), Address offset: 0x06 */
-  __IO uint16_t WRP0;         /*!< FLASH option byte write protection 0,          Address offset: 0x08 */
-  __IO uint16_t WRP1;         /*!< FLASH option byte write protection 1,          Address offset: 0x0A */
-  __IO uint16_t WRP2;         /*!< FLASH option byte write protection 2,          Address offset: 0x0C */
-  __IO uint16_t WRP3;         /*!< FLASH option byte write protection 3,          Address offset: 0x0E */
-} OB_TypeDef;
-  
-
-/** 
-  * @brief General Purpose IO
-  */
-
-typedef struct
-{
-  __IO uint32_t MODER;        /*!< GPIO port mode register,                                  Address offset: 0x00 */
-  __IO uint16_t OTYPER;       /*!< GPIO port output type register,                           Address offset: 0x04 */
-  uint16_t RESERVED0;         /*!< Reserved,                                                                 0x06 */
-  __IO uint32_t OSPEEDR;      /*!< GPIO port output speed register,                          Address offset: 0x08 */
-  __IO uint32_t PUPDR;        /*!< GPIO port pull-up/pull-down register,                     Address offset: 0x0C */
-  __IO uint16_t IDR;          /*!< GPIO port input data register,                            Address offset: 0x10 */
-  uint16_t RESERVED1;         /*!< Reserved,                                                                 0x12 */
-  __IO uint16_t ODR;          /*!< GPIO port output data register,                           Address offset: 0x14 */
-  uint16_t RESERVED2;         /*!< Reserved,                                                                 0x16 */
-  __IO uint32_t BSRR;         /*!< GPIO port bit set/reset registerBSRR,                     Address offset: 0x18 */
-  __IO uint32_t LCKR;         /*!< GPIO port configuration lock register,                    Address offset: 0x1C */
-  __IO uint32_t AFR[2];       /*!< GPIO alternate function low register,                Address offset: 0x20-0x24 */
-  __IO uint16_t BRR;          /*!< GPIO bit reset register,                                  Address offset: 0x28 */
-  uint16_t RESERVED3;         /*!< Reserved,                                                                 0x2A */
-}GPIO_TypeDef;
-
-/** 
-  * @brief SysTem Configuration
-  */
-
-typedef struct
-{
-  __IO uint32_t CFGR1;       /*!< SYSCFG configuration register 1,                           Address offset: 0x00 */
-       uint32_t RESERVED;    /*!< Reserved,                                                                  0x04 */
-  __IO uint32_t EXTICR[4];   /*!< SYSCFG external interrupt configuration register,     Address offset: 0x14-0x08 */
-  __IO uint32_t CFGR2;       /*!< SYSCFG configuration register 2,                           Address offset: 0x18 */
-} SYSCFG_TypeDef;
-
-/** 
-  * @brief Inter-integrated Circuit Interface
-  */
-
-typedef struct
-{
-  __IO uint32_t CR1;      /*!< I2C Control register 1,            Address offset: 0x00 */
-  __IO uint32_t CR2;      /*!< I2C Control register 2,            Address offset: 0x04 */
-  __IO uint32_t OAR1;     /*!< I2C Own address 1 register,        Address offset: 0x08 */
-  __IO uint32_t OAR2;     /*!< I2C Own address 2 register,        Address offset: 0x0C */
-  __IO uint32_t TIMINGR;  /*!< I2C Timing register,               Address offset: 0x10 */
-  __IO uint32_t TIMEOUTR; /*!< I2C Timeout register,              Address offset: 0x14 */
-  __IO uint32_t ISR;      /*!< I2C Interrupt and status register, Address offset: 0x18 */
-  __IO uint32_t ICR;      /*!< I2C Interrupt clear register,      Address offset: 0x1C */
-  __IO uint32_t PECR;     /*!< I2C PEC register,                  Address offset: 0x20 */
-  __IO uint32_t RXDR;     /*!< I2C Receive data register,         Address offset: 0x24 */
-  __IO uint32_t TXDR;     /*!< I2C Transmit data register,        Address offset: 0x28 */
-}I2C_TypeDef;
-
-
-/** 
-  * @brief Independent WATCHDOG
-  */
-typedef struct
-{
-  __IO uint32_t KR;   /*!< IWDG Key register,       Address offset: 0x00 */
-  __IO uint32_t PR;   /*!< IWDG Prescaler register, Address offset: 0x04 */
-  __IO uint32_t RLR;  /*!< IWDG Reload register,    Address offset: 0x08 */
-  __IO uint32_t SR;   /*!< IWDG Status register,    Address offset: 0x0C */
-  __IO uint32_t WINR; /*!< IWDG Window register,    Address offset: 0x10 */
-} IWDG_TypeDef;
-
-/** 
-  * @brief Power Control
-  */
-
-typedef struct
-{
-  __IO uint32_t CR;   /*!< PWR power control register,        Address offset: 0x00 */
-  __IO uint32_t CSR;  /*!< PWR power control/status register, Address offset: 0x04 */
-} PWR_TypeDef;
-
-
-/** 
-  * @brief Reset and Clock Control
-  */
-typedef struct
-{
-  __IO uint32_t CR;         /*!< RCC clock control register,                                  Address offset: 0x00 */
-  __IO uint32_t CFGR;       /*!< RCC clock configuration register,                            Address offset: 0x04 */
-  __IO uint32_t CIR;        /*!< RCC clock interrupt register,                                Address offset: 0x08 */
-  __IO uint32_t APB2RSTR;   /*!< RCC APB2 peripheral reset register,                          Address offset: 0x0C */
-  __IO uint32_t APB1RSTR;   /*!< RCC APB1 peripheral reset register,                          Address offset: 0x10 */
-  __IO uint32_t AHBENR;     /*!< RCC AHB peripheral clock register,                           Address offset: 0x14 */
-  __IO uint32_t APB2ENR;    /*!< RCC APB2 peripheral clock enable register,                   Address offset: 0x18 */
-  __IO uint32_t APB1ENR;    /*!< RCC APB1 peripheral clock enable register,                   Address offset: 0x1C */
-  __IO uint32_t BDCR;       /*!< RCC Backup domain control register,                          Address offset: 0x20 */ 
-  __IO uint32_t CSR;        /*!< RCC clock control & status register,                         Address offset: 0x24 */
-  __IO uint32_t AHBRSTR;    /*!< RCC AHB peripheral reset register,                           Address offset: 0x28 */
-  __IO uint32_t CFGR2;      /*!< RCC clock configuration register 2,                          Address offset: 0x2C */
-  __IO uint32_t CFGR3;      /*!< RCC clock configuration register 3,                          Address offset: 0x30 */
-  __IO uint32_t CR2;        /*!< RCC clock control register 2,                                Address offset: 0x34 */
-} RCC_TypeDef;
-
-/** 
-  * @brief Real-Time Clock
-  */
-
-typedef struct
-{                           
-  __IO uint32_t TR;         /*!< RTC time register,                                        Address offset: 0x00 */
-  __IO uint32_t DR;         /*!< RTC date register,                                        Address offset: 0x04 */
-  __IO uint32_t CR;         /*!< RTC control register,                                     Address offset: 0x08 */
-  __IO uint32_t ISR;        /*!< RTC initialization and status register,                   Address offset: 0x0C */
-  __IO uint32_t PRER;       /*!< RTC prescaler register,                                   Address offset: 0x10 */
-  __IO uint32_t WUTR;       /*!< RTC wakeup timer register,(only for STM32F072 devices)    Address offset: 0x14 */
-       uint32_t RESERVED1;  /*!< Reserved,                                                 Address offset: 0x18 */
-  __IO uint32_t ALRMAR;     /*!< RTC alarm A register,                                     Address offset: 0x1C */
-       uint32_t RESERVED2;  /*!< Reserved,                                                 Address offset: 0x20 */
-  __IO uint32_t WPR;        /*!< RTC write protection register,                            Address offset: 0x24 */
-  __IO uint32_t SSR;        /*!< RTC sub second register,                                  Address offset: 0x28 */
-  __IO uint32_t SHIFTR;     /*!< RTC shift control register,                               Address offset: 0x2C */
-  __IO uint32_t TSTR;       /*!< RTC time stamp time register,                             Address offset: 0x30 */
-  __IO uint32_t TSDR;       /*!< RTC time stamp date register,                             Address offset: 0x34 */
-  __IO uint32_t TSSSR;      /*!< RTC time-stamp sub second register,                       Address offset: 0x38 */
-  __IO uint32_t CALR;       /*!< RTC calibration register,                                 Address offset: 0x3C */
-  __IO uint32_t TAFCR;      /*!< RTC tamper and alternate function configuration register, Address offset: 0x40 */
-  __IO uint32_t ALRMASSR;   /*!< RTC alarm A sub second register,                          Address offset: 0x44 */
-       uint32_t RESERVED3;  /*!< Reserved,                                                 Address offset: 0x48 */
-       uint32_t RESERVED4;  /*!< Reserved,                                                 Address offset: 0x4C */
-  __IO uint32_t BKP0R;      /*!< RTC backup register 0,                                    Address offset: 0x50 */
-  __IO uint32_t BKP1R;      /*!< RTC backup register 1,                                    Address offset: 0x54 */
-  __IO uint32_t BKP2R;      /*!< RTC backup register 2,                                    Address offset: 0x58 */
-  __IO uint32_t BKP3R;      /*!< RTC backup register 3,                                    Address offset: 0x5C */
-  __IO uint32_t BKP4R;      /*!< RTC backup register 4,                                    Address offset: 0x60 */
-} RTC_TypeDef;
-
-/* Old register name definition maintained for legacy purpose */
-#define CAL   CALR
-
-/** 
-  * @brief Serial Peripheral Interface
-  */
-  
-typedef struct
-{
-  __IO uint16_t CR1;      /*!< SPI Control register 1 (not used in I2S mode),       Address offset: 0x00 */
-  uint16_t  RESERVED0;    /*!< Reserved, 0x02                                                            */
-  __IO uint16_t CR2;      /*!< SPI Control register 2,                              Address offset: 0x04 */
-  uint16_t  RESERVED1;    /*!< Reserved, 0x06                                                            */
-  __IO uint16_t SR;       /*!< SPI Status register,                                 Address offset: 0x08 */
-  uint16_t  RESERVED2;    /*!< Reserved, 0x0A                                                            */
-  __IO uint16_t DR;       /*!< SPI data register,                                   Address offset: 0x0C */
-  uint16_t  RESERVED3;    /*!< Reserved, 0x0E                                                            */
-  __IO uint16_t CRCPR;    /*!< SPI CRC polynomial register (not used in I2S mode),  Address offset: 0x10 */
-  uint16_t  RESERVED4;    /*!< Reserved, 0x12                                                            */
-  __IO uint16_t RXCRCR;   /*!< SPI Rx CRC register (not used in I2S mode),          Address offset: 0x14 */
-  uint16_t  RESERVED5;    /*!< Reserved, 0x16                                                            */
-  __IO uint16_t TXCRCR;   /*!< SPI Tx CRC register (not used in I2S mode),          Address offset: 0x18 */
-  uint16_t  RESERVED6;    /*!< Reserved, 0x1A                                                            */ 
-  __IO uint16_t I2SCFGR;  /*!< SPI_I2S configuration register,                      Address offset: 0x1C */
-  uint16_t  RESERVED7;    /*!< Reserved, 0x1E                                                            */
-  __IO uint16_t I2SPR;    /*!< SPI_I2S prescaler register,                          Address offset: 0x20 */
-  uint16_t  RESERVED8;    /*!< Reserved, 0x22                                                            */    
-} SPI_TypeDef;
-
-
-/** 
-  * @brief TIM
-  */
-typedef struct
-{
-  __IO uint16_t CR1;             /*!< TIM control register 1,                      Address offset: 0x00 */
-  uint16_t      RESERVED0;       /*!< Reserved,                                                    0x02 */
-  __IO uint16_t CR2;             /*!< TIM control register 2,                      Address offset: 0x04 */
-  uint16_t      RESERVED1;       /*!< Reserved,                                                    0x06 */
-  __IO uint16_t SMCR;            /*!< TIM slave Mode Control register,             Address offset: 0x08 */
-  uint16_t      RESERVED2;       /*!< Reserved,                                                    0x0A */
-  __IO uint16_t DIER;            /*!< TIM DMA/interrupt enable register,           Address offset: 0x0C */
-  uint16_t      RESERVED3;       /*!< Reserved,                                                    0x0E */
-  __IO uint16_t SR;              /*!< TIM status register,                         Address offset: 0x10 */
-  uint16_t      RESERVED4;       /*!< Reserved,                                                    0x12 */
-  __IO uint16_t EGR;             /*!< TIM event generation register,               Address offset: 0x14 */
-  uint16_t      RESERVED5;       /*!< Reserved,                                                    0x16 */
-  __IO uint16_t CCMR1;           /*!< TIM  capture/compare mode register 1,        Address offset: 0x18 */
-  uint16_t      RESERVED6;       /*!< Reserved,                                                    0x1A */
-  __IO uint16_t CCMR2;           /*!< TIM  capture/compare mode register 2,        Address offset: 0x1C */
-  uint16_t      RESERVED7;       /*!< Reserved,                                                    0x1E */
-  __IO uint16_t CCER;            /*!< TIM capture/compare enable register,         Address offset: 0x20 */
-  uint16_t      RESERVED8;       /*!< Reserved,                                                    0x22 */
-  __IO uint32_t CNT;             /*!< TIM counter register,                        Address offset: 0x24 */
-  __IO uint16_t PSC;             /*!< TIM prescaler register,                      Address offset: 0x28 */
-  uint16_t      RESERVED10;      /*!< Reserved,                                                    0x2A */
-  __IO uint32_t ARR;             /*!< TIM auto-reload register,                    Address offset: 0x2C */
-  __IO uint16_t RCR;             /*!< TIM  repetition counter register,            Address offset: 0x30 */
-  uint16_t      RESERVED12;      /*!< Reserved,                                                    0x32 */
-  __IO uint32_t CCR1;            /*!< TIM capture/compare register 1,              Address offset: 0x34 */
-  __IO uint32_t CCR2;            /*!< TIM capture/compare register 2,              Address offset: 0x38 */
-  __IO uint32_t CCR3;            /*!< TIM capture/compare register 3,              Address offset: 0x3C */
-  __IO uint32_t CCR4;            /*!< TIM capture/compare register 4,              Address offset: 0x40 */
-  __IO uint16_t BDTR;            /*!< TIM break and dead-time register,            Address offset: 0x44 */
-  uint16_t      RESERVED17;      /*!< Reserved,                                                    0x26 */
-  __IO uint16_t DCR;             /*!< TIM DMA control register,                    Address offset: 0x48 */
-  uint16_t      RESERVED18;      /*!< Reserved,                                                    0x4A */
-  __IO uint16_t DMAR;            /*!< TIM DMA address for full transfer register,  Address offset: 0x4C */
-  uint16_t      RESERVED19;      /*!< Reserved,                                                    0x4E */
-  __IO uint16_t OR;              /*!< TIM option register,                         Address offset: 0x50 */
-  uint16_t      RESERVED20;      /*!< Reserved,                                                    0x52 */
-} TIM_TypeDef;
-
-/** 
-  * @brief Touch Sensing Controller (TSC)
-  */
-typedef struct
-{
-  __IO uint32_t CR;        /*!< TSC control register,                                     Address offset: 0x00 */
-  __IO uint32_t IER;       /*!< TSC interrupt enable register,                            Address offset: 0x04 */
-  __IO uint32_t ICR;       /*!< TSC interrupt clear register,                             Address offset: 0x08 */ 
-  __IO uint32_t ISR;       /*!< TSC interrupt status register,                            Address offset: 0x0C */
-  __IO uint32_t IOHCR;     /*!< TSC I/O hysteresis control register,                      Address offset: 0x10 */
-  __IO uint32_t RESERVED1; /*!< Reserved,                                                 Address offset: 0x14 */
-  __IO uint32_t IOASCR;    /*!< TSC I/O analog switch control register,                   Address offset: 0x18 */
-  __IO uint32_t RESERVED2; /*!< Reserved,                                                 Address offset: 0x1C */
-  __IO uint32_t IOSCR;     /*!< TSC I/O sampling control register,                        Address offset: 0x20 */
-  __IO uint32_t RESERVED3; /*!< Reserved,                                                 Address offset: 0x24 */
-  __IO uint32_t IOCCR;     /*!< TSC I/O channel control register,                         Address offset: 0x28 */
-  __IO uint32_t RESERVED4; /*!< Reserved,                                                 Address offset: 0x2C */
-  __IO uint32_t IOGCSR;    /*!< TSC I/O group control status register,                    Address offset: 0x30 */
-  __IO uint32_t IOGXCR[8]; /*!< TSC I/O group x counter register,                         Address offset: 0x34-50 */
-} TSC_TypeDef;
-
-/** 
-  * @brief Universal Synchronous Asynchronous Receiver Transmitter
-  */
-  
-typedef struct
-{
-  __IO uint32_t CR1;    /*!< USART Control register 1,                 Address offset: 0x00 */ 
-  __IO uint32_t CR2;    /*!< USART Control register 2,                 Address offset: 0x04 */ 
-  __IO uint32_t CR3;    /*!< USART Control register 3,                 Address offset: 0x08 */
-  __IO uint16_t BRR;    /*!< USART Baud rate register,                 Address offset: 0x0C */
-  uint16_t  RESERVED1;  /*!< Reserved, 0x0E                                                 */  
-  __IO uint16_t GTPR;   /*!< USART Guard time and prescaler register,  Address offset: 0x10 */
-  uint16_t  RESERVED2;  /*!< Reserved, 0x12                                                 */
-  __IO uint32_t RTOR;   /*!< USART Receiver Time Out register,         Address offset: 0x14 */  
-  __IO uint16_t RQR;    /*!< USART Request register,                   Address offset: 0x18 */
-  uint16_t  RESERVED3;  /*!< Reserved, 0x1A                                                 */
-  __IO uint32_t ISR;    /*!< USART Interrupt and status register,      Address offset: 0x1C */
-  __IO uint32_t ICR;    /*!< USART Interrupt flag Clear register,      Address offset: 0x20 */
-  __IO uint16_t RDR;    /*!< USART Receive Data register,              Address offset: 0x24 */
-  uint16_t  RESERVED4;  /*!< Reserved, 0x26                                                 */
-  __IO uint16_t TDR;    /*!< USART Transmit Data register,             Address offset: 0x28 */
-  uint16_t  RESERVED5;  /*!< Reserved, 0x2A                                                 */
-} USART_TypeDef;
-
-
-/** 
-  * @brief Window WATCHDOG
-  */
-typedef struct
-{
-  __IO uint32_t CR;   /*!< WWDG Control register,       Address offset: 0x00 */
-  __IO uint32_t CFR;  /*!< WWDG Configuration register, Address offset: 0x04 */
-  __IO uint32_t SR;   /*!< WWDG Status register,        Address offset: 0x08 */
-} WWDG_TypeDef;
-
-
-/**
-  * @}
-  */
-  
-/** @addtogroup Peripheral_memory_map
-  * @{
-  */
-
-#define FLASH_BASE            ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */
-#define SRAM_BASE             ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */
-#define PERIPH_BASE           ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */
-
-/*!< Peripheral memory map */
-#define APBPERIPH_BASE        PERIPH_BASE
-#define AHBPERIPH_BASE        (PERIPH_BASE + 0x00020000)
-#define AHB2PERIPH_BASE       (PERIPH_BASE + 0x08000000)
-
-#define TIM2_BASE             (APBPERIPH_BASE + 0x00000000)
-#define TIM3_BASE             (APBPERIPH_BASE + 0x00000400)
-#define TIM6_BASE             (APBPERIPH_BASE + 0x00001000)
-#define TIM7_BASE             (APBPERIPH_BASE + 0x00001400)
-#define TIM14_BASE            (APBPERIPH_BASE + 0x00002000)
-#define RTC_BASE              (APBPERIPH_BASE + 0x00002800)
-#define WWDG_BASE             (APBPERIPH_BASE + 0x00002C00)
-#define IWDG_BASE             (APBPERIPH_BASE + 0x00003000)
-#define SPI2_BASE             (APBPERIPH_BASE + 0x00003800)
-#define USART2_BASE           (APBPERIPH_BASE + 0x00004400)
-#define USART3_BASE           (APBPERIPH_BASE + 0x00004800)
-#define USART4_BASE           (APBPERIPH_BASE + 0x00004C00)
-#define I2C1_BASE             (APBPERIPH_BASE + 0x00005400)
-#define I2C2_BASE             (APBPERIPH_BASE + 0x00005800)
-#define CAN_BASE              (APBPERIPH_BASE + 0x00006400)
-#define CRS_BASE              (APBPERIPH_BASE + 0x00006C00)
-#define PWR_BASE              (APBPERIPH_BASE + 0x00007000)
-#define DAC_BASE              (APBPERIPH_BASE + 0x00007400)
-#define CEC_BASE              (APBPERIPH_BASE + 0x00007800)
-
-#define SYSCFG_BASE           (APBPERIPH_BASE + 0x00010000)
-#define COMP_BASE             (APBPERIPH_BASE + 0x0001001C)
-#define EXTI_BASE             (APBPERIPH_BASE + 0x00010400)
-#define ADC1_BASE             (APBPERIPH_BASE + 0x00012400)
-#define ADC_BASE              (APBPERIPH_BASE + 0x00012708)
-#define TIM1_BASE             (APBPERIPH_BASE + 0x00012C00)
-#define SPI1_BASE             (APBPERIPH_BASE + 0x00013000)
-#define USART1_BASE           (APBPERIPH_BASE + 0x00013800)
-#define TIM15_BASE            (APBPERIPH_BASE + 0x00014000)
-#define TIM16_BASE            (APBPERIPH_BASE + 0x00014400)
-#define TIM17_BASE            (APBPERIPH_BASE + 0x00014800)
-#define DBGMCU_BASE           (APBPERIPH_BASE + 0x00015800)
-
-#define DMA1_BASE             (AHBPERIPH_BASE + 0x00000000)
-#define DMA1_Channel1_BASE    (DMA1_BASE + 0x00000008)
-#define DMA1_Channel2_BASE    (DMA1_BASE + 0x0000001C)
-#define DMA1_Channel3_BASE    (DMA1_BASE + 0x00000030)
-#define DMA1_Channel4_BASE    (DMA1_BASE + 0x00000044)
-#define DMA1_Channel5_BASE    (DMA1_BASE + 0x00000058)
-#define DMA1_Channel6_BASE    (DMA1_BASE + 0x0000006C)
-#define DMA1_Channel7_BASE    (DMA1_BASE + 0x00000080)
-
-#define RCC_BASE              (AHBPERIPH_BASE + 0x00001000)
-#define FLASH_R_BASE          (AHBPERIPH_BASE + 0x00002000) /*!< FLASH registers base address */
-#define OB_BASE               ((uint32_t)0x1FFFF800)        /*!< FLASH Option Bytes base address */
-#define CRC_BASE              (AHBPERIPH_BASE + 0x00003000)
-#define TSC_BASE              (AHBPERIPH_BASE + 0x00004000)
-
-#define GPIOA_BASE            (AHB2PERIPH_BASE + 0x00000000)
-#define GPIOB_BASE            (AHB2PERIPH_BASE + 0x00000400)
-#define GPIOC_BASE            (AHB2PERIPH_BASE + 0x00000800)
-#define GPIOD_BASE            (AHB2PERIPH_BASE + 0x00000C00)
-#define GPIOE_BASE            (AHB2PERIPH_BASE + 0x00001000)
-#define GPIOF_BASE            (AHB2PERIPH_BASE + 0x00001400)
-
-/**
-  * @}
-  */
-  
-/** @addtogroup Peripheral_declaration
-  * @{
-  */  
-
-#define TIM2                ((TIM_TypeDef *) TIM2_BASE)
-#define TIM3                ((TIM_TypeDef *) TIM3_BASE)
-#define TIM6                ((TIM_TypeDef *) TIM6_BASE)
-#define TIM7                ((TIM_TypeDef *) TIM7_BASE)
-#define TIM14               ((TIM_TypeDef *) TIM14_BASE)
-#define RTC                 ((RTC_TypeDef *) RTC_BASE)
-#define WWDG                ((WWDG_TypeDef *) WWDG_BASE)
-#define IWDG                ((IWDG_TypeDef *) IWDG_BASE)
-#define SPI2                ((SPI_TypeDef *) SPI2_BASE)
-#define USART2              ((USART_TypeDef *) USART2_BASE)
-#define USART3              ((USART_TypeDef *) USART3_BASE)
-#define USART4              ((USART_TypeDef *) USART4_BASE)
-#define I2C1                ((I2C_TypeDef *) I2C1_BASE)
-#define I2C2                ((I2C_TypeDef *) I2C2_BASE)
-#define CAN                 ((CAN_TypeDef *) CAN_BASE)
-#define CRS                 ((CRS_TypeDef *) CRS_BASE)
-#define PWR                 ((PWR_TypeDef *) PWR_BASE)
-#define DAC                 ((DAC_TypeDef *) DAC_BASE)
-#define CEC                 ((CEC_TypeDef *) CEC_BASE)
-
-#define SYSCFG              ((SYSCFG_TypeDef *) SYSCFG_BASE)
-#define COMP                ((COMP_TypeDef *) COMP_BASE)
-#define EXTI                ((EXTI_TypeDef *) EXTI_BASE)
-#define ADC1                ((ADC_TypeDef *) ADC1_BASE)
-#define ADC                 ((ADC_Common_TypeDef *) ADC_BASE)
-#define TIM1                ((TIM_TypeDef *) TIM1_BASE)
-#define SPI1                ((SPI_TypeDef *) SPI1_BASE)
-#define USART1              ((USART_TypeDef *) USART1_BASE)
-#define TIM15               ((TIM_TypeDef *) TIM15_BASE)
-#define TIM16               ((TIM_TypeDef *) TIM16_BASE)
-#define TIM17               ((TIM_TypeDef *) TIM17_BASE)
-#define DBGMCU              ((DBGMCU_TypeDef *) DBGMCU_BASE)
-
-#define DMA1                ((DMA_TypeDef *) DMA1_BASE)
-#define DMA1_Channel1       ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE)
-#define DMA1_Channel2       ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE)
-#define DMA1_Channel3       ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE)
-#define DMA1_Channel4       ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE)
-#define DMA1_Channel5       ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE)
-#define DMA1_Channel6       ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE)
-#define DMA1_Channel7       ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE)
-#define FLASH               ((FLASH_TypeDef *) FLASH_R_BASE)
-#define OB                  ((OB_TypeDef *) OB_BASE) 
-#define RCC                 ((RCC_TypeDef *) RCC_BASE)
-#define CRC                 ((CRC_TypeDef *) CRC_BASE)
-#define TSC                 ((TSC_TypeDef *) TSC_BASE)
-
-#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
-#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
-#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
-#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
-#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
-#define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)
-
-/**
-  * @}
-  */
-
-/** @addtogroup Exported_constants
-  * @{
-  */
-  
-  /** @addtogroup Peripheral_Registers_Bits_Definition
-  * @{
-  */
-    
-/******************************************************************************/
-/*                         Peripheral Registers Bits Definition               */
-/******************************************************************************/
-/******************************************************************************/
-/*                                                                            */
-/*                      Analog to Digital Converter (ADC)                     */
-/*                                                                            */
-/******************************************************************************/
-/********************  Bits definition for ADC_ISR register  ******************/
-#define ADC_ISR_AWD                          ((uint32_t)0x00000080)        /*!< Analog watchdog flag */
-#define ADC_ISR_OVR                          ((uint32_t)0x00000010)        /*!< Overrun flag */
-#define ADC_ISR_EOSEQ                        ((uint32_t)0x00000008)        /*!< End of Sequence flag */
-#define ADC_ISR_EOC                          ((uint32_t)0x00000004)        /*!< End of Conversion */
-#define ADC_ISR_EOSMP                        ((uint32_t)0x00000002)        /*!< End of sampling flag */
-#define ADC_ISR_ADRDY                        ((uint32_t)0x00000001)        /*!< ADC Ready */
-
-/* Old EOSEQ bit definition, maintained for legacy purpose */
-#define ADC_ISR_EOS                          ADC_ISR_EOSEQ
-
-/********************  Bits definition for ADC_IER register  ******************/
-#define ADC_IER_AWDIE                        ((uint32_t)0x00000080)        /*!< Analog Watchdog interrupt enable */
-#define ADC_IER_OVRIE                        ((uint32_t)0x00000010)        /*!< Overrun interrupt enable */
-#define ADC_IER_EOSEQIE                      ((uint32_t)0x00000008)        /*!< End of Sequence of conversion interrupt enable */
-#define ADC_IER_EOCIE                        ((uint32_t)0x00000004)        /*!< End of Conversion interrupt enable */
-#define ADC_IER_EOSMPIE                      ((uint32_t)0x00000002)        /*!< End of sampling interrupt enable */
-#define ADC_IER_ADRDYIE                      ((uint32_t)0x00000001)        /*!< ADC Ready interrupt enable */
-
-/* Old EOSEQIE bit definition, maintained for legacy purpose */
-#define ADC_IER_EOSIE                        ADC_IER_EOSEQIE
-
-/********************  Bits definition for ADC_CR register  *******************/
-#define ADC_CR_ADCAL                         ((uint32_t)0x80000000)        /*!< ADC calibration */
-#define ADC_CR_ADSTP                         ((uint32_t)0x00000010)        /*!< ADC stop of conversion command */
-#define ADC_CR_ADSTART                       ((uint32_t)0x00000004)        /*!< ADC start of conversion */
-#define ADC_CR_ADDIS                         ((uint32_t)0x00000002)        /*!< ADC disable command */
-#define ADC_CR_ADEN                          ((uint32_t)0x00000001)        /*!< ADC enable control */
-
-/*******************  Bits definition for ADC_CFGR1 register  *****************/
-#define  ADC_CFGR1_AWDCH                      ((uint32_t)0x7C000000)       /*!< AWDCH[4:0] bits (Analog watchdog channel select bits) */
-#define  ADC_CFGR1_AWDCH_0                    ((uint32_t)0x04000000)       /*!< Bit 0 */
-#define  ADC_CFGR1_AWDCH_1                    ((uint32_t)0x08000000)       /*!< Bit 1 */
-#define  ADC_CFGR1_AWDCH_2                    ((uint32_t)0x10000000)       /*!< Bit 2 */
-#define  ADC_CFGR1_AWDCH_3                    ((uint32_t)0x20000000)       /*!< Bit 3 */
-#define  ADC_CFGR1_AWDCH_4                    ((uint32_t)0x40000000)       /*!< Bit 4 */
-#define  ADC_CFGR1_AWDEN                      ((uint32_t)0x00800000)       /*!< Analog watchdog enable on regular channels */
-#define  ADC_CFGR1_AWDSGL                     ((uint32_t)0x00400000)       /*!< Enable the watchdog on a single channel or on all channels  */
-#define  ADC_CFGR1_DISCEN                     ((uint32_t)0x00010000)       /*!< Discontinuous mode on regular channels */
-#define  ADC_CFGR1_AUTOFF                     ((uint32_t)0x00008000)       /*!< ADC auto power off */
-#define  ADC_CFGR1_WAIT                       ((uint32_t)0x00004000)       /*!< ADC wait conversion mode */
-#define  ADC_CFGR1_CONT                       ((uint32_t)0x00002000)       /*!< Continuous Conversion */
-#define  ADC_CFGR1_OVRMOD                     ((uint32_t)0x00001000)       /*!< Overrun mode */
-#define  ADC_CFGR1_EXTEN                      ((uint32_t)0x00000C00)       /*!< EXTEN[1:0] bits (External Trigger Conversion mode for regular channels) */
-#define  ADC_CFGR1_EXTEN_0                    ((uint32_t)0x00000400)       /*!< Bit 0 */
-#define  ADC_CFGR1_EXTEN_1                    ((uint32_t)0x00000800)       /*!< Bit 1 */
-#define  ADC_CFGR1_EXTSEL                     ((uint32_t)0x000001C0)       /*!< EXTSEL[2:0] bits (External Event Select for regular group) */
-#define  ADC_CFGR1_EXTSEL_0                   ((uint32_t)0x00000040)       /*!< Bit 0 */
-#define  ADC_CFGR1_EXTSEL_1                   ((uint32_t)0x00000080)       /*!< Bit 1 */
-#define  ADC_CFGR1_EXTSEL_2                   ((uint32_t)0x00000100)       /*!< Bit 2 */
-#define  ADC_CFGR1_ALIGN                      ((uint32_t)0x00000020)       /*!< Data Alignment */
-#define  ADC_CFGR1_RES                        ((uint32_t)0x00000018)       /*!< RES[1:0] bits (Resolution) */
-#define  ADC_CFGR1_RES_0                      ((uint32_t)0x00000008)       /*!< Bit 0 */
-#define  ADC_CFGR1_RES_1                      ((uint32_t)0x00000010)       /*!< Bit 1 */
-#define  ADC_CFGR1_SCANDIR                    ((uint32_t)0x00000004)       /*!< Sequence scan direction */
-#define  ADC_CFGR1_DMACFG                     ((uint32_t)0x00000002)       /*!< Direct memory access configuration */
-#define  ADC_CFGR1_DMAEN                      ((uint32_t)0x00000001)       /*!< Direct memory access enable */
-
-/* Old WAIT bit definition, maintained for legacy purpose */
-#define  ADC_CFGR1_AUTDLY                     ADC_CFGR1_WAIT
-
-/*******************  Bits definition for ADC_CFGR2 register  *****************/
-#define  ADC_CFGR2_CKMODE                     ((uint32_t)0xC0000000)       /*!< ADC clock mode */
-#define  ADC_CFGR2_CKMODE_1                   ((uint32_t)0x80000000)       /*!< ADC clocked by PCLK div4 */
-#define  ADC_CFGR2_CKMODE_0                   ((uint32_t)0x40000000)       /*!< ADC clocked by PCLK div2 */
-
-/* Old bit definition, maintained for legacy purpose */
-#define  ADC_CFGR2_JITOFFDIV4                 ADC_CFGR2_CKMODE_1           /*!< ADC clocked by PCLK div4 */
-#define  ADC_CFGR2_JITOFFDIV2                 ADC_CFGR2_CKMODE_0           /*!< ADC clocked by PCLK div2 */
-
-/******************  Bit definition for ADC_SMPR register  ********************/
-#define  ADC_SMPR_SMP                      ((uint32_t)0x00000007)        /*!< SMP[2:0] bits (Sampling time selection) */
-#define  ADC_SMPR_SMP_0                    ((uint32_t)0x00000001)        /*!< Bit 0 */
-#define  ADC_SMPR_SMP_1                    ((uint32_t)0x00000002)        /*!< Bit 1 */
-#define  ADC_SMPR_SMP_2                    ((uint32_t)0x00000004)        /*!< Bit 2 */
-
-/* Old bit definition, maintained for legacy purpose */
-#define  ADC_SMPR1_SMPR                      ADC_SMPR_SMP        /*!< SMP[2:0] bits (Sampling time selection) */
-#define  ADC_SMPR1_SMPR_0                    ADC_SMPR_SMP_0        /*!< Bit 0 */
-#define  ADC_SMPR1_SMPR_1                    ADC_SMPR_SMP_1        /*!< Bit 1 */
-#define  ADC_SMPR1_SMPR_2                    ADC_SMPR_SMP_2        /*!< Bit 2 */
-
-/*******************  Bit definition for ADC_TR register  ********************/
-#define  ADC_TR_HT                          ((uint32_t)0x0FFF0000)        /*!< Analog watchdog high threshold */
-#define  ADC_TR_LT                          ((uint32_t)0x00000FFF)        /*!< Analog watchdog low threshold */
-
-/* Old bit definition, maintained for legacy purpose */
-#define  ADC_HTR_HT                          ADC_TR_HT                    /*!< Analog watchdog high threshold */
-#define  ADC_LTR_LT                          ADC_TR_LT                    /*!< Analog watchdog low threshold */
-
-/******************  Bit definition for ADC_CHSELR register  ******************/
-#define  ADC_CHSELR_CHSEL18                   ((uint32_t)0x00040000)        /*!< Channel 18 selection */
-#define  ADC_CHSELR_CHSEL17                   ((uint32_t)0x00020000)        /*!< Channel 17 selection */
-#define  ADC_CHSELR_CHSEL16                   ((uint32_t)0x00010000)        /*!< Channel 16 selection */
-#define  ADC_CHSELR_CHSEL15                   ((uint32_t)0x00008000)        /*!< Channel 15 selection */
-#define  ADC_CHSELR_CHSEL14                   ((uint32_t)0x00004000)        /*!< Channel 14 selection */
-#define  ADC_CHSELR_CHSEL13                   ((uint32_t)0x00002000)        /*!< Channel 13 selection */
-#define  ADC_CHSELR_CHSEL12                   ((uint32_t)0x00001000)        /*!< Channel 12 selection */
-#define  ADC_CHSELR_CHSEL11                   ((uint32_t)0x00000800)        /*!< Channel 11 selection */
-#define  ADC_CHSELR_CHSEL10                   ((uint32_t)0x00000400)        /*!< Channel 10 selection */
-#define  ADC_CHSELR_CHSEL9                    ((uint32_t)0x00000200)        /*!< Channel 9 selection */
-#define  ADC_CHSELR_CHSEL8                    ((uint32_t)0x00000100)        /*!< Channel 8 selection */
-#define  ADC_CHSELR_CHSEL7                    ((uint32_t)0x00000080)        /*!< Channel 7 selection */
-#define  ADC_CHSELR_CHSEL6                    ((uint32_t)0x00000040)        /*!< Channel 6 selection */
-#define  ADC_CHSELR_CHSEL5                    ((uint32_t)0x00000020)        /*!< Channel 5 selection */
-#define  ADC_CHSELR_CHSEL4                    ((uint32_t)0x00000010)        /*!< Channel 4 selection */
-#define  ADC_CHSELR_CHSEL3                    ((uint32_t)0x00000008)        /*!< Channel 3 selection */
-#define  ADC_CHSELR_CHSEL2                    ((uint32_t)0x00000004)        /*!< Channel 2 selection */
-#define  ADC_CHSELR_CHSEL1                    ((uint32_t)0x00000002)        /*!< Channel 1 selection */
-#define  ADC_CHSELR_CHSEL0                    ((uint32_t)0x00000001)        /*!< Channel 0 selection */
-
-/********************  Bit definition for ADC_DR register  ********************/
-#define  ADC_DR_DATA                         ((uint32_t)0x0000FFFF)        /*!< Regular data */
-
-/*******************  Bit definition for ADC_CCR register  ********************/
-#define  ADC_CCR_VBATEN                       ((uint32_t)0x01000000)       /*!< Voltage battery enable */
-#define  ADC_CCR_TSEN                         ((uint32_t)0x00800000)       /*!< Tempurature sensore enable */
-#define  ADC_CCR_VREFEN                       ((uint32_t)0x00400000)       /*!< Vrefint enable */
-
-/******************************************************************************/
-/*                                                                            */
-/*                   Controller Area Network (CAN )                           */
-/*                                                                            */
-/******************************************************************************/
-/*******************  Bit definition for CAN_MCR register  ********************/
-#define  CAN_MCR_INRQ                        ((uint16_t)0x0001)            /*!<Initialization Request */
-#define  CAN_MCR_SLEEP                       ((uint16_t)0x0002)            /*!<Sleep Mode Request */
-#define  CAN_MCR_TXFP                        ((uint16_t)0x0004)            /*!<Transmit FIFO Priority */
-#define  CAN_MCR_RFLM                        ((uint16_t)0x0008)            /*!<Receive FIFO Locked Mode */
-#define  CAN_MCR_NART                        ((uint16_t)0x0010)            /*!<No Automatic Retransmission */
-#define  CAN_MCR_AWUM                        ((uint16_t)0x0020)            /*!<Automatic Wakeup Mode */
-#define  CAN_MCR_ABOM                        ((uint16_t)0x0040)            /*!<Automatic Bus-Off Management */
-#define  CAN_MCR_TTCM                        ((uint16_t)0x0080)            /*!<Time Triggered Communication Mode */
-#define  CAN_MCR_RESET                       ((uint16_t)0x8000)            /*!<bxCAN software master reset */
-
-/*******************  Bit definition for CAN_MSR register  ********************/
-#define  CAN_MSR_INAK                        ((uint16_t)0x0001)            /*!<Initialization Acknowledge */
-#define  CAN_MSR_SLAK                        ((uint16_t)0x0002)            /*!<Sleep Acknowledge */
-#define  CAN_MSR_ERRI                        ((uint16_t)0x0004)            /*!<Error Interrupt */
-#define  CAN_MSR_WKUI                        ((uint16_t)0x0008)            /*!<Wakeup Interrupt */
-#define  CAN_MSR_SLAKI                       ((uint16_t)0x0010)            /*!<Sleep Acknowledge Interrupt */
-#define  CAN_MSR_TXM                         ((uint16_t)0x0100)            /*!<Transmit Mode */
-#define  CAN_MSR_RXM                         ((uint16_t)0x0200)            /*!<Receive Mode */
-#define  CAN_MSR_SAMP                        ((uint16_t)0x0400)            /*!<Last Sample Point */
-#define  CAN_MSR_RX                          ((uint16_t)0x0800)            /*!<CAN Rx Signal */
-
-/*******************  Bit definition for CAN_TSR register  ********************/
-#define  CAN_TSR_RQCP0                       ((uint32_t)0x00000001)        /*!<Request Completed Mailbox0 */
-#define  CAN_TSR_TXOK0                       ((uint32_t)0x00000002)        /*!<Transmission OK of Mailbox0 */
-#define  CAN_TSR_ALST0                       ((uint32_t)0x00000004)        /*!<Arbitration Lost for Mailbox0 */
-#define  CAN_TSR_TERR0                       ((uint32_t)0x00000008)        /*!<Transmission Error of Mailbox0 */
-#define  CAN_TSR_ABRQ0                       ((uint32_t)0x00000080)        /*!<Abort Request for Mailbox0 */
-#define  CAN_TSR_RQCP1                       ((uint32_t)0x00000100)        /*!<Request Completed Mailbox1 */
-#define  CAN_TSR_TXOK1                       ((uint32_t)0x00000200)        /*!<Transmission OK of Mailbox1 */
-#define  CAN_TSR_ALST1                       ((uint32_t)0x00000400)        /*!<Arbitration Lost for Mailbox1 */
-#define  CAN_TSR_TERR1                       ((uint32_t)0x00000800)        /*!<Transmission Error of Mailbox1 */
-#define  CAN_TSR_ABRQ1                       ((uint32_t)0x00008000)        /*!<Abort Request for Mailbox 1 */
-#define  CAN_TSR_RQCP2                       ((uint32_t)0x00010000)        /*!<Request Completed Mailbox2 */
-#define  CAN_TSR_TXOK2                       ((uint32_t)0x00020000)        /*!<Transmission OK of Mailbox 2 */
-#define  CAN_TSR_ALST2                       ((uint32_t)0x00040000)        /*!<Arbitration Lost for mailbox 2 */
-#define  CAN_TSR_TERR2                       ((uint32_t)0x00080000)        /*!<Transmission Error of Mailbox 2 */
-#define  CAN_TSR_ABRQ2                       ((uint32_t)0x00800000)        /*!<Abort Request for Mailbox 2 */
-#define  CAN_TSR_CODE                        ((uint32_t)0x03000000)        /*!<Mailbox Code */
-
-#define  CAN_TSR_TME                         ((uint32_t)0x1C000000)        /*!<TME[2:0] bits */
-#define  CAN_TSR_TME0                        ((uint32_t)0x04000000)        /*!<Transmit Mailbox 0 Empty */
-#define  CAN_TSR_TME1                        ((uint32_t)0x08000000)        /*!<Transmit Mailbox 1 Empty */
-#define  CAN_TSR_TME2                        ((uint32_t)0x10000000)        /*!<Transmit Mailbox 2 Empty */
-
-#define  CAN_TSR_LOW                         ((uint32_t)0xE0000000)        /*!<LOW[2:0] bits */
-#define  CAN_TSR_LOW0                        ((uint32_t)0x20000000)        /*!<Lowest Priority Flag for Mailbox 0 */
-#define  CAN_TSR_LOW1                        ((uint32_t)0x40000000)        /*!<Lowest Priority Flag for Mailbox 1 */
-#define  CAN_TSR_LOW2                        ((uint32_t)0x80000000)        /*!<Lowest Priority Flag for Mailbox 2 */
-
-/*******************  Bit definition for CAN_RF0R register  *******************/
-#define  CAN_RF0R_FMP0                       ((uint8_t)0x03)               /*!<FIFO 0 Message Pending */
-#define  CAN_RF0R_FULL0                      ((uint8_t)0x08)               /*!<FIFO 0 Full */
-#define  CAN_RF0R_FOVR0                      ((uint8_t)0x10)               /*!<FIFO 0 Overrun */
-#define  CAN_RF0R_RFOM0                      ((uint8_t)0x20)               /*!<Release FIFO 0 Output Mailbox */
-
-/*******************  Bit definition for CAN_RF1R register  *******************/
-#define  CAN_RF1R_FMP1                       ((uint8_t)0x03)               /*!<FIFO 1 Message Pending */
-#define  CAN_RF1R_FULL1                      ((uint8_t)0x08)               /*!<FIFO 1 Full */
-#define  CAN_RF1R_FOVR1                      ((uint8_t)0x10)               /*!<FIFO 1 Overrun */
-#define  CAN_RF1R_RFOM1                      ((uint8_t)0x20)               /*!<Release FIFO 1 Output Mailbox */
-
-/********************  Bit definition for CAN_IER register  *******************/
-#define  CAN_IER_TMEIE                       ((uint32_t)0x00000001)        /*!<Transmit Mailbox Empty Interrupt Enable */
-#define  CAN_IER_FMPIE0                      ((uint32_t)0x00000002)        /*!<FIFO Message Pending Interrupt Enable */
-#define  CAN_IER_FFIE0                       ((uint32_t)0x00000004)        /*!<FIFO Full Interrupt Enable */
-#define  CAN_IER_FOVIE0                      ((uint32_t)0x00000008)        /*!<FIFO Overrun Interrupt Enable */
-#define  CAN_IER_FMPIE1                      ((uint32_t)0x00000010)        /*!<FIFO Message Pending Interrupt Enable */
-#define  CAN_IER_FFIE1                       ((uint32_t)0x00000020)        /*!<FIFO Full Interrupt Enable */
-#define  CAN_IER_FOVIE1                      ((uint32_t)0x00000040)        /*!<FIFO Overrun Interrupt Enable */
-#define  CAN_IER_EWGIE                       ((uint32_t)0x00000100)        /*!<Error Warning Interrupt Enable */
-#define  CAN_IER_EPVIE                       ((uint32_t)0x00000200)        /*!<Error Passive Interrupt Enable */
-#define  CAN_IER_BOFIE                       ((uint32_t)0x00000400)        /*!<Bus-Off Interrupt Enable */
-#define  CAN_IER_LECIE                       ((uint32_t)0x00000800)        /*!<Last Error Code Interrupt Enable */
-#define  CAN_IER_ERRIE                       ((uint32_t)0x00008000)        /*!<Error Interrupt Enable */
-#define  CAN_IER_WKUIE                       ((uint32_t)0x00010000)        /*!<Wakeup Interrupt Enable */
-#define  CAN_IER_SLKIE                       ((uint32_t)0x00020000)        /*!<Sleep Interrupt Enable */
-
-/********************  Bit definition for CAN_ESR register  *******************/
-#define  CAN_ESR_EWGF                        ((uint32_t)0x00000001)        /*!<Error Warning Flag */
-#define  CAN_ESR_EPVF                        ((uint32_t)0x00000002)        /*!<Error Passive Flag */
-#define  CAN_ESR_BOFF                        ((uint32_t)0x00000004)        /*!<Bus-Off Flag */
-
-#define  CAN_ESR_LEC                         ((uint32_t)0x00000070)        /*!<LEC[2:0] bits (Last Error Code) */
-#define  CAN_ESR_LEC_0                       ((uint32_t)0x00000010)        /*!<Bit 0 */
-#define  CAN_ESR_LEC_1                       ((uint32_t)0x00000020)        /*!<Bit 1 */
-#define  CAN_ESR_LEC_2                       ((uint32_t)0x00000040)        /*!<Bit 2 */
-
-#define  CAN_ESR_TEC                         ((uint32_t)0x00FF0000)        /*!<Least significant byte of the 9-bit Transmit Error Counter */
-#define  CAN_ESR_REC                         ((uint32_t)0xFF000000)        /*!<Receive Error Counter */
-
-/*******************  Bit definition for CAN_BTR register  ********************/
-#define  CAN_BTR_BRP                         ((uint32_t)0x000003FF)        /*!<Baud Rate Prescaler */
-#define  CAN_BTR_TS1                         ((uint32_t)0x000F0000)        /*!<Time Segment 1 */
-#define  CAN_BTR_TS2                         ((uint32_t)0x00700000)        /*!<Time Segment 2 */
-#define  CAN_BTR_SJW                         ((uint32_t)0x03000000)        /*!<Resynchronization Jump Width */
-#define  CAN_BTR_LBKM                        ((uint32_t)0x40000000)        /*!<Loop Back Mode (Debug) */
-#define  CAN_BTR_SILM                        ((uint32_t)0x80000000)        /*!<Silent Mode */
-
-/*!<Mailbox registers */
-/******************  Bit definition for CAN_TI0R register  ********************/
-#define  CAN_TI0R_TXRQ                       ((uint32_t)0x00000001)        /*!<Transmit Mailbox Request */
-#define  CAN_TI0R_RTR                        ((uint32_t)0x00000002)        /*!<Remote Transmission Request */
-#define  CAN_TI0R_IDE                        ((uint32_t)0x00000004)        /*!<Identifier Extension */
-#define  CAN_TI0R_EXID                       ((uint32_t)0x001FFFF8)        /*!<Extended Identifier */
-#define  CAN_TI0R_STID                       ((uint32_t)0xFFE00000)        /*!<Standard Identifier or Extended Identifier */
-
-/******************  Bit definition for CAN_TDT0R register  *******************/
-#define  CAN_TDT0R_DLC                       ((uint32_t)0x0000000F)        /*!<Data Length Code */
-#define  CAN_TDT0R_TGT                       ((uint32_t)0x00000100)        /*!<Transmit Global Time */
-#define  CAN_TDT0R_TIME                      ((uint32_t)0xFFFF0000)        /*!<Message Time Stamp */
-
-/******************  Bit definition for CAN_TDL0R register  *******************/
-#define  CAN_TDL0R_DATA0                     ((uint32_t)0x000000FF)        /*!<Data byte 0 */
-#define  CAN_TDL0R_DATA1                     ((uint32_t)0x0000FF00)        /*!<Data byte 1 */
-#define  CAN_TDL0R_DATA2                     ((uint32_t)0x00FF0000)        /*!<Data byte 2 */
-#define  CAN_TDL0R_DATA3                     ((uint32_t)0xFF000000)        /*!<Data byte 3 */
-
-/******************  Bit definition for CAN_TDH0R register  *******************/
-#define  CAN_TDH0R_DATA4                     ((uint32_t)0x000000FF)        /*!<Data byte 4 */
-#define  CAN_TDH0R_DATA5                     ((uint32_t)0x0000FF00)        /*!<Data byte 5 */
-#define  CAN_TDH0R_DATA6                     ((uint32_t)0x00FF0000)        /*!<Data byte 6 */
-#define  CAN_TDH0R_DATA7                     ((uint32_t)0xFF000000)        /*!<Data byte 7 */
-
-/*******************  Bit definition for CAN_TI1R register  *******************/
-#define  CAN_TI1R_TXRQ                       ((uint32_t)0x00000001)        /*!<Transmit Mailbox Request */
-#define  CAN_TI1R_RTR                        ((uint32_t)0x00000002)        /*!<Remote Transmission Request */
-#define  CAN_TI1R_IDE                        ((uint32_t)0x00000004)        /*!<Identifier Extension */
-#define  CAN_TI1R_EXID                       ((uint32_t)0x001FFFF8)        /*!<Extended Identifier */
-#define  CAN_TI1R_STID                       ((uint32_t)0xFFE00000)        /*!<Standard Identifier or Extended Identifier */
-
-/*******************  Bit definition for CAN_TDT1R register  ******************/
-#define  CAN_TDT1R_DLC                       ((uint32_t)0x0000000F)        /*!<Data Length Code */
-#define  CAN_TDT1R_TGT                       ((uint32_t)0x00000100)        /*!<Transmit Global Time */
-#define  CAN_TDT1R_TIME                      ((uint32_t)0xFFFF0000)        /*!<Message Time Stamp */
-
-/*******************  Bit definition for CAN_TDL1R register  ******************/
-#define  CAN_TDL1R_DATA0                     ((uint32_t)0x000000FF)        /*!<Data byte 0 */
-#define  CAN_TDL1R_DATA1                     ((uint32_t)0x0000FF00)        /*!<Data byte 1 */
-#define  CAN_TDL1R_DATA2                     ((uint32_t)0x00FF0000)        /*!<Data byte 2 */
-#define  CAN_TDL1R_DATA3                     ((uint32_t)0xFF000000)        /*!<Data byte 3 */
-
-/*******************  Bit definition for CAN_TDH1R register  ******************/
-#define  CAN_TDH1R_DATA4                     ((uint32_t)0x000000FF)        /*!<Data byte 4 */
-#define  CAN_TDH1R_DATA5                     ((uint32_t)0x0000FF00)        /*!<Data byte 5 */
-#define  CAN_TDH1R_DATA6                     ((uint32_t)0x00FF0000)        /*!<Data byte 6 */
-#define  CAN_TDH1R_DATA7                     ((uint32_t)0xFF000000)        /*!<Data byte 7 */
-
-/*******************  Bit definition for CAN_TI2R register  *******************/
-#define  CAN_TI2R_TXRQ                       ((uint32_t)0x00000001)        /*!<Transmit Mailbox Request */
-#define  CAN_TI2R_RTR                        ((uint32_t)0x00000002)        /*!<Remote Transmission Request */
-#define  CAN_TI2R_IDE                        ((uint32_t)0x00000004)        /*!<Identifier Extension */
-#define  CAN_TI2R_EXID                       ((uint32_t)0x001FFFF8)        /*!<Extended identifier */
-#define  CAN_TI2R_STID                       ((uint32_t)0xFFE00000)        /*!<Standard Identifier or Extended Identifier */
-
-/*******************  Bit definition for CAN_TDT2R register  ******************/  
-#define  CAN_TDT2R_DLC                       ((uint32_t)0x0000000F)        /*!<Data Length Code */
-#define  CAN_TDT2R_TGT                       ((uint32_t)0x00000100)        /*!<Transmit Global Time */
-#define  CAN_TDT2R_TIME                      ((uint32_t)0xFFFF0000)        /*!<Message Time Stamp */
-
-/*******************  Bit definition for CAN_TDL2R register  ******************/
-#define  CAN_TDL2R_DATA0                     ((uint32_t)0x000000FF)        /*!<Data byte 0 */
-#define  CAN_TDL2R_DATA1                     ((uint32_t)0x0000FF00)        /*!<Data byte 1 */
-#define  CAN_TDL2R_DATA2                     ((uint32_t)0x00FF0000)        /*!<Data byte 2 */
-#define  CAN_TDL2R_DATA3                     ((uint32_t)0xFF000000)        /*!<Data byte 3 */
-
-/*******************  Bit definition for CAN_TDH2R register  ******************/
-#define  CAN_TDH2R_DATA4                     ((uint32_t)0x000000FF)        /*!<Data byte 4 */
-#define  CAN_TDH2R_DATA5                     ((uint32_t)0x0000FF00)        /*!<Data byte 5 */
-#define  CAN_TDH2R_DATA6                     ((uint32_t)0x00FF0000)        /*!<Data byte 6 */
-#define  CAN_TDH2R_DATA7                     ((uint32_t)0xFF000000)        /*!<Data byte 7 */
-
-/*******************  Bit definition for CAN_RI0R register  *******************/
-#define  CAN_RI0R_RTR                        ((uint32_t)0x00000002)        /*!<Remote Transmission Request */
-#define  CAN_RI0R_IDE                        ((uint32_t)0x00000004)        /*!<Identifier Extension */
-#define  CAN_RI0R_EXID                       ((uint32_t)0x001FFFF8)        /*!<Extended Identifier */
-#define  CAN_RI0R_STID                       ((uint32_t)0xFFE00000)        /*!<Standard Identifier or Extended Identifier */
-
-/*******************  Bit definition for CAN_RDT0R register  ******************/
-#define  CAN_RDT0R_DLC                       ((uint32_t)0x0000000F)        /*!<Data Length Code */
-#define  CAN_RDT0R_FMI                       ((uint32_t)0x0000FF00)        /*!<Filter Match Index */
-#define  CAN_RDT0R_TIME                      ((uint32_t)0xFFFF0000)        /*!<Message Time Stamp */
-
-/*******************  Bit definition for CAN_RDL0R register  ******************/
-#define  CAN_RDL0R_DATA0                     ((uint32_t)0x000000FF)        /*!<Data byte 0 */
-#define  CAN_RDL0R_DATA1                     ((uint32_t)0x0000FF00)        /*!<Data byte 1 */
-#define  CAN_RDL0R_DATA2                     ((uint32_t)0x00FF0000)        /*!<Data byte 2 */
-#define  CAN_RDL0R_DATA3                     ((uint32_t)0xFF000000)        /*!<Data byte 3 */
-
-/*******************  Bit definition for CAN_RDH0R register  ******************/
-#define  CAN_RDH0R_DATA4                     ((uint32_t)0x000000FF)        /*!<Data byte 4 */
-#define  CAN_RDH0R_DATA5                     ((uint32_t)0x0000FF00)        /*!<Data byte 5 */
-#define  CAN_RDH0R_DATA6                     ((uint32_t)0x00FF0000)        /*!<Data byte 6 */
-#define  CAN_RDH0R_DATA7                     ((uint32_t)0xFF000000)        /*!<Data byte 7 */
-
-/*******************  Bit definition for CAN_RI1R register  *******************/
-#define  CAN_RI1R_RTR                        ((uint32_t)0x00000002)        /*!<Remote Transmission Request */
-#define  CAN_RI1R_IDE                        ((uint32_t)0x00000004)        /*!<Identifier Extension */
-#define  CAN_RI1R_EXID                       ((uint32_t)0x001FFFF8)        /*!<Extended identifier */
-#define  CAN_RI1R_STID                       ((uint32_t)0xFFE00000)        /*!<Standard Identifier or Extended Identifier */
-
-/*******************  Bit definition for CAN_RDT1R register  ******************/
-#define  CAN_RDT1R_DLC                       ((uint32_t)0x0000000F)        /*!<Data Length Code */
-#define  CAN_RDT1R_FMI                       ((uint32_t)0x0000FF00)        /*!<Filter Match Index */
-#define  CAN_RDT1R_TIME                      ((uint32_t)0xFFFF0000)        /*!<Message Time Stamp */
-
-/*******************  Bit definition for CAN_RDL1R register  ******************/
-#define  CAN_RDL1R_DATA0                     ((uint32_t)0x000000FF)        /*!<Data byte 0 */
-#define  CAN_RDL1R_DATA1                     ((uint32_t)0x0000FF00)        /*!<Data byte 1 */
-#define  CAN_RDL1R_DATA2                     ((uint32_t)0x00FF0000)        /*!<Data byte 2 */
-#define  CAN_RDL1R_DATA3                     ((uint32_t)0xFF000000)        /*!<Data byte 3 */
-
-/*******************  Bit definition for CAN_RDH1R register  ******************/
-#define  CAN_RDH1R_DATA4                     ((uint32_t)0x000000FF)        /*!<Data byte 4 */
-#define  CAN_RDH1R_DATA5                     ((uint32_t)0x0000FF00)        /*!<Data byte 5 */
-#define  CAN_RDH1R_DATA6                     ((uint32_t)0x00FF0000)        /*!<Data byte 6 */
-#define  CAN_RDH1R_DATA7                     ((uint32_t)0xFF000000)        /*!<Data byte 7 */
-
-/*!<CAN filter registers */
-/*******************  Bit definition for CAN_FMR register  ********************/
-#define  CAN_FMR_FINIT                       ((uint8_t)0x01)               /*!<Filter Init Mode */
-
-/*******************  Bit definition for CAN_FM1R register  *******************/
-#define  CAN_FM1R_FBM                        ((uint16_t)0x3FFF)            /*!<Filter Mode */
-#define  CAN_FM1R_FBM0                       ((uint16_t)0x0001)            /*!<Filter Init Mode bit 0 */
-#define  CAN_FM1R_FBM1                       ((uint16_t)0x0002)            /*!<Filter Init Mode bit 1 */
-#define  CAN_FM1R_FBM2                       ((uint16_t)0x0004)            /*!<Filter Init Mode bit 2 */
-#define  CAN_FM1R_FBM3                       ((uint16_t)0x0008)            /*!<Filter Init Mode bit 3 */
-#define  CAN_FM1R_FBM4                       ((uint16_t)0x0010)            /*!<Filter Init Mode bit 4 */
-#define  CAN_FM1R_FBM5                       ((uint16_t)0x0020)            /*!<Filter Init Mode bit 5 */
-#define  CAN_FM1R_FBM6                       ((uint16_t)0x0040)            /*!<Filter Init Mode bit 6 */
-#define  CAN_FM1R_FBM7                       ((uint16_t)0x0080)            /*!<Filter Init Mode bit 7 */
-#define  CAN_FM1R_FBM8                       ((uint16_t)0x0100)            /*!<Filter Init Mode bit 8 */
-#define  CAN_FM1R_FBM9                       ((uint16_t)0x0200)            /*!<Filter Init Mode bit 9 */
-#define  CAN_FM1R_FBM10                      ((uint16_t)0x0400)            /*!<Filter Init Mode bit 10 */
-#define  CAN_FM1R_FBM11                      ((uint16_t)0x0800)            /*!<Filter Init Mode bit 11 */
-#define  CAN_FM1R_FBM12                      ((uint16_t)0x1000)            /*!<Filter Init Mode bit 12 */
-#define  CAN_FM1R_FBM13                      ((uint16_t)0x2000)            /*!<Filter Init Mode bit 13 */
-
-/*******************  Bit definition for CAN_FS1R register  *******************/
-#define  CAN_FS1R_FSC                        ((uint16_t)0x3FFF)            /*!<Filter Scale Configuration */
-#define  CAN_FS1R_FSC0                       ((uint16_t)0x0001)            /*!<Filter Scale Configuration bit 0 */
-#define  CAN_FS1R_FSC1                       ((uint16_t)0x0002)            /*!<Filter Scale Configuration bit 1 */
-#define  CAN_FS1R_FSC2                       ((uint16_t)0x0004)            /*!<Filter Scale Configuration bit 2 */
-#define  CAN_FS1R_FSC3                       ((uint16_t)0x0008)            /*!<Filter Scale Configuration bit 3 */
-#define  CAN_FS1R_FSC4                       ((uint16_t)0x0010)            /*!<Filter Scale Configuration bit 4 */
-#define  CAN_FS1R_FSC5                       ((uint16_t)0x0020)            /*!<Filter Scale Configuration bit 5 */
-#define  CAN_FS1R_FSC6                       ((uint16_t)0x0040)            /*!<Filter Scale Configuration bit 6 */
-#define  CAN_FS1R_FSC7                       ((uint16_t)0x0080)            /*!<Filter Scale Configuration bit 7 */
-#define  CAN_FS1R_FSC8                       ((uint16_t)0x0100)            /*!<Filter Scale Configuration bit 8 */
-#define  CAN_FS1R_FSC9                       ((uint16_t)0x0200)            /*!<Filter Scale Configuration bit 9 */
-#define  CAN_FS1R_FSC10                      ((uint16_t)0x0400)            /*!<Filter Scale Configuration bit 10 */
-#define  CAN_FS1R_FSC11                      ((uint16_t)0x0800)            /*!<Filter Scale Configuration bit 11 */
-#define  CAN_FS1R_FSC12                      ((uint16_t)0x1000)            /*!<Filter Scale Configuration bit 12 */
-#define  CAN_FS1R_FSC13                      ((uint16_t)0x2000)            /*!<Filter Scale Configuration bit 13 */
-
-/******************  Bit definition for CAN_FFA1R register  *******************/
-#define  CAN_FFA1R_FFA                       ((uint16_t)0x3FFF)            /*!<Filter FIFO Assignment */
-#define  CAN_FFA1R_FFA0                      ((uint16_t)0x0001)            /*!<Filter FIFO Assignment for Filter 0 */
-#define  CAN_FFA1R_FFA1                      ((uint16_t)0x0002)            /*!<Filter FIFO Assignment for Filter 1 */
-#define  CAN_FFA1R_FFA2                      ((uint16_t)0x0004)            /*!<Filter FIFO Assignment for Filter 2 */
-#define  CAN_FFA1R_FFA3                      ((uint16_t)0x0008)            /*!<Filter FIFO Assignment for Filter 3 */
-#define  CAN_FFA1R_FFA4                      ((uint16_t)0x0010)            /*!<Filter FIFO Assignment for Filter 4 */
-#define  CAN_FFA1R_FFA5                      ((uint16_t)0x0020)            /*!<Filter FIFO Assignment for Filter 5 */
-#define  CAN_FFA1R_FFA6                      ((uint16_t)0x0040)            /*!<Filter FIFO Assignment for Filter 6 */
-#define  CAN_FFA1R_FFA7                      ((uint16_t)0x0080)            /*!<Filter FIFO Assignment for Filter 7 */
-#define  CAN_FFA1R_FFA8                      ((uint16_t)0x0100)            /*!<Filter FIFO Assignment for Filter 8 */
-#define  CAN_FFA1R_FFA9                      ((uint16_t)0x0200)            /*!<Filter FIFO Assignment for Filter 9 */
-#define  CAN_FFA1R_FFA10                     ((uint16_t)0x0400)            /*!<Filter FIFO Assignment for Filter 10 */
-#define  CAN_FFA1R_FFA11                     ((uint16_t)0x0800)            /*!<Filter FIFO Assignment for Filter 11 */
-#define  CAN_FFA1R_FFA12                     ((uint16_t)0x1000)            /*!<Filter FIFO Assignment for Filter 12 */
-#define  CAN_FFA1R_FFA13                     ((uint16_t)0x2000)            /*!<Filter FIFO Assignment for Filter 13 */
-
-/*******************  Bit definition for CAN_FA1R register  *******************/
-#define  CAN_FA1R_FACT                       ((uint16_t)0x3FFF)            /*!<Filter Active */
-#define  CAN_FA1R_FACT0                      ((uint16_t)0x0001)            /*!<Filter 0 Active */
-#define  CAN_FA1R_FACT1                      ((uint16_t)0x0002)            /*!<Filter 1 Active */
-#define  CAN_FA1R_FACT2                      ((uint16_t)0x0004)            /*!<Filter 2 Active */
-#define  CAN_FA1R_FACT3                      ((uint16_t)0x0008)            /*!<Filter 3 Active */
-#define  CAN_FA1R_FACT4                      ((uint16_t)0x0010)            /*!<Filter 4 Active */
-#define  CAN_FA1R_FACT5                      ((uint16_t)0x0020)            /*!<Filter 5 Active */
-#define  CAN_FA1R_FACT6                      ((uint16_t)0x0040)            /*!<Filter 6 Active */
-#define  CAN_FA1R_FACT7                      ((uint16_t)0x0080)            /*!<Filter 7 Active */
-#define  CAN_FA1R_FACT8                      ((uint16_t)0x0100)            /*!<Filter 8 Active */
-#define  CAN_FA1R_FACT9                      ((uint16_t)0x0200)            /*!<Filter 9 Active */
-#define  CAN_FA1R_FACT10                     ((uint16_t)0x0400)            /*!<Filter 10 Active */
-#define  CAN_FA1R_FACT11                     ((uint16_t)0x0800)            /*!<Filter 11 Active */
-#define  CAN_FA1R_FACT12                     ((uint16_t)0x1000)            /*!<Filter 12 Active */
-#define  CAN_FA1R_FACT13                     ((uint16_t)0x2000)            /*!<Filter 13 Active */
-
-/*******************  Bit definition for CAN_F0R1 register  *******************/
-#define  CAN_F0R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F0R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F0R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F0R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F0R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F0R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F0R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F0R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F0R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F0R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F0R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F0R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F0R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F0R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F0R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F0R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F0R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F0R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F0R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F0R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F0R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F0R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F0R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F0R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F0R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F0R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F0R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F0R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F0R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F0R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F0R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F0R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F1R1 register  *******************/
-#define  CAN_F1R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F1R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F1R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F1R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F1R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F1R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F1R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F1R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F1R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F1R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F1R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F1R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F1R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F1R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F1R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F1R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F1R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F1R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F1R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F1R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F1R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F1R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F1R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F1R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F1R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F1R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F1R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F1R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F1R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F1R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F1R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F1R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F2R1 register  *******************/
-#define  CAN_F2R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F2R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F2R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F2R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F2R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F2R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F2R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F2R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F2R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F2R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F2R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F2R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F2R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F2R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F2R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F2R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F2R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F2R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F2R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F2R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F2R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F2R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F2R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F2R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F2R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F2R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F2R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F2R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F2R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F2R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F2R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F2R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F3R1 register  *******************/
-#define  CAN_F3R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F3R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F3R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F3R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F3R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F3R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F3R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F3R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F3R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F3R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F3R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F3R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F3R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F3R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F3R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F3R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F3R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F3R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F3R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F3R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F3R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F3R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F3R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F3R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F3R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F3R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F3R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F3R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F3R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F3R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F3R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F3R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F4R1 register  *******************/
-#define  CAN_F4R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F4R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F4R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F4R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F4R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F4R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F4R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F4R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F4R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F4R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F4R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F4R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F4R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F4R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F4R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F4R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F4R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F4R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F4R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F4R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F4R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F4R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F4R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F4R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F4R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F4R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F4R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F4R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F4R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F4R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F4R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F4R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F5R1 register  *******************/
-#define  CAN_F5R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F5R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F5R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F5R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F5R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F5R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F5R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F5R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F5R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F5R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F5R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F5R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F5R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F5R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F5R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F5R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F5R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F5R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F5R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F5R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F5R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F5R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F5R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F5R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F5R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F5R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F5R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F5R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F5R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F5R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F5R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F5R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F6R1 register  *******************/
-#define  CAN_F6R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F6R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F6R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F6R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F6R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F6R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F6R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F6R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F6R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F6R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F6R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F6R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F6R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F6R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F6R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F6R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F6R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F6R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F6R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F6R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F6R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F6R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F6R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F6R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F6R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F6R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F6R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F6R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F6R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F6R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F6R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F6R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F7R1 register  *******************/
-#define  CAN_F7R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F7R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F7R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F7R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F7R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F7R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F7R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F7R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F7R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F7R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F7R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F7R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F7R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F7R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F7R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F7R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F7R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F7R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F7R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F7R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F7R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F7R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F7R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F7R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F7R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F7R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F7R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F7R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F7R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F7R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F7R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F7R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F8R1 register  *******************/
-#define  CAN_F8R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F8R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F8R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F8R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F8R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F8R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F8R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F8R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F8R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F8R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F8R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F8R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F8R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F8R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F8R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F8R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F8R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F8R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F8R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F8R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F8R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F8R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F8R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F8R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F8R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F8R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F8R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F8R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F8R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F8R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F8R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F8R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F9R1 register  *******************/
-#define  CAN_F9R1_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F9R1_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F9R1_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F9R1_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F9R1_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F9R1_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F9R1_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F9R1_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F9R1_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F9R1_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F9R1_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F9R1_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F9R1_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F9R1_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F9R1_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F9R1_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F9R1_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F9R1_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F9R1_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F9R1_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F9R1_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F9R1_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F9R1_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F9R1_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F9R1_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F9R1_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F9R1_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F9R1_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F9R1_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F9R1_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F9R1_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F9R1_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F10R1 register  ******************/
-#define  CAN_F10R1_FB0                       ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F10R1_FB1                       ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F10R1_FB2                       ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F10R1_FB3                       ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F10R1_FB4                       ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F10R1_FB5                       ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F10R1_FB6                       ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F10R1_FB7                       ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F10R1_FB8                       ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F10R1_FB9                       ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F10R1_FB10                      ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F10R1_FB11                      ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F10R1_FB12                      ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F10R1_FB13                      ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F10R1_FB14                      ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F10R1_FB15                      ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F10R1_FB16                      ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F10R1_FB17                      ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F10R1_FB18                      ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F10R1_FB19                      ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F10R1_FB20                      ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F10R1_FB21                      ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F10R1_FB22                      ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F10R1_FB23                      ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F10R1_FB24                      ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F10R1_FB25                      ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F10R1_FB26                      ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F10R1_FB27                      ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F10R1_FB28                      ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F10R1_FB29                      ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F10R1_FB30                      ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F10R1_FB31                      ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F11R1 register  ******************/
-#define  CAN_F11R1_FB0                       ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F11R1_FB1                       ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F11R1_FB2                       ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F11R1_FB3                       ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F11R1_FB4                       ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F11R1_FB5                       ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F11R1_FB6                       ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F11R1_FB7                       ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F11R1_FB8                       ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F11R1_FB9                       ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F11R1_FB10                      ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F11R1_FB11                      ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F11R1_FB12                      ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F11R1_FB13                      ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F11R1_FB14                      ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F11R1_FB15                      ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F11R1_FB16                      ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F11R1_FB17                      ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F11R1_FB18                      ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F11R1_FB19                      ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F11R1_FB20                      ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F11R1_FB21                      ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F11R1_FB22                      ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F11R1_FB23                      ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F11R1_FB24                      ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F11R1_FB25                      ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F11R1_FB26                      ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F11R1_FB27                      ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F11R1_FB28                      ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F11R1_FB29                      ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F11R1_FB30                      ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F11R1_FB31                      ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F12R1 register  ******************/
-#define  CAN_F12R1_FB0                       ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F12R1_FB1                       ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F12R1_FB2                       ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F12R1_FB3                       ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F12R1_FB4                       ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F12R1_FB5                       ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F12R1_FB6                       ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F12R1_FB7                       ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F12R1_FB8                       ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F12R1_FB9                       ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F12R1_FB10                      ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F12R1_FB11                      ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F12R1_FB12                      ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F12R1_FB13                      ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F12R1_FB14                      ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F12R1_FB15                      ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F12R1_FB16                      ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F12R1_FB17                      ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F12R1_FB18                      ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F12R1_FB19                      ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F12R1_FB20                      ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F12R1_FB21                      ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F12R1_FB22                      ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F12R1_FB23                      ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F12R1_FB24                      ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F12R1_FB25                      ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F12R1_FB26                      ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F12R1_FB27                      ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F12R1_FB28                      ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F12R1_FB29                      ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F12R1_FB30                      ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F12R1_FB31                      ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F13R1 register  ******************/
-#define  CAN_F13R1_FB0                       ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F13R1_FB1                       ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F13R1_FB2                       ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F13R1_FB3                       ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F13R1_FB4                       ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F13R1_FB5                       ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F13R1_FB6                       ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F13R1_FB7                       ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F13R1_FB8                       ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F13R1_FB9                       ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F13R1_FB10                      ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F13R1_FB11                      ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F13R1_FB12                      ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F13R1_FB13                      ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F13R1_FB14                      ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F13R1_FB15                      ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F13R1_FB16                      ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F13R1_FB17                      ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F13R1_FB18                      ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F13R1_FB19                      ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F13R1_FB20                      ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F13R1_FB21                      ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F13R1_FB22                      ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F13R1_FB23                      ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F13R1_FB24                      ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F13R1_FB25                      ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F13R1_FB26                      ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F13R1_FB27                      ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F13R1_FB28                      ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F13R1_FB29                      ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F13R1_FB30                      ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F13R1_FB31                      ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F0R2 register  *******************/
-#define  CAN_F0R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F0R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F0R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F0R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F0R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F0R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F0R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F0R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F0R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F0R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F0R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F0R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F0R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F0R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F0R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F0R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F0R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F0R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F0R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F0R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F0R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F0R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F0R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F0R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F0R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F0R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F0R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F0R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F0R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F0R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F0R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F0R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F1R2 register  *******************/
-#define  CAN_F1R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F1R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F1R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F1R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F1R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F1R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F1R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F1R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F1R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F1R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F1R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F1R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F1R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F1R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F1R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F1R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F1R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F1R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F1R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F1R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F1R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F1R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F1R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F1R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F1R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F1R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F1R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F1R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F1R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F1R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F1R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F1R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F2R2 register  *******************/
-#define  CAN_F2R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F2R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F2R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F2R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F2R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F2R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F2R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F2R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F2R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F2R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F2R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F2R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F2R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F2R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F2R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F2R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F2R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F2R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F2R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F2R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F2R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F2R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F2R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F2R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F2R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F2R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F2R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F2R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F2R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F2R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F2R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F2R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F3R2 register  *******************/
-#define  CAN_F3R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F3R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F3R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F3R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F3R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F3R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F3R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F3R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F3R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F3R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F3R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F3R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F3R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F3R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F3R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F3R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F3R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F3R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F3R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F3R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F3R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F3R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F3R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F3R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F3R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F3R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F3R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F3R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F3R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F3R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F3R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F3R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F4R2 register  *******************/
-#define  CAN_F4R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F4R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F4R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F4R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F4R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F4R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F4R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F4R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F4R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F4R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F4R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F4R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F4R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F4R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F4R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F4R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F4R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F4R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F4R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F4R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F4R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F4R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F4R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F4R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F4R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F4R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F4R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F4R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F4R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F4R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F4R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F4R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F5R2 register  *******************/
-#define  CAN_F5R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F5R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F5R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F5R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F5R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F5R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F5R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F5R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F5R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F5R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F5R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F5R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F5R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F5R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F5R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F5R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F5R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F5R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F5R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F5R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F5R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F5R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F5R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F5R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F5R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F5R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F5R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F5R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F5R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F5R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F5R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F5R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F6R2 register  *******************/
-#define  CAN_F6R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F6R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F6R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F6R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F6R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F6R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F6R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F6R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F6R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F6R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F6R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F6R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F6R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F6R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F6R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F6R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F6R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F6R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F6R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F6R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F6R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F6R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F6R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F6R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F6R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F6R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F6R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F6R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F6R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F6R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F6R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F6R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F7R2 register  *******************/
-#define  CAN_F7R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F7R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F7R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F7R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F7R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F7R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F7R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F7R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F7R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F7R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F7R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F7R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F7R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F7R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F7R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F7R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F7R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F7R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F7R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F7R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F7R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F7R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F7R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F7R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F7R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F7R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F7R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F7R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F7R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F7R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F7R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F7R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F8R2 register  *******************/
-#define  CAN_F8R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F8R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F8R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F8R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F8R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F8R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F8R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F8R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F8R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F8R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F8R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F8R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F8R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F8R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F8R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F8R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F8R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F8R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F8R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F8R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F8R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F8R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F8R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F8R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F8R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F8R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F8R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F8R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F8R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F8R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F8R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F8R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F9R2 register  *******************/
-#define  CAN_F9R2_FB0                        ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F9R2_FB1                        ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F9R2_FB2                        ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F9R2_FB3                        ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F9R2_FB4                        ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F9R2_FB5                        ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F9R2_FB6                        ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F9R2_FB7                        ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F9R2_FB8                        ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F9R2_FB9                        ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F9R2_FB10                       ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F9R2_FB11                       ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F9R2_FB12                       ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F9R2_FB13                       ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F9R2_FB14                       ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F9R2_FB15                       ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F9R2_FB16                       ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F9R2_FB17                       ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F9R2_FB18                       ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F9R2_FB19                       ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F9R2_FB20                       ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F9R2_FB21                       ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F9R2_FB22                       ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F9R2_FB23                       ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F9R2_FB24                       ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F9R2_FB25                       ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F9R2_FB26                       ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F9R2_FB27                       ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F9R2_FB28                       ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F9R2_FB29                       ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F9R2_FB30                       ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F9R2_FB31                       ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F10R2 register  ******************/
-#define  CAN_F10R2_FB0                       ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F10R2_FB1                       ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F10R2_FB2                       ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F10R2_FB3                       ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F10R2_FB4                       ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F10R2_FB5                       ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F10R2_FB6                       ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F10R2_FB7                       ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F10R2_FB8                       ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F10R2_FB9                       ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F10R2_FB10                      ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F10R2_FB11                      ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F10R2_FB12                      ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F10R2_FB13                      ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F10R2_FB14                      ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F10R2_FB15                      ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F10R2_FB16                      ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F10R2_FB17                      ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F10R2_FB18                      ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F10R2_FB19                      ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F10R2_FB20                      ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F10R2_FB21                      ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F10R2_FB22                      ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F10R2_FB23                      ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F10R2_FB24                      ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F10R2_FB25                      ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F10R2_FB26                      ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F10R2_FB27                      ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F10R2_FB28                      ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F10R2_FB29                      ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F10R2_FB30                      ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F10R2_FB31                      ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F11R2 register  ******************/
-#define  CAN_F11R2_FB0                       ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F11R2_FB1                       ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F11R2_FB2                       ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F11R2_FB3                       ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F11R2_FB4                       ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F11R2_FB5                       ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F11R2_FB6                       ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F11R2_FB7                       ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F11R2_FB8                       ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F11R2_FB9                       ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F11R2_FB10                      ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F11R2_FB11                      ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F11R2_FB12                      ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F11R2_FB13                      ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F11R2_FB14                      ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F11R2_FB15                      ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F11R2_FB16                      ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F11R2_FB17                      ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F11R2_FB18                      ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F11R2_FB19                      ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F11R2_FB20                      ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F11R2_FB21                      ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F11R2_FB22                      ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F11R2_FB23                      ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F11R2_FB24                      ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F11R2_FB25                      ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F11R2_FB26                      ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F11R2_FB27                      ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F11R2_FB28                      ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F11R2_FB29                      ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F11R2_FB30                      ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F11R2_FB31                      ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F12R2 register  ******************/
-#define  CAN_F12R2_FB0                       ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F12R2_FB1                       ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F12R2_FB2                       ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F12R2_FB3                       ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F12R2_FB4                       ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F12R2_FB5                       ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F12R2_FB6                       ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F12R2_FB7                       ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F12R2_FB8                       ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F12R2_FB9                       ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F12R2_FB10                      ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F12R2_FB11                      ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F12R2_FB12                      ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F12R2_FB13                      ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F12R2_FB14                      ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F12R2_FB15                      ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F12R2_FB16                      ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F12R2_FB17                      ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F12R2_FB18                      ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F12R2_FB19                      ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F12R2_FB20                      ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F12R2_FB21                      ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F12R2_FB22                      ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F12R2_FB23                      ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F12R2_FB24                      ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F12R2_FB25                      ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F12R2_FB26                      ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F12R2_FB27                      ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F12R2_FB28                      ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F12R2_FB29                      ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F12R2_FB30                      ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F12R2_FB31                      ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-/*******************  Bit definition for CAN_F13R2 register  ******************/
-#define  CAN_F13R2_FB0                       ((uint32_t)0x00000001)        /*!<Filter bit 0 */
-#define  CAN_F13R2_FB1                       ((uint32_t)0x00000002)        /*!<Filter bit 1 */
-#define  CAN_F13R2_FB2                       ((uint32_t)0x00000004)        /*!<Filter bit 2 */
-#define  CAN_F13R2_FB3                       ((uint32_t)0x00000008)        /*!<Filter bit 3 */
-#define  CAN_F13R2_FB4                       ((uint32_t)0x00000010)        /*!<Filter bit 4 */
-#define  CAN_F13R2_FB5                       ((uint32_t)0x00000020)        /*!<Filter bit 5 */
-#define  CAN_F13R2_FB6                       ((uint32_t)0x00000040)        /*!<Filter bit 6 */
-#define  CAN_F13R2_FB7                       ((uint32_t)0x00000080)        /*!<Filter bit 7 */
-#define  CAN_F13R2_FB8                       ((uint32_t)0x00000100)        /*!<Filter bit 8 */
-#define  CAN_F13R2_FB9                       ((uint32_t)0x00000200)        /*!<Filter bit 9 */
-#define  CAN_F13R2_FB10                      ((uint32_t)0x00000400)        /*!<Filter bit 10 */
-#define  CAN_F13R2_FB11                      ((uint32_t)0x00000800)        /*!<Filter bit 11 */
-#define  CAN_F13R2_FB12                      ((uint32_t)0x00001000)        /*!<Filter bit 12 */
-#define  CAN_F13R2_FB13                      ((uint32_t)0x00002000)        /*!<Filter bit 13 */
-#define  CAN_F13R2_FB14                      ((uint32_t)0x00004000)        /*!<Filter bit 14 */
-#define  CAN_F13R2_FB15                      ((uint32_t)0x00008000)        /*!<Filter bit 15 */
-#define  CAN_F13R2_FB16                      ((uint32_t)0x00010000)        /*!<Filter bit 16 */
-#define  CAN_F13R2_FB17                      ((uint32_t)0x00020000)        /*!<Filter bit 17 */
-#define  CAN_F13R2_FB18                      ((uint32_t)0x00040000)        /*!<Filter bit 18 */
-#define  CAN_F13R2_FB19                      ((uint32_t)0x00080000)        /*!<Filter bit 19 */
-#define  CAN_F13R2_FB20                      ((uint32_t)0x00100000)        /*!<Filter bit 20 */
-#define  CAN_F13R2_FB21                      ((uint32_t)0x00200000)        /*!<Filter bit 21 */
-#define  CAN_F13R2_FB22                      ((uint32_t)0x00400000)        /*!<Filter bit 22 */
-#define  CAN_F13R2_FB23                      ((uint32_t)0x00800000)        /*!<Filter bit 23 */
-#define  CAN_F13R2_FB24                      ((uint32_t)0x01000000)        /*!<Filter bit 24 */
-#define  CAN_F13R2_FB25                      ((uint32_t)0x02000000)        /*!<Filter bit 25 */
-#define  CAN_F13R2_FB26                      ((uint32_t)0x04000000)        /*!<Filter bit 26 */
-#define  CAN_F13R2_FB27                      ((uint32_t)0x08000000)        /*!<Filter bit 27 */
-#define  CAN_F13R2_FB28                      ((uint32_t)0x10000000)        /*!<Filter bit 28 */
-#define  CAN_F13R2_FB29                      ((uint32_t)0x20000000)        /*!<Filter bit 29 */
-#define  CAN_F13R2_FB30                      ((uint32_t)0x40000000)        /*!<Filter bit 30 */
-#define  CAN_F13R2_FB31                      ((uint32_t)0x80000000)        /*!<Filter bit 31 */
-
-
-/******************************************************************************/
-/*                                                                            */
-/*                                 HDMI-CEC (CEC)                             */
-/*                                                                            */
-/******************************************************************************/
-
-/*******************  Bit definition for CEC_CR register  *********************/
-#define  CEC_CR_CECEN                        ((uint32_t)0x00000001)       /*!< CEC Enable                         */
-#define  CEC_CR_TXSOM                        ((uint32_t)0x00000002)       /*!< CEC Tx Start Of Message            */
-#define  CEC_CR_TXEOM                        ((uint32_t)0x00000004)       /*!< CEC Tx End Of Message              */
-
-/*******************  Bit definition for CEC_CFGR register  *******************/
-#define  CEC_CFGR_SFT                        ((uint32_t)0x00000007)       /*!< CEC Signal Free Time               */
-#define  CEC_CFGR_RXTOL                      ((uint32_t)0x00000008)       /*!< CEC Tolerance                      */
-#define  CEC_CFGR_BRESTP                     ((uint32_t)0x00000010)       /*!< CEC Rx Stop                        */
-#define  CEC_CFGR_BREGEN                     ((uint32_t)0x00000020)       /*!< CEC Bit Rising Error generation    */
-#define  CEC_CFGR_LREGEN                     ((uint32_t)0x00000040)       /*!< CEC Long Period Error generation   */
-#define  CEC_CFGR_BRDNOGEN                   ((uint32_t)0x00000080)       /*!< CEC Broadcast no Error generation  */
-#define  CEC_CFGR_SFTOPT                     ((uint32_t)0x00000100)       /*!< CEC Signal Free Time optional      */
-#define  CEC_CFGR_OAR                        ((uint32_t)0x7FFF0000)       /*!< CEC Own Address                    */
-#define  CEC_CFGR_LSTN                       ((uint32_t)0x80000000)       /*!< CEC Listen mode                    */
-
-/*******************  Bit definition for CEC_TXDR register  *******************/
-#define  CEC_TXDR_TXD                        ((uint32_t)0x000000FF)       /*!< CEC Tx Data                        */
-
-/*******************  Bit definition for CEC_RXDR register  *******************/
-#define  CEC_TXDR_RXD                        ((uint32_t)0x000000FF)       /*!< CEC Rx Data                        */
-
-/*******************  Bit definition for CEC_ISR register  ********************/
-#define  CEC_ISR_RXBR                        ((uint32_t)0x00000001)       /*!< CEC Rx-Byte Received                   */
-#define  CEC_ISR_RXEND                       ((uint32_t)0x00000002)       /*!< CEC End Of Reception                   */
-#define  CEC_ISR_RXOVR                       ((uint32_t)0x00000004)       /*!< CEC Rx-Overrun                         */
-#define  CEC_ISR_BRE                         ((uint32_t)0x00000008)       /*!< CEC Rx Bit Rising Error                */
-#define  CEC_ISR_SBPE                        ((uint32_t)0x00000010)       /*!< CEC Rx Short Bit period Error          */
-#define  CEC_ISR_LBPE                        ((uint32_t)0x00000020)       /*!< CEC Rx Long Bit period Error           */
-#define  CEC_ISR_RXACKE                      ((uint32_t)0x00000040)       /*!< CEC Rx Missing Acknowledge             */
-#define  CEC_ISR_ARBLST                      ((uint32_t)0x00000080)       /*!< CEC Arbitration Lost                   */
-#define  CEC_ISR_TXBR                        ((uint32_t)0x00000100)       /*!< CEC Tx Byte Request                    */
-#define  CEC_ISR_TXEND                       ((uint32_t)0x00000200)       /*!< CEC End of Transmission                */
-#define  CEC_ISR_TXUDR                       ((uint32_t)0x00000400)       /*!< CEC Tx-Buffer Underrun                 */
-#define  CEC_ISR_TXERR                       ((uint32_t)0x00000800)       /*!< CEC Tx-Error                           */
-#define  CEC_ISR_TXACKE                      ((uint32_t)0x00001000)       /*!< CEC Tx Missing Acknowledge             */
-
-/*******************  Bit definition for CEC_IER register  ********************/
-#define  CEC_IER_RXBRIE                      ((uint32_t)0x00000001)       /*!< CEC Rx-Byte Received IT Enable         */
-#define  CEC_IER_RXENDIE                     ((uint32_t)0x00000002)       /*!< CEC End Of Reception IT Enable         */
-#define  CEC_IER_RXOVRIE                     ((uint32_t)0x00000004)       /*!< CEC Rx-Overrun IT Enable               */
-#define  CEC_IER_BREIEIE                     ((uint32_t)0x00000008)       /*!< CEC Rx Bit Rising Error IT Enable      */
-#define  CEC_IER_SBPEIE                      ((uint32_t)0x00000010)       /*!< CEC Rx Short Bit period Error IT Enable*/
-#define  CEC_IER_LBPEIE                      ((uint32_t)0x00000020)       /*!< CEC Rx Long Bit period Error IT Enable */
-#define  CEC_IER_RXACKEIE                    ((uint32_t)0x00000040)       /*!< CEC Rx Missing Acknowledge IT Enable   */
-#define  CEC_IER_ARBLSTIE                    ((uint32_t)0x00000080)       /*!< CEC Arbitration Lost IT Enable         */
-#define  CEC_IER_TXBRIE                      ((uint32_t)0x00000100)       /*!< CEC Tx Byte Request  IT Enable         */
-#define  CEC_IER_TXENDIE                     ((uint32_t)0x00000200)       /*!< CEC End of Transmission IT Enable      */
-#define  CEC_IER_TXUDRIE                     ((uint32_t)0x00000400)       /*!< CEC Tx-Buffer Underrun IT Enable       */
-#define  CEC_IER_TXERRIE                     ((uint32_t)0x00000800)       /*!< CEC Tx-Error IT Enable                 */
-#define  CEC_IER_TXACKEIE                    ((uint32_t)0x00001000)       /*!< CEC Tx Missing Acknowledge IT Enable   */
-
-/******************************************************************************/
-/*                                                                            */
-/*                      Analog Comparators (COMP)                             */
-/*                                                                            */
-/******************************************************************************/
-/***********************  Bit definition for COMP_CSR register  ***************/
-/* COMP1 bits definition */
-#define COMP_CSR_COMP1EN               ((uint32_t)0x00000001) /*!< COMP1 enable */
-#define COMP_CSR_COMP1SW1              ((uint32_t)0x00000002) /*!< SW1 switch control */
-#define COMP_CSR_COMP1MODE             ((uint32_t)0x0000000C) /*!< COMP1 power mode */
-#define COMP_CSR_COMP1MODE_0           ((uint32_t)0x00000004) /*!< COMP1 power mode bit 0 */
-#define COMP_CSR_COMP1MODE_1           ((uint32_t)0x00000008) /*!< COMP1 power mode bit 1 */
-#define COMP_CSR_COMP1INSEL            ((uint32_t)0x00000070) /*!< COMP1 inverting input select */
-#define COMP_CSR_COMP1INSEL_0          ((uint32_t)0x00000010) /*!< COMP1 inverting input select bit 0 */
-#define COMP_CSR_COMP1INSEL_1          ((uint32_t)0x00000020) /*!< COMP1 inverting input select bit 1 */
-#define COMP_CSR_COMP1INSEL_2          ((uint32_t)0x00000040) /*!< COMP1 inverting input select bit 2 */
-#define COMP_CSR_COMP1OUTSEL           ((uint32_t)0x00000700) /*!< COMP1 output select */
-#define COMP_CSR_COMP1OUTSEL_0         ((uint32_t)0x00000100) /*!< COMP1 output select bit 0 */
-#define COMP_CSR_COMP1OUTSEL_1         ((uint32_t)0x00000200) /*!< COMP1 output select bit 1 */
-#define COMP_CSR_COMP1OUTSEL_2         ((uint32_t)0x00000400) /*!< COMP1 output select bit 2 */
-#define COMP_CSR_COMP1POL              ((uint32_t)0x00000800) /*!< COMP1 output polarity */
-#define COMP_CSR_COMP1HYST             ((uint32_t)0x00003000) /*!< COMP1 hysteresis */
-#define COMP_CSR_COMP1HYST_0           ((uint32_t)0x00001000) /*!< COMP1 hysteresis bit 0 */
-#define COMP_CSR_COMP1HYST_1           ((uint32_t)0x00002000) /*!< COMP1 hysteresis bit 1 */
-#define COMP_CSR_COMP1OUT              ((uint32_t)0x00004000) /*!< COMP1 output level */
-#define COMP_CSR_COMP1LOCK             ((uint32_t)0x00008000) /*!< COMP1 lock */
-/* COMP2 bits definition */
-#define COMP_CSR_COMP2EN               ((uint32_t)0x00010000) /*!< COMP2 enable */
-#define COMP_CSR_COMP2MODE             ((uint32_t)0x000C0000) /*!< COMP2 power mode */
-#define COMP_CSR_COMP2MODE_0           ((uint32_t)0x00040000) /*!< COMP2 power mode bit 0 */
-#define COMP_CSR_COMP2MODE_1           ((uint32_t)0x00080000) /*!< COMP2 power mode bit 1 */
-#define COMP_CSR_COMP2INSEL            ((uint32_t)0x00700000) /*!< COMP2 inverting input select */
-#define COMP_CSR_COMP2INSEL_0          ((uint32_t)0x00100000) /*!< COMP2 inverting input select bit 0 */
-#define COMP_CSR_COMP2INSEL_1          ((uint32_t)0x00200000) /*!< COMP2 inverting input select bit 1 */
-#define COMP_CSR_COMP2INSEL_2          ((uint32_t)0x00400000) /*!< COMP2 inverting input select bit 2 */
-#define COMP_CSR_WNDWEN                ((uint32_t)0x00800000) /*!< Comparators window mode enable */
-#define COMP_CSR_COMP2OUTSEL           ((uint32_t)0x07000000) /*!< COMP2 output select */
-#define COMP_CSR_COMP2OUTSEL_0         ((uint32_t)0x01000000) /*!< COMP2 output select bit 0 */
-#define COMP_CSR_COMP2OUTSEL_1         ((uint32_t)0x02000000) /*!< COMP2 output select bit 1 */
-#define COMP_CSR_COMP2OUTSEL_2         ((uint32_t)0x04000000) /*!< COMP2 output select bit 2 */
-#define COMP_CSR_COMP2POL              ((uint32_t)0x08000000) /*!< COMP2 output polarity */
-#define COMP_CSR_COMP2HYST             ((uint32_t)0x30000000) /*!< COMP2 hysteresis */
-#define COMP_CSR_COMP2HYST_0           ((uint32_t)0x10000000) /*!< COMP2 hysteresis bit 0 */
-#define COMP_CSR_COMP2HYST_1           ((uint32_t)0x20000000) /*!< COMP2 hysteresis bit 1 */
-#define COMP_CSR_COMP2OUT              ((uint32_t)0x40000000) /*!< COMP2 output level */
-#define COMP_CSR_COMP2LOCK             ((uint32_t)0x80000000) /*!< COMP2 lock */
-
-/******************************************************************************/
-/*                                                                            */
-/*                       CRC calculation unit (CRC)                           */
-/*                                                                            */
-/******************************************************************************/
-/*******************  Bit definition for CRC_DR register  *********************/
-#define  CRC_DR_DR                           ((uint32_t)0xFFFFFFFF) /*!< Data register bits */
-
-/*******************  Bit definition for CRC_IDR register  ********************/
-#define  CRC_IDR_IDR                         ((uint8_t)0xFF)        /*!< General-purpose 8-bit data register bits */
-
-/********************  Bit definition for CRC_CR register  ********************/
-#define  CRC_CR_RESET                        ((uint32_t)0x00000001) /*!< RESET the CRC computation unit bit */
-#define  CRC_CR_POLSIZE                      ((uint32_t)0x00000018) /*!< Polynomial size bits (only for STM32F072 devices)*/
-#define  CRC_CR_POLSIZE_0                    ((uint32_t)0x00000008) /*!< Polynomial size bit 0 (only for STM32F072 devices) */
-#define  CRC_CR_POLSIZE_1                    ((uint32_t)0x00000010) /*!< Polynomial size bit 1 (only for STM32F072 devices) */
-#define  CRC_CR_REV_IN                       ((uint32_t)0x00000060) /*!< REV_IN Reverse Input Data bits */
-#define  CRC_CR_REV_IN_0                     ((uint32_t)0x00000020) /*!< REV_IN Bit 0 */
-#define  CRC_CR_REV_IN_1                     ((uint32_t)0x00000040) /*!< REV_IN Bit 1 */
-#define  CRC_CR_REV_OUT                      ((uint32_t)0x00000080) /*!< REV_OUT Reverse Output Data bits */
-
-/*******************  Bit definition for CRC_INIT register  *******************/
-#define  CRC_INIT_INIT                       ((uint32_t)0xFFFFFFFF) /*!< Initial CRC value bits */
-
-/*******************  Bit definition for CRC_POL register  ********************/
-#define  CRC_POL_POL                         ((uint32_t)0xFFFFFFFF) /*!< Coefficients of the polynomial (only for STM32F072 devices) */
-
-/******************************************************************************/
-/*                                                                            */
-/*                          CRS Clock Recovery System                         */
-/*                   (Available only for STM32F072 devices)                */
-/******************************************************************************/
-
-/*******************  Bit definition for CRS_CR register  *********************/
-#define  CRS_CR_SYNCOKIE                     ((uint32_t)0x00000001) /* SYNC event OK interrupt enable        */
-#define  CRS_CR_SYNCWARNIE                   ((uint32_t)0x00000002) /* SYNC warning interrupt enable         */
-#define  CRS_CR_ERRIE                        ((uint32_t)0x00000004) /* SYNC error interrupt enable           */
-#define  CRS_CR_ESYNCIE                      ((uint32_t)0x00000008) /* Expected SYNC(ESYNCF) interrupt Enable*/
-#define  CRS_CR_CEN                          ((uint32_t)0x00000020) /* Frequency error counter enable        */
-#define  CRS_CR_AUTOTRIMEN                   ((uint32_t)0x00000040) /* Automatic trimming enable             */
-#define  CRS_CR_SWSYNC                       ((uint32_t)0x00000080) /* A Software SYNC event is generated    */
-#define  CRS_CR_TRIM                         ((uint32_t)0x00003F00) /* HSI48 oscillator smooth trimming      */
-
-/*******************  Bit definition for CRS_CFGR register  *********************/
-#define  CRS_CFGR_RELOAD                     ((uint32_t)0x0000FFFF) /* Counter reload value               */
-#define  CRS_CFGR_FELIM                      ((uint32_t)0x00FF0000) /* Frequency error limit              */
-#define  CRS_CFGR_SYNCDIV                    ((uint32_t)0x07000000) /* SYNC divider                       */
-#define  CRS_CFGR_SYNCDIV_0                  ((uint32_t)0x01000000) /* Bit 0                              */
-#define  CRS_CFGR_SYNCDIV_1                  ((uint32_t)0x02000000) /* Bit 1                              */
-#define  CRS_CFGR_SYNCDIV_2                  ((uint32_t)0x04000000) /* Bit 2                              */
-#define  CRS_CFGR_SYNCSRC                    ((uint32_t)0x30000000) /* SYNC signal source selection       */
-#define  CRS_CFGR_SYNCSRC_0                  ((uint32_t)0x10000000) /* Bit 0                              */
-#define  CRS_CFGR_SYNCSRC_1                  ((uint32_t)0x20000000) /* Bit 1                              */
-#define  CRS_CFGR_SYNCPOL                    ((uint32_t)0x80000000) /* SYNC polarity selection            */
-
-/*******************  Bit definition for CRS_ISR register  *********************/
-#define  CRS_ISR_SYNCOKF                     ((uint32_t)0x00000001) /* SYNC event OK flag             */
-#define  CRS_ISR_SYNCWARNF                   ((uint32_t)0x00000002) /* SYNC warning                   */
-#define  CRS_ISR_ERRF                        ((uint32_t)0x00000004) /* SYNC error flag                */
-#define  CRS_ISR_ESYNCF                      ((uint32_t)0x00000008) /* Expected SYNC flag             */
-#define  CRS_ISR_SYNCERR                     ((uint32_t)0x00000100) /* SYNC error                     */
-#define  CRS_ISR_SYNCMISS                    ((uint32_t)0x00000200) /* SYNC missed                    */
-#define  CRS_ISR_TRIMOVF                     ((uint32_t)0x00000400) /* Trimming overflow or underflow */
-#define  CRS_ISR_FEDIR                       ((uint32_t)0x00008000) /* Frequency error direction      */
-#define  CRS_ISR_FECAP                       ((uint32_t)0xFFFF0000) /* Frequency error capture        */
-
-/*******************  Bit definition for CRS_ICR register  *********************/
-#define  CRS_ICR_SYNCOKC                     ((uint32_t)0x00000001) /* SYNC event OK clear flag     */
-#define  CRS_ICR_SYNCWARNC                   ((uint32_t)0x00000002) /* SYNC warning clear flag      */
-#define  CRS_ICR_ERRC                        ((uint32_t)0x00000004) /* Error clear flag        */
-#define  CRS_ICR_ESYNCC                      ((uint32_t)0x00000008) /* Expected SYNC clear flag     */
-
-/******************************************************************************/
-/*                                                                            */
-/*                 Digital to Analog Converter (DAC)                          */
-/*                                                                            */
-/******************************************************************************/
-/********************  Bit definition for DAC_CR register  ********************/
-#define  DAC_CR_EN1                          ((uint32_t)0x00000001)        /*!< DAC channel1 enable */
-#define  DAC_CR_BOFF1                        ((uint32_t)0x00000002)        /*!< DAC channel1 output buffer disable */
-#define  DAC_CR_TEN1                         ((uint32_t)0x00000004)        /*!< DAC channel1 Trigger enable */
-
-#define  DAC_CR_TSEL1                        ((uint32_t)0x00000038)        /*!< TSEL1[2:0] (DAC channel1 Trigger selection) */
-#define  DAC_CR_TSEL1_0                      ((uint32_t)0x00000008)        /*!< Bit 0 */
-#define  DAC_CR_TSEL1_1                      ((uint32_t)0x00000010)        /*!< Bit 1 */
-#define  DAC_CR_TSEL1_2                      ((uint32_t)0x00000020)        /*!< Bit 2 */
-
-#define  DAC_CR_WAVE1                        ((uint32_t)0x000000C0)        /*!< WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable)(only for STM32F072 devices) */
-#define  DAC_CR_WAVE1_0                      ((uint32_t)0x00000040)        /*!< Bit 0 */
-#define  DAC_CR_WAVE1_1                      ((uint32_t)0x00000080)        /*!< Bit 1 */
-
-#define  DAC_CR_MAMP1                        ((uint32_t)0x00000F00)        /*!< MAMP1[3:0] (DAC channel1 Mask/Amplitude selector) (only for STM32F072 devices) */
-#define  DAC_CR_MAMP1_0                      ((uint32_t)0x00000100)        /*!< Bit 0 */
-#define  DAC_CR_MAMP1_1                      ((uint32_t)0x00000200)        /*!< Bit 1 */
-#define  DAC_CR_MAMP1_2                      ((uint32_t)0x00000400)        /*!< Bit 2 */
-#define  DAC_CR_MAMP1_3                      ((uint32_t)0x00000800)        /*!< Bit 3 */
-
-#define  DAC_CR_DMAEN1                       ((uint32_t)0x00001000)        /*!< DAC channel1 DMA enable */
-#define  DAC_CR_DMAUDRIE1                    ((uint32_t)0x00002000)        /*!<DAC channel1 DMA Underrun Interrupt enable */
-#define  DAC_CR_EN2                          ((uint32_t)0x00010000)        /*!< DAC channel2 enable */
-#define  DAC_CR_BOFF2                        ((uint32_t)0x00020000)        /*!< DAC channel2 output buffer disable */
-#define  DAC_CR_TEN2                         ((uint32_t)0x00040000)        /*!< DAC channel2 Trigger enable */
-
-#define  DAC_CR_TSEL2                        ((uint32_t)0x00380000)        /*!< TSEL2[2:0] (DAC channel2 Trigger selection) */
-#define  DAC_CR_TSEL2_0                      ((uint32_t)0x00080000)        /*!< Bit 0 */
-#define  DAC_CR_TSEL2_1                      ((uint32_t)0x00100000)        /*!< Bit 1 */
-#define  DAC_CR_TSEL2_2                      ((uint32_t)0x00200000)        /*!< Bit 2 */
-
-#define  DAC_CR_WAVE2                        ((uint32_t)0x00C00000)        /*!< WAVE2[1:0] (DAC channel2 noise/triangle wave generation enable) */
-#define  DAC_CR_WAVE2_0                      ((uint32_t)0x00400000)        /*!< Bit 0 */
-#define  DAC_CR_WAVE2_1                      ((uint32_t)0x00800000)        /*!< Bit 1 */
-
-#define  DAC_CR_MAMP2                        ((uint32_t)0x0F000000)        /*!< MAMP2[3:0] (DAC channel2 Mask/Amplitude selector) */
-#define  DAC_CR_MAMP2_0                      ((uint32_t)0x01000000)        /*!< Bit 0 */
-#define  DAC_CR_MAMP2_1                      ((uint32_t)0x02000000)        /*!< Bit 1 */
-#define  DAC_CR_MAMP2_2                      ((uint32_t)0x04000000)        /*!< Bit 2 */
-#define  DAC_CR_MAMP2_3                      ((uint32_t)0x08000000)        /*!< Bit 3 */
-
-#define  DAC_CR_DMAEN2                       ((uint32_t)0x10000000)        /*!< DAC channel2 DMA enabled */
-#define  DAC_CR_DMAUDRIE2                    ((uint32_t)0x20000000)        /*!<DAC channel2 DMA Underrun Interrupt enable */
-
-/*****************  Bit definition for DAC_SWTRIGR register  ******************/
-#define  DAC_SWTRIGR_SWTRIG1                 ((uint32_t)0x00000001)        /*!<DAC channel1 software trigger */
-#define  DAC_SWTRIGR_SWTRIG2                 ((uint32_t)0x00000002)        /*!<DAC channel2 software trigger */
-
-/*****************  Bit definition for DAC_DHR12R1 register  ******************/
-#define  DAC_DHR12R1_DACC1DHR                ((uint32_t)0x00000FFF)        /*!<DAC channel1 12-bit Right aligned data */
-
-/*****************  Bit definition for DAC_DHR12L1 register  ******************/
-#define  DAC_DHR12L1_DACC1DHR                ((uint32_t)0x0000FFF0)        /*!<DAC channel1 12-bit Left aligned data */
-
-/******************  Bit definition for DAC_DHR8R1 register  ******************/
-#define  DAC_DHR8R1_DACC1DHR                 ((uint32_t)0x000000FF)         /*!<DAC channel1 8-bit Right aligned data */
-
-/*******************  Bit definition for DAC_DOR1 register  *******************/
-#define  DAC_DOR1_DACC1DOR                   ((uint32_t)0x00000FFF)        /*!<DAC channel1 data output */
-
-/********************  Bit definition for DAC_SR register  ********************/
-#define  DAC_SR_DMAUDR1                      ((uint32_t)0x00002000)        /*!< DAC channel1 DMA underrun flag */
-#define  DAC_SR_DMAUDR2                      ((uint32_t)0x20000000)        /*!< DAC channel2 DMA underrun flag (only for STM32F072 and STM32F042 devices) */
-
-/******************************************************************************/
-/*                                                                            */
-/*                           Debug MCU (DBGMCU)                               */
-/*                                                                            */
-/******************************************************************************/
-
-/****************  Bit definition for DBGMCU_IDCODE register  *****************/
-#define  DBGMCU_IDCODE_DEV_ID                ((uint32_t)0x00000FFF)        /*!< Device Identifier */
-
-#define  DBGMCU_IDCODE_REV_ID                ((uint32_t)0xFFFF0000)        /*!< REV_ID[15:0] bits (Revision Identifier) */
-#define  DBGMCU_IDCODE_REV_ID_0              ((uint32_t)0x00010000)        /*!< Bit 0 */
-#define  DBGMCU_IDCODE_REV_ID_1              ((uint32_t)0x00020000)        /*!< Bit 1 */
-#define  DBGMCU_IDCODE_REV_ID_2              ((uint32_t)0x00040000)        /*!< Bit 2 */
-#define  DBGMCU_IDCODE_REV_ID_3              ((uint32_t)0x00080000)        /*!< Bit 3 */
-#define  DBGMCU_IDCODE_REV_ID_4              ((uint32_t)0x00100000)        /*!< Bit 4 */
-#define  DBGMCU_IDCODE_REV_ID_5              ((uint32_t)0x00200000)        /*!< Bit 5 */
-#define  DBGMCU_IDCODE_REV_ID_6              ((uint32_t)0x00400000)        /*!< Bit 6 */
-#define  DBGMCU_IDCODE_REV_ID_7              ((uint32_t)0x00800000)        /*!< Bit 7 */
-#define  DBGMCU_IDCODE_REV_ID_8              ((uint32_t)0x01000000)        /*!< Bit 8 */
-#define  DBGMCU_IDCODE_REV_ID_9              ((uint32_t)0x02000000)        /*!< Bit 9 */
-#define  DBGMCU_IDCODE_REV_ID_10             ((uint32_t)0x04000000)        /*!< Bit 10 */
-#define  DBGMCU_IDCODE_REV_ID_11             ((uint32_t)0x08000000)        /*!< Bit 11 */
-#define  DBGMCU_IDCODE_REV_ID_12             ((uint32_t)0x10000000)        /*!< Bit 12 */
-#define  DBGMCU_IDCODE_REV_ID_13             ((uint32_t)0x20000000)        /*!< Bit 13 */
-#define  DBGMCU_IDCODE_REV_ID_14             ((uint32_t)0x40000000)        /*!< Bit 14 */
-#define  DBGMCU_IDCODE_REV_ID_15             ((uint32_t)0x80000000)        /*!< Bit 15 */
-
-/******************  Bit definition for DBGMCU_CR register  *******************/
-#define  DBGMCU_CR_DBG_STOP                  ((uint32_t)0x00000002)        /*!< Debug Stop Mode */
-#define  DBGMCU_CR_DBG_STANDBY               ((uint32_t)0x00000004)        /*!< Debug Standby mode */
-
-/******************  Bit definition for DBGMCU_APB1_FZ register  **************/
-#define  DBGMCU_APB1_FZ_DBG_TIM2_STOP        ((uint32_t)0x00000001)        /*!< TIM2 counter stopped when core is halted */
-#define  DBGMCU_APB1_FZ_DBG_TIM3_STOP        ((uint32_t)0x00000002)        /*!< TIM3 counter stopped when core is halted */
-#define  DBGMCU_APB1_FZ_DBG_TIM6_STOP        ((uint32_t)0x00000010)        /*!< TIM6 counter stopped when core is halted (not available on STM32F042 devices)*/
-#define  DBGMCU_APB1_FZ_DBG_TIM7_STOP        ((uint32_t)0x00000020)        /*!< TIM7 counter stopped when core is halted (only for STM32F072 devices) */
-#define  DBGMCU_APB1_FZ_DBG_TIM14_STOP       ((uint32_t)0x00000100)        /*!< TIM14 counter stopped when core is halted */
-#define  DBGMCU_APB1_FZ_DBG_RTC_STOP         ((uint32_t)0x00000400)        /*!< RTC Calendar frozen when core is halted */
-#define  DBGMCU_APB1_FZ_DBG_WWDG_STOP        ((uint32_t)0x00000800)        /*!< Debug Window Watchdog stopped when Core is halted */
-#define  DBGMCU_APB1_FZ_DBG_IWDG_STOP        ((uint32_t)0x00001000)        /*!< Debug Independent Watchdog stopped when Core is halted */
-#define  DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT    ((uint32_t)0x00200000)   /*!< I2C1 SMBUS timeout mode stopped when Core is halted */
-#define  DBGMCU_APB1_FZ_DBG_CAN_STOP         ((uint32_t)0x02000000)        /*!< CAN debug stopped when Core is halted (only for STM32F072 devices) */
-
-/******************  Bit definition for DBGMCU_APB2_FZ register  **************/
-#define  DBGMCU_APB2_FZ_DBG_TIM1_STOP        ((uint32_t)0x00000800)        /*!< TIM1 counter stopped when core is halted */
-#define  DBGMCU_APB2_FZ_DBG_TIM15_STOP       ((uint32_t)0x00010000)        /*!< TIM15 counter stopped when core is halted (not available on STM32F042 devices) */
-#define  DBGMCU_APB2_FZ_DBG_TIM16_STOP       ((uint32_t)0x00020000)        /*!< TIM16 counter stopped when core is halted */
-#define  DBGMCU_APB2_FZ_DBG_TIM17_STOP       ((uint32_t)0x00040000)        /*!< TIM17 counter stopped when core is halted */
-
-/******************************************************************************/
-/*                                                                            */
-/*                           DMA Controller (DMA)                             */
-/*                                                                            */
-/******************************************************************************/
-
-/*******************  Bit definition for DMA_ISR register  ********************/
-#define  DMA_ISR_GIF1                        ((uint32_t)0x00000001)        /*!< Channel 1 Global interrupt flag    */
-#define  DMA_ISR_TCIF1                       ((uint32_t)0x00000002)        /*!< Channel 1 Transfer Complete flag   */
-#define  DMA_ISR_HTIF1                       ((uint32_t)0x00000004)        /*!< Channel 1 Half Transfer flag       */
-#define  DMA_ISR_TEIF1                       ((uint32_t)0x00000008)        /*!< Channel 1 Transfer Error flag      */
-#define  DMA_ISR_GIF2                        ((uint32_t)0x00000010)        /*!< Channel 2 Global interrupt flag    */
-#define  DMA_ISR_TCIF2                       ((uint32_t)0x00000020)        /*!< Channel 2 Transfer Complete flag   */
-#define  DMA_ISR_HTIF2                       ((uint32_t)0x00000040)        /*!< Channel 2 Half Transfer flag       */
-#define  DMA_ISR_TEIF2                       ((uint32_t)0x00000080)        /*!< Channel 2 Transfer Error flag      */
-#define  DMA_ISR_GIF3                        ((uint32_t)0x00000100)        /*!< Channel 3 Global interrupt flag    */
-#define  DMA_ISR_TCIF3                       ((uint32_t)0x00000200)        /*!< Channel 3 Transfer Complete flag   */
-#define  DMA_ISR_HTIF3                       ((uint32_t)0x00000400)        /*!< Channel 3 Half Transfer flag       */
-#define  DMA_ISR_TEIF3                       ((uint32_t)0x00000800)        /*!< Channel 3 Transfer Error flag      */
-#define  DMA_ISR_GIF4                        ((uint32_t)0x00001000)        /*!< Channel 4 Global interrupt flag    */
-#define  DMA_ISR_TCIF4                       ((uint32_t)0x00002000)        /*!< Channel 4 Transfer Complete flag   */
-#define  DMA_ISR_HTIF4                       ((uint32_t)0x00004000)        /*!< Channel 4 Half Transfer flag       */
-#define  DMA_ISR_TEIF4                       ((uint32_t)0x00008000)        /*!< Channel 4 Transfer Error flag      */
-#define  DMA_ISR_GIF5                        ((uint32_t)0x00010000)        /*!< Channel 5 Global interrupt flag    */
-#define  DMA_ISR_TCIF5                       ((uint32_t)0x00020000)        /*!< Channel 5 Transfer Complete flag   */
-#define  DMA_ISR_HTIF5                       ((uint32_t)0x00040000)        /*!< Channel 5 Half Transfer flag       */
-#define  DMA_ISR_TEIF5                       ((uint32_t)0x00080000)        /*!< Channel 5 Transfer Error flag      */
-#define  DMA_ISR_GIF6                        ((uint32_t)0x00100000)        /*!< Channel 6 Global interrupt flag (only for STM32F072 devices) */
-#define  DMA_ISR_TCIF6                       ((uint32_t)0x00200000)        /*!< Channel 6 Transfer Complete flag (only for STM32F072 devices) */
-#define  DMA_ISR_HTIF6                       ((uint32_t)0x00400000)        /*!< Channel 6 Half Transfer flag (only for STM32F072 devices) */
-#define  DMA_ISR_TEIF6                       ((uint32_t)0x00800000)        /*!< Channel 6 Transfer Error flag (only for STM32F072 devices) */
-#define  DMA_ISR_GIF7                        ((uint32_t)0x01000000)        /*!< Channel 7 Global interrupt flag (only for STM32F072 devices) */
-#define  DMA_ISR_TCIF7                       ((uint32_t)0x02000000)        /*!< Channel 7 Transfer Complete flag (only for STM32F072 devices) */
-#define  DMA_ISR_HTIF7                       ((uint32_t)0x04000000)        /*!< Channel 7 Half Transfer flag (only for STM32F072 devices) */
-#define  DMA_ISR_TEIF7                       ((uint32_t)0x08000000)        /*!< Channel 7 Transfer Error flag (only for STM32F072 devices) */
-
-/*******************  Bit definition for DMA_IFCR register  *******************/
-#define  DMA_IFCR_CGIF1                      ((uint32_t)0x00000001)        /*!< Channel 1 Global interrupt clear    */
-#define  DMA_IFCR_CTCIF1                     ((uint32_t)0x00000002)        /*!< Channel 1 Transfer Complete clear   */
-#define  DMA_IFCR_CHTIF1                     ((uint32_t)0x00000004)        /*!< Channel 1 Half Transfer clear       */
-#define  DMA_IFCR_CTEIF1                     ((uint32_t)0x00000008)        /*!< Channel 1 Transfer Error clear      */
-#define  DMA_IFCR_CGIF2                      ((uint32_t)0x00000010)        /*!< Channel 2 Global interrupt clear    */
-#define  DMA_IFCR_CTCIF2                     ((uint32_t)0x00000020)        /*!< Channel 2 Transfer Complete clear   */
-#define  DMA_IFCR_CHTIF2                     ((uint32_t)0x00000040)        /*!< Channel 2 Half Transfer clear       */
-#define  DMA_IFCR_CTEIF2                     ((uint32_t)0x00000080)        /*!< Channel 2 Transfer Error clear      */
-#define  DMA_IFCR_CGIF3                      ((uint32_t)0x00000100)        /*!< Channel 3 Global interrupt clear    */
-#define  DMA_IFCR_CTCIF3                     ((uint32_t)0x00000200)        /*!< Channel 3 Transfer Complete clear   */
-#define  DMA_IFCR_CHTIF3                     ((uint32_t)0x00000400)        /*!< Channel 3 Half Transfer clear       */
-#define  DMA_IFCR_CTEIF3                     ((uint32_t)0x00000800)        /*!< Channel 3 Transfer Error clear      */
-#define  DMA_IFCR_CGIF4                      ((uint32_t)0x00001000)        /*!< Channel 4 Global interrupt clear    */
-#define  DMA_IFCR_CTCIF4                     ((uint32_t)0x00002000)        /*!< Channel 4 Transfer Complete clear   */
-#define  DMA_IFCR_CHTIF4                     ((uint32_t)0x00004000)        /*!< Channel 4 Half Transfer clear       */
-#define  DMA_IFCR_CTEIF4                     ((uint32_t)0x00008000)        /*!< Channel 4 Transfer Error clear      */
-#define  DMA_IFCR_CGIF5                      ((uint32_t)0x00010000)        /*!< Channel 5 Global interrupt clear    */
-#define  DMA_IFCR_CTCIF5                     ((uint32_t)0x00020000)        /*!< Channel 5 Transfer Complete clear   */
-#define  DMA_IFCR_CHTIF5                     ((uint32_t)0x00040000)        /*!< Channel 5 Half Transfer clear       */
-#define  DMA_IFCR_CTEIF5                     ((uint32_t)0x00080000)        /*!< Channel 5 Transfer Error clear      */
-#define  DMA_IFCR_CGIF6                      ((uint32_t)0x00100000)        /*!< Channel 6 Global interrupt clear (only for STM32F072 devices) */
-#define  DMA_IFCR_CTCIF6                     ((uint32_t)0x00200000)        /*!< Channel 6 Transfer Complete clear (only for STM32F072 devices) */
-#define  DMA_IFCR_CHTIF6                     ((uint32_t)0x00400000)        /*!< Channel 6 Half Transfer clear (only for STM32F072 devices) */
-#define  DMA_IFCR_CTEIF6                     ((uint32_t)0x00800000)        /*!< Channel 6 Transfer Error clear (only for STM32F072 devices) */
-#define  DMA_IFCR_CGIF7                      ((uint32_t)0x01000000)        /*!< Channel 7 Global interrupt clear (only for STM32F072 devices) */
-#define  DMA_IFCR_CTCIF7                     ((uint32_t)0x02000000)        /*!< Channel 7 Transfer Complete clear (only for STM32F072 devices) */
-#define  DMA_IFCR_CHTIF7                     ((uint32_t)0x04000000)        /*!< Channel 7 Half Transfer clear (only for STM32F072 devices) */
-#define  DMA_IFCR_CTEIF7                     ((uint32_t)0x08000000)        /*!< Channel 7 Transfer Error clear (only for STM32F072 devices) */
-
-/*******************  Bit definition for DMA_CCR register  ********************/
-#define  DMA_CCR_EN                          ((uint32_t)0x00000001)        /*!< Channel enable                      */
-#define  DMA_CCR_TCIE                        ((uint32_t)0x00000002)        /*!< Transfer complete interrupt enable  */
-#define  DMA_CCR_HTIE                        ((uint32_t)0x00000004)        /*!< Half Transfer interrupt enable      */
-#define  DMA_CCR_TEIE                        ((uint32_t)0x00000008)        /*!< Transfer error interrupt enable     */
-#define  DMA_CCR_DIR                         ((uint32_t)0x00000010)        /*!< Data transfer direction             */
-#define  DMA_CCR_CIRC                        ((uint32_t)0x00000020)        /*!< Circular mode                       */
-#define  DMA_CCR_PINC                        ((uint32_t)0x00000040)        /*!< Peripheral increment mode           */
-#define  DMA_CCR_MINC                        ((uint32_t)0x00000080)        /*!< Memory increment mode               */
-
-#define  DMA_CCR_PSIZE                       ((uint32_t)0x00000300)        /*!< PSIZE[1:0] bits (Peripheral size)   */
-#define  DMA_CCR_PSIZE_0                     ((uint32_t)0x00000100)        /*!< Bit 0                               */
-#define  DMA_CCR_PSIZE_1                     ((uint32_t)0x00000200)        /*!< Bit 1                               */
-
-#define  DMA_CCR_MSIZE                       ((uint32_t)0x00000C00)        /*!< MSIZE[1:0] bits (Memory size)       */
-#define  DMA_CCR_MSIZE_0                     ((uint32_t)0x00000400)        /*!< Bit 0                               */
-#define  DMA_CCR_MSIZE_1                     ((uint32_t)0x00000800)        /*!< Bit 1                               */
-
-#define  DMA_CCR_PL                          ((uint32_t)0x00003000)        /*!< PL[1:0] bits(Channel Priority level)*/
-#define  DMA_CCR_PL_0                        ((uint32_t)0x00001000)        /*!< Bit 0                               */
-#define  DMA_CCR_PL_1                        ((uint32_t)0x00002000)        /*!< Bit 1                               */
-
-#define  DMA_CCR_MEM2MEM                     ((uint32_t)0x00004000)        /*!< Memory to memory mode               */
-
-/******************  Bit definition for DMA_CNDTR register  *******************/
-#define  DMA_CNDTR_NDT                       ((uint32_t)0x0000FFFF)        /*!< Number of data to Transfer          */
-
-/******************  Bit definition for DMA_CPAR register  ********************/
-#define  DMA_CPAR_PA                         ((uint32_t)0xFFFFFFFF)        /*!< Peripheral Address                  */
-
-/******************  Bit definition for DMA_CMAR register  ********************/
-#define  DMA_CMAR_MA                         ((uint32_t)0xFFFFFFFF)        /*!< Memory Address                      */
-
-/******************************************************************************/
-/*                                                                            */
-/*                 External Interrupt/Event Controller (EXTI)                 */
-/*                                                                            */
-/******************************************************************************/
-/*******************  Bit definition for EXTI_IMR register  *******************/
-#define  EXTI_IMR_MR0                        ((uint32_t)0x00000001)        /*!< Interrupt Mask on line 0  */
-#define  EXTI_IMR_MR1                        ((uint32_t)0x00000002)        /*!< Interrupt Mask on line 1  */
-#define  EXTI_IMR_MR2                        ((uint32_t)0x00000004)        /*!< Interrupt Mask on line 2  */
-#define  EXTI_IMR_MR3                        ((uint32_t)0x00000008)        /*!< Interrupt Mask on line 3  */
-#define  EXTI_IMR_MR4                        ((uint32_t)0x00000010)        /*!< Interrupt Mask on line 4  */
-#define  EXTI_IMR_MR5                        ((uint32_t)0x00000020)        /*!< Interrupt Mask on line 5  */
-#define  EXTI_IMR_MR6                        ((uint32_t)0x00000040)        /*!< Interrupt Mask on line 6  */
-#define  EXTI_IMR_MR7                        ((uint32_t)0x00000080)        /*!< Interrupt Mask on line 7  */
-#define  EXTI_IMR_MR8                        ((uint32_t)0x00000100)        /*!< Interrupt Mask on line 8  */
-#define  EXTI_IMR_MR9                        ((uint32_t)0x00000200)        /*!< Interrupt Mask on line 9  */
-#define  EXTI_IMR_MR10                       ((uint32_t)0x00000400)        /*!< Interrupt Mask on line 10 */
-#define  EXTI_IMR_MR11                       ((uint32_t)0x00000800)        /*!< Interrupt Mask on line 11 */
-#define  EXTI_IMR_MR12                       ((uint32_t)0x00001000)        /*!< Interrupt Mask on line 12 */
-#define  EXTI_IMR_MR13                       ((uint32_t)0x00002000)        /*!< Interrupt Mask on line 13 */
-#define  EXTI_IMR_MR14                       ((uint32_t)0x00004000)        /*!< Interrupt Mask on line 14 */
-#define  EXTI_IMR_MR15                       ((uint32_t)0x00008000)        /*!< Interrupt Mask on line 15 */
-#define  EXTI_IMR_MR16                       ((uint32_t)0x00010000)        /*!< Interrupt Mask on line 16 */
-#define  EXTI_IMR_MR17                       ((uint32_t)0x00020000)        /*!< Interrupt Mask on line 17 */
-#define  EXTI_IMR_MR18                       ((uint32_t)0x00040000)        /*!< Interrupt Mask on line 18 */
-#define  EXTI_IMR_MR19                       ((uint32_t)0x00080000)        /*!< Interrupt Mask on line 19 */
-#define  EXTI_IMR_MR20                       ((uint32_t)0x00100000)        /*!< Interrupt Mask on line 20 */
-#define  EXTI_IMR_MR21                       ((uint32_t)0x00200000)        /*!< Interrupt Mask on line 21 */
-#define  EXTI_IMR_MR22                       ((uint32_t)0x00400000)        /*!< Interrupt Mask on line 22 */
-#define  EXTI_IMR_MR23                       ((uint32_t)0x00800000)        /*!< Interrupt Mask on line 23 */
-#define  EXTI_IMR_MR24                       ((uint32_t)0x01000000)        /*!< Interrupt Mask on line 24 */
-#define  EXTI_IMR_MR25                       ((uint32_t)0x02000000)        /*!< Interrupt Mask on line 25 */
-#define  EXTI_IMR_MR26                       ((uint32_t)0x04000000)        /*!< Interrupt Mask on line 26 */
-#define  EXTI_IMR_MR27                       ((uint32_t)0x08000000)        /*!< Interrupt Mask on line 27 */
-#define  EXTI_IMR_MR28                       ((uint32_t)0x10000000)        /*!< Interrupt Mask on line 28 */
-#define  EXTI_IMR_MR29                       ((uint32_t)0x20000000)        /*!< Interrupt Mask on line 29 */
-#define  EXTI_IMR_MR30                       ((uint32_t)0x40000000)        /*!< Interrupt Mask on line 30 */
-#define  EXTI_IMR_MR31                       ((uint32_t)0x80000000)        /*!< Interrupt Mask on line 31 */
-
-/******************  Bit definition for EXTI_EMR register  ********************/
-#define  EXTI_EMR_MR0                        ((uint32_t)0x00000001)        /*!< Event Mask on line 0  */
-#define  EXTI_EMR_MR1                        ((uint32_t)0x00000002)        /*!< Event Mask on line 1  */
-#define  EXTI_EMR_MR2                        ((uint32_t)0x00000004)        /*!< Event Mask on line 2  */
-#define  EXTI_EMR_MR3                        ((uint32_t)0x00000008)        /*!< Event Mask on line 3  */
-#define  EXTI_EMR_MR4                        ((uint32_t)0x00000010)        /*!< Event Mask on line 4  */
-#define  EXTI_EMR_MR5                        ((uint32_t)0x00000020)        /*!< Event Mask on line 5  */
-#define  EXTI_EMR_MR6                        ((uint32_t)0x00000040)        /*!< Event Mask on line 6  */
-#define  EXTI_EMR_MR7                        ((uint32_t)0x00000080)        /*!< Event Mask on line 7  */
-#define  EXTI_EMR_MR8                        ((uint32_t)0x00000100)        /*!< Event Mask on line 8  */
-#define  EXTI_EMR_MR9                        ((uint32_t)0x00000200)        /*!< Event Mask on line 9  */
-#define  EXTI_EMR_MR10                       ((uint32_t)0x00000400)        /*!< Event Mask on line 10 */
-#define  EXTI_EMR_MR11                       ((uint32_t)0x00000800)        /*!< Event Mask on line 11 */
-#define  EXTI_EMR_MR12                       ((uint32_t)0x00001000)        /*!< Event Mask on line 12 */
-#define  EXTI_EMR_MR13                       ((uint32_t)0x00002000)        /*!< Event Mask on line 13 */
-#define  EXTI_EMR_MR14                       ((uint32_t)0x00004000)        /*!< Event Mask on line 14 */
-#define  EXTI_EMR_MR15                       ((uint32_t)0x00008000)        /*!< Event Mask on line 15 */
-#define  EXTI_EMR_MR16                       ((uint32_t)0x00010000)        /*!< Event Mask on line 16 */
-#define  EXTI_EMR_MR17                       ((uint32_t)0x00020000)        /*!< Event Mask on line 17 */
-#define  EXTI_EMR_MR18                       ((uint32_t)0x00040000)        /*!< Event Mask on line 18 */
-#define  EXTI_EMR_MR19                       ((uint32_t)0x00080000)        /*!< Event Mask on line 19 */
-#define  EXTI_EMR_MR20                       ((uint32_t)0x00100000)        /*!< Event Mask on line 20 */
-#define  EXTI_EMR_MR21                       ((uint32_t)0x00200000)        /*!< Event Mask on line 21 */
-#define  EXTI_EMR_MR22                       ((uint32_t)0x00400000)        /*!< Event Mask on line 22 */
-#define  EXTI_EMR_MR23                       ((uint32_t)0x00800000)        /*!< Event Mask on line 23 */
-#define  EXTI_EMR_MR24                       ((uint32_t)0x01000000)        /*!< Event Mask on line 24 */
-#define  EXTI_EMR_MR25                       ((uint32_t)0x02000000)        /*!< Event Mask on line 25 */
-#define  EXTI_EMR_MR26                       ((uint32_t)0x04000000)        /*!< Event Mask on line 26 */
-#define  EXTI_EMR_MR27                       ((uint32_t)0x08000000)        /*!< Event Mask on line 27 */
-#define  EXTI_EMR_MR28                       ((uint32_t)0x10000000)        /*!< Event Mask on line 28 */
-#define  EXTI_EMR_MR29                       ((uint32_t)0x20000000)        /*!< Event Mask on line 29 */
-#define  EXTI_EMR_MR30                       ((uint32_t)0x40000000)        /*!< Event Mask on line 30 */
-#define  EXTI_EMR_MR31                       ((uint32_t)0x80000000)        /*!< Event Mask on line 31 */
-
-/*******************  Bit definition for EXTI_RTSR register  ******************/
-#define  EXTI_RTSR_TR0                       ((uint32_t)0x00000001)        /*!< Rising trigger event configuration bit of line 0 */
-#define  EXTI_RTSR_TR1                       ((uint32_t)0x00000002)        /*!< Rising trigger event configuration bit of line 1 */
-#define  EXTI_RTSR_TR2                       ((uint32_t)0x00000004)        /*!< Rising trigger event configuration bit of line 2 */
-#define  EXTI_RTSR_TR3                       ((uint32_t)0x00000008)        /*!< Rising trigger event configuration bit of line 3 */
-#define  EXTI_RTSR_TR4                       ((uint32_t)0x00000010)        /*!< Rising trigger event configuration bit of line 4 */
-#define  EXTI_RTSR_TR5                       ((uint32_t)0x00000020)        /*!< Rising trigger event configuration bit of line 5 */
-#define  EXTI_RTSR_TR6                       ((uint32_t)0x00000040)        /*!< Rising trigger event configuration bit of line 6 */
-#define  EXTI_RTSR_TR7                       ((uint32_t)0x00000080)        /*!< Rising trigger event configuration bit of line 7 */
-#define  EXTI_RTSR_TR8                       ((uint32_t)0x00000100)        /*!< Rising trigger event configuration bit of line 8 */
-#define  EXTI_RTSR_TR9                       ((uint32_t)0x00000200)        /*!< Rising trigger event configuration bit of line 9 */
-#define  EXTI_RTSR_TR10                      ((uint32_t)0x00000400)        /*!< Rising trigger event configuration bit of line 10 */
-#define  EXTI_RTSR_TR11                      ((uint32_t)0x00000800)        /*!< Rising trigger event configuration bit of line 11 */
-#define  EXTI_RTSR_TR12                      ((uint32_t)0x00001000)        /*!< Rising trigger event configuration bit of line 12 */
-#define  EXTI_RTSR_TR13                      ((uint32_t)0x00002000)        /*!< Rising trigger event configuration bit of line 13 */
-#define  EXTI_RTSR_TR14                      ((uint32_t)0x00004000)        /*!< Rising trigger event configuration bit of line 14 */
-#define  EXTI_RTSR_TR15                      ((uint32_t)0x00008000)        /*!< Rising trigger event configuration bit of line 15 */
-#define  EXTI_RTSR_TR16                      ((uint32_t)0x00010000)        /*!< Rising trigger event configuration bit of line 16 */
-#define  EXTI_RTSR_TR17                      ((uint32_t)0x00020000)        /*!< Rising trigger event configuration bit of line 17 */
-#define  EXTI_RTSR_TR19                      ((uint32_t)0x00080000)        /*!< Rising trigger event configuration bit of line 19 */
-#define  EXTI_RTSR_TR20                      ((uint32_t)0x00100000)        /*!< Rising trigger event configuration bit of line 20 */
-#define  EXTI_RTSR_TR21                      ((uint32_t)0x00200000)        /*!< Rising trigger event configuration bit of line 21 */
-#define  EXTI_RTSR_TR22                      ((uint32_t)0x00400000)        /*!< Rising trigger event configuration bit of line 22 */
-
-/*******************  Bit definition for EXTI_FTSR register *******************/
-#define  EXTI_FTSR_TR0                       ((uint32_t)0x00000001)        /*!< Falling trigger event configuration bit of line 0 */
-#define  EXTI_FTSR_TR1                       ((uint32_t)0x00000002)        /*!< Falling trigger event configuration bit of line 1 */
-#define  EXTI_FTSR_TR2                       ((uint32_t)0x00000004)        /*!< Falling trigger event configuration bit of line 2 */
-#define  EXTI_FTSR_TR3                       ((uint32_t)0x00000008)        /*!< Falling trigger event configuration bit of line 3 */
-#define  EXTI_FTSR_TR4                       ((uint32_t)0x00000010)        /*!< Falling trigger event configuration bit of line 4 */
-#define  EXTI_FTSR_TR5                       ((uint32_t)0x00000020)        /*!< Falling trigger event configuration bit of line 5 */
-#define  EXTI_FTSR_TR6                       ((uint32_t)0x00000040)        /*!< Falling trigger event configuration bit of line 6 */
-#define  EXTI_FTSR_TR7                       ((uint32_t)0x00000080)        /*!< Falling trigger event configuration bit of line 7 */
-#define  EXTI_FTSR_TR8                       ((uint32_t)0x00000100)        /*!< Falling trigger event configuration bit of line 8 */
-#define  EXTI_FTSR_TR9                       ((uint32_t)0x00000200)        /*!< Falling trigger event configuration bit of line 9 */
-#define  EXTI_FTSR_TR10                      ((uint32_t)0x00000400)        /*!< Falling trigger event configuration bit of line 10 */
-#define  EXTI_FTSR_TR11                      ((uint32_t)0x00000800)        /*!< Falling trigger event configuration bit of line 11 */
-#define  EXTI_FTSR_TR12                      ((uint32_t)0x00001000)        /*!< Falling trigger event configuration bit of line 12 */
-#define  EXTI_FTSR_TR13                      ((uint32_t)0x00002000)        /*!< Falling trigger event configuration bit of line 13 */
-#define  EXTI_FTSR_TR14                      ((uint32_t)0x00004000)        /*!< Falling trigger event configuration bit of line 14 */
-#define  EXTI_FTSR_TR15                      ((uint32_t)0x00008000)        /*!< Falling trigger event configuration bit of line 15 */
-#define  EXTI_FTSR_TR16                      ((uint32_t)0x00010000)        /*!< Falling trigger event configuration bit of line 16 */
-#define  EXTI_FTSR_TR17                      ((uint32_t)0x00020000)        /*!< Falling trigger event configuration bit of line 17 */
-#define  EXTI_FTSR_TR19                      ((uint32_t)0x00080000)        /*!< Falling trigger event configuration bit of line 19 */
-#define  EXTI_FTSR_TR20                      ((uint32_t)0x00100000)        /*!< Falling trigger event configuration bit of line 20 */
-#define  EXTI_FTSR_TR21                      ((uint32_t)0x00200000)        /*!< Falling trigger event configuration bit of line 21 */
-#define  EXTI_FTSR_TR22                      ((uint32_t)0x00400000)        /*!< Falling trigger event configuration bit of line 22 */
-
-/******************* Bit definition for EXTI_SWIER register *******************/
-#define  EXTI_SWIER_SWIER0                   ((uint32_t)0x00000001)        /*!< Software Interrupt on line 0  */
-#define  EXTI_SWIER_SWIER1                   ((uint32_t)0x00000002)        /*!< Software Interrupt on line 1  */
-#define  EXTI_SWIER_SWIER2                   ((uint32_t)0x00000004)        /*!< Software Interrupt on line 2  */
-#define  EXTI_SWIER_SWIER3                   ((uint32_t)0x00000008)        /*!< Software Interrupt on line 3  */
-#define  EXTI_SWIER_SWIER4                   ((uint32_t)0x00000010)        /*!< Software Interrupt on line 4  */
-#define  EXTI_SWIER_SWIER5                   ((uint32_t)0x00000020)        /*!< Software Interrupt on line 5  */
-#define  EXTI_SWIER_SWIER6                   ((uint32_t)0x00000040)        /*!< Software Interrupt on line 6  */
-#define  EXTI_SWIER_SWIER7                   ((uint32_t)0x00000080)        /*!< Software Interrupt on line 7  */
-#define  EXTI_SWIER_SWIER8                   ((uint32_t)0x00000100)        /*!< Software Interrupt on line 8  */
-#define  EXTI_SWIER_SWIER9                   ((uint32_t)0x00000200)        /*!< Software Interrupt on line 9  */
-#define  EXTI_SWIER_SWIER10                  ((uint32_t)0x00000400)        /*!< Software Interrupt on line 10 */
-#define  EXTI_SWIER_SWIER11                  ((uint32_t)0x00000800)        /*!< Software Interrupt on line 11 */
-#define  EXTI_SWIER_SWIER12                  ((uint32_t)0x00001000)        /*!< Software Interrupt on line 12 */
-#define  EXTI_SWIER_SWIER13                  ((uint32_t)0x00002000)        /*!< Software Interrupt on line 13 */
-#define  EXTI_SWIER_SWIER14                  ((uint32_t)0x00004000)        /*!< Software Interrupt on line 14 */
-#define  EXTI_SWIER_SWIER15                  ((uint32_t)0x00008000)        /*!< Software Interrupt on line 15 */
-#define  EXTI_SWIER_SWIER16                  ((uint32_t)0x00010000)        /*!< Software Interrupt on line 16 */
-#define  EXTI_SWIER_SWIER17                  ((uint32_t)0x00020000)        /*!< Software Interrupt on line 17 */
-#define  EXTI_SWIER_SWIER19                  ((uint32_t)0x00080000)        /*!< Software Interrupt on line 19 */
-#define  EXTI_SWIER_SWIER20                  ((uint32_t)0x00100000)        /*!< Software Interrupt on line 20 */
-#define  EXTI_SWIER_SWIER21                  ((uint32_t)0x00200000)        /*!< Software Interrupt on line 21 */
-#define  EXTI_SWIER_SWIER22                  ((uint32_t)0x00400000)        /*!< Software Interrupt on line 22 */
-
-/******************  Bit definition for EXTI_PR register  *********************/
-#define  EXTI_PR_PR0                         ((uint32_t)0x00000001)        /*!< Pending bit 0  */
-#define  EXTI_PR_PR1                         ((uint32_t)0x00000002)        /*!< Pending bit 1  */
-#define  EXTI_PR_PR2                         ((uint32_t)0x00000004)        /*!< Pending bit 2  */
-#define  EXTI_PR_PR3                         ((uint32_t)0x00000008)        /*!< Pending bit 3  */
-#define  EXTI_PR_PR4                         ((uint32_t)0x00000010)        /*!< Pending bit 4  */
-#define  EXTI_PR_PR5                         ((uint32_t)0x00000020)        /*!< Pending bit 5  */
-#define  EXTI_PR_PR6                         ((uint32_t)0x00000040)        /*!< Pending bit 6  */
-#define  EXTI_PR_PR7                         ((uint32_t)0x00000080)        /*!< Pending bit 7  */
-#define  EXTI_PR_PR8                         ((uint32_t)0x00000100)        /*!< Pending bit 8  */
-#define  EXTI_PR_PR9                         ((uint32_t)0x00000200)        /*!< Pending bit 9  */
-#define  EXTI_PR_PR10                        ((uint32_t)0x00000400)        /*!< Pending bit 10 */
-#define  EXTI_PR_PR11                        ((uint32_t)0x00000800)        /*!< Pending bit 11 */
-#define  EXTI_PR_PR12                        ((uint32_t)0x00001000)        /*!< Pending bit 12 */
-#define  EXTI_PR_PR13                        ((uint32_t)0x00002000)        /*!< Pending bit 13 */
-#define  EXTI_PR_PR14                        ((uint32_t)0x00004000)        /*!< Pending bit 14 */
-#define  EXTI_PR_PR15                        ((uint32_t)0x00008000)        /*!< Pending bit 15 */
-#define  EXTI_PR_PR16                        ((uint32_t)0x00010000)        /*!< Pending bit 16 */
-#define  EXTI_PR_PR17                        ((uint32_t)0x00020000)        /*!< Pending bit 17 */
-#define  EXTI_PR_PR19                        ((uint32_t)0x00080000)        /*!< Pending bit 19 */
-#define  EXTI_PR_PR20                        ((uint32_t)0x00100000)        /*!< Pending bit 20 */
-#define  EXTI_PR_PR21                        ((uint32_t)0x00200000)        /*!< Pending bit 21 */
-#define  EXTI_PR_PR22                        ((uint32_t)0x00400000)        /*!< Pending bit 22 */
-
-/******************************************************************************/
-/*                                                                            */
-/*                      FLASH and Option Bytes Registers                      */
-/*                                                                            */
-/******************************************************************************/
-
-/*******************  Bit definition for FLASH_ACR register  ******************/
-#define  FLASH_ACR_LATENCY                   ((uint32_t)0x00000001)        /*!< LATENCY bit (Latency) */
-
-#define  FLASH_ACR_PRFTBE                    ((uint32_t)0x00000010)        /*!< Prefetch Buffer Enable */
-#define  FLASH_ACR_PRFTBS                    ((uint32_t)0x00000020)        /*!< Prefetch Buffer Status */
-
-/******************  Bit definition for FLASH_KEYR register  ******************/
-#define  FLASH_KEYR_FKEYR                    ((uint32_t)0xFFFFFFFF)        /*!< FPEC Key */
-
-/*****************  Bit definition for FLASH_OPTKEYR register  ****************/
-#define  FLASH_OPTKEYR_OPTKEYR               ((uint32_t)0xFFFFFFFF)        /*!< Option Byte Key */
-
-/******************  FLASH Keys  **********************************************/
-#define FLASH_FKEY1                          ((uint32_t)0x45670123)        /*!< Flash program erase key1 */
-#define FLASH_FKEY2                          ((uint32_t)0xCDEF89AB)        /*!< Flash program erase key2: used with FLASH_PEKEY1
-                                                                                to unlock the write access to the FPEC. */
-                                                               
-#define FLASH_OPTKEY1                        ((uint32_t)0x45670123)        /*!< Flash option key1 */
-#define FLASH_OPTKEY2                        ((uint32_t)0xCDEF89AB)        /*!< Flash option key2: used with FLASH_OPTKEY1 to
-                                                                                unlock the write access to the option byte block */
-
-/******************  Bit definition for FLASH_SR register  *******************/
-#define  FLASH_SR_BSY                        ((uint32_t)0x00000001)        /*!< Busy */
-#define  FLASH_SR_PGERR                      ((uint32_t)0x00000004)        /*!< Programming Error */
-#define  FLASH_SR_WRPRTERR                   ((uint32_t)0x00000010)        /*!< Write Protection Error */
-#define  FLASH_SR_EOP                        ((uint32_t)0x00000020)        /*!< End of operation */
-#define  FLASH_SR_WRPERR                     FLASH_SR_WRPRTERR             /*!< Legacy of Write Protection Error */
-
-/*******************  Bit definition for FLASH_CR register  *******************/
-#define  FLASH_CR_PG                         ((uint32_t)0x00000001)        /*!< Programming */
-#define  FLASH_CR_PER                        ((uint32_t)0x00000002)        /*!< Page Erase */
-#define  FLASH_CR_MER                        ((uint32_t)0x00000004)        /*!< Mass Erase */
-#define  FLASH_CR_OPTPG                      ((uint32_t)0x00000010)        /*!< Option Byte Programming */
-#define  FLASH_CR_OPTER                      ((uint32_t)0x00000020)        /*!< Option Byte Erase */
-#define  FLASH_CR_STRT                       ((uint32_t)0x00000040)        /*!< Start */
-#define  FLASH_CR_LOCK                       ((uint32_t)0x00000080)        /*!< Lock */
-#define  FLASH_CR_OPTWRE                     ((uint32_t)0x00000200)        /*!< Option Bytes Write Enable */
-#define  FLASH_CR_ERRIE                      ((uint32_t)0x00000400)        /*!< Error Interrupt Enable */
-#define  FLASH_CR_EOPIE                      ((uint32_t)0x00001000)        /*!< End of operation interrupt enable */
-#define  FLASH_CR_OBL_LAUNCH                 ((uint32_t)0x00002000)        /*!< Option Bytes Loader Launch */
-
-/*******************  Bit definition for FLASH_AR register  *******************/
-#define  FLASH_AR_FAR                        ((uint32_t)0xFFFFFFFF)        /*!< Flash Address */
-
-/******************  Bit definition for FLASH_OBR register  *******************/
-#define  FLASH_OBR_OPTERR                    ((uint32_t)0x00000001)        /*!< Option Byte Error */
-#define  FLASH_OBR_RDPRT1                    ((uint32_t)0x00000002)        /*!< Read protection Level bit 1 */
-#define  FLASH_OBR_RDPRT2                    ((uint32_t)0x00000004)        /*!< Read protection Level bit 2 */
-
-#define  FLASH_OBR_USER                      ((uint32_t)0x00003700)        /*!< User Option Bytes */
-#define  FLASH_OBR_IWDG_SW                   ((uint32_t)0x00000100)        /*!< IWDG SW */
-#define  FLASH_OBR_nRST_STOP                 ((uint32_t)0x00000200)        /*!< nRST_STOP */
-#define  FLASH_OBR_nRST_STDBY                ((uint32_t)0x00000400)        /*!< nRST_STDBY */
-#define  FLASH_OBR_nBOOT0                    ((uint32_t)0x00000800)        /*!< nBOOT0 */
-#define  FLASH_OBR_nBOOT1                    ((uint32_t)0x00001000)        /*!< nBOOT1 */
-#define  FLASH_OBR_VDDA_MONITOR              ((uint32_t)0x00002000)        /*!< VDDA power supply supervisor */
-#define  FLASH_OBR_RAM_PARITY_CHECK          ((uint32_t)0x00004000)        /*!< RAM Parity Check */
-#define  FLASH_OBR_nBOOT0_SW                 ((uint32_t)0x00008000)        /*!< nBOOT0 SW  (available only in the STM32F042 devices)*/
-#define  FLASH_OBR_DATA0                     ((uint32_t)0x00FF0000)        /*!< DATA0 */
-#define  FLASH_OBR_DATA1                     ((uint32_t)0xFF000000)        /*!< DATA0 */
-
-/* Old BOOT1 bit definition, maintained for legacy purpose */
-#define FLASH_OBR_BOOT1                      FLASH_OBR_nBOOT1
-
-/* Old OBR_VDDA bit definition, maintained for legacy purpose */
-#define FLASH_OBR_VDDA_ANALOG                FLASH_OBR_VDDA_MONITOR
-
-/******************  Bit definition for FLASH_WRPR register  ******************/
-#define  FLASH_WRPR_WRP                      ((uint32_t)0xFFFFFFFF)        /*!< Write Protect */
-
-/*----------------------------------------------------------------------------*/
-
-/******************  Bit definition for OB_RDP register  **********************/
-#define  OB_RDP_RDP                          ((uint32_t)0x000000FF)        /*!< Read protection option byte */
-#define  OB_RDP_nRDP                         ((uint32_t)0x0000FF00)        /*!< Read protection complemented option byte */
-
-/******************  Bit definition for OB_USER register  *********************/
-#define  OB_USER_USER                        ((uint32_t)0x00FF0000)        /*!< User option byte */
-#define  OB_USER_nUSER                       ((uint32_t)0xFF000000)        /*!< User complemented option byte */
-
-/******************  Bit definition for OB_WRP0 register  *********************/
-#define  OB_WRP0_WRP0                        ((uint32_t)0x000000FF)        /*!< Flash memory write protection option bytes */
-#define  OB_WRP0_nWRP0                       ((uint32_t)0x0000FF00)        /*!< Flash memory write protection complemented option bytes */
-
-/******************  Bit definition for OB_WRP1 register  *********************/
-#define  OB_WRP1_WRP1                        ((uint32_t)0x00FF0000)        /*!< Flash memory write protection option bytes */
-#define  OB_WRP1_nWRP1                       ((uint32_t)0xFF000000)        /*!< Flash memory write protection complemented option bytes */
-
-/******************  Bit definition for OB_WRP2 register  *********************/
-#define  OB_WRP2_WRP2                        ((uint32_t)0x000000FF)        /*!< Flash memory write protection option bytes (only for STM32F072 devices) */
-#define  OB_WRP2_nWRP2                       ((uint32_t)0x0000FF00)        /*!< Flash memory write protection complemented option bytes (only for STM32F072 devices) */
-
-/******************  Bit definition for OB_WRP3 register  *********************/
-#define  OB_WRP3_WRP3                        ((uint32_t)0x00FF0000)        /*!< Flash memory write protection option bytes (only for STM32F072 devices) */
-#define  OB_WRP3_nWRP3                       ((uint32_t)0xFF000000)        /*!< Flash memory write protection complemented option bytes (only for STM32F072 devices) */
-
-/******************************************************************************/
-/*                                                                            */
-/*                       General Purpose IOs (GPIO)                           */
-/*                                                                            */
-/******************************************************************************/
-/*******************  Bit definition for GPIO_MODER register  *****************/
-#define GPIO_MODER_MODER0          ((uint32_t)0x00000003)
-#define GPIO_MODER_MODER0_0        ((uint32_t)0x00000001)
-#define GPIO_MODER_MODER0_1        ((uint32_t)0x00000002)
-#define GPIO_MODER_MODER1          ((uint32_t)0x0000000C)
-#define GPIO_MODER_MODER1_0        ((uint32_t)0x00000004)
-#define GPIO_MODER_MODER1_1        ((uint32_t)0x00000008)
-#define GPIO_MODER_MODER2          ((uint32_t)0x00000030)
-#define GPIO_MODER_MODER2_0        ((uint32_t)0x00000010)
-#define GPIO_MODER_MODER2_1        ((uint32_t)0x00000020)
-#define GPIO_MODER_MODER3          ((uint32_t)0x000000C0)
-#define GPIO_MODER_MODER3_0        ((uint32_t)0x00000040)
-#define GPIO_MODER_MODER3_1        ((uint32_t)0x00000080)
-#define GPIO_MODER_MODER4          ((uint32_t)0x00000300)
-#define GPIO_MODER_MODER4_0        ((uint32_t)0x00000100)
-#define GPIO_MODER_MODER4_1        ((uint32_t)0x00000200)
-#define GPIO_MODER_MODER5          ((uint32_t)0x00000C00)
-#define GPIO_MODER_MODER5_0        ((uint32_t)0x00000400)
-#define GPIO_MODER_MODER5_1        ((uint32_t)0x00000800)
-#define GPIO_MODER_MODER6          ((uint32_t)0x00003000)
-#define GPIO_MODER_MODER6_0        ((uint32_t)0x00001000)
-#define GPIO_MODER_MODER6_1        ((uint32_t)0x00002000)
-#define GPIO_MODER_MODER7          ((uint32_t)0x0000C000)
-#define GPIO_MODER_MODER7_0        ((uint32_t)0x00004000)
-#define GPIO_MODER_MODER7_1        ((uint32_t)0x00008000)
-#define GPIO_MODER_MODER8          ((uint32_t)0x00030000)
-#define GPIO_MODER_MODER8_0        ((uint32_t)0x00010000)
-#define GPIO_MODER_MODER8_1        ((uint32_t)0x00020000)
-#define GPIO_MODER_MODER9          ((uint32_t)0x000C0000)
-#define GPIO_MODER_MODER9_0        ((uint32_t)0x00040000)
-#define GPIO_MODER_MODER9_1        ((uint32_t)0x00080000)
-#define GPIO_MODER_MODER10         ((uint32_t)0x00300000)
-#define GPIO_MODER_MODER10_0       ((uint32_t)0x00100000)
-#define GPIO_MODER_MODER10_1       ((uint32_t)0x00200000)
-#define GPIO_MODER_MODER11         ((uint32_t)0x00C00000)
-#define GPIO_MODER_MODER11_0       ((uint32_t)0x00400000)
-#define GPIO_MODER_MODER11_1       ((uint32_t)0x00800000)
-#define GPIO_MODER_MODER12         ((uint32_t)0x03000000)
-#define GPIO_MODER_MODER12_0       ((uint32_t)0x01000000)
-#define GPIO_MODER_MODER12_1       ((uint32_t)0x02000000)
-#define GPIO_MODER_MODER13         ((uint32_t)0x0C000000)
-#define GPIO_MODER_MODER13_0       ((uint32_t)0x04000000)
-#define GPIO_MODER_MODER13_1       ((uint32_t)0x08000000)
-#define GPIO_MODER_MODER14         ((uint32_t)0x30000000)
-#define GPIO_MODER_MODER14_0       ((uint32_t)0x10000000)
-#define GPIO_MODER_MODER14_1       ((uint32_t)0x20000000)
-#define GPIO_MODER_MODER15         ((uint32_t)0xC0000000)
-#define GPIO_MODER_MODER15_0       ((uint32_t)0x40000000)
-#define GPIO_MODER_MODER15_1       ((uint32_t)0x80000000)
-
-/******************  Bit definition for GPIO_OTYPER register  *****************/
-#define GPIO_OTYPER_OT_0           ((uint32_t)0x00000001)
-#define GPIO_OTYPER_OT_1           ((uint32_t)0x00000002)
-#define GPIO_OTYPER_OT_2           ((uint32_t)0x00000004)
-#define GPIO_OTYPER_OT_3           ((uint32_t)0x00000008)
-#define GPIO_OTYPER_OT_4           ((uint32_t)0x00000010)
-#define GPIO_OTYPER_OT_5           ((uint32_t)0x00000020)
-#define GPIO_OTYPER_OT_6           ((uint32_t)0x00000040)
-#define GPIO_OTYPER_OT_7           ((uint32_t)0x00000080)
-#define GPIO_OTYPER_OT_8           ((uint32_t)0x00000100)
-#define GPIO_OTYPER_OT_9           ((uint32_t)0x00000200)
-#define GPIO_OTYPER_OT_10          ((uint32_t)0x00000400)
-#define GPIO_OTYPER_OT_11          ((uint32_t)0x00000800)
-#define GPIO_OTYPER_OT_12          ((uint32_t)0x00001000)
-#define GPIO_OTYPER_OT_13          ((uint32_t)0x00002000)
-#define GPIO_OTYPER_OT_14          ((uint32_t)0x00004000)
-#define GPIO_OTYPER_OT_15          ((uint32_t)0x00008000)
-
-/****************  Bit definition for GPIO_OSPEEDR register  ******************/
-#define GPIO_OSPEEDR_OSPEEDR0     ((uint32_t)0x00000003)
-#define GPIO_OSPEEDR_OSPEEDR0_0   ((uint32_t)0x00000001)
-#define GPIO_OSPEEDR_OSPEEDR0_1   ((uint32_t)0x00000002)
-#define GPIO_OSPEEDR_OSPEEDR1     ((uint32_t)0x0000000C)
-#define GPIO_OSPEEDR_OSPEEDR1_0   ((uint32_t)0x00000004)
-#define GPIO_OSPEEDR_OSPEEDR1_1   ((uint32_t)0x00000008)
-#define GPIO_OSPEEDR_OSPEEDR2     ((uint32_t)0x00000030)
-#define GPIO_OSPEEDR_OSPEEDR2_0   ((uint32_t)0x00000010)
-#define GPIO_OSPEEDR_OSPEEDR2_1   ((uint32_t)0x00000020)
-#define GPIO_OSPEEDR_OSPEEDR3     ((uint32_t)0x000000C0)
-#define GPIO_OSPEEDR_OSPEEDR3_0   ((uint32_t)0x00000040)
-#define GPIO_OSPEEDR_OSPEEDR3_1   ((uint32_t)0x00000080)
-#define GPIO_OSPEEDR_OSPEEDR4     ((uint32_t)0x00000300)
-#define GPIO_OSPEEDR_OSPEEDR4_0   ((uint32_t)0x00000100)
-#define GPIO_OSPEEDR_OSPEEDR4_1   ((uint32_t)0x00000200)
-#define GPIO_OSPEEDR_OSPEEDR5     ((uint32_t)0x00000C00)
-#define GPIO_OSPEEDR_OSPEEDR5_0   ((uint32_t)0x00000400)
-#define GPIO_OSPEEDR_OSPEEDR5_1   ((uint32_t)0x00000800)
-#define GPIO_OSPEEDR_OSPEEDR6     ((uint32_t)0x00003000)
-#define GPIO_OSPEEDR_OSPEEDR6_0   ((uint32_t)0x00001000)
-#define GPIO_OSPEEDR_OSPEEDR6_1   ((uint32_t)0x00002000)
-#define GPIO_OSPEEDR_OSPEEDR7     ((uint32_t)0x0000C000)
-#define GPIO_OSPEEDR_OSPEEDR7_0   ((uint32_t)0x00004000)
-#define GPIO_OSPEEDR_OSPEEDR7_1   ((uint32_t)0x00008000)
-#define GPIO_OSPEEDR_OSPEEDR8     ((uint32_t)0x00030000)
-#define GPIO_OSPEEDR_OSPEEDR8_0   ((uint32_t)0x00010000)
-#define GPIO_OSPEEDR_OSPEEDR8_1   ((uint32_t)0x00020000)
-#define GPIO_OSPEEDR_OSPEEDR9     ((uint32_t)0x000C0000)
-#define GPIO_OSPEEDR_OSPEEDR9_0   ((uint32_t)0x00040000)
-#define GPIO_OSPEEDR_OSPEEDR9_1   ((uint32_t)0x00080000)
-#define GPIO_OSPEEDR_OSPEEDR10    ((uint32_t)0x00300000)
-#define GPIO_OSPEEDR_OSPEEDR10_0  ((uint32_t)0x00100000)
-#define GPIO_OSPEEDR_OSPEEDR10_1  ((uint32_t)0x00200000)
-#define GPIO_OSPEEDR_OSPEEDR11    ((uint32_t)0x00C00000)
-#define GPIO_OSPEEDR_OSPEEDR11_0  ((uint32_t)0x00400000)
-#define GPIO_OSPEEDR_OSPEEDR11_1  ((uint32_t)0x00800000)
-#define GPIO_OSPEEDR_OSPEEDR12    ((uint32_t)0x03000000)
-#define GPIO_OSPEEDR_OSPEEDR12_0  ((uint32_t)0x01000000)
-#define GPIO_OSPEEDR_OSPEEDR12_1  ((uint32_t)0x02000000)
-#define GPIO_OSPEEDR_OSPEEDR13    ((uint32_t)0x0C000000)
-#define GPIO_OSPEEDR_OSPEEDR13_0  ((uint32_t)0x04000000)
-#define GPIO_OSPEEDR_OSPEEDR13_1  ((uint32_t)0x08000000)
-#define GPIO_OSPEEDR_OSPEEDR14    ((uint32_t)0x30000000)
-#define GPIO_OSPEEDR_OSPEEDR14_0  ((uint32_t)0x10000000)
-#define GPIO_OSPEEDR_OSPEEDR14_1  ((uint32_t)0x20000000)
-#define GPIO_OSPEEDR_OSPEEDR15    ((uint32_t)0xC0000000)
-#define GPIO_OSPEEDR_OSPEEDR15_0  ((uint32_t)0x40000000)
-#define GPIO_OSPEEDR_OSPEEDR15_1  ((uint32_t)0x80000000)
-
-/* Old Bit definition for GPIO_OSPEEDR register maintained for legacy purpose */
-#define GPIO_OSPEEDER_OSPEEDR0     GPIO_OSPEEDR_OSPEEDR0
-#define GPIO_OSPEEDER_OSPEEDR0_0   GPIO_OSPEEDR_OSPEEDR0_0
-#define GPIO_OSPEEDER_OSPEEDR0_1   GPIO_OSPEEDR_OSPEEDR0_1
-#define GPIO_OSPEEDER_OSPEEDR1     GPIO_OSPEEDR_OSPEEDR1
-#define GPIO_OSPEEDER_OSPEEDR1_0   GPIO_OSPEEDR_OSPEEDR1_0
-#define GPIO_OSPEEDER_OSPEEDR1_1   GPIO_OSPEEDR_OSPEEDR1_1
-#define GPIO_OSPEEDER_OSPEEDR2     GPIO_OSPEEDR_OSPEEDR2
-#define GPIO_OSPEEDER_OSPEEDR2_0   GPIO_OSPEEDR_OSPEEDR2_0
-#define GPIO_OSPEEDER_OSPEEDR2_1   GPIO_OSPEEDR_OSPEEDR2_1
-#define GPIO_OSPEEDER_OSPEEDR3     GPIO_OSPEEDR_OSPEEDR3
-#define GPIO_OSPEEDER_OSPEEDR3_0   GPIO_OSPEEDR_OSPEEDR3_0
-#define GPIO_OSPEEDER_OSPEEDR3_1   GPIO_OSPEEDR_OSPEEDR3_1
-#define GPIO_OSPEEDER_OSPEEDR4     GPIO_OSPEEDR_OSPEEDR4
-#define GPIO_OSPEEDER_OSPEEDR4_0   GPIO_OSPEEDR_OSPEEDR4_0
-#define GPIO_OSPEEDER_OSPEEDR4_1   GPIO_OSPEEDR_OSPEEDR4_1
-#define GPIO_OSPEEDER_OSPEEDR5     GPIO_OSPEEDR_OSPEEDR5
-#define GPIO_OSPEEDER_OSPEEDR5_0   GPIO_OSPEEDR_OSPEEDR5_0
-#define GPIO_OSPEEDER_OSPEEDR5_1   GPIO_OSPEEDR_OSPEEDR5_1
-#define GPIO_OSPEEDER_OSPEEDR6     GPIO_OSPEEDR_OSPEEDR6
-#define GPIO_OSPEEDER_OSPEEDR6_0   GPIO_OSPEEDR_OSPEEDR6_0
-#define GPIO_OSPEEDER_OSPEEDR6_1   GPIO_OSPEEDR_OSPEEDR6_1
-#define GPIO_OSPEEDER_OSPEEDR7     GPIO_OSPEEDR_OSPEEDR7
-#define GPIO_OSPEEDER_OSPEEDR7_0   GPIO_OSPEEDR_OSPEEDR7_0
-#define GPIO_OSPEEDER_OSPEEDR7_1   GPIO_OSPEEDR_OSPEEDR7_1
-#define GPIO_OSPEEDER_OSPEEDR8     GPIO_OSPEEDR_OSPEEDR8
-#define GPIO_OSPEEDER_OSPEEDR8_0   GPIO_OSPEEDR_OSPEEDR8_0
-#define GPIO_OSPEEDER_OSPEEDR8_1   GPIO_OSPEEDR_OSPEEDR8_1
-#define GPIO_OSPEEDER_OSPEEDR9     GPIO_OSPEEDR_OSPEEDR9
-#define GPIO_OSPEEDER_OSPEEDR9_0   GPIO_OSPEEDR_OSPEEDR9_0
-#define GPIO_OSPEEDER_OSPEEDR9_1   GPIO_OSPEEDR_OSPEEDR9_1
-#define GPIO_OSPEEDER_OSPEEDR10    GPIO_OSPEEDR_OSPEEDR10
-#define GPIO_OSPEEDER_OSPEEDR10_0  GPIO_OSPEEDR_OSPEEDR10_0
-#define GPIO_OSPEEDER_OSPEEDR10_1  GPIO_OSPEEDR_OSPEEDR10_1
-#define GPIO_OSPEEDER_OSPEEDR11    GPIO_OSPEEDR_OSPEEDR11
-#define GPIO_OSPEEDER_OSPEEDR11_0  GPIO_OSPEEDR_OSPEEDR11_0
-#define GPIO_OSPEEDER_OSPEEDR11_1  GPIO_OSPEEDR_OSPEEDR11_1
-#define GPIO_OSPEEDER_OSPEEDR12    GPIO_OSPEEDR_OSPEEDR12
-#define GPIO_OSPEEDER_OSPEEDR12_0  GPIO_OSPEEDR_OSPEEDR12_0
-#define GPIO_OSPEEDER_OSPEEDR12_1  GPIO_OSPEEDR_OSPEEDR12_1
-#define GPIO_OSPEEDER_OSPEEDR13    GPIO_OSPEEDR_OSPEEDR13
-#define GPIO_OSPEEDER_OSPEEDR13_0  GPIO_OSPEEDR_OSPEEDR13_0
-#define GPIO_OSPEEDER_OSPEEDR13_1  GPIO_OSPEEDR_OSPEEDR13_1
-#define GPIO_OSPEEDER_OSPEEDR14    GPIO_OSPEEDR_OSPEEDR14
-#define GPIO_OSPEEDER_OSPEEDR14_0  GPIO_OSPEEDR_OSPEEDR14_0
-#define GPIO_OSPEEDER_OSPEEDR14_1  GPIO_OSPEEDR_OSPEEDR14_1
-#define GPIO_OSPEEDER_OSPEEDR15    GPIO_OSPEEDR_OSPEEDR15
-#define GPIO_OSPEEDER_OSPEEDR15_0  GPIO_OSPEEDR_OSPEEDR15_0
-#define GPIO_OSPEEDER_OSPEEDR15_1  GPIO_OSPEEDR_OSPEEDR15_1
-
-/*******************  Bit definition for GPIO_PUPDR register ******************/
-#define GPIO_PUPDR_PUPDR0          ((uint32_t)0x00000003)
-#define GPIO_PUPDR_PUPDR0_0        ((uint32_t)0x00000001)
-#define GPIO_PUPDR_PUPDR0_1        ((uint32_t)0x00000002)
-#define GPIO_PUPDR_PUPDR1          ((uint32_t)0x0000000C)
-#define GPIO_PUPDR_PUPDR1_0        ((uint32_t)0x00000004)
-#define GPIO_PUPDR_PUPDR1_1        ((uint32_t)0x00000008)
-#define GPIO_PUPDR_PUPDR2          ((uint32_t)0x00000030)
-#define GPIO_PUPDR_PUPDR2_0        ((uint32_t)0x00000010)
-#define GPIO_PUPDR_PUPDR2_1        ((uint32_t)0x00000020)
-#define GPIO_PUPDR_PUPDR3          ((uint32_t)0x000000C0)
-#define GPIO_PUPDR_PUPDR3_0        ((uint32_t)0x00000040)
-#define GPIO_PUPDR_PUPDR3_1        ((uint32_t)0x00000080)
-#define GPIO_PUPDR_PUPDR4          ((uint32_t)0x00000300)
-#define GPIO_PUPDR_PUPDR4_0        ((uint32_t)0x00000100)
-#define GPIO_PUPDR_PUPDR4_1        ((uint32_t)0x00000200)
-#define GPIO_PUPDR_PUPDR5          ((uint32_t)0x00000C00)
-#define GPIO_PUPDR_PUPDR5_0        ((uint32_t)0x00000400)
-#define GPIO_PUPDR_PUPDR5_1        ((uint32_t)0x00000800)
-#define GPIO_PUPDR_PUPDR6          ((uint32_t)0x00003000)
-#define GPIO_PUPDR_PUPDR6_0        ((uint32_t)0x00001000)
-#define GPIO_PUPDR_PUPDR6_1        ((uint32_t)0x00002000)
-#define GPIO_PUPDR_PUPDR7          ((uint32_t)0x0000C000)
-#define GPIO_PUPDR_PUPDR7_0        ((uint32_t)0x00004000)
-#define GPIO_PUPDR_PUPDR7_1        ((uint32_t)0x00008000)
-#define GPIO_PUPDR_PUPDR8          ((uint32_t)0x00030000)
-#define GPIO_PUPDR_PUPDR8_0        ((uint32_t)0x00010000)
-#define GPIO_PUPDR_PUPDR8_1        ((uint32_t)0x00020000)
-#define GPIO_PUPDR_PUPDR9          ((uint32_t)0x000C0000)
-#define GPIO_PUPDR_PUPDR9_0        ((uint32_t)0x00040000)
-#define GPIO_PUPDR_PUPDR9_1        ((uint32_t)0x00080000)
-#define GPIO_PUPDR_PUPDR10         ((uint32_t)0x00300000)
-#define GPIO_PUPDR_PUPDR10_0       ((uint32_t)0x00100000)
-#define GPIO_PUPDR_PUPDR10_1       ((uint32_t)0x00200000)
-#define GPIO_PUPDR_PUPDR11         ((uint32_t)0x00C00000)
-#define GPIO_PUPDR_PUPDR11_0       ((uint32_t)0x00400000)
-#define GPIO_PUPDR_PUPDR11_1       ((uint32_t)0x00800000)
-#define GPIO_PUPDR_PUPDR12         ((uint32_t)0x03000000)
-#define GPIO_PUPDR_PUPDR12_0       ((uint32_t)0x01000000)
-#define GPIO_PUPDR_PUPDR12_1       ((uint32_t)0x02000000)
-#define GPIO_PUPDR_PUPDR13         ((uint32_t)0x0C000000)
-#define GPIO_PUPDR_PUPDR13_0       ((uint32_t)0x04000000)
-#define GPIO_PUPDR_PUPDR13_1       ((uint32_t)0x08000000)
-#define GPIO_PUPDR_PUPDR14         ((uint32_t)0x30000000)
-#define GPIO_PUPDR_PUPDR14_0       ((uint32_t)0x10000000)
-#define GPIO_PUPDR_PUPDR14_1       ((uint32_t)0x20000000)
-#define GPIO_PUPDR_PUPDR15         ((uint32_t)0xC0000000)
-#define GPIO_PUPDR_PUPDR15_0       ((uint32_t)0x40000000)
-#define GPIO_PUPDR_PUPDR15_1       ((uint32_t)0x80000000)
-
-/*******************  Bit definition for GPIO_IDR register  *******************/
-#define GPIO_IDR_0                 ((uint32_t)0x00000001)
-#define GPIO_IDR_1                 ((uint32_t)0x00000002)
-#define GPIO_IDR_2                 ((uint32_t)0x00000004)
-#define GPIO_IDR_3                 ((uint32_t)0x00000008)
-#define GPIO_IDR_4                 ((uint32_t)0x00000010)
-#define GPIO_IDR_5                 ((uint32_t)0x00000020)
-#define GPIO_IDR_6                 ((uint32_t)0x00000040)
-#define GPIO_IDR_7                 ((uint32_t)0x00000080)
-#define GPIO_IDR_8                 ((uint32_t)0x00000100)
-#define GPIO_IDR_9                 ((uint32_t)0x00000200)
-#define GPIO_IDR_10                ((uint32_t)0x00000400)
-#define GPIO_IDR_11                ((uint32_t)0x00000800)
-#define GPIO_IDR_12                ((uint32_t)0x00001000)
-#define GPIO_IDR_13                ((uint32_t)0x00002000)
-#define GPIO_IDR_14                ((uint32_t)0x00004000)
-#define GPIO_IDR_15                ((uint32_t)0x00008000)
-
-/******************  Bit definition for GPIO_ODR register  ********************/
-#define GPIO_ODR_0                 ((uint32_t)0x00000001)
-#define GPIO_ODR_1                 ((uint32_t)0x00000002)
-#define GPIO_ODR_2                 ((uint32_t)0x00000004)
-#define GPIO_ODR_3                 ((uint32_t)0x00000008)
-#define GPIO_ODR_4                 ((uint32_t)0x00000010)
-#define GPIO_ODR_5                 ((uint32_t)0x00000020)
-#define GPIO_ODR_6                 ((uint32_t)0x00000040)
-#define GPIO_ODR_7                 ((uint32_t)0x00000080)
-#define GPIO_ODR_8                 ((uint32_t)0x00000100)
-#define GPIO_ODR_9                 ((uint32_t)0x00000200)
-#define GPIO_ODR_10                ((uint32_t)0x00000400)
-#define GPIO_ODR_11                ((uint32_t)0x00000800)
-#define GPIO_ODR_12                ((uint32_t)0x00001000)
-#define GPIO_ODR_13                ((uint32_t)0x00002000)
-#define GPIO_ODR_14                ((uint32_t)0x00004000)
-#define GPIO_ODR_15                ((uint32_t)0x00008000)
-
-/****************** Bit definition for GPIO_BSRR register  ********************/
-#define GPIO_BSRR_BS_0             ((uint32_t)0x00000001)
-#define GPIO_BSRR_BS_1             ((uint32_t)0x00000002)
-#define GPIO_BSRR_BS_2             ((uint32_t)0x00000004)
-#define GPIO_BSRR_BS_3             ((uint32_t)0x00000008)
-#define GPIO_BSRR_BS_4             ((uint32_t)0x00000010)
-#define GPIO_BSRR_BS_5             ((uint32_t)0x00000020)
-#define GPIO_BSRR_BS_6             ((uint32_t)0x00000040)
-#define GPIO_BSRR_BS_7             ((uint32_t)0x00000080)
-#define GPIO_BSRR_BS_8             ((uint32_t)0x00000100)
-#define GPIO_BSRR_BS_9             ((uint32_t)0x00000200)
-#define GPIO_BSRR_BS_10            ((uint32_t)0x00000400)
-#define GPIO_BSRR_BS_11            ((uint32_t)0x00000800)
-#define GPIO_BSRR_BS_12            ((uint32_t)0x00001000)
-#define GPIO_BSRR_BS_13            ((uint32_t)0x00002000)
-#define GPIO_BSRR_BS_14            ((uint32_t)0x00004000)
-#define GPIO_BSRR_BS_15            ((uint32_t)0x00008000)
-#define GPIO_BSRR_BR_0             ((uint32_t)0x00010000)
-#define GPIO_BSRR_BR_1             ((uint32_t)0x00020000)
-#define GPIO_BSRR_BR_2             ((uint32_t)0x00040000)
-#define GPIO_BSRR_BR_3             ((uint32_t)0x00080000)
-#define GPIO_BSRR_BR_4             ((uint32_t)0x00100000)
-#define GPIO_BSRR_BR_5             ((uint32_t)0x00200000)
-#define GPIO_BSRR_BR_6             ((uint32_t)0x00400000)
-#define GPIO_BSRR_BR_7             ((uint32_t)0x00800000)
-#define GPIO_BSRR_BR_8             ((uint32_t)0x01000000)
-#define GPIO_BSRR_BR_9             ((uint32_t)0x02000000)
-#define GPIO_BSRR_BR_10            ((uint32_t)0x04000000)
-#define GPIO_BSRR_BR_11            ((uint32_t)0x08000000)
-#define GPIO_BSRR_BR_12            ((uint32_t)0x10000000)
-#define GPIO_BSRR_BR_13            ((uint32_t)0x20000000)
-#define GPIO_BSRR_BR_14            ((uint32_t)0x40000000)
-#define GPIO_BSRR_BR_15            ((uint32_t)0x80000000)
-
-/****************** Bit definition for GPIO_LCKR register  ********************/
-#define GPIO_LCKR_LCK0             ((uint32_t)0x00000001)
-#define GPIO_LCKR_LCK1             ((uint32_t)0x00000002)
-#define GPIO_LCKR_LCK2             ((uint32_t)0x00000004)
-#define GPIO_LCKR_LCK3             ((uint32_t)0x00000008)
-#define GPIO_LCKR_LCK4             ((uint32_t)0x00000010)
-#define GPIO_LCKR_LCK5             ((uint32_t)0x00000020)
-#define GPIO_LCKR_LCK6             ((uint32_t)0x00000040)
-#define GPIO_LCKR_LCK7             ((uint32_t)0x00000080)
-#define GPIO_LCKR_LCK8             ((uint32_t)0x00000100)
-#define GPIO_LCKR_LCK9             ((uint32_t)0x00000200)
-#define GPIO_LCKR_LCK10            ((uint32_t)0x00000400)
-#define GPIO_LCKR_LCK11            ((uint32_t)0x00000800)
-#define GPIO_LCKR_LCK12            ((uint32_t)0x00001000)
-#define GPIO_LCKR_LCK13            ((uint32_t)0x00002000)
-#define GPIO_LCKR_LCK14            ((uint32_t)0x00004000)
-#define GPIO_LCKR_LCK15            ((uint32_t)0x00008000)
-#define GPIO_LCKR_LCKK             ((uint32_t)0x00010000)
-
-/****************** Bit definition for GPIO_AFRL register  ********************/
-#define GPIO_AFRL_AFR0            ((uint32_t)0x0000000F)
-#define GPIO_AFRL_AFR1            ((uint32_t)0x000000F0)
-#define GPIO_AFRL_AFR2            ((uint32_t)0x00000F00)
-#define GPIO_AFRL_AFR3            ((uint32_t)0x0000F000)
-#define GPIO_AFRL_AFR4            ((uint32_t)0x000F0000)
-#define GPIO_AFRL_AFR5            ((uint32_t)0x00F00000)
-#define GPIO_AFRL_AFR6            ((uint32_t)0x0F000000)
-#define GPIO_AFRL_AFR7            ((uint32_t)0xF0000000)
-
-/****************** Bit definition for GPIO_AFRH register  ********************/
-#define GPIO_AFRH_AFR8            ((uint32_t)0x0000000F)
-#define GPIO_AFRH_AFR9            ((uint32_t)0x000000F0)
-#define GPIO_AFRH_AFR10            ((uint32_t)0x00000F00)
-#define GPIO_AFRH_AFR11            ((uint32_t)0x0000F000)
-#define GPIO_AFRH_AFR12            ((uint32_t)0x000F0000)
-#define GPIO_AFRH_AFR13            ((uint32_t)0x00F00000)
-#define GPIO_AFRH_AFR14            ((uint32_t)0x0F000000)
-#define GPIO_AFRH_AFR15            ((uint32_t)0xF0000000)
-
-/* Old Bit definition for GPIO_AFRL register maintained for legacy purpose ****/
-#define GPIO_AFRL_AFRL0            GPIO_AFRL_AFR0
-#define GPIO_AFRL_AFRL1            GPIO_AFRL_AFR1
-#define GPIO_AFRL_AFRL2            GPIO_AFRL_AFR2
-#define GPIO_AFRL_AFRL3            GPIO_AFRL_AFR3
-#define GPIO_AFRL_AFRL4            GPIO_AFRL_AFR4
-#define GPIO_AFRL_AFRL5            GPIO_AFRL_AFR5
-#define GPIO_AFRL_AFRL6            GPIO_AFRL_AFR6
-#define GPIO_AFRL_AFRL7            GPIO_AFRL_AFR7
-
-/* Old Bit definition for GPIO_AFRH register maintained for legacy purpose ****/
-#define GPIO_AFRH_AFRH0            GPIO_AFRH_AFR8
-#define GPIO_AFRH_AFRH1            GPIO_AFRH_AFR9
-#define GPIO_AFRH_AFRH2            GPIO_AFRH_AFR10
-#define GPIO_AFRH_AFRH3            GPIO_AFRH_AFR11
-#define GPIO_AFRH_AFRH4            GPIO_AFRH_AFR12
-#define GPIO_AFRH_AFRH5            GPIO_AFRH_AFR13
-#define GPIO_AFRH_AFRH6            GPIO_AFRH_AFR14
-#define GPIO_AFRH_AFRH7            GPIO_AFRH_AFR15
-
-/****************** Bit definition for GPIO_BRR register  *********************/
-#define GPIO_BRR_BR_0              ((uint32_t)0x00000001)
-#define GPIO_BRR_BR_1              ((uint32_t)0x00000002)
-#define GPIO_BRR_BR_2              ((uint32_t)0x00000004)
-#define GPIO_BRR_BR_3              ((uint32_t)0x00000008)
-#define GPIO_BRR_BR_4              ((uint32_t)0x00000010)
-#define GPIO_BRR_BR_5              ((uint32_t)0x00000020)
-#define GPIO_BRR_BR_6              ((uint32_t)0x00000040)
-#define GPIO_BRR_BR_7              ((uint32_t)0x00000080)
-#define GPIO_BRR_BR_8              ((uint32_t)0x00000100)
-#define GPIO_BRR_BR_9              ((uint32_t)0x00000200)
-#define GPIO_BRR_BR_10             ((uint32_t)0x00000400)
-#define GPIO_BRR_BR_11             ((uint32_t)0x00000800)
-#define GPIO_BRR_BR_12             ((uint32_t)0x00001000)
-#define GPIO_BRR_BR_13             ((uint32_t)0x00002000)
-#define GPIO_BRR_BR_14             ((uint32_t)0x00004000)
-#define GPIO_BRR_BR_15             ((uint32_t)0x00008000)
-
-/******************************************************************************/
-/*                                                                            */
-/*                   Inter-integrated Circuit Interface (I2C)                 */
-/*                                                                            */
-/******************************************************************************/
-
-/*******************  Bit definition for I2C_CR1 register  *******************/
-#define  I2C_CR1_PE                          ((uint32_t)0x00000001)        /*!< Peripheral enable */
-#define  I2C_CR1_TXIE                        ((uint32_t)0x00000002)        /*!< TX interrupt enable */
-#define  I2C_CR1_RXIE                        ((uint32_t)0x00000004)        /*!< RX interrupt enable */
-#define  I2C_CR1_ADDRIE                      ((uint32_t)0x00000008)        /*!< Address match interrupt enable */
-#define  I2C_CR1_NACKIE                      ((uint32_t)0x00000010)        /*!< NACK received interrupt enable */
-#define  I2C_CR1_STOPIE                      ((uint32_t)0x00000020)        /*!< STOP detection interrupt enable */
-#define  I2C_CR1_TCIE                        ((uint32_t)0x00000040)        /*!< Transfer complete interrupt enable */
-#define  I2C_CR1_ERRIE                       ((uint32_t)0x00000080)        /*!< Errors interrupt enable */
-#define  I2C_CR1_DFN                         ((uint32_t)0x00000F00)        /*!< Digital noise filter */
-#define  I2C_CR1_ANFOFF                      ((uint32_t)0x00001000)        /*!< Analog noise filter OFF */
-#define  I2C_CR1_SWRST                       ((uint32_t)0x00002000)        /*!< Software reset */
-#define  I2C_CR1_TXDMAEN                     ((uint32_t)0x00004000)        /*!< DMA transmission requests enable */
-#define  I2C_CR1_RXDMAEN                     ((uint32_t)0x00008000)        /*!< DMA reception requests enable */
-#define  I2C_CR1_SBC                         ((uint32_t)0x00010000)        /*!< Slave byte control */
-#define  I2C_CR1_NOSTRETCH                   ((uint32_t)0x00020000)        /*!< Clock stretching disable */
-#define  I2C_CR1_WUPEN                       ((uint32_t)0x00040000)        /*!< Wakeup from STOP enable */
-#define  I2C_CR1_GCEN                        ((uint32_t)0x00080000)        /*!< General call enable */
-#define  I2C_CR1_SMBHEN                      ((uint32_t)0x00100000)        /*!< SMBus host address enable */
-#define  I2C_CR1_SMBDEN                      ((uint32_t)0x00200000)        /*!< SMBus device default address enable */
-#define  I2C_CR1_ALERTEN                     ((uint32_t)0x00400000)        /*!< SMBus alert enable */
-#define  I2C_CR1_PECEN                       ((uint32_t)0x00800000)        /*!< PEC enable */
-
-/******************  Bit definition for I2C_CR2 register  ********************/
-#define  I2C_CR2_SADD                        ((uint32_t)0x000003FF)        /*!< Slave address (master mode) */
-#define  I2C_CR2_RD_WRN                      ((uint32_t)0x00000400)        /*!< Transfer direction (master mode) */
-#define  I2C_CR2_ADD10                       ((uint32_t)0x00000800)        /*!< 10-bit addressing mode (master mode) */
-#define  I2C_CR2_HEAD10R                     ((uint32_t)0x00001000)        /*!< 10-bit address header only read direction (master mode) */
-#define  I2C_CR2_START                       ((uint32_t)0x00002000)        /*!< START generation */
-#define  I2C_CR2_STOP                        ((uint32_t)0x00004000)        /*!< STOP generation (master mode) */
-#define  I2C_CR2_NACK                        ((uint32_t)0x00008000)        /*!< NACK generation (slave mode) */
-#define  I2C_CR2_NBYTES                      ((uint32_t)0x00FF0000)        /*!< Number of bytes */
-#define  I2C_CR2_RELOAD                      ((uint32_t)0x01000000)        /*!< NBYTES reload mode */
-#define  I2C_CR2_AUTOEND                     ((uint32_t)0x02000000)        /*!< Automatic end mode (master mode) */
-#define  I2C_CR2_PECBYTE                     ((uint32_t)0x04000000)        /*!< Packet error checking byte */
-
-/*******************  Bit definition for I2C_OAR1 register  ******************/
-#define  I2C_OAR1_OA1                        ((uint32_t)0x000003FF)        /*!< Interface own address 1 */
-#define  I2C_OAR1_OA1MODE                    ((uint32_t)0x00000400)        /*!< Own address 1 10-bit mode */
-#define  I2C_OAR1_OA1EN                      ((uint32_t)0x00008000)        /*!< Own address 1 enable */
-
-/*******************  Bit definition for I2C_OAR2 register  ******************/
-#define  I2C_OAR2_OA2                        ((uint32_t)0x000000FE)        /*!< Interface own address 2 */
-#define  I2C_OAR2_OA2MSK                     ((uint32_t)0x00000700)        /*!< Own address 2 masks */
-#define  I2C_OAR2_OA2EN                      ((uint32_t)0x00008000)        /*!< Own address 2 enable */
-
-/*******************  Bit definition for I2C_TIMINGR register *******************/
-#define  I2C_TIMINGR_SCLL                    ((uint32_t)0x000000FF)        /*!< SCL low period (master mode) */
-#define  I2C_TIMINGR_SCLH                    ((uint32_t)0x0000FF00)        /*!< SCL high period (master mode) */
-#define  I2C_TIMINGR_SDADEL                  ((uint32_t)0x000F0000)        /*!< Data hold time */
-#define  I2C_TIMINGR_SCLDEL                  ((uint32_t)0x00F00000)        /*!< Data setup time */
-#define  I2C_TIMINGR_PRESC                   ((uint32_t)0xF0000000)        /*!< Timings prescaler */
-
-/******************* Bit definition for I2C_TIMEOUTR register *******************/
-#define  I2C_TIMEOUTR_TIMEOUTA               ((uint32_t)0x00000FFF)        /*!< Bus timeout A */
-#define  I2C_TIMEOUTR_TIDLE                  ((uint32_t)0x00001000)        /*!< Idle clock timeout detection */
-#define  I2C_TIMEOUTR_TIMOUTEN               ((uint32_t)0x00008000)        /*!< Clock timeout enable */
-#define  I2C_TIMEOUTR_TIMEOUTB               ((uint32_t)0x0FFF0000)        /*!< Bus timeout B*/
-#define  I2C_TIMEOUTR_TEXTEN                 ((uint32_t)0x80000000)        /*!< Extended clock timeout enable */
-
-/******************  Bit definition for I2C_ISR register  *********************/
-#define  I2C_ISR_TXE                         ((uint32_t)0x00000001)        /*!< Transmit data register empty */
-#define  I2C_ISR_TXIS                        ((uint32_t)0x00000002)        /*!< Transmit interrupt status */
-#define  I2C_ISR_RXNE                        ((uint32_t)0x00000004)        /*!< Receive data register not empty */
-#define  I2C_ISR_ADDR                        ((uint32_t)0x00000008)        /*!< Address matched (slave mode)*/
-#define  I2C_ISR_NACKF                       ((uint32_t)0x00000010)        /*!< NACK received flag */
-#define  I2C_ISR_STOPF                       ((uint32_t)0x00000020)        /*!< STOP detection flag */
-#define  I2C_ISR_TC                          ((uint32_t)0x00000040)        /*!< Transfer complete (master mode) */
-#define  I2C_ISR_TCR                         ((uint32_t)0x00000080)        /*!< Transfer complete reload */
-#define  I2C_ISR_BERR                        ((uint32_t)0x00000100)        /*!< Bus error */
-#define  I2C_ISR_ARLO                        ((uint32_t)0x00000200)        /*!< Arbitration lost */
-#define  I2C_ISR_OVR                         ((uint32_t)0x00000400)        /*!< Overrun/Underrun */
-#define  I2C_ISR_PECERR                      ((uint32_t)0x00000800)        /*!< PEC error in reception */
-#define  I2C_ISR_TIMEOUT                     ((uint32_t)0x00001000)        /*!< Timeout or Tlow detection flag */
-#define  I2C_ISR_ALERT                       ((uint32_t)0x00002000)        /*!< SMBus alert */
-#define  I2C_ISR_BUSY                        ((uint32_t)0x00008000)        /*!< Bus busy */
-#define  I2C_ISR_DIR                         ((uint32_t)0x00010000)        /*!< Transfer direction (slave mode) */
-#define  I2C_ISR_ADDCODE                     ((uint32_t)0x00FE0000)        /*!< Address match code (slave mode) */
-
-/******************  Bit definition for I2C_ICR register  *********************/
-#define  I2C_ICR_ADDRCF                      ((uint32_t)0x00000008)        /*!< Address matched clear flag */
-#define  I2C_ICR_NACKCF                      ((uint32_t)0x00000010)        /*!< NACK clear flag */
-#define  I2C_ICR_STOPCF                      ((uint32_t)0x00000020)        /*!< STOP detection clear flag */
-#define  I2C_ICR_BERRCF                      ((uint32_t)0x00000100)        /*!< Bus error clear flag */
-#define  I2C_ICR_ARLOCF                      ((uint32_t)0x00000200)        /*!< Arbitration lost clear flag */
-#define  I2C_ICR_OVRCF                       ((uint32_t)0x00000400)        /*!< Overrun/Underrun clear flag */
-#define  I2C_ICR_PECCF                       ((uint32_t)0x00000800)        /*!< PAC error clear flag */
-#define  I2C_ICR_TIMOUTCF                    ((uint32_t)0x00001000)        /*!< Timeout clear flag */
-#define  I2C_ICR_ALERTCF                     ((uint32_t)0x00002000)        /*!< Alert clear flag */
-
-/******************  Bit definition for I2C_PECR register  *********************/
-#define  I2C_PECR_PEC                        ((uint32_t)0x000000FF)       /*!< PEC register */
-
-/******************  Bit definition for I2C_RXDR register  *********************/
-#define  I2C_RXDR_RXDATA                     ((uint32_t)0x000000FF)        /*!< 8-bit receive data */
-
-/******************  Bit definition for I2C_TXDR register  *********************/
-#define  I2C_TXDR_TXDATA                     ((uint32_t)0x000000FF)        /*!< 8-bit transmit data */
-
-/******************************************************************************/
-/*                                                                            */
-/*                        Independent WATCHDOG (IWDG)                         */
-/*                                                                            */
-/******************************************************************************/
-/*******************  Bit definition for IWDG_KR register  ********************/
-#define  IWDG_KR_KEY                         ((uint16_t)0xFFFF)            /*!< Key value (write only, read 0000h) */
-
-/*******************  Bit definition for IWDG_PR register  ********************/
-#define  IWDG_PR_PR                          ((uint8_t)0x07)               /*!< PR[2:0] (Prescaler divider) */
-#define  IWDG_PR_PR_0                        ((uint8_t)0x01)               /*!< Bit 0 */
-#define  IWDG_PR_PR_1                        ((uint8_t)0x02)               /*!< Bit 1 */
-#define  IWDG_PR_PR_2                        ((uint8_t)0x04)               /*!< Bit 2 */
-
-/*******************  Bit definition for IWDG_RLR register  *******************/
-#define  IWDG_RLR_RL                         ((uint16_t)0x0FFF)            /*!< Watchdog counter reload value */
-
-/*******************  Bit definition for IWDG_SR register  ********************/
-#define  IWDG_SR_PVU                         ((uint8_t)0x01)               /*!< Watchdog prescaler value update */
-#define  IWDG_SR_RVU                         ((uint8_t)0x02)               /*!< Watchdog counter reload value update */
-#define  IWDG_SR_WVU                         ((uint8_t)0x04)               /*!< Watchdog counter window value update */
-
-/*******************  Bit definition for IWDG_KR register  ********************/
-#define  IWDG_WINR_WIN                         ((uint16_t)0x0FFF)            /*!< Watchdog counter window value */
-
-/******************************************************************************/
-/*                                                                            */
-/*                          Power Control (PWR)                               */
-/*                                                                            */
-/******************************************************************************/
-
-/********************  Bit definition for PWR_CR register  ********************/
-#define  PWR_CR_LPDS                         ((uint16_t)0x0001)     /*!< Low-power deepsleep/sleep */
-#define  PWR_CR_PDDS                         ((uint16_t)0x0002)     /*!< Power Down Deepsleep */
-#define  PWR_CR_CWUF                         ((uint16_t)0x0004)     /*!< Clear Wakeup Flag */
-#define  PWR_CR_CSBF                         ((uint16_t)0x0008)     /*!< Clear Standby Flag */
-#define  PWR_CR_PVDE                         ((uint16_t)0x0010)     /*!< Power Voltage Detector Enable */
-
-#define  PWR_CR_PLS                          ((uint16_t)0x00E0)     /*!< PLS[2:0] bits (PVD Level Selection) */
-#define  PWR_CR_PLS_0                        ((uint16_t)0x0020)     /*!< Bit 0 */
-#define  PWR_CR_PLS_1                        ((uint16_t)0x0040)     /*!< Bit 1 */
-#define  PWR_CR_PLS_2                        ((uint16_t)0x0080)     /*!< Bit 2 */
-/* PVD level configuration */
-#define  PWR_CR_PLS_LEV0                     ((uint16_t)0x0000)     /*!< PVD level 0 */
-#define  PWR_CR_PLS_LEV1                     ((uint16_t)0x0020)     /*!< PVD level 1 */
-#define  PWR_CR_PLS_LEV2                     ((uint16_t)0x0040)     /*!< PVD level 2 */
-#define  PWR_CR_PLS_LEV3                     ((uint16_t)0x0060)     /*!< PVD level 3 */
-#define  PWR_CR_PLS_LEV4                     ((uint16_t)0x0080)     /*!< PVD level 4 */
-#define  PWR_CR_PLS_LEV5                     ((uint16_t)0x00A0)     /*!< PVD level 5 */
-#define  PWR_CR_PLS_LEV6                     ((uint16_t)0x00C0)     /*!< PVD level 6 */
-#define  PWR_CR_PLS_LEV7                     ((uint16_t)0x00E0)     /*!< PVD level 7 */
-
-#define  PWR_CR_DBP                          ((uint16_t)0x0100)     /*!< Disable Backup Domain write protection */
-
-/* Old Bit definition maintained for legacy purpose ****/
-#define  PWR_CR_LPSDSR                       PWR_CR_LPDS     /*!< Low-power deepsleep */
-
-/*******************  Bit definition for PWR_CSR register  ********************/
-#define  PWR_CSR_WUF                         ((uint16_t)0x0001)     /*!< Wakeup Flag */
-#define  PWR_CSR_SBF                         ((uint16_t)0x0002)     /*!< Standby Flag */
-#define  PWR_CSR_PVDO                        ((uint16_t)0x0004)     /*!< PVD Output */
-#define  PWR_CSR_VREFINTRDY                  ((uint16_t)0x0008)     /*!< Internal voltage reference (VREFINT) ready */
-
-#define  PWR_CSR_EWUP1                       ((uint16_t)0x0100)     /*!< Enable WKUP pin 1 */
-#define  PWR_CSR_EWUP2                       ((uint16_t)0x0200)     /*!< Enable WKUP pin 2 */
-#define  PWR_CSR_EWUP3                       ((uint16_t)0x0400)     /*!< Enable WKUP pin 3 */
-#define  PWR_CSR_EWUP4                       ((uint16_t)0x0800)     /*!< Enable WKUP pin 4 */
-#define  PWR_CSR_EWUP5                       ((uint16_t)0x1000)     /*!< Enable WKUP pin 5 */
-#define  PWR_CSR_EWUP6                       ((uint16_t)0x2000)     /*!< Enable WKUP pin 6 */
-#define  PWR_CSR_EWUP7                       ((uint16_t)0x4000)     /*!< Enable WKUP pin 7 */
-#define  PWR_CSR_EWUP8                       ((uint16_t)0x8000)     /*!< Enable WKUP pin 8 */
-
-/* Old Bit definition maintained for legacy purpose ****/
-#define  PWR_CSR_VREFINTRDYF                 PWR_CSR_VREFINTRDY     /*!< Internal voltage reference (VREFINT) ready flag */
-/******************************************************************************/
-/*                                                                            */
-/*                         Reset and Clock Control                            */
-/*                                                                            */
-/******************************************************************************/
-
-/********************  Bit definition for RCC_CR register  ********************/
-#define  RCC_CR_HSION                        ((uint32_t)0x00000001)        /*!< Internal High Speed clock enable */
-#define  RCC_CR_HSIRDY                       ((uint32_t)0x00000002)        /*!< Internal High Speed clock ready flag */
-#define  RCC_CR_HSITRIM                      ((uint32_t)0x000000F8)        /*!< Internal High Speed clock trimming */
-#define  RCC_CR_HSICAL                       ((uint32_t)0x0000FF00)        /*!< Internal High Speed clock Calibration */
-#define  RCC_CR_HSEON                        ((uint32_t)0x00010000)        /*!< External High Speed clock enable */
-#define  RCC_CR_HSERDY                       ((uint32_t)0x00020000)        /*!< External High Speed clock ready flag */
-#define  RCC_CR_HSEBYP                       ((uint32_t)0x00040000)        /*!< External High Speed clock Bypass */
-#define  RCC_CR_CSSON                        ((uint32_t)0x00080000)        /*!< Clock Security System enable */
-#define  RCC_CR_PLLON                        ((uint32_t)0x01000000)        /*!< PLL enable */
-#define  RCC_CR_PLLRDY                       ((uint32_t)0x02000000)        /*!< PLL clock ready flag */
-
-/*******************  Bit definition for RCC_CFGR register  *******************/
-#define  RCC_CFGR_SW                         ((uint32_t)0x00000003)        /*!< SW[1:0] bits (System clock Switch) */
-#define  RCC_CFGR_SW_0                       ((uint32_t)0x00000001)        /*!< Bit 0 */
-#define  RCC_CFGR_SW_1                       ((uint32_t)0x00000002)        /*!< Bit 1 */
-/* SW configuration */
-#define  RCC_CFGR_SW_HSI                     ((uint32_t)0x00000000)        /*!< HSI selected as system clock */
-#define  RCC_CFGR_SW_HSE                     ((uint32_t)0x00000001)        /*!< HSE selected as system clock */
-#define  RCC_CFGR_SW_PLL                     ((uint32_t)0x00000002)        /*!< PLL selected as system clock */
-#define  RCC_CFGR_SW_HSI48                   ((uint32_t)0x00000003)        /*!< HSI48 selected as system clock */
-
-#define  RCC_CFGR_SWS                        ((uint32_t)0x0000000C)        /*!< SWS[1:0] bits (System Clock Switch Status) */
-#define  RCC_CFGR_SWS_0                      ((uint32_t)0x00000004)        /*!< Bit 0 */
-#define  RCC_CFGR_SWS_1                      ((uint32_t)0x00000008)        /*!< Bit 1 */
-/* SWS configuration */
-#define  RCC_CFGR_SWS_HSI                    ((uint32_t)0x00000000)        /*!< HSI oscillator used as system clock */
-#define  RCC_CFGR_SWS_HSE                    ((uint32_t)0x00000004)        /*!< HSE oscillator used as system clock */
-#define  RCC_CFGR_SWS_PLL                    ((uint32_t)0x00000008)        /*!< PLL used as system clock */
-#define  RCC_CFGR_SWS_HSI48                  ((uint32_t)0x0000000C)        /*!< HSI48 used as system clock */
-
-#define  RCC_CFGR_HPRE                       ((uint32_t)0x000000F0)        /*!< HPRE[3:0] bits (AHB prescaler) */
-#define  RCC_CFGR_HPRE_0                     ((uint32_t)0x00000010)        /*!< Bit 0 */
-#define  RCC_CFGR_HPRE_1                     ((uint32_t)0x00000020)        /*!< Bit 1 */
-#define  RCC_CFGR_HPRE_2                     ((uint32_t)0x00000040)        /*!< Bit 2 */
-#define  RCC_CFGR_HPRE_3                     ((uint32_t)0x00000080)        /*!< Bit 3 */
-/* HPRE configuration */
-#define  RCC_CFGR_HPRE_DIV1                  ((uint32_t)0x00000000)        /*!< SYSCLK not divided */
-#define  RCC_CFGR_HPRE_DIV2                  ((uint32_t)0x00000080)        /*!< SYSCLK divided by 2 */
-#define  RCC_CFGR_HPRE_DIV4                  ((uint32_t)0x00000090)        /*!< SYSCLK divided by 4 */
-#define  RCC_CFGR_HPRE_DIV8                  ((uint32_t)0x000000A0)        /*!< SYSCLK divided by 8 */
-#define  RCC_CFGR_HPRE_DIV16                 ((uint32_t)0x000000B0)        /*!< SYSCLK divided by 16 */
-#define  RCC_CFGR_HPRE_DIV64                 ((uint32_t)0x000000C0)        /*!< SYSCLK divided by 64 */
-#define  RCC_CFGR_HPRE_DIV128                ((uint32_t)0x000000D0)        /*!< SYSCLK divided by 128 */
-#define  RCC_CFGR_HPRE_DIV256                ((uint32_t)0x000000E0)        /*!< SYSCLK divided by 256 */
-#define  RCC_CFGR_HPRE_DIV512                ((uint32_t)0x000000F0)        /*!< SYSCLK divided by 512 */
-
-#define  RCC_CFGR_PPRE                       ((uint32_t)0x00000700)        /*!< PRE[2:0] bits (APB prescaler) */
-#define  RCC_CFGR_PPRE_0                     ((uint32_t)0x00000100)        /*!< Bit 0 */
-#define  RCC_CFGR_PPRE_1                     ((uint32_t)0x00000200)        /*!< Bit 1 */
-#define  RCC_CFGR_PPRE_2                     ((uint32_t)0x00000400)        /*!< Bit 2 */
-/* PPRE configuration */
-#define  RCC_CFGR_PPRE_DIV1                  ((uint32_t)0x00000000)        /*!< HCLK not divided */
-#define  RCC_CFGR_PPRE_DIV2                  ((uint32_t)0x00000400)        /*!< HCLK divided by 2 */
-#define  RCC_CFGR_PPRE_DIV4                  ((uint32_t)0x00000500)        /*!< HCLK divided by 4 */
-#define  RCC_CFGR_PPRE_DIV8                  ((uint32_t)0x00000600)        /*!< HCLK divided by 8 */
-#define  RCC_CFGR_PPRE_DIV16                 ((uint32_t)0x00000700)        /*!< HCLK divided by 16 */
-
-#define  RCC_CFGR_ADCPRE                     ((uint32_t)0x00004000)        /*!< ADC prescaler: Obsolete. Proper ADC clock selection is 
-                                                                                done inside the ADC_CFGR2 */
-
-#define  RCC_CFGR_PLLSRC                     ((uint32_t)0x00018000)        /*!< PLL entry clock source */
-#define  RCC_CFGR_PLLSRC_0                   ((uint32_t)0x00008000)        /*!< Bit 0 (available only in the STM32F072 devices) */
-#define  RCC_CFGR_PLLSRC_1                   ((uint32_t)0x00010000)        /*!< Bit 1 */
-
-#define  RCC_CFGR_PLLSRC_PREDIV1             ((uint32_t)0x00010000)        /*!< PREDIV1 clock selected as PLL entry clock source; 
-                                                                                Old PREDIV1 bit definition, maintained for legacy purpose */
-#define  RCC_CFGR_PLLSRC_HSI_DIV2            ((uint32_t)0x00000000)        /*!< HSI clock divided by 2 selected as PLL entry clock source */
-#define  RCC_CFGR_PLLSRC_HSI_PREDIV          ((uint32_t)0x00008000)        /*!< HSI PREDIV clock selected as PLL entry clock source 
-                                                                                (This bit and configuration is only available for STM32F072 devices)*/
-#define  RCC_CFGR_PLLSRC_HSE_PREDIV          ((uint32_t)0x00010000)        /*!< HSE PREDIV clock selected as PLL entry clock source */
-#define  RCC_CFGR_PLLSRC_HSI48_PREDIV        ((uint32_t)0x00018000)        /*!< HSI48 PREDIV clock selected as PLL entry clock source */
-
-#define  RCC_CFGR_PLLXTPRE                   ((uint32_t)0x00020000)        /*!< HSE divider for PLL entry */
-#define  RCC_CFGR_PLLXTPRE_PREDIV1           ((uint32_t)0x00000000)        /*!< PREDIV1 clock not divided for PLL entry */
-#define  RCC_CFGR_PLLXTPRE_PREDIV1_Div2      ((uint32_t)0x00020000)        /*!< PREDIV1 clock divided by 2 for PLL entry */
-
-/*!< Old bit definition maintained for legacy purposes */
-#define  RCC_CFGR_PLLSRC_HSI_Div2            RCC_CFGR_PLLSRC_HSI_DIV2
-
-/* PLLMUL configuration */
-#define  RCC_CFGR_PLLMUL                    ((uint32_t)0x003C0000)        /*!< PLLMUL[3:0] bits (PLL multiplication factor) */
-#define  RCC_CFGR_PLLMUL_0                  ((uint32_t)0x00040000)        /*!< Bit 0 */
-#define  RCC_CFGR_PLLMUL_1                  ((uint32_t)0x00080000)        /*!< Bit 1 */
-#define  RCC_CFGR_PLLMUL_2                  ((uint32_t)0x00100000)        /*!< Bit 2 */
-#define  RCC_CFGR_PLLMUL_3                  ((uint32_t)0x00200000)        /*!< Bit 3 */
-
-#define  RCC_CFGR_PLLMUL2                   ((uint32_t)0x00000000)        /*!< PLL input clock*2 */
-#define  RCC_CFGR_PLLMUL3                   ((uint32_t)0x00040000)        /*!< PLL input clock*3 */
-#define  RCC_CFGR_PLLMUL4                   ((uint32_t)0x00080000)        /*!< PLL input clock*4 */
-#define  RCC_CFGR_PLLMUL5                   ((uint32_t)0x000C0000)        /*!< PLL input clock*5 */
-#define  RCC_CFGR_PLLMUL6                   ((uint32_t)0x00100000)        /*!< PLL input clock*6 */
-#define  RCC_CFGR_PLLMUL7                   ((uint32_t)0x00140000)        /*!< PLL input clock*7 */
-#define  RCC_CFGR_PLLMUL8                   ((uint32_t)0x00180000)        /*!< PLL input clock*8 */
-#define  RCC_CFGR_PLLMUL9                   ((uint32_t)0x001C0000)        /*!< PLL input clock*9 */
-#define  RCC_CFGR_PLLMUL10                  ((uint32_t)0x00200000)        /*!< PLL input clock10 */
-#define  RCC_CFGR_PLLMUL11                  ((uint32_t)0x00240000)        /*!< PLL input clock*11 */
-#define  RCC_CFGR_PLLMUL12                  ((uint32_t)0x00280000)        /*!< PLL input clock*12 */
-#define  RCC_CFGR_PLLMUL13                  ((uint32_t)0x002C0000)        /*!< PLL input clock*13 */
-#define  RCC_CFGR_PLLMUL14                  ((uint32_t)0x00300000)        /*!< PLL input clock*14 */
-#define  RCC_CFGR_PLLMUL15                  ((uint32_t)0x00340000)        /*!< PLL input clock*15 */
-#define  RCC_CFGR_PLLMUL16                  ((uint32_t)0x00380000)        /*!< PLL input clock*16 */
-
-/* Old PLLMUL configuration bit definition maintained for legacy purposes */
-#define  RCC_CFGR_PLLMULL                    RCC_CFGR_PLLMUL        /*!< PLLMUL[3:0] bits (PLL multiplication factor) */
-#define  RCC_CFGR_PLLMULL_0                  RCC_CFGR_PLLMUL_0        /*!< Bit 0 */
-#define  RCC_CFGR_PLLMULL_1                  RCC_CFGR_PLLMUL_1        /*!< Bit 1 */
-#define  RCC_CFGR_PLLMULL_2                  RCC_CFGR_PLLMUL_2        /*!< Bit 2 */
-#define  RCC_CFGR_PLLMULL_3                  RCC_CFGR_PLLMUL_3       /*!< Bit 3 */
-
-#define  RCC_CFGR_PLLMULL2                   RCC_CFGR_PLLMUL2       /*!< PLL input clock*2 */
-#define  RCC_CFGR_PLLMULL3                   RCC_CFGR_PLLMUL3        /*!< PLL input clock*3 */
-#define  RCC_CFGR_PLLMULL4                   RCC_CFGR_PLLMUL4        /*!< PLL input clock*4 */
-#define  RCC_CFGR_PLLMULL5                   RCC_CFGR_PLLMUL5        /*!< PLL input clock*5 */
-#define  RCC_CFGR_PLLMULL6                   RCC_CFGR_PLLMUL6        /*!< PLL input clock*6 */
-#define  RCC_CFGR_PLLMULL7                   RCC_CFGR_PLLMUL7        /*!< PLL input clock*7 */
-#define  RCC_CFGR_PLLMULL8                   RCC_CFGR_PLLMUL8        /*!< PLL input clock*8 */
-#define  RCC_CFGR_PLLMULL9                   RCC_CFGR_PLLMUL9        /*!< PLL input clock*9 */
-#define  RCC_CFGR_PLLMULL10                  RCC_CFGR_PLLMUL10        /*!< PLL input clock10 */
-#define  RCC_CFGR_PLLMULL11                  RCC_CFGR_PLLMUL11        /*!< PLL input clock*11 */
-#define  RCC_CFGR_PLLMULL12                  RCC_CFGR_PLLMUL12        /*!< PLL input clock*12 */
-#define  RCC_CFGR_PLLMULL13                  RCC_CFGR_PLLMUL13        /*!< PLL input clock*13 */
-#define  RCC_CFGR_PLLMULL14                  RCC_CFGR_PLLMUL14        /*!< PLL input clock*14 */
-#define  RCC_CFGR_PLLMULL15                  RCC_CFGR_PLLMUL15        /*!< PLL input clock*15 */
-#define  RCC_CFGR_PLLMULL16                  RCC_CFGR_PLLMUL16        /*!< PLL input clock*16 */
-
-#define  RCC_CFGR_MCO                        ((uint32_t)0x0F000000)        /*!< MCO[2:0] bits (Microcontroller Clock Output) */
-#define  RCC_CFGR_MCO_0                      ((uint32_t)0x01000000)        /*!< Bit 0 */
-#define  RCC_CFGR_MCO_1                      ((uint32_t)0x02000000)        /*!< Bit 1 */
-#define  RCC_CFGR_MCO_2                      ((uint32_t)0x04000000)        /*!< Bit 2 */
-#define  RCC_CFGR_MCO_3                      ((uint32_t)0x08000000)        /*!< Bit 3 */
-/* MCO configuration */
-#define  RCC_CFGR_MCO_NOCLOCK                ((uint32_t)0x00000000)        /*!< No clock */
-#define  RCC_CFGR_MCO_HSI14                  ((uint32_t)0x01000000)        /*!< HSI14 clock selected as MCO source */
-#define  RCC_CFGR_MCO_LSI                    ((uint32_t)0x02000000)        /*!< LSI clock selected as MCO source */
-#define  RCC_CFGR_MCO_LSE                    ((uint32_t)0x03000000)        /*!< LSE clock selected as MCO source */
-#define  RCC_CFGR_MCO_SYSCLK                 ((uint32_t)0x04000000)        /*!< System clock selected as MCO source */
-#define  RCC_CFGR_MCO_HSI                    ((uint32_t)0x05000000)        /*!< HSI clock selected as MCO source */
-#define  RCC_CFGR_MCO_HSE                    ((uint32_t)0x06000000)        /*!< HSE clock selected as MCO source  */
-#define  RCC_CFGR_MCO_PLL                    ((uint32_t)0x07000000)        /*!< PLL clock selected as MCO source */
-#define  RCC_CFGR_MCO_HSI48                  ((uint32_t)0x08000000)        /*!< HSI48 clock selected as MCO source */
-
-#define  RCC_CFGR_MCO_PRE                    ((uint32_t)0x70000000)        /*!< MCO prescaler (these bits are not available in the STM32F051 devices)*/
-#define  RCC_CFGR_MCO_PRE_1                  ((uint32_t)0x00000000)        /*!< MCO is divided by 1 (this bit are not available in the STM32F051 devices)*/
-#define  RCC_CFGR_MCO_PRE_2                  ((uint32_t)0x10000000)        /*!< MCO is divided by 2 (this bit are not available in the STM32F051 devices)*/
-#define  RCC_CFGR_MCO_PRE_4                  ((uint32_t)0x20000000)        /*!< MCO is divided by 4 (this bit are not available in the STM32F051 devices)*/
-#define  RCC_CFGR_MCO_PRE_8                  ((uint32_t)0x30000000)        /*!< MCO is divided by 8 (this bit are not available in the STM32F051 devices)*/
-#define  RCC_CFGR_MCO_PRE_16                 ((uint32_t)0x40000000)        /*!< MCO is divided by 16 (this bit are not available in the STM32F051 devices)*/
-#define  RCC_CFGR_MCO_PRE_32                 ((uint32_t)0x50000000)        /*!< MCO is divided by 32 (this bit are not available in the STM32F051 devices)*/
-#define  RCC_CFGR_MCO_PRE_64                 ((uint32_t)0x60000000)        /*!< MCO is divided by 64 (this bit are not available in the STM32F051 devices)*/
-#define  RCC_CFGR_MCO_PRE_128                ((uint32_t)0x70000000)        /*!< MCO is divided by 128 (this bit are not available in the STM32F051 devices)*/
-
-#define  RCC_CFGR_PLLNODIV                   ((uint32_t)0x80000000)        /*!< PLL is not divided to MCO (this bit are not available in the STM32F051 devices) */
-
-/*******************  Bit definition for RCC_CIR register  ********************/
-#define  RCC_CIR_LSIRDYF                     ((uint32_t)0x00000001)        /*!< LSI Ready Interrupt flag */
-#define  RCC_CIR_LSERDYF                     ((uint32_t)0x00000002)        /*!< LSE Ready Interrupt flag */
-#define  RCC_CIR_HSIRDYF                     ((uint32_t)0x00000004)        /*!< HSI Ready Interrupt flag */
-#define  RCC_CIR_HSERDYF                     ((uint32_t)0x00000008)        /*!< HSE Ready Interrupt flag */
-#define  RCC_CIR_PLLRDYF                     ((uint32_t)0x00000010)        /*!< PLL Ready Interrupt flag */
-#define  RCC_CIR_HSI14RDYF                   ((uint32_t)0x00000020)        /*!< HSI14 Ready Interrupt flag */
-#define  RCC_CIR_HSI48RDYF                   ((uint32_t)0x00000040)        /*!< HSI48 Ready Interrupt flag */
-#define  RCC_CIR_CSSF                        ((uint32_t)0x00000080)        /*!< Clock Security System Interrupt flag */
-#define  RCC_CIR_LSIRDYIE                    ((uint32_t)0x00000100)        /*!< LSI Ready Interrupt Enable */
-#define  RCC_CIR_LSERDYIE                    ((uint32_t)0x00000200)        /*!< LSE Ready Interrupt Enable */
-#define  RCC_CIR_HSIRDYIE                    ((uint32_t)0x00000400)        /*!< HSI Ready Interrupt Enable */
-#define  RCC_CIR_HSERDYIE                    ((uint32_t)0x00000800)        /*!< HSE Ready Interrupt Enable */
-#define  RCC_CIR_PLLRDYIE                    ((uint32_t)0x00001000)        /*!< PLL Ready Interrupt Enable */
-#define  RCC_CIR_HSI14RDYIE                  ((uint32_t)0x00002000)        /*!< HSI14 Ready Interrupt Enable */
-#define  RCC_CIR_HSI48RDYIE                  ((uint32_t)0x00004000)        /*!< HSI48 Ready Interrupt Enable */
-#define  RCC_CIR_LSIRDYC                     ((uint32_t)0x00010000)        /*!< LSI Ready Interrupt Clear */
-#define  RCC_CIR_LSERDYC                     ((uint32_t)0x00020000)        /*!< LSE Ready Interrupt Clear */
-#define  RCC_CIR_HSIRDYC                     ((uint32_t)0x00040000)        /*!< HSI Ready Interrupt Clear */
-#define  RCC_CIR_HSERDYC                     ((uint32_t)0x00080000)        /*!< HSE Ready Interrupt Clear */
-#define  RCC_CIR_PLLRDYC                     ((uint32_t)0x00100000)        /*!< PLL Ready Interrupt Clear */
-#define  RCC_CIR_HSI14RDYC                   ((uint32_t)0x00200000)        /*!< HSI14 Ready Interrupt Clear */
-#define  RCC_CIR_HSI48RDYC                   ((uint32_t)0x00400000)        /*!< HSI48 Ready Interrupt Clear */
-#define  RCC_CIR_CSSC                        ((uint32_t)0x00800000)        /*!< Clock Security System Interrupt Clear */
-
-/*****************  Bit definition for RCC_APB2RSTR register  *****************/
-#define  RCC_APB2RSTR_SYSCFGRST              ((uint32_t)0x00000001)        /*!< SYSCFG clock reset */
-#define  RCC_APB2RSTR_ADCRST                 ((uint32_t)0x00000200)        /*!< ADC clock reset */
-#define  RCC_APB2RSTR_TIM1RST                ((uint32_t)0x00000800)        /*!< TIM1 clock reset */
-#define  RCC_APB2RSTR_SPI1RST                ((uint32_t)0x00001000)        /*!< SPI1 clock reset */
-#define  RCC_APB2RSTR_USART1RST              ((uint32_t)0x00004000)        /*!< USART1 clock reset */
-#define  RCC_APB2RSTR_TIM15RST               ((uint32_t)0x00010000)        /*!< TIM15 clock reset */
-#define  RCC_APB2RSTR_TIM16RST               ((uint32_t)0x00020000)        /*!< TIM16 clock reset */
-#define  RCC_APB2RSTR_TIM17RST               ((uint32_t)0x00040000)        /*!< TIM17 clock reset */
-#define  RCC_APB2RSTR_DBGMCURST              ((uint32_t)0x00400000)        /*!< DBGMCU clock reset */
-
-/* Old ADC1 clock reset bit definition maintained for legacy purpose */
-#define  RCC_APB2RSTR_ADC1RST                RCC_APB2RSTR_ADCRST          
-
-/*****************  Bit definition for RCC_APB1RSTR register  *****************/
-#define  RCC_APB1RSTR_TIM2RST                ((uint32_t)0x00000001)        /*!< Timer 2 clock reset */
-#define  RCC_APB1RSTR_TIM3RST                ((uint32_t)0x00000002)        /*!< Timer 3 clock reset */
-#define  RCC_APB1RSTR_TIM6RST                ((uint32_t)0x00000010)        /*!< Timer 6 clock reset */
-#define  RCC_APB1RSTR_TIM7RST                ((uint32_t)0x00000020)        /*!< Timer 7 clock reset */
-#define  RCC_APB1RSTR_TIM14RST               ((uint32_t)0x00000100)        /*!< Timer 14 clock reset */
-#define  RCC_APB1RSTR_WWDGRST                ((uint32_t)0x00000800)        /*!< Window Watchdog clock reset */
-#define  RCC_APB1RSTR_SPI2RST                ((uint32_t)0x00004000)        /*!< SPI2 clock reset */
-#define  RCC_APB1RSTR_USART2RST              ((uint32_t)0x00020000)        /*!< USART 2 clock reset */
-#define  RCC_APB1RSTR_USART3RST              ((uint32_t)0x00040000)        /*!< USART 3 clock reset */
-#define  RCC_APB1RSTR_USART4RST              ((uint32_t)0x00080000)        /*!< USART 4 clock reset */
-#define  RCC_APB1RSTR_I2C1RST                ((uint32_t)0x00200000)        /*!< I2C 1 clock reset */
-#define  RCC_APB1RSTR_I2C2RST                ((uint32_t)0x00400000)        /*!< I2C 2 clock reset */
-#define  RCC_APB1RSTR_USBRST                 ((uint32_t)0x00800000)        /*!< USB clock reset */
-#define  RCC_APB1RSTR_CANRST                 ((uint32_t)0x02000000)        /*!< CAN clock reset */
-#define  RCC_APB1RSTR_CRSRST                 ((uint32_t)0x08000000)        /*!< CRS clock reset */
-#define  RCC_APB1RSTR_PWRRST                 ((uint32_t)0x10000000)        /*!< PWR clock reset */
-#define  RCC_APB1RSTR_DACRST                 ((uint32_t)0x20000000)        /*!< DAC clock reset */
-#define  RCC_APB1RSTR_CECRST                 ((uint32_t)0x40000000)        /*!< CEC clock reset */
-
-/******************  Bit definition for RCC_AHBENR register  ******************/
-#define  RCC_AHBENR_DMAEN                    ((uint32_t)0x00000001)        /*!< DMA clock enable */
-#define  RCC_AHBENR_SRAMEN                   ((uint32_t)0x00000004)        /*!< SRAM interface clock enable */
-#define  RCC_AHBENR_FLITFEN                  ((uint32_t)0x00000010)        /*!< FLITF clock enable */
-#define  RCC_AHBENR_CRCEN                    ((uint32_t)0x00000040)        /*!< CRC clock enable */
-#define  RCC_AHBENR_GPIOAEN                  ((uint32_t)0x00020000)        /*!< GPIOA clock enable */
-#define  RCC_AHBENR_GPIOBEN                  ((uint32_t)0x00040000)        /*!< GPIOB clock enable */
-#define  RCC_AHBENR_GPIOCEN                  ((uint32_t)0x00080000)        /*!< GPIOC clock enable */
-#define  RCC_AHBENR_GPIODEN                  ((uint32_t)0x00100000)        /*!< GPIOD clock enable */
-#define  RCC_AHBENR_GPIOEEN                  ((uint32_t)0x00200000)        /*!< GPIOE clock enable */
-#define  RCC_AHBENR_GPIOFEN                  ((uint32_t)0x00400000)        /*!< GPIOF clock enable */
-#define  RCC_AHBENR_TSCEN                    ((uint32_t)0x01000000)        /*!< TS controller clock enable */
-
-/* Old Bit definition maintained for legacy purpose */
-#define  RCC_AHBENR_DMA1EN                   RCC_AHBENR_DMAEN        /*!< DMA1 clock enable */
-#define  RCC_AHBENR_TSEN                     RCC_AHBENR_TSCEN        /*!< TS clock enable */
-
-/*****************  Bit definition for RCC_APB2ENR register  ******************/
-#define  RCC_APB2ENR_SYSCFGCOMPEN            ((uint32_t)0x00000001)        /*!< SYSCFG and comparator clock enable */
-#define  RCC_APB2ENR_ADCEN                   ((uint32_t)0x00000200)        /*!< ADC1 clock enable */
-#define  RCC_APB2ENR_TIM1EN                  ((uint32_t)0x00000800)        /*!< TIM1 clock enable */
-#define  RCC_APB2ENR_SPI1EN                  ((uint32_t)0x00001000)        /*!< SPI1 clock enable */
-#define  RCC_APB2ENR_USART1EN                ((uint32_t)0x00004000)        /*!< USART1 clock enable */
-#define  RCC_APB2ENR_TIM15EN                 ((uint32_t)0x00010000)        /*!< TIM15 clock enable */
-#define  RCC_APB2ENR_TIM16EN                 ((uint32_t)0x00020000)        /*!< TIM16 clock enable */
-#define  RCC_APB2ENR_TIM17EN                 ((uint32_t)0x00040000)        /*!< TIM17 clock enable */
-#define  RCC_APB2ENR_DBGMCUEN                ((uint32_t)0x00400000)        /*!< DBGMCU clock enable */
-
-/* Old Bit definition maintained for legacy purpose */
-#define  RCC_APB2ENR_SYSCFGEN                RCC_APB2ENR_SYSCFGCOMPEN        /*!< SYSCFG clock enable */
-#define  RCC_APB2ENR_ADC1EN                  RCC_APB2ENR_ADCEN               /*!< ADC1 clock enable */
-
-/*****************  Bit definition for RCC_APB1ENR register  ******************/
-#define  RCC_APB1ENR_TIM2EN                  ((uint32_t)0x00000001)        /*!< Timer 2 clock enable */
-#define  RCC_APB1ENR_TIM3EN                  ((uint32_t)0x00000002)        /*!< Timer 3 clock enable */
-#define  RCC_APB1ENR_TIM6EN                  ((uint32_t)0x00000010)        /*!< Timer 6 clock enable */
-#define  RCC_APB1ENR_TIM7EN                  ((uint32_t)0x00000020)        /*!< Timer 7 clock enable */
-#define  RCC_APB1ENR_TIM14EN                 ((uint32_t)0x00000100)        /*!< Timer 14 clock enable */
-#define  RCC_APB1ENR_WWDGEN                  ((uint32_t)0x00000800)        /*!< Window Watchdog clock enable */
-#define  RCC_APB1ENR_SPI2EN                  ((uint32_t)0x00004000)        /*!< SPI2 clock enable */
-#define  RCC_APB1ENR_USART2EN                ((uint32_t)0x00020000)        /*!< USART2 clock enable */
-#define  RCC_APB1ENR_USART3EN                ((uint32_t)0x00040000)        /*!< USART3 clock enable */
-#define  RCC_APB1ENR_USART4EN                ((uint32_t)0x00080000)        /*!< USART4 clock enable */
-#define  RCC_APB1ENR_I2C1EN                  ((uint32_t)0x00200000)        /*!< I2C1 clock enable */
-#define  RCC_APB1ENR_I2C2EN                  ((uint32_t)0x00400000)        /*!< I2C2 clock enable */
-#define  RCC_APB1ENR_USBEN                   ((uint32_t)0x00800000)        /*!< USB clock enable */
-#define  RCC_APB1ENR_CANEN                   ((uint32_t)0x02000000)         /*!< CAN clock enable */
-#define  RCC_APB1ENR_CRSEN                   ((uint32_t)0x08000000)        /*!< CRS clock enable */
-#define  RCC_APB1ENR_PWREN                   ((uint32_t)0x10000000)        /*!< PWR clock enable */
-#define  RCC_APB1ENR_DACEN                   ((uint32_t)0x20000000)        /*!< DAC clock enable */
-#define  RCC_APB1ENR_CECEN                   ((uint32_t)0x40000000)        /*!< CEC clock enable */
-
-/*******************  Bit definition for RCC_BDCR register  *******************/
-#define  RCC_BDCR_LSEON                      ((uint32_t)0x00000001)        /*!< External Low Speed oscillator enable */
-#define  RCC_BDCR_LSERDY                     ((uint32_t)0x00000002)        /*!< External Low Speed oscillator Ready */
-#define  RCC_BDCR_LSEBYP                     ((uint32_t)0x00000004)        /*!< External Low Speed oscillator Bypass */
-
-#define  RCC_BDCR_LSEDRV                     ((uint32_t)0x00000018)        /*!< LSEDRV[1:0] bits (LSE Osc. drive capability) */
-#define  RCC_BDCR_LSEDRV_0                   ((uint32_t)0x00000008)        /*!< Bit 0 */
-#define  RCC_BDCR_LSEDRV_1                   ((uint32_t)0x00000010)        /*!< Bit 1 */
-
-#define  RCC_BDCR_RTCSEL                     ((uint32_t)0x00000300)        /*!< RTCSEL[1:0] bits (RTC clock source selection) */
-#define  RCC_BDCR_RTCSEL_0                   ((uint32_t)0x00000100)        /*!< Bit 0 */
-#define  RCC_BDCR_RTCSEL_1                   ((uint32_t)0x00000200)        /*!< Bit 1 */
-
-/* RTC configuration */
-#define  RCC_BDCR_RTCSEL_NOCLOCK             ((uint32_t)0x00000000)        /*!< No clock */
-#define  RCC_BDCR_RTCSEL_LSE                 ((uint32_t)0x00000100)        /*!< LSE oscillator clock used as RTC clock */
-#define  RCC_BDCR_RTCSEL_LSI                 ((uint32_t)0x00000200)        /*!< LSI oscillator clock used as RTC clock */
-#define  RCC_BDCR_RTCSEL_HSE                 ((uint32_t)0x00000300)        /*!< HSE oscillator clock divided by 32 used as RTC clock */
-
-#define  RCC_BDCR_RTCEN                      ((uint32_t)0x00008000)        /*!< RTC clock enable */
-#define  RCC_BDCR_BDRST                      ((uint32_t)0x00010000)        /*!< Backup domain software reset  */
-
-/*******************  Bit definition for RCC_CSR register  ********************/  
-#define  RCC_CSR_LSION                       ((uint32_t)0x00000001)        /*!< Internal Low Speed oscillator enable */
-#define  RCC_CSR_LSIRDY                      ((uint32_t)0x00000002)        /*!< Internal Low Speed oscillator Ready */
-#define  RCC_CSR_V18PWRRSTF                  ((uint32_t)0x00800000)        /*!< V1.8 power domain reset flag */
-#define  RCC_CSR_RMVF                        ((uint32_t)0x01000000)        /*!< Remove reset flag */
-#define  RCC_CSR_OBLRSTF                     ((uint32_t)0x02000000)        /*!< OBL reset flag */
-#define  RCC_CSR_PINRSTF                     ((uint32_t)0x04000000)        /*!< PIN reset flag */
-#define  RCC_CSR_PORRSTF                     ((uint32_t)0x08000000)        /*!< POR/PDR reset flag */
-#define  RCC_CSR_SFTRSTF                     ((uint32_t)0x10000000)        /*!< Software Reset flag */
-#define  RCC_CSR_IWDGRSTF                    ((uint32_t)0x20000000)        /*!< Independent Watchdog reset flag */
-#define  RCC_CSR_WWDGRSTF                    ((uint32_t)0x40000000)        /*!< Window watchdog reset flag */
-#define  RCC_CSR_LPWRRSTF                    ((uint32_t)0x80000000)        /*!< Low-Power reset flag */
-
-/* Old Bit definition maintained for legacy purpose */
-#define  RCC_CSR_OBL                         RCC_CSR_OBLRSTF        /*!< OBL reset flag */
-/*******************  Bit definition for RCC_AHBRSTR register  ****************/
-#define  RCC_AHBRSTR_GPIOARST                ((uint32_t)0x00020000)         /*!< GPIOA clock reset */
-#define  RCC_AHBRSTR_GPIOBRST                ((uint32_t)0x00040000)         /*!< GPIOB clock reset */
-#define  RCC_AHBRSTR_GPIOCRST                ((uint32_t)0x00080000)         /*!< GPIOC clock reset */
-#define  RCC_AHBRSTR_GPIODRST                ((uint32_t)0x00010000)         /*!< GPIOD clock reset */
-#define  RCC_AHBRSTR_GPIOERST                ((uint32_t)0x00020000)         /*!< GPIOE clock reset */
-#define  RCC_AHBRSTR_GPIOFRST                ((uint32_t)0x00040000)         /*!< GPIOF clock reset */
-#define  RCC_AHBRSTR_TSCRST                   ((uint32_t)0x00100000)         /*!< TS clock reset */
-
-/* Old Bit definition maintained for legacy purpose */
-#define  RCC_AHBRSTR_TSRST                   RCC_AHBRSTR_TSCRST         /*!< TS clock reset */
-
-/*******************  Bit definition for RCC_CFGR2 register  ******************/
-/* PREDIV1 configuration */
-#define  RCC_CFGR2_PREDIV1                   ((uint32_t)0x0000000F)        /*!< PREDIV1[3:0] bits */
-#define  RCC_CFGR2_PREDIV1_0                 ((uint32_t)0x00000001)        /*!< Bit 0 */
-#define  RCC_CFGR2_PREDIV1_1                 ((uint32_t)0x00000002)        /*!< Bit 1 */
-#define  RCC_CFGR2_PREDIV1_2                 ((uint32_t)0x00000004)        /*!< Bit 2 */
-#define  RCC_CFGR2_PREDIV1_3                 ((uint32_t)0x00000008)        /*!< Bit 3 */
-
-#define  RCC_CFGR2_PREDIV1_DIV1              ((uint32_t)0x00000000)        /*!< PREDIV1 input clock not divided */
-#define  RCC_CFGR2_PREDIV1_DIV2              ((uint32_t)0x00000001)        /*!< PREDIV1 input clock divided by 2 */
-#define  RCC_CFGR2_PREDIV1_DIV3              ((uint32_t)0x00000002)        /*!< PREDIV1 input clock divided by 3 */
-#define  RCC_CFGR2_PREDIV1_DIV4              ((uint32_t)0x00000003)        /*!< PREDIV1 input clock divided by 4 */
-#define  RCC_CFGR2_PREDIV1_DIV5              ((uint32_t)0x00000004)        /*!< PREDIV1 input clock divided by 5 */
-#define  RCC_CFGR2_PREDIV1_DIV6              ((uint32_t)0x00000005)        /*!< PREDIV1 input clock divided by 6 */
-#define  RCC_CFGR2_PREDIV1_DIV7              ((uint32_t)0x00000006)        /*!< PREDIV1 input clock divided by 7 */
-#define  RCC_CFGR2_PREDIV1_DIV8              ((uint32_t)0x00000007)        /*!< PREDIV1 input clock divided by 8 */
-#define  RCC_CFGR2_PREDIV1_DIV9              ((uint32_t)0x00000008)        /*!< PREDIV1 input clock divided by 9 */
-#define  RCC_CFGR2_PREDIV1_DIV10             ((uint32_t)0x00000009)        /*!< PREDIV1 input clock divided by 10 */
-#define  RCC_CFGR2_PREDIV1_DIV11             ((uint32_t)0x0000000A)        /*!< PREDIV1 input clock divided by 11 */
-#define  RCC_CFGR2_PREDIV1_DIV12             ((uint32_t)0x0000000B)        /*!< PREDIV1 input clock divided by 12 */
-#define  RCC_CFGR2_PREDIV1_DIV13             ((uint32_t)0x0000000C)        /*!< PREDIV1 input clock divided by 13 */
-#define  RCC_CFGR2_PREDIV1_DIV14             ((uint32_t)0x0000000D)        /*!< PREDIV1 input clock divided by 14 */
-#define  RCC_CFGR2_PREDIV1_DIV15             ((uint32_t)0x0000000E)        /*!< PREDIV1 input clock divided by 15 */
-#define  RCC_CFGR2_PREDIV1_DIV16             ((uint32_t)0x0000000F)        /*!< PREDIV1 input clock divided by 16 */
-
-/*******************  Bit definition for RCC_CFGR3 register  ******************/
-#define  RCC_CFGR3_USART1SW                  ((uint32_t)0x00000003)        /*!< USART1SW[1:0] bits */
-#define  RCC_CFGR3_USART1SW_0                ((uint32_t)0x00000001)        /*!< Bit 0 */
-#define  RCC_CFGR3_USART1SW_1                ((uint32_t)0x00000002)        /*!< Bit 1 */
-#define  RCC_CFGR3_I2C1SW                    ((uint32_t)0x00000010)        /*!< I2C1SW bits */
-#define  RCC_CFGR3_CECSW                     ((uint32_t)0x00000040)        /*!< CECSW bits */
-#define  RCC_CFGR3_USBSW                     ((uint32_t)0x00000080)        /*!< USBSW bits */
-#define  RCC_CFGR3_ADCSW                     ((uint32_t)0x00000100)        /*!< ADCSW bits */
-#define  RCC_CFGR3_USART2SW                  ((uint32_t)0x00030000)        /*!< USART2SW[1:0] bits */
-#define  RCC_CFGR3_USART2SW_0                ((uint32_t)0x00010000)        /*!< Bit 0 */
-#define  RCC_CFGR3_USART2SW_1                ((uint32_t)0x00020000)        /*!< Bit 1 */
-
-/*******************  Bit definition for RCC_CR2 register  ********************/
-#define  RCC_CR2_HSI14ON                     ((uint32_t)0x00000001)        /*!< Internal High Speed 14MHz clock enable */
-#define  RCC_CR2_HSI14RDY                    ((uint32_t)0x00000002)        /*!< Internal High Speed 14MHz clock ready flag */
-#define  RCC_CR2_HSI14DIS                    ((uint32_t)0x00000004)        /*!< Internal High Speed 14MHz clock disable */
-#define  RCC_CR2_HSI14TRIM                   ((uint32_t)0x000000F8)        /*!< Internal High Speed 14MHz clock trimming */
-#define  RCC_CR2_HSI14CAL                    ((uint32_t)0x0000FF00)        /*!< Internal High Speed 14MHz clock Calibration */
-#define  RCC_CR2_HSI48ON                     ((uint32_t)0x00010000)        /*!< Internal High Speed 48MHz clock enable */
-#define  RCC_CR2_HSI48RDY                    ((uint32_t)0x00020000)        /*!< Internal High Speed 48MHz clock ready flag */
-#define  RCC_CR2_HSI48CAL                    ((uint32_t)0xFF000000)        /*!< Internal High Speed 48MHz clock Calibration */
-
-/******************************************************************************/
-/*                                                                            */
-/*                           Real-Time Clock (RTC)                            */
-/*                                                                            */
-/******************************************************************************/
-/********************  Bits definition for RTC_TR register  *******************/
-#define RTC_TR_PM                            ((uint32_t)0x00400000)
-#define RTC_TR_HT                            ((uint32_t)0x00300000)        
-#define RTC_TR_HT_0                          ((uint32_t)0x00100000)        
-#define RTC_TR_HT_1                          ((uint32_t)0x00200000)        
-#define RTC_TR_HU                            ((uint32_t)0x000F0000)        
-#define RTC_TR_HU_0                          ((uint32_t)0x00010000)        
-#define RTC_TR_HU_1                          ((uint32_t)0x00020000)        
-#define RTC_TR_HU_2                          ((uint32_t)0x00040000)        
-#define RTC_TR_HU_3                          ((uint32_t)0x00080000)        
-#define RTC_TR_MNT                           ((uint32_t)0x00007000)        
-#define RTC_TR_MNT_0                         ((uint32_t)0x00001000)        
-#define RTC_TR_MNT_1                         ((uint32_t)0x00002000)        
-#define RTC_TR_MNT_2                         ((uint32_t)0x00004000)        
-#define RTC_TR_MNU                           ((uint32_t)0x00000F00)        
-#define RTC_TR_MNU_0                         ((uint32_t)0x00000100)        
-#define RTC_TR_MNU_1                         ((uint32_t)0x00000200)        
-#define RTC_TR_MNU_2                         ((uint32_t)0x00000400)        
-#define RTC_TR_MNU_3                         ((uint32_t)0x00000800)        
-#define RTC_TR_ST                            ((uint32_t)0x00000070)        
-#define RTC_TR_ST_0                          ((uint32_t)0x00000010)        
-#define RTC_TR_ST_1                          ((uint32_t)0x00000020)        
-#define RTC_TR_ST_2                          ((uint32_t)0x00000040)        
-#define RTC_TR_SU                            ((uint32_t)0x0000000F)        
-#define RTC_TR_SU_0                          ((uint32_t)0x00000001)        
-#define RTC_TR_SU_1                          ((uint32_t)0x00000002)        
-#define RTC_TR_SU_2                          ((uint32_t)0x00000004)        
-#define RTC_TR_SU_3                          ((uint32_t)0x00000008)        
-
-/********************  Bits definition for RTC_DR register  *******************/
-#define RTC_DR_YT                            ((uint32_t)0x00F00000)        
-#define RTC_DR_YT_0                          ((uint32_t)0x00100000)        
-#define RTC_DR_YT_1                          ((uint32_t)0x00200000)        
-#define RTC_DR_YT_2                          ((uint32_t)0x00400000)        
-#define RTC_DR_YT_3                          ((uint32_t)0x00800000)        
-#define RTC_DR_YU                            ((uint32_t)0x000F0000)        
-#define RTC_DR_YU_0                          ((uint32_t)0x00010000)        
-#define RTC_DR_YU_1                          ((uint32_t)0x00020000)        
-#define RTC_DR_YU_2                          ((uint32_t)0x00040000)        
-#define RTC_DR_YU_3                          ((uint32_t)0x00080000)        
-#define RTC_DR_WDU                           ((uint32_t)0x0000E000)        
-#define RTC_DR_WDU_0                         ((uint32_t)0x00002000)        
-#define RTC_DR_WDU_1                         ((uint32_t)0x00004000)        
-#define RTC_DR_WDU_2                         ((uint32_t)0x00008000)        
-#define RTC_DR_MT                            ((uint32_t)0x00001000)        
-#define RTC_DR_MU                            ((uint32_t)0x00000F00)        
-#define RTC_DR_MU_0                          ((uint32_t)0x00000100)        
-#define RTC_DR_MU_1                          ((uint32_t)0x00000200)        
-#define RTC_DR_MU_2                          ((uint32_t)0x00000400)        
-#define RTC_DR_MU_3                          ((uint32_t)0x00000800)        
-#define RTC_DR_DT                            ((uint32_t)0x00000030)        
-#define RTC_DR_DT_0                          ((uint32_t)0x00000010)        
-#define RTC_DR_DT_1                          ((uint32_t)0x00000020)        
-#define RTC_DR_DU                            ((uint32_t)0x0000000F)        
-#define RTC_DR_DU_0                          ((uint32_t)0x00000001)        
-#define RTC_DR_DU_1                          ((uint32_t)0x00000002)        
-#define RTC_DR_DU_2                          ((uint32_t)0x00000004)        
-#define RTC_DR_DU_3                          ((uint32_t)0x00000008)        
-
-/********************  Bits definition for RTC_CR register  *******************/
-#define RTC_CR_COE                           ((uint32_t)0x00800000)        
-#define RTC_CR_OSEL                          ((uint32_t)0x00600000)        
-#define RTC_CR_OSEL_0                        ((uint32_t)0x00200000)        
-#define RTC_CR_OSEL_1                        ((uint32_t)0x00400000)        
-#define RTC_CR_POL                           ((uint32_t)0x00100000)        
-#define RTC_CR_COSEL                         ((uint32_t)0x00080000)        
-#define RTC_CR_BKP                           ((uint32_t)0x00040000)        
-#define RTC_CR_SUB1H                         ((uint32_t)0x00020000)        
-#define RTC_CR_ADD1H                         ((uint32_t)0x00010000)        
-#define RTC_CR_TSIE                          ((uint32_t)0x00008000)        
-#define RTC_CR_WUTIE                         ((uint32_t)0x00004000)
-#define RTC_CR_ALRAIE                        ((uint32_t)0x00001000)        
-#define RTC_CR_TSE                           ((uint32_t)0x00000800)        
-#define RTC_CR_WUTE                          ((uint32_t)0x00000400)        
-#define RTC_CR_ALRAE                         ((uint32_t)0x00000100)        
-#define RTC_CR_FMT                           ((uint32_t)0x00000040)        
-#define RTC_CR_BYPSHAD                       ((uint32_t)0x00000020)        
-#define RTC_CR_REFCKON                       ((uint32_t)0x00000010)        
-#define RTC_CR_TSEDGE                        ((uint32_t)0x00000008)        
-#define RTC_CR_WUCKSEL                       ((uint32_t)0x00000007)        
-#define RTC_CR_WUCKSEL_0                     ((uint32_t)0x00000001)        
-#define RTC_CR_WUCKSEL_1                     ((uint32_t)0x00000002)        
-#define RTC_CR_WUCKSEL_2                     ((uint32_t)0x00000004)        
-
-/* Old bit definition maintained for legacy purpose */
-#define RTC_CR_BCK                           RTC_CR_BKP
-#define RTC_CR_CALSEL                        RTC_CR_COSEL
-
-/********************  Bits definition for RTC_ISR register  ******************/
-#define RTC_ISR_RECALPF                      ((uint32_t)0x00010000)        
-#define RTC_ISR_TAMP3F                       ((uint32_t)0x00008000)        
-#define RTC_ISR_TAMP2F                       ((uint32_t)0x00004000)        
-#define RTC_ISR_TAMP1F                       ((uint32_t)0x00002000)        
-#define RTC_ISR_TSOVF                        ((uint32_t)0x00001000)        
-#define RTC_ISR_TSF                          ((uint32_t)0x00000800)        
-#define RTC_ISR_WUTF                         ((uint32_t)0x00000400)        
-#define RTC_ISR_ALRAF                        ((uint32_t)0x00000100)        
-#define RTC_ISR_INIT                         ((uint32_t)0x00000080)        
-#define RTC_ISR_INITF                        ((uint32_t)0x00000040)        
-#define RTC_ISR_RSF                          ((uint32_t)0x00000020)        
-#define RTC_ISR_INITS                        ((uint32_t)0x00000010)        
-#define RTC_ISR_SHPF                         ((uint32_t)0x00000008)        
-#define RTC_ISR_WUTWF                        ((uint32_t)0x00000004)        
-#define RTC_ISR_ALRAWF                       ((uint32_t)0x00000001)        
-
-/********************  Bits definition for RTC_PRER register  *****************/
-#define RTC_PRER_PREDIV_A                    ((uint32_t)0x007F0000)        
-#define RTC_PRER_PREDIV_S                    ((uint32_t)0x00007FFF)        
-
-/********************  Bits definition for RTC_WUTR register  *****************/
-#define RTC_WUTR_WUT                         ((uint32_t)0x0000FFFF)
-
-/********************  Bits definition for RTC_ALRMAR register  ***************/
-#define RTC_ALRMAR_MSK4                      ((uint32_t)0x80000000)        
-#define RTC_ALRMAR_WDSEL                     ((uint32_t)0x40000000)        
-#define RTC_ALRMAR_DT                        ((uint32_t)0x30000000)        
-#define RTC_ALRMAR_DT_0                      ((uint32_t)0x10000000)        
-#define RTC_ALRMAR_DT_1                      ((uint32_t)0x20000000)        
-#define RTC_ALRMAR_DU                        ((uint32_t)0x0F000000)        
-#define RTC_ALRMAR_DU_0                      ((uint32_t)0x01000000)        
-#define RTC_ALRMAR_DU_1                      ((uint32_t)0x02000000)        
-#define RTC_ALRMAR_DU_2                      ((uint32_t)0x04000000)        
-#define RTC_ALRMAR_DU_3                      ((uint32_t)0x08000000)        
-#define RTC_ALRMAR_MSK3                      ((uint32_t)0x00800000)        
-#define RTC_ALRMAR_PM                        ((uint32_t)0x00400000)        
-#define RTC_ALRMAR_HT                        ((uint32_t)0x00300000)        
-#define RTC_ALRMAR_HT_0                      ((uint32_t)0x00100000)        
-#define RTC_ALRMAR_HT_1                      ((uint32_t)0x00200000)        
-#define RTC_ALRMAR_HU                        ((uint32_t)0x000F0000)        
-#define RTC_ALRMAR_HU_0                      ((uint32_t)0x00010000)        
-#define RTC_ALRMAR_HU_1                      ((uint32_t)0x00020000)        
-#define RTC_ALRMAR_HU_2                      ((uint32_t)0x00040000)        
-#define RTC_ALRMAR_HU_3                      ((uint32_t)0x00080000)        
-#define RTC_ALRMAR_MSK2                      ((uint32_t)0x00008000)        
-#define RTC_ALRMAR_MNT                       ((uint32_t)0x00007000)        
-#define RTC_ALRMAR_MNT_0                     ((uint32_t)0x00001000)        
-#define RTC_ALRMAR_MNT_1                     ((uint32_t)0x00002000)        
-#define RTC_ALRMAR_MNT_2                     ((uint32_t)0x00004000)        
-#define RTC_ALRMAR_MNU                       ((uint32_t)0x00000F00)        
-#define RTC_ALRMAR_MNU_0                     ((uint32_t)0x00000100)        
-#define RTC_ALRMAR_MNU_1                     ((uint32_t)0x00000200)        
-#define RTC_ALRMAR_MNU_2                     ((uint32_t)0x00000400)        
-#define RTC_ALRMAR_MNU_3                     ((uint32_t)0x00000800)        
-#define RTC_ALRMAR_MSK1                      ((uint32_t)0x00000080)        
-#define RTC_ALRMAR_ST                        ((uint32_t)0x00000070)        
-#define RTC_ALRMAR_ST_0                      ((uint32_t)0x00000010)        
-#define RTC_ALRMAR_ST_1                      ((uint32_t)0x00000020)        
-#define RTC_ALRMAR_ST_2                      ((uint32_t)0x00000040)        
-#define RTC_ALRMAR_SU                        ((uint32_t)0x0000000F)        
-#define RTC_ALRMAR_SU_0                      ((uint32_t)0x00000001)        
-#define RTC_ALRMAR_SU_1                      ((uint32_t)0x00000002)        
-#define RTC_ALRMAR_SU_2                      ((uint32_t)0x00000004)        
-#define RTC_ALRMAR_SU_3                      ((uint32_t)0x00000008)        
-
-/********************  Bits definition for RTC_WPR register  ******************/
-#define RTC_WPR_KEY                          ((uint32_t)0x000000FF)        
-
-/********************  Bits definition for RTC_SSR register  ******************/
-#define RTC_SSR_SS                           ((uint32_t)0x0003FFFF)        
-
-/********************  Bits definition for RTC_SHIFTR register  ***************/
-#define RTC_SHIFTR_SUBFS                     ((uint32_t)0x00007FFF)        
-#define RTC_SHIFTR_ADD1S                     ((uint32_t)0x80000000)        
-
-/********************  Bits definition for RTC_TSTR register  *****************/
-#define RTC_TSTR_PM                          ((uint32_t)0x00400000)        
-#define RTC_TSTR_HT                          ((uint32_t)0x00300000)        
-#define RTC_TSTR_HT_0                        ((uint32_t)0x00100000)        
-#define RTC_TSTR_HT_1                        ((uint32_t)0x00200000)        
-#define RTC_TSTR_HU                          ((uint32_t)0x000F0000)        
-#define RTC_TSTR_HU_0                        ((uint32_t)0x00010000)        
-#define RTC_TSTR_HU_1                        ((uint32_t)0x00020000)        
-#define RTC_TSTR_HU_2                        ((uint32_t)0x00040000)        
-#define RTC_TSTR_HU_3                        ((uint32_t)0x00080000)        
-#define RTC_TSTR_MNT                         ((uint32_t)0x00007000)        
-#define RTC_TSTR_MNT_0                       ((uint32_t)0x00001000)        
-#define RTC_TSTR_MNT_1                       ((uint32_t)0x00002000)        
-#define RTC_TSTR_MNT_2                       ((uint32_t)0x00004000)        
-#define RTC_TSTR_MNU                         ((uint32_t)0x00000F00)        
-#define RTC_TSTR_MNU_0                       ((uint32_t)0x00000100)        
-#define RTC_TSTR_MNU_1                       ((uint32_t)0x00000200)        
-#define RTC_TSTR_MNU_2                       ((uint32_t)0x00000400)        
-#define RTC_TSTR_MNU_3                       ((uint32_t)0x00000800)        
-#define RTC_TSTR_ST                          ((uint32_t)0x00000070)        
-#define RTC_TSTR_ST_0                        ((uint32_t)0x00000010)        
-#define RTC_TSTR_ST_1                        ((uint32_t)0x00000020)        
-#define RTC_TSTR_ST_2                        ((uint32_t)0x00000040)        
-#define RTC_TSTR_SU                          ((uint32_t)0x0000000F)        
-#define RTC_TSTR_SU_0                        ((uint32_t)0x00000001)        
-#define RTC_TSTR_SU_1                        ((uint32_t)0x00000002)        
-#define RTC_TSTR_SU_2                        ((uint32_t)0x00000004)        
-#define RTC_TSTR_SU_3                        ((uint32_t)0x00000008)        
-
-/********************  Bits definition for RTC_TSDR register  *****************/
-#define RTC_TSDR_WDU                         ((uint32_t)0x0000E000)        
-#define RTC_TSDR_WDU_0                       ((uint32_t)0x00002000)        
-#define RTC_TSDR_WDU_1                       ((uint32_t)0x00004000)        
-#define RTC_TSDR_WDU_2                       ((uint32_t)0x00008000)        
-#define RTC_TSDR_MT                          ((uint32_t)0x00001000)        
-#define RTC_TSDR_MU                          ((uint32_t)0x00000F00)        
-#define RTC_TSDR_MU_0                        ((uint32_t)0x00000100)        
-#define RTC_TSDR_MU_1                        ((uint32_t)0x00000200)        
-#define RTC_TSDR_MU_2                        ((uint32_t)0x00000400)        
-#define RTC_TSDR_MU_3                        ((uint32_t)0x00000800)        
-#define RTC_TSDR_DT                          ((uint32_t)0x00000030)        
-#define RTC_TSDR_DT_0                        ((uint32_t)0x00000010)        
-#define RTC_TSDR_DT_1                        ((uint32_t)0x00000020)        
-#define RTC_TSDR_DU                          ((uint32_t)0x0000000F)        
-#define RTC_TSDR_DU_0                        ((uint32_t)0x00000001)        
-#define RTC_TSDR_DU_1                        ((uint32_t)0x00000002)        
-#define RTC_TSDR_DU_2                        ((uint32_t)0x00000004)        
-#define RTC_TSDR_DU_3                        ((uint32_t)0x00000008)        
-
-/********************  Bits definition for RTC_TSSSR register  ****************/
-#define RTC_TSSSR_SS                         ((uint32_t)0x0003FFFF)
-
-/********************  Bits definition for RTC_CALR register  ******************/
-#define RTC_CALR_CALP                         ((uint32_t)0x00008000)        
-#define RTC_CALR_CALW8                        ((uint32_t)0x00004000)        
-#define RTC_CALR_CALW16                       ((uint32_t)0x00002000)        
-#define RTC_CALR_CALM                         ((uint32_t)0x000001FF)        
-#define RTC_CALR_CALM_0                       ((uint32_t)0x00000001)        
-#define RTC_CALR_CALM_1                       ((uint32_t)0x00000002)        
-#define RTC_CALR_CALM_2                       ((uint32_t)0x00000004)        
-#define RTC_CALR_CALM_3                       ((uint32_t)0x00000008)        
-#define RTC_CALR_CALM_4                       ((uint32_t)0x00000010)        
-#define RTC_CALR_CALM_5                       ((uint32_t)0x00000020)        
-#define RTC_CALR_CALM_6                       ((uint32_t)0x00000040)        
-#define RTC_CALR_CALM_7                       ((uint32_t)0x00000080)        
-#define RTC_CALR_CALM_8                       ((uint32_t)0x00000100)
-
-/* Old Bits definition for RTC_CAL register maintained for legacy purpose */
-#define RTC_CAL_CALP                         RTC_CALR_CALP  
-#define RTC_CAL_CALW8                        RTC_CALR_CALW8 
-#define RTC_CAL_CALW16                       RTC_CALR_CALW16
-#define RTC_CAL_CALM                         RTC_CALR_CALM  
-#define RTC_CAL_CALM_0                       RTC_CALR_CALM_0
-#define RTC_CAL_CALM_1                       RTC_CALR_CALM_1
-#define RTC_CAL_CALM_2                       RTC_CALR_CALM_2
-#define RTC_CAL_CALM_3                       RTC_CALR_CALM_3
-#define RTC_CAL_CALM_4                       RTC_CALR_CALM_4
-#define RTC_CAL_CALM_5                       RTC_CALR_CALM_5
-#define RTC_CAL_CALM_6                       RTC_CALR_CALM_6
-#define RTC_CAL_CALM_7                       RTC_CALR_CALM_7
-#define RTC_CAL_CALM_8                       RTC_CALR_CALM_8
-
-/********************  Bits definition for RTC_TAFCR register  ****************/
-#define RTC_TAFCR_PC15MODE                   ((uint32_t)0x00800000)
-#define RTC_TAFCR_PC15VALUE                  ((uint32_t)0x00400000)
-#define RTC_TAFCR_PC14MODE                   ((uint32_t)0x00200000)
-#define RTC_TAFCR_PC14VALUE                  ((uint32_t)0x00100000)
-#define RTC_TAFCR_PC13MODE                   ((uint32_t)0x00080000)
-#define RTC_TAFCR_PC13VALUE                  ((uint32_t)0x00040000)        
-#define RTC_TAFCR_TAMPPUDIS                  ((uint32_t)0x00008000)        
-#define RTC_TAFCR_TAMPPRCH                   ((uint32_t)0x00006000)        
-#define RTC_TAFCR_TAMPPRCH_0                 ((uint32_t)0x00002000)        
-#define RTC_TAFCR_TAMPPRCH_1                 ((uint32_t)0x00004000)        
-#define RTC_TAFCR_TAMPFLT                    ((uint32_t)0x00001800)        
-#define RTC_TAFCR_TAMPFLT_0                  ((uint32_t)0x00000800)        
-#define RTC_TAFCR_TAMPFLT_1                  ((uint32_t)0x00001000)        
-#define RTC_TAFCR_TAMPFREQ                   ((uint32_t)0x00000700)        
-#define RTC_TAFCR_TAMPFREQ_0                 ((uint32_t)0x00000100)        
-#define RTC_TAFCR_TAMPFREQ_1                 ((uint32_t)0x00000200)        
-#define RTC_TAFCR_TAMPFREQ_2                 ((uint32_t)0x00000400)        
-#define RTC_TAFCR_TAMPTS                     ((uint32_t)0x00000080)        
-#define RTC_TAFCR_TAMP3EDGE                  ((uint32_t)0x00000040)        
-#define RTC_TAFCR_TAMP3E                     ((uint32_t)0x00000020)        
-#define RTC_TAFCR_TAMP2EDGE                  ((uint32_t)0x00000010)        
-#define RTC_TAFCR_TAMP2E                     ((uint32_t)0x00000008)        
-#define RTC_TAFCR_TAMPIE                     ((uint32_t)0x00000004)        
-#define RTC_TAFCR_TAMP1TRG                   ((uint32_t)0x00000002)        
-#define RTC_TAFCR_TAMP1E                     ((uint32_t)0x00000001)        
-
-/* Old bit definition maintained for legacy purpose */
-#define RTC_TAFCR_ALARMOUTTYPE               RTC_TAFCR_PC13VALUE
-
-/********************  Bits definition for RTC_ALRMASSR register  *************/
-#define RTC_ALRMASSR_MASKSS                  ((uint32_t)0x0F000000)        
-#define RTC_ALRMASSR_MASKSS_0                ((uint32_t)0x01000000)        
-#define RTC_ALRMASSR_MASKSS_1                ((uint32_t)0x02000000)        
-#define RTC_ALRMASSR_MASKSS_2                ((uint32_t)0x04000000)        
-#define RTC_ALRMASSR_MASKSS_3                ((uint32_t)0x08000000)        
-#define RTC_ALRMASSR_SS                      ((uint32_t)0x00007FFF)        
-
-/********************  Bits definition for RTC_BKP0R register  ****************/
-#define RTC_BKP0R                            ((uint32_t)0xFFFFFFFF)        
-
-/********************  Bits definition for RTC_BKP1R register  ****************/
-#define RTC_BKP1R                            ((uint32_t)0xFFFFFFFF)        
-
-/********************  Bits definition for RTC_BKP2R register  ****************/
-#define RTC_BKP2R                            ((uint32_t)0xFFFFFFFF)        
-
-/********************  Bits definition for RTC_BKP3R register  ****************/
-#define RTC_BKP3R                            ((uint32_t)0xFFFFFFFF)        
-
-/********************  Bits definition for RTC_BKP4R register  ****************/
-#define RTC_BKP4R                            ((uint32_t)0xFFFFFFFF)        
-
-/******************************************************************************/
-/*                                                                            */
-/*                        Serial Peripheral Interface (SPI)                   */
-/*                                                                            */
-/******************************************************************************/
-/*******************  Bit definition for SPI_CR1 register  ********************/
-#define  SPI_CR1_CPHA                        ((uint16_t)0x0001)            /*!< Clock Phase */
-#define  SPI_CR1_CPOL                        ((uint16_t)0x0002)            /*!< Clock Polarity */
-#define  SPI_CR1_MSTR                        ((uint16_t)0x0004)            /*!< Master Selection */
-#define  SPI_CR1_BR                          ((uint16_t)0x0038)            /*!< BR[2:0] bits (Baud Rate Control) */
-#define  SPI_CR1_BR_0                        ((uint16_t)0x0008)            /*!< Bit 0 */
-#define  SPI_CR1_BR_1                        ((uint16_t)0x0010)            /*!< Bit 1 */
-#define  SPI_CR1_BR_2                        ((uint16_t)0x0020)            /*!< Bit 2 */
-#define  SPI_CR1_SPE                         ((uint16_t)0x0040)            /*!< SPI Enable */
-#define  SPI_CR1_LSBFIRST                    ((uint16_t)0x0080)            /*!< Frame Format */
-#define  SPI_CR1_SSI                         ((uint16_t)0x0100)            /*!< Internal slave select */
-#define  SPI_CR1_SSM                         ((uint16_t)0x0200)            /*!< Software slave management */
-#define  SPI_CR1_RXONLY                      ((uint16_t)0x0400)            /*!< Receive only */
-#define  SPI_CR1_CRCL                        ((uint16_t)0x0800)            /*!< CRC Length */
-#define  SPI_CR1_CRCNEXT                     ((uint16_t)0x1000)            /*!< Transmit CRC next */
-#define  SPI_CR1_CRCEN                       ((uint16_t)0x2000)            /*!< Hardware CRC calculation enable */
-#define  SPI_CR1_BIDIOE                      ((uint16_t)0x4000)            /*!< Output enable in bidirectional mode */
-#define  SPI_CR1_BIDIMODE                    ((uint16_t)0x8000)            /*!< Bidirectional data mode enable */
-
-/*******************  Bit definition for SPI_CR2 register  ********************/
-#define  SPI_CR2_RXDMAEN                     ((uint16_t)0x0001)            /*!< Rx Buffer DMA Enable */
-#define  SPI_CR2_TXDMAEN                     ((uint16_t)0x0002)            /*!< Tx Buffer DMA Enable */
-#define  SPI_CR2_SSOE                        ((uint16_t)0x0004)            /*!< SS Output Enable */
-#define  SPI_CR2_NSSP                        ((uint16_t)0x0008)            /*!< NSS pulse management Enable */
-#define  SPI_CR2_FRF                         ((uint16_t)0x0010)            /*!< Frame Format Enable */
-#define  SPI_CR2_ERRIE                       ((uint16_t)0x0020)            /*!< Error Interrupt Enable */
-#define  SPI_CR2_RXNEIE                      ((uint16_t)0x0040)            /*!< RX buffer Not Empty Interrupt Enable */
-#define  SPI_CR2_TXEIE                       ((uint16_t)0x0080)            /*!< Tx buffer Empty Interrupt Enable */
-#define  SPI_CR2_DS                          ((uint16_t)0x0F00)            /*!< DS[3:0] Data Size */
-#define  SPI_CR2_DS_0                        ((uint16_t)0x0100)            /*!< Bit 0 */
-#define  SPI_CR2_DS_1                        ((uint16_t)0x0200)            /*!< Bit 1 */
-#define  SPI_CR2_DS_2                        ((uint16_t)0x0400)            /*!< Bit 2 */
-#define  SPI_CR2_DS_3                        ((uint16_t)0x0800)            /*!< Bit 3 */
-#define  SPI_CR2_FRXTH                       ((uint16_t)0x1000)            /*!< FIFO reception Threshold */
-#define  SPI_CR2_LDMARX                      ((uint16_t)0x2000)            /*!< Last DMA transfer for reception */
-#define  SPI_CR2_LDMATX                      ((uint16_t)0x4000)            /*!< Last DMA transfer for transmission */
-
-/********************  Bit definition for SPI_SR register  ********************/
-#define  SPI_SR_RXNE                         ((uint16_t)0x0001)            /*!< Receive buffer Not Empty */
-#define  SPI_SR_TXE                          ((uint16_t)0x0002)            /*!< Transmit buffer Empty */
-#define  SPI_SR_CHSIDE                       ((uint16_t)0x0004)            /*!< Channel side */
-#define  SPI_SR_UDR                          ((uint16_t)0x0008)            /*!< Underrun flag */
-#define  SPI_SR_CRCERR                       ((uint16_t)0x0010)            /*!< CRC Error flag */
-#define  SPI_SR_MODF                         ((uint16_t)0x0020)            /*!< Mode fault */
-#define  SPI_SR_OVR                          ((uint16_t)0x0040)            /*!< Overrun flag */
-#define  SPI_SR_BSY                          ((uint16_t)0x0080)            /*!< Busy flag */
-#define  SPI_SR_FRE                          ((uint16_t)0x0100)            /*!< TI frame format error */
-#define  SPI_SR_FRLVL                        ((uint16_t)0x0600)            /*!< FIFO Reception Level */
-#define  SPI_SR_FRLVL_0                      ((uint16_t)0x0200)            /*!< Bit 0 */
-#define  SPI_SR_FRLVL_1                      ((uint16_t)0x0400)            /*!< Bit 1 */
-#define  SPI_SR_FTLVL                        ((uint16_t)0x1800)            /*!< FIFO Transmission Level */
-#define  SPI_SR_FTLVL_0                      ((uint16_t)0x0800)            /*!< Bit 0 */
-#define  SPI_SR_FTLVL_1                      ((uint16_t)0x1000)            /*!< Bit 1 */  
-
-/********************  Bit definition for SPI_DR register  ********************/
-#define  SPI_DR_DR                           ((uint16_t)0xFFFF)            /*!< Data Register */
-
-/*******************  Bit definition for SPI_CRCPR register  ******************/
-#define  SPI_CRCPR_CRCPOLY                   ((uint16_t)0xFFFF)            /*!< CRC polynomial register */
-
-/******************  Bit definition for SPI_RXCRCR register  ******************/
-#define  SPI_RXCRCR_RXCRC                    ((uint16_t)0xFFFF)            /*!< Rx CRC Register */
-
-/******************  Bit definition for SPI_TXCRCR register  ******************/
-#define  SPI_TXCRCR_TXCRC                    ((uint16_t)0xFFFF)            /*!< Tx CRC Register */
-
-/******************  Bit definition for SPI_I2SCFGR register  *****************/
-#define  SPI_I2SCFGR_CHLEN                   ((uint16_t)0x0001)            /*!<Channel length (number of bits per audio channel) */
-#define  SPI_I2SCFGR_DATLEN                  ((uint16_t)0x0006)            /*!<DATLEN[1:0] bits (Data length to be transferred) */
-#define  SPI_I2SCFGR_DATLEN_0                ((uint16_t)0x0002)            /*!<Bit 0 */
-#define  SPI_I2SCFGR_DATLEN_1                ((uint16_t)0x0004)            /*!<Bit 1 */
-#define  SPI_I2SCFGR_CKPOL                   ((uint16_t)0x0008)            /*!<steady state clock polarity */
-#define  SPI_I2SCFGR_I2SSTD                  ((uint16_t)0x0030)            /*!<I2SSTD[1:0] bits (I2S standard selection) */
-#define  SPI_I2SCFGR_I2SSTD_0                ((uint16_t)0x0010)            /*!<Bit 0 */
-#define  SPI_I2SCFGR_I2SSTD_1                ((uint16_t)0x0020)            /*!<Bit 1 */
-#define  SPI_I2SCFGR_PCMSYNC                 ((uint16_t)0x0080)            /*!<PCM frame synchronization */
-#define  SPI_I2SCFGR_I2SCFG                  ((uint16_t)0x0300)            /*!<I2SCFG[1:0] bits (I2S configuration mode) */
-#define  SPI_I2SCFGR_I2SCFG_0                ((uint16_t)0x0100)            /*!<Bit 0 */
-#define  SPI_I2SCFGR_I2SCFG_1                ((uint16_t)0x0200)            /*!<Bit 1 */
-#define  SPI_I2SCFGR_I2SE                    ((uint16_t)0x0400)            /*!<I2S Enable */
-#define  SPI_I2SCFGR_I2SMOD                  ((uint16_t)0x0800)            /*!<I2S mode selection */
-
-/******************  Bit definition for SPI_I2SPR register  *******************/
-#define  SPI_I2SPR_I2SDIV                    ((uint16_t)0x00FF)            /*!<I2S Linear prescaler */
-#define  SPI_I2SPR_ODD                       ((uint16_t)0x0100)            /*!<Odd factor for the prescaler */
-#define  SPI_I2SPR_MCKOE                     ((uint16_t)0x0200)            /*!<Master Clock Output Enable */
-
-/******************************************************************************/
-/*                                                                            */
-/*                       System Configuration (SYSCFG)                        */
-/*                                                                            */
-/******************************************************************************/
-/*****************  Bit definition for SYSCFG_CFGR1 register  ****************/
-#define SYSCFG_CFGR1_MEM_MODE               ((uint32_t)0x00000003) /*!< SYSCFG_Memory Remap Config */
-#define SYSCFG_CFGR1_MEM_MODE_0             ((uint32_t)0x00000001) /*!< SYSCFG_Memory Remap Config Bit 0 */
-#define SYSCFG_CFGR1_MEM_MODE_1             ((uint32_t)0x00000002) /*!< SYSCFG_Memory Remap Config Bit 1 */
-#define SYSCFG_CFGR1_PA11_PA12_RMP          ((uint32_t)0x00000010) /*!< PA11 and PA12 remap on QFN28 and TSSOP20 packages (only for STM32F042 devices)*/
-#define SYSCFG_CFGR1_ADC_DMA_RMP            ((uint32_t)0x00000100) /*!< ADC DMA remap */
-#define SYSCFG_CFGR1_USART1TX_DMA_RMP       ((uint32_t)0x00000200) /*!< USART1 TX DMA remap */
-#define SYSCFG_CFGR1_USART1RX_DMA_RMP       ((uint32_t)0x00000400) /*!< USART1 RX DMA remap */
-#define SYSCFG_CFGR1_TIM16_DMA_RMP          ((uint32_t)0x00000800) /*!< Timer 16 DMA remap */
-#define SYSCFG_CFGR1_TIM17_DMA_RMP          ((uint32_t)0x00001000) /*!< Timer 17 DMA remap */
-#define SYSCFG_CFGR1_TIM16_DMA_RMP2         ((uint32_t)0x00002000) /*!< Timer 16 DMA remap 2 (only for STM32F072) */
-#define SYSCFG_CFGR1_TIM17_DMA_RMP2         ((uint32_t)0x00004000) /*!< Timer 17 DMA remap 2 (only for STM32F072) */
-#define SYSCFG_CFGR1_I2C_FMP_PB6            ((uint32_t)0x00010000) /*!< I2C PB6 Fast mode plus */
-#define SYSCFG_CFGR1_I2C_FMP_PB7            ((uint32_t)0x00020000) /*!< I2C PB7 Fast mode plus */
-#define SYSCFG_CFGR1_I2C_FMP_PB8            ((uint32_t)0x00040000) /*!< I2C PB8 Fast mode plus */
-#define SYSCFG_CFGR1_I2C_FMP_PB9            ((uint32_t)0x00080000) /*!< I2C PB9 Fast mode plus */
-#define SYSCFG_CFGR1_I2C_FMP_I2C1           ((uint32_t)0x00100000) /*!< Enable Fast Mode Plus on PB10, PB11, PF6 and PF7(only for STM32F030, STM32F031 and STM32F072 devices) */
-#define SYSCFG_CFGR1_I2C_FMP_I2C2           ((uint32_t)0x00200000) /*!< Enable I2C2 Fast mode plus (only for STM32F072) */
-#define SYSCFG_CFGR1_I2C_FMP_PA9            ((uint32_t)0x00400000) /*!< Enable Fast Mode Plus on PA9 (only for STM32F030, STM32F031, STM32F042 and STM32F072 devices) */
-#define SYSCFG_CFGR1_I2C_FMP_PA10           ((uint32_t)0x00800000) /*!< Enable Fast Mode Plus on PA10(only for STM32F030, STM32F031, STM32F042 and STM32F072 devices) */
-#define SYSCFG_CFGR1_SPI2_DMA_RMP           ((uint32_t)0x01000000) /*!< SPI2 DMA remap (only for STM32F072) */
-#define SYSCFG_CFGR1_USART2_DMA_RMP         ((uint32_t)0x02000000) /*!< USART2 DMA remap (only for STM32F072) */
-#define SYSCFG_CFGR1_USART3_DMA_RMP         ((uint32_t)0x04000000) /*!< USART3 DMA remap (only for STM32F072) */
-#define SYSCFG_CFGR1_I2C1_DMA_RMP           ((uint32_t)0x08000000) /*!< I2C1 DMA remap (only for STM32F072) */
-#define SYSCFG_CFGR1_TIM1_DMA_RMP           ((uint32_t)0x10000000) /*!< TIM1 DMA remap (only for STM32F072) */
-#define SYSCFG_CFGR1_TIM2_DMA_RMP           ((uint32_t)0x20000000) /*!< TIM2 DMA remap (only for STM32F072) */
-#define SYSCFG_CFGR1_TIM3_DMA_RMP           ((uint32_t)0x40000000) /*!< TIM3 DMA remap (only for STM32F072) */
-
-/*****************  Bit definition for SYSCFG_EXTICR1 register  ***************/
-#define SYSCFG_EXTICR1_EXTI0            ((uint16_t)0x000F) /*!< EXTI 0 configuration */
-#define SYSCFG_EXTICR1_EXTI1            ((uint16_t)0x00F0) /*!< EXTI 1 configuration */
-#define SYSCFG_EXTICR1_EXTI2            ((uint16_t)0x0F00) /*!< EXTI 2 configuration */
-#define SYSCFG_EXTICR1_EXTI3            ((uint16_t)0xF000) /*!< EXTI 3 configuration */
-
-/** 
-  * @brief  EXTI0 configuration  
-  */
-#define SYSCFG_EXTICR1_EXTI0_PA         ((uint16_t)0x0000) /*!< PA[0] pin */
-#define SYSCFG_EXTICR1_EXTI0_PB         ((uint16_t)0x0001) /*!< PB[0] pin */
-#define SYSCFG_EXTICR1_EXTI0_PC         ((uint16_t)0x0002) /*!< PC[0] pin */
-#define SYSCFG_EXTICR1_EXTI0_PD         ((uint16_t)0x0003) /*!< PD[0] pin */
-#define SYSCFG_EXTICR1_EXTI0_PE         ((uint16_t)0x0004) /*!< PE[0] pin */
-#define SYSCFG_EXTICR1_EXTI0_PF         ((uint16_t)0x0005) /*!< PF[0] pin */
-
-/** 
-  * @brief  EXTI1 configuration  
-  */ 
-#define SYSCFG_EXTICR1_EXTI1_PA         ((uint16_t)0x0000) /*!< PA[1] pin */
-#define SYSCFG_EXTICR1_EXTI1_PB         ((uint16_t)0x0010) /*!< PB[1] pin */
-#define SYSCFG_EXTICR1_EXTI1_PC         ((uint16_t)0x0020) /*!< PC[1] pin */
-#define SYSCFG_EXTICR1_EXTI1_PD         ((uint16_t)0x0030) /*!< PD[1] pin */
-#define SYSCFG_EXTICR1_EXTI1_PE         ((uint16_t)0x0040) /*!< PE[1] pin */
-#define SYSCFG_EXTICR1_EXTI1_PF         ((uint16_t)0x0050) /*!< PF[1] pin */
-
-/** 
-  * @brief  EXTI2 configuration  
-  */
-#define SYSCFG_EXTICR1_EXTI2_PA         ((uint16_t)0x0000) /*!< PA[2] pin */
-#define SYSCFG_EXTICR1_EXTI2_PB         ((uint16_t)0x0100) /*!< PB[2] pin */
-#define SYSCFG_EXTICR1_EXTI2_PC         ((uint16_t)0x0200) /*!< PC[2] pin */
-#define SYSCFG_EXTICR1_EXTI2_PD         ((uint16_t)0x0300) /*!< PD[2] pin */
-#define SYSCFG_EXTICR1_EXTI2_PE         ((uint16_t)0x0400) /*!< PE[2] pin */
-#define SYSCFG_EXTICR1_EXTI2_PF         ((uint16_t)0x0500) /*!< PF[2] pin */
-
-/** 
-  * @brief  EXTI3 configuration  
-  */
-#define SYSCFG_EXTICR1_EXTI3_PA         ((uint16_t)0x0000) /*!< PA[3] pin */
-#define SYSCFG_EXTICR1_EXTI3_PB         ((uint16_t)0x1000) /*!< PB[3] pin */
-#define SYSCFG_EXTICR1_EXTI3_PC         ((uint16_t)0x2000) /*!< PC[3] pin */
-#define SYSCFG_EXTICR1_EXTI3_PD         ((uint16_t)0x3000) /*!< PD[3] pin */
-#define SYSCFG_EXTICR1_EXTI3_PE         ((uint16_t)0x4000) /*!< PE[3] pin */
-#define SYSCFG_EXTICR1_EXTI3_PF         ((uint16_t)0x5000) /*!< PF[3] pin */
-
-/*****************  Bit definition for SYSCFG_EXTICR2 register  *****************/
-#define SYSCFG_EXTICR2_EXTI4            ((uint16_t)0x000F) /*!< EXTI 4 configuration */
-#define SYSCFG_EXTICR2_EXTI5            ((uint16_t)0x00F0) /*!< EXTI 5 configuration */
-#define SYSCFG_EXTICR2_EXTI6            ((uint16_t)0x0F00) /*!< EXTI 6 configuration */
-#define SYSCFG_EXTICR2_EXTI7            ((uint16_t)0xF000) /*!< EXTI 7 configuration */
-
-/** 
-  * @brief  EXTI4 configuration  
-  */
-#define SYSCFG_EXTICR2_EXTI4_PA         ((uint16_t)0x0000) /*!< PA[4] pin */
-#define SYSCFG_EXTICR2_EXTI4_PB         ((uint16_t)0x0001) /*!< PB[4] pin */
-#define SYSCFG_EXTICR2_EXTI4_PC         ((uint16_t)0x0002) /*!< PC[4] pin */
-#define SYSCFG_EXTICR2_EXTI4_PD         ((uint16_t)0x0003) /*!< PD[4] pin */
-#define SYSCFG_EXTICR2_EXTI4_PE         ((uint16_t)0x0004) /*!< PE[4] pin */
-#define SYSCFG_EXTICR2_EXTI4_PF         ((uint16_t)0x0005) /*!< PF[4] pin */
-
-/** 
-  * @brief  EXTI5 configuration  
-  */
-#define SYSCFG_EXTICR2_EXTI5_PA         ((uint16_t)0x0000) /*!< PA[5] pin */
-#define SYSCFG_EXTICR2_EXTI5_PB         ((uint16_t)0x0010) /*!< PB[5] pin */
-#define SYSCFG_EXTICR2_EXTI5_PC         ((uint16_t)0x0020) /*!< PC[5] pin */
-#define SYSCFG_EXTICR2_EXTI5_PD         ((uint16_t)0x0030) /*!< PD[5] pin */
-#define SYSCFG_EXTICR2_EXTI5_PE         ((uint16_t)0x0040) /*!< PE[5] pin */
-#define SYSCFG_EXTICR2_EXTI5_PF         ((uint16_t)0x0050) /*!< PF[5] pin */
-
-/** 
-  * @brief  EXTI6 configuration  
-  */
-#define SYSCFG_EXTICR2_EXTI6_PA         ((uint16_t)0x0000) /*!< PA[6] pin */
-#define SYSCFG_EXTICR2_EXTI6_PB         ((uint16_t)0x0100) /*!< PB[6] pin */
-#define SYSCFG_EXTICR2_EXTI6_PC         ((uint16_t)0x0200) /*!< PC[6] pin */
-#define SYSCFG_EXTICR2_EXTI6_PD         ((uint16_t)0x0300) /*!< PD[6] pin */
-#define SYSCFG_EXTICR2_EXTI6_PE         ((uint16_t)0x0400) /*!< PE[6] pin */
-#define SYSCFG_EXTICR2_EXTI6_PF         ((uint16_t)0x0500) /*!< PF[6] pin */
-
-/** 
-  * @brief  EXTI7 configuration  
-  */
-#define SYSCFG_EXTICR2_EXTI7_PA         ((uint16_t)0x0000) /*!< PA[7] pin */
-#define SYSCFG_EXTICR2_EXTI7_PB         ((uint16_t)0x1000) /*!< PB[7] pin */
-#define SYSCFG_EXTICR2_EXTI7_PC         ((uint16_t)0x2000) /*!< PC[7] pin */
-#define SYSCFG_EXTICR2_EXTI7_PD         ((uint16_t)0x3000) /*!< PD[7] pin */
-#define SYSCFG_EXTICR2_EXTI7_PE         ((uint16_t)0x4000) /*!< PE[7] pin */
-#define SYSCFG_EXTICR2_EXTI7_PF         ((uint16_t)0x5000) /*!< PF[7] pin */
-
-/*****************  Bit definition for SYSCFG_EXTICR3 register  *****************/
-#define SYSCFG_EXTICR3_EXTI8            ((uint16_t)0x000F) /*!< EXTI 8 configuration */
-#define SYSCFG_EXTICR3_EXTI9            ((uint16_t)0x00F0) /*!< EXTI 9 configuration */
-#define SYSCFG_EXTICR3_EXTI10           ((uint16_t)0x0F00) /*!< EXTI 10 configuration */
-#define SYSCFG_EXTICR3_EXTI11           ((uint16_t)0xF000) /*!< EXTI 11 configuration */
-
-/** 
-  * @brief  EXTI8 configuration  
-  */
-#define SYSCFG_EXTICR3_EXTI8_PA         ((uint16_t)0x0000) /*!< PA[8] pin */
-#define SYSCFG_EXTICR3_EXTI8_PB         ((uint16_t)0x0001) /*!< PB[8] pin */
-#define SYSCFG_EXTICR3_EXTI8_PC         ((uint16_t)0x0002) /*!< PC[8] pin */
-#define SYSCFG_EXTICR3_EXTI8_PD         ((uint16_t)0x0003) /*!< PD[8] pin */
-#define SYSCFG_EXTICR3_EXTI8_PE         ((uint16_t)0x0004) /*!< PE[8] pin */
-
-/** 
-  * @brief  EXTI9 configuration  
-  */
-#define SYSCFG_EXTICR3_EXTI9_PA         ((uint16_t)0x0000) /*!< PA[9] pin */
-#define SYSCFG_EXTICR3_EXTI9_PB         ((uint16_t)0x0010) /*!< PB[9] pin */
-#define SYSCFG_EXTICR3_EXTI9_PC         ((uint16_t)0x0020) /*!< PC[9] pin */
-#define SYSCFG_EXTICR3_EXTI9_PD         ((uint16_t)0x0030) /*!< PD[9] pin */
-#define SYSCFG_EXTICR3_EXTI9_PE         ((uint16_t)0x0040) /*!< PE[9] pin */
-#define SYSCFG_EXTICR3_EXTI9_PF         ((uint16_t)0x0050) /*!< PF[9] pin */
-
-/** 
-  * @brief  EXTI10 configuration  
-  */
-#define SYSCFG_EXTICR3_EXTI10_PA        ((uint16_t)0x0000) /*!< PA[10] pin */
-#define SYSCFG_EXTICR3_EXTI10_PB        ((uint16_t)0x0100) /*!< PB[10] pin */
-#define SYSCFG_EXTICR3_EXTI10_PC        ((uint16_t)0x0200) /*!< PC[10] pin */
-#define SYSCFG_EXTICR3_EXTI10_PD        ((uint16_t)0x0300) /*!< PE[10] pin */
-#define SYSCFG_EXTICR3_EXTI10_PE        ((uint16_t)0x0400) /*!< PD[10] pin */
-#define SYSCFG_EXTICR3_EXTI10_PF        ((uint16_t)0x0500) /*!< PF[10] pin */
-
-/** 
-  * @brief  EXTI11 configuration  
-  */
-#define SYSCFG_EXTICR3_EXTI11_PA        ((uint16_t)0x0000) /*!< PA[11] pin */
-#define SYSCFG_EXTICR3_EXTI11_PB        ((uint16_t)0x1000) /*!< PB[11] pin */
-#define SYSCFG_EXTICR3_EXTI11_PC        ((uint16_t)0x2000) /*!< PC[11] pin */
-#define SYSCFG_EXTICR3_EXTI11_PD        ((uint16_t)0x3000) /*!< PD[11] pin */
-#define SYSCFG_EXTICR3_EXTI11_PE        ((uint16_t)0x4000) /*!< PE[11] pin */
-
-/*****************  Bit definition for SYSCFG_EXTICR4 register  *****************/
-#define SYSCFG_EXTICR4_EXTI12           ((uint16_t)0x000F) /*!< EXTI 12 configuration */
-#define SYSCFG_EXTICR4_EXTI13           ((uint16_t)0x00F0) /*!< EXTI 13 configuration */
-#define SYSCFG_EXTICR4_EXTI14           ((uint16_t)0x0F00) /*!< EXTI 14 configuration */
-#define SYSCFG_EXTICR4_EXTI15           ((uint16_t)0xF000) /*!< EXTI 15 configuration */
-
-/** 
-  * @brief  EXTI12 configuration  
-  */
-#define SYSCFG_EXTICR4_EXTI12_PA        ((uint16_t)0x0000) /*!< PA[12] pin */
-#define SYSCFG_EXTICR4_EXTI12_PB        ((uint16_t)0x0001) /*!< PB[12] pin */
-#define SYSCFG_EXTICR4_EXTI12_PC        ((uint16_t)0x0002) /*!< PC[12] pin */
-#define SYSCFG_EXTICR4_EXTI12_PD        ((uint16_t)0x0003) /*!< PD[12] pin */
-#define SYSCFG_EXTICR4_EXTI12_PE        ((uint16_t)0x0004) /*!< PE[12] pin */
-
-/** 
-  * @brief  EXTI13 configuration  
-  */
-#define SYSCFG_EXTICR4_EXTI13_PA        ((uint16_t)0x0000) /*!< PA[13] pin */
-#define SYSCFG_EXTICR4_EXTI13_PB        ((uint16_t)0x0010) /*!< PB[13] pin */
-#define SYSCFG_EXTICR4_EXTI13_PC        ((uint16_t)0x0020) /*!< PC[13] pin */
-#define SYSCFG_EXTICR4_EXTI13_PD        ((uint16_t)0x0030) /*!< PD[13] pin */
-#define SYSCFG_EXTICR4_EXTI13_PE        ((uint16_t)0x0040) /*!< PE[13] pin */
-
-/** 
-  * @brief  EXTI14 configuration  
-  */
-#define SYSCFG_EXTICR4_EXTI14_PA        ((uint16_t)0x0000) /*!< PA[14] pin */
-#define SYSCFG_EXTICR4_EXTI14_PB        ((uint16_t)0x0100) /*!< PB[14] pin */
-#define SYSCFG_EXTICR4_EXTI14_PC        ((uint16_t)0x0200) /*!< PC[14] pin */
-#define SYSCFG_EXTICR4_EXTI14_PD        ((uint16_t)0x0300) /*!< PD[14] pin */
-#define SYSCFG_EXTICR4_EXTI14_PE        ((uint16_t)0x0400) /*!< PE[14] pin */
-
-/** 
-  * @brief  EXTI15 configuration  
-  */
-#define SYSCFG_EXTICR4_EXTI15_PA        ((uint16_t)0x0000) /*!< PA[15] pin */
-#define SYSCFG_EXTICR4_EXTI15_PB        ((uint16_t)0x1000) /*!< PB[15] pin */
-#define SYSCFG_EXTICR4_EXTI15_PC        ((uint16_t)0x2000) /*!< PC[15] pin */
-#define SYSCFG_EXTICR4_EXTI15_PD        ((uint16_t)0x3000) /*!< PD[15] pin */
-#define SYSCFG_EXTICR4_EXTI15_PE        ((uint16_t)0x4000) /*!< PE[15] pin */
-
-/*****************  Bit definition for SYSCFG_CFGR2 register  ****************/
-#define SYSCFG_CFGR2_LOCKUP_LOCK               ((uint32_t)0x00000001) /*!< Enables and locks the PVD connection with Timer1 Break Input and also the PVD_EN and PVDSEL[2:0] bits of the Power Control Interface */
-#define SYSCFG_CFGR2_SRAM_PARITY_LOCK          ((uint32_t)0x00000002) /*!< Enables and locks the SRAM_PARITY error signal with Break Input of TIMER1 */
-#define SYSCFG_CFGR2_PVD_LOCK                  ((uint32_t)0x00000004) /*!< Enables and locks the LOCKUP (Hardfault) output of CortexM0 with Break Input of TIMER1 */
-#define SYSCFG_CFGR2_SRAM_PEF                  ((uint32_t)0x00000100) /*!< SRAM Parity error flag */
-
-/* Old Bit definition maintained for legacy purpose */
-#define SYSCFG_CFGR2_SRAM_PE                   SYSCFG_CFGR2_SRAM_PEF
-/******************************************************************************/
-/*                                                                            */
-/*                               Timers (TIM)                                 */
-/*                                                                            */
-/******************************************************************************/
-/*******************  Bit definition for TIM_CR1 register  ********************/
-#define  TIM_CR1_CEN                         ((uint16_t)0x0001)            /*!<Counter enable */
-#define  TIM_CR1_UDIS                        ((uint16_t)0x0002)            /*!<Update disable */
-#define  TIM_CR1_URS                         ((uint16_t)0x0004)            /*!<Update request source */
-#define  TIM_CR1_OPM                         ((uint16_t)0x0008)            /*!<One pulse mode */
-#define  TIM_CR1_DIR                         ((uint16_t)0x0010)            /*!<Direction */
-
-#define  TIM_CR1_CMS                         ((uint16_t)0x0060)            /*!<CMS[1:0] bits (Center-aligned mode selection) */
-#define  TIM_CR1_CMS_0                       ((uint16_t)0x0020)            /*!<Bit 0 */
-#define  TIM_CR1_CMS_1                       ((uint16_t)0x0040)            /*!<Bit 1 */
-
-#define  TIM_CR1_ARPE                        ((uint16_t)0x0080)            /*!<Auto-reload preload enable */
-
-#define  TIM_CR1_CKD                         ((uint16_t)0x0300)            /*!<CKD[1:0] bits (clock division) */
-#define  TIM_CR1_CKD_0                       ((uint16_t)0x0100)            /*!<Bit 0 */
-#define  TIM_CR1_CKD_1                       ((uint16_t)0x0200)            /*!<Bit 1 */
-
-/*******************  Bit definition for TIM_CR2 register  ********************/
-#define  TIM_CR2_CCPC                        ((uint16_t)0x0001)            /*!<Capture/Compare Preloaded Control */
-#define  TIM_CR2_CCUS                        ((uint16_t)0x0004)            /*!<Capture/Compare Control Update Selection */
-#define  TIM_CR2_CCDS                        ((uint16_t)0x0008)            /*!<Capture/Compare DMA Selection */
-
-#define  TIM_CR2_MMS                         ((uint16_t)0x0070)            /*!<MMS[2:0] bits (Master Mode Selection) */
-#define  TIM_CR2_MMS_0                       ((uint16_t)0x0010)            /*!<Bit 0 */
-#define  TIM_CR2_MMS_1                       ((uint16_t)0x0020)            /*!<Bit 1 */
-#define  TIM_CR2_MMS_2                       ((uint16_t)0x0040)            /*!<Bit 2 */
-
-#define  TIM_CR2_TI1S                        ((uint16_t)0x0080)            /*!<TI1 Selection */
-#define  TIM_CR2_OIS1                        ((uint16_t)0x0100)            /*!<Output Idle state 1 (OC1 output) */
-#define  TIM_CR2_OIS1N                       ((uint16_t)0x0200)            /*!<Output Idle state 1 (OC1N output) */
-#define  TIM_CR2_OIS2                        ((uint16_t)0x0400)            /*!<Output Idle state 2 (OC2 output) */
-#define  TIM_CR2_OIS2N                       ((uint16_t)0x0800)            /*!<Output Idle state 2 (OC2N output) */
-#define  TIM_CR2_OIS3                        ((uint16_t)0x1000)            /*!<Output Idle state 3 (OC3 output) */
-#define  TIM_CR2_OIS3N                       ((uint16_t)0x2000)            /*!<Output Idle state 3 (OC3N output) */
-#define  TIM_CR2_OIS4                        ((uint16_t)0x4000)            /*!<Output Idle state 4 (OC4 output) */
-
-/*******************  Bit definition for TIM_SMCR register  *******************/
-#define  TIM_SMCR_SMS                        ((uint16_t)0x0007)            /*!<SMS[2:0] bits (Slave mode selection) */
-#define  TIM_SMCR_SMS_0                      ((uint16_t)0x0001)            /*!<Bit 0 */
-#define  TIM_SMCR_SMS_1                      ((uint16_t)0x0002)            /*!<Bit 1 */
-#define  TIM_SMCR_SMS_2                      ((uint16_t)0x0004)            /*!<Bit 2 */
-
-#define  TIM_SMCR_OCCS                       ((uint16_t)0x0008)            /*!< OCREF clear selection */
-
-#define  TIM_SMCR_TS                         ((uint16_t)0x0070)            /*!<TS[2:0] bits (Trigger selection) */
-#define  TIM_SMCR_TS_0                       ((uint16_t)0x0010)            /*!<Bit 0 */
-#define  TIM_SMCR_TS_1                       ((uint16_t)0x0020)            /*!<Bit 1 */
-#define  TIM_SMCR_TS_2                       ((uint16_t)0x0040)            /*!<Bit 2 */
-
-#define  TIM_SMCR_MSM                        ((uint16_t)0x0080)            /*!<Master/slave mode */
-
-#define  TIM_SMCR_ETF                        ((uint16_t)0x0F00)            /*!<ETF[3:0] bits (External trigger filter) */
-#define  TIM_SMCR_ETF_0                      ((uint16_t)0x0100)            /*!<Bit 0 */
-#define  TIM_SMCR_ETF_1                      ((uint16_t)0x0200)            /*!<Bit 1 */
-#define  TIM_SMCR_ETF_2                      ((uint16_t)0x0400)            /*!<Bit 2 */
-#define  TIM_SMCR_ETF_3                      ((uint16_t)0x0800)            /*!<Bit 3 */
-
-#define  TIM_SMCR_ETPS                       ((uint16_t)0x3000)            /*!<ETPS[1:0] bits (External trigger prescaler) */
-#define  TIM_SMCR_ETPS_0                     ((uint16_t)0x1000)            /*!<Bit 0 */
-#define  TIM_SMCR_ETPS_1                     ((uint16_t)0x2000)            /*!<Bit 1 */
-
-#define  TIM_SMCR_ECE                        ((uint16_t)0x4000)            /*!<External clock enable */
-#define  TIM_SMCR_ETP                        ((uint16_t)0x8000)            /*!<External trigger polarity */
-
-/*******************  Bit definition for TIM_DIER register  *******************/
-#define  TIM_DIER_UIE                        ((uint16_t)0x0001)            /*!<Update interrupt enable */
-#define  TIM_DIER_CC1IE                      ((uint16_t)0x0002)            /*!<Capture/Compare 1 interrupt enable */
-#define  TIM_DIER_CC2IE                      ((uint16_t)0x0004)            /*!<Capture/Compare 2 interrupt enable */
-#define  TIM_DIER_CC3IE                      ((uint16_t)0x0008)            /*!<Capture/Compare 3 interrupt enable */
-#define  TIM_DIER_CC4IE                      ((uint16_t)0x0010)            /*!<Capture/Compare 4 interrupt enable */
-#define  TIM_DIER_COMIE                      ((uint16_t)0x0020)            /*!<COM interrupt enable */
-#define  TIM_DIER_TIE                        ((uint16_t)0x0040)            /*!<Trigger interrupt enable */
-#define  TIM_DIER_BIE                        ((uint16_t)0x0080)            /*!<Break interrupt enable */
-#define  TIM_DIER_UDE                        ((uint16_t)0x0100)            /*!<Update DMA request enable */
-#define  TIM_DIER_CC1DE                      ((uint16_t)0x0200)            /*!<Capture/Compare 1 DMA request enable */
-#define  TIM_DIER_CC2DE                      ((uint16_t)0x0400)            /*!<Capture/Compare 2 DMA request enable */
-#define  TIM_DIER_CC3DE                      ((uint16_t)0x0800)            /*!<Capture/Compare 3 DMA request enable */
-#define  TIM_DIER_CC4DE                      ((uint16_t)0x1000)            /*!<Capture/Compare 4 DMA request enable */
-#define  TIM_DIER_COMDE                      ((uint16_t)0x2000)            /*!<COM DMA request enable */
-#define  TIM_DIER_TDE                        ((uint16_t)0x4000)            /*!<Trigger DMA request enable */
-
-/********************  Bit definition for TIM_SR register  ********************/
-#define  TIM_SR_UIF                          ((uint16_t)0x0001)            /*!<Update interrupt Flag */
-#define  TIM_SR_CC1IF                        ((uint16_t)0x0002)            /*!<Capture/Compare 1 interrupt Flag */
-#define  TIM_SR_CC2IF                        ((uint16_t)0x0004)            /*!<Capture/Compare 2 interrupt Flag */
-#define  TIM_SR_CC3IF                        ((uint16_t)0x0008)            /*!<Capture/Compare 3 interrupt Flag */
-#define  TIM_SR_CC4IF                        ((uint16_t)0x0010)            /*!<Capture/Compare 4 interrupt Flag */
-#define  TIM_SR_COMIF                        ((uint16_t)0x0020)            /*!<COM interrupt Flag */
-#define  TIM_SR_TIF                          ((uint16_t)0x0040)            /*!<Trigger interrupt Flag */
-#define  TIM_SR_BIF                          ((uint16_t)0x0080)            /*!<Break interrupt Flag */
-#define  TIM_SR_CC1OF                        ((uint16_t)0x0200)            /*!<Capture/Compare 1 Overcapture Flag */
-#define  TIM_SR_CC2OF                        ((uint16_t)0x0400)            /*!<Capture/Compare 2 Overcapture Flag */
-#define  TIM_SR_CC3OF                        ((uint16_t)0x0800)            /*!<Capture/Compare 3 Overcapture Flag */
-#define  TIM_SR_CC4OF                        ((uint16_t)0x1000)            /*!<Capture/Compare 4 Overcapture Flag */
-
-/*******************  Bit definition for TIM_EGR register  ********************/
-#define  TIM_EGR_UG                          ((uint8_t)0x01)               /*!<Update Generation */
-#define  TIM_EGR_CC1G                        ((uint8_t)0x02)               /*!<Capture/Compare 1 Generation */
-#define  TIM_EGR_CC2G                        ((uint8_t)0x04)               /*!<Capture/Compare 2 Generation */
-#define  TIM_EGR_CC3G                        ((uint8_t)0x08)               /*!<Capture/Compare 3 Generation */
-#define  TIM_EGR_CC4G                        ((uint8_t)0x10)               /*!<Capture/Compare 4 Generation */
-#define  TIM_EGR_COMG                        ((uint8_t)0x20)               /*!<Capture/Compare Control Update Generation */
-#define  TIM_EGR_TG                          ((uint8_t)0x40)               /*!<Trigger Generation */
-#define  TIM_EGR_BG                          ((uint8_t)0x80)               /*!<Break Generation */
-
-/******************  Bit definition for TIM_CCMR1 register  *******************/
-#define  TIM_CCMR1_CC1S                      ((uint16_t)0x0003)            /*!<CC1S[1:0] bits (Capture/Compare 1 Selection) */
-#define  TIM_CCMR1_CC1S_0                    ((uint16_t)0x0001)            /*!<Bit 0 */
-#define  TIM_CCMR1_CC1S_1                    ((uint16_t)0x0002)            /*!<Bit 1 */
-
-#define  TIM_CCMR1_OC1FE                     ((uint16_t)0x0004)            /*!<Output Compare 1 Fast enable */
-#define  TIM_CCMR1_OC1PE                     ((uint16_t)0x0008)            /*!<Output Compare 1 Preload enable */
-
-#define  TIM_CCMR1_OC1M                      ((uint16_t)0x0070)            /*!<OC1M[2:0] bits (Output Compare 1 Mode) */
-#define  TIM_CCMR1_OC1M_0                    ((uint16_t)0x0010)            /*!<Bit 0 */
-#define  TIM_CCMR1_OC1M_1                    ((uint16_t)0x0020)            /*!<Bit 1 */
-#define  TIM_CCMR1_OC1M_2                    ((uint16_t)0x0040)            /*!<Bit 2 */
-
-#define  TIM_CCMR1_OC1CE                     ((uint16_t)0x0080)            /*!<Output Compare 1Clear Enable */
-
-#define  TIM_CCMR1_CC2S                      ((uint16_t)0x0300)            /*!<CC2S[1:0] bits (Capture/Compare 2 Selection) */
-#define  TIM_CCMR1_CC2S_0                    ((uint16_t)0x0100)            /*!<Bit 0 */
-#define  TIM_CCMR1_CC2S_1                    ((uint16_t)0x0200)            /*!<Bit 1 */
-
-#define  TIM_CCMR1_OC2FE                     ((uint16_t)0x0400)            /*!<Output Compare 2 Fast enable */
-#define  TIM_CCMR1_OC2PE                     ((uint16_t)0x0800)            /*!<Output Compare 2 Preload enable */
-
-#define  TIM_CCMR1_OC2M                      ((uint16_t)0x7000)            /*!<OC2M[2:0] bits (Output Compare 2 Mode) */
-#define  TIM_CCMR1_OC2M_0                    ((uint16_t)0x1000)            /*!<Bit 0 */
-#define  TIM_CCMR1_OC2M_1                    ((uint16_t)0x2000)            /*!<Bit 1 */
-#define  TIM_CCMR1_OC2M_2                    ((uint16_t)0x4000)            /*!<Bit 2 */
-
-#define  TIM_CCMR1_OC2CE                     ((uint16_t)0x8000)            /*!<Output Compare 2 Clear Enable */
-
-/*----------------------------------------------------------------------------*/
-
-#define  TIM_CCMR1_IC1PSC                    ((uint16_t)0x000C)            /*!<IC1PSC[1:0] bits (Input Capture 1 Prescaler) */
-#define  TIM_CCMR1_IC1PSC_0                  ((uint16_t)0x0004)            /*!<Bit 0 */
-#define  TIM_CCMR1_IC1PSC_1                  ((uint16_t)0x0008)            /*!<Bit 1 */
-
-#define  TIM_CCMR1_IC1F                      ((uint16_t)0x00F0)            /*!<IC1F[3:0] bits (Input Capture 1 Filter) */
-#define  TIM_CCMR1_IC1F_0                    ((uint16_t)0x0010)            /*!<Bit 0 */
-#define  TIM_CCMR1_IC1F_1                    ((uint16_t)0x0020)            /*!<Bit 1 */
-#define  TIM_CCMR1_IC1F_2                    ((uint16_t)0x0040)            /*!<Bit 2 */
-#define  TIM_CCMR1_IC1F_3                    ((uint16_t)0x0080)            /*!<Bit 3 */
-
-#define  TIM_CCMR1_IC2PSC                    ((uint16_t)0x0C00)            /*!<IC2PSC[1:0] bits (Input Capture 2 Prescaler) */
-#define  TIM_CCMR1_IC2PSC_0                  ((uint16_t)0x0400)            /*!<Bit 0 */
-#define  TIM_CCMR1_IC2PSC_1                  ((uint16_t)0x0800)            /*!<Bit 1 */
-
-#define  TIM_CCMR1_IC2F                      ((uint16_t)0xF000)            /*!<IC2F[3:0] bits (Input Capture 2 Filter) */
-#define  TIM_CCMR1_IC2F_0                    ((uint16_t)0x1000)            /*!<Bit 0 */
-#define  TIM_CCMR1_IC2F_1                    ((uint16_t)0x2000)            /*!<Bit 1 */
-#define  TIM_CCMR1_IC2F_2                    ((uint16_t)0x4000)            /*!<Bit 2 */
-#define  TIM_CCMR1_IC2F_3                    ((uint16_t)0x8000)            /*!<Bit 3 */
-
-/******************  Bit definition for TIM_CCMR2 register  *******************/
-#define  TIM_CCMR2_CC3S                      ((uint16_t)0x0003)            /*!<CC3S[1:0] bits (Capture/Compare 3 Selection) */
-#define  TIM_CCMR2_CC3S_0                    ((uint16_t)0x0001)            /*!<Bit 0 */
-#define  TIM_CCMR2_CC3S_1                    ((uint16_t)0x0002)            /*!<Bit 1 */
-
-#define  TIM_CCMR2_OC3FE                     ((uint16_t)0x0004)            /*!<Output Compare 3 Fast enable */
-#define  TIM_CCMR2_OC3PE                     ((uint16_t)0x0008)            /*!<Output Compare 3 Preload enable */
-
-#define  TIM_CCMR2_OC3M                      ((uint16_t)0x0070)            /*!<OC3M[2:0] bits (Output Compare 3 Mode) */
-#define  TIM_CCMR2_OC3M_0                    ((uint16_t)0x0010)            /*!<Bit 0 */
-#define  TIM_CCMR2_OC3M_1                    ((uint16_t)0x0020)            /*!<Bit 1 */
-#define  TIM_CCMR2_OC3M_2                    ((uint16_t)0x0040)            /*!<Bit 2 */
-
-#define  TIM_CCMR2_OC3CE                     ((uint16_t)0x0080)            /*!<Output Compare 3 Clear Enable */
-
-#define  TIM_CCMR2_CC4S                      ((uint16_t)0x0300)            /*!<CC4S[1:0] bits (Capture/Compare 4 Selection) */
-#define  TIM_CCMR2_CC4S_0                    ((uint16_t)0x0100)            /*!<Bit 0 */
-#define  TIM_CCMR2_CC4S_1                    ((uint16_t)0x0200)            /*!<Bit 1 */
-
-#define  TIM_CCMR2_OC4FE                     ((uint16_t)0x0400)            /*!<Output Compare 4 Fast enable */
-#define  TIM_CCMR2_OC4PE                     ((uint16_t)0x0800)            /*!<Output Compare 4 Preload enable */
-
-#define  TIM_CCMR2_OC4M                      ((uint16_t)0x7000)            /*!<OC4M[2:0] bits (Output Compare 4 Mode) */
-#define  TIM_CCMR2_OC4M_0                    ((uint16_t)0x1000)            /*!<Bit 0 */
-#define  TIM_CCMR2_OC4M_1                    ((uint16_t)0x2000)            /*!<Bit 1 */
-#define  TIM_CCMR2_OC4M_2                    ((uint16_t)0x4000)            /*!<Bit 2 */
-
-#define  TIM_CCMR2_OC4CE                     ((uint16_t)0x8000)            /*!<Output Compare 4 Clear Enable */
-
-/*----------------------------------------------------------------------------*/
-
-#define  TIM_CCMR2_IC3PSC                    ((uint16_t)0x000C)            /*!<IC3PSC[1:0] bits (Input Capture 3 Prescaler) */
-#define  TIM_CCMR2_IC3PSC_0                  ((uint16_t)0x0004)            /*!<Bit 0 */
-#define  TIM_CCMR2_IC3PSC_1                  ((uint16_t)0x0008)            /*!<Bit 1 */
-
-#define  TIM_CCMR2_IC3F                      ((uint16_t)0x00F0)            /*!<IC3F[3:0] bits (Input Capture 3 Filter) */
-#define  TIM_CCMR2_IC3F_0                    ((uint16_t)0x0010)            /*!<Bit 0 */
-#define  TIM_CCMR2_IC3F_1                    ((uint16_t)0x0020)            /*!<Bit 1 */
-#define  TIM_CCMR2_IC3F_2                    ((uint16_t)0x0040)            /*!<Bit 2 */
-#define  TIM_CCMR2_IC3F_3                    ((uint16_t)0x0080)            /*!<Bit 3 */
-
-#define  TIM_CCMR2_IC4PSC                    ((uint16_t)0x0C00)            /*!<IC4PSC[1:0] bits (Input Capture 4 Prescaler) */
-#define  TIM_CCMR2_IC4PSC_0                  ((uint16_t)0x0400)            /*!<Bit 0 */
-#define  TIM_CCMR2_IC4PSC_1                  ((uint16_t)0x0800)            /*!<Bit 1 */
-
-#define  TIM_CCMR2_IC4F                      ((uint16_t)0xF000)            /*!<IC4F[3:0] bits (Input Capture 4 Filter) */
-#define  TIM_CCMR2_IC4F_0                    ((uint16_t)0x1000)            /*!<Bit 0 */
-#define  TIM_CCMR2_IC4F_1                    ((uint16_t)0x2000)            /*!<Bit 1 */
-#define  TIM_CCMR2_IC4F_2                    ((uint16_t)0x4000)            /*!<Bit 2 */
-#define  TIM_CCMR2_IC4F_3                    ((uint16_t)0x8000)            /*!<Bit 3 */
-
-/*******************  Bit definition for TIM_CCER register  *******************/
-#define  TIM_CCER_CC1E                       ((uint16_t)0x0001)            /*!<Capture/Compare 1 output enable */
-#define  TIM_CCER_CC1P                       ((uint16_t)0x0002)            /*!<Capture/Compare 1 output Polarity */
-#define  TIM_CCER_CC1NE                      ((uint16_t)0x0004)            /*!<Capture/Compare 1 Complementary output enable */
-#define  TIM_CCER_CC1NP                      ((uint16_t)0x0008)            /*!<Capture/Compare 1 Complementary output Polarity */
-#define  TIM_CCER_CC2E                       ((uint16_t)0x0010)            /*!<Capture/Compare 2 output enable */
-#define  TIM_CCER_CC2P                       ((uint16_t)0x0020)            /*!<Capture/Compare 2 output Polarity */
-#define  TIM_CCER_CC2NE                      ((uint16_t)0x0040)            /*!<Capture/Compare 2 Complementary output enable */
-#define  TIM_CCER_CC2NP                      ((uint16_t)0x0080)            /*!<Capture/Compare 2 Complementary output Polarity */
-#define  TIM_CCER_CC3E                       ((uint16_t)0x0100)            /*!<Capture/Compare 3 output enable */
-#define  TIM_CCER_CC3P                       ((uint16_t)0x0200)            /*!<Capture/Compare 3 output Polarity */
-#define  TIM_CCER_CC3NE                      ((uint16_t)0x0400)            /*!<Capture/Compare 3 Complementary output enable */
-#define  TIM_CCER_CC3NP                      ((uint16_t)0x0800)            /*!<Capture/Compare 3 Complementary output Polarity */
-#define  TIM_CCER_CC4E                       ((uint16_t)0x1000)            /*!<Capture/Compare 4 output enable */
-#define  TIM_CCER_CC4P                       ((uint16_t)0x2000)            /*!<Capture/Compare 4 output Polarity */
-#define  TIM_CCER_CC4NP                      ((uint16_t)0x8000)            /*!<Capture/Compare 4 Complementary output Polarity */
-
-/*******************  Bit definition for TIM_CNT register  ********************/
-#define  TIM_CNT_CNT                         ((uint16_t)0xFFFF)            /*!<Counter Value */
-
-/*******************  Bit definition for TIM_PSC register  ********************/
-#define  TIM_PSC_PSC                         ((uint16_t)0xFFFF)            /*!<Prescaler Value */
-
-/*******************  Bit definition for TIM_ARR register  ********************/
-#define  TIM_ARR_ARR                         ((uint16_t)0xFFFF)            /*!<actual auto-reload Value */
-
-/*******************  Bit definition for TIM_RCR register  ********************/
-#define  TIM_RCR_REP                         ((uint8_t)0xFF)               /*!<Repetition Counter Value */
-
-/*******************  Bit definition for TIM_CCR1 register  *******************/
-#define  TIM_CCR1_CCR1                       ((uint16_t)0xFFFF)            /*!<Capture/Compare 1 Value */
-
-/*******************  Bit definition for TIM_CCR2 register  *******************/
-#define  TIM_CCR2_CCR2                       ((uint16_t)0xFFFF)            /*!<Capture/Compare 2 Value */
-
-/*******************  Bit definition for TIM_CCR3 register  *******************/
-#define  TIM_CCR3_CCR3                       ((uint16_t)0xFFFF)            /*!<Capture/Compare 3 Value */
-
-/*******************  Bit definition for TIM_CCR4 register  *******************/
-#define  TIM_CCR4_CCR4                       ((uint16_t)0xFFFF)            /*!<Capture/Compare 4 Value */
-
-/*******************  Bit definition for TIM_BDTR register  *******************/
-#define  TIM_BDTR_DTG                        ((uint16_t)0x00FF)            /*!<DTG[0:7] bits (Dead-Time Generator set-up) */
-#define  TIM_BDTR_DTG_0                      ((uint16_t)0x0001)            /*!<Bit 0 */
-#define  TIM_BDTR_DTG_1                      ((uint16_t)0x0002)            /*!<Bit 1 */
-#define  TIM_BDTR_DTG_2                      ((uint16_t)0x0004)            /*!<Bit 2 */
-#define  TIM_BDTR_DTG_3                      ((uint16_t)0x0008)            /*!<Bit 3 */
-#define  TIM_BDTR_DTG_4                      ((uint16_t)0x0010)            /*!<Bit 4 */
-#define  TIM_BDTR_DTG_5                      ((uint16_t)0x0020)            /*!<Bit 5 */
-#define  TIM_BDTR_DTG_6                      ((uint16_t)0x0040)            /*!<Bit 6 */
-#define  TIM_BDTR_DTG_7                      ((uint16_t)0x0080)            /*!<Bit 7 */
-
-#define  TIM_BDTR_LOCK                       ((uint16_t)0x0300)            /*!<LOCK[1:0] bits (Lock Configuration) */
-#define  TIM_BDTR_LOCK_0                     ((uint16_t)0x0100)            /*!<Bit 0 */
-#define  TIM_BDTR_LOCK_1                     ((uint16_t)0x0200)            /*!<Bit 1 */
-
-#define  TIM_BDTR_OSSI                       ((uint16_t)0x0400)            /*!<Off-State Selection for Idle mode */
-#define  TIM_BDTR_OSSR                       ((uint16_t)0x0800)            /*!<Off-State Selection for Run mode */
-#define  TIM_BDTR_BKE                        ((uint16_t)0x1000)            /*!<Break enable */
-#define  TIM_BDTR_BKP                        ((uint16_t)0x2000)            /*!<Break Polarity */
-#define  TIM_BDTR_AOE                        ((uint16_t)0x4000)            /*!<Automatic Output enable */
-#define  TIM_BDTR_MOE                        ((uint16_t)0x8000)            /*!<Main Output enable */
-
-/*******************  Bit definition for TIM_DCR register  ********************/
-#define  TIM_DCR_DBA                         ((uint16_t)0x001F)            /*!<DBA[4:0] bits (DMA Base Address) */
-#define  TIM_DCR_DBA_0                       ((uint16_t)0x0001)            /*!<Bit 0 */
-#define  TIM_DCR_DBA_1                       ((uint16_t)0x0002)            /*!<Bit 1 */
-#define  TIM_DCR_DBA_2                       ((uint16_t)0x0004)            /*!<Bit 2 */
-#define  TIM_DCR_DBA_3                       ((uint16_t)0x0008)            /*!<Bit 3 */
-#define  TIM_DCR_DBA_4                       ((uint16_t)0x0010)            /*!<Bit 4 */
-
-#define  TIM_DCR_DBL                         ((uint16_t)0x1F00)            /*!<DBL[4:0] bits (DMA Burst Length) */
-#define  TIM_DCR_DBL_0                       ((uint16_t)0x0100)            /*!<Bit 0 */
-#define  TIM_DCR_DBL_1                       ((uint16_t)0x0200)            /*!<Bit 1 */
-#define  TIM_DCR_DBL_2                       ((uint16_t)0x0400)            /*!<Bit 2 */
-#define  TIM_DCR_DBL_3                       ((uint16_t)0x0800)            /*!<Bit 3 */
-#define  TIM_DCR_DBL_4                       ((uint16_t)0x1000)            /*!<Bit 4 */
-
-/*******************  Bit definition for TIM_DMAR register  *******************/
-#define  TIM_DMAR_DMAB                       ((uint16_t)0xFFFF)            /*!<DMA register for burst accesses */
-
-/*******************  Bit definition for TIM_OR register  *********************/
-#define TIM14_OR_TI1_RMP                       ((uint16_t)0x0003)            /*!<TI1_RMP[1:0] bits (TIM14 Input 4 remap) */
-#define TIM14_OR_TI1_RMP_0                     ((uint16_t)0x0001)            /*!<Bit 0 */
-#define TIM14_OR_TI1_RMP_1                     ((uint16_t)0x0002)            /*!<Bit 1 */
-
-
-/******************************************************************************/
-/*                                                                            */
-/*      Universal Synchronous Asynchronous Receiver Transmitter (USART)       */
-/*                                                                            */
-/******************************************************************************/
-/******************  Bit definition for USART_CR1 register  *******************/
-#define  USART_CR1_UE                        ((uint32_t)0x00000001)            /*!< USART Enable */
-#define  USART_CR1_UESM                      ((uint32_t)0x00000002)            /*!< USART Enable in STOP Mode */
-#define  USART_CR1_RE                        ((uint32_t)0x00000004)            /*!< Receiver Enable */
-#define  USART_CR1_TE                        ((uint32_t)0x00000008)            /*!< Transmitter Enable */
-#define  USART_CR1_IDLEIE                    ((uint32_t)0x00000010)            /*!< IDLE Interrupt Enable */
-#define  USART_CR1_RXNEIE                    ((uint32_t)0x00000020)            /*!< RXNE Interrupt Enable */
-#define  USART_CR1_TCIE                      ((uint32_t)0x00000040)            /*!< Transmission Complete Interrupt Enable */
-#define  USART_CR1_TXEIE                     ((uint32_t)0x00000080)            /*!< TXE Interrupt Enable */
-#define  USART_CR1_PEIE                      ((uint32_t)0x00000100)            /*!< PE Interrupt Enable */
-#define  USART_CR1_PS                        ((uint32_t)0x00000200)            /*!< Parity Selection */
-#define  USART_CR1_PCE                       ((uint32_t)0x00000400)            /*!< Parity Control Enable */
-#define  USART_CR1_WAKE                      ((uint32_t)0x00000800)            /*!< Receiver Wakeup method */
-#define  USART_CR1_M                         ((uint32_t)0x00001000)            /*!< Word length */
-#define  USART_CR1_MME                       ((uint32_t)0x00002000)            /*!< Mute Mode Enable */
-#define  USART_CR1_CMIE                      ((uint32_t)0x00004000)            /*!< Character match interrupt enable */
-#define  USART_CR1_OVER8                     ((uint32_t)0x00008000)            /*!< Oversampling by 8-bit or 16-bit mode */
-#define  USART_CR1_DEDT                      ((uint32_t)0x001F0000)            /*!< DEDT[4:0] bits (Driver Enable Deassertion Time) */
-#define  USART_CR1_DEDT_0                    ((uint32_t)0x00010000)            /*!< Bit 0 */
-#define  USART_CR1_DEDT_1                    ((uint32_t)0x00020000)            /*!< Bit 1 */
-#define  USART_CR1_DEDT_2                    ((uint32_t)0x00040000)            /*!< Bit 2 */
-#define  USART_CR1_DEDT_3                    ((uint32_t)0x00080000)            /*!< Bit 3 */
-#define  USART_CR1_DEDT_4                    ((uint32_t)0x00100000)            /*!< Bit 4 */
-#define  USART_CR1_DEAT                      ((uint32_t)0x03E00000)            /*!< DEAT[4:0] bits (Driver Enable Assertion Time) */
-#define  USART_CR1_DEAT_0                    ((uint32_t)0x00200000)            /*!< Bit 0 */
-#define  USART_CR1_DEAT_1                    ((uint32_t)0x00400000)            /*!< Bit 1 */
-#define  USART_CR1_DEAT_2                    ((uint32_t)0x00800000)            /*!< Bit 2 */
-#define  USART_CR1_DEAT_3                    ((uint32_t)0x01000000)            /*!< Bit 3 */
-#define  USART_CR1_DEAT_4                    ((uint32_t)0x02000000)            /*!< Bit 4 */
-#define  USART_CR1_RTOIE                     ((uint32_t)0x04000000)            /*!< Receive Time Out interrupt enable */
-#define  USART_CR1_EOBIE                     ((uint32_t)0x08000000)            /*!< End of Block interrupt enable */
-
-/******************  Bit definition for USART_CR2 register  *******************/
-#define  USART_CR2_ADDM7                     ((uint32_t)0x00000010)            /*!< 7-bit or 4-bit Address Detection */
-#define  USART_CR2_LBDL                      ((uint32_t)0x00000020)            /*!< LIN Break Detection Length */
-#define  USART_CR2_LBDIE                     ((uint32_t)0x00000040)            /*!< LIN Break Detection Interrupt Enable */
-#define  USART_CR2_LBCL                      ((uint32_t)0x00000100)            /*!< Last Bit Clock pulse */
-#define  USART_CR2_CPHA                      ((uint32_t)0x00000200)            /*!< Clock Phase */
-#define  USART_CR2_CPOL                      ((uint32_t)0x00000400)            /*!< Clock Polarity */
-#define  USART_CR2_CLKEN                     ((uint32_t)0x00000800)            /*!< Clock Enable */
-#define  USART_CR2_STOP                      ((uint32_t)0x00003000)            /*!< STOP[1:0] bits (STOP bits) */
-#define  USART_CR2_STOP_0                    ((uint32_t)0x00001000)            /*!< Bit 0 */
-#define  USART_CR2_STOP_1                    ((uint32_t)0x00002000)            /*!< Bit 1 */
-#define  USART_CR2_LINEN                     ((uint32_t)0x00004000)            /*!< LIN mode enable */
-#define  USART_CR2_SWAP                      ((uint32_t)0x00008000)            /*!< SWAP TX/RX pins */
-#define  USART_CR2_RXINV                     ((uint32_t)0x00010000)            /*!< RX pin active level inversion */
-#define  USART_CR2_TXINV                     ((uint32_t)0x00020000)            /*!< TX pin active level inversion */
-#define  USART_CR2_DATAINV                   ((uint32_t)0x00040000)            /*!< Binary data inversion */
-#define  USART_CR2_MSBFIRST                  ((uint32_t)0x00080000)            /*!< Most Significant Bit First */
-#define  USART_CR2_ABREN                     ((uint32_t)0x00100000)            /*!< Auto Baud-Rate Enable*/
-#define  USART_CR2_ABRMODE                   ((uint32_t)0x00600000)            /*!< ABRMOD[1:0] bits (Auto Baud-Rate Mode) */
-#define  USART_CR2_ABRMODE_0                 ((uint32_t)0x00200000)            /*!< Bit 0 */
-#define  USART_CR2_ABRMODE_1                 ((uint32_t)0x00400000)            /*!< Bit 1 */
-#define  USART_CR2_RTOEN                     ((uint32_t)0x00800000)            /*!< Receiver Time-Out enable */
-#define  USART_CR2_ADD                       ((uint32_t)0xFF000000)            /*!< Address of the USART node */
-
-/******************  Bit definition for USART_CR3 register  *******************/
-#define  USART_CR3_EIE                       ((uint32_t)0x00000001)            /*!< Error Interrupt Enable */
-#define  USART_CR3_IREN                      ((uint32_t)0x00000002)            /*!< IrDA mode Enable */
-#define  USART_CR3_IRLP                      ((uint32_t)0x00000004)            /*!< IrDA Low-Power */
-#define  USART_CR3_HDSEL                     ((uint32_t)0x00000008)            /*!< Half-Duplex Selection */
-#define  USART_CR3_NACK                      ((uint32_t)0x00000010)            /*!< SmartCard NACK enable */
-#define  USART_CR3_SCEN                      ((uint32_t)0x00000020)            /*!< SmartCard mode enable */
-#define  USART_CR3_DMAR                      ((uint32_t)0x00000040)            /*!< DMA Enable Receiver */
-#define  USART_CR3_DMAT                      ((uint32_t)0x00000080)            /*!< DMA Enable Transmitter */
-#define  USART_CR3_RTSE                      ((uint32_t)0x00000100)            /*!< RTS Enable */
-#define  USART_CR3_CTSE                      ((uint32_t)0x00000200)            /*!< CTS Enable */
-#define  USART_CR3_CTSIE                     ((uint32_t)0x00000400)            /*!< CTS Interrupt Enable */
-#define  USART_CR3_ONEBIT                    ((uint32_t)0x00000800)            /*!< One sample bit method enable */
-#define  USART_CR3_OVRDIS                    ((uint32_t)0x00001000)            /*!< Overrun Disable */
-#define  USART_CR3_DDRE                      ((uint32_t)0x00002000)            /*!< DMA Disable on Reception Error */
-#define  USART_CR3_DEM                       ((uint32_t)0x00004000)            /*!< Driver Enable Mode */
-#define  USART_CR3_DEP                       ((uint32_t)0x00008000)            /*!< Driver Enable Polarity Selection */
-#define  USART_CR3_SCARCNT                   ((uint32_t)0x000E0000)            /*!< SCARCNT[2:0] bits (SmartCard Auto-Retry Count) */
-#define  USART_CR3_SCARCNT_0                 ((uint32_t)0x00020000)            /*!< Bit 0 */
-#define  USART_CR3_SCARCNT_1                 ((uint32_t)0x00040000)            /*!< Bit 1 */
-#define  USART_CR3_SCARCNT_2                 ((uint32_t)0x00080000)            /*!< Bit 2 */
-#define  USART_CR3_WUS                       ((uint32_t)0x00300000)            /*!< WUS[1:0] bits (Wake UP Interrupt Flag Selection) */
-#define  USART_CR3_WUS_0                     ((uint32_t)0x00100000)            /*!< Bit 0 */
-#define  USART_CR3_WUS_1                     ((uint32_t)0x00200000)            /*!< Bit 1 */
-#define  USART_CR3_WUFIE                     ((uint32_t)0x00400000)            /*!< Wake Up Interrupt Enable */
-
-/******************  Bit definition for USART_BRR register  *******************/
-#define  USART_BRR_DIV_FRACTION              ((uint16_t)0x000F)                /*!< Fraction of USARTDIV */
-#define  USART_BRR_DIV_MANTISSA              ((uint16_t)0xFFF0)                /*!< Mantissa of USARTDIV */
-
-/******************  Bit definition for USART_GTPR register  ******************/
-#define  USART_GTPR_PSC                      ((uint16_t)0x00FF)                /*!< PSC[7:0] bits (Prescaler value) */
-#define  USART_GTPR_GT                       ((uint16_t)0xFF00)                /*!< GT[7:0] bits (Guard time value) */
-
-
-/*******************  Bit definition for USART_RTOR register  *****************/
-#define  USART_RTOR_RTO                      ((uint32_t)0x00FFFFFF)            /*!< Receiver Time Out Value */
-#define  USART_RTOR_BLEN                     ((uint32_t)0xFF000000)            /*!< Block Length */
-
-/*******************  Bit definition for USART_RQR register  ******************/
-#define  USART_RQR_ABRRQ                    ((uint16_t)0x0001)                /*!< Auto-Baud Rate Request */
-#define  USART_RQR_SBKRQ                    ((uint16_t)0x0002)                /*!< Send Break Request */
-#define  USART_RQR_MMRQ                     ((uint16_t)0x0004)                /*!< Mute Mode Request */
-#define  USART_RQR_RXFRQ                    ((uint16_t)0x0008)                /*!< Receive Data flush Request */
-#define  USART_RQR_TXFRQ                    ((uint16_t)0x0010)                /*!< Transmit data flush Request */
-
-/*******************  Bit definition for USART_ISR register  ******************/
-#define  USART_ISR_PE                        ((uint32_t)0x00000001)            /*!< Parity Error */
-#define  USART_ISR_FE                        ((uint32_t)0x00000002)            /*!< Framing Error */
-#define  USART_ISR_NE                        ((uint32_t)0x00000004)            /*!< Noise detected Flag */
-#define  USART_ISR_ORE                       ((uint32_t)0x00000008)            /*!< OverRun Error */
-#define  USART_ISR_IDLE                      ((uint32_t)0x00000010)            /*!< IDLE line detected */
-#define  USART_ISR_RXNE                      ((uint32_t)0x00000020)            /*!< Read Data Register Not Empty */
-#define  USART_ISR_TC                        ((uint32_t)0x00000040)            /*!< Transmission Complete */
-#define  USART_ISR_TXE                       ((uint32_t)0x00000080)            /*!< Transmit Data Register Empty */
-#define  USART_ISR_LBD                       ((uint32_t)0x00000100)            /*!< LIN Break Detection Flag */
-#define  USART_ISR_CTSIF                     ((uint32_t)0x00000200)            /*!< CTS interrupt flag */
-#define  USART_ISR_CTS                       ((uint32_t)0x00000400)            /*!< CTS flag */
-#define  USART_ISR_RTOF                      ((uint32_t)0x00000800)            /*!< Receiver Time Out */
-#define  USART_ISR_EOBF                      ((uint32_t)0x00001000)            /*!< End Of Block Flag */
-#define  USART_ISR_ABRE                      ((uint32_t)0x00004000)            /*!< Auto-Baud Rate Error */
-#define  USART_ISR_ABRF                      ((uint32_t)0x00008000)            /*!< Auto-Baud Rate Flag */
-#define  USART_ISR_BUSY                      ((uint32_t)0x00010000)            /*!< Busy Flag */
-#define  USART_ISR_CMF                       ((uint32_t)0x00020000)            /*!< Character Match Flag */
-#define  USART_ISR_SBKF                      ((uint32_t)0x00040000)            /*!< Send Break Flag */
-#define  USART_ISR_RWU                       ((uint32_t)0x00080000)            /*!< Receive Wake Up from mute mode Flag */
-#define  USART_ISR_WUF                       ((uint32_t)0x00100000)            /*!< Wake Up from stop mode Flag */
-#define  USART_ISR_TEACK                     ((uint32_t)0x00200000)            /*!< Transmit Enable Acknowledge Flag */
-#define  USART_ISR_REACK                     ((uint32_t)0x00400000)            /*!< Receive Enable Acknowledge Flag */
-
-/*******************  Bit definition for USART_ICR register  ******************/
-#define  USART_ICR_PECF                      ((uint32_t)0x00000001)            /*!< Parity Error Clear Flag */
-#define  USART_ICR_FECF                      ((uint32_t)0x00000002)            /*!< Framing Error Clear Flag */
-#define  USART_ICR_NCF                      ((uint32_t)0x00000004)             /*!< Noise detected Clear Flag */
-#define  USART_ICR_ORECF                     ((uint32_t)0x00000008)            /*!< OverRun Error Clear Flag */
-#define  USART_ICR_IDLECF                    ((uint32_t)0x00000010)            /*!< IDLE line detected Clear Flag */
-#define  USART_ICR_TCCF                      ((uint32_t)0x00000040)            /*!< Transmission Complete Clear Flag */
-#define  USART_ICR_LBDCF                     ((uint32_t)0x00000100)            /*!< LIN Break Detection Clear Flag */
-#define  USART_ICR_CTSCF                     ((uint32_t)0x00000200)            /*!< CTS Interrupt Clear Flag */
-#define  USART_ICR_RTOCF                     ((uint32_t)0x00000800)            /*!< Receiver Time Out Clear Flag */
-#define  USART_ICR_EOBCF                     ((uint32_t)0x00001000)            /*!< End Of Block Clear Flag */
-#define  USART_ICR_CMCF                      ((uint32_t)0x00020000)            /*!< Character Match Clear Flag */
-#define  USART_ICR_WUCF                      ((uint32_t)0x00100000)            /*!< Wake Up from stop mode Clear Flag */
-
-/*******************  Bit definition for USART_RDR register  ******************/
-#define  USART_RDR_RDR                       ((uint16_t)0x01FF)                /*!< RDR[8:0] bits (Receive Data value) */
-
-/*******************  Bit definition for USART_TDR register  ******************/
-#define  USART_TDR_TDR                       ((uint16_t)0x01FF)                /*!< TDR[8:0] bits (Transmit Data value) */
-
-/******************************************************************************/
-/*                                                                            */
-/*                         Window WATCHDOG (WWDG)                             */
-/*                                                                            */
-/******************************************************************************/
-
-/*******************  Bit definition for WWDG_CR register  ********************/
-#define  WWDG_CR_T                           ((uint8_t)0x7F)               /*!< T[6:0] bits (7-Bit counter (MSB to LSB)) */
-#define  WWDG_CR_T0                          ((uint8_t)0x01)               /*!< Bit 0 */
-#define  WWDG_CR_T1                          ((uint8_t)0x02)               /*!< Bit 1 */
-#define  WWDG_CR_T2                          ((uint8_t)0x04)               /*!< Bit 2 */
-#define  WWDG_CR_T3                          ((uint8_t)0x08)               /*!< Bit 3 */
-#define  WWDG_CR_T4                          ((uint8_t)0x10)               /*!< Bit 4 */
-#define  WWDG_CR_T5                          ((uint8_t)0x20)               /*!< Bit 5 */
-#define  WWDG_CR_T6                          ((uint8_t)0x40)               /*!< Bit 6 */
-
-#define  WWDG_CR_WDGA                        ((uint8_t)0x80)               /*!< Activation bit */
-
-/*******************  Bit definition for WWDG_CFR register  *******************/
-#define  WWDG_CFR_W                          ((uint16_t)0x007F)            /*!< W[6:0] bits (7-bit window value) */
-#define  WWDG_CFR_W0                         ((uint16_t)0x0001)            /*!< Bit 0 */
-#define  WWDG_CFR_W1                         ((uint16_t)0x0002)            /*!< Bit 1 */
-#define  WWDG_CFR_W2                         ((uint16_t)0x0004)            /*!< Bit 2 */
-#define  WWDG_CFR_W3                         ((uint16_t)0x0008)            /*!< Bit 3 */
-#define  WWDG_CFR_W4                         ((uint16_t)0x0010)            /*!< Bit 4 */
-#define  WWDG_CFR_W5                         ((uint16_t)0x0020)            /*!< Bit 5 */
-#define  WWDG_CFR_W6                         ((uint16_t)0x0040)            /*!< Bit 6 */
-
-#define  WWDG_CFR_WDGTB                      ((uint16_t)0x0180)            /*!< WDGTB[1:0] bits (Timer Base) */
-#define  WWDG_CFR_WDGTB0                     ((uint16_t)0x0080)            /*!< Bit 0 */
-#define  WWDG_CFR_WDGTB1                     ((uint16_t)0x0100)            /*!< Bit 1 */
-
-#define  WWDG_CFR_EWI                        ((uint16_t)0x0200)            /*!< Early Wakeup Interrupt */
-
-/*******************  Bit definition for WWDG_SR register  ********************/
-#define  WWDG_SR_EWIF                        ((uint8_t)0x01)               /*!< Early Wakeup Interrupt Flag */
-
-/**
-  * @}
-  */
-
- /**
-  * @}
-  */ 
-
-#ifdef USE_STDPERIPH_DRIVER
-  #include "stm32f0xx_conf.h"
-#endif
-
-/** @addtogroup Exported_macro
-  * @{
-  */
-/**
-  * @}
-  */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_H */
-
-/**
-  * @}
-  */
-
-  /**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h
deleted file mode 100644
index ab76a00..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h	
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    system_stm32f0xx.h
-  * @author  MCD Application Team
-  * @version V1.3.1
-  * @date    17-January-2014
-  * @brief   CMSIS Cortex-M0 Device Peripheral Access Layer System Header File.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/** @addtogroup CMSIS
-  * @{
-  */
-
-/** @addtogroup stm32f0xx_system
-  * @{
-  */  
-  
-/**
-  * @brief Define to prevent recursive inclusion
-  */
-#ifndef __SYSTEM_STM32F0XX_H
-#define __SYSTEM_STM32F0XX_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif 
-
-/** @addtogroup STM32F0xx_System_Includes
-  * @{
-  */
-
-/**
-  * @}
-  */
-
-
-/** @addtogroup STM32F0xx_System_Exported_types
-  * @{
-  */
-
-extern uint32_t SystemCoreClock;          /*!< System Clock Frequency (Core Clock) */
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Exported_Constants
-  * @{
-  */
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Exported_Macros
-  * @{
-  */
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Exported_Functions
-  * @{
-  */
-  
-extern void SystemInit(void);
-extern void SystemCoreClockUpdate(void);
-/**
-  * @}
-  */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__SYSTEM_STM32F0XX_H */
-
-/**
-  * @}
-  */
-  
-/**
-  * @}
-  */  
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Release_Notes.html b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Release_Notes.html
deleted file mode 100644
index 47f59da..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Release_Notes.html	
+++ /dev/null
@@ -1,228 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
-
-
-
-
-
-
-
-
-
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="File-List" href="Library_files/filelist.xml">
-<link rel="Edit-Time-Data" href="Library_files/editdata.mso"><!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><title>Release Notes for STM32F0xx CMSIS</title><!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>STMicroelectronics</o:Author> <o:LastAuthor>STMicroelectronics</o:LastAuthor> <o:Revision>37</o:Revision> <o:TotalTime>136</o:TotalTime> <o:Created>2009-02-27T19:26:00Z</o:Created> <o:LastSaved>2009-03-01T17:56:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>522</o:Words> <o:Characters>2977</o:Characters> <o:Company>STMicroelectronics</o:Company> <o:Lines>24</o:Lines> <o:Paragraphs>6</o:Paragraphs> <o:CharactersWithSpaces>3493</o:CharactersWithSpaces> <o:Version>11.6568</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>110</w:Zoom> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]-->
-
-
-
-<style>
-<!--
-/* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-{mso-style-parent:"";
-margin:0in;
-margin-bottom:.0001pt;
-mso-pagination:widow-orphan;
-font-size:12.0pt;
-font-family:"Times New Roman";
-mso-fareast-font-family:"Times New Roman";}
-h2
-{mso-style-next:Normal;
-margin-top:12.0pt;
-margin-right:0in;
-margin-bottom:3.0pt;
-margin-left:0in;
-mso-pagination:widow-orphan;
-page-break-after:avoid;
-mso-outline-level:2;
-font-size:14.0pt;
-font-family:Arial;
-font-weight:bold;
-font-style:italic;}
-a:link, span.MsoHyperlink
-{color:blue;
-text-decoration:underline;
-text-underline:single;}
-a:visited, span.MsoHyperlinkFollowed
-{color:blue;
-text-decoration:underline;
-text-underline:single;}
-p
-{mso-margin-top-alt:auto;
-margin-right:0in;
-mso-margin-bottom-alt:auto;
-margin-left:0in;
-mso-pagination:widow-orphan;
-font-size:12.0pt;
-font-family:"Times New Roman";
-mso-fareast-font-family:"Times New Roman";}
-@page Section1
-{size:8.5in 11.0in;
-margin:1.0in 1.25in 1.0in 1.25in;
-mso-header-margin:.5in;
-mso-footer-margin:.5in;
-mso-paper-source:0;}
-div.Section1
-{page:Section1;}
--->
-</style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="5122"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--><meta content="MCD Application Team" name="author"></head>
-<body link="blue" vlink="blue">
-<div class="Section1">
-<p class="MsoNormal"><span style="font-family: Arial;"><o:p><br>
-</o:p></span></p>
-<div align="center">
-<table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" cellspacing="0" width="900">
-<tbody>
-<tr style="">
-<td style="padding: 0cm;" valign="top">
-<table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" cellspacing="0" width="900">
-<tbody>
-          <tr>
-            <td style="vertical-align: top;"><span style="font-size: 8pt; font-family: Arial; color: blue;"><a href="../../../../../Release_Notes.html">Back to Release page</a></span></td>
-          </tr>
-<tr style="">
-<td style="padding: 1.5pt;">
-<h1 style="margin-bottom: 18pt; text-align: center;" align="center"><span style="font-size: 20pt; font-family: Verdana; color: rgb(51, 102, 255);">Release
-Notes for STM32F0xx CMSIS</span><span style="font-size: 20pt; font-family: Verdana;"><o:p></o:p></span></h1>
-<p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: Arial; color: black;">Copyright 2014 STMicroelectronics</span><span style="color: black;"><u1:p></u1:p><o:p></o:p></span></p>
-<p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: Arial; color: black;"><img alt="" id="_x0000_i1025" src="../../../../../_htmresc/st_logo.png" style="border: 0px solid ; width: 86px; height: 65px;"></span><span style="font-size: 10pt;"><o:p></o:p></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-
-<table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" width="900">
-<tbody>
-<tr>
-<td style="padding: 0cm;" valign="top">
-
-<h2 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;"><span style="font-size: 12pt; color: white;">Update History</span></h2><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.3.1 / 17-January-2014</span></h3>
-
-            
-            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-
-
-            
-            <ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">TrueSTUDIO and gcc_ride7 startup files update for STM32F042 and STM32F072 devices.</span></li></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.3.0 / 16-January-2014</span></h3>
-
-            
-            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-
-
-            
-            <ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana;"></span><span style="font-family: Verdana;"></span><small><span style="font-family: Verdana;">Add the support of the<span style="font-weight: bold;"> STM32F072 </span>and <span style="font-weight: bold;">STM32F042</span> devices.</span></small></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><small><span style="font-family: Verdana;">Update devices names definition to be in line with the new </span></small><span style="color: rgb(0, 0, 0); font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; display: inline ! important; float: none;">new STM32F0xx family devices names.</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0cm; font-size: 12pt; font-family: 'Times New Roman'; color: black;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-weight: bold;">STM32F0XX_MD</span><span class="Apple-converted-space">&nbsp;</span>&nbsp;replaced by<span class="Apple-converted-space">&nbsp;</span><span style="font-weight: bold;">STM32F051.</span></span></li><li class="MsoNormal" style="margin: 4.5pt 0cm; font-size: 12pt; font-family: 'Times New Roman'; color: black;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-weight: bold;">STM32F0XX_LD</span><span class="Apple-converted-space">&nbsp;</span>&nbsp;replaced by<span class="Apple-converted-space">&nbsp;</span><span style="font-weight: bold;">STM32F031.</span></span></li><li class="MsoNormal" style="margin: 4.5pt 0cm; font-size: 12pt; font-family: 'Times New Roman'; color: black; font-weight: bold;"><span style="font-size: 10pt; font-family: Verdana;">STM32F030x8&nbsp;</span><span style="font-size: 10pt; font-family: Verdana; font-weight: normal;">and<span class="Apple-converted-space">&nbsp;</span><span style="font-weight: bold;">STM32F030x6</span><span class="Apple-converted-space">&nbsp;</span>replaced by<span class="Apple-converted-space">&nbsp;</span><span style="font-weight: bold;">STM32F030.</span></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">stm32f0xx.h</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0cm; font-size: 12pt; font-family: 'Times New Roman'; color: black;"><span style="font-size: 10pt; font-family: Verdana;">Upddate to support the new STM32F0xx family devices names.</span></li><ul style="margin-bottom: 0cm;"><li class="MsoNormal" style="margin: 4.5pt 0cm; font-size: 12pt; font-family: 'Times New Roman'; color: black;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-weight: bold;">STM32F0XX_MD</span><span class="Apple-converted-space">&nbsp;</span>&nbsp;replaced by<span class="Apple-converted-space">&nbsp;</span><span style="font-weight: bold;">STM32F051</span></span></li><li class="MsoNormal" style="margin: 4.5pt 0cm; font-size: 12pt; font-family: 'Times New Roman'; color: black;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-weight: bold;">STM32F0XX_LD</span><span class="Apple-converted-space">&nbsp;</span>&nbsp;replaced by<span class="Apple-converted-space">&nbsp;</span><span style="font-weight: bold;">STM32F031</span></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update <span style="font-style: italic;">IRQn</span> enum to support the&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">STM32F042 and STM32F072</span></span><span style="font-size: 10pt; font-family: Verdana;"> devices.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add define for HSI48_VALUE.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add CAN peripheral registers declaration and bits definition.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add CRS peripheral registers declaration and bits definition.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update CRC_TypeDef &nbsp;structure definition to add POL register.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update DAC_TypeDef structure to add DAC Channel 2 configuration registers.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update OB_TypeDef structure by adding DATA0, DATA1, WRP2 and WRP3 option bytes registers.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Rename CAL registers to CALR in the RTC_TypeDef structure.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add the definition of the TIM7, USART3, USART4, CAN, CRS, DMA1_Channel6, DMA1_Channel7 and GPIOE.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add bit definition for FLASH_OBR_nBOOT0, FLASH_OBR_RAM_PARITY_CHECK, FLASH_OBR_nBOOT0_SW, FLASH_OBR_DATA0 and FLASH_OBR_DATA1.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add bit definition for OB_WRP2_WRP2, OB_WRP2_nWRP2, OB_WRP3_WRP3 and OB_WRP3_nWRP3.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update almost bits definition to be in line with RM0091 reference manual.<br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">system_stm32f0xx.c</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">SystemInit()</span>: update to support <span style="font-style: italic;">STM32F042 and STM32F072</span> devices</span><span style="font-size: 10pt; font-family: Verdana;"></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add new startup files for the STM32F042 and STM32F072 devices for the </span><span style="font-size: 10pt; font-family: Verdana;">supported compilers</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Replace <span style="font-style: italic;">startup_stm32f0xx_ld.s</span> and&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">startup_stm32f0xx.s&nbsp;</span>by respectively&nbsp;<span style="font-style: italic;">startup_stm32f030.s</span> and&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">startup_stm32f051.s &nbsp;</span>files.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">startup_stm32f0xx_ld.s</span> and&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">startup_stm32f0xx.s &nbsp;</span>files are maintained for legacy purpose.</span></li></ul></ul>
-            <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.1 / 22-November-2013</span></h3>
-
-            
-            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-
-
-            
-            <ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">stm32f0xx.h</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update STM32F030 devices definition: <br>
-                  </span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Remove the&nbsp;<span style="font-style: italic;">STM32F030X8 and STM32FO30X6</span> defines and replace them with the&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;">S<span style="font-style: italic;">TM32F030 define</span></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update <span style="font-style: italic;">IRQn</span> enum for&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">STM32F030</span></span><span style="font-size: 10pt; font-family: Verdana;"> devices</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">system_stm32f0xx.c</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">SystemInit()</span>: update to support <span style="font-style: italic;">STM32F030</span> devices</span><span style="font-size: 10pt; font-family: Verdana;"></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Remove the&nbsp;startup files </span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">startup_stm32f030x8.s and startup_stm32f030x6.s</span> and replace them by&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">startup_stm32f030.s</span></span><span style="font-size: 10pt; font-family: Verdana;">, for EWARM, MDK-ARM and Truestudio supported compilers</span></li></ul>
-            <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.0 / 01-August-2013</span></h3>
-
-            
-            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-
-
-            
-            <ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add support of <span style="font-weight: bold; font-style: italic;">STM32F030&nbsp; devices</span> (STM32F030x8 and STM32F030x6 microcontrollers where the Flash memory ranges between 16 and 32 Kbytes)</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">stm32f0xx.h</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update STM32F0xx devices definition: <br>
-                  </span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add new definition <span style="font-style: italic;">STM32F030X8 and STM32FO30X6</span> for </span><span style="font-size: 10pt; font-family: Verdana;">S<span style="font-style: italic;">TM32F030 devices</span></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update <span style="font-style: italic;">IRQn</span> enum for&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">STM32F030</span></span><span style="font-size: 10pt; font-family: Verdana;"> devices</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">system_stm32f0xx.c</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">SystemInit()</span>: update to support <span style="font-style: italic;">STM32F030</span> devices</span><span style="font-size: 10pt; font-family: Verdana;"></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add new startup files, </span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">startup_stm32f030x8.s and startup_stm32f030x6.s</span>, for EWARM, MDK-ARM and Truestudio supported compilers</span></li></ul>
-
-
-            <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.1.1 / 31-July-2013</span></h3>
-
-            
-            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-
-
-            
-            <ul style="margin-top: 0cm;" type="square">
-<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">stm32f0xx.h</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Extend <span style="font-style: italic;">HSE_STARTUP_TIMEOUT</span> and <span style="font-style: italic;">HSI_STARTUP_TIMEOUT</span> values to 0x5000</span></li></ul>
-            </ul>
-
-            <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.1.0 / 10-May-2013</span></h3>
-            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-
-            <ul style="margin-top: 0cm;" type="square">
-<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add support of <span style="font-weight: bold; font-style: italic;">STM32F0xx Low-density devices</span> (STM32F050xx and STM32F060xx microcontrollers where the Flash memory ranges between 16 and 32 Kbytes)</span></li>
-              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">stm32f0xx.h</span></li>
-              <ul>
-                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update STM32F0xx devices definition: <br>
-                  </span></li>
-                <ul>
-                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Define for <span style="font-style: italic;">STM32F0xx Medium-density devices</span> changed from <span style="font-style: italic;">STM32F0XX</span> to <span style="font-style: italic;">STM32F0XX_MD</span><br>
-                    </span></li>
-                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add new definition <span style="font-style: italic;">STM32F0XX_LD</span> for </span><span style="font-size: 10pt; font-family: Verdana;">S<span style="font-style: italic;">TM32F0xx Low-density devices</span></span></li>
-                </ul>
-              </ul>
-              <ul>
-                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update <span style="font-style: italic;">IRQn</span> enum for&nbsp;</span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">STM32F0XX_LD</span></span><span style="font-size: 10pt; font-family: Verdana;"> devices</span></li>
-              </ul>
-              <ul>
-                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add new bits definition</span></li>
-                <ul>
-                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">RCC_CFGR</span></span><span style="font-size: 10pt; font-family: Verdana;"> register</span><span style="font-size: 10pt; font-family: Verdana;">: <span style="font-style: italic;">MCOPRE[0:2]</span> and <span style="font-style: italic;">PLLNODIV</span></span></li>
-                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">SYSCFG_CFGR1</span> register: <span style="font-style: italic;">FMP_I2C1</span>, <span style="font-style: italic;">FMP_PA9</span> and <span style="font-style: italic;">FMP_PA10</span><br>
-                    </span></li>
-                </ul>
-              </ul>
-              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">system_stm32f0xx.c</span></li>
-              <ul>
-                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">SystemInit()</span>: update to reset new bits added in </span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">RCC_CFGR</span></span><span style="font-size: 10pt; font-family: Verdana;"> register</span></li>
-              </ul>
-              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add new startup files, </span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">startup_stm32f0xx_ld.s</span>, for the supported compilers</span></li>
-            </ul>
-<h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.2 / 13-July-2012</span></h3><p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-<ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">stm32f0xx.h</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Fix issue with gcc_ride7 startup file </span><span style="font-size: 10pt; font-family: Verdana;"></span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.1 / 20-April-2012</span></h3><p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-<ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">stm32f0xx.h</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add reference to STM32F050xx (Flash memory up to 32 Kbytes) and STM32F051xx (</span><span style="font-size: 10pt; font-family: Verdana;">Flash memory up to 64 Kbytes</span><span style="font-size: 10pt; font-family: Verdana;">) devices</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">RTC register bits definition: remove reference to Tamper3</span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.0 / 23-March-2012</span></h3><p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-<ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">First official release&nbsp;for <span style="font-weight: bold; font-style: italic;">STM32F0xx devices</span></span><span style="font-size: 10pt; font-family: Verdana;"></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">All source files: license disclaimer text update and add link to the License file on ST Internet</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">stm32f0xx.h</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">change MCO bits value:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">change <span style="font-style: italic;">RCC_CFGR_MCO_HSI14</span> value from 0x03000000 to 0x01000000</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add <span style="font-style: italic;">RCC_CFGR_MCO_LSI</span> having value 0x02000000</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add <span style="font-style: italic;">RCC_CFGR_MCO_LSE</span> having value 0x03000000</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add new bit <span style="font-style: italic;">RCC_CSR_V18PWRRSTF</span> having value 0x00800000</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">TIM_OR</span> bits definition values corrected</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Rename <span style="font-style: italic;">ADC_ISR_EOS</span> to <span style="font-style: italic;">ADC_ISR_EOSEQ</span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Rename <span style="font-style: italic;">ADC_IER_EOSIE</span> to <span style="font-style: italic;">ADC_IER_EOSEQIE</span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Rename <span style="font-style: italic;">ADC_CFGR1_AUTDLY</span> to <span style="font-style: italic;">ADC_CFGR1_WAIT</span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Rename option bit <span style="font-style: italic;">FLASH_OBR_BOOT1</span> to <span style="font-style: italic;">FLASH_OBR_nBOOT1</span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Rename <span style="font-style: italic;">FLASH_OBR_VDDA_ANALOG</span> to <span style="font-style: italic;">FLASH_OBR_VDDA_MONITOR</span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Add Flash and OB keys (removed from Flash driver)</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">system_stm32f0xx.c</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">SetSysClock()</span> function: code optimized&nbsp;</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Miscellaneous&nbsp;formatting<br></span></li></ul></ul>
-            <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.0RC1 / 27-January-2012<o:p></o:p></span></h3>
-            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
-Changes<o:p></o:p></span></u></b></p>
-
-            <ul style="margin-top: 0cm;" type="square">
-<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Official version (V1.0.0) Release Candidate 1</span><span style="font-size: 10pt; font-family: Verdana;"></span></li>
-              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">All source 
-files: update disclaimer to add reference to the&nbsp;new license agreement</span></li>
-              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: Verdana;">Update all peripherals bits definitions<br>
-</span></li>
-            </ul><span style="font-size: 10pt; font-family: Verdana;"><span style="font-weight: bold;"></span><span style="font-weight: bold; font-style: italic;"></span></span>
-
-<ul style="margin-top: 0in;" type="disc">
-</ul>
-<h2 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;"><a name="License"></a><span style="font-size: 12pt; color: white;">License<o:p></o:p></span></h2><p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;">Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use this&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;">package</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;"> except in compliance with the License. You may obtain a copy of the License at:<br><br></span></p><div style="text-align: center;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a target="_blank" href="http://www.st.com/software_license_agreement_liberty_v2">http://www.st.com/software_license_agreement_liberty_v2</a></span><br><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;"></span></div><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;"><br>Unless
-required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS, <br>WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See
-the License for the specific language governing permissions and
-limitations under the License.</span>
-
-<div class="MsoNormal" style="text-align: center;" align="center"><span style="color: black;">
-<hr align="center" size="2" width="100%"></span></div>
-<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt; text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;">For
-    complete documentation on </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;;">STM32<span style="color: black;">
-    Microcontrollers visit </span><u><span style="color: blue;"><a href="http://www.st.com/internet/mcu/family/141.jsp" target="_blank">www.st.com/STM32</a></span></u></span><span style="font-size: 10pt; font-family: Verdana;"><u><span style="color: blue;"><a href="http://www.st.com/internet/mcu/family/141.jsp" target="_blank"></a></span></u></span><span style="color: black;"><o:p></o:p></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-<p class="MsoNormal"><span style="font-size: 10pt;"><o:p></o:p></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
-</div>
-</body></html>
\ No newline at end of file
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f030.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f030.s
deleted file mode 100644
index 9bef368..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f030.s	
+++ /dev/null
@@ -1,280 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f030.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F030 Devices vector table for Atollic toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-/* Call static constructors */
-    bl __libc_init_array
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word 0  
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word 0  
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word 0  
-  .word TIM3_IRQHandler
-  .word 0   
-  .word 0  
-  .word TIM14_IRQHandler
-  .word TIM15_IRQHandler
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word I2C2_IRQHandler
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word 0
-  .word 0
-  .word 0
-  
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
- 
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_IRQHandler
-  .thumb_set ADC1_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-    
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-    
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM15_IRQHandler
-  .thumb_set TIM15_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak I2C2_IRQHandler
-  .thumb_set I2C2_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-  
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f031.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f031.s
deleted file mode 100644
index f4454d0..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f031.s	
+++ /dev/null
@@ -1,275 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f031.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F031 Devices vector table for Atollic toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-/* Call static constructors */
-    bl __libc_init_array
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word PVD_IRQHandler  
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word 0  
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler  
-  .word TIM3_IRQHandler
-  .word 0   
-  .word 0  
-  .word TIM14_IRQHandler
-  .word 0 
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word 0  
-  .word SPI1_IRQHandler
-  .word 0 
-  .word USART1_IRQHandler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-  
-  .weak PVD_IRQHandler
-  .thumb_set PVD_IRQHandler,Default_Handler
- 
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_IRQHandler
-  .thumb_set ADC1_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-    
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-    
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-    
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-   
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-    
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-    
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-  
\ No newline at end of file
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f042.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f042.s
deleted file mode 100644
index 0255c25..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f042.s	
+++ /dev/null
@@ -1,289 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f042.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F042 Devices vector table for Atollic toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-/* Call static constructors */
-    bl __libc_init_array
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word PVD_VDDIO2_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_CRS_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word TSC_IRQHandler
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word 0  
-  .word 0  
-  .word TIM14_IRQHandler
-  .word 0   
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word 0  
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word 0
-  .word CEC_CAN_IRQHandler
-  .word USB_IRQHandler
-  
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_VDDIO2_IRQHandler
-  .thumb_set PVD_VDDIO2_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_CRS_IRQHandler
-  .thumb_set RCC_CRS_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak TSC_IRQHandler
-  .thumb_set TSC_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_IRQHandler
-  .thumb_set ADC1_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-    
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-    
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-  
-  .weak CEC_CAN_IRQHandler
-  .thumb_set CEC_CAN_IRQHandler,Default_Handler
-
-
-  .weak USB_IRQHandler
-  .thumb_set USB_IRQHandler,Default_Handler
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f051.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f051.s
deleted file mode 100644
index d44725a..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f051.s	
+++ /dev/null
@@ -1,295 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f051.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F051 Devices vector table for Atollic toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-/* Call static constructors */
-    bl __libc_init_array
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word PVD_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word TS_IRQHandler
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_COMP_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word TIM6_DAC_IRQHandler
-  .word 0  
-  .word TIM14_IRQHandler
-  .word TIM15_IRQHandler
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word I2C2_IRQHandler
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word 0
-  .word CEC_IRQHandler
-  .word 0
- 
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_IRQHandler
-  .thumb_set PVD_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak TS_IRQHandler
-  .thumb_set TS_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_COMP_IRQHandler
-  .thumb_set ADC1_COMP_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-  
-  .weak TIM6_DAC_IRQHandler
-  .thumb_set TIM6_DAC_IRQHandler,Default_Handler
-  
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM15_IRQHandler
-  .thumb_set TIM15_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak I2C2_IRQHandler
-  .thumb_set I2C2_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-  
-  .weak CEC_IRQHandler
-  .thumb_set CEC_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f072.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f072.s
deleted file mode 100644
index 2a270e5..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f072.s	
+++ /dev/null
@@ -1,304 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f072.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F072 Devices vector table for Atollic toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-/* Call static constructors */
-    bl __libc_init_array
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word PVD_VDDIO2_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_CRS_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word TSC_IRQHandler
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_6_7_IRQHandler
-  .word ADC1_COMP_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word TIM6_DAC_IRQHandler
-  .word TIM7_IRQHandler    
-  .word TIM14_IRQHandler
-  .word TIM15_IRQHandler
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word I2C2_IRQHandler
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word USART3_4_IRQHandler 
-  .word CEC_CAN_IRQHandler
-  .word USB_IRQHandler
-
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_VDDIO2_IRQHandler
-  .thumb_set PVD_VDDIO2_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_CRS_IRQHandler
-  .thumb_set RCC_CRS_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak TSC_IRQHandler
-  .thumb_set TSC_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_6_7_IRQHandler
-  .thumb_set DMA1_Channel4_5_6_7_IRQHandler,Default_Handler
-  
-  .weak ADC1_COMP_IRQHandler
-  .thumb_set ADC1_COMP_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-  
-  .weak TIM6_DAC_IRQHandler
-  .thumb_set TIM6_DAC_IRQHandler,Default_Handler
-  
-  .weak TIM7_IRQHandler
-  .thumb_set TIM7_IRQHandler,Default_Handler
-
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM15_IRQHandler
-  .thumb_set TIM15_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak I2C2_IRQHandler
-  .thumb_set I2C2_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-
-  .weak USART3_4_IRQHandler
-  .thumb_set USART3_4_IRQHandler,Default_Handler
-  
-  .weak CEC_CAN_IRQHandler
-  .thumb_set CEC_CAN_IRQHandler,Default_Handler
-
-  .weak USB_IRQHandler
-  .thumb_set USB_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f0xx.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f0xx.s
deleted file mode 100644
index 36b18c7..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f0xx.s	
+++ /dev/null
@@ -1,293 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f0xx.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F0xx Devices vector table for Atollic toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-/* Call static constructors */
-    bl __libc_init_array
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-  .word WWDG_IRQHandler
-  .word PVD_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word TS_IRQHandler
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_COMP_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word TIM6_DAC_IRQHandler
-  .word 0  
-  .word TIM14_IRQHandler
-  .word TIM15_IRQHandler
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word I2C2_IRQHandler
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word 0
-  .word CEC_IRQHandler
-  .word 0
-
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_IRQHandler
-  .thumb_set PVD_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak TS_IRQHandler
-  .thumb_set TS_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_COMP_IRQHandler
-  .thumb_set ADC1_COMP_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-  
-  .weak TIM6_DAC_IRQHandler
-  .thumb_set TIM6_DAC_IRQHandler,Default_Handler
-  
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM15_IRQHandler
-  .thumb_set TIM15_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak I2C2_IRQHandler
-  .thumb_set I2C2_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-  
-  .weak CEC_IRQHandler
-  .thumb_set CEC_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f0xx_ld.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f0xx_ld.s
deleted file mode 100644
index aa59dab..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/TrueSTUDIO/startup_stm32f0xx_ld.s	
+++ /dev/null
@@ -1,273 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f0xx_ld.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F031 devices vector table for Atollic toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-/* Call static constructors */
-    bl __libc_init_array
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-  .word WWDG_IRQHandler
-  .word PVD_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word 0
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word 0
-  .word 0  
-  .word TIM14_IRQHandler
-  .word 0
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word 0
-  .word SPI1_IRQHandler
-  .word 0
-  .word USART1_IRQHandler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_IRQHandler
-  .thumb_set PVD_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_IRQHandler
-  .thumb_set ADC1_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-  
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030.s
deleted file mode 100644
index 187f5d7..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030.s	
+++ /dev/null
@@ -1,244 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f030.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F030 devices vector table for MDK-ARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == Reset_Handler
-;*                      - Set the vector table entries with the exceptions ISR address
-;*                      - Configure the system clock
-;*                      - Branches to __main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the CortexM0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>   
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; <h> Stack Configuration
-;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Stack_Size      EQU     0x00000400
-
-                AREA    STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem       SPACE   Stack_Size
-__initial_sp
-
-
-; <h> Heap Configuration
-;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Heap_Size       EQU     0x00000200
-
-                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem        SPACE   Heap_Size
-__heap_limit
-
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                   ; Top of Stack
-                DCD     Reset_Handler                  ; Reset Handler
-                DCD     NMI_Handler                    ; NMI Handler
-                DCD     HardFault_Handler              ; Hard Fault Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     SVC_Handler                    ; SVCall Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     PendSV_Handler                 ; PendSV Handler
-                DCD     SysTick_Handler                ; SysTick Handler
-
-                ; External Interrupts
-                DCD     WWDG_IRQHandler                ; Window Watchdog
-                DCD     0                              ; Reserved
-                DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-                DCD     FLASH_IRQHandler               ; FLASH
-                DCD     RCC_IRQHandler                 ; RCC
-                DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-                DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-                DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-                DCD     0                              ; Reserved
-                DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-                DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-                DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-                DCD     ADC1_IRQHandler                ; ADC1 
-                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-                DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-                DCD     0                              ; Reserved
-                DCD     TIM3_IRQHandler                ; TIM3
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     TIM14_IRQHandler               ; TIM14
-                DCD     TIM15_IRQHandler               ; TIM15
-                DCD     TIM16_IRQHandler               ; TIM16
-                DCD     TIM17_IRQHandler               ; TIM17
-                DCD     I2C1_IRQHandler                ; I2C1
-                DCD     I2C2_IRQHandler                ; I2C2
-                DCD     SPI1_IRQHandler                ; SPI1
-                DCD     SPI2_IRQHandler                ; SPI2
-                DCD     USART1_IRQHandler              ; USART1
-                DCD     USART2_IRQHandler              ; USART2
-                
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset handler routine
-Reset_Handler    PROC
-                 EXPORT  Reset_Handler                 [WEAK]
-        IMPORT  __main
-        IMPORT  SystemInit  
-                 LDR     R0, =SystemInit
-                 BLX     R0
-                 LDR     R0, =__main
-                 BX      R0
-                 ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler     PROC
-                EXPORT  NMI_Handler                    [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler              [WEAK]
-                B       .
-                ENDP
-SVC_Handler     PROC
-                EXPORT  SVC_Handler                    [WEAK]
-                B       .
-                ENDP
-PendSV_Handler  PROC
-                EXPORT  PendSV_Handler                 [WEAK]
-                B       .
-                ENDP
-SysTick_Handler PROC
-                EXPORT  SysTick_Handler                [WEAK]
-                B       .
-                ENDP
-
-Default_Handler PROC
-
-                EXPORT  WWDG_IRQHandler                [WEAK]
-                EXPORT  RTC_IRQHandler                 [WEAK]
-                EXPORT  FLASH_IRQHandler               [WEAK]
-                EXPORT  RCC_IRQHandler                 [WEAK]
-                EXPORT  EXTI0_1_IRQHandler             [WEAK]
-                EXPORT  EXTI2_3_IRQHandler             [WEAK]
-                EXPORT  EXTI4_15_IRQHandler            [WEAK]
-                EXPORT  DMA1_Channel1_IRQHandler       [WEAK]
-                EXPORT  DMA1_Channel2_3_IRQHandler     [WEAK]
-                EXPORT  DMA1_Channel4_5_IRQHandler     [WEAK]
-                EXPORT  ADC1_IRQHandler                [WEAK]
-                EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
-                EXPORT  TIM1_CC_IRQHandler             [WEAK]
-                EXPORT  TIM3_IRQHandler                [WEAK]
-                EXPORT  TIM14_IRQHandler               [WEAK]
-                EXPORT  TIM15_IRQHandler               [WEAK]
-                EXPORT  TIM16_IRQHandler               [WEAK]
-                EXPORT  TIM17_IRQHandler               [WEAK]
-                EXPORT  I2C1_IRQHandler                [WEAK]
-                EXPORT  I2C2_IRQHandler                [WEAK]
-                EXPORT  SPI1_IRQHandler                [WEAK]
-                EXPORT  SPI2_IRQHandler                [WEAK]
-                EXPORT  USART1_IRQHandler              [WEAK]
-                EXPORT  USART2_IRQHandler              [WEAK]
-
-
-WWDG_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCC_IRQHandler
-EXTI0_1_IRQHandler
-EXTI2_3_IRQHandler
-EXTI4_15_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_3_IRQHandler
-DMA1_Channel4_5_IRQHandler
-ADC1_IRQHandler 
-TIM1_BRK_UP_TRG_COM_IRQHandler
-TIM1_CC_IRQHandler
-TIM3_IRQHandler
-TIM14_IRQHandler
-TIM15_IRQHandler
-TIM16_IRQHandler
-TIM17_IRQHandler
-I2C1_IRQHandler
-I2C2_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-
-                B       .
-
-                ENDP
-
-                ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
-                 IF      :DEF:__MICROLIB
-                
-                 EXPORT  __initial_sp
-                 EXPORT  __heap_base
-                 EXPORT  __heap_limit
-                
-                 ELSE
-                
-                 IMPORT  __use_two_region_memory
-                 EXPORT  __user_initial_stackheap
-                 
-__user_initial_stackheap
-
-                 LDR     R0, =  Heap_Mem
-                 LDR     R1, =(Stack_Mem + Stack_Size)
-                 LDR     R2, = (Heap_Mem +  Heap_Size)
-                 LDR     R3, = Stack_Mem
-                 BX      LR
-
-                 ALIGN
-
-                 ENDIF
-
-                 END
-
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031.s
deleted file mode 100644
index d6b1e6c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031.s	
+++ /dev/null
@@ -1,239 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f031.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F031 devices vector table for MDK-ARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == Reset_Handler
-;*                      - Set the vector table entries with the exceptions ISR address
-;*                      - Configure the system clock
-;*                      - Branches to __main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the CortexM0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>   
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; <h> Stack Configuration
-;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Stack_Size      EQU     0x00000400
-
-                AREA    STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem       SPACE   Stack_Size
-__initial_sp
-
-
-; <h> Heap Configuration
-;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Heap_Size       EQU     0x00000200
-
-                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem        SPACE   Heap_Size
-__heap_limit
-
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                   ; Top of Stack
-                DCD     Reset_Handler                  ; Reset Handler
-                DCD     NMI_Handler                    ; NMI Handler
-                DCD     HardFault_Handler              ; Hard Fault Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     SVC_Handler                    ; SVCall Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     PendSV_Handler                 ; PendSV Handler
-                DCD     SysTick_Handler                ; SysTick Handler
-
-                ; External Interrupts
-                DCD     WWDG_IRQHandler                ; Window Watchdog
-                DCD     PVD_IRQHandler                 ; PVD through EXTI Line detect
-                DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-                DCD     FLASH_IRQHandler               ; FLASH
-                DCD     RCC_IRQHandler                 ; RCC
-                DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-                DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-                DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-                DCD     0                              ; Reserved
-                DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-                DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-                DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-                DCD     ADC1_IRQHandler                ; ADC1 
-                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-                DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-                DCD     TIM2_IRQHandler                ; TIM2
-                DCD     TIM3_IRQHandler                ; TIM3
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     TIM14_IRQHandler               ; TIM14
-                DCD     0                              ; Reserved
-                DCD     TIM16_IRQHandler               ; TIM16
-                DCD     TIM17_IRQHandler               ; TIM17
-                DCD     I2C1_IRQHandler                ; I2C1
-                DCD     0                              ; Reserved
-                DCD     SPI1_IRQHandler                ; SPI1
-                DCD     0                              ; Reserved
-                DCD     USART1_IRQHandler              ; USART1
-                
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset handler routine
-Reset_Handler    PROC
-                 EXPORT  Reset_Handler                 [WEAK]
-        IMPORT  __main
-        IMPORT  SystemInit  
-                 LDR     R0, =SystemInit
-                 BLX     R0
-                 LDR     R0, =__main
-                 BX      R0
-                 ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler     PROC
-                EXPORT  NMI_Handler                    [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler              [WEAK]
-                B       .
-                ENDP
-SVC_Handler     PROC
-                EXPORT  SVC_Handler                    [WEAK]
-                B       .
-                ENDP
-PendSV_Handler  PROC
-                EXPORT  PendSV_Handler                 [WEAK]
-                B       .
-                ENDP
-SysTick_Handler PROC
-                EXPORT  SysTick_Handler                [WEAK]
-                B       .
-                ENDP
-
-Default_Handler PROC
-
-                EXPORT  WWDG_IRQHandler                [WEAK]
-                EXPORT  PVD_IRQHandler                 [WEAK]
-                EXPORT  RTC_IRQHandler                 [WEAK]
-                EXPORT  FLASH_IRQHandler               [WEAK]
-                EXPORT  RCC_IRQHandler                 [WEAK]
-                EXPORT  EXTI0_1_IRQHandler             [WEAK]
-                EXPORT  EXTI2_3_IRQHandler             [WEAK]
-                EXPORT  EXTI4_15_IRQHandler            [WEAK]
-                EXPORT  DMA1_Channel1_IRQHandler       [WEAK]
-                EXPORT  DMA1_Channel2_3_IRQHandler     [WEAK]
-                EXPORT  DMA1_Channel4_5_IRQHandler     [WEAK]
-                EXPORT  ADC1_IRQHandler                [WEAK]
-                EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
-                EXPORT  TIM1_CC_IRQHandler             [WEAK]
-                EXPORT  TIM2_IRQHandler                [WEAK]
-                EXPORT  TIM3_IRQHandler                [WEAK]
-                EXPORT  TIM14_IRQHandler               [WEAK]
-                EXPORT  TIM16_IRQHandler               [WEAK]
-                EXPORT  TIM17_IRQHandler               [WEAK]
-                EXPORT  I2C1_IRQHandler                [WEAK]
-                EXPORT  SPI1_IRQHandler                [WEAK]
-                EXPORT  USART1_IRQHandler              [WEAK]
-
-
-WWDG_IRQHandler
-PVD_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCC_IRQHandler
-EXTI0_1_IRQHandler
-EXTI2_3_IRQHandler
-EXTI4_15_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_3_IRQHandler
-DMA1_Channel4_5_IRQHandler
-ADC1_IRQHandler 
-TIM1_BRK_UP_TRG_COM_IRQHandler
-TIM1_CC_IRQHandler
-TIM2_IRQHandler
-TIM3_IRQHandler
-TIM14_IRQHandler
-TIM16_IRQHandler
-TIM17_IRQHandler
-I2C1_IRQHandler
-SPI1_IRQHandler
-USART1_IRQHandler
-
-                B       .
-
-                ENDP
-
-                ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
-                 IF      :DEF:__MICROLIB
-                
-                 EXPORT  __initial_sp
-                 EXPORT  __heap_base
-                 EXPORT  __heap_limit
-                
-                 ELSE
-                
-                 IMPORT  __use_two_region_memory
-                 EXPORT  __user_initial_stackheap
-                 
-__user_initial_stackheap
-
-                 LDR     R0, =  Heap_Mem
-                 LDR     R1, =(Stack_Mem + Stack_Size)
-                 LDR     R2, = (Heap_Mem +  Heap_Size)
-                 LDR     R3, = Stack_Mem
-                 BX      LR
-
-                 ALIGN
-
-                 ENDIF
-
-                 END
-
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f042.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f042.s
deleted file mode 100644
index ebf6eef..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f042.s	
+++ /dev/null
@@ -1,254 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f042.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F042 Devices vector table for
-;*                      for MDK-ARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == Reset_Handler
-;*                      - Set the vector table entries with the exceptions ISR address
-;*                      - Configure the system clock
-;*                      - Branches to __main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the CortexM0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>   
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; <h> Stack Configuration
-;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Stack_Size      EQU     0x00000400
-
-                AREA    STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem       SPACE   Stack_Size
-__initial_sp
-
-
-; <h> Heap Configuration
-;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Heap_Size       EQU     0x00000200
-
-                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem        SPACE   Heap_Size
-__heap_limit
-
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                   ; Top of Stack
-                        DCD     Reset_Handler                  ; Reset Handler
-                        DCD     NMI_Handler                    ; NMI Handler
-                        DCD     HardFault_Handler              ; Hard Fault Handler
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     SVC_Handler                    ; SVCall Handler
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     PendSV_Handler                 ; PendSV Handler
-                        DCD     SysTick_Handler                ; SysTick Handler
-
-                ; External Interrupts
-                DCD     WWDG_IRQHandler                ; Window Watchdog
-                DCD     PVD_VDDIO2_IRQHandler          ; PVD and VDDIO2 through EXTI Line detect
-                DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-                DCD     FLASH_IRQHandler               ; FLASH
-                DCD     RCC_CRS_IRQHandler             ; RCC and CRS
-                DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-                DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-                DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-                DCD     TSC_IRQHandler                 ; TS
-                DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-                DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-                DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4, Channel 5
-                DCD     ADC1_IRQHandler                ; ADC1 
-                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-                DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-                DCD     TIM2_IRQHandler                ; TIM2
-                DCD     TIM3_IRQHandler                ; TIM3
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     TIM14_IRQHandler               ; TIM14
-                DCD     0                              ; Reserved
-                DCD     TIM16_IRQHandler               ; TIM16
-                DCD     TIM17_IRQHandler               ; TIM17
-                DCD     I2C1_IRQHandler                ; I2C1
-                DCD     0                              ; Reserved
-                DCD     SPI1_IRQHandler                ; SPI1
-                DCD     SPI2_IRQHandler                ; SPI2
-                DCD     USART1_IRQHandler              ; USART1
-                DCD     USART2_IRQHandler              ; USART2
-                DCD     0                              ; Reserved
-                DCD     CEC_CAN_IRQHandler             ; CEC and CAN
-                DCD     USB_IRQHandler                 ; USB
-                
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset handler routine
-Reset_Handler    PROC
-                 EXPORT  Reset_Handler                 [WEAK]
-        IMPORT  __main
-        IMPORT  SystemInit  
-                 LDR     R0, =SystemInit
-                 BLX     R0
-                 LDR     R0, =__main
-                 BX      R0
-                 ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler     PROC
-                EXPORT  NMI_Handler                    [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler              [WEAK]
-                B       .
-                ENDP
-SVC_Handler     PROC
-                EXPORT  SVC_Handler                    [WEAK]
-                B       .
-                ENDP
-PendSV_Handler  PROC
-                EXPORT  PendSV_Handler                 [WEAK]
-                B       .
-                ENDP
-SysTick_Handler PROC
-                EXPORT  SysTick_Handler                [WEAK]
-                B       .
-                ENDP
-
-Default_Handler PROC
-
-                EXPORT  WWDG_IRQHandler                [WEAK]
-                EXPORT  PVD_VDDIO2_IRQHandler          [WEAK]
-                EXPORT  RTC_IRQHandler                 [WEAK]
-                EXPORT  FLASH_IRQHandler               [WEAK]
-                EXPORT  RCC_CRS_IRQHandler             [WEAK]
-                EXPORT  EXTI0_1_IRQHandler             [WEAK]
-                EXPORT  EXTI2_3_IRQHandler             [WEAK]
-                EXPORT  EXTI4_15_IRQHandler            [WEAK]
-                EXPORT  TSC_IRQHandler                  [WEAK]
-                EXPORT  DMA1_Channel1_IRQHandler       [WEAK]
-                EXPORT  DMA1_Channel2_3_IRQHandler     [WEAK]
-                EXPORT  DMA1_Channel4_5_IRQHandler     [WEAK]
-                EXPORT  ADC1_IRQHandler                [WEAK]
-                EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
-                EXPORT  TIM1_CC_IRQHandler             [WEAK]
-                EXPORT  TIM2_IRQHandler                [WEAK]
-                EXPORT  TIM3_IRQHandler                [WEAK]
-                EXPORT  TIM14_IRQHandler               [WEAK]
-                EXPORT  TIM16_IRQHandler               [WEAK]
-                EXPORT  TIM17_IRQHandler               [WEAK]
-                EXPORT  I2C1_IRQHandler                [WEAK]
-                EXPORT  SPI1_IRQHandler                [WEAK]
-                EXPORT  SPI2_IRQHandler                [WEAK]
-                EXPORT  USART1_IRQHandler              [WEAK]
-                EXPORT  USART2_IRQHandler              [WEAK]
-                EXPORT  CEC_CAN_IRQHandler             [WEAK]
-                EXPORT  USB_IRQHandler                 [WEAK]
-
-
-WWDG_IRQHandler
-PVD_VDDIO2_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCC_CRS_IRQHandler
-EXTI0_1_IRQHandler
-EXTI2_3_IRQHandler
-EXTI4_15_IRQHandler
-TSC_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_3_IRQHandler
-DMA1_Channel4_5_IRQHandler
-ADC1_IRQHandler 
-TIM1_BRK_UP_TRG_COM_IRQHandler
-TIM1_CC_IRQHandler
-TIM2_IRQHandler
-TIM3_IRQHandler
-TIM14_IRQHandler
-TIM16_IRQHandler
-TIM17_IRQHandler
-I2C1_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-CEC_CAN_IRQHandler
-USB_IRQHandler   
-
-                B       .
-
-                ENDP
-
-                ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
-                 IF      :DEF:__MICROLIB
-                
-                 EXPORT  __initial_sp
-                 EXPORT  __heap_base
-                 EXPORT  __heap_limit
-                
-                 ELSE
-                
-                 IMPORT  __use_two_region_memory
-                 EXPORT  __user_initial_stackheap
-                 
-__user_initial_stackheap
-
-                 LDR     R0, =  Heap_Mem
-                 LDR     R1, =(Stack_Mem + Stack_Size)
-                 LDR     R2, = (Heap_Mem +  Heap_Size)
-                 LDR     R3, = Stack_Mem
-                 BX      LR
-
-                 ALIGN
-
-                 ENDIF
-
-                 END
-
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f051.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f051.s
deleted file mode 100644
index 1e194f5..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f051.s	
+++ /dev/null
@@ -1,257 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f051.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F051 devices vector table for MDK-ARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == Reset_Handler
-;*                      - Set the vector table entries with the exceptions ISR address
-;*                      - Configure the system clock
-;*                      - Branches to __main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the CortexM0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>   
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; <h> Stack Configuration
-;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Stack_Size      EQU     0x00000400
-
-                AREA    STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem       SPACE   Stack_Size
-__initial_sp
-
-
-; <h> Heap Configuration
-;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Heap_Size       EQU     0x00000200
-
-                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem        SPACE   Heap_Size
-__heap_limit
-
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                   ; Top of Stack
-                DCD     Reset_Handler                  ; Reset Handler
-                DCD     NMI_Handler                    ; NMI Handler
-                DCD     HardFault_Handler              ; Hard Fault Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     SVC_Handler                    ; SVCall Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     PendSV_Handler                 ; PendSV Handler
-                DCD     SysTick_Handler                ; SysTick Handler
-
-                ; External Interrupts
-                DCD     WWDG_IRQHandler                ; Window Watchdog
-                DCD     PVD_IRQHandler                 ; PVD through EXTI Line detect
-                DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-                DCD     FLASH_IRQHandler               ; FLASH
-                DCD     RCC_IRQHandler                 ; RCC
-                DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-                DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-                DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-                DCD     TS_IRQHandler                  ; TS
-                DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-                DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-                DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-                DCD     ADC1_COMP_IRQHandler           ; ADC1, COMP1 and COMP2 
-                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-                DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-                DCD     TIM2_IRQHandler                ; TIM2
-                DCD     TIM3_IRQHandler                ; TIM3
-                DCD     TIM6_DAC_IRQHandler            ; TIM6 and DAC
-                DCD     0                              ; Reserved
-                DCD     TIM14_IRQHandler               ; TIM14
-                DCD     TIM15_IRQHandler               ; TIM15
-                DCD     TIM16_IRQHandler               ; TIM16
-                DCD     TIM17_IRQHandler               ; TIM17
-                DCD     I2C1_IRQHandler                ; I2C1
-                DCD     I2C2_IRQHandler                ; I2C2
-                DCD     SPI1_IRQHandler                ; SPI1
-                DCD     SPI2_IRQHandler                ; SPI2
-                DCD     USART1_IRQHandler              ; USART1
-                DCD     USART2_IRQHandler              ; USART2
-                DCD     0                              ; Reserved
-                DCD     CEC_IRQHandler                 ; CEC
-                DCD     0                              ; Reserved
-                
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset handler routine
-Reset_Handler    PROC
-                 EXPORT  Reset_Handler                 [WEAK]
-        IMPORT  __main
-        IMPORT  SystemInit  
-                 LDR     R0, =SystemInit
-                 BLX     R0
-                 LDR     R0, =__main
-                 BX      R0
-                 ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler     PROC
-                EXPORT  NMI_Handler                    [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler              [WEAK]
-                B       .
-                ENDP
-SVC_Handler     PROC
-                EXPORT  SVC_Handler                    [WEAK]
-                B       .
-                ENDP
-PendSV_Handler  PROC
-                EXPORT  PendSV_Handler                 [WEAK]
-                B       .
-                ENDP
-SysTick_Handler PROC
-                EXPORT  SysTick_Handler                [WEAK]
-                B       .
-                ENDP
-
-Default_Handler PROC
-
-                EXPORT  WWDG_IRQHandler                [WEAK]
-                EXPORT  PVD_IRQHandler                 [WEAK]
-                EXPORT  RTC_IRQHandler                 [WEAK]
-                EXPORT  FLASH_IRQHandler               [WEAK]
-                EXPORT  RCC_IRQHandler                 [WEAK]
-                EXPORT  EXTI0_1_IRQHandler             [WEAK]
-                EXPORT  EXTI2_3_IRQHandler             [WEAK]
-                EXPORT  EXTI4_15_IRQHandler            [WEAK]
-                EXPORT  TS_IRQHandler                  [WEAK]
-                EXPORT  DMA1_Channel1_IRQHandler       [WEAK]
-                EXPORT  DMA1_Channel2_3_IRQHandler     [WEAK]
-                EXPORT  DMA1_Channel4_5_IRQHandler     [WEAK]
-                EXPORT  ADC1_COMP_IRQHandler           [WEAK]
-                EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
-                EXPORT  TIM1_CC_IRQHandler             [WEAK]
-                EXPORT  TIM2_IRQHandler                [WEAK]
-                EXPORT  TIM3_IRQHandler                [WEAK]
-                EXPORT  TIM6_DAC_IRQHandler            [WEAK]
-                EXPORT  TIM14_IRQHandler               [WEAK]
-                EXPORT  TIM15_IRQHandler               [WEAK]
-                EXPORT  TIM16_IRQHandler               [WEAK]
-                EXPORT  TIM17_IRQHandler               [WEAK]
-                EXPORT  I2C1_IRQHandler                [WEAK]
-                EXPORT  I2C2_IRQHandler                [WEAK]
-                EXPORT  SPI1_IRQHandler                [WEAK]
-                EXPORT  SPI2_IRQHandler                [WEAK]
-                EXPORT  USART1_IRQHandler              [WEAK]
-                EXPORT  USART2_IRQHandler              [WEAK]
-                EXPORT  CEC_IRQHandler                 [WEAK]
-
-
-WWDG_IRQHandler
-PVD_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCC_IRQHandler
-EXTI0_1_IRQHandler
-EXTI2_3_IRQHandler
-EXTI4_15_IRQHandler
-TS_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_3_IRQHandler
-DMA1_Channel4_5_IRQHandler
-ADC1_COMP_IRQHandler 
-TIM1_BRK_UP_TRG_COM_IRQHandler
-TIM1_CC_IRQHandler
-TIM2_IRQHandler
-TIM3_IRQHandler
-TIM6_DAC_IRQHandler
-TIM14_IRQHandler
-TIM15_IRQHandler
-TIM16_IRQHandler
-TIM17_IRQHandler
-I2C1_IRQHandler
-I2C2_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-CEC_IRQHandler   
-
-                B       .
-
-                ENDP
-
-                ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
-                 IF      :DEF:__MICROLIB
-                
-                 EXPORT  __initial_sp
-                 EXPORT  __heap_base
-                 EXPORT  __heap_limit
-                
-                 ELSE
-                
-                 IMPORT  __use_two_region_memory
-                 EXPORT  __user_initial_stackheap
-                 
-__user_initial_stackheap
-
-                 LDR     R0, =  Heap_Mem
-                 LDR     R1, =(Stack_Mem + Stack_Size)
-                 LDR     R2, = (Heap_Mem +  Heap_Size)
-                 LDR     R3, = Stack_Mem
-                 BX      LR
-
-                 ALIGN
-
-                 ENDIF
-
-                 END
-
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f072.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f072.s
deleted file mode 100644
index f1a85a3..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f072.s	
+++ /dev/null
@@ -1,264 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f072.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F072 Devices vector table for
-;*                      for MDK-ARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == Reset_Handler
-;*                      - Set the vector table entries with the exceptions ISR address
-;*                      - Configure the system clock
-;*                      - Branches to __main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the CortexM0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>   
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; <h> Stack Configuration
-;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Stack_Size      EQU     0x00000400
-
-                AREA    STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem       SPACE   Stack_Size
-__initial_sp
-
-
-; <h> Heap Configuration
-;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Heap_Size       EQU     0x00000200
-
-                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem        SPACE   Heap_Size
-__heap_limit
-
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                   ; Top of Stack
-                        DCD     Reset_Handler                  ; Reset Handler
-                        DCD     NMI_Handler                    ; NMI Handler
-                        DCD     HardFault_Handler              ; Hard Fault Handler
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     SVC_Handler                    ; SVCall Handler
-                        DCD     0                              ; Reserved
-                        DCD     0                              ; Reserved
-                        DCD     PendSV_Handler                 ; PendSV Handler
-                        DCD     SysTick_Handler                ; SysTick Handler
-
-                ; External Interrupts
-                DCD     WWDG_IRQHandler                ; Window Watchdog
-                DCD     PVD_VDDIO2_IRQHandler          ; PVD and VDDIO2 through EXTI Line detect
-                DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-                DCD     FLASH_IRQHandler               ; FLASH
-                DCD     RCC_CRS_IRQHandler             ; RCC and CRS
-                DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-                DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-                DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-                DCD     TSC_IRQHandler                  ; TS
-                DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-                DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-                DCD     DMA1_Channel4_5_6_7_IRQHandler ; DMA1 Channel 4, Channel 5, Channel 6 and Channel 7
-                DCD     ADC1_COMP_IRQHandler           ; ADC1, COMP1 and COMP2 
-                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-                DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-                DCD     TIM2_IRQHandler                ; TIM2
-                DCD     TIM3_IRQHandler                ; TIM3
-                DCD     TIM6_DAC_IRQHandler            ; TIM6 and DAC
-                DCD     TIM7_IRQHandler                ; TIM7
-                DCD     TIM14_IRQHandler               ; TIM14
-                DCD     TIM15_IRQHandler               ; TIM15
-                DCD     TIM16_IRQHandler               ; TIM16
-                DCD     TIM17_IRQHandler               ; TIM17
-                DCD     I2C1_IRQHandler                ; I2C1
-                DCD     I2C2_IRQHandler                ; I2C2
-                DCD     SPI1_IRQHandler                ; SPI1
-                DCD     SPI2_IRQHandler                ; SPI2
-                DCD     USART1_IRQHandler              ; USART1
-                DCD     USART2_IRQHandler              ; USART2
-                DCD     USART3_4_IRQHandler            ; USART3 and USART4
-                DCD     CEC_CAN_IRQHandler             ; CEC and CAN
-                DCD     USB_IRQHandler              ; USB
-                
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset handler routine
-Reset_Handler    PROC
-                 EXPORT  Reset_Handler                 [WEAK]
-        IMPORT  __main
-        IMPORT  SystemInit  
-                 LDR     R0, =SystemInit
-                 BLX     R0
-                 LDR     R0, =__main
-                 BX      R0
-                 ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler     PROC
-                EXPORT  NMI_Handler                    [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler              [WEAK]
-                B       .
-                ENDP
-SVC_Handler     PROC
-                EXPORT  SVC_Handler                    [WEAK]
-                B       .
-                ENDP
-PendSV_Handler  PROC
-                EXPORT  PendSV_Handler                 [WEAK]
-                B       .
-                ENDP
-SysTick_Handler PROC
-                EXPORT  SysTick_Handler                [WEAK]
-                B       .
-                ENDP
-
-Default_Handler PROC
-
-                EXPORT  WWDG_IRQHandler                [WEAK]
-                EXPORT  PVD_VDDIO2_IRQHandler          [WEAK]
-                EXPORT  RTC_IRQHandler                 [WEAK]
-                EXPORT  FLASH_IRQHandler               [WEAK]
-                EXPORT  RCC_CRS_IRQHandler             [WEAK]
-                EXPORT  EXTI0_1_IRQHandler             [WEAK]
-                EXPORT  EXTI2_3_IRQHandler             [WEAK]
-                EXPORT  EXTI4_15_IRQHandler            [WEAK]
-                EXPORT  TSC_IRQHandler                  [WEAK]
-                EXPORT  DMA1_Channel1_IRQHandler       [WEAK]
-                EXPORT  DMA1_Channel2_3_IRQHandler     [WEAK]
-                EXPORT  DMA1_Channel4_5_6_7_IRQHandler [WEAK]
-                EXPORT  ADC1_COMP_IRQHandler           [WEAK]
-                EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
-                EXPORT  TIM1_CC_IRQHandler             [WEAK]
-                EXPORT  TIM2_IRQHandler                [WEAK]
-                EXPORT  TIM3_IRQHandler                [WEAK]
-                EXPORT  TIM6_DAC_IRQHandler            [WEAK]
-                EXPORT  TIM7_IRQHandler                [WEAK]
-                EXPORT  TIM14_IRQHandler               [WEAK]
-                EXPORT  TIM15_IRQHandler               [WEAK]
-                EXPORT  TIM16_IRQHandler               [WEAK]
-                EXPORT  TIM17_IRQHandler               [WEAK]
-                EXPORT  I2C1_IRQHandler                [WEAK]
-                EXPORT  I2C2_IRQHandler                [WEAK]
-                EXPORT  SPI1_IRQHandler                [WEAK]
-                EXPORT  SPI2_IRQHandler                [WEAK]
-                EXPORT  USART1_IRQHandler              [WEAK]
-                EXPORT  USART2_IRQHandler              [WEAK]
-                EXPORT  USART3_4_IRQHandler            [WEAK]
-                EXPORT  CEC_CAN_IRQHandler             [WEAK]
-                EXPORT  USB_IRQHandler                 [WEAK]
-
-
-WWDG_IRQHandler
-PVD_VDDIO2_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCC_CRS_IRQHandler
-EXTI0_1_IRQHandler
-EXTI2_3_IRQHandler
-EXTI4_15_IRQHandler
-TSC_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_3_IRQHandler
-DMA1_Channel4_5_6_7_IRQHandler
-ADC1_COMP_IRQHandler 
-TIM1_BRK_UP_TRG_COM_IRQHandler
-TIM1_CC_IRQHandler
-TIM2_IRQHandler
-TIM3_IRQHandler
-TIM6_DAC_IRQHandler
-TIM7_IRQHandler
-TIM14_IRQHandler
-TIM15_IRQHandler
-TIM16_IRQHandler
-TIM17_IRQHandler
-I2C1_IRQHandler
-I2C2_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-USART3_4_IRQHandler
-CEC_CAN_IRQHandler
-USB_IRQHandler   
-
-                B       .
-
-                ENDP
-
-                ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
-                 IF      :DEF:__MICROLIB
-                
-                 EXPORT  __initial_sp
-                 EXPORT  __heap_base
-                 EXPORT  __heap_limit
-                
-                 ELSE
-                
-                 IMPORT  __use_two_region_memory
-                 EXPORT  __user_initial_stackheap
-                 
-__user_initial_stackheap
-
-                 LDR     R0, =  Heap_Mem
-                 LDR     R1, =(Stack_Mem + Stack_Size)
-                 LDR     R2, = (Heap_Mem +  Heap_Size)
-                 LDR     R3, = Stack_Mem
-                 BX      LR
-
-                 ALIGN
-
-                 ENDIF
-
-                 END
-
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f0xx.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f0xx.s
deleted file mode 100644
index 7e2bb2b..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f0xx.s	
+++ /dev/null
@@ -1,257 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f0xx.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F051 devices vector table for MDK-ARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == Reset_Handler
-;*                      - Set the vector table entries with the exceptions ISR address
-;*                      - Configure the system clock
-;*                      - Branches to __main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the CortexM0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>   
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; <h> Stack Configuration
-;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Stack_Size      EQU     0x00000400
-
-                AREA    STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem       SPACE   Stack_Size
-__initial_sp
-
-
-; <h> Heap Configuration
-;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Heap_Size       EQU     0x00000200
-
-                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem        SPACE   Heap_Size
-__heap_limit
-
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                   ; Top of Stack
-                DCD     Reset_Handler                  ; Reset Handler
-                DCD     NMI_Handler                    ; NMI Handler
-                DCD     HardFault_Handler              ; Hard Fault Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     SVC_Handler                    ; SVCall Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     PendSV_Handler                 ; PendSV Handler
-                DCD     SysTick_Handler                ; SysTick Handler
-
-                ; External Interrupts
-                DCD     WWDG_IRQHandler                ; Window Watchdog
-                DCD     PVD_IRQHandler                 ; PVD through EXTI Line detect
-                DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-                DCD     FLASH_IRQHandler               ; FLASH
-                DCD     RCC_IRQHandler                 ; RCC
-                DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-                DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-                DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-                DCD     TS_IRQHandler                  ; TS
-                DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-                DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-                DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-                DCD     ADC1_COMP_IRQHandler           ; ADC1, COMP1 and COMP2 
-                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-                DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-                DCD     TIM2_IRQHandler                ; TIM2
-                DCD     TIM3_IRQHandler                ; TIM3
-                DCD     TIM6_DAC_IRQHandler            ; TIM6 and DAC
-                DCD     0                              ; Reserved
-                DCD     TIM14_IRQHandler               ; TIM14
-                DCD     TIM15_IRQHandler               ; TIM15
-                DCD     TIM16_IRQHandler               ; TIM16
-                DCD     TIM17_IRQHandler               ; TIM17
-                DCD     I2C1_IRQHandler                ; I2C1
-                DCD     I2C2_IRQHandler                ; I2C2
-                DCD     SPI1_IRQHandler                ; SPI1
-                DCD     SPI2_IRQHandler                ; SPI2
-                DCD     USART1_IRQHandler              ; USART1
-                DCD     USART2_IRQHandler              ; USART2
-                DCD     0                              ; Reserved
-                DCD     CEC_IRQHandler                 ; CEC
-                DCD     0                              ; Reserved
-                
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset handler routine
-Reset_Handler    PROC
-                 EXPORT  Reset_Handler                 [WEAK]
-        IMPORT  __main
-        IMPORT  SystemInit  
-                 LDR     R0, =SystemInit
-                 BLX     R0
-                 LDR     R0, =__main
-                 BX      R0
-                 ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler     PROC
-                EXPORT  NMI_Handler                    [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler              [WEAK]
-                B       .
-                ENDP
-SVC_Handler     PROC
-                EXPORT  SVC_Handler                    [WEAK]
-                B       .
-                ENDP
-PendSV_Handler  PROC
-                EXPORT  PendSV_Handler                 [WEAK]
-                B       .
-                ENDP
-SysTick_Handler PROC
-                EXPORT  SysTick_Handler                [WEAK]
-                B       .
-                ENDP
-
-Default_Handler PROC
-
-                EXPORT  WWDG_IRQHandler                [WEAK]
-                EXPORT  PVD_IRQHandler                 [WEAK]
-                EXPORT  RTC_IRQHandler                 [WEAK]
-                EXPORT  FLASH_IRQHandler               [WEAK]
-                EXPORT  RCC_IRQHandler                 [WEAK]
-                EXPORT  EXTI0_1_IRQHandler             [WEAK]
-                EXPORT  EXTI2_3_IRQHandler             [WEAK]
-                EXPORT  EXTI4_15_IRQHandler            [WEAK]
-                EXPORT  TS_IRQHandler                  [WEAK]
-                EXPORT  DMA1_Channel1_IRQHandler       [WEAK]
-                EXPORT  DMA1_Channel2_3_IRQHandler     [WEAK]
-                EXPORT  DMA1_Channel4_5_IRQHandler     [WEAK]
-                EXPORT  ADC1_COMP_IRQHandler           [WEAK]
-                EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
-                EXPORT  TIM1_CC_IRQHandler             [WEAK]
-                EXPORT  TIM2_IRQHandler                [WEAK]
-                EXPORT  TIM3_IRQHandler                [WEAK]
-                EXPORT  TIM6_DAC_IRQHandler            [WEAK]
-                EXPORT  TIM14_IRQHandler               [WEAK]
-                EXPORT  TIM15_IRQHandler               [WEAK]
-                EXPORT  TIM16_IRQHandler               [WEAK]
-                EXPORT  TIM17_IRQHandler               [WEAK]
-                EXPORT  I2C1_IRQHandler                [WEAK]
-                EXPORT  I2C2_IRQHandler                [WEAK]
-                EXPORT  SPI1_IRQHandler                [WEAK]
-                EXPORT  SPI2_IRQHandler                [WEAK]
-                EXPORT  USART1_IRQHandler              [WEAK]
-                EXPORT  USART2_IRQHandler              [WEAK]
-                EXPORT  CEC_IRQHandler                 [WEAK]
-
-
-WWDG_IRQHandler
-PVD_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCC_IRQHandler
-EXTI0_1_IRQHandler
-EXTI2_3_IRQHandler
-EXTI4_15_IRQHandler
-TS_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_3_IRQHandler
-DMA1_Channel4_5_IRQHandler
-ADC1_COMP_IRQHandler 
-TIM1_BRK_UP_TRG_COM_IRQHandler
-TIM1_CC_IRQHandler
-TIM2_IRQHandler
-TIM3_IRQHandler
-TIM6_DAC_IRQHandler
-TIM14_IRQHandler
-TIM15_IRQHandler
-TIM16_IRQHandler
-TIM17_IRQHandler
-I2C1_IRQHandler
-I2C2_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-CEC_IRQHandler   
-
-                B       .
-
-                ENDP
-
-                ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
-                 IF      :DEF:__MICROLIB
-                
-                 EXPORT  __initial_sp
-                 EXPORT  __heap_base
-                 EXPORT  __heap_limit
-                
-                 ELSE
-                
-                 IMPORT  __use_two_region_memory
-                 EXPORT  __user_initial_stackheap
-                 
-__user_initial_stackheap
-
-                 LDR     R0, =  Heap_Mem
-                 LDR     R1, =(Stack_Mem + Stack_Size)
-                 LDR     R2, = (Heap_Mem +  Heap_Size)
-                 LDR     R3, = Stack_Mem
-                 BX      LR
-
-                 ALIGN
-
-                 ENDIF
-
-                 END
-
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f0xx_ld.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f0xx_ld.s
deleted file mode 100644
index 22a9807..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f0xx_ld.s	
+++ /dev/null
@@ -1,239 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f0xx_ld.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F0031 devices vector table for MDK-ARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == Reset_Handler
-;*                      - Set the vector table entries with the exceptions ISR address
-;*                      - Configure the system clock
-;*                      - Branches to __main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the CortexM0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>   
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; <h> Stack Configuration
-;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Stack_Size      EQU     0x00000400
-
-                AREA    STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem       SPACE   Stack_Size
-__initial_sp
-
-
-; <h> Heap Configuration
-;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Heap_Size       EQU     0x00000200
-
-                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem        SPACE   Heap_Size
-__heap_limit
-
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp                   ; Top of Stack
-                DCD     Reset_Handler                  ; Reset Handler
-                DCD     NMI_Handler                    ; NMI Handler
-                DCD     HardFault_Handler              ; Hard Fault Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     SVC_Handler                    ; SVCall Handler
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     PendSV_Handler                 ; PendSV Handler
-                DCD     SysTick_Handler                ; SysTick Handler
-
-                ; External Interrupts
-                DCD     WWDG_IRQHandler                ; Window Watchdog
-                DCD     PVD_IRQHandler                 ; PVD through EXTI Line detect
-                DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-                DCD     FLASH_IRQHandler               ; FLASH
-                DCD     RCC_IRQHandler                 ; RCC
-                DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-                DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-                DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-                DCD     0                              ; Reserved
-                DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-                DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-                DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-                DCD     ADC1_IRQHandler                ; ADC1 
-                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-                DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-                DCD     TIM2_IRQHandler                ; TIM2
-                DCD     TIM3_IRQHandler                ; TIM3
-                DCD     0                              ; Reserved
-                DCD     0                              ; Reserved
-                DCD     TIM14_IRQHandler               ; TIM14
-                DCD     0                              ; Reserved
-                DCD     TIM16_IRQHandler               ; TIM16
-                DCD     TIM17_IRQHandler               ; TIM17
-                DCD     I2C1_IRQHandler                ; I2C1
-                DCD     0                              ; Reserved
-                DCD     SPI1_IRQHandler                ; SPI1
-                DCD     0                              ; Reserved
-                DCD     USART1_IRQHandler              ; USART1
-                
-__Vectors_End
-
-__Vectors_Size  EQU  __Vectors_End - __Vectors
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset handler routine
-Reset_Handler    PROC
-                 EXPORT  Reset_Handler                 [WEAK]
-        IMPORT  __main
-        IMPORT  SystemInit  
-                 LDR     R0, =SystemInit
-                 BLX     R0
-                 LDR     R0, =__main
-                 BX      R0
-                 ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler     PROC
-                EXPORT  NMI_Handler                    [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler              [WEAK]
-                B       .
-                ENDP
-SVC_Handler     PROC
-                EXPORT  SVC_Handler                    [WEAK]
-                B       .
-                ENDP
-PendSV_Handler  PROC
-                EXPORT  PendSV_Handler                 [WEAK]
-                B       .
-                ENDP
-SysTick_Handler PROC
-                EXPORT  SysTick_Handler                [WEAK]
-                B       .
-                ENDP
-
-Default_Handler PROC
-
-                EXPORT  WWDG_IRQHandler                [WEAK]
-                EXPORT  PVD_IRQHandler                 [WEAK]
-                EXPORT  RTC_IRQHandler                 [WEAK]
-                EXPORT  FLASH_IRQHandler               [WEAK]
-                EXPORT  RCC_IRQHandler                 [WEAK]
-                EXPORT  EXTI0_1_IRQHandler             [WEAK]
-                EXPORT  EXTI2_3_IRQHandler             [WEAK]
-                EXPORT  EXTI4_15_IRQHandler            [WEAK]
-                EXPORT  DMA1_Channel1_IRQHandler       [WEAK]
-                EXPORT  DMA1_Channel2_3_IRQHandler     [WEAK]
-                EXPORT  DMA1_Channel4_5_IRQHandler     [WEAK]
-                EXPORT  ADC1_IRQHandler                [WEAK]
-                EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
-                EXPORT  TIM1_CC_IRQHandler             [WEAK]
-                EXPORT  TIM2_IRQHandler                [WEAK]
-                EXPORT  TIM3_IRQHandler                [WEAK]
-                EXPORT  TIM14_IRQHandler               [WEAK]
-                EXPORT  TIM16_IRQHandler               [WEAK]
-                EXPORT  TIM17_IRQHandler               [WEAK]
-                EXPORT  I2C1_IRQHandler                [WEAK]
-                EXPORT  SPI1_IRQHandler                [WEAK]
-                EXPORT  USART1_IRQHandler              [WEAK]
-
-
-WWDG_IRQHandler
-PVD_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCC_IRQHandler
-EXTI0_1_IRQHandler
-EXTI2_3_IRQHandler
-EXTI4_15_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_3_IRQHandler
-DMA1_Channel4_5_IRQHandler
-ADC1_IRQHandler 
-TIM1_BRK_UP_TRG_COM_IRQHandler
-TIM1_CC_IRQHandler
-TIM2_IRQHandler
-TIM3_IRQHandler
-TIM14_IRQHandler
-TIM16_IRQHandler
-TIM17_IRQHandler
-I2C1_IRQHandler
-SPI1_IRQHandler
-USART1_IRQHandler
-
-                B       .
-
-                ENDP
-
-                ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
-                 IF      :DEF:__MICROLIB
-                
-                 EXPORT  __initial_sp
-                 EXPORT  __heap_base
-                 EXPORT  __heap_limit
-                
-                 ELSE
-                
-                 IMPORT  __use_two_region_memory
-                 EXPORT  __user_initial_stackheap
-                 
-__user_initial_stackheap
-
-                 LDR     R0, =  Heap_Mem
-                 LDR     R1, =(Stack_Mem + Stack_Size)
-                 LDR     R2, = (Heap_Mem +  Heap_Size)
-                 LDR     R3, = Stack_Mem
-                 BX      LR
-
-                 ALIGN
-
-                 ENDIF
-
-                 END
-
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f030.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f030.s
deleted file mode 100644
index f157834..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f030.s	
+++ /dev/null
@@ -1,294 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f0xx.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F030 Devices vector table for RIDE7 toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock 
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-.equ  BootRAM, 0xF108F85F
-/**
- * @brief  This is the code that gets called when the processor first
- *          starts execution following a reset event. Only the absolutely
- *          necessary set is performed, after which the application
- *          supplied main() routine is called.
- * @param  None
- * @retval : None
-*/
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-    
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word 0  
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word 0  
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word 0  
-  .word TIM3_IRQHandler
-  .word 0   
-  .word 0  
-  .word TIM14_IRQHandler
-  .word TIM15_IRQHandler
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word I2C2_IRQHandler
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word 0
-  .word 0
-  .word 0
-  .word BootRAM          /* @0x108. This is for boot in RAM mode for 
-                            STM32F0xx devices. */
- 
-
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
- 
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_IRQHandler
-  .thumb_set ADC1_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-    
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-    
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM15_IRQHandler
-  .thumb_set TIM15_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak I2C2_IRQHandler
-  .thumb_set I2C2_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-  
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f031.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f031.s
deleted file mode 100644
index 7cca763..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f031.s	
+++ /dev/null
@@ -1,287 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f0xx.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F031 Devices vector table for RIDE7 toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock 
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-.equ  BootRAM, 0xF108F85F
-/**
- * @brief  This is the code that gets called when the processor first
- *          starts execution following a reset event. Only the absolutely
- *          necessary set is performed, after which the application
- *          supplied main() routine is called.
- * @param  None
- * @retval : None
-*/
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-    
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word PVD_IRQHandler  
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word 0  
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler  
-  .word TIM3_IRQHandler
-  .word 0   
-  .word 0  
-  .word TIM14_IRQHandler
-  .word 0 
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word 0  
-  .word SPI1_IRQHandler
-  .word 0 
-  .word USART1_IRQHandler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word BootRAM          /* @0x108. This is for boot in RAM mode for 
-                            STM32F0xx devices. */
-  
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-  
-  .weak PVD_IRQHandler
-  .thumb_set PVD_IRQHandler,Default_Handler
- 
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_IRQHandler
-  .thumb_set ADC1_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-    
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-    
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-    
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-   
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-    
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-    
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f042.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f042.s
deleted file mode 100644
index 598290c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f042.s	
+++ /dev/null
@@ -1,302 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f042.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F042 Devices vector table for Atollic toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-.equ  BootRAM, 0xF108F85F
-/**
- * @brief  This is the code that gets called when the processor first
- *          starts execution following a reset event. Only the absolutely
- *          necessary set is performed, after which the application
- *          supplied main() routine is called.
- * @param  None
- * @retval : None
-*/
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-/* Call static constructors */
-    bl __libc_init_array
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word PVD_VDDIO2_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_CRS_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word TSC_IRQHandler
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word 0  
-  .word 0  
-  .word TIM14_IRQHandler
-  .word 0   
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word 0  
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word 0
-  .word CEC_CAN_IRQHandler
-  .word USB_IRQHandler
-  .word BootRAM          /* @0x108. This is for boot in RAM mode for 
-                            STM32F0xx devices. */
-  
-
-
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_VDDIO2_IRQHandler
-  .thumb_set PVD_VDDIO2_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_CRS_IRQHandler
-  .thumb_set RCC_CRS_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak TSC_IRQHandler
-  .thumb_set TSC_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_IRQHandler
-  .thumb_set ADC1_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-    
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-    
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-  
-  .weak CEC_CAN_IRQHandler
-  .thumb_set CEC_CAN_IRQHandler,Default_Handler
-
-
-  .weak USB_IRQHandler
-  .thumb_set USB_IRQHandler,Default_Handler
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f051.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f051.s
deleted file mode 100644
index b0bb312..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f051.s	
+++ /dev/null
@@ -1,307 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f0xx.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F051 Devices vector table for RIDE7 toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock 
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-.equ  BootRAM, 0xF108F85F
-/**
- * @brief  This is the code that gets called when the processor first
- *          starts execution following a reset event. Only the absolutely
- *          necessary set is performed, after which the application
- *          supplied main() routine is called.
- * @param  None
- * @retval : None
-*/
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-    
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word PVD_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word TS_IRQHandler
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_COMP_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word TIM6_DAC_IRQHandler
-  .word 0  
-  .word TIM14_IRQHandler
-  .word TIM15_IRQHandler
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word I2C2_IRQHandler
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word 0
-  .word CEC_IRQHandler
-  .word 0
-  .word BootRAM          /* @0x108. This is for boot in RAM mode for 
-                            STM32F0xx devices. */
- 
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_IRQHandler
-  .thumb_set PVD_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak TS_IRQHandler
-  .thumb_set TS_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_COMP_IRQHandler
-  .thumb_set ADC1_COMP_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-  
-  .weak TIM6_DAC_IRQHandler
-  .thumb_set TIM6_DAC_IRQHandler,Default_Handler
-  
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM15_IRQHandler
-  .thumb_set TIM15_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak I2C2_IRQHandler
-  .thumb_set I2C2_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-  
-  .weak CEC_IRQHandler
-  .thumb_set CEC_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f072.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f072.s
deleted file mode 100644
index 21bb90c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f072.s	
+++ /dev/null
@@ -1,316 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f0xx.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F072 Devices vector table for RIDE7 toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock 
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-.equ  BootRAM, 0xF108F85F
-/**
- * @brief  This is the code that gets called when the processor first
- *          starts execution following a reset event. Only the absolutely
- *          necessary set is performed, after which the application
- *          supplied main() routine is called.
- * @param  None
- * @retval : None
-*/
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-    
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-
-
-  .word WWDG_IRQHandler
-  .word PVD_VDDIO2_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_CRS_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word TSC_IRQHandler
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_6_7_IRQHandler
-  .word ADC1_COMP_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word TIM6_DAC_IRQHandler
-  .word TIM7_IRQHandler    
-  .word TIM14_IRQHandler
-  .word TIM15_IRQHandler
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word I2C2_IRQHandler
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word USART3_4_IRQHandler 
-  .word CEC_CAN_IRQHandler
-  .word USB_IRQHandler
-  .word BootRAM          /* @0x108. This is for boot in RAM mode for 
-                            STM32F0xx devices. */  
-  
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_VDDIO2_IRQHandler
-  .thumb_set PVD_VDDIO2_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_CRS_IRQHandler
-  .thumb_set RCC_CRS_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak TSC_IRQHandler
-  .thumb_set TSC_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_6_7_IRQHandler
-  .thumb_set DMA1_Channel4_5_6_7_IRQHandler,Default_Handler
-  
-  .weak ADC1_COMP_IRQHandler
-  .thumb_set ADC1_COMP_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-  
-  .weak TIM6_DAC_IRQHandler
-  .thumb_set TIM6_DAC_IRQHandler,Default_Handler
-  
-  .weak TIM7_IRQHandler
-  .thumb_set TIM7_IRQHandler,Default_Handler
-
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM15_IRQHandler
-  .thumb_set TIM15_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak I2C2_IRQHandler
-  .thumb_set I2C2_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-
-  .weak USART3_4_IRQHandler
-  .thumb_set USART3_4_IRQHandler,Default_Handler
-  
-  .weak CEC_CAN_IRQHandler
-  .thumb_set CEC_CAN_IRQHandler,Default_Handler
-
-  .weak USB_IRQHandler
-  .thumb_set USB_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f0xx.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f0xx.s
deleted file mode 100644
index 3ed8d9d..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f0xx.s	
+++ /dev/null
@@ -1,304 +0,0 @@
-/**
-  ******************************************************************************
-  * @file      startup_stm32f0xx.s
-  * @author    MCD Application Team
-  * @version   V1.3.1
-  * @date      17-January-2014
-  * @brief     STM32F0xx Devices vector table for RIDE7 toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR address
-  *                - Configure the system clock 
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M0 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m0
-  .fpu softvfp
-  .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-
-.equ  BootRAM, 0xF108F85F
-/**
- * @brief  This is the code that gets called when the processor first
- *          starts execution following a reset event. Only the absolutely
- *          necessary set is performed, after which the application
- *          supplied main() routine is called.
- * @param  None
- * @retval : None
-*/
-
-  .section .text.Reset_Handler
-  .weak Reset_Handler
-  .type Reset_Handler, %function
-Reset_Handler:
-  ldr   r0, =_estack
-  mov   sp, r0          /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
-  movs r1, #0
-  b LoopCopyDataInit
-
-CopyDataInit:
-  ldr r3, =_sidata
-  ldr r3, [r3, r1]
-  str r3, [r0, r1]
-  adds r1, r1, #4
-
-LoopCopyDataInit:
-  ldr r0, =_sdata
-  ldr r3, =_edata
-  adds r2, r0, r1
-  cmp r2, r3
-  bcc CopyDataInit
-  ldr r2, =_sbss
-  b LoopFillZerobss
-/* Zero fill the bss segment. */
-FillZerobss:
-  movs r3, #0
-  str  r3, [r2]
-  adds r2, r2, #4
-
-
-LoopFillZerobss:
-  ldr r3, = _ebss
-  cmp r2, r3
-  bcc FillZerobss
-
-/* Call the clock system intitialization function.*/
-    bl  SystemInit
-    
-/* Call the application's entry point.*/
-  bl main
-  
-LoopForever:
-    b LoopForever
-
-
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief  This is the code that gets called when the processor receives an
- *         unexpected interrupt.  This simply enters an infinite loop, preserving
- *         the system state for examination by a debugger.
- *
- * @param  None
- * @retval : None
-*/
-    .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
-  b Infinite_Loop
-  .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M0.  Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-******************************************************************************/
-   .section .isr_vector,"a",%progbits
-  .type g_pfnVectors, %object
-  .size g_pfnVectors, .-g_pfnVectors
-
-
-g_pfnVectors:
-  .word _estack
-  .word Reset_Handler
-  .word NMI_Handler
-  .word HardFault_Handler
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word 0
-  .word SVC_Handler
-  .word 0
-  .word 0
-  .word PendSV_Handler
-  .word SysTick_Handler
-  .word WWDG_IRQHandler
-  .word PVD_IRQHandler
-  .word RTC_IRQHandler
-  .word FLASH_IRQHandler
-  .word RCC_IRQHandler
-  .word EXTI0_1_IRQHandler
-  .word EXTI2_3_IRQHandler
-  .word EXTI4_15_IRQHandler
-  .word TS_IRQHandler
-  .word DMA1_Channel1_IRQHandler
-  .word DMA1_Channel2_3_IRQHandler
-  .word DMA1_Channel4_5_IRQHandler
-  .word ADC1_COMP_IRQHandler 
-  .word TIM1_BRK_UP_TRG_COM_IRQHandler
-  .word TIM1_CC_IRQHandler
-  .word TIM2_IRQHandler
-  .word TIM3_IRQHandler
-  .word TIM6_DAC_IRQHandler
-  .word 0  
-  .word TIM14_IRQHandler
-  .word TIM15_IRQHandler
-  .word TIM16_IRQHandler
-  .word TIM17_IRQHandler
-  .word I2C1_IRQHandler
-  .word I2C2_IRQHandler
-  .word SPI1_IRQHandler
-  .word SPI2_IRQHandler
-  .word USART1_IRQHandler
-  .word USART2_IRQHandler
-  .word 0
-  .word CEC_IRQHandler
-  .word 0
-  .word BootRAM          /* @0x108. This is for boot in RAM mode for 
-                            STM32F0xx devices. */
-
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
-
-  .weak NMI_Handler
-  .thumb_set NMI_Handler,Default_Handler
-
-  .weak HardFault_Handler
-  .thumb_set HardFault_Handler,Default_Handler
-
-  .weak SVC_Handler
-  .thumb_set SVC_Handler,Default_Handler
-
-  .weak PendSV_Handler
-  .thumb_set PendSV_Handler,Default_Handler
-
-  .weak SysTick_Handler
-  .thumb_set SysTick_Handler,Default_Handler
-
-  .weak WWDG_IRQHandler
-  .thumb_set WWDG_IRQHandler,Default_Handler
-
-  .weak PVD_IRQHandler
-  .thumb_set PVD_IRQHandler,Default_Handler
-  
-  .weak RTC_IRQHandler
-  .thumb_set RTC_IRQHandler,Default_Handler
-  
-  .weak FLASH_IRQHandler
-  .thumb_set FLASH_IRQHandler,Default_Handler
-  
-  .weak RCC_IRQHandler
-  .thumb_set RCC_IRQHandler,Default_Handler
-  
-  .weak EXTI0_1_IRQHandler
-  .thumb_set EXTI0_1_IRQHandler,Default_Handler
-  
-  .weak EXTI2_3_IRQHandler
-  .thumb_set EXTI2_3_IRQHandler,Default_Handler
-  
-  .weak EXTI4_15_IRQHandler
-  .thumb_set EXTI4_15_IRQHandler,Default_Handler
-  
-  .weak TS_IRQHandler
-  .thumb_set TS_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel1_IRQHandler
-  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel2_3_IRQHandler
-  .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
-  
-  .weak DMA1_Channel4_5_IRQHandler
-  .thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
-  
-  .weak ADC1_COMP_IRQHandler
-  .thumb_set ADC1_COMP_IRQHandler,Default_Handler
-   
-  .weak TIM1_BRK_UP_TRG_COM_IRQHandler
-  .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
-  
-  .weak TIM1_CC_IRQHandler
-  .thumb_set TIM1_CC_IRQHandler,Default_Handler
-  
-  .weak TIM2_IRQHandler
-  .thumb_set TIM2_IRQHandler,Default_Handler
-  
-  .weak TIM3_IRQHandler
-  .thumb_set TIM3_IRQHandler,Default_Handler
-  
-  .weak TIM6_DAC_IRQHandler
-  .thumb_set TIM6_DAC_IRQHandler,Default_Handler
-  
-  .weak TIM14_IRQHandler
-  .thumb_set TIM14_IRQHandler,Default_Handler
-  
-  .weak TIM15_IRQHandler
-  .thumb_set TIM15_IRQHandler,Default_Handler
-  
-  .weak TIM16_IRQHandler
-  .thumb_set TIM16_IRQHandler,Default_Handler
-  
-  .weak TIM17_IRQHandler
-  .thumb_set TIM17_IRQHandler,Default_Handler
-  
-  .weak I2C1_IRQHandler
-  .thumb_set I2C1_IRQHandler,Default_Handler
-  
-  .weak I2C2_IRQHandler
-  .thumb_set I2C2_IRQHandler,Default_Handler
-  
-  .weak SPI1_IRQHandler
-  .thumb_set SPI1_IRQHandler,Default_Handler
-  
-  .weak SPI2_IRQHandler
-  .thumb_set SPI2_IRQHandler,Default_Handler
-  
-  .weak USART1_IRQHandler
-  .thumb_set USART1_IRQHandler,Default_Handler
-  
-  .weak USART2_IRQHandler
-  .thumb_set USART2_IRQHandler,Default_Handler
-  
-  .weak CEC_IRQHandler
-  .thumb_set CEC_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030.s
deleted file mode 100644
index f2e5603..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030.s	
+++ /dev/null
@@ -1,300 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f030.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F030 devices vector table for EWARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == iar_program_start,
-;*                      - Set the vector table entries with the exceptions ISR 
-;*                        address
-;*                      - Configure the system clock
-;*                      - Branches to main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the Cortex-M0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
-        MODULE  ?cstartup
-
-        ;; Forward declaration of sections.
-        SECTION CSTACK:DATA:NOROOT(3)
-
-        SECTION .intvec:CODE:NOROOT(2)
-
-        EXTERN  __iar_program_start
-        EXTERN  SystemInit
-        PUBLIC  __vector_table
-
-        DATA
-__vector_table
-        DCD     sfe(CSTACK)
-        DCD     Reset_Handler                  ; Reset Handler
-
-        DCD     NMI_Handler                    ; NMI Handler
-        DCD     HardFault_Handler              ; Hard Fault Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     SVC_Handler                    ; SVCall Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     PendSV_Handler                 ; PendSV Handler
-        DCD     SysTick_Handler                ; SysTick Handler
-
-        ; External Interrupts
-        DCD     WWDG_IRQHandler                ; Window Watchdog
-        DCD     0                              ; Reserved
-        DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-        DCD     FLASH_IRQHandler               ; FLASH
-        DCD     RCC_IRQHandler                 ; RCC
-        DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-        DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-        DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-        DCD     0                              ; Reserved
-        DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-        DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-        DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-        DCD     ADC1_IRQHandler                ; ADC1 
-        DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-        DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-        DCD     0                              ; Reserved
-        DCD     TIM3_IRQHandler                ; TIM3
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     TIM14_IRQHandler               ; TIM14
-        DCD     TIM15_IRQHandler               ; TIM15
-        DCD     TIM16_IRQHandler               ; TIM16
-        DCD     TIM17_IRQHandler               ; TIM17
-        DCD     I2C1_IRQHandler                ; I2C1
-        DCD     I2C2_IRQHandler                ; I2C2
-        DCD     SPI1_IRQHandler                ; SPI1
-        DCD     SPI2_IRQHandler                ; SPI2
-        DCD     USART1_IRQHandler              ; USART1
-        DCD     USART2_IRQHandler              ; USART2
-        
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
-        THUMB
-
-        PUBWEAK Reset_Handler
-        SECTION .text:CODE:REORDER(2)
-Reset_Handler
-        LDR     R0, =SystemInit
-        BLX     R0
-        LDR     R0, =__iar_program_start
-        BX      R0
-        
-        PUBWEAK NMI_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-NMI_Handler
-        B NMI_Handler
-        
-        
-        PUBWEAK HardFault_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-HardFault_Handler
-        B HardFault_Handler
-       
-        
-        PUBWEAK SVC_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SVC_Handler
-        B SVC_Handler
-       
-        
-        PUBWEAK PendSV_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PendSV_Handler
-        B PendSV_Handler
-        
-        
-        PUBWEAK SysTick_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SysTick_Handler
-        B SysTick_Handler
-        
-        
-        PUBWEAK WWDG_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-WWDG_IRQHandler
-        B WWDG_IRQHandler
-        
-                
-        PUBWEAK RTC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RTC_IRQHandler
-        B RTC_IRQHandler
-        
-                
-        PUBWEAK FLASH_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-FLASH_IRQHandler
-        B FLASH_IRQHandler
-        
-                
-        PUBWEAK RCC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RCC_IRQHandler
-        B RCC_IRQHandler
-        
-                
-        PUBWEAK EXTI0_1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI0_1_IRQHandler
-        B EXTI0_1_IRQHandler
-        
-                
-        PUBWEAK EXTI2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI2_3_IRQHandler
-        B EXTI2_3_IRQHandler
-        
-                
-        PUBWEAK EXTI4_15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI4_15_IRQHandler
-        B EXTI4_15_IRQHandler                      
-        
-                
-        PUBWEAK DMA1_Channel1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel1_IRQHandler
-        B DMA1_Channel1_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel2_3_IRQHandler
-        B DMA1_Channel2_3_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel4_5_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel4_5_IRQHandler
-        B DMA1_Channel4_5_IRQHandler
-        
-                
-        PUBWEAK ADC1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-ADC1_IRQHandler
-        B ADC1_IRQHandler
-        
-                 
-        PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_BRK_UP_TRG_COM_IRQHandler
-        B TIM1_BRK_UP_TRG_COM_IRQHandler
-        
-                
-        PUBWEAK TIM1_CC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_CC_IRQHandler
-        B TIM1_CC_IRQHandler
-        
-                
-        PUBWEAK TIM3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM3_IRQHandler
-        B TIM3_IRQHandler                        
-        
-                
-        PUBWEAK TIM14_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM14_IRQHandler
-        B TIM14_IRQHandler
-        
-                
-        PUBWEAK TIM15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM15_IRQHandler
-        B TIM15_IRQHandler
-        
-
-        PUBWEAK TIM16_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM16_IRQHandler
-        B TIM16_IRQHandler
-        
-                
-        PUBWEAK TIM17_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM17_IRQHandler
-        B TIM17_IRQHandler
-        
-                
-        PUBWEAK I2C1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_IRQHandler
-        B I2C1_IRQHandler
-        
-                
-        PUBWEAK I2C2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C2_IRQHandler
-        B I2C2_IRQHandler
-
-
-        PUBWEAK SPI1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI1_IRQHandler
-        B SPI1_IRQHandler
-        
-
-        PUBWEAK SPI2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI2_IRQHandler
-        B SPI2_IRQHandler
-        
-                
-        PUBWEAK USART1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART1_IRQHandler
-        B USART1_IRQHandler
-
-
-        PUBWEAK USART2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART2_IRQHandler
-        B USART2_IRQHandler
-
-        END
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f031.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f031.s
deleted file mode 100644
index a8718ca..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f031.s	
+++ /dev/null
@@ -1,288 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f031.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F031 devices vector table for EWARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == iar_program_start,
-;*                      - Set the vector table entries with the exceptions ISR 
-;*                        address
-;*                      - Configure the system clock
-;*                      - Branches to main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the Cortex-M0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
-        MODULE  ?cstartup
-
-        ;; Forward declaration of sections.
-        SECTION CSTACK:DATA:NOROOT(3)
-
-        SECTION .intvec:CODE:NOROOT(2)
-
-        EXTERN  __iar_program_start
-        EXTERN  SystemInit
-        PUBLIC  __vector_table
-
-        DATA
-__vector_table
-        DCD     sfe(CSTACK)
-        DCD     Reset_Handler                  ; Reset Handler
-
-        DCD     NMI_Handler                    ; NMI Handler
-        DCD     HardFault_Handler              ; Hard Fault Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     SVC_Handler                    ; SVCall Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     PendSV_Handler                 ; PendSV Handler
-        DCD     SysTick_Handler                ; SysTick Handler
-
-        ; External Interrupts
-        DCD     WWDG_IRQHandler                ; Window Watchdog
-        DCD     PVD_IRQHandler                 ; PVD through EXTI Line detect
-        DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-        DCD     FLASH_IRQHandler               ; FLASH
-        DCD     RCC_IRQHandler                 ; RCC
-        DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-        DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-        DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-        DCD     0                              ; Reserved
-        DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-        DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-        DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-        DCD     ADC1_IRQHandler                ; ADC1 
-        DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-        DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-        DCD     TIM2_IRQHandler                ; TIM2
-        DCD     TIM3_IRQHandler                ; TIM3
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     TIM14_IRQHandler               ; TIM14
-        DCD     0                              ; Reserved
-        DCD     TIM16_IRQHandler               ; TIM16
-        DCD     TIM17_IRQHandler               ; TIM17
-        DCD     I2C1_IRQHandler                ; I2C1
-        DCD     0                              ; Reserved
-        DCD     SPI1_IRQHandler                ; SPI1
-        DCD     0                              ; Reserved
-        DCD     USART1_IRQHandler              ; USART1
-        
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
-        THUMB
-
-        PUBWEAK Reset_Handler
-        SECTION .text:CODE:REORDER(2)
-Reset_Handler
-        LDR     R0, =SystemInit
-        BLX     R0
-        LDR     R0, =__iar_program_start
-        BX      R0
-        
-        PUBWEAK NMI_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-NMI_Handler
-        B NMI_Handler
-        
-        
-        PUBWEAK HardFault_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-HardFault_Handler
-        B HardFault_Handler
-       
-        
-        PUBWEAK SVC_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SVC_Handler
-        B SVC_Handler
-       
-        
-        PUBWEAK PendSV_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PendSV_Handler
-        B PendSV_Handler
-        
-        
-        PUBWEAK SysTick_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SysTick_Handler
-        B SysTick_Handler
-        
-        
-        PUBWEAK WWDG_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-WWDG_IRQHandler
-        B WWDG_IRQHandler
-        
-                
-        PUBWEAK PVD_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PVD_IRQHandler
-        B PVD_IRQHandler
-        
-                
-        PUBWEAK RTC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RTC_IRQHandler
-        B RTC_IRQHandler
-        
-                
-        PUBWEAK FLASH_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-FLASH_IRQHandler
-        B FLASH_IRQHandler
-        
-                
-        PUBWEAK RCC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RCC_IRQHandler
-        B RCC_IRQHandler
-        
-                
-        PUBWEAK EXTI0_1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI0_1_IRQHandler
-        B EXTI0_1_IRQHandler
-        
-                
-        PUBWEAK EXTI2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI2_3_IRQHandler
-        B EXTI2_3_IRQHandler
-        
-                
-        PUBWEAK EXTI4_15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI4_15_IRQHandler
-        B EXTI4_15_IRQHandler                      
-        
-                
-        PUBWEAK DMA1_Channel1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel1_IRQHandler
-        B DMA1_Channel1_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel2_3_IRQHandler
-        B DMA1_Channel2_3_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel4_5_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel4_5_IRQHandler
-        B DMA1_Channel4_5_IRQHandler
-        
-                
-        PUBWEAK ADC1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-ADC1_IRQHandler
-        B ADC1_IRQHandler
-        
-                 
-        PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_BRK_UP_TRG_COM_IRQHandler
-        B TIM1_BRK_UP_TRG_COM_IRQHandler
-        
-                
-        PUBWEAK TIM1_CC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_CC_IRQHandler
-        B TIM1_CC_IRQHandler
-        
-                
-        PUBWEAK TIM2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM2_IRQHandler
-        B TIM2_IRQHandler
-        
-                
-        PUBWEAK TIM3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM3_IRQHandler
-        B TIM3_IRQHandler                        
-        
-                
-        PUBWEAK TIM14_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM14_IRQHandler
-        B TIM14_IRQHandler
-        
-                
-        PUBWEAK TIM16_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM16_IRQHandler
-        B TIM16_IRQHandler
-        
-                
-        PUBWEAK TIM17_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM17_IRQHandler
-        B TIM17_IRQHandler
-        
-                
-        PUBWEAK I2C1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_IRQHandler
-        B I2C1_IRQHandler
-        
-                
-        PUBWEAK SPI1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI1_IRQHandler
-        B SPI1_IRQHandler
-        
-                
-        PUBWEAK USART1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART1_IRQHandler
-        B USART1_IRQHandler
-
-
-        END
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f042.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f042.s
deleted file mode 100644
index 1ebe046..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f042.s	
+++ /dev/null
@@ -1,318 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f042.s
-;* Author             : MCD Appl&ication Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F042 Devices Devices vector table for 
-;*                      EWARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == iar_program_start,
-;*                      - Set the vector table entries with the exceptions ISR 
-;*                        address.
-;*                      After Reset the Cortex-M0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
-        MODULE  ?cstartup
-
-        ;; Forward declaration of sections.
-        SECTION CSTACK:DATA:NOROOT(3)
-
-        SECTION .intvec:CODE:NOROOT(2)
-
-        EXTERN  __iar_program_start
-        EXTERN  SystemInit
-        PUBLIC  __vector_table
-
-        DATA
-__vector_table
-        DCD     sfe(CSTACK)
-        DCD     Reset_Handler                  ; Reset Handler
-
-        DCD     NMI_Handler                    ; NMI Handler
-        DCD     HardFault_Handler              ; Hard Fault Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     SVC_Handler                    ; SVCall Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     PendSV_Handler                 ; PendSV Handler
-        DCD     SysTick_Handler                ; SysTick Handler
-
-        ; External Interrupts
-        DCD     WWDG_IRQHandler                ; Window Watchdog
-        DCD     PVD_VDDIO2_IRQHandler          ; PVD and VDDIO2 through EXTI Line detect
-        DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-        DCD     FLASH_IRQHandler               ; FLASH
-        DCD     RCC_CRS_IRQHandler             ; RCC and CRS
-        DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-        DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-        DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-        DCD     TSC_IRQHandler                  ; TS
-        DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-        DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-        DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4, Channel 5, Channel 6 and Channel 7
-        DCD     ADC1_IRQHandler                ; ADC1 
-        DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-        DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-        DCD     TIM2_IRQHandler                ; TIM2
-        DCD     TIM3_IRQHandler                ; TIM3
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     TIM14_IRQHandler               ; TIM14
-        DCD     0                              ; Reserved
-        DCD     TIM16_IRQHandler               ; TIM16
-        DCD     TIM17_IRQHandler               ; TIM17
-        DCD     I2C1_IRQHandler                ; I2C1
-        DCD     0                              ; Reserved
-        DCD     SPI1_IRQHandler                ; SPI1
-        DCD     SPI2_IRQHandler                ; SPI2
-        DCD     USART1_IRQHandler              ; USART1
-        DCD     USART2_IRQHandler              ; USART2
-        DCD     0                              ; Reserved
-        DCD     CEC_CAN_IRQHandler             ; CEC and CAN
-        DCD     USB_IRQHandler                 ; USB
-        
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
-        THUMB
-
-        PUBWEAK Reset_Handler
-        SECTION .text:CODE:REORDER(2)
-Reset_Handler
-        LDR     R0, =SystemInit
-        BLX     R0
-        LDR     R0, =__iar_program_start
-        BX      R0
-        
-        PUBWEAK NMI_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-NMI_Handler
-        B NMI_Handler
-        
-        
-        PUBWEAK HardFault_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-HardFault_Handler
-        B HardFault_Handler
-       
-        
-        PUBWEAK SVC_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SVC_Handler
-        B SVC_Handler
-       
-        
-        PUBWEAK PendSV_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PendSV_Handler
-        B PendSV_Handler
-        
-        
-        PUBWEAK SysTick_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SysTick_Handler
-        B SysTick_Handler
-        
-        
-        PUBWEAK WWDG_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-WWDG_IRQHandler
-        B WWDG_IRQHandler
-        
-                
-        PUBWEAK PVD_VDDIO2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PVD_VDDIO2_IRQHandler
-        B PVD_VDDIO2_IRQHandler
-        
-                
-        PUBWEAK RTC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RTC_IRQHandler
-        B RTC_IRQHandler
-        
-                
-        PUBWEAK FLASH_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-FLASH_IRQHandler
-        B FLASH_IRQHandler
-        
-                
-        PUBWEAK RCC_CRS_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RCC_CRS_IRQHandler
-        B RCC_CRS_IRQHandler
-        
-                
-        PUBWEAK EXTI0_1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI0_1_IRQHandler
-        B EXTI0_1_IRQHandler
-        
-                
-        PUBWEAK EXTI2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI2_3_IRQHandler
-        B EXTI2_3_IRQHandler
-        
-                
-        PUBWEAK EXTI4_15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI4_15_IRQHandler
-        B EXTI4_15_IRQHandler
-        
-                
-        PUBWEAK TSC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TSC_IRQHandler
-        B TSC_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel1_IRQHandler
-        B DMA1_Channel1_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel2_3_IRQHandler
-        B DMA1_Channel2_3_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel4_5_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel4_5_IRQHandler
-        B DMA1_Channel4_5_IRQHandler
-        
-                
-        PUBWEAK ADC1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-ADC1_IRQHandler
-        B ADC1_IRQHandler
-        
-                 
-        PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_BRK_UP_TRG_COM_IRQHandler
-        B TIM1_BRK_UP_TRG_COM_IRQHandler
-        
-                
-        PUBWEAK TIM1_CC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_CC_IRQHandler
-        B TIM1_CC_IRQHandler
-        
-                
-        PUBWEAK TIM2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM2_IRQHandler
-        B TIM2_IRQHandler
-        
-                
-        PUBWEAK TIM3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM3_IRQHandler
-        B TIM3_IRQHandler
-        
-                
-        PUBWEAK TIM14_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM14_IRQHandler
-        B TIM14_IRQHandler
-        
-                
-        PUBWEAK TIM16_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM16_IRQHandler
-        B TIM16_IRQHandler
-        
-                
-        PUBWEAK TIM17_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM17_IRQHandler
-        B TIM17_IRQHandler
-        
-                
-        PUBWEAK I2C1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_IRQHandler
-        B I2C1_IRQHandler
-        
-
-        PUBWEAK SPI1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI1_IRQHandler
-        B SPI1_IRQHandler
-        
-                
-        PUBWEAK SPI2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI2_IRQHandler
-        B SPI2_IRQHandler
-        
-                
-        PUBWEAK USART1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART1_IRQHandler
-        B USART1_IRQHandler
-        
-                
-        PUBWEAK USART2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART2_IRQHandler
-        B USART2_IRQHandler
-        
-       
-        PUBWEAK CEC_CAN_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-CEC_CAN_IRQHandler
-        B CEC_CAN_IRQHandler
-
-        PUBWEAK USB_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USB_IRQHandler
-        B USB_IRQHandler
-        
-        END
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f051.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f051.s
deleted file mode 100644
index 29c1e7a..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f051.s	
+++ /dev/null
@@ -1,333 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f051.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F051 devices vector table for EWARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == iar_program_start,
-;*                      - Set the vector table entries with the exceptions ISR 
-;*                        address
-;*                      - Configure the system clock
-;*                      - Branches to main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the Cortex-M0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
-        MODULE  ?cstartup
-
-        ;; Forward declaration of sections.
-        SECTION CSTACK:DATA:NOROOT(3)
-
-        SECTION .intvec:CODE:NOROOT(2)
-
-        EXTERN  __iar_program_start
-        EXTERN  SystemInit
-        PUBLIC  __vector_table
-
-        DATA
-__vector_table
-        DCD     sfe(CSTACK)
-        DCD     Reset_Handler                  ; Reset Handler
-
-        DCD     NMI_Handler                    ; NMI Handler
-        DCD     HardFault_Handler              ; Hard Fault Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     SVC_Handler                    ; SVCall Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     PendSV_Handler                 ; PendSV Handler
-        DCD     SysTick_Handler                ; SysTick Handler
-
-        ; External Interrupts
-        DCD     WWDG_IRQHandler                ; Window Watchdog
-        DCD     PVD_IRQHandler                 ; PVD through EXTI Line detect
-        DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-        DCD     FLASH_IRQHandler               ; FLASH
-        DCD     RCC_IRQHandler                 ; RCC
-        DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-        DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-        DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-        DCD     TS_IRQHandler                  ; TS
-        DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-        DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-        DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-        DCD     ADC1_COMP_IRQHandler           ; ADC1, COMP1 and COMP2 
-        DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-        DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-        DCD     TIM2_IRQHandler                ; TIM2
-        DCD     TIM3_IRQHandler                ; TIM3
-        DCD     TIM6_DAC_IRQHandler            ; TIM6 and DAC
-        DCD     0                              ; Reserved
-        DCD     TIM14_IRQHandler               ; TIM14
-        DCD     TIM15_IRQHandler               ; TIM15
-        DCD     TIM16_IRQHandler               ; TIM16
-        DCD     TIM17_IRQHandler               ; TIM17
-        DCD     I2C1_IRQHandler                ; I2C1
-        DCD     I2C2_IRQHandler                ; I2C2
-        DCD     SPI1_IRQHandler                ; SPI1
-        DCD     SPI2_IRQHandler                ; SPI2
-        DCD     USART1_IRQHandler              ; USART1
-        DCD     USART2_IRQHandler              ; USART2
-        DCD     0                              ; Reserved
-        DCD     CEC_IRQHandler                 ; CEC
-        DCD     0                              ; Reserved
-        
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
-        THUMB
-
-        PUBWEAK Reset_Handler
-        SECTION .text:CODE:REORDER(2)
-Reset_Handler
-        LDR     R0, =SystemInit
-        BLX     R0
-        LDR     R0, =__iar_program_start
-        BX      R0
-        
-        PUBWEAK NMI_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-NMI_Handler
-        B NMI_Handler
-        
-        
-        PUBWEAK HardFault_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-HardFault_Handler
-        B HardFault_Handler
-       
-        
-        PUBWEAK SVC_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SVC_Handler
-        B SVC_Handler
-       
-        
-        PUBWEAK PendSV_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PendSV_Handler
-        B PendSV_Handler
-        
-        
-        PUBWEAK SysTick_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SysTick_Handler
-        B SysTick_Handler
-        
-        
-        PUBWEAK WWDG_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-WWDG_IRQHandler
-        B WWDG_IRQHandler
-        
-                
-        PUBWEAK PVD_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PVD_IRQHandler
-        B PVD_IRQHandler
-        
-                
-        PUBWEAK RTC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RTC_IRQHandler
-        B RTC_IRQHandler
-        
-                
-        PUBWEAK FLASH_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-FLASH_IRQHandler
-        B FLASH_IRQHandler
-        
-                
-        PUBWEAK RCC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RCC_IRQHandler
-        B RCC_IRQHandler
-        
-                
-        PUBWEAK EXTI0_1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI0_1_IRQHandler
-        B EXTI0_1_IRQHandler
-        
-                
-        PUBWEAK EXTI2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI2_3_IRQHandler
-        B EXTI2_3_IRQHandler
-        
-                
-        PUBWEAK EXTI4_15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI4_15_IRQHandler
-        B EXTI4_15_IRQHandler
-        
-                
-        PUBWEAK TS_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TS_IRQHandler
-        B TS_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel1_IRQHandler
-        B DMA1_Channel1_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel2_3_IRQHandler
-        B DMA1_Channel2_3_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel4_5_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel4_5_IRQHandler
-        B DMA1_Channel4_5_IRQHandler
-        
-                
-        PUBWEAK ADC1_COMP_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-ADC1_COMP_IRQHandler
-        B ADC1_COMP_IRQHandler
-        
-                 
-        PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_BRK_UP_TRG_COM_IRQHandler
-        B TIM1_BRK_UP_TRG_COM_IRQHandler
-        
-                
-        PUBWEAK TIM1_CC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_CC_IRQHandler
-        B TIM1_CC_IRQHandler
-        
-                
-        PUBWEAK TIM2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM2_IRQHandler
-        B TIM2_IRQHandler
-        
-                
-        PUBWEAK TIM3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM3_IRQHandler
-        B TIM3_IRQHandler
-        
-                
-        PUBWEAK TIM6_DAC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM6_DAC_IRQHandler
-        B TIM6_DAC_IRQHandler
-        
-                
-        PUBWEAK TIM14_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM14_IRQHandler
-        B TIM14_IRQHandler
-        
-                
-        PUBWEAK TIM15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM15_IRQHandler
-        B TIM15_IRQHandler
-        
-                
-        PUBWEAK TIM16_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM16_IRQHandler
-        B TIM16_IRQHandler
-        
-                
-        PUBWEAK TIM17_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM17_IRQHandler
-        B TIM17_IRQHandler
-        
-                
-        PUBWEAK I2C1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_IRQHandler
-        B I2C1_IRQHandler
-        
-                
-        PUBWEAK I2C2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C2_IRQHandler
-        B I2C2_IRQHandler
-        
-                
-        PUBWEAK SPI1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI1_IRQHandler
-        B SPI1_IRQHandler
-        
-                
-        PUBWEAK SPI2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI2_IRQHandler
-        B SPI2_IRQHandler
-        
-                
-        PUBWEAK USART1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART1_IRQHandler
-        B USART1_IRQHandler
-        
-                
-        PUBWEAK USART2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART2_IRQHandler
-        B USART2_IRQHandler
-        
-                
-        PUBWEAK CEC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-CEC_IRQHandler
-        B CEC_IRQHandler
-
-        END
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f072.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f072.s
deleted file mode 100644
index c01281d..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f072.s	
+++ /dev/null
@@ -1,346 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f072.s
-;* Author             : MCD Appl&ication Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F072 Devices Devices vector table for 
-;*                      EWARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == iar_program_start,
-;*                      - Set the vector table entries with the exceptions ISR 
-;*                        address.
-;*                      After Reset the Cortex-M0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
-        MODULE  ?cstartup
-
-        ;; Forward declaration of sections.
-        SECTION CSTACK:DATA:NOROOT(3)
-
-        SECTION .intvec:CODE:NOROOT(2)
-
-        EXTERN  __iar_program_start
-        EXTERN  SystemInit
-        PUBLIC  __vector_table
-
-        DATA
-__vector_table
-        DCD     sfe(CSTACK)
-        DCD     Reset_Handler                  ; Reset Handler
-
-        DCD     NMI_Handler                    ; NMI Handler
-        DCD     HardFault_Handler              ; Hard Fault Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     SVC_Handler                    ; SVCall Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     PendSV_Handler                 ; PendSV Handler
-        DCD     SysTick_Handler                ; SysTick Handler
-
-        ; External Interrupts
-        DCD     WWDG_IRQHandler                ; Window Watchdog
-        DCD     PVD_VDDIO2_IRQHandler          ; PVD and VDDIO2 through EXTI Line detect
-        DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-        DCD     FLASH_IRQHandler               ; FLASH
-        DCD     RCC_CRS_IRQHandler             ; RCC and CRS
-        DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-        DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-        DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-        DCD     TSC_IRQHandler                  ; TS
-        DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-        DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-        DCD     DMA1_Channel4_5_6_7_IRQHandler ; DMA1 Channel 4, Channel 5, Channel 6 and Channel 7
-        DCD     ADC1_COMP_IRQHandler           ; ADC1, COMP1 and COMP2 
-        DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-        DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-        DCD     TIM2_IRQHandler                ; TIM2
-        DCD     TIM3_IRQHandler                ; TIM3
-        DCD     TIM6_DAC_IRQHandler            ; TIM6 and DAC
-        DCD     TIM7_IRQHandler                ; TIM7
-        DCD     TIM14_IRQHandler               ; TIM14
-        DCD     TIM15_IRQHandler               ; TIM15
-        DCD     TIM16_IRQHandler               ; TIM16
-        DCD     TIM17_IRQHandler               ; TIM17
-        DCD     I2C1_IRQHandler                ; I2C1
-        DCD     I2C2_IRQHandler                ; I2C2
-        DCD     SPI1_IRQHandler                ; SPI1
-        DCD     SPI2_IRQHandler                ; SPI2
-        DCD     USART1_IRQHandler              ; USART1
-        DCD     USART2_IRQHandler              ; USART2
-        DCD     USART3_4_IRQHandler            ; USART3 and USART4
-        DCD     CEC_CAN_IRQHandler             ; CEC and CAN
-        DCD     USB_IRQHandler                 ; USB
-        
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
-        THUMB
-
-        PUBWEAK Reset_Handler
-        SECTION .text:CODE:REORDER(2)
-Reset_Handler
-        LDR     R0, =SystemInit
-        BLX     R0
-        LDR     R0, =__iar_program_start
-        BX      R0
-        
-        PUBWEAK NMI_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-NMI_Handler
-        B NMI_Handler
-        
-        
-        PUBWEAK HardFault_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-HardFault_Handler
-        B HardFault_Handler
-       
-        
-        PUBWEAK SVC_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SVC_Handler
-        B SVC_Handler
-       
-        
-        PUBWEAK PendSV_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PendSV_Handler
-        B PendSV_Handler
-        
-        
-        PUBWEAK SysTick_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SysTick_Handler
-        B SysTick_Handler
-        
-        
-        PUBWEAK WWDG_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-WWDG_IRQHandler
-        B WWDG_IRQHandler
-        
-                
-        PUBWEAK PVD_VDDIO2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PVD_VDDIO2_IRQHandler
-        B PVD_VDDIO2_IRQHandler
-        
-                
-        PUBWEAK RTC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RTC_IRQHandler
-        B RTC_IRQHandler
-        
-                
-        PUBWEAK FLASH_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-FLASH_IRQHandler
-        B FLASH_IRQHandler
-        
-                
-        PUBWEAK RCC_CRS_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RCC_CRS_IRQHandler
-        B RCC_CRS_IRQHandler
-        
-                
-        PUBWEAK EXTI0_1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI0_1_IRQHandler
-        B EXTI0_1_IRQHandler
-        
-                
-        PUBWEAK EXTI2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI2_3_IRQHandler
-        B EXTI2_3_IRQHandler
-        
-                
-        PUBWEAK EXTI4_15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI4_15_IRQHandler
-        B EXTI4_15_IRQHandler
-        
-                
-        PUBWEAK TSC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TSC_IRQHandler
-        B TSC_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel1_IRQHandler
-        B DMA1_Channel1_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel2_3_IRQHandler
-        B DMA1_Channel2_3_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel4_5_6_7_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel4_5_6_7_IRQHandler
-        B DMA1_Channel4_5_6_7_IRQHandler
-        
-                
-        PUBWEAK ADC1_COMP_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-ADC1_COMP_IRQHandler
-        B ADC1_COMP_IRQHandler
-        
-                 
-        PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_BRK_UP_TRG_COM_IRQHandler
-        B TIM1_BRK_UP_TRG_COM_IRQHandler
-        
-                
-        PUBWEAK TIM1_CC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_CC_IRQHandler
-        B TIM1_CC_IRQHandler
-        
-                
-        PUBWEAK TIM2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM2_IRQHandler
-        B TIM2_IRQHandler
-        
-                
-        PUBWEAK TIM3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM3_IRQHandler
-        B TIM3_IRQHandler
-        
-                
-        PUBWEAK TIM6_DAC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM6_DAC_IRQHandler
-        B TIM6_DAC_IRQHandler
-        
-        PUBWEAK TIM7_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM7_IRQHandler
-        B TIM7_IRQHandler
-
-        PUBWEAK TIM14_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM14_IRQHandler
-        B TIM14_IRQHandler
-        
-                
-        PUBWEAK TIM15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM15_IRQHandler
-        B TIM15_IRQHandler
-        
-                
-        PUBWEAK TIM16_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM16_IRQHandler
-        B TIM16_IRQHandler
-        
-                
-        PUBWEAK TIM17_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM17_IRQHandler
-        B TIM17_IRQHandler
-        
-                
-        PUBWEAK I2C1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_IRQHandler
-        B I2C1_IRQHandler
-        
-                
-        PUBWEAK I2C2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C2_IRQHandler
-        B I2C2_IRQHandler
-        
-                
-        PUBWEAK SPI1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI1_IRQHandler
-        B SPI1_IRQHandler
-        
-                
-        PUBWEAK SPI2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI2_IRQHandler
-        B SPI2_IRQHandler
-        
-                
-        PUBWEAK USART1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART1_IRQHandler
-        B USART1_IRQHandler
-        
-                
-        PUBWEAK USART2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART2_IRQHandler
-        B USART2_IRQHandler
-        
-
-        PUBWEAK USART3_4_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART3_4_IRQHandler
-        B USART3_4_IRQHandler
-        
-        
-        PUBWEAK CEC_CAN_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-CEC_CAN_IRQHandler
-        B CEC_CAN_IRQHandler
-
-        PUBWEAK USB_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USB_IRQHandler
-        B USB_IRQHandler
-        
-        END
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f0xx.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f0xx.s
deleted file mode 100644
index 27d799f..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f0xx.s	
+++ /dev/null
@@ -1,333 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f0xx.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F051 devices vector table for EWARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == iar_program_start,
-;*                      - Set the vector table entries with the exceptions ISR 
-;*                        address
-;*                      - Configure the system clock
-;*                      - Branches to main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the Cortex-M0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
-        MODULE  ?cstartup
-
-        ;; Forward declaration of sections.
-        SECTION CSTACK:DATA:NOROOT(3)
-
-        SECTION .intvec:CODE:NOROOT(2)
-
-        EXTERN  __iar_program_start
-        EXTERN  SystemInit
-        PUBLIC  __vector_table
-
-        DATA
-__vector_table
-        DCD     sfe(CSTACK)
-        DCD     Reset_Handler                  ; Reset Handler
-
-        DCD     NMI_Handler                    ; NMI Handler
-        DCD     HardFault_Handler              ; Hard Fault Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     SVC_Handler                    ; SVCall Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     PendSV_Handler                 ; PendSV Handler
-        DCD     SysTick_Handler                ; SysTick Handler
-
-        ; External Interrupts
-        DCD     WWDG_IRQHandler                ; Window Watchdog
-        DCD     PVD_IRQHandler                 ; PVD through EXTI Line detect
-        DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-        DCD     FLASH_IRQHandler               ; FLASH
-        DCD     RCC_IRQHandler                 ; RCC
-        DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-        DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-        DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-        DCD     TS_IRQHandler                  ; TS
-        DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-        DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-        DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-        DCD     ADC1_COMP_IRQHandler           ; ADC1, COMP1 and COMP2 
-        DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-        DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-        DCD     TIM2_IRQHandler                ; TIM2
-        DCD     TIM3_IRQHandler                ; TIM3
-        DCD     TIM6_DAC_IRQHandler            ; TIM6 and DAC
-        DCD     0                              ; Reserved
-        DCD     TIM14_IRQHandler               ; TIM14
-        DCD     TIM15_IRQHandler               ; TIM15
-        DCD     TIM16_IRQHandler               ; TIM16
-        DCD     TIM17_IRQHandler               ; TIM17
-        DCD     I2C1_IRQHandler                ; I2C1
-        DCD     I2C2_IRQHandler                ; I2C2
-        DCD     SPI1_IRQHandler                ; SPI1
-        DCD     SPI2_IRQHandler                ; SPI2
-        DCD     USART1_IRQHandler              ; USART1
-        DCD     USART2_IRQHandler              ; USART2
-        DCD     0                              ; Reserved
-        DCD     CEC_IRQHandler                 ; CEC
-        DCD     0                              ; Reserved
-        
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
-        THUMB
-
-        PUBWEAK Reset_Handler
-        SECTION .text:CODE:REORDER(2)
-Reset_Handler
-        LDR     R0, =SystemInit
-        BLX     R0
-        LDR     R0, =__iar_program_start
-        BX      R0
-        
-        PUBWEAK NMI_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-NMI_Handler
-        B NMI_Handler
-        
-        
-        PUBWEAK HardFault_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-HardFault_Handler
-        B HardFault_Handler
-       
-        
-        PUBWEAK SVC_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SVC_Handler
-        B SVC_Handler
-       
-        
-        PUBWEAK PendSV_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PendSV_Handler
-        B PendSV_Handler
-        
-        
-        PUBWEAK SysTick_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SysTick_Handler
-        B SysTick_Handler
-        
-        
-        PUBWEAK WWDG_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-WWDG_IRQHandler
-        B WWDG_IRQHandler
-        
-                
-        PUBWEAK PVD_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PVD_IRQHandler
-        B PVD_IRQHandler
-        
-                
-        PUBWEAK RTC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RTC_IRQHandler
-        B RTC_IRQHandler
-        
-                
-        PUBWEAK FLASH_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-FLASH_IRQHandler
-        B FLASH_IRQHandler
-        
-                
-        PUBWEAK RCC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RCC_IRQHandler
-        B RCC_IRQHandler
-        
-                
-        PUBWEAK EXTI0_1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI0_1_IRQHandler
-        B EXTI0_1_IRQHandler
-        
-                
-        PUBWEAK EXTI2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI2_3_IRQHandler
-        B EXTI2_3_IRQHandler
-        
-                
-        PUBWEAK EXTI4_15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI4_15_IRQHandler
-        B EXTI4_15_IRQHandler
-        
-                
-        PUBWEAK TS_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TS_IRQHandler
-        B TS_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel1_IRQHandler
-        B DMA1_Channel1_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel2_3_IRQHandler
-        B DMA1_Channel2_3_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel4_5_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel4_5_IRQHandler
-        B DMA1_Channel4_5_IRQHandler
-        
-                
-        PUBWEAK ADC1_COMP_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-ADC1_COMP_IRQHandler
-        B ADC1_COMP_IRQHandler
-        
-                 
-        PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_BRK_UP_TRG_COM_IRQHandler
-        B TIM1_BRK_UP_TRG_COM_IRQHandler
-        
-                
-        PUBWEAK TIM1_CC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_CC_IRQHandler
-        B TIM1_CC_IRQHandler
-        
-                
-        PUBWEAK TIM2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM2_IRQHandler
-        B TIM2_IRQHandler
-        
-                
-        PUBWEAK TIM3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM3_IRQHandler
-        B TIM3_IRQHandler
-        
-                
-        PUBWEAK TIM6_DAC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM6_DAC_IRQHandler
-        B TIM6_DAC_IRQHandler
-        
-                
-        PUBWEAK TIM14_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM14_IRQHandler
-        B TIM14_IRQHandler
-        
-                
-        PUBWEAK TIM15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM15_IRQHandler
-        B TIM15_IRQHandler
-        
-                
-        PUBWEAK TIM16_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM16_IRQHandler
-        B TIM16_IRQHandler
-        
-                
-        PUBWEAK TIM17_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM17_IRQHandler
-        B TIM17_IRQHandler
-        
-                
-        PUBWEAK I2C1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_IRQHandler
-        B I2C1_IRQHandler
-        
-                
-        PUBWEAK I2C2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C2_IRQHandler
-        B I2C2_IRQHandler
-        
-                
-        PUBWEAK SPI1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI1_IRQHandler
-        B SPI1_IRQHandler
-        
-                
-        PUBWEAK SPI2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI2_IRQHandler
-        B SPI2_IRQHandler
-        
-                
-        PUBWEAK USART1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART1_IRQHandler
-        B USART1_IRQHandler
-        
-                
-        PUBWEAK USART2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART2_IRQHandler
-        B USART2_IRQHandler
-        
-                
-        PUBWEAK CEC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-CEC_IRQHandler
-        B CEC_IRQHandler
-
-        END
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f0xx_ld.s b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f0xx_ld.s
deleted file mode 100644
index 595fa8d..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f0xx_ld.s	
+++ /dev/null
@@ -1,288 +0,0 @@
-;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
-;* File Name          : startup_stm32f0xx_ld.s
-;* Author             : MCD Application Team
-;* Version            : V1.3.1
-;* Date               : 17-January-2014 
-;* Description        : STM32F031 devices vector table for EWARM toolchain.
-;*                      This module performs:
-;*                      - Set the initial SP
-;*                      - Set the initial PC == iar_program_start,
-;*                      - Set the vector table entries with the exceptions ISR 
-;*                        address
-;*                      - Configure the system clock
-;*                      - Branches to main in the C library (which eventually
-;*                        calls main()).
-;*                      After Reset the Cortex-M0 processor is in Thread mode,
-;*                      priority is Privileged, and the Stack is set to Main.
-;*******************************************************************************
-;  @attention
-; 
-;  Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;  You may not use this file except in compliance with the License.
-;  You may obtain a copy of the License at:
-; 
-;         http://www.st.com/software_license_agreement_liberty_v2
-; 
-;  Unless required by applicable law or agreed to in writing, software 
-;  distributed under the License is distributed on an "AS IS" BASIS, 
-;  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;  See the License for the specific language governing permissions and
-;  limitations under the License.
-; 
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
-        MODULE  ?cstartup
-
-        ;; Forward declaration of sections.
-        SECTION CSTACK:DATA:NOROOT(3)
-
-        SECTION .intvec:CODE:NOROOT(2)
-
-        EXTERN  __iar_program_start
-        EXTERN  SystemInit
-        PUBLIC  __vector_table
-
-        DATA
-__vector_table
-        DCD     sfe(CSTACK)
-        DCD     Reset_Handler                  ; Reset Handler
-
-        DCD     NMI_Handler                    ; NMI Handler
-        DCD     HardFault_Handler              ; Hard Fault Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     SVC_Handler                    ; SVCall Handler
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     PendSV_Handler                 ; PendSV Handler
-        DCD     SysTick_Handler                ; SysTick Handler
-
-        ; External Interrupts
-        DCD     WWDG_IRQHandler                ; Window Watchdog
-        DCD     PVD_IRQHandler                 ; PVD through EXTI Line detect
-        DCD     RTC_IRQHandler                 ; RTC through EXTI Line
-        DCD     FLASH_IRQHandler               ; FLASH
-        DCD     RCC_IRQHandler                 ; RCC
-        DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
-        DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
-        DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
-        DCD     0                              ; Reserved
-        DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
-        DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
-        DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
-        DCD     ADC1_IRQHandler                ; ADC1 
-        DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
-        DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
-        DCD     TIM2_IRQHandler                ; TIM2
-        DCD     TIM3_IRQHandler                ; TIM3
-        DCD     0                              ; Reserved
-        DCD     0                              ; Reserved
-        DCD     TIM14_IRQHandler               ; TIM14
-        DCD     0                              ; Reserved
-        DCD     TIM16_IRQHandler               ; TIM16
-        DCD     TIM17_IRQHandler               ; TIM17
-        DCD     I2C1_IRQHandler                ; I2C1
-        DCD     0                              ; Reserved
-        DCD     SPI1_IRQHandler                ; SPI1
-        DCD     0                              ; Reserved
-        DCD     USART1_IRQHandler              ; USART1
-        
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
-        THUMB
-
-        PUBWEAK Reset_Handler
-        SECTION .text:CODE:REORDER(2)
-Reset_Handler
-        LDR     R0, =SystemInit
-        BLX     R0
-        LDR     R0, =__iar_program_start
-        BX      R0
-        
-        PUBWEAK NMI_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-NMI_Handler
-        B NMI_Handler
-        
-        
-        PUBWEAK HardFault_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-HardFault_Handler
-        B HardFault_Handler
-       
-        
-        PUBWEAK SVC_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SVC_Handler
-        B SVC_Handler
-       
-        
-        PUBWEAK PendSV_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PendSV_Handler
-        B PendSV_Handler
-        
-        
-        PUBWEAK SysTick_Handler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SysTick_Handler
-        B SysTick_Handler
-        
-        
-        PUBWEAK WWDG_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-WWDG_IRQHandler
-        B WWDG_IRQHandler
-        
-                
-        PUBWEAK PVD_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-PVD_IRQHandler
-        B PVD_IRQHandler
-        
-                
-        PUBWEAK RTC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RTC_IRQHandler
-        B RTC_IRQHandler
-        
-                
-        PUBWEAK FLASH_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-FLASH_IRQHandler
-        B FLASH_IRQHandler
-        
-                
-        PUBWEAK RCC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-RCC_IRQHandler
-        B RCC_IRQHandler
-        
-                
-        PUBWEAK EXTI0_1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI0_1_IRQHandler
-        B EXTI0_1_IRQHandler
-        
-                
-        PUBWEAK EXTI2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI2_3_IRQHandler
-        B EXTI2_3_IRQHandler
-        
-                
-        PUBWEAK EXTI4_15_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI4_15_IRQHandler
-        B EXTI4_15_IRQHandler                      
-        
-                
-        PUBWEAK DMA1_Channel1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel1_IRQHandler
-        B DMA1_Channel1_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel2_3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel2_3_IRQHandler
-        B DMA1_Channel2_3_IRQHandler
-        
-                
-        PUBWEAK DMA1_Channel4_5_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-DMA1_Channel4_5_IRQHandler
-        B DMA1_Channel4_5_IRQHandler
-        
-                
-        PUBWEAK ADC1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-ADC1_IRQHandler
-        B ADC1_IRQHandler
-        
-                 
-        PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_BRK_UP_TRG_COM_IRQHandler
-        B TIM1_BRK_UP_TRG_COM_IRQHandler
-        
-                
-        PUBWEAK TIM1_CC_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM1_CC_IRQHandler
-        B TIM1_CC_IRQHandler
-        
-                
-        PUBWEAK TIM2_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM2_IRQHandler
-        B TIM2_IRQHandler
-        
-                
-        PUBWEAK TIM3_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM3_IRQHandler
-        B TIM3_IRQHandler                        
-        
-                
-        PUBWEAK TIM14_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM14_IRQHandler
-        B TIM14_IRQHandler
-        
-                
-        PUBWEAK TIM16_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM16_IRQHandler
-        B TIM16_IRQHandler
-        
-                
-        PUBWEAK TIM17_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-TIM17_IRQHandler
-        B TIM17_IRQHandler
-        
-                
-        PUBWEAK I2C1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_IRQHandler
-        B I2C1_IRQHandler
-        
-                
-        PUBWEAK SPI1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-SPI1_IRQHandler
-        B SPI1_IRQHandler
-        
-                
-        PUBWEAK USART1_IRQHandler
-        SECTION .text:CODE:NOROOT:REORDER(1)
-USART1_IRQHandler
-        B USART1_IRQHandler
-
-
-        END
-;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c
deleted file mode 100644
index e05ebe2..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c	
+++ /dev/null
@@ -1,358 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    system_stm32f0xx.c
-  * @author  MCD Application Team
-  * @version V1.3.1
-  * @date    17-January-2014
-  * @brief   CMSIS Cortex-M0 Device Peripheral Access Layer System Source File.
-  *          This file contains the system clock configuration for STM32F0xx devices,
-  *          and is generated by the clock configuration tool  
-  *          STM32F0xx_Clock_Configuration_V1.0.0.xls
-  *
-  * 1.  This file provides two functions and one global variable to be called from 
-  *     user application:
-  *      - SystemInit(): Setups the system clock (System clock source, PLL Multiplier
-  *                      and Divider factors, AHB/APBx prescalers and Flash settings),
-  *                      depending on the configuration made in the clock xls tool.
-  *                      This function is called at startup just after reset and 
-  *                      before branch to main program. This call is made inside
-  *                      the "startup_stm32f0xx.s" file.
-  *
-  *      - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
-  *                                  by the user application to setup the SysTick 
-  *                                  timer or configure other parameters.
-  *
-  *      - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
-  *                                 be called whenever the core clock is changed
-  *                                 during program execution.
-  *
-  * 2. After each device reset the HSI (8 MHz Range) is used as system clock source.
-  *    Then SystemInit() function is called, in "startup_stm32f0xx.s" file, to
-  *    configure the system clock before to branch to main program.
-  *
-  * 3. If the system clock source selected by user fails to startup, the SystemInit()
-  *    function will do nothing and HSI still used as system clock source. User can 
-  *    add some code to deal with this issue inside the SetSysClock() function.
-  *
-  * 4. The default value of HSE crystal is set to 8MHz, refer to "HSE_VALUE" define
-  *    in "stm32f0xx.h" file. When HSE is used as system clock source, directly or
-  *    through PLL, and you are using different crystal you have to adapt the HSE
-  *    value to your own configuration.
-  *
-  * 5. This file configures the system clock as follows:
-  *=============================================================================
-  *                         System Clock Configuration
-  *=============================================================================
-  *        System Clock source          | PLL(HSE)
-  *-----------------------------------------------------------------------------
-  *        SYSCLK                       | 48000000 Hz
-  *-----------------------------------------------------------------------------
-  *        HCLK                         | 48000000 Hz
-  *-----------------------------------------------------------------------------
-  *        AHB Prescaler                | 1
-  *-----------------------------------------------------------------------------
-  *        APB1 Prescaler               | 1
-  *-----------------------------------------------------------------------------
-  *        APB2 Prescaler               | 1
-  *-----------------------------------------------------------------------------
-  *        HSE Frequency                | 8000000 Hz
-  *-----------------------------------------------------------------------------
-  *        PLL MUL                      | 6
-  *-----------------------------------------------------------------------------
-  *        VDD                          | 3.3 V
-  *-----------------------------------------------------------------------------
-  *        Flash Latency                | 1 WS
-  *-----------------------------------------------------------------------------
-  *=============================================================================
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/** @addtogroup CMSIS
-  * @{
-  */
-
-/** @addtogroup stm32f0xx_system
-  * @{
-  */  
-  
-/** @addtogroup STM32F0xx_System_Private_Includes
-  * @{
-  */
-
-#include "stm32f0xx.h"
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_TypesDefinitions
-  * @{
-  */
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_Defines
-  * @{
-  */
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_Macros
-  * @{
-  */
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_Variables
-  * @{
-  */
-uint32_t SystemCoreClock    = 48000000;
-__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_FunctionPrototypes
-  * @{
-  */
-
-static void SetSysClock(void);
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_Functions
-  * @{
-  */
-
-/**
-  * @brief  Setup the microcontroller system.
-  *         Initialize the Embedded Flash Interface, the PLL and update the 
-  *         SystemCoreClock variable.
-  * @param  None
-  * @retval None
-  */
-void SystemInit (void)
-{    
-  /* Set HSION bit */
-  RCC->CR |= (uint32_t)0x00000001;
-
-#if defined (STM32F031) || defined (STM32F072) || defined (STM32F042) 
-  /* Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE and MCOSEL[2:0] bits */
-  RCC->CFGR &= (uint32_t)0xF8FFB80C;
-#else
-  /* Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE, MCOSEL[2:0], MCOPRE[2:0] and PLLNODIV bits */
-  RCC->CFGR &= (uint32_t)0x08FFB80C;
-#endif /* STM32F031*/
-  
-  /* Reset HSEON, CSSON and PLLON bits */
-  RCC->CR &= (uint32_t)0xFEF6FFFF;
-
-  /* Reset HSEBYP bit */
-  RCC->CR &= (uint32_t)0xFFFBFFFF;
-
-  /* Reset PLLSRC, PLLXTPRE and PLLMUL[3:0] bits */
-  RCC->CFGR &= (uint32_t)0xFFC0FFFF;
-
-  /* Reset PREDIV1[3:0] bits */
-  RCC->CFGR2 &= (uint32_t)0xFFFFFFF0;
-
-  /* Reset USARTSW[1:0], I2CSW, CECSW and ADCSW bits */
-  RCC->CFGR3 &= (uint32_t)0xFFFFFEAC;
-
-  /* Reset HSI14 bit */
-  RCC->CR2 &= (uint32_t)0xFFFFFFFE;
-
-  /* Disable all interrupts */
-  RCC->CIR = 0x00000000;
-
-  /* Configure the System clock frequency, AHB/APBx prescalers and Flash settings */
-  SetSysClock();
-}
-
-/**
-  * @brief  Update SystemCoreClock according to Clock Register Values
-  *         The SystemCoreClock variable contains the core clock (HCLK), it can
-  *         be used by the user application to setup the SysTick timer or configure
-  *         other parameters.
-  *
-  * @note   Each time the core clock (HCLK) changes, this function must be called
-  *         to update SystemCoreClock variable value. Otherwise, any configuration
-  *         based on this variable will be incorrect.         
-  *
-  * @note   - The system frequency computed by this function is not the real 
-  *           frequency in the chip. It is calculated based on the predefined 
-  *           constant and the selected clock source:
-  *
-  *           - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
-  *                                              
-  *           - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
-  *                          
-  *           - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
-  *             or HSI_VALUE(*) multiplied/divided by the PLL factors.
-  *
-  *         (*) HSI_VALUE is a constant defined in stm32f0xx.h file (default value
-  *             8 MHz) but the real value may vary depending on the variations
-  *             in voltage and temperature.
-  *
-  *         (**) HSE_VALUE is a constant defined in stm32f0xx.h file (default value
-  *              8 MHz), user has to ensure that HSE_VALUE is same as the real
-  *              frequency of the crystal used. Otherwise, this function may
-  *              have wrong result.
-  *
-  *         - The result of this function could be not correct when using fractional
-  *           value for HSE crystal.
-  * @param  None
-  * @retval None
-  */
-void SystemCoreClockUpdate (void)
-{
-  uint32_t tmp = 0, pllmull = 0, pllsource = 0, prediv1factor = 0;
-
-  /* Get SYSCLK source -------------------------------------------------------*/
-  tmp = RCC->CFGR & RCC_CFGR_SWS;
-  
-  switch (tmp)
-  {
-    case 0x00:  /* HSI used as system clock */
-      SystemCoreClock = HSI_VALUE;
-      break;
-    case 0x04:  /* HSE used as system clock */
-      SystemCoreClock = HSE_VALUE;
-      break;
-    case 0x08:  /* PLL used as system clock */
-      /* Get PLL clock source and multiplication factor ----------------------*/
-      pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
-      pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
-      pllmull = ( pllmull >> 18) + 2;
-      
-      if (pllsource == 0x00)
-      {
-        /* HSI oscillator clock divided by 2 selected as PLL clock entry */
-        SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
-      }
-      else
-      {
-        prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1;
-        /* HSE oscillator clock selected as PREDIV1 clock entry */
-        SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; 
-      }      
-      break;
-    default: /* HSI used as system clock */
-      SystemCoreClock = HSI_VALUE;
-      break;
-  }
-  /* Compute HCLK clock frequency ----------------*/
-  /* Get HCLK prescaler */
-  tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
-  /* HCLK clock frequency */
-  SystemCoreClock >>= tmp;  
-}
-
-/**
-  * @brief  Configures the System clock frequency, AHB/APBx prescalers and Flash
-  *         settings.
-  * @note   This function should be called only once the RCC clock configuration
-  *         is reset to the default reset state (done in SystemInit() function).
-  * @param  None
-  * @retval None
-  */
-static void SetSysClock(void)
-{
-  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
-  
-  /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/
-  /* Enable HSE */    
-  RCC->CR |= ((uint32_t)RCC_CR_HSEON);
- 
-  /* Wait till HSE is ready and if Time out is reached exit */
-  do
-  {
-    HSEStatus = RCC->CR & RCC_CR_HSERDY;
-    StartUpCounter++;  
-  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
-
-  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
-  {
-    HSEStatus = (uint32_t)0x01;
-  }
-  else
-  {
-    HSEStatus = (uint32_t)0x00;
-  }  
-
-  if (HSEStatus == (uint32_t)0x01)
-  {
-    /* Enable Prefetch Buffer and set Flash Latency */
-    FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;
- 
-    /* HCLK = SYSCLK */
-    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
-      
-    /* PCLK = HCLK */
-    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;
-
-    /* PLL configuration = HSE * 6 = 48 MHz */
-    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
-    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);
-            
-    /* Enable PLL */
-    RCC->CR |= RCC_CR_PLLON;
-
-    /* Wait till PLL is ready */
-    while((RCC->CR & RCC_CR_PLLRDY) == 0)
-    {
-    }
-
-    /* Select PLL as system clock source */
-    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
-    RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;    
-
-    /* Wait till PLL is used as system clock source */
-    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
-    {
-    }
-  }
-  else
-  { /* If HSE fails to start-up, the application will have wrong clock 
-         configuration. User can add here some code to deal with this error */
-  }  
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_common_tables.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_common_tables.h
deleted file mode 100644
index 7a59b59..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/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/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_const_structs.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_const_structs.h
deleted file mode 100644
index 8d7fac0..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/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/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_math.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_math.h
deleted file mode 100644
index 65304c1..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/arm_math.h	
+++ /dev/null
@@ -1,7306 +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
-   *
-   * <b>Introduction</b>
-   *
-   * 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.
-   *
-   * <b>Using the Library</b>
-   *
-   * The library installer contains prebuilt versions of the libraries in the <code>Lib</code> 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 <code>arm_math.h</code> which is placed in the <code>Include</code> 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 <code> arm_math.h</code> 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.
-   *
-   * <b>Examples</b>
-   *
-   * The library ships with a number of examples which demonstrate how to use the library functions.
-   *
-   * <b>Toolchain Support</b>
-   *
-   * 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.
-   *
-   * <b>Building the Library</b>
-   *
-   * The library installer contains project files to re build libraries on MDK Tool chain in the <code>CMSIS\\DSP_Lib\\Source\\ARM</code> 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.
-   *
-   * <b>Pre-processor Macros</b>
-   *
-   * 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
-   *
-   * <b>Copyright Notice</b>
-   *
-   * 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:
- * <pre>
- *     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;
- * </pre>
- * 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 <code>numRows X numCols</code>
- * and the values are arranged in row order.  That is, the
- * matrix element (i, j) is stored at:
- * <pre>
- *     pData[i*numCols + j]
- * </pre>
- *
- * \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 <code>arm_mat_init_f32()</code>, <code>arm_mat_init_q31()</code>
- * and <code>arm_mat_init_q15()</code> 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:
- * <pre>
- * <code>arm_matrix_instance_f32 S = {nRows, nColumns, pData};</code>
- * <code>arm_matrix_instance_q31 S = {nRows, nColumns, pData};</code>
- * <code>arm_matrix_instance_q15 S = {nRows, nColumns, pData};</code>
- * </pre>
- * where <code>nRows</code> specifies the number of rows, <code>nColumns</code>
- * specifies the number of columns, and <code>pData</code> 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:
- * <pre>
- *     ARM_MATH_SIZE_MISMATCH
- * </pre>
- * Otherwise the functions return
- * <pre>
- *     ARM_MATH_SUCCESS
- * </pre>
- * There is some overhead associated with this matrix size checking.
- * The matrix size checking is enabled via the \#define
- * <pre>
- *     ARM_MATH_MATRIX_CHECK
- * </pre>
- * 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 <code>ARM_MATH_SUCCESS</code>.
- */
-
-/**
- * @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 */
-
-#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
-   * <code>numTaps</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> 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  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> 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  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> 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 <code>fftLenReal</code> 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 <code>N</code> 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 <code>N</code> 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
-   * <code>blockSize</code> is not a multiple of <code>M</code>.
-   */
-
-  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
-   * <code>blockSize</code> is not a multiple of <code>M</code>.
-   */
-
-  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
-   * <code>blockSize</code> is not a multiple of <code>M</code>.
-   */
-
-  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 <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
-   */
-
-  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 <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
-   */
-
-  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 <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
-   */
-
-  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.
-   * <code>S</code> points to an instance of the PID control data structure.  <code>in</code>
-   * is the input sample value. The functions return the output value.
-   *
-   * \par Algorithm:
-   * <pre>
-   *    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  </pre>
-   *
-   * \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.
-   *
-   * <b>Scaling and Overflow Behavior:</b>
-   * \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.
-   *
-   * <b>Scaling and Overflow Behavior:</b>
-   * \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 <code>Ia, Ib and Ic</code> to calculate currents
-   * in the two-phase orthogonal stator axis <code>Ialpha</code> and <code>Ibeta</code>.
-   * When <code>Ialpha</code> is superposed with <code>Ia</code> as shown in the figure below
-   * \image html clarke.gif Stator current space vector and its components in (a,b).
-   * and <code>Ia + Ib + Ic = 0</code>, in this condition <code>Ialpha</code> and <code>Ibeta</code>
-   * can be calculated using only <code>Ia</code> and <code>Ib</code>.
-   *
-   * 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 <code>Ia</code> and <code>Ib</code> are the instantaneous stator phases and
-   * <code>pIalpha</code> and <code>pIbeta</code> 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 <code>a</code>
-   * @param[in]       Ib       input three-phase coordinate <code>b</code>
-   * @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 <code>a</code>
-   * @param[in]       Ib       input three-phase coordinate <code>b</code>
-   * @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.
-   *
-   * <b>Scaling and Overflow Behavior:</b>
-   * \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 <code>pIa</code> and <code>pIb</code> are the instantaneous stator phases and
-   * <code>Ialpha</code> and <code>Ibeta</code> 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 <code>a</code>
-   * @param[out]      *pIb    points to output three-phase coordinate <code>b</code>
-   * @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 = -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 <code>a</code>
-   * @param[out]      *pIb    points to output three-phase coordinate <code>b</code>
-   * @return none.
-   *
-   * <b>Scaling and Overflow Behavior:</b>
-   * \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 <code>Ialpha</code> and the <code>Ibeta</code> 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 <code>Ialpha</code> and <code>Ibeta</code> are the stator vector components,
-   * <code>pId</code> and <code>pIq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> 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.
-   *
-   * <b>Scaling and Overflow Behavior:</b>
-   * \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 <code>pIalpha</code> and <code>pIbeta</code> are the stator vector components,
-   * <code>Id</code> and <code>Iq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> 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.
-   *
-   * <b>Scaling and Overflow Behavior:</b>
-   * \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:
-   * <pre>
-   *       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
-   * </pre>
-   *
-   * \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.
-   * <code>S</code> points to an instance of the Linear Interpolate function data structure.
-   * <code>x</code> 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 <code>x</code> 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 <code>x</code> 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 <code>x</code> 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:
-   * <pre>
-   *      x1 = x0 - f(x0)/f'(x0)
-   * </pre>
-   * where <code>x1</code> is the current estimate,
-   * <code>x0</code> is the previous estimate, and
-   * <code>f'(x0)</code> is the derivative of <code>f()</code> evaluated at <code>x0</code>.
-   * For the square root function, the algorithm reduces to:
-   * <pre>
-   *     x0 = in/2                         [initial guess]
-   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
-   * </pre>
-   */
-
-
-  /**
-   * @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
-   * <code>in</code> 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
-   * <code>in</code> 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
-   * <code>in</code> 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 <code>f(x, y)</code> 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.
-   *
-   * <b>Algorithm</b>
-   * \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:
-   * <pre>
-   *   typedef struct
-   *   {
-   *     uint16_t numRows;
-   *     uint16_t numCols;
-   *     float32_t *pData;
-   * } arm_bilinear_interp_instance_f32;
-   * </pre>
-   *
-   * \par
-   * where <code>numRows</code> specifies the number of rows in the table;
-   * <code>numCols</code> specifies the number of columns in the table;
-   * and <code>pData</code> points to an array of size <code>numRows*numCols</code> values.
-   * The data table <code>pTable</code> is organized in row order and the supplied data values fall on integer indexes.
-   * That is, table element (x,y) is located at <code>pTable[x + y*numCols]</code> where x and y are integers.
-   *
-   * \par
-   * Let <code>(x, y)</code> specify the desired interpolation point.  Then define:
-   * <pre>
-   *     XF = floor(x)
-   *     YF = floor(y)
-   * </pre>
-   * \par
-   * The interpolated output point is computed as:
-   * <pre>
-   *  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)
-   * </pre>
-   * 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/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm0.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm0.h
deleted file mode 100644
index ab31de0..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm0.h	
+++ /dev/null
@@ -1,682 +0,0 @@
-/**************************************************************************//**
- * @file     core_cm0.h
- * @brief    CMSIS Cortex-M0 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_CM0_H_GENERIC
-#define __CORE_CM0_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.<br>
-     Function definitions in header files are used to allow 'inlining'.
-
-   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
-     Unions are used for effective representation of core registers.
-
-   \li Advisory Rule 19.7, Function-like macro defined.<br>
-     Function-like macros are used to allow more efficient code.
- */
-
-
-/*******************************************************************************
- *                 CMSIS definitions
- ******************************************************************************/
-/** \ingroup Cortex_M0
-  @{
- */
-
-/*  CMSIS CM0 definitions */
-#define __CM0_CMSIS_VERSION_MAIN  (0x03)                                   /*!< [31:16] CMSIS HAL main version   */
-#define __CM0_CMSIS_VERSION_SUB   (0x20)                                   /*!< [15:0]  CMSIS HAL sub version    */
-#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16) | \
-                                    __CM0_CMSIS_VERSION_SUB          )     /*!< CMSIS HAL version number         */
-
-#define __CORTEX_M                (0x00)                                   /*!< 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 ( __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 ( __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 <stdint.h>                      /* standard types definitions                      */
-#include <core_cmInstr.h>                /* Core Instruction Access                         */
-#include <core_cmFunc.h>                 /* Core Function Access                            */
-
-#endif /* __CORE_CM0_H_GENERIC */
-
-#ifndef __CMSIS_GENERIC
-
-#ifndef __CORE_CM0_H_DEPENDANT
-#define __CORE_CM0_H_DEPENDANT
-
-/* check device defines and use defaults */
-#if defined __CHECK_DEVICE_DEFINES
-  #ifndef __CM0_REV
-    #define __CM0_REV               0x0000
-    #warning "__CM0_REV not defined in device header file; using default!"
-  #endif
-
-  #ifndef __NVIC_PRIO_BITS
-    #define __NVIC_PRIO_BITS          2
-    #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
-
-    <strong>IO Type Qualifiers</strong> 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_M0 */
-
-
-
-/*******************************************************************************
- *                 Register Abstraction
-  Core Register contain:
-  - Core Register
-  - Core NVIC Register
-  - Core SCB Register
-  - Core SysTick 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[1];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */
-       uint32_t RESERVED0[31];
-  __IO uint32_t ICER[1];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register          */
-       uint32_t RSERVED1[31];
-  __IO uint32_t ISPR[1];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register           */
-       uint32_t RESERVED2[31];
-  __IO uint32_t ICPR[1];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register         */
-       uint32_t RESERVED3[31];
-       uint32_t RESERVED4[64];
-  __IO uint32_t IP[8];                   /*!< Offset: 0x300 (R/W)  Interrupt Priority Register              */
-}  NVIC_Type;
-
-/*@} 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                  */
-       uint32_t RESERVED0;
-  __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                        */
-       uint32_t RESERVED1;
-  __IO uint32_t SHP[2];                  /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED   */
-  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State 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_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */
-#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE 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_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 */
-
-/* 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_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 */
-
-/* SCB System Handler Control and State Register Definitions */
-#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */
-#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
-
-/*@} end of group CMSIS_SCB */
-
-
-/** \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_CoreDebug       Core Debug Registers (CoreDebug)
-    \brief      Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR)
-                are only accessible over DAP and not via processor. Therefore
-                they are not covered by the Cortex-M0 header file.
-  @{
- */
-/*@} 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-M0 Hardware */
-#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space 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 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          */
-
-
-/*@} */
-
-
-
-/*******************************************************************************
- *                Hardware Abstraction Layer
-  Core Function Interface contains:
-  - Core NVIC Functions
-  - Core SysTick 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.
-    @{
- */
-
-/* Interrupt Priorities are WORD accessible only under ARMv6M                   */
-/* The following MACROS handle generation of the register offset and byte masks */
-#define _BIT_SHIFT(IRQn)         (  (((uint32_t)(IRQn)       )    &  0x03) * 8 )
-#define _SHP_IDX(IRQn)           ( ((((uint32_t)(IRQn) & 0x0F)-8) >>    2)     )
-#define _IP_IDX(IRQn)            (   ((uint32_t)(IRQn)            >>    2)     )
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1: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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */
-}
-
-
-/** \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[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
-        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
-  else {
-    NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
-        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
-}
-
-
-/** \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[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M0 system interrupts */
-  else {
-    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */
-}
-
-
-/** \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_SYSRESETREQ_Msk);
-  __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 <b>__Vendor_SysTickConfig</b> is set to 1, then the
-    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
-    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 */
-
-
-
-
-#endif /* __CORE_CM0_H_DEPENDANT */
-
-#endif /* __CMSIS_GENERIC */
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm0plus.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm0plus.h
deleted file mode 100644
index 5cea74e..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm0plus.h	
+++ /dev/null
@@ -1,793 +0,0 @@
-/**************************************************************************//**
- * @file     core_cm0plus.h
- * @brief    CMSIS Cortex-M0+ 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_CM0PLUS_H_GENERIC
-#define __CORE_CM0PLUS_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.<br>
-     Function definitions in header files are used to allow 'inlining'.
-
-   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
-     Unions are used for effective representation of core registers.
-
-   \li Advisory Rule 19.7, Function-like macro defined.<br>
-     Function-like macros are used to allow more efficient code.
- */
-
-
-/*******************************************************************************
- *                 CMSIS definitions
- ******************************************************************************/
-/** \ingroup Cortex-M0+
-  @{
- */
-
-/*  CMSIS CM0P definitions */
-#define __CM0PLUS_CMSIS_VERSION_MAIN (0x03)                                /*!< [31:16] CMSIS HAL main version   */
-#define __CM0PLUS_CMSIS_VERSION_SUB  (0x20)                                /*!< [15:0]  CMSIS HAL sub version    */
-#define __CM0PLUS_CMSIS_VERSION      ((__CM0PLUS_CMSIS_VERSION_MAIN << 16) | \
-                                       __CM0PLUS_CMSIS_VERSION_SUB)        /*!< CMSIS HAL version number         */
-
-#define __CORTEX_M                (0x00)                                   /*!< 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 ( __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 ( __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 <stdint.h>                      /* standard types definitions                      */
-#include <core_cmInstr.h>                /* Core Instruction Access                         */
-#include <core_cmFunc.h>                 /* Core Function Access                            */
-
-#endif /* __CORE_CM0PLUS_H_GENERIC */
-
-#ifndef __CMSIS_GENERIC
-
-#ifndef __CORE_CM0PLUS_H_DEPENDANT
-#define __CORE_CM0PLUS_H_DEPENDANT
-
-/* check device defines and use defaults */
-#if defined __CHECK_DEVICE_DEFINES
-  #ifndef __CM0PLUS_REV
-    #define __CM0PLUS_REV             0x0000
-    #warning "__CM0PLUS_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 __VTOR_PRESENT
-    #define __VTOR_PRESENT            0
-    #warning "__VTOR_PRESENT not defined in device header file; using default!"
-  #endif
-
-  #ifndef __NVIC_PRIO_BITS
-    #define __NVIC_PRIO_BITS          2
-    #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
-
-    <strong>IO Type Qualifiers</strong> 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-M0+ */
-
-
-
-/*******************************************************************************
- *                 Register Abstraction
-  Core Register contain:
-  - Core Register
-  - Core NVIC Register
-  - Core SCB Register
-  - Core SysTick 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[1];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */
-       uint32_t RESERVED0[31];
-  __IO uint32_t ICER[1];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register          */
-       uint32_t RSERVED1[31];
-  __IO uint32_t ISPR[1];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register           */
-       uint32_t RESERVED2[31];
-  __IO uint32_t ICPR[1];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register         */
-       uint32_t RESERVED3[31];
-       uint32_t RESERVED4[64];
-  __IO uint32_t IP[8];                   /*!< Offset: 0x300 (R/W)  Interrupt Priority Register              */
-}  NVIC_Type;
-
-/*@} 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                  */
-#if (__VTOR_PRESENT == 1)
-  __IO uint32_t VTOR;                    /*!< Offset: 0x008 (R/W)  Vector Table Offset Register                          */
-#else
-       uint32_t RESERVED0;
-#endif
-  __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                        */
-       uint32_t RESERVED1;
-  __IO uint32_t SHP[2];                  /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED   */
-  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State 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_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */
-#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE Mask */
-
-#if (__VTOR_PRESENT == 1)
-/* SCB Interrupt Control State Register Definitions */
-#define SCB_VTOR_TBLOFF_Pos                 8                                             /*!< SCB VTOR: TBLOFF Position */
-#define SCB_VTOR_TBLOFF_Msk                (0xFFFFFFUL << 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_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 */
-
-/* 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_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 */
-
-/* SCB System Handler Control and State Register Definitions */
-#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */
-#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
-
-/*@} end of group CMSIS_SCB */
-
-
-/** \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 */
-
-#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         */
-} 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                   8                                             /*!< MPU RBAR: ADDR Position */
-#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << 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      Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR)
-                are only accessible over DAP and not via processor. Therefore
-                they are not covered by the Cortex-M0 header file.
-  @{
- */
-/*@} 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-M0+ Hardware */
-#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space 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 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          */
-
-#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 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.
-    @{
- */
-
-/* Interrupt Priorities are WORD accessible only under ARMv6M                   */
-/* The following MACROS handle generation of the register offset and byte masks */
-#define _BIT_SHIFT(IRQn)         (  (((uint32_t)(IRQn)       )    &  0x03) * 8 )
-#define _SHP_IDX(IRQn)           ( ((((uint32_t)(IRQn) & 0x0F)-8) >>    2)     )
-#define _IP_IDX(IRQn)            (   ((uint32_t)(IRQn)            >>    2)     )
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1: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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */
-}
-
-
-/** \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[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
-        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
-  else {
-    NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
-        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
-}
-
-
-/** \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[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M0 system interrupts */
-  else {
-    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */
-}
-
-
-/** \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_SYSRESETREQ_Msk);
-  __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 <b>__Vendor_SysTickConfig</b> is set to 1, then the
-    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
-    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 */
-
-
-
-
-#endif /* __CORE_CM0PLUS_H_DEPENDANT */
-
-#endif /* __CMSIS_GENERIC */
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm3.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm3.h
deleted file mode 100644
index 122c9aa..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/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.<br>
-     Function definitions in header files are used to allow 'inlining'.
-
-   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
-     Unions are used for effective representation of core registers.
-
-   \li Advisory Rule 19.7, Function-like macro defined.<br>
-     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 <stdint.h>                      /* 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
-
-    <strong>IO Type Qualifiers</strong> 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 <b>__Vendor_SysTickConfig</b> is set to 1, then the
-    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
-    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/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm4.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm4.h
deleted file mode 100644
index d65016c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/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.<br>
-     Function definitions in header files are used to allow 'inlining'.
-
-   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
-     Unions are used for effective representation of core registers.
-
-   \li Advisory Rule 19.7, Function-like macro defined.<br>
-     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 <stdint.h>                      /* 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
-
-    <strong>IO Type Qualifiers</strong> 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 <b>__Vendor_SysTickConfig</b> is set to 1, then the
-    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
-    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/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm4_simd.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cm4_simd.h
deleted file mode 100644
index 83db95b..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/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 <cmsis_iar.h>
-
-/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/
-
-
-
-#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
-/* TI CCS specific functions */
-
-/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/
-#include <cmsis_ccs.h>
-
-/*-- 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/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cmFunc.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cmFunc.h
deleted file mode 100644
index 0a18faf..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/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 <cmsis_iar.h>
-
-
-#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
-/* TI CCS specific functions */
-
-#include <cmsis_ccs.h>
-
-
-#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/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cmInstr.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_cmInstr.h
deleted file mode 100644
index d213f0e..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/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 <cmsis_iar.h>
-
-
-#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
-/* TI CCS specific functions */
-
-#include <cmsis_ccs.h>
-
-
-#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/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_sc000.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_sc000.h
deleted file mode 100644
index 1a2a0f2..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_sc000.h	
+++ /dev/null
@@ -1,813 +0,0 @@
-/**************************************************************************//**
- * @file     core_sc000.h
- * @brief    CMSIS SC000 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_SC000_H_GENERIC
-#define __CORE_SC000_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.<br>
-     Function definitions in header files are used to allow 'inlining'.
-
-   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
-     Unions are used for effective representation of core registers.
-
-   \li Advisory Rule 19.7, Function-like macro defined.<br>
-     Function-like macros are used to allow more efficient code.
- */
-
-
-/*******************************************************************************
- *                 CMSIS definitions
- ******************************************************************************/
-/** \ingroup SC000
-  @{
- */
-
-/*  CMSIS SC000 definitions */
-#define __SC000_CMSIS_VERSION_MAIN  (0x03)                                   /*!< [31:16] CMSIS HAL main version */
-#define __SC000_CMSIS_VERSION_SUB   (0x20)                                   /*!< [15:0]  CMSIS HAL sub version  */
-#define __SC000_CMSIS_VERSION       ((__SC000_CMSIS_VERSION_MAIN << 16) | \
-                                      __SC000_CMSIS_VERSION_SUB          )   /*!< CMSIS HAL version number       */
-
-#define __CORTEX_SC                (0)                                       /*!< Cortex secure 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 ( __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 ( __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 <stdint.h>                      /* standard types definitions                      */
-#include <core_cmInstr.h>                /* Core Instruction Access                         */
-#include <core_cmFunc.h>                 /* Core Function Access                            */
-
-#endif /* __CORE_SC000_H_GENERIC */
-
-#ifndef __CMSIS_GENERIC
-
-#ifndef __CORE_SC000_H_DEPENDANT
-#define __CORE_SC000_H_DEPENDANT
-
-/* check device defines and use defaults */
-#if defined __CHECK_DEVICE_DEFINES
-  #ifndef __SC000_REV
-    #define __SC000_REV             0x0000
-    #warning "__SC000_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          2
-    #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
-
-    <strong>IO Type Qualifiers</strong> 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 SC000 */
-
-
-
-/*******************************************************************************
- *                 Register Abstraction
-  Core Register contain:
-  - Core Register
-  - Core NVIC Register
-  - Core SCB Register
-  - Core SysTick 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[1];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */
-       uint32_t RESERVED0[31];
-  __IO uint32_t ICER[1];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register          */
-       uint32_t RSERVED1[31];
-  __IO uint32_t ISPR[1];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register           */
-       uint32_t RESERVED2[31];
-  __IO uint32_t ICPR[1];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register         */
-       uint32_t RESERVED3[31];
-       uint32_t RESERVED4[64];
-  __IO uint32_t IP[8];                   /*!< Offset: 0x300 (R/W)  Interrupt Priority Register              */
-}  NVIC_Type;
-
-/*@} 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                        */
-       uint32_t RESERVED0[1];
-  __IO uint32_t SHP[2];                  /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED   */
-  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State Register             */
-       uint32_t RESERVED1[154];
-  __IO uint32_t SFCR;                    /*!< Offset: 0x290 (R/W)  Security Features 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_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */
-#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE Mask */
-
-/* SCB Interrupt Control State 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_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 */
-
-/* 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_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 */
-
-/* SCB System Handler Control and State Register Definitions */
-#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */
-#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
-
-/* SCB Security Features Register Definitions */
-#define SCB_SFCR_UNIBRTIMING_Pos            0                                             /*!< SCB SFCR: UNIBRTIMING Position */
-#define SCB_SFCR_UNIBRTIMING_Msk           (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SFCR: UNIBRTIMING Mask */
-
-#define SCB_SFCR_SECKEY_Pos                16                                             /*!< SCB SFCR: SECKEY Position */
-#define SCB_SFCR_SECKEY_Msk               (0xFFFFUL << SCB_SHCSR_SVCALLPENDED_Pos)        /*!< SCB SFCR: SECKEY 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[2];
-  __IO uint32_t ACTLR;                   /*!< Offset: 0x008 (R/W)  Auxiliary Control Register      */
-} SCnSCB_Type;
-
-/* Auxiliary Control Register Definitions */
-#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 */
-
-#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         */
-} 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                   8                                             /*!< MPU RBAR: ADDR Position */
-#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << 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      SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR)
-                are only accessible over DAP and not via processor. Therefore
-                they are not covered by the Cortex-M0 header file.
-  @{
- */
-/*@} 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 SC000 Hardware */
-#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space 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          */
-
-#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 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.
-    @{
- */
-
-/* Interrupt Priorities are WORD accessible only under ARMv6M                   */
-/* The following MACROS handle generation of the register offset and byte masks */
-#define _BIT_SHIFT(IRQn)         (  (((uint32_t)(IRQn)       )    &  0x03) * 8 )
-#define _SHP_IDX(IRQn)           ( ((((uint32_t)(IRQn) & 0x0F)-8) >>    2)     )
-#define _IP_IDX(IRQn)            (   ((uint32_t)(IRQn)            >>    2)     )
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1: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[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-
-/** \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[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */
-}
-
-
-/** \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[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
-        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
-  else {
-    NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
-        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
-}
-
-
-/** \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[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M0 system interrupts */
-  else {
-    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */
-}
-
-
-/** \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_SYSRESETREQ_Msk);
-  __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 <b>__Vendor_SysTickConfig</b> is set to 1, then the
-    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
-    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 */
-
-
-
-
-#endif /* __CORE_SC000_H_DEPENDANT */
-
-#endif /* __CMSIS_GENERIC */
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_sc300.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_sc300.h
deleted file mode 100644
index cc34d6f..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/CMSIS/Include/core_sc300.h	
+++ /dev/null
@@ -1,1598 +0,0 @@
-/**************************************************************************//**
- * @file     core_sc300.h
- * @brief    CMSIS SC300 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_SC300_H_GENERIC
-#define __CORE_SC300_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.<br>
-     Function definitions in header files are used to allow 'inlining'.
-
-   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
-     Unions are used for effective representation of core registers.
-
-   \li Advisory Rule 19.7, Function-like macro defined.<br>
-     Function-like macros are used to allow more efficient code.
- */
-
-
-/*******************************************************************************
- *                 CMSIS definitions
- ******************************************************************************/
-/** \ingroup SC3000
-  @{
- */
-
-/*  CMSIS SC300 definitions */
-#define __SC300_CMSIS_VERSION_MAIN  (0x03)                                   /*!< [31:16] CMSIS HAL main version */
-#define __SC300_CMSIS_VERSION_SUB   (0x20)                                   /*!< [15:0]  CMSIS HAL sub version  */
-#define __SC300_CMSIS_VERSION       ((__SC300_CMSIS_VERSION_MAIN << 16) | \
-                                      __SC300_CMSIS_VERSION_SUB          )   /*!< CMSIS HAL version number       */
-
-#define __CORTEX_SC                (300)                                     /*!< Cortex secure 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 ( __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 ( __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 <stdint.h>                      /* standard types definitions                      */
-#include <core_cmInstr.h>                /* Core Instruction Access                         */
-#include <core_cmFunc.h>                 /* Core Function Access                            */
-
-#endif /* __CORE_SC300_H_GENERIC */
-
-#ifndef __CMSIS_GENERIC
-
-#ifndef __CORE_SC300_H_DEPENDANT
-#define __CORE_SC300_H_DEPENDANT
-
-/* check device defines and use defaults */
-#if defined __CHECK_DEVICE_DEFINES
-  #ifndef __SC300_REV
-    #define __SC300_REV               0x0000
-    #warning "__SC300_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
-
-    <strong>IO Type Qualifiers</strong> 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 SC300 */
-
-
-
-/*******************************************************************************
- *                 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 */
-#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 */
-
-/* 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      */
-       uint32_t RESERVED1[1];
-} 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 */
-
-/*@} 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 <b>__Vendor_SysTickConfig</b> is set to 1, then the
-    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
-    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_SC300_H_DEPENDANT */
-
-#endif /* __CMSIS_GENERIC */
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_adc.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_adc.h
deleted file mode 100644
index b570068..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_adc.h	
+++ /dev/null
@@ -1,450 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_adc.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the ADC firmware 
-  *          library
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_ADC_H
-#define __STM32F0XX_ADC_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup ADC
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  ADC Init structure definition
-  */
-  
-typedef struct
-{
-  uint32_t ADC_Resolution;                  /*!< Selects the resolution of the conversion.
-                                                 This parameter can be a value of @ref ADC_Resolution */
-
-  FunctionalState ADC_ContinuousConvMode;   /*!< Specifies whether the conversion is performed in
-                                                 Continuous or Single mode.
-                                                 This parameter can be set to ENABLE or DISABLE. */
-
-  uint32_t ADC_ExternalTrigConvEdge;        /*!< Selects the external trigger Edge and enables the
-                                                 trigger of a regular group. This parameter can be a value
-                                                 of @ref ADC_external_trigger_edge_conversion */
-
-  uint32_t ADC_ExternalTrigConv;            /*!< Defines the external trigger used to start the analog
-                                                 to digital conversion of regular channels. This parameter
-                                                 can be a value of @ref ADC_external_trigger_sources_for_channels_conversion */
-
-  uint32_t ADC_DataAlign;                   /*!< Specifies whether the ADC data alignment is left or right.
-                                                 This parameter can be a value of @ref ADC_data_align */
-
-  uint32_t  ADC_ScanDirection;              /*!< Specifies in which direction the channels will be scanned
-                                                 in the sequence. 
-                                                 This parameter can be a value of @ref ADC_Scan_Direction */
-}ADC_InitTypeDef;
-
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup ADC_Exported_Constants
-  * @{
-  */ 
-#define IS_ADC_ALL_PERIPH(PERIPH)                  ((PERIPH) == ADC1)
-
-/** @defgroup ADC_JitterOff
-  * @{
-  */ 
-/* These defines are obsolete and maintained for legacy purpose only. They are replaced  by the ADC_ClockMode */  
-#define ADC_JitterOff_PCLKDiv2                    ADC_CFGR2_JITOFFDIV2
-#define ADC_JitterOff_PCLKDiv4                    ADC_CFGR2_JITOFFDIV4
-
-#define IS_ADC_JITTEROFF(JITTEROFF) (((JITTEROFF) & 0x3FFFFFFF) == (uint32_t)RESET)
-
-/**
-  * @}
-  */
-  
-/** @defgroup ADC_ClockMode
-  * @{
-  */ 
-#define ADC_ClockMode_AsynClk                  ((uint32_t)0x00000000)   /*!< ADC Asynchronous clock mode */
-#define ADC_ClockMode_SynClkDiv2               ADC_CFGR2_CKMODE_0   /*!<  Synchronous clock mode divided by 2 */
-#define ADC_ClockMode_SynClkDiv4               ADC_CFGR2_CKMODE_1   /*!<  Synchronous clock mode divided by 4 */
-#define IS_ADC_CLOCKMODE(CLOCK) (((CLOCK) == ADC_ClockMode_AsynClk) ||\
-				                        ((CLOCK) == ADC_ClockMode_SynClkDiv2) ||\
-				                        ((CLOCK) == ADC_ClockMode_SynClkDiv4))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup ADC_Resolution
-  * @{
-  */ 
-#define ADC_Resolution_12b                         ((uint32_t)0x00000000)
-#define ADC_Resolution_10b                         ADC_CFGR1_RES_0
-#define ADC_Resolution_8b                          ADC_CFGR1_RES_1
-#define ADC_Resolution_6b                          ADC_CFGR1_RES
-
-#define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_Resolution_12b) || \
-                                       ((RESOLUTION) == ADC_Resolution_10b) || \
-                                       ((RESOLUTION) == ADC_Resolution_8b) || \
-                                       ((RESOLUTION) == ADC_Resolution_6b))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup ADC_external_trigger_edge_conversion 
-  * @{
-  */ 
-#define ADC_ExternalTrigConvEdge_None              ((uint32_t)0x00000000)
-#define ADC_ExternalTrigConvEdge_Rising            ADC_CFGR1_EXTEN_0
-#define ADC_ExternalTrigConvEdge_Falling           ADC_CFGR1_EXTEN_1
-#define ADC_ExternalTrigConvEdge_RisingFalling     ADC_CFGR1_EXTEN
-
-#define IS_ADC_EXT_TRIG_EDGE(EDGE) (((EDGE) == ADC_ExternalTrigConvEdge_None) || \
-                                    ((EDGE) == ADC_ExternalTrigConvEdge_Rising) || \
-                                    ((EDGE) == ADC_ExternalTrigConvEdge_Falling) || \
-                                    ((EDGE) == ADC_ExternalTrigConvEdge_RisingFalling))
-/**
-  * @}
-  */ 
-
-/** @defgroup ADC_external_trigger_sources_for_channels_conversion
-  * @{
-  */ 
-
-/* TIM1 */
-#define ADC_ExternalTrigConv_T1_TRGO               ((uint32_t)0x00000000)
-#define ADC_ExternalTrigConv_T1_CC4                ADC_CFGR1_EXTSEL_0
-
-/* TIM2 */
-#define ADC_ExternalTrigConv_T2_TRGO               ADC_CFGR1_EXTSEL_1
-
-/* TIM3 */
-#define ADC_ExternalTrigConv_T3_TRGO               ((uint32_t)(ADC_CFGR1_EXTSEL_0 | ADC_CFGR1_EXTSEL_1))
-
-/* TIM15 */
-#define ADC_ExternalTrigConv_T15_TRGO              ADC_CFGR1_EXTSEL_2
-
-#define IS_ADC_EXTERNAL_TRIG_CONV(CONV) (((CONV) == ADC_ExternalTrigConv_T1_TRGO) || \
-                                         ((CONV) == ADC_ExternalTrigConv_T1_CC4)   || \
-                                         ((CONV) == ADC_ExternalTrigConv_T2_TRGO)  || \
-                                         ((CONV) == ADC_ExternalTrigConv_T3_TRGO)  || \
-                                         ((CONV) == ADC_ExternalTrigConv_T15_TRGO)) 
-/**
-  * @}
-  */ 
-
-/** @defgroup ADC_data_align 
-  * @{
-  */ 
-  
-#define ADC_DataAlign_Right                        ((uint32_t)0x00000000)
-#define ADC_DataAlign_Left                         ADC_CFGR1_ALIGN
-
-#define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DataAlign_Right) || \
-                                  ((ALIGN) == ADC_DataAlign_Left))
-/**
-  * @}
-  */
-
-/** @defgroup ADC_Scan_Direction 
-  * @{
-  */ 
-  
-#define ADC_ScanDirection_Upward                   ((uint32_t)0x00000000)
-#define ADC_ScanDirection_Backward                 ADC_CFGR1_SCANDIR
-
-#define IS_ADC_SCAN_DIRECTION(DIRECTION) (((DIRECTION) == ADC_ScanDirection_Upward) || \
-                                          ((DIRECTION) == ADC_ScanDirection_Backward))
-/**
-  * @}
-  */ 
-
-/** @defgroup ADC_DMA_Mode 
-  * @{
-  */ 
-  
-#define ADC_DMAMode_OneShot                        ((uint32_t)0x00000000)
-#define ADC_DMAMode_Circular                       ADC_CFGR1_DMACFG
-
-#define IS_ADC_DMA_MODE(MODE) (((MODE) == ADC_DMAMode_OneShot) || \
-                               ((MODE) == ADC_DMAMode_Circular))
-/**
-  * @}
-  */ 
-    
-/** @defgroup ADC_analog_watchdog_selection 
-  * @{
-  */ 
-  
-#define ADC_AnalogWatchdog_Channel_0                 ((uint32_t)0x00000000)
-#define ADC_AnalogWatchdog_Channel_1                 ((uint32_t)0x04000000)
-#define ADC_AnalogWatchdog_Channel_2                 ((uint32_t)0x08000000)
-#define ADC_AnalogWatchdog_Channel_3                 ((uint32_t)0x0C000000)
-#define ADC_AnalogWatchdog_Channel_4                 ((uint32_t)0x10000000)
-#define ADC_AnalogWatchdog_Channel_5                 ((uint32_t)0x14000000)
-#define ADC_AnalogWatchdog_Channel_6                 ((uint32_t)0x18000000)
-#define ADC_AnalogWatchdog_Channel_7                 ((uint32_t)0x1C000000)
-#define ADC_AnalogWatchdog_Channel_8                 ((uint32_t)0x20000000)
-#define ADC_AnalogWatchdog_Channel_9                 ((uint32_t)0x24000000)
-#define ADC_AnalogWatchdog_Channel_10                ((uint32_t)0x28000000) /*!< Not available for STM32F031 devices */
-#define ADC_AnalogWatchdog_Channel_11                ((uint32_t)0x2C000000) /*!< Not available for STM32F031 devices */
-#define ADC_AnalogWatchdog_Channel_12                ((uint32_t)0x30000000) /*!< Not available for STM32F031 devices */
-#define ADC_AnalogWatchdog_Channel_13                ((uint32_t)0x34000000) /*!< Not available for STM32F031 devices */
-#define ADC_AnalogWatchdog_Channel_14                ((uint32_t)0x38000000) /*!< Not available for STM32F031 devices */
-#define ADC_AnalogWatchdog_Channel_15                ((uint32_t)0x3C000000) /*!< Not available for STM32F031 devices */
-#define ADC_AnalogWatchdog_Channel_16                ((uint32_t)0x40000000)
-#define ADC_AnalogWatchdog_Channel_17                ((uint32_t)0x44000000)
-#define ADC_AnalogWatchdog_Channel_18                ((uint32_t)0x48000000)
-
-
-#define IS_ADC_ANALOG_WATCHDOG_CHANNEL(CHANNEL) (((CHANNEL) == ADC_AnalogWatchdog_Channel_0)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_1)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_2)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_3)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_4)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_5)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_6)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_7)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_8)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_9)  || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_10) || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_11) || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_12) || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_13) || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_14) || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_15) || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_16) || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_17) || \
-                                                 ((CHANNEL) == ADC_AnalogWatchdog_Channel_18))
-/**
-  * @}
-  */ 
-  
-/** @defgroup ADC_sampling_times 
-  * @{
-  */ 
-
-#define ADC_SampleTime_1_5Cycles                     ((uint32_t)0x00000000)
-#define ADC_SampleTime_7_5Cycles                     ((uint32_t)0x00000001)
-#define ADC_SampleTime_13_5Cycles                    ((uint32_t)0x00000002)
-#define ADC_SampleTime_28_5Cycles                    ((uint32_t)0x00000003)
-#define ADC_SampleTime_41_5Cycles                    ((uint32_t)0x00000004)
-#define ADC_SampleTime_55_5Cycles                    ((uint32_t)0x00000005)
-#define ADC_SampleTime_71_5Cycles                    ((uint32_t)0x00000006)
-#define ADC_SampleTime_239_5Cycles                   ((uint32_t)0x00000007)
-
-#define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SampleTime_1_5Cycles)   || \
-                                  ((TIME) == ADC_SampleTime_7_5Cycles)   || \
-                                  ((TIME) == ADC_SampleTime_13_5Cycles)  || \
-                                  ((TIME) == ADC_SampleTime_28_5Cycles)  || \
-                                  ((TIME) == ADC_SampleTime_41_5Cycles)  || \
-                                  ((TIME) == ADC_SampleTime_55_5Cycles)  || \
-                                  ((TIME) == ADC_SampleTime_71_5Cycles)  || \
-                                  ((TIME) == ADC_SampleTime_239_5Cycles))
-/**
-  * @}
-  */ 
-
-/** @defgroup ADC_thresholds 
-  * @{
-  */ 
-  
-#define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= 0xFFF)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup ADC_channels 
-  * @{
-  */ 
-  
-#define ADC_Channel_0                              ADC_CHSELR_CHSEL0
-#define ADC_Channel_1                              ADC_CHSELR_CHSEL1
-#define ADC_Channel_2                              ADC_CHSELR_CHSEL2
-#define ADC_Channel_3                              ADC_CHSELR_CHSEL3
-#define ADC_Channel_4                              ADC_CHSELR_CHSEL4
-#define ADC_Channel_5                              ADC_CHSELR_CHSEL5
-#define ADC_Channel_6                              ADC_CHSELR_CHSEL6
-#define ADC_Channel_7                              ADC_CHSELR_CHSEL7
-#define ADC_Channel_8                              ADC_CHSELR_CHSEL8
-#define ADC_Channel_9                              ADC_CHSELR_CHSEL9
-#define ADC_Channel_10                             ADC_CHSELR_CHSEL10 /*!< Not available for STM32F031 devices */
-#define ADC_Channel_11                             ADC_CHSELR_CHSEL11 /*!< Not available for STM32F031 devices */
-#define ADC_Channel_12                             ADC_CHSELR_CHSEL12 /*!< Not available for STM32F031 devices */
-#define ADC_Channel_13                             ADC_CHSELR_CHSEL13 /*!< Not available for STM32F031 devices */
-#define ADC_Channel_14                             ADC_CHSELR_CHSEL14 /*!< Not available for STM32F031 devices */
-#define ADC_Channel_15                             ADC_CHSELR_CHSEL15 /*!< Not available for STM32F031 devices */
-#define ADC_Channel_16                             ADC_CHSELR_CHSEL16
-#define ADC_Channel_17                             ADC_CHSELR_CHSEL17
-#define ADC_Channel_18                             ADC_CHSELR_CHSEL18 /*!< Not available for STM32F030 devices */
-
-#define ADC_Channel_TempSensor                     ((uint32_t)ADC_Channel_16)
-#define ADC_Channel_Vrefint                        ((uint32_t)ADC_Channel_17)
-#define ADC_Channel_Vbat                           ((uint32_t)ADC_Channel_18) /*!< Not available for STM32F030 devices */
-
-#define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) != (uint32_t)RESET) && (((CHANNEL) & 0xFFF80000) == (uint32_t)RESET))
-
-/**
-  * @}
-  */ 
-  
-/** @defgroup ADC_interrupts_definition 
-  * @{
-  */ 
-  
-#define ADC_IT_ADRDY                               ADC_IER_ADRDYIE
-#define ADC_IT_EOSMP                               ADC_IER_EOSMPIE
-#define ADC_IT_EOC                                 ADC_IER_EOCIE
-#define ADC_IT_EOSEQ                               ADC_IER_EOSEQIE
-#define ADC_IT_OVR                                 ADC_IER_OVRIE
-#define ADC_IT_AWD                                 ADC_IER_AWDIE
- 
-#define IS_ADC_CONFIG_IT(IT) (((IT) != (uint32_t)RESET) && (((IT) & 0xFFFFFF60) == (uint32_t)RESET))
-
-#define IS_ADC_GET_IT(IT) (((IT) == ADC_IT_ADRDY) || ((IT) == ADC_IT_EOSMP) || \
-                           ((IT) == ADC_IT_EOC)   || ((IT) == ADC_IT_EOSEQ) || \
-                           ((IT) == ADC_IT_OVR)   || ((IT) == ADC_IT_AWD))
-
-#define IS_ADC_CLEAR_IT(IT) (((IT) != (uint32_t)RESET) && (((IT) & 0xFFFFFF60) == (uint32_t)RESET))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup ADC_flags_definition 
-  * @{
-  */ 
-  
-#define ADC_FLAG_ADRDY                             ADC_ISR_ADRDY
-#define ADC_FLAG_EOSMP                             ADC_ISR_EOSMP
-#define ADC_FLAG_EOC                               ADC_ISR_EOC
-#define ADC_FLAG_EOSEQ                             ADC_ISR_EOSEQ
-#define ADC_FLAG_OVR                               ADC_ISR_OVR
-#define ADC_FLAG_AWD                               ADC_ISR_AWD
-
-#define ADC_FLAG_ADEN                              ((uint32_t)0x01000001)
-#define ADC_FLAG_ADDIS                             ((uint32_t)0x01000002)
-#define ADC_FLAG_ADSTART                           ((uint32_t)0x01000004)
-#define ADC_FLAG_ADSTP                             ((uint32_t)0x01000010)
-#define ADC_FLAG_ADCAL                             ((uint32_t)0x81000000) 
-
-#define IS_ADC_CLEAR_FLAG(FLAG) (((FLAG) != (uint32_t)RESET) && (((FLAG) & 0xFFFFFF60) == (uint32_t)RESET))
-
-#define IS_ADC_GET_FLAG(FLAG) (((FLAG) == ADC_FLAG_ADRDY)   || ((FLAG) == ADC_FLAG_EOSMP) || \
-                               ((FLAG) == ADC_FLAG_EOC)     || ((FLAG) == ADC_FLAG_EOSEQ) || \
-                               ((FLAG) == ADC_FLAG_AWD)     || ((FLAG) == ADC_FLAG_OVR)   || \
-                               ((FLAG) == ADC_FLAG_ADEN)    || ((FLAG) == ADC_FLAG_ADDIS) || \
-                               ((FLAG) == ADC_FLAG_ADSTART) || ((FLAG) == ADC_FLAG_ADSTP) || \
-                               ((FLAG) == ADC_FLAG_ADCAL))
-/**
-  * @}
-  */
-  
-/**
-  * @}
-  */ 
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-/*  Function used to set the ADC configuration to the default reset state *****/
-void ADC_DeInit(ADC_TypeDef* ADCx);
-
-/* Initialization and Configuration functions *********************************/ 
-void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
-void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);
-void ADC_ClockModeConfig(ADC_TypeDef* ADCx, uint32_t ADC_ClockMode);
-void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-/* This Function is obsolete and maintained for legacy purpose only.
-   ADC_ClockModeConfig() function should be used instead */
-void ADC_JitterCmd(ADC_TypeDef* ADCx, uint32_t ADC_JitterOff, FunctionalState NewState);
-
-/* Power saving functions *****************************************************/
-void ADC_AutoPowerOffCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-void ADC_WaitModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-
-/* Analog Watchdog configuration functions ************************************/
-void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold,uint16_t LowThreshold);
-void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog_Channel);
-void ADC_AnalogWatchdogSingleChannelCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-
-/* Temperature Sensor , Vrefint and Vbat management function ******************/
-void ADC_TempSensorCmd(FunctionalState NewState);
-void ADC_VrefintCmd(FunctionalState NewState);
-void ADC_VbatCmd(FunctionalState NewState); /*!< Not applicable for STM32F030 devices */
-
-/* Channels Configuration functions *******************************************/
-void ADC_ChannelConfig(ADC_TypeDef* ADCx, uint32_t ADC_Channel, uint32_t ADC_SampleTime);
-void ADC_ContinuousModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-void ADC_OverrunModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-uint32_t ADC_GetCalibrationFactor(ADC_TypeDef* ADCx);
-void ADC_StopOfConversion(ADC_TypeDef* ADCx);
-void ADC_StartOfConversion(ADC_TypeDef* ADCx);
-uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);
-
-/* Regular Channels DMA Configuration functions *******************************/
-void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-void ADC_DMARequestModeConfig(ADC_TypeDef* ADCx, uint32_t ADC_DMARequestMode);
-
-/* Interrupts and flags management functions **********************************/
-void ADC_ITConfig(ADC_TypeDef* ADCx, uint32_t ADC_IT, FunctionalState NewState);
-FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint32_t ADC_FLAG);
-void ADC_ClearFlag(ADC_TypeDef* ADCx, uint32_t ADC_FLAG);
-ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint32_t ADC_IT);
-void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint32_t ADC_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_ADC_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_can.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_can.h
deleted file mode 100644
index 60a4098..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_can.h	
+++ /dev/null
@@ -1,643 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_can.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the CAN firmware 
-  *          library, applicable only for STM32F072 devices.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0xx_CAN_H
-#define __STM32F0xx_CAN_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup CAN
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-#define IS_CAN_ALL_PERIPH(PERIPH) (((PERIPH) == CAN))
-
-/** 
-  * @brief  CAN init structure definition
-  */
-typedef struct
-{
-  uint16_t CAN_Prescaler;   /*!< Specifies the length of a time quantum. 
-                                 It ranges from 1 to 1024. */
-  
-  uint8_t CAN_Mode;         /*!< Specifies the CAN operating mode.
-                                 This parameter can be a value of @ref CAN_operating_mode */
-
-  uint8_t CAN_SJW;          /*!< Specifies the maximum number of time quanta 
-                                 the CAN hardware is allowed to lengthen or 
-                                 shorten a bit to perform resynchronization.
-                                 This parameter can be a value of @ref CAN_synchronisation_jump_width */
-
-  uint8_t CAN_BS1;          /*!< Specifies the number of time quanta in Bit 
-                                 Segment 1. This parameter can be a value of 
-                                 @ref CAN_time_quantum_in_bit_segment_1 */
-
-  uint8_t CAN_BS2;          /*!< Specifies the number of time quanta in Bit Segment 2.
-                                 This parameter can be a value of @ref CAN_time_quantum_in_bit_segment_2 */
-  
-  FunctionalState CAN_TTCM; /*!< Enable or disable the time triggered communication mode.
-                                This parameter can be set either to ENABLE or DISABLE. */
-  
-  FunctionalState CAN_ABOM;  /*!< Enable or disable the automatic bus-off management.
-                                  This parameter can be set either to ENABLE or DISABLE. */
-
-  FunctionalState CAN_AWUM;  /*!< Enable or disable the automatic wake-up mode. 
-                                  This parameter can be set either to ENABLE or DISABLE. */
-
-  FunctionalState CAN_NART;  /*!< Enable or disable the non-automatic retransmission mode.
-                                  This parameter can be set either to ENABLE or DISABLE. */
-
-  FunctionalState CAN_RFLM;  /*!< Enable or disable the Receive FIFO Locked mode.
-                                  This parameter can be set either to ENABLE or DISABLE. */
-
-  FunctionalState CAN_TXFP;  /*!< Enable or disable the transmit FIFO priority.
-                                  This parameter can be set either to ENABLE or DISABLE. */
-} CAN_InitTypeDef;
-
-/** 
-  * @brief  CAN filter init structure definition
-  */
-typedef struct
-{
-  uint16_t CAN_FilterIdHigh;         /*!< Specifies the filter identification number (MSBs for a 32-bit
-                                              configuration, first one for a 16-bit configuration).
-                                              This parameter can be a value between 0x0000 and 0xFFFF */
-
-  uint16_t CAN_FilterIdLow;          /*!< Specifies the filter identification number (LSBs for a 32-bit
-                                              configuration, second one for a 16-bit configuration).
-                                              This parameter can be a value between 0x0000 and 0xFFFF */
-
-  uint16_t CAN_FilterMaskIdHigh;     /*!< Specifies the filter mask number or identification number,
-                                              according to the mode (MSBs for a 32-bit configuration,
-                                              first one for a 16-bit configuration).
-                                              This parameter can be a value between 0x0000 and 0xFFFF */
-
-  uint16_t CAN_FilterMaskIdLow;      /*!< Specifies the filter mask number or identification number,
-                                              according to the mode (LSBs for a 32-bit configuration,
-                                              second one for a 16-bit configuration).
-                                              This parameter can be a value between 0x0000 and 0xFFFF */
-
-  uint16_t CAN_FilterFIFOAssignment; /*!< Specifies the FIFO (0 or 1) which will be assigned to the filter.
-                                              This parameter can be a value of @ref CAN_filter_FIFO */
-  
-  uint8_t CAN_FilterNumber;          /*!< Specifies the filter which will be initialized. It ranges from 0 to 13. */
-
-  uint8_t CAN_FilterMode;            /*!< Specifies the filter mode to be initialized.
-                                              This parameter can be a value of @ref CAN_filter_mode */
-
-  uint8_t CAN_FilterScale;           /*!< Specifies the filter scale.
-                                              This parameter can be a value of @ref CAN_filter_scale */
-
-  FunctionalState CAN_FilterActivation; /*!< Enable or disable the filter.
-                                              This parameter can be set either to ENABLE or DISABLE. */
-} CAN_FilterInitTypeDef;
-
-/** 
-  * @brief  CAN Tx message structure definition  
-  */
-typedef struct
-{
-  uint32_t StdId;  /*!< Specifies the standard identifier.
-                        This parameter can be a value between 0 to 0x7FF. */
-
-  uint32_t ExtId;  /*!< Specifies the extended identifier.
-                        This parameter can be a value between 0 to 0x1FFFFFFF. */
-
-  uint8_t IDE;     /*!< Specifies the type of identifier for the message that 
-                        will be transmitted. This parameter can be a value 
-                        of @ref CAN_identifier_type */
-
-  uint8_t RTR;     /*!< Specifies the type of frame for the message that will 
-                        be transmitted. This parameter can be a value of 
-                        @ref CAN_remote_transmission_request */
-
-  uint8_t DLC;     /*!< Specifies the length of the frame that will be 
-                        transmitted. This parameter can be a value between 
-                        0 to 8 */
-
-  uint8_t Data[8]; /*!< Contains the data to be transmitted. It ranges from 0 
-                        to 0xFF. */
-} CanTxMsg;
-
-/** 
-  * @brief  CAN Rx message structure definition  
-  */
-typedef struct
-{
-  uint32_t StdId;  /*!< Specifies the standard identifier.
-                        This parameter can be a value between 0 to 0x7FF. */
-
-  uint32_t ExtId;  /*!< Specifies the extended identifier.
-                        This parameter can be a value between 0 to 0x1FFFFFFF. */
-
-  uint8_t IDE;     /*!< Specifies the type of identifier for the message that 
-                        will be received. This parameter can be a value of 
-                        @ref CAN_identifier_type */
-
-  uint8_t RTR;     /*!< Specifies the type of frame for the received message.
-                        This parameter can be a value of 
-                        @ref CAN_remote_transmission_request */
-
-  uint8_t DLC;     /*!< Specifies the length of the frame that will be received.
-                        This parameter can be a value between 0 to 8 */
-
-  uint8_t Data[8]; /*!< Contains the data to be received. It ranges from 0 to 
-                        0xFF. */
-
-  uint8_t FMI;     /*!< Specifies the index of the filter the message stored in 
-                        the mailbox passes through. This parameter can be a 
-                        value between 0 to 0xFF */
-} CanRxMsg;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup CAN_Exported_Constants
-  * @{
-  */
-
-/** @defgroup CAN_InitStatus 
-  * @{
-  */
-
-#define CAN_InitStatus_Failed              ((uint8_t)0x00) /*!< CAN initialization failed */
-#define CAN_InitStatus_Success             ((uint8_t)0x01) /*!< CAN initialization OK */
-
-
-/* Legacy defines */
-#define CANINITFAILED    CAN_InitStatus_Failed
-#define CANINITOK        CAN_InitStatus_Success
-/**
-  * @}
-  */
-
-/** @defgroup CAN_operating_mode 
-  * @{
-  */
-
-#define CAN_Mode_Normal             ((uint8_t)0x00)  /*!< normal mode */
-#define CAN_Mode_LoopBack           ((uint8_t)0x01)  /*!< loopback mode */
-#define CAN_Mode_Silent             ((uint8_t)0x02)  /*!< silent mode */
-#define CAN_Mode_Silent_LoopBack    ((uint8_t)0x03)  /*!< loopback combined with silent mode */
-
-#define IS_CAN_MODE(MODE) (((MODE) == CAN_Mode_Normal) || \
-                           ((MODE) == CAN_Mode_LoopBack)|| \
-                           ((MODE) == CAN_Mode_Silent) || \
-                           ((MODE) == CAN_Mode_Silent_LoopBack))
-/**
-  * @}
-  */
-
-
- /**
-  * @defgroup CAN_operating_mode 
-  * @{
-  */  
-#define CAN_OperatingMode_Initialization  ((uint8_t)0x00) /*!< Initialization mode */
-#define CAN_OperatingMode_Normal          ((uint8_t)0x01) /*!< Normal mode */
-#define CAN_OperatingMode_Sleep           ((uint8_t)0x02) /*!< sleep mode */
-
-
-#define IS_CAN_OPERATING_MODE(MODE) (((MODE) == CAN_OperatingMode_Initialization) ||\
-                                    ((MODE) == CAN_OperatingMode_Normal)|| \
-																		((MODE) == CAN_OperatingMode_Sleep))
-/**
-  * @}
-  */
-  
-/**
-  * @defgroup CAN_operating_mode_status
-  * @{
-  */  
-
-#define CAN_ModeStatus_Failed    ((uint8_t)0x00)                /*!< CAN entering the specific mode failed */
-#define CAN_ModeStatus_Success   ((uint8_t)!CAN_ModeStatus_Failed)   /*!< CAN entering the specific mode Succeed */
-/**
-  * @}
-  */
-
-/** @defgroup CAN_synchronisation_jump_width 
-  * @{
-  */
-#define CAN_SJW_1tq                 ((uint8_t)0x00)  /*!< 1 time quantum */
-#define CAN_SJW_2tq                 ((uint8_t)0x01)  /*!< 2 time quantum */
-#define CAN_SJW_3tq                 ((uint8_t)0x02)  /*!< 3 time quantum */
-#define CAN_SJW_4tq                 ((uint8_t)0x03)  /*!< 4 time quantum */
-
-#define IS_CAN_SJW(SJW) (((SJW) == CAN_SJW_1tq) || ((SJW) == CAN_SJW_2tq)|| \
-                         ((SJW) == CAN_SJW_3tq) || ((SJW) == CAN_SJW_4tq))
-/**
-  * @}
-  */
-
-/** @defgroup CAN_time_quantum_in_bit_segment_1 
-  * @{
-  */
-#define CAN_BS1_1tq                 ((uint8_t)0x00)  /*!< 1 time quantum */
-#define CAN_BS1_2tq                 ((uint8_t)0x01)  /*!< 2 time quantum */
-#define CAN_BS1_3tq                 ((uint8_t)0x02)  /*!< 3 time quantum */
-#define CAN_BS1_4tq                 ((uint8_t)0x03)  /*!< 4 time quantum */
-#define CAN_BS1_5tq                 ((uint8_t)0x04)  /*!< 5 time quantum */
-#define CAN_BS1_6tq                 ((uint8_t)0x05)  /*!< 6 time quantum */
-#define CAN_BS1_7tq                 ((uint8_t)0x06)  /*!< 7 time quantum */
-#define CAN_BS1_8tq                 ((uint8_t)0x07)  /*!< 8 time quantum */
-#define CAN_BS1_9tq                 ((uint8_t)0x08)  /*!< 9 time quantum */
-#define CAN_BS1_10tq                ((uint8_t)0x09)  /*!< 10 time quantum */
-#define CAN_BS1_11tq                ((uint8_t)0x0A)  /*!< 11 time quantum */
-#define CAN_BS1_12tq                ((uint8_t)0x0B)  /*!< 12 time quantum */
-#define CAN_BS1_13tq                ((uint8_t)0x0C)  /*!< 13 time quantum */
-#define CAN_BS1_14tq                ((uint8_t)0x0D)  /*!< 14 time quantum */
-#define CAN_BS1_15tq                ((uint8_t)0x0E)  /*!< 15 time quantum */
-#define CAN_BS1_16tq                ((uint8_t)0x0F)  /*!< 16 time quantum */
-
-#define IS_CAN_BS1(BS1) ((BS1) <= CAN_BS1_16tq)
-/**
-  * @}
-  */
-
-/** @defgroup CAN_time_quantum_in_bit_segment_2 
-  * @{
-  */
-#define CAN_BS2_1tq                 ((uint8_t)0x00)  /*!< 1 time quantum */
-#define CAN_BS2_2tq                 ((uint8_t)0x01)  /*!< 2 time quantum */
-#define CAN_BS2_3tq                 ((uint8_t)0x02)  /*!< 3 time quantum */
-#define CAN_BS2_4tq                 ((uint8_t)0x03)  /*!< 4 time quantum */
-#define CAN_BS2_5tq                 ((uint8_t)0x04)  /*!< 5 time quantum */
-#define CAN_BS2_6tq                 ((uint8_t)0x05)  /*!< 6 time quantum */
-#define CAN_BS2_7tq                 ((uint8_t)0x06)  /*!< 7 time quantum */
-#define CAN_BS2_8tq                 ((uint8_t)0x07)  /*!< 8 time quantum */
-
-#define IS_CAN_BS2(BS2) ((BS2) <= CAN_BS2_8tq)
-/**
-  * @}
-  */
-
-/** @defgroup CAN_clock_prescaler 
-  * @{
-  */
-#define IS_CAN_PRESCALER(PRESCALER) (((PRESCALER) >= 1) && ((PRESCALER) <= 1024))
-/**
-  * @}
-  */
-
-/** @defgroup CAN_filter_number 
-  * @{
-  */
-#define IS_CAN_FILTER_NUMBER(NUMBER) ((NUMBER) <= 27)
-/**
-  * @}
-  */
-
-/** @defgroup CAN_filter_mode 
-  * @{
-  */
-#define CAN_FilterMode_IdMask       ((uint8_t)0x00)  /*!< identifier/mask mode */
-#define CAN_FilterMode_IdList       ((uint8_t)0x01)  /*!< identifier list mode */
-
-#define IS_CAN_FILTER_MODE(MODE) (((MODE) == CAN_FilterMode_IdMask) || \
-                                  ((MODE) == CAN_FilterMode_IdList))
-/**
-  * @}
-  */
-
-/** @defgroup CAN_filter_scale 
-  * @{
-  */
-#define CAN_FilterScale_16bit       ((uint8_t)0x00) /*!< Two 16-bit filters */
-#define CAN_FilterScale_32bit       ((uint8_t)0x01) /*!< One 32-bit filter */
-
-#define IS_CAN_FILTER_SCALE(SCALE) (((SCALE) == CAN_FilterScale_16bit) || \
-                                    ((SCALE) == CAN_FilterScale_32bit))
-/**
-  * @}
-  */
-
-/** @defgroup CAN_filter_FIFO
-  * @{
-  */
-#define CAN_Filter_FIFO0             ((uint8_t)0x00)  /*!< Filter FIFO 0 assignment for filter x */
-#define CAN_Filter_FIFO1             ((uint8_t)0x01)  /*!< Filter FIFO 1 assignment for filter x */
-#define IS_CAN_FILTER_FIFO(FIFO) (((FIFO) == CAN_FilterFIFO0) || \
-                                  ((FIFO) == CAN_FilterFIFO1))
-
-/* Legacy defines */
-#define CAN_FilterFIFO0  CAN_Filter_FIFO0
-#define CAN_FilterFIFO1  CAN_Filter_FIFO1
-/**
-  * @}
-  */
-
-/** @defgroup CAN_Start_bank_filter_for_slave_CAN 
-  * @{
-  */
-#define IS_CAN_BANKNUMBER(BANKNUMBER) (((BANKNUMBER) >= 1) && ((BANKNUMBER) <= 27))
-/**
-  * @}
-  */
-
-/** @defgroup CAN_Tx 
-  * @{
-  */
-#define IS_CAN_TRANSMITMAILBOX(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= ((uint8_t)0x02))
-#define IS_CAN_STDID(STDID)   ((STDID) <= ((uint32_t)0x7FF))
-#define IS_CAN_EXTID(EXTID)   ((EXTID) <= ((uint32_t)0x1FFFFFFF))
-#define IS_CAN_DLC(DLC)       ((DLC) <= ((uint8_t)0x08))
-/**
-  * @}
-  */
-
-/** @defgroup CAN_identifier_type 
-  * @{
-  */
-#define CAN_Id_Standard             ((uint32_t)0x00000000)  /*!< Standard Id */
-#define CAN_Id_Extended             ((uint32_t)0x00000004)  /*!< Extended Id */
-#define IS_CAN_IDTYPE(IDTYPE) (((IDTYPE) == CAN_Id_Standard) || \
-                               ((IDTYPE) == CAN_Id_Extended))
-
-/* Legacy defines */
-#define CAN_ID_STD      CAN_Id_Standard           
-#define CAN_ID_EXT      CAN_Id_Extended
-/**
-  * @}
-  */
-
-/** @defgroup CAN_remote_transmission_request 
-  * @{
-  */
-#define CAN_RTR_Data                ((uint32_t)0x00000000)  /*!< Data frame */
-#define CAN_RTR_Remote              ((uint32_t)0x00000002)  /*!< Remote frame */
-#define IS_CAN_RTR(RTR) (((RTR) == CAN_RTR_Data) || ((RTR) == CAN_RTR_Remote))
-
-/* Legacy defines */
-#define CAN_RTR_DATA     CAN_RTR_Data         
-#define CAN_RTR_REMOTE   CAN_RTR_Remote
-/**
-  * @}
-  */
-
-/** @defgroup CAN_transmit_constants 
-  * @{
-  */
-#define CAN_TxStatus_Failed         ((uint8_t)0x00)/*!< CAN transmission failed */
-#define CAN_TxStatus_Ok             ((uint8_t)0x01) /*!< CAN transmission succeeded */
-#define CAN_TxStatus_Pending        ((uint8_t)0x02) /*!< CAN transmission pending */
-#define CAN_TxStatus_NoMailBox      ((uint8_t)0x04) /*!< CAN cell did not provide 
-                                                         an empty mailbox */
-/* Legacy defines */	
-#define CANTXFAILED                  CAN_TxStatus_Failed
-#define CANTXOK                      CAN_TxStatus_Ok
-#define CANTXPENDING                 CAN_TxStatus_Pending
-#define CAN_NO_MB                    CAN_TxStatus_NoMailBox
-/**
-  * @}
-  */
-
-/** @defgroup CAN_receive_FIFO_number_constants 
-  * @{
-  */
-#define CAN_FIFO0                 ((uint8_t)0x00) /*!< CAN FIFO 0 used to receive */
-#define CAN_FIFO1                 ((uint8_t)0x01) /*!< CAN FIFO 1 used to receive */
-
-#define IS_CAN_FIFO(FIFO) (((FIFO) == CAN_FIFO0) || ((FIFO) == CAN_FIFO1))
-/**
-  * @}
-  */
-
-/** @defgroup CAN_sleep_constants 
-  * @{
-  */
-#define CAN_Sleep_Failed     ((uint8_t)0x00) /*!< CAN did not enter the sleep mode */
-#define CAN_Sleep_Ok         ((uint8_t)0x01) /*!< CAN entered the sleep mode */
-
-/* Legacy defines */	
-#define CANSLEEPFAILED   CAN_Sleep_Failed
-#define CANSLEEPOK       CAN_Sleep_Ok
-/**
-  * @}
-  */
-
-/** @defgroup CAN_wake_up_constants 
-  * @{
-  */
-#define CAN_WakeUp_Failed        ((uint8_t)0x00) /*!< CAN did not leave the sleep mode */
-#define CAN_WakeUp_Ok            ((uint8_t)0x01) /*!< CAN leaved the sleep mode */
-
-/* Legacy defines */
-#define CANWAKEUPFAILED   CAN_WakeUp_Failed        
-#define CANWAKEUPOK       CAN_WakeUp_Ok        
-/**
-  * @}
-  */
-
-/**
-  * @defgroup CAN_Error_Code_constants
-  * @{
-  */                                                         
-#define CAN_ErrorCode_NoErr           ((uint8_t)0x00) /*!< No Error */ 
-#define	CAN_ErrorCode_StuffErr        ((uint8_t)0x10) /*!< Stuff Error */ 
-#define	CAN_ErrorCode_FormErr         ((uint8_t)0x20) /*!< Form Error */ 
-#define	CAN_ErrorCode_ACKErr          ((uint8_t)0x30) /*!< Acknowledgment Error */ 
-#define	CAN_ErrorCode_BitRecessiveErr ((uint8_t)0x40) /*!< Bit Recessive Error */ 
-#define	CAN_ErrorCode_BitDominantErr  ((uint8_t)0x50) /*!< Bit Dominant Error */ 
-#define	CAN_ErrorCode_CRCErr          ((uint8_t)0x60) /*!< CRC Error  */ 
-#define	CAN_ErrorCode_SoftwareSetErr  ((uint8_t)0x70) /*!< Software Set Error */ 
-/**
-  * @}
-  */
-
-/** @defgroup CAN_flags 
-  * @{
-  */
-/* If the flag is 0x3XXXXXXX, it means that it can be used with CAN_GetFlagStatus()
-   and CAN_ClearFlag() functions. */
-/* If the flag is 0x1XXXXXXX, it means that it can only be used with 
-   CAN_GetFlagStatus() function.  */
-
-/* Transmit Flags */
-#define CAN_FLAG_RQCP0             ((uint32_t)0x38000001) /*!< Request MailBox0 Flag */
-#define CAN_FLAG_RQCP1             ((uint32_t)0x38000100) /*!< Request MailBox1 Flag */
-#define CAN_FLAG_RQCP2             ((uint32_t)0x38010000) /*!< Request MailBox2 Flag */
-
-/* Receive Flags */
-#define CAN_FLAG_FMP0              ((uint32_t)0x12000003) /*!< FIFO 0 Message Pending Flag */
-#define CAN_FLAG_FF0               ((uint32_t)0x32000008) /*!< FIFO 0 Full Flag            */
-#define CAN_FLAG_FOV0              ((uint32_t)0x32000010) /*!< FIFO 0 Overrun Flag         */
-#define CAN_FLAG_FMP1              ((uint32_t)0x14000003) /*!< FIFO 1 Message Pending Flag */
-#define CAN_FLAG_FF1               ((uint32_t)0x34000008) /*!< FIFO 1 Full Flag            */
-#define CAN_FLAG_FOV1              ((uint32_t)0x34000010) /*!< FIFO 1 Overrun Flag         */
-
-/* Operating Mode Flags */
-#define CAN_FLAG_WKU               ((uint32_t)0x31000008) /*!< Wake up Flag */
-#define CAN_FLAG_SLAK              ((uint32_t)0x31000012) /*!< Sleep acknowledge Flag */
-/* @note When SLAK interrupt is disabled (SLKIE=0), no polling on SLAKI is possible. 
-         In this case the SLAK bit can be polled.*/
-
-/* Error Flags */
-#define CAN_FLAG_EWG               ((uint32_t)0x10F00001) /*!< Error Warning Flag   */
-#define CAN_FLAG_EPV               ((uint32_t)0x10F00002) /*!< Error Passive Flag   */
-#define CAN_FLAG_BOF               ((uint32_t)0x10F00004) /*!< Bus-Off Flag         */
-#define CAN_FLAG_LEC               ((uint32_t)0x30F00070) /*!< Last error code Flag */
-
-#define IS_CAN_GET_FLAG(FLAG) (((FLAG) == CAN_FLAG_LEC)  || ((FLAG) == CAN_FLAG_BOF)   || \
-                               ((FLAG) == CAN_FLAG_EPV)  || ((FLAG) == CAN_FLAG_EWG)   || \
-                               ((FLAG) == CAN_FLAG_WKU)  || ((FLAG) == CAN_FLAG_FOV0)  || \
-                               ((FLAG) == CAN_FLAG_FF0)  || ((FLAG) == CAN_FLAG_FMP0)  || \
-                               ((FLAG) == CAN_FLAG_FOV1) || ((FLAG) == CAN_FLAG_FF1)   || \
-                               ((FLAG) == CAN_FLAG_FMP1) || ((FLAG) == CAN_FLAG_RQCP2) || \
-                               ((FLAG) == CAN_FLAG_RQCP1)|| ((FLAG) == CAN_FLAG_RQCP0) || \
-                               ((FLAG) == CAN_FLAG_SLAK ))
-
-#define IS_CAN_CLEAR_FLAG(FLAG)(((FLAG) == CAN_FLAG_LEC) || ((FLAG) == CAN_FLAG_RQCP2) || \
-                                ((FLAG) == CAN_FLAG_RQCP1)  || ((FLAG) == CAN_FLAG_RQCP0) || \
-                                ((FLAG) == CAN_FLAG_FF0)  || ((FLAG) == CAN_FLAG_FOV0) ||\
-                                ((FLAG) == CAN_FLAG_FF1) || ((FLAG) == CAN_FLAG_FOV1) || \
-                                ((FLAG) == CAN_FLAG_WKU) || ((FLAG) == CAN_FLAG_SLAK))
-/**
-  * @}
-  */
-
-  
-/** @defgroup CAN_interrupts 
-  * @{
-  */ 
-#define CAN_IT_TME                  ((uint32_t)0x00000001) /*!< Transmit mailbox empty Interrupt*/
-
-/* Receive Interrupts */
-#define CAN_IT_FMP0                 ((uint32_t)0x00000002) /*!< FIFO 0 message pending Interrupt*/
-#define CAN_IT_FF0                  ((uint32_t)0x00000004) /*!< FIFO 0 full Interrupt*/
-#define CAN_IT_FOV0                 ((uint32_t)0x00000008) /*!< FIFO 0 overrun Interrupt*/
-#define CAN_IT_FMP1                 ((uint32_t)0x00000010) /*!< FIFO 1 message pending Interrupt*/
-#define CAN_IT_FF1                  ((uint32_t)0x00000020) /*!< FIFO 1 full Interrupt*/
-#define CAN_IT_FOV1                 ((uint32_t)0x00000040) /*!< FIFO 1 overrun Interrupt*/
-
-/* Operating Mode Interrupts */
-#define CAN_IT_WKU                  ((uint32_t)0x00010000) /*!< Wake-up Interrupt*/
-#define CAN_IT_SLK                  ((uint32_t)0x00020000) /*!< Sleep acknowledge Interrupt*/
-
-/* Error Interrupts */
-#define CAN_IT_EWG                  ((uint32_t)0x00000100) /*!< Error warning Interrupt*/
-#define CAN_IT_EPV                  ((uint32_t)0x00000200) /*!< Error passive Interrupt*/
-#define CAN_IT_BOF                  ((uint32_t)0x00000400) /*!< Bus-off Interrupt*/
-#define CAN_IT_LEC                  ((uint32_t)0x00000800) /*!< Last error code Interrupt*/
-#define CAN_IT_ERR                  ((uint32_t)0x00008000) /*!< Error Interrupt*/
-
-/* Flags named as Interrupts : kept only for FW compatibility */
-#define CAN_IT_RQCP0   CAN_IT_TME
-#define CAN_IT_RQCP1   CAN_IT_TME
-#define CAN_IT_RQCP2   CAN_IT_TME
-
-
-#define IS_CAN_IT(IT)        (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FMP0)  ||\
-                             ((IT) == CAN_IT_FF0)  || ((IT) == CAN_IT_FOV0)  ||\
-                             ((IT) == CAN_IT_FMP1) || ((IT) == CAN_IT_FF1)   ||\
-                             ((IT) == CAN_IT_FOV1) || ((IT) == CAN_IT_EWG)   ||\
-                             ((IT) == CAN_IT_EPV)  || ((IT) == CAN_IT_BOF)   ||\
-                             ((IT) == CAN_IT_LEC)  || ((IT) == CAN_IT_ERR)   ||\
-                             ((IT) == CAN_IT_WKU)  || ((IT) == CAN_IT_SLK))
-
-#define IS_CAN_CLEAR_IT(IT) (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FF0)    ||\
-                             ((IT) == CAN_IT_FOV0)|| ((IT) == CAN_IT_FF1)    ||\
-                             ((IT) == CAN_IT_FOV1)|| ((IT) == CAN_IT_EWG)    ||\
-                             ((IT) == CAN_IT_EPV) || ((IT) == CAN_IT_BOF)    ||\
-                             ((IT) == CAN_IT_LEC) || ((IT) == CAN_IT_ERR)    ||\
-                             ((IT) == CAN_IT_WKU) || ((IT) == CAN_IT_SLK))
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions --------------------------------------------------------*/  
-
-/*  Function used to set the CAN configuration to the default reset state *****/ 
-void CAN_DeInit(CAN_TypeDef* CANx);
-
-/* Initialization and Configuration functions *********************************/ 
-uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct);
-void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct);
-void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct);
-void CAN_SlaveStartBank(uint8_t CAN_BankNumber); 
-void CAN_DBGFreeze(CAN_TypeDef* CANx, FunctionalState NewState);
-void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState);
-
-/* CAN Frames Transmission functions ******************************************/
-uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage);
-uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox);
-void CAN_CancelTransmit(CAN_TypeDef* CANx, uint8_t Mailbox);
-
-/* CAN Frames Reception functions *********************************************/
-void CAN_Receive(CAN_TypeDef* CANx, uint8_t FIFONumber, CanRxMsg* RxMessage);
-void CAN_FIFORelease(CAN_TypeDef* CANx, uint8_t FIFONumber);
-uint8_t CAN_MessagePending(CAN_TypeDef* CANx, uint8_t FIFONumber);
-
-/* Operation modes functions **************************************************/
-uint8_t CAN_OperatingModeRequest(CAN_TypeDef* CANx, uint8_t CAN_OperatingMode);
-uint8_t CAN_Sleep(CAN_TypeDef* CANx);
-uint8_t CAN_WakeUp(CAN_TypeDef* CANx);
-
-/* CAN Bus Error management functions *****************************************/
-uint8_t CAN_GetLastErrorCode(CAN_TypeDef* CANx);
-uint8_t CAN_GetReceiveErrorCounter(CAN_TypeDef* CANx);
-uint8_t CAN_GetLSBTransmitErrorCounter(CAN_TypeDef* CANx);
-
-/* Interrupts and flags management functions **********************************/
-void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState);
-FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG);
-void CAN_ClearFlag(CAN_TypeDef* CANx, uint32_t CAN_FLAG);
-ITStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_IT);
-void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0xx_CAN_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_cec.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_cec.h
deleted file mode 100644
index 29f06a6..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_cec.h	
+++ /dev/null
@@ -1,300 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_cec.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the CEC firmware 
-  *          library, applicable only for STM32F051, STM32F042 and STM32F072 devices.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_CEC_H
-#define __STM32F0XX_CEC_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup CEC
-  * @{
-  */
-/* Exported types ------------------------------------------------------------*/
-  
-/** 
-  * @brief CEC Init structure definition 
-  */
-typedef struct
-{
-  uint32_t CEC_SignalFreeTime;     /*!< Specifies the CEC Signal Free Time configuration.
-                                   This parameter can be a value of @ref CEC_Signal_Free_Time */
-  uint32_t CEC_RxTolerance;        /*!< Specifies the CEC Reception Tolerance.
-                                   This parameter can be a value of @ref CEC_RxTolerance */
-  uint32_t CEC_StopReception;      /*!< Specifies the CEC Stop Reception.
-                                   This parameter can be a value of @ref CEC_Stop_Reception */
-  uint32_t CEC_BitRisingError;     /*!< Specifies the CEC Bit Rising Error generation.
-                                   This parameter can be a value of @ref CEC_Bit_Rising_Error_Generation */
-  uint32_t CEC_LongBitPeriodError; /*!< Specifies the CEC Long Bit Error generation.
-                                   This parameter can be a value of @ref CEC_Long_Bit_Error_Generation */
-  uint32_t CEC_BRDNoGen;           /*!< Specifies the CEC Broadcast Error generation.
-                                   This parameter can be a value of @ref CEC_BDR_No_Gen */
-  uint32_t CEC_SFTOption;          /*!< Specifies the CEC Signal Free Time option.
-                                   This parameter can be a value of @ref CEC_SFT_Option */
-
-}CEC_InitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup CEC_Exported_Constants
-  * @{
-  */
-
-/** @defgroup CEC_Signal_Free_Time
-  * @{
-  */
-#define CEC_SignalFreeTime_Standard     ((uint32_t)0x00000000) /*!< CEC Signal Free Time Standard         */
-#define CEC_SignalFreeTime_1T           ((uint32_t)0x00000001) /*!< CEC  1.5 nominal data bit periods     */
-#define CEC_SignalFreeTime_2T           ((uint32_t)0x00000002) /*!< CEC  2.5 nominal data bit periods     */
-#define CEC_SignalFreeTime_3T           ((uint32_t)0x00000003) /*!< CEC  3.5 nominal data bit periods     */
-#define CEC_SignalFreeTime_4T           ((uint32_t)0x00000004) /*!< CEC  4.5 nominal data bit periods     */
-#define CEC_SignalFreeTime_5T           ((uint32_t)0x00000005) /*!< CEC  5.5 nominal data bit periods     */
-#define CEC_SignalFreeTime_6T           ((uint32_t)0x00000006) /*!< CEC  6.5 nominal data bit periods     */
-#define CEC_SignalFreeTime_7T           ((uint32_t)0x00000007) /*!< CEC  7.5 nominal data bit periods     */
-
-#define IS_CEC_SIGNAL_FREE_TIME(TIME) (((TIME) == CEC_SignalFreeTime_Standard) || \
-                                       ((TIME) == CEC_SignalFreeTime_1T)|| \
-                                       ((TIME) == CEC_SignalFreeTime_2T)|| \
-                                       ((TIME) == CEC_SignalFreeTime_3T)|| \
-                                       ((TIME) == CEC_SignalFreeTime_4T)|| \
-                                       ((TIME) == CEC_SignalFreeTime_5T)|| \
-                                       ((TIME) == CEC_SignalFreeTime_6T)|| \
-                                       ((TIME) == CEC_SignalFreeTime_7T))
-/**
-  * @}
-  */
-
-/** @defgroup CEC_RxTolerance
-  * @{
-  */
-#define CEC_RxTolerance_Standard        ((uint32_t)0x00000000) /*!< Standard Tolerance Margin            */
-#define CEC_RxTolerance_Extended        CEC_CFGR_RXTOL         /*!< Extended Tolerance Margin            */
-
-#define IS_CEC_RX_TOLERANCE(TOLERANCE) (((TOLERANCE) == CEC_RxTolerance_Standard) || \
-                                        ((TOLERANCE) == CEC_RxTolerance_Extended))
-/**
-  * @}
-  */
-
-/** @defgroup CEC_Stop_Reception
-  * @{
-  */
-#define CEC_StopReception_Off           ((uint32_t)0x00000000) /*!< No RX Stop on bit Rising Error (BRE) */
-#define CEC_StopReception_On            CEC_CFGR_BRESTP        /*!< RX Stop on bit Rising Error (BRE)    */
-
-#define IS_CEC_STOP_RECEPTION(RECEPTION) (((RECEPTION) == CEC_StopReception_On) || \
-                                          ((RECEPTION) == CEC_StopReception_Off))
-/**
-  * @}
-  */
-
-/** @defgroup CEC_Bit_Rising_Error_Generation
-  * @{
-  */
-#define CEC_BitRisingError_Off          ((uint32_t)0x00000000) /*!< Bit Rising Error generation turned Off */
-#define CEC_BitRisingError_On           CEC_CFGR_BREGEN        /*!< Bit Rising Error generation turned On  */
-
-#define IS_CEC_BIT_RISING_ERROR(ERROR) (((ERROR) == CEC_BitRisingError_Off) || \
-                                        ((ERROR) == CEC_BitRisingError_On))
-/**
-  * @}
-  */
-
-/** @defgroup CEC_Long_Bit_Error_Generation
-  * @{
-  */
-#define CEC_LongBitPeriodError_Off      ((uint32_t)0x00000000)  /*!< Long Bit Period Error generation turned Off */
-#define CEC_LongBitPeriodError_On       CEC_CFGR_LREGEN         /*!< Long Bit Period Error generation turned On  */
-
-#define IS_CEC_LONG_BIT_PERIOD_ERROR(ERROR) (((ERROR) == CEC_LongBitPeriodError_Off) || \
-                                             ((ERROR) == CEC_LongBitPeriodError_On))
-/**
-  * @}
-  */
-
-/** @defgroup CEC_BDR_No_Gen
-  * @{
-  */
-
-#define CEC_BRDNoGen_Off      ((uint32_t)0x00000000)  /*!< Broadcast Bit Rising Error generation turned Off */
-#define CEC_BRDNoGen_On       CEC_CFGR_BRDNOGEN       /*!< Broadcast Bit Rising Error generation turned On  */
-
-#define IS_CEC_BDR_NO_GEN_ERROR(ERROR) (((ERROR) == CEC_BRDNoGen_Off) || \
-                                        ((ERROR) == CEC_BRDNoGen_On))
-/**
-  * @}
-  */
-
-/** @defgroup CEC_SFT_Option
-  * @{
-  */
-#define CEC_SFTOption_Off              ((uint32_t)0x00000000)  /*!< SFT option turned Off                   */
-#define CEC_SFTOption_On               CEC_CFGR_SFTOPT         /*!< SFT option turned On                    */
-
-#define IS_CEC_SFT_OPTION(OPTION) (((OPTION) == CEC_SFTOption_Off) || \
-                                  ((OPTION) == CEC_SFTOption_On))
-/**
-  * @}
-  */
-
-/** @defgroup CEC_Own_Address
-  * @{
-  */
-#define IS_CEC_ADDRESS(ADDRESS)         ((ADDRESS) < 0x10)
-
-/**
-  * @}
-  */
-
-/** @defgroup CEC_Interrupt_Configuration_definition
-  * @{
-  */
-#define CEC_IT_TXACKE                   CEC_IER_TXACKEIE
-#define CEC_IT_TXERR                    CEC_IER_TXERRIE
-#define CEC_IT_TXUDR                    CEC_IER_TXUDRIE
-#define CEC_IT_TXEND                    CEC_IER_TXENDIE
-#define CEC_IT_TXBR                     CEC_IER_TXBRIE
-#define CEC_IT_ARBLST                   CEC_IER_ARBLSTIE
-#define CEC_IT_RXACKE                   CEC_IER_RXACKEIE
-#define CEC_IT_LBPE                     CEC_IER_LBPEIE
-#define CEC_IT_SBPE                     CEC_IER_SBPEIE
-#define CEC_IT_BRE                      CEC_IER_BREIEIE
-#define CEC_IT_RXOVR                    CEC_IER_RXOVRIE
-#define CEC_IT_RXEND                    CEC_IER_RXENDIE
-#define CEC_IT_RXBR                     CEC_IER_RXBRIE
-
-#define IS_CEC_IT(IT) ((((IT) & (uint32_t)0xFFFFE000) == 0x00) && ((IT) != 0x00))
-
-#define IS_CEC_GET_IT(IT) (((IT) == CEC_IT_TXACKE) || \
-                           ((IT) == CEC_IT_TXERR)|| \
-                           ((IT) == CEC_IT_TXUDR)|| \
-                           ((IT) == CEC_IT_TXEND)|| \
-                           ((IT) == CEC_IT_TXBR)|| \
-                           ((IT) == CEC_IT_ARBLST)|| \
-                           ((IT) == CEC_IT_RXACKE)|| \
-                           ((IT) == CEC_IT_LBPE)|| \
-                           ((IT) == CEC_IT_SBPE)|| \
-                           ((IT) == CEC_IT_BRE)|| \
-                           ((IT) == CEC_IT_RXOVR)|| \
-                           ((IT) == CEC_IT_RXEND)|| \
-                           ((IT) == CEC_IT_RXBR))
-/**
-  * @}
-  */
-
-/** @defgroup CEC_ISR_register_flags_definition
-  * @{
-  */
-#define CEC_FLAG_TXACKE                 CEC_ISR_TXACKE
-#define CEC_FLAG_TXERR                  CEC_ISR_TXERR
-#define CEC_FLAG_TXUDR                  CEC_ISR_TXUDR
-#define CEC_FLAG_TXEND                  CEC_ISR_TXEND
-#define CEC_FLAG_TXBR                   CEC_ISR_TXBR
-#define CEC_FLAG_ARBLST                 CEC_ISR_ARBLST
-#define CEC_FLAG_RXACKE                 CEC_ISR_RXACKE
-#define CEC_FLAG_LBPE                   CEC_ISR_LBPE
-#define CEC_FLAG_SBPE                   CEC_ISR_SBPE
-#define CEC_FLAG_BRE                    CEC_ISR_BRE
-#define CEC_FLAG_RXOVR                  CEC_ISR_RXOVR
-#define CEC_FLAG_RXEND                  CEC_ISR_RXEND
-#define CEC_FLAG_RXBR                   CEC_ISR_RXBR
-
-#define IS_CEC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFFE000) == 0x00) && ((FLAG) != 0x00))
-
-#define IS_CEC_GET_FLAG(FLAG) (((FLAG) == CEC_FLAG_TXACKE) || \
-                               ((FLAG) == CEC_FLAG_TXERR)|| \
-                               ((FLAG) == CEC_FLAG_TXUDR)|| \
-                               ((FLAG) == CEC_FLAG_TXEND)|| \
-                               ((FLAG) == CEC_FLAG_TXBR)|| \
-                               ((FLAG) == CEC_FLAG_ARBLST)|| \
-                               ((FLAG) == CEC_FLAG_RXACKE)|| \
-                               ((FLAG) == CEC_FLAG_LBPE)|| \
-                               ((FLAG) == CEC_FLAG_SBPE)|| \
-                               ((FLAG) == CEC_FLAG_BRE)|| \
-                               ((FLAG) == CEC_FLAG_RXOVR)|| \
-                               ((FLAG) == CEC_FLAG_RXEND)|| \
-                               ((FLAG) == CEC_FLAG_RXBR))
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/*  Function used to set the CEC configuration to the default reset state *****/
-void CEC_DeInit(void);
-
-/* CEC_Initialization and Configuration functions *****************************/
-void CEC_Init(CEC_InitTypeDef* CEC_InitStruct);
-void CEC_StructInit(CEC_InitTypeDef* CEC_InitStruct);
-void CEC_Cmd(FunctionalState NewState);
-void CEC_ListenModeCmd(FunctionalState NewState);
-void CEC_OwnAddressConfig(uint8_t CEC_OwnAddress);
-void CEC_OwnAddressClear(void);
-
-/* CEC_Data transfers functions ***********************************************/
-void CEC_SendData(uint8_t Data);
-uint8_t CEC_ReceiveData(void);
-void CEC_StartOfMessage(void);
-void CEC_EndOfMessage(void);
-
-/* CEC_Interrupts and flags management functions ******************************/
-void CEC_ITConfig(uint16_t CEC_IT, FunctionalState NewState);
-FlagStatus CEC_GetFlagStatus(uint16_t CEC_FLAG);
-void CEC_ClearFlag(uint32_t CEC_FLAG);
-ITStatus CEC_GetITStatus(uint16_t CEC_IT);
-void CEC_ClearITPendingBit(uint16_t CEC_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_CEC_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_comp.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_comp.h
deleted file mode 100644
index da8b152..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_comp.h	
+++ /dev/null
@@ -1,245 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_comp.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the COMP firmware 
-  *          library, applicable only for STM32F051 and STM32F072 devices.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_COMP_H
-#define __STM32F0XX_COMP_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup COMP
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  COMP Init structure definition  
-  */
-  
-typedef struct
-{
-
-  uint32_t COMP_InvertingInput;     /*!< Selects the inverting input of the comparator.
-                                          This parameter can be a value of @ref COMP_InvertingInput */
-
-  uint32_t COMP_Output;             /*!< Selects the output redirection of the comparator.
-                                          This parameter can be a value of @ref COMP_Output */
-
-  uint32_t COMP_OutputPol;           /*!< Selects the output polarity of the comparator.
-                                          This parameter can be a value of @ref COMP_OutputPolarity */
-
-  uint32_t COMP_Hysteresis;         /*!< Selects the hysteresis voltage of the comparator.
-                                          This parameter can be a value of @ref COMP_Hysteresis */
-
-  uint32_t COMP_Mode;               /*!< Selects the operating mode of the comparator
-                                         and allows to adjust the speed/consumption.
-                                          This parameter can be a value of @ref COMP_Mode */
-
-}COMP_InitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-   
-/** @defgroup COMP_Exported_Constants
-  * @{
-  */ 
-
-/** @defgroup COMP_Selection
-  * @{
-  */
-
-#define COMP_Selection_COMP1                    ((uint32_t)0x00000000) /*!< COMP1 Selection */
-#define COMP_Selection_COMP2                    ((uint32_t)0x00000010) /*!< COMP2 Selection */
-
-#define IS_COMP_ALL_PERIPH(PERIPH) (((PERIPH) == COMP_Selection_COMP1) || \
-                                    ((PERIPH) == COMP_Selection_COMP2))
- 
-/**
-  * @}
-  */ 
-
-/** @defgroup COMP_InvertingInput
-  * @{
-  */
-
-#define COMP_InvertingInput_1_4VREFINT          ((uint32_t)0x00000000) /*!< 1/4 VREFINT connected to comparator inverting input */
-#define COMP_InvertingInput_1_2VREFINT          COMP_CSR_COMP1INSEL_0  /*!< 1/2 VREFINT connected to comparator inverting input */
-#define COMP_InvertingInput_3_4VREFINT          COMP_CSR_COMP1INSEL_1  /*!< 3/4 VREFINT connected to comparator inverting input */
-#define COMP_InvertingInput_VREFINT             ((uint32_t)0x00000030) /*!< VREFINT connected to comparator inverting input */
-#define COMP_InvertingInput_DAC1                COMP_CSR_COMP1INSEL_2  /*!< DAC1_OUT (PA4) connected to comparator inverting input */
-#define COMP_InvertingInput_DAC2                ((uint32_t)0x00000050) /*!< DAC2_OUT (PA5) connected to comparator inverting input, applicable only for STM32F072 devices */
-#define COMP_InvertingInput_IO                  ((uint32_t)0x00000060) /*!< I/O (PA0 for COMP1 and PA2 for COMP2) connected to comparator inverting input */
-
-#define IS_COMP_INVERTING_INPUT(INPUT) (((INPUT) == COMP_InvertingInput_1_4VREFINT) || \
-                                        ((INPUT) == COMP_InvertingInput_1_2VREFINT) || \
-                                        ((INPUT) == COMP_InvertingInput_3_4VREFINT) || \
-                                        ((INPUT) == COMP_InvertingInput_VREFINT)    || \
-                                        ((INPUT) == COMP_InvertingInput_DAC1)       || \
-                                        ((INPUT) == COMP_InvertingInput_DAC2)       || \
-                                        ((INPUT) == COMP_InvertingInput_1_4VREFINT) || \
-                                        ((INPUT) == COMP_InvertingInput_IO))
-/**
-  * @}
-  */ 
-  
-/** @defgroup COMP_Output
-  * @{
-  */
-
-#define COMP_Output_None                  ((uint32_t)0x00000000)   /*!< COMP output isn't connected to other peripherals */
-#define COMP_Output_TIM1BKIN              COMP_CSR_COMP1OUTSEL_0   /*!< COMP output connected to TIM1 Break Input (BKIN) */
-#define COMP_Output_TIM1IC1               COMP_CSR_COMP1OUTSEL_1   /*!< COMP output connected to TIM1 Input Capture 1 */
-#define COMP_Output_TIM1OCREFCLR          ((uint32_t)0x00000300)   /*!< COMP output connected to TIM1 OCREF Clear */
-#define COMP_Output_TIM2IC4               COMP_CSR_COMP1OUTSEL_2   /*!< COMP output connected to TIM2 Input Capture 4 */
-#define COMP_Output_TIM2OCREFCLR          ((uint32_t)0x00000500)   /*!< COMP output connected to TIM2 OCREF Clear */
-#define COMP_Output_TIM3IC1               ((uint32_t)0x00000600)   /*!< COMP output connected to TIM3 Input Capture 1 */
-#define COMP_Output_TIM3OCREFCLR          COMP_CSR_COMP1OUTSEL     /*!< COMP output connected to TIM3 OCREF Clear */
-
-
-#define IS_COMP_OUTPUT(OUTPUT) (((OUTPUT) == COMP_Output_None)         || \
-                                ((OUTPUT) == COMP_Output_TIM1BKIN)     || \
-                                ((OUTPUT) == COMP_Output_TIM1IC1)      || \
-                                ((OUTPUT) == COMP_Output_TIM1OCREFCLR) || \
-                                ((OUTPUT) == COMP_Output_TIM2IC4)      || \
-                                ((OUTPUT) == COMP_Output_TIM2OCREFCLR) || \
-                                ((OUTPUT) == COMP_Output_TIM3IC1)      || \
-                                ((OUTPUT) == COMP_Output_TIM3OCREFCLR))
-/**
-  * @}
-  */ 
-
-/** @defgroup COMP_OutputPolarity
-  * @{
-  */
-#define COMP_OutputPol_NonInverted          ((uint32_t)0x00000000)  /*!< COMP output on GPIO isn't inverted */
-#define COMP_OutputPol_Inverted             COMP_CSR_COMP1POL       /*!< COMP output on GPIO is inverted */
-
-#define IS_COMP_OUTPUT_POL(POL) (((POL) == COMP_OutputPol_NonInverted)  || \
-                                 ((POL) == COMP_OutputPol_Inverted))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup COMP_Hysteresis
-  * @{
-  */
-/* Please refer to the electrical characteristics in the device datasheet for
-   the hysteresis level */
-#define COMP_Hysteresis_No                         0x00000000           /*!< No hysteresis */
-#define COMP_Hysteresis_Low                        COMP_CSR_COMP1HYST_0 /*!< Hysteresis level low */
-#define COMP_Hysteresis_Medium                     COMP_CSR_COMP1HYST_1 /*!< Hysteresis level medium */
-#define COMP_Hysteresis_High                       COMP_CSR_COMP1HYST   /*!< Hysteresis level high */
-
-#define IS_COMP_HYSTERESIS(HYSTERESIS)    (((HYSTERESIS) == COMP_Hysteresis_No) || \
-                                           ((HYSTERESIS) == COMP_Hysteresis_Low) || \
-                                           ((HYSTERESIS) == COMP_Hysteresis_Medium) || \
-                                           ((HYSTERESIS) == COMP_Hysteresis_High))
-/**
-  * @}
-  */
-
-/** @defgroup COMP_Mode
-  * @{
-  */
-/* Please refer to the electrical characteristics in the device datasheet for
-   the power consumption values */
-#define COMP_Mode_HighSpeed                     0x00000000            /*!< High Speed */
-#define COMP_Mode_MediumSpeed                   COMP_CSR_COMP1MODE_0  /*!< Medium Speed */
-#define COMP_Mode_LowPower                      COMP_CSR_COMP1MODE_1 /*!< Low power mode */
-#define COMP_Mode_UltraLowPower                 COMP_CSR_COMP1MODE   /*!< Ultra-low power mode */
-
-#define IS_COMP_MODE(MODE)    (((MODE) == COMP_Mode_UltraLowPower) || \
-                               ((MODE) == COMP_Mode_LowPower)      || \
-                               ((MODE) == COMP_Mode_MediumSpeed)   || \
-                               ((MODE) == COMP_Mode_HighSpeed))
-/**
-  * @}
-  */
-
-/** @defgroup COMP_OutputLevel
-  * @{
-  */ 
-/* When output polarity is not inverted, comparator output is high when
-   the non-inverting input is at a higher voltage than the inverting input */
-#define COMP_OutputLevel_High                   COMP_CSR_COMP1OUT
-/* When output polarity is not inverted, comparator output is low when
-   the non-inverting input is at a lower voltage than the inverting input*/
-#define COMP_OutputLevel_Low                    ((uint32_t)0x00000000)
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/*  Function used to set the COMP configuration to the default reset state ****/
-void COMP_DeInit(void);
-
-/* Initialization and Configuration functions *********************************/
-void COMP_Init(uint32_t COMP_Selection, COMP_InitTypeDef* COMP_InitStruct);
-void COMP_StructInit(COMP_InitTypeDef* COMP_InitStruct);
-void COMP_Cmd(uint32_t COMP_Selection, FunctionalState NewState);
-void COMP_SwitchCmd(FunctionalState NewState);
-uint32_t COMP_GetOutputLevel(uint32_t COMP_Selection);
-
-/* Window mode control function ***********************************************/
-void COMP_WindowCmd(FunctionalState NewState);
-
-/* COMP configuration locking function ****************************************/
-void COMP_LockConfig(uint32_t COMP_Selection);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_COMP_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_crc.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_crc.h
deleted file mode 100644
index ef1d436..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_crc.h	
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_crc.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the CRC firmware 
-  *          library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_CRC_H
-#define __STM32F0XX_CRC_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/*!< Includes ----------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup CRC
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup CRC_ReverseInputData
-  * @{
-  */
-#define CRC_ReverseInputData_No             ((uint32_t)0x00000000) /*!< No reverse operation of Input Data */
-#define CRC_ReverseInputData_8bits          CRC_CR_REV_IN_0        /*!< Reverse operation of Input Data on 8 bits */
-#define CRC_ReverseInputData_16bits         CRC_CR_REV_IN_1        /*!< Reverse operation of Input Data on 16 bits */
-#define CRC_ReverseInputData_32bits         CRC_CR_REV_IN          /*!< Reverse operation of Input Data on 32 bits */
-
-#define IS_CRC_REVERSE_INPUT_DATA(DATA) (((DATA) == CRC_ReverseInputData_No)     || \
-                                         ((DATA) == CRC_ReverseInputData_8bits)  || \
-                                         ((DATA) == CRC_ReverseInputData_16bits) || \
-                                         ((DATA) == CRC_ReverseInputData_32bits))
-
-/**
-  * @}
-  */
-
-/** @defgroup CRC_PolynomialSize
-  * @brief    Only applicable for STM32F042 and STM32F072 devices 
-  * @{
-  */
-#define CRC_PolSize_7                       CRC_CR_POLSIZE        /*!< 7-bit polynomial for CRC calculation */
-#define CRC_PolSize_8                       CRC_CR_POLSIZE_1      /*!< 8-bit polynomial for CRC calculation */
-#define CRC_PolSize_16                      CRC_CR_POLSIZE_0      /*!< 16-bit polynomial for CRC calculation */
-#define CRC_PolSize_32                      ((uint32_t)0x00000000)/*!< 32-bit polynomial for CRC calculation */
-
-#define IS_CRC_POL_SIZE(SIZE) (((SIZE) == CRC_PolSize_7)  || \
-                               ((SIZE) == CRC_PolSize_8)  || \
-                               ((SIZE) == CRC_PolSize_16) || \
-                               ((SIZE) == CRC_PolSize_32))
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-/* Configuration of the CRC computation unit **********************************/
-void CRC_DeInit(void);
-void CRC_ResetDR(void);
-void CRC_PolynomialSizeSelect(uint32_t CRC_PolSize); /*!< Only applicable for STM32F042 and STM32F072 devices */ 
-void CRC_ReverseInputDataSelect(uint32_t CRC_ReverseInputData);
-void CRC_ReverseOutputDataCmd(FunctionalState NewState);
-void CRC_SetInitRegister(uint32_t CRC_InitValue); 
-void CRC_SetPolynomial(uint32_t CRC_Pol); /*!< Only applicable for STM32F042 and STM32F072 devices */
-
-/* CRC computation ************************************************************/
-uint32_t CRC_CalcCRC(uint32_t CRC_Data);
-uint32_t CRC_CalcCRC16bits(uint16_t CRC_Data); /*!< Only applicable for STM32F042 and STM32F072 devices */
-uint32_t CRC_CalcCRC8bits(uint8_t CRC_Data); /*!< Only applicable for STM32F042 and STM32F072 devices */
-uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength);
-uint32_t CRC_GetCRC(void);
-
-/* Independent register (IDR) access (write/read) *****************************/
-void CRC_SetIDRegister(uint8_t CRC_IDValue);
-uint8_t CRC_GetIDRegister(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_CRC_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_crs.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_crs.h
deleted file mode 100644
index 6f37b4f..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_crs.h	
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_crs.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the CRS firmware 
-  *          library, applicable only for STM32F042 and STM32F072 devices.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_CRS_H
-#define __STM32F0XX_CRS_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/*!< Includes ----------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup CRS
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup CRS_Interrupt_Sources
-  * @{
-  */
-#define CRS_IT_SYNCOK             CRS_ISR_SYNCOKF    /*!< SYNC event OK */
-#define CRS_IT_SYNCWARN           CRS_ISR_SYNCWARNF  /*!< SYNC warning */
-#define CRS_IT_ERR                CRS_ISR_ERRF       /*!< error */
-#define CRS_IT_ESYNC              CRS_ISR_ESYNCF     /*!< Expected SYNC */
-#define CRS_IT_TRIMOVF            CRS_ISR_TRIMOVF    /*!< Trimming overflow or underflow */
-#define CRS_IT_SYNCERR            CRS_ISR_SYNCERR    /*!< SYNC error */
-#define CRS_IT_SYNCMISS           CRS_ISR_SYNCMISS    /*!< SYNC missed*/
-
-#define IS_CRS_IT(IT) (((IT) == CRS_IT_SYNCOK) || ((IT) == CRS_IT_SYNCWARN) || \
-                       ((IT) == CRS_IT_ERR)  || ((IT) == CRS_IT_ESYNC))
-                       
-#define IS_CRS_GET_IT(IT) (((IT) == CRS_IT_SYNCOK) || ((IT) == CRS_IT_SYNCWARN) || \
-                           ((IT) == CRS_IT_ERR) || ((IT) == CRS_IT_ESYNC) || \
-                           ((IT) == CRS_IT_TRIMOVF) || ((IT) == CRS_IT_SYNCERR) || \
-                           ((IT) == CRS_IT_SYNCMISS))
-
-#define IS_CRS_CLEAR_IT(IT) ((IT) != 0x00)                                         
-
-/**
-  * @}
-  */
-
-/** @defgroup CRS_Flags
-  * @{
-  */
-#define CRS_FLAG_SYNCOK             CRS_ISR_SYNCOKF    /*!< SYNC event OK */
-#define CRS_FLAG_SYNCWARN           CRS_ISR_SYNCWARNF  /*!< SYNC warning */
-#define CRS_FLAG_ERR                CRS_ISR_ERRF       /*!< error */
-#define CRS_FLAG_ESYNC              CRS_ISR_ESYNCF     /*!< Expected SYNC */
-#define CRS_FLAG_TRIMOVF            CRS_ISR_TRIMOVF    /*!< Trimming overflow or underflow */
-#define CRS_FLAG_SYNCERR            CRS_ISR_SYNCERR    /*!< SYNC error */
-#define CRS_FLAG_SYNCMISS           CRS_ISR_SYNCMISS    /*!< SYNC missed*/
-
-#define IS_CRS_FLAG(FLAG) (((FLAG) == CRS_FLAG_SYNCOK) || ((FLAG) == CRS_FLAG_SYNCWARN) || \
-                           ((FLAG) == CRS_FLAG_ERR) || ((FLAG) == CRS_FLAG_ESYNC) || \
-                           ((FLAG) == CRS_FLAG_TRIMOVF) || ((FLAG) == CRS_FLAG_SYNCERR) || \
-                           ((FLAG) == CRS_FLAG_SYNCMISS))
-
-/**
-  * @}
-  */
-  
-/** @defgroup CRS_Synchro_Source
-  * @{
-  */
-#define CRS_SYNCSource_GPIO       ((uint32_t)0x00)        /*!< Synchro Signal soucre GPIO */
-#define CRS_SYNCSource_LSE        CRS_CFGR_SYNCSRC_0      /*!< Synchro Signal source LSE */
-#define CRS_SYNCSource_USB        CRS_CFGR_SYNCSRC_1      /*!< Synchro Signal source USB SOF */
-
-#define IS_CRS_SYNC_SOURCE(SOURCE) (((SOURCE) == CRS_SYNCSource_GPIO) || \
-                                    ((SOURCE) == CRS_SYNCSource_LSE) ||\
-                                    ((SOURCE) == CRS_SYNCSource_USB))
-/**
-  * @}
-  */
-
-/** @defgroup CRS_SynchroDivider
-  * @{
-  */
-#define CRS_SYNC_Div1        ((uint32_t)0x00)                          /*!< Synchro Signal not divided */
-#define CRS_SYNC_Div2        CRS_CFGR_SYNCDIV_0                        /*!< Synchro Signal divided by 2 */
-#define CRS_SYNC_Div4        CRS_CFGR_SYNCDIV_1                        /*!< Synchro Signal divided by 4 */
-#define CRS_SYNC_Div8        (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 8 */
-#define CRS_SYNC_Div16       CRS_CFGR_SYNCDIV_2                        /*!< Synchro Signal divided by 16 */
-#define CRS_SYNC_Div32       (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */
-#define CRS_SYNC_Div64       (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */
-#define CRS_SYNC_Div128      CRS_CFGR_SYNCDIV                          /*!< Synchro Signal divided by 128 */
-
-#define IS_CRS_SYNC_DIV(DIV) (((DIV) == CRS_SYNC_Div1) || ((DIV) == CRS_SYNC_Div2)   ||\
-                              ((DIV) == CRS_SYNC_Div4) || ((DIV) == CRS_SYNC_Div8)   || \
-                              ((DIV) == CRS_SYNC_Div16) || ((DIV) == CRS_SYNC_Div32) || \
-                              ((DIV) == CRS_SYNC_Div64) || ((DIV) == CRS_SYNC_Div128))
-/**
-  * @}
-  */
-
-/** @defgroup CRS_SynchroPolarity
-  * @{
-  */
-#define CRS_SYNCPolarity_Rising       ((uint32_t)0x00)      /*!< Synchro Active on rising edge */
-#define CRS_SYNCPolarity_Falling      CRS_CFGR_SYNCPOL      /*!< Synchro Active on falling edge */
-
-#define IS_CRS_SYNC_POLARITY(POLARITY) (((POLARITY) == CRS_SYNCPolarity_Rising) || \
-                                    ((POLARITY) == CRS_SYNCPolarity_Falling))
-/**
-  * @}
-  */
-
-
-    
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-/* Configuration of the CRS **********************************/
-void CRS_DeInit(void);
-void CRS_AdjustHSI48CalibrationValue(uint8_t CRS_HSI48CalibrationValue);
-void CRS_FrequencyErrorCounterCmd(FunctionalState NewState);
-void CRS_AutomaticCalibrationCmd(FunctionalState NewState); 
-void CRS_SoftwareSynchronizationGenerate(void);
-void CRS_FrequencyErrorCounterReload(uint32_t CRS_ReloadValue);
-void CRS_FrequencyErrorLimitConfig(uint8_t CRS_ErrorLimitValue);
-void CRS_SynchronizationPrescalerConfig(uint32_t CRS_Prescaler);
-void CRS_SynchronizationSourceConfig(uint32_t CRS_Source);
-void CRS_SynchronizationPolarityConfig(uint32_t CRS_Polarity);
-uint32_t CRS_GetReloadValue(void);
-uint32_t CRS_GetHSI48CalibrationValue(void);
-uint32_t CRS_GetFrequencyErrorValue(void);
-uint32_t CRS_GetFrequencyErrorDirection(void);
-
-/* Interrupts and flags management functions **********************************/
-void CRS_ITConfig(uint32_t CRS_IT, FunctionalState NewState);
-FlagStatus CRS_GetFlagStatus(uint32_t CRS_FLAG);
-void CRS_ClearFlag(uint32_t CRS_FLAG);
-ITStatus CRS_GetITStatus(uint32_t CRS_IT);
-void CRS_ClearITPendingBit(uint32_t CRS_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_CRS_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dac.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dac.h
deleted file mode 100644
index f2884bb..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dac.h	
+++ /dev/null
@@ -1,312 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_dac.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the DAC firmware 
-  *          library, applicable only for STM32F051 and STM32F072 devices.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_DAC_H
-#define __STM32F0XX_DAC_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
- 
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup DAC
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  DAC Init structure definition
-  */
-  
-typedef struct
-{
-  uint32_t DAC_Trigger;                      /*!< Specifies the external trigger for the selected DAC channel.
-                                                  This parameter can be a value of @ref DAC_trigger_selection */
-
-  uint32_t DAC_WaveGeneration;               /*!< Specifies whether DAC channel noise waves or triangle waves
-                                                  are generated, or whether no wave is generated.
-                                                  This parameter can be a value of @ref DAC_wave_generation
-                                                  This parameter is only applicable for STM32F072 devices */
-
-  uint32_t DAC_LFSRUnmask_TriangleAmplitude; /*!< Specifies the LFSR mask for noise wave generation or
-                                                  the maximum amplitude triangle generation for the DAC channel. 
-                                                  This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude 
-                                                  This parameter is only applicable for STM32F072 devices */
-
-  uint32_t DAC_OutputBuffer;                 /*!< Specifies whether the DAC channel output buffer is enabled or disabled.
-                                                  This parameter can be a value of @ref DAC_output_buffer */
-}DAC_InitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup DAC_Exported_Constants
-  * @{
-  */
-
-/** @defgroup DAC_Trigger 
-  * @{
-  */
-  
-#define DAC_Trigger_None                   ((uint32_t)0x00000000) /*!< Conversion is automatic once the DAC1_DHRxxxx register 
-                                                                       has been loaded, and not by external trigger */
-#define DAC_Trigger_T6_TRGO                ((uint32_t)0x00000004) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel1 */
-#define DAC_Trigger_T3_TRGO                ((uint32_t)0x0000000C) /*!< TIM3 TRGO selected as external conversion trigger for DAC channel1 */
-#define DAC_Trigger_T7_TRGO                ((uint32_t)0x00000014) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel1, 
-                                                                       applicable only for STM32F072 devices */
-#define DAC_Trigger_T15_TRGO               ((uint32_t)0x0000001C) /*!< TIM15 TRGO selected as external conversion trigger for DAC channel1 */
-#define DAC_Trigger_T2_TRGO                ((uint32_t)0x00000024) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel1 */
-#define DAC_Trigger_Ext_IT9                ((uint32_t)0x00000034) /*!< EXTI Line9 event selected as external conversion trigger for DAC channels */
-#define DAC_Trigger_Software               ((uint32_t)0x0000003C) /*!< Conversion started by software trigger for DAC channels */
-
-#define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None)     || \
-                                 ((TRIGGER) == DAC_Trigger_T6_TRGO)  || \
-                                 ((TRIGGER) == DAC_Trigger_T7_TRGO)  || \
-                                 ((TRIGGER) == DAC_Trigger_T3_TRGO)  || \
-                                 ((TRIGGER) == DAC_Trigger_T15_TRGO) || \
-                                 ((TRIGGER) == DAC_Trigger_T2_TRGO)  || \
-                                 ((TRIGGER) == DAC_Trigger_Ext_IT9)  || \
-                                 ((TRIGGER) == DAC_Trigger_Software))
-                                 
-/**
-  * @}
-  */
-
-/** @defgroup DAC_wave_generation 
-  * @brief    This parameters are only applicable for STM32F072 devices.
-  * @{
-  */
-
-#define DAC_WaveGeneration_None            ((uint32_t)0x00000000)
-#define DAC_WaveGeneration_Noise           ((uint32_t)0x00000040)
-#define DAC_WaveGeneration_Triangle        ((uint32_t)0x00000080)
-#define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None)  || \
-                                    ((WAVE) == DAC_WaveGeneration_Noise) || \
-                                    ((WAVE) == DAC_WaveGeneration_Triangle))
-/**
-  * @}
-  */
-
-/** @defgroup DAC_lfsrunmask_triangleamplitude   
-  * @brief    These parameters are only applicable for STM32F072 devices.
-  * @{
-  */
-
-#define DAC_LFSRUnmask_Bit0                ((uint32_t)0x00000000) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */
-#define DAC_LFSRUnmask_Bits1_0             ((uint32_t)0x00000100) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits2_0             ((uint32_t)0x00000200) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits3_0             ((uint32_t)0x00000300) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits4_0             ((uint32_t)0x00000400) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits5_0             ((uint32_t)0x00000500) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits6_0             ((uint32_t)0x00000600) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits7_0             ((uint32_t)0x00000700) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits8_0             ((uint32_t)0x00000800) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits9_0             ((uint32_t)0x00000900) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits10_0            ((uint32_t)0x00000A00) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */
-#define DAC_LFSRUnmask_Bits11_0            ((uint32_t)0x00000B00) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */
-#define DAC_TriangleAmplitude_1            ((uint32_t)0x00000000) /*!< Select max triangle amplitude of 1 */
-#define DAC_TriangleAmplitude_3            ((uint32_t)0x00000100) /*!< Select max triangle amplitude of 3 */
-#define DAC_TriangleAmplitude_7            ((uint32_t)0x00000200) /*!< Select max triangle amplitude of 7 */
-#define DAC_TriangleAmplitude_15           ((uint32_t)0x00000300) /*!< Select max triangle amplitude of 15 */
-#define DAC_TriangleAmplitude_31           ((uint32_t)0x00000400) /*!< Select max triangle amplitude of 31 */
-#define DAC_TriangleAmplitude_63           ((uint32_t)0x00000500) /*!< Select max triangle amplitude of 63 */
-#define DAC_TriangleAmplitude_127          ((uint32_t)0x00000600) /*!< Select max triangle amplitude of 127 */
-#define DAC_TriangleAmplitude_255          ((uint32_t)0x00000700) /*!< Select max triangle amplitude of 255 */
-#define DAC_TriangleAmplitude_511          ((uint32_t)0x00000800) /*!< Select max triangle amplitude of 511 */
-#define DAC_TriangleAmplitude_1023         ((uint32_t)0x00000900) /*!< Select max triangle amplitude of 1023 */
-#define DAC_TriangleAmplitude_2047         ((uint32_t)0x00000A00) /*!< Select max triangle amplitude of 2047 */
-#define DAC_TriangleAmplitude_4095         ((uint32_t)0x00000B00) /*!< Select max triangle amplitude of 4095 */
-
-#define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUnmask_Bit0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits1_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits2_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits3_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits4_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits5_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits6_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits7_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits8_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits9_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits10_0) || \
-                                                      ((VALUE) == DAC_LFSRUnmask_Bits11_0) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_1) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_3) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_7) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_15) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_31) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_63) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_127) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_255) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_511) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_1023) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_2047) || \
-                                                      ((VALUE) == DAC_TriangleAmplitude_4095))
-/**
-  * @}
-  */                                      
-
-/** @defgroup DAC_OutputBuffer 
-  * @{
-  */
-
-#define DAC_OutputBuffer_Enable            ((uint32_t)0x00000000)
-#define DAC_OutputBuffer_Disable           DAC_CR_BOFF1
-#define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OutputBuffer_Enable) || \
-                                           ((STATE) == DAC_OutputBuffer_Disable))
-/**
-  * @}
-  */
-  
-/** @defgroup DAC_Channel_selection 
-  * @{
-  */
-
-#define DAC_Channel_1                      ((uint32_t)0x00000000)
-#define DAC_Channel_2                      ((uint32_t)0x00000010) /*!< Only applicable for STM32F072 devices */
-#define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \
-                                 ((CHANNEL) == DAC_Channel_2))
-
-/**
-  * @}
-  */
-
-/** @defgroup DAC_data_alignment
-  * @{
-  */
-
-#define DAC_Align_12b_R                    ((uint32_t)0x00000000)
-#define DAC_Align_12b_L                    ((uint32_t)0x00000004)
-#define DAC_Align_8b_R                     ((uint32_t)0x00000008)
-#define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \
-                             ((ALIGN) == DAC_Align_12b_L) || \
-                             ((ALIGN) == DAC_Align_8b_R))
-/**
-  * @}
-  */
-
-/** @defgroup DAC_wave_generation 
-  * @brief    These parameters are only applicable for STM32F072 devices.
-  * @{
-  */
-
-#define DAC_Wave_Noise                     ((uint32_t)0x00000040)
-#define DAC_Wave_Triangle                  ((uint32_t)0x00000080)
-#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \
-                           ((WAVE) == DAC_Wave_Triangle))
-/**
-  * @}
-  */
-  
-/** @defgroup DAC_data 
-  * @{
-  */
-
-#define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0) 
-
-/**
-  * @}
-  */
-
-/** @defgroup DAC_interrupts_definition 
-  * @{
-  */ 
-  
-#define DAC_IT_DMAUDR                      DAC_SR_DMAUDR1
-#define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR)) 
-
-/**
-  * @}
-  */ 
-
-
-/** @defgroup DAC_flags_definition 
-  * @{
-  */ 
-  
-#define DAC_FLAG_DMAUDR                    DAC_SR_DMAUDR1
-  
-#define IS_DAC_FLAG(FLAG) (((FLAG) == DAC_FLAG_DMAUDR))
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/*  Function used to set the DAC configuration to the default reset state *****/
-void DAC_DeInit(void);
-
-/*  DAC channels configuration: trigger, output buffer, data format functions */
-void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct);
-void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct);
-void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState);
-void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState);
-void DAC_DualSoftwareTriggerCmd(FunctionalState NewState); /*!< Only applicable for STM32F072 devices */
-void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState); /*!< Only applicable for STM32F072 devices */ 
-void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);
-void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data); /*!< Only applicable for STM32F072 devices */
-void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1); /*!< Only applicable for STM32F072 devices */
-uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel);
-
-/* DMA management functions ***************************************************/
-void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState);
-
-/* Interrupts and flags management functions **********************************/
-void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState);
-FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG);
-void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG);
-ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT);
-void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_DAC_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dbgmcu.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dbgmcu.h
deleted file mode 100644
index 0ce7130..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dbgmcu.h	
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_dbgmcu.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the DBGMCU firmware 
-  *          library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_DBGMCU_H
-#define __STM32F0XX_DBGMCU_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup DBGMCU
-  * @{
-  */ 
-/* Exported types ------------------------------------------------------------*/ 
-/* Exported constants --------------------------------------------------------*/
-
-
-/** @defgroup DBGMCU_Exported_Constants
-  * @{
-  */
-
-#define DBGMCU_STOP                  DBGMCU_CR_DBG_STOP
-#define DBGMCU_STANDBY               DBGMCU_CR_DBG_STANDBY
-#define IS_DBGMCU_PERIPH(PERIPH) ((((PERIPH) & 0xFFFFFFF9) == 0x00) && ((PERIPH) != 0x00))
-
-#define DBGMCU_TIM2_STOP             DBGMCU_APB1_FZ_DBG_TIM2_STOP /*!< Not applicable for STM32F030 devices */
-#define DBGMCU_TIM3_STOP             DBGMCU_APB1_FZ_DBG_TIM3_STOP
-#define DBGMCU_TIM6_STOP             DBGMCU_APB1_FZ_DBG_TIM6_STOP
-#define DBGMCU_TIM7_STOP             DBGMCU_APB1_FZ_DBG_TIM7_STOP /*!< Only applicable for STM32F072 devices */ 
-#define DBGMCU_TIM14_STOP            DBGMCU_APB1_FZ_DBG_TIM14_STOP
-#define DBGMCU_RTC_STOP              DBGMCU_APB1_FZ_DBG_RTC_STOP
-#define DBGMCU_WWDG_STOP             DBGMCU_APB1_FZ_DBG_WWDG_STOP
-#define DBGMCU_IWDG_STOP             DBGMCU_APB1_FZ_DBG_IWDG_STOP
-#define DBGMCU_I2C1_SMBUS_TIMEOUT    DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT
-#define DBGMCU_CAN1_STOP             DBGMCU_APB1_FZ_DBG_CAN1_STOP /*!< Only applicable for STM32F042 and STM32F072 devices */
-#define IS_DBGMCU_APB1PERIPH(PERIPH) ((((PERIPH) & 0xFDDFE2CC) == 0x00) && ((PERIPH) != 0x00))
-
-#define DBGMCU_TIM1_STOP             DBGMCU_APB2_FZ_DBG_TIM1_STOP
-#define DBGMCU_TIM15_STOP            DBGMCU_APB2_FZ_DBG_TIM15_STOP
-#define DBGMCU_TIM16_STOP            DBGMCU_APB2_FZ_DBG_TIM16_STOP
-#define DBGMCU_TIM17_STOP            DBGMCU_APB2_FZ_DBG_TIM17_STOP
-#define IS_DBGMCU_APB2PERIPH(PERIPH) ((((PERIPH) & 0xFFF8F7FF) == 0x00) && ((PERIPH) != 0x00))
-
-/**
-  * @}
-  */ 
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-/* Device and Revision ID management functions ********************************/ 
-uint32_t DBGMCU_GetREVID(void);
-uint32_t DBGMCU_GetDEVID(void);
-
-/* Peripherals Configuration functions ****************************************/ 
-void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState);
-void DBGMCU_APB1PeriphConfig(uint32_t DBGMCU_Periph, FunctionalState NewState);
-void DBGMCU_APB2PeriphConfig(uint32_t DBGMCU_Periph, FunctionalState NewState);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_DBGMCU_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dma.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dma.h
deleted file mode 100644
index d24decb..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dma.h	
+++ /dev/null
@@ -1,377 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_dma.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the DMA firmware
-  *          library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_DMA_H
-#define __STM32F0XX_DMA_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup DMA
-  * @{
-  */
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  DMA Init structures definition
-  */
-typedef struct
-{
-  uint32_t DMA_PeripheralBaseAddr; /*!< Specifies the peripheral base address for DMAy Channelx.              */
-
-  uint32_t DMA_MemoryBaseAddr;     /*!< Specifies the memory base address for DMAy Channelx.                  */
-
-  uint32_t DMA_DIR;                /*!< Specifies if the peripheral is the source or destination.
-                                        This parameter can be a value of @ref DMA_data_transfer_direction     */
-
-  uint32_t DMA_BufferSize;         /*!< Specifies the buffer size, in data unit, of the specified Channel. 
-                                        The data unit is equal to the configuration set in DMA_PeripheralDataSize
-                                        or DMA_MemoryDataSize members depending in the transfer direction     */
-
-  uint32_t DMA_PeripheralInc;      /*!< Specifies whether the Peripheral address register is incremented or not.
-                                        This parameter can be a value of @ref DMA_peripheral_incremented_mode */
-
-  uint32_t DMA_MemoryInc;          /*!< Specifies whether the memory address register is incremented or not.
-                                        This parameter can be a value of @ref DMA_memory_incremented_mode     */
-
-  uint32_t DMA_PeripheralDataSize; /*!< Specifies the Peripheral data width.
-                                        This parameter can be a value of @ref DMA_peripheral_data_size        */
-
-  uint32_t DMA_MemoryDataSize;     /*!< Specifies the Memory data width.
-                                        This parameter can be a value of @ref DMA_memory_data_size            */
-
-  uint32_t DMA_Mode;               /*!< Specifies the operation mode of the DMAy Channelx.
-                                        This parameter can be a value of @ref DMA_circular_normal_mode
-                                        @note: The circular buffer mode cannot be used if the memory-to-memory
-                                              data transfer is configured on the selected Channel */
-
-  uint32_t DMA_Priority;           /*!< Specifies the software priority for the DMAy Channelx.
-                                        This parameter can be a value of @ref DMA_priority_level              */
-
-  uint32_t DMA_M2M;                /*!< Specifies if the DMAy Channelx will be used in memory-to-memory transfer.
-                                        This parameter can be a value of @ref DMA_memory_to_memory            */
-}DMA_InitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup DMA_Exported_Constants
-  * @{
-  */
-
-#define IS_DMA_ALL_PERIPH(PERIPH) (((PERIPH) == DMA1_Channel1) || \
-                                   ((PERIPH) == DMA1_Channel2) || \
-                                   ((PERIPH) == DMA1_Channel3) || \
-                                   ((PERIPH) == DMA1_Channel4) || \
-                                   ((PERIPH) == DMA1_Channel5) || \
-                                   ((PERIPH) == DMA1_Channel6) || \
-                                   ((PERIPH) == DMA1_Channel7))
-
-/** @defgroup DMA_data_transfer_direction 
-  * @{
-  */
-
-#define DMA_DIR_PeripheralSRC              ((uint32_t)0x00000000)
-#define DMA_DIR_PeripheralDST              DMA_CCR_DIR
-
-#define IS_DMA_DIR(DIR) (((DIR) == DMA_DIR_PeripheralSRC) || \
-                         ((DIR) == DMA_DIR_PeripheralDST))
-/**
-  * @}
-  */
-
-/** @defgroup DMA_peripheral_incremented_mode 
-  * @{
-  */
-
-#define DMA_PeripheralInc_Disable          ((uint32_t)0x00000000)
-#define DMA_PeripheralInc_Enable           DMA_CCR_PINC
-
-#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PeripheralInc_Disable) || \
-                                            ((STATE) == DMA_PeripheralInc_Enable))
-/**
-  * @}
-  */
-
-/** @defgroup DMA_memory_incremented_mode 
-  * @{
-  */
-
-#define DMA_MemoryInc_Disable              ((uint32_t)0x00000000)
-#define DMA_MemoryInc_Enable               DMA_CCR_MINC
-
-#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MemoryInc_Disable) || \
-                                        ((STATE) == DMA_MemoryInc_Enable))
-/**
-  * @}
-  */
-
-/** @defgroup DMA_peripheral_data_size 
-  * @{
-  */
-
-#define DMA_PeripheralDataSize_Byte        ((uint32_t)0x00000000)
-#define DMA_PeripheralDataSize_HalfWord    DMA_CCR_PSIZE_0
-#define DMA_PeripheralDataSize_Word        DMA_CCR_PSIZE_1
-
-#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PeripheralDataSize_Byte) || \
-                                           ((SIZE) == DMA_PeripheralDataSize_HalfWord) || \
-                                           ((SIZE) == DMA_PeripheralDataSize_Word))
-/**
-  * @}
-  */
-
-/** @defgroup DMA_memory_data_size 
-  * @{
-  */
-
-#define DMA_MemoryDataSize_Byte            ((uint32_t)0x00000000)
-#define DMA_MemoryDataSize_HalfWord        DMA_CCR_MSIZE_0
-#define DMA_MemoryDataSize_Word            DMA_CCR_MSIZE_1
-
-#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MemoryDataSize_Byte) || \
-                                       ((SIZE) == DMA_MemoryDataSize_HalfWord) || \
-                                       ((SIZE) == DMA_MemoryDataSize_Word))
-/**
-  * @}
-  */
-
-/** @defgroup DMA_circular_normal_mode 
-  * @{
-  */
-
-#define DMA_Mode_Normal                    ((uint32_t)0x00000000)
-#define DMA_Mode_Circular                  DMA_CCR_CIRC
-
-#define IS_DMA_MODE(MODE) (((MODE) == DMA_Mode_Normal) || ((MODE) == DMA_Mode_Circular))
-/**
-  * @}
-  */
-
-/** @defgroup DMA_priority_level 
-  * @{
-  */
-
-#define DMA_Priority_VeryHigh              DMA_CCR_PL
-#define DMA_Priority_High                  DMA_CCR_PL_1
-#define DMA_Priority_Medium                DMA_CCR_PL_0
-#define DMA_Priority_Low                   ((uint32_t)0x00000000)
-
-#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_Priority_VeryHigh) || \
-                                   ((PRIORITY) == DMA_Priority_High) || \
-                                   ((PRIORITY) == DMA_Priority_Medium) || \
-                                   ((PRIORITY) == DMA_Priority_Low))
-/**
-  * @}
-  */
-
-/** @defgroup DMA_memory_to_memory 
-  * @{
-  */
-
-#define DMA_M2M_Disable                    ((uint32_t)0x00000000)
-#define DMA_M2M_Enable                     DMA_CCR_MEM2MEM
-
-#define IS_DMA_M2M_STATE(STATE) (((STATE) == DMA_M2M_Disable) || ((STATE) == DMA_M2M_Enable))
-
-/**
-  * @}
-  */
-
-/** @defgroup DMA_interrupts_definition
-  * @{
-  */
-
-#define DMA_IT_TC                          DMA_CCR_TCIE
-#define DMA_IT_HT                          DMA_CCR_HTIE
-#define DMA_IT_TE                          DMA_CCR_TEIE
-
-#define IS_DMA_CONFIG_IT(IT) ((((IT) & 0xFFFFFFF1) == 0x00) && ((IT) != 0x00))
-
-#define DMA1_IT_GL1                        DMA_ISR_GIF1
-#define DMA1_IT_TC1                        DMA_ISR_TCIF1
-#define DMA1_IT_HT1                        DMA_ISR_HTIF1
-#define DMA1_IT_TE1                        DMA_ISR_TEIF1
-#define DMA1_IT_GL2                        DMA_ISR_GIF2
-#define DMA1_IT_TC2                        DMA_ISR_TCIF2
-#define DMA1_IT_HT2                        DMA_ISR_HTIF2
-#define DMA1_IT_TE2                        DMA_ISR_TEIF2
-#define DMA1_IT_GL3                        DMA_ISR_GIF3
-#define DMA1_IT_TC3                        DMA_ISR_TCIF3
-#define DMA1_IT_HT3                        DMA_ISR_HTIF3
-#define DMA1_IT_TE3                        DMA_ISR_TEIF3
-#define DMA1_IT_GL4                        DMA_ISR_GIF4
-#define DMA1_IT_TC4                        DMA_ISR_TCIF4
-#define DMA1_IT_HT4                        DMA_ISR_HTIF4
-#define DMA1_IT_TE4                        DMA_ISR_TEIF4
-#define DMA1_IT_GL5                        DMA_ISR_GIF5
-#define DMA1_IT_TC5                        DMA_ISR_TCIF5
-#define DMA1_IT_HT5                        DMA_ISR_HTIF5
-#define DMA1_IT_TE5                        DMA_ISR_TEIF5
-#define DMA1_IT_GL6                        DMA_ISR_GIF6   /*!< Only applicable for STM32F072 devices */
-#define DMA1_IT_TC6                        DMA_ISR_TCIF6  /*!< Only applicable for STM32F072 devices */
-#define DMA1_IT_HT6                        DMA_ISR_HTIF6  /*!< Only applicable for STM32F072 devices */
-#define DMA1_IT_TE6                        DMA_ISR_TEIF6  /*!< Only applicable for STM32F072 devices */
-#define DMA1_IT_GL7                        DMA_ISR_GIF7   /*!< Only applicable for STM32F072 devices */
-#define DMA1_IT_TC7                        DMA_ISR_TCIF7  /*!< Only applicable for STM32F072 devices */
-#define DMA1_IT_HT7                        DMA_ISR_HTIF7  /*!< Only applicable for STM32F072 devices */
-#define DMA1_IT_TE7                        DMA_ISR_TEIF7  /*!< Only applicable for STM32F072 devices */
-
-#define IS_DMA_CLEAR_IT(IT) ((((IT) & 0xF0000000) == 0x00) && ((IT) != 0x00))
-
-#define IS_DMA_GET_IT(IT) (((IT) == DMA1_IT_GL1) || ((IT) == DMA1_IT_TC1) || \
-                           ((IT) == DMA1_IT_HT1) || ((IT) == DMA1_IT_TE1) || \
-                           ((IT) == DMA1_IT_GL2) || ((IT) == DMA1_IT_TC2) || \
-                           ((IT) == DMA1_IT_HT2) || ((IT) == DMA1_IT_TE2) || \
-                           ((IT) == DMA1_IT_GL3) || ((IT) == DMA1_IT_TC3) || \
-                           ((IT) == DMA1_IT_HT3) || ((IT) == DMA1_IT_TE3) || \
-                           ((IT) == DMA1_IT_GL4) || ((IT) == DMA1_IT_TC4) || \
-                           ((IT) == DMA1_IT_HT4) || ((IT) == DMA1_IT_TE4) || \
-                           ((IT) == DMA1_IT_GL5) || ((IT) == DMA1_IT_TC5) || \
-                           ((IT) == DMA1_IT_HT5) || ((IT) == DMA1_IT_TE5) || \
-                           ((IT) == DMA1_IT_GL6) || ((IT) == DMA1_IT_TC6) || \
-                           ((IT) == DMA1_IT_HT6) || ((IT) == DMA1_IT_TE6) || \
-                           ((IT) == DMA1_IT_GL7) || ((IT) == DMA1_IT_TC7) || \
-                           ((IT) == DMA1_IT_HT7) || ((IT) == DMA1_IT_TE7))
-
-/**
-  * @}
-  */
-
-/** @defgroup DMA_flags_definition 
-  * @{
-  */
-#define DMA1_FLAG_GL1                      DMA_ISR_GIF1
-#define DMA1_FLAG_TC1                      DMA_ISR_TCIF1
-#define DMA1_FLAG_HT1                      DMA_ISR_HTIF1
-#define DMA1_FLAG_TE1                      DMA_ISR_TEIF1
-#define DMA1_FLAG_GL2                      DMA_ISR_GIF2
-#define DMA1_FLAG_TC2                      DMA_ISR_TCIF2
-#define DMA1_FLAG_HT2                      DMA_ISR_HTIF2
-#define DMA1_FLAG_TE2                      DMA_ISR_TEIF2
-#define DMA1_FLAG_GL3                      DMA_ISR_GIF3
-#define DMA1_FLAG_TC3                      DMA_ISR_TCIF3
-#define DMA1_FLAG_HT3                      DMA_ISR_HTIF3
-#define DMA1_FLAG_TE3                      DMA_ISR_TEIF3
-#define DMA1_FLAG_GL4                      DMA_ISR_GIF4
-#define DMA1_FLAG_TC4                      DMA_ISR_TCIF4
-#define DMA1_FLAG_HT4                      DMA_ISR_HTIF4
-#define DMA1_FLAG_TE4                      DMA_ISR_TEIF4
-#define DMA1_FLAG_GL5                      DMA_ISR_GIF5
-#define DMA1_FLAG_TC5                      DMA_ISR_TCIF5
-#define DMA1_FLAG_HT5                      DMA_ISR_HTIF5
-#define DMA1_FLAG_TE5                      DMA_ISR_TEIF5
-#define DMA1_FLAG_GL6                      DMA_ISR_GIF6   /*!< Only applicable for STM32F072 devices */
-#define DMA1_FLAG_TC6                      DMA_ISR_TCIF6  /*!< Only applicable for STM32F072 devices */
-#define DMA1_FLAG_HT6                      DMA_ISR_HTIF6  /*!< Only applicable for STM32F072 devices */
-#define DMA1_FLAG_TE6                      DMA_ISR_TEIF6  /*!< Only applicable for STM32F072 devices */
-#define DMA1_FLAG_GL7                      DMA_ISR_GIF7   /*!< Only applicable for STM32F072 devices */
-#define DMA1_FLAG_TC7                      DMA_ISR_TCIF7  /*!< Only applicable for STM32F072 devices */
-#define DMA1_FLAG_HT7                      DMA_ISR_HTIF7  /*!< Only applicable for STM32F072 devices */
-#define DMA1_FLAG_TE7                      DMA_ISR_TEIF7  /*!< Only applicable for STM32F072 devices */
-
-#define IS_DMA_CLEAR_FLAG(FLAG) ((((FLAG) & 0xF0000000) == 0x00) && ((FLAG) != 0x00))
-
-#define IS_DMA_GET_FLAG(FLAG) (((FLAG) == DMA1_FLAG_GL1) || ((FLAG) == DMA1_FLAG_TC1) || \
-                               ((FLAG) == DMA1_FLAG_HT1) || ((FLAG) == DMA1_FLAG_TE1) || \
-                               ((FLAG) == DMA1_FLAG_GL2) || ((FLAG) == DMA1_FLAG_TC2) || \
-                               ((FLAG) == DMA1_FLAG_HT2) || ((FLAG) == DMA1_FLAG_TE2) || \
-                               ((FLAG) == DMA1_FLAG_GL3) || ((FLAG) == DMA1_FLAG_TC3) || \
-                               ((FLAG) == DMA1_FLAG_HT3) || ((FLAG) == DMA1_FLAG_TE3) || \
-                               ((FLAG) == DMA1_FLAG_GL4) || ((FLAG) == DMA1_FLAG_TC4) || \
-                               ((FLAG) == DMA1_FLAG_HT4) || ((FLAG) == DMA1_FLAG_TE4) || \
-                               ((FLAG) == DMA1_FLAG_GL5) || ((FLAG) == DMA1_FLAG_TC5) || \
-                               ((FLAG) == DMA1_FLAG_HT5) || ((FLAG) == DMA1_FLAG_TE5) || \
-                               ((FLAG) == DMA1_FLAG_GL6) || ((FLAG) == DMA1_FLAG_TC6) || \
-                               ((FLAG) == DMA1_FLAG_HT6) || ((FLAG) == DMA1_FLAG_TE6) || \
-                               ((FLAG) == DMA1_FLAG_GL7) || ((FLAG) == DMA1_FLAG_TC7) || \
-                               ((FLAG) == DMA1_FLAG_HT7) || ((FLAG) == DMA1_FLAG_TE7))
-
-/**
-  * @}
-  */
-
-/** @defgroup DMA_Buffer_Size 
-  * @{
-  */
-
-#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1) && ((SIZE) < 0x10000))
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/* Function used to set the DMA configuration to the default reset state ******/
-void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx);
-
-/* Initialization and Configuration functions *********************************/
-void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct);
-void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);
-void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);
-
-/* Data Counter functions******************************************************/ 
-void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber);
-uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);
-
-/* Interrupts and flags management functions **********************************/
-void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);
-FlagStatus DMA_GetFlagStatus(uint32_t DMA_FLAG);
-void DMA_ClearFlag(uint32_t DMA_FLAG);
-ITStatus DMA_GetITStatus(uint32_t DMA_IT);
-void DMA_ClearITPendingBit(uint32_t DMA_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_DMA_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_exti.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_exti.h
deleted file mode 100644
index f223166..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_exti.h	
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_exti.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the EXTI 
-  *          firmware library
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_EXTI_H
-#define __STM32F0XX_EXTI_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup EXTI
-  * @{
-  */
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  EXTI mode enumeration  
-  */
-
-typedef enum
-{
-  EXTI_Mode_Interrupt = 0x00,
-  EXTI_Mode_Event = 0x04
-}EXTIMode_TypeDef;
-
-#define IS_EXTI_MODE(MODE) (((MODE) == EXTI_Mode_Interrupt) || ((MODE) == EXTI_Mode_Event))
-
-/** 
-  * @brief  EXTI Trigger enumeration  
-  */
-
-typedef enum
-{
-  EXTI_Trigger_Rising = 0x08,
-  EXTI_Trigger_Falling = 0x0C,
-  EXTI_Trigger_Rising_Falling = 0x10
-}EXTITrigger_TypeDef;
-
-#define IS_EXTI_TRIGGER(TRIGGER) (((TRIGGER) == EXTI_Trigger_Rising) || \
-                                  ((TRIGGER) == EXTI_Trigger_Falling) || \
-                                  ((TRIGGER) == EXTI_Trigger_Rising_Falling))
-/**
-  * @brief  EXTI Init Structure definition
-  */
-
-typedef struct
-{
-  uint32_t EXTI_Line;               /*!< Specifies the EXTI lines to be enabled or disabled.
-                                         This parameter can be any combination of @ref EXTI_Lines */
-
-  EXTIMode_TypeDef EXTI_Mode;       /*!< Specifies the mode for the EXTI lines.
-                                         This parameter can be a value of @ref EXTIMode_TypeDef */
-
-  EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.
-                                         This parameter can be a value of @ref EXTIMode_TypeDef */
-
-  FunctionalState EXTI_LineCmd;     /*!< Specifies the new state of the selected EXTI lines.
-                                         This parameter can be set either to ENABLE or DISABLE */
-}EXTI_InitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup EXTI_Exported_Constants
-  * @{
-  */
-/** @defgroup EXTI_Lines 
-  * @{
-  */
-
-#define EXTI_Line0       ((uint32_t)0x00000001)  /*!< External interrupt line 0  */
-#define EXTI_Line1       ((uint32_t)0x00000002)  /*!< External interrupt line 1  */
-#define EXTI_Line2       ((uint32_t)0x00000004)  /*!< External interrupt line 2  */
-#define EXTI_Line3       ((uint32_t)0x00000008)  /*!< External interrupt line 3  */
-#define EXTI_Line4       ((uint32_t)0x00000010)  /*!< External interrupt line 4  */
-#define EXTI_Line5       ((uint32_t)0x00000020)  /*!< External interrupt line 5  */
-#define EXTI_Line6       ((uint32_t)0x00000040)  /*!< External interrupt line 6  */
-#define EXTI_Line7       ((uint32_t)0x00000080)  /*!< External interrupt line 7  */
-#define EXTI_Line8       ((uint32_t)0x00000100)  /*!< External interrupt line 8  */
-#define EXTI_Line9       ((uint32_t)0x00000200)  /*!< External interrupt line 9  */
-#define EXTI_Line10      ((uint32_t)0x00000400)  /*!< External interrupt line 10 */
-#define EXTI_Line11      ((uint32_t)0x00000800)  /*!< External interrupt line 11 */
-#define EXTI_Line12      ((uint32_t)0x00001000)  /*!< External interrupt line 12 */
-#define EXTI_Line13      ((uint32_t)0x00002000)  /*!< External interrupt line 13 */
-#define EXTI_Line14      ((uint32_t)0x00004000)  /*!< External interrupt line 14 */
-#define EXTI_Line15      ((uint32_t)0x00008000)  /*!< External interrupt line 15 */
-#define EXTI_Line16      ((uint32_t)0x00010000)  /*!< External interrupt line 16 
-                                                      Connected to the PVD Output, 
-                                                      not applicable for STM32F030 devices */
-#define EXTI_Line17      ((uint32_t)0x00020000)  /*!< Internal interrupt line 17 
-                                                      Connected to the RTC Alarm 
-                                                      event */
-#define EXTI_Line18      ((uint32_t)0x00040000)  /*!< Internal interrupt line 18 
-                                                      Connected to the USB
-                                                      event, only applicable for 
-                                                      STM32F072 devices */
-#define EXTI_Line19      ((uint32_t)0x00080000)  /*!< Internal interrupt line 19
-                                                      Connected to the RTC Tamper
-                                                      and Time Stamp events */
-#define EXTI_Line20      ((uint32_t)0x00100000)   /*!< Internal interrupt line 20
-                                                      Connected to the RTC wakeup
-                                                      event, only applicable for 
-                                                      STM32F072 devices  */ 
-#define EXTI_Line21      ((uint32_t)0x00200000)  /*!< Internal interrupt line 21
-                                                      Connected to the Comparator 1
-                                                      event, only applicable for STM32F051
-                                                      ans STM32F072 devices */
-#define EXTI_Line22      ((uint32_t)0x00400000)  /*!< Internal interrupt line 22
-                                                      Connected to the Comparator 2
-                                                      event, only applicable for STM32F051
-                                                      and STM32F072 devices */
-#define EXTI_Line23      ((uint32_t)0x00800000)  /*!< Internal interrupt line 23
-                                                      Connected to the I2C1 wakeup
-                                                      event, not applicable for STM32F030 devices */
-#define EXTI_Line25      ((uint32_t)0x02000000)  /*!< Internal interrupt line 25
-                                                      Connected to the USART1 wakeup
-                                                      event, not applicable for STM32F030 devices */
-#define EXTI_Line26      ((uint32_t)0x04000000)  /*!< Internal interrupt line 26
-                                                      Connected to the USART2 wakeup
-                                                      event, applicable only for 
-                                                      STM32F072 devices */
-#define EXTI_Line27      ((uint32_t)0x08000000)  /*!< Internal interrupt line 27
-                                                      Connected to the CEC wakeup
-                                                      event, applicable only for STM32F051
-                                                      and STM32F072 devices */
-#define EXTI_Line31      ((uint32_t)0x80000000)  /*!< Internal interrupt line 31
-                                                      Connected to the VDD USB monitor
-                                                      event, applicable only for 
-                                                      STM32F072 devices */
-#define IS_EXTI_LINE(LINE) ((((LINE) & (uint32_t)0x71000000) == 0x00) && ((LINE) != (uint16_t)0x00))
-
-#define IS_GET_EXTI_LINE(LINE) (((LINE) == EXTI_Line0) || ((LINE) == EXTI_Line1) || \
-                                ((LINE) == EXTI_Line2) || ((LINE) == EXTI_Line3) || \
-                                ((LINE) == EXTI_Line4) || ((LINE) == EXTI_Line5) || \
-                                ((LINE) == EXTI_Line6) || ((LINE) == EXTI_Line7) || \
-                                ((LINE) == EXTI_Line8) || ((LINE) == EXTI_Line9) || \
-                                ((LINE) == EXTI_Line10) || ((LINE) == EXTI_Line11) || \
-                                ((LINE) == EXTI_Line12) || ((LINE) == EXTI_Line13) || \
-                                ((LINE) == EXTI_Line14) || ((LINE) == EXTI_Line15) || \
-                                ((LINE) == EXTI_Line16) || ((LINE) == EXTI_Line17) || \
-                                ((LINE) == EXTI_Line18) || ((LINE) == EXTI_Line19) || \
-                                ((LINE) == EXTI_Line20) || ((LINE) == EXTI_Line21) || \
-                                ((LINE) == EXTI_Line22) || ((LINE) == EXTI_Line23) || \
-                                ((LINE) == EXTI_Line25) || ((LINE) == EXTI_Line26) || \
-                                ((LINE) == EXTI_Line27) || ((LINE) == EXTI_Line31))
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-/* Function used to set the EXTI configuration to the default reset state *****/
-void EXTI_DeInit(void);
-
-/* Initialization and Configuration functions *********************************/
-void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
-void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
-void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
-
-/* Interrupts and flags management functions **********************************/
-FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
-void EXTI_ClearFlag(uint32_t EXTI_Line);
-ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
-void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_EXTI_H */
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_flash.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_flash.h
deleted file mode 100644
index 40a2976..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_flash.h	
+++ /dev/null
@@ -1,430 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_flash.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the FLASH 
-  *          firmware library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_FLASH_H
-#define __STM32F0XX_FLASH_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup FLASH
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  FLASH Status
-  */ 
-typedef enum
-{
-  FLASH_BUSY = 1,
-  FLASH_ERROR_WRP,
-  FLASH_ERROR_PROGRAM,
-  FLASH_COMPLETE,
-  FLASH_TIMEOUT
-}FLASH_Status;
-
-/* Exported constants --------------------------------------------------------*/
-  
-/** @defgroup FLASH_Exported_Constants
-  * @{
-  */ 
-  
-/** @defgroup FLASH_Latency 
-  * @{
-  */ 
-#define FLASH_Latency_0                ((uint32_t)0x00000000)  /*!< FLASH Zero Latency cycle */
-#define FLASH_Latency_1                FLASH_ACR_LATENCY       /*!< FLASH One Latency cycle */
-
-#define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_Latency_0) || \
-                                   ((LATENCY) == FLASH_Latency_1))
-/**
-  * @}
-  */ 
-
-/** @defgroup FLASH_Interrupts 
-  * @{
-  */
-   
-#define FLASH_IT_EOP                   FLASH_CR_EOPIE  /*!< End of programming interrupt source */
-#define FLASH_IT_ERR                   FLASH_CR_ERRIE  /*!< Error interrupt source */
-#define IS_FLASH_IT(IT) ((((IT) & (uint32_t)0xFFFFEBFF) == 0x00000000) && (((IT) != 0x00000000)))
-/**
-  * @}
-  */ 
-
-/** @defgroup FLASH_Address 
-  * @{
-  */
-#ifndef STM32F072
- #define IS_FLASH_PROGRAM_ADDRESS(ADDRESS) (((ADDRESS) >= 0x08000000) && ((ADDRESS) <= 0x0800FFFF))
-#else
- #define IS_FLASH_PROGRAM_ADDRESS(ADDRESS) (((ADDRESS) >= 0x08000000) && ((ADDRESS) <= 0x0801FFFF))
-#endif /* STM32F072 */
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_OB_DATA_ADDRESS 
-  * @{
-  */  
-#define IS_OB_DATA_ADDRESS(ADDRESS) (((ADDRESS) == 0x1FFFF804) || ((ADDRESS) == 0x1FFFF806)) 
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Option_Bytes_Write_Protection 
-  * @{
-  */
-  
-#ifndef STM32F072
-
-#define OB_WRP_Pages0to3               ((uint32_t)0x00000001) /* Write protection of page 0 to 3 */
-#define OB_WRP_Pages4to7               ((uint32_t)0x00000002) /* Write protection of page 4 to 7 */
-#define OB_WRP_Pages8to11              ((uint32_t)0x00000004) /* Write protection of page 8 to 11 */
-#define OB_WRP_Pages12to15             ((uint32_t)0x00000008) /* Write protection of page 12 to 15 */
-#define OB_WRP_Pages16to19             ((uint32_t)0x00000010) /* Write protection of page 16 to 19 */
-#define OB_WRP_Pages20to23             ((uint32_t)0x00000020) /* Write protection of page 20 to 23 */
-#define OB_WRP_Pages24to27             ((uint32_t)0x00000040) /* Write protection of page 24 to 27 */
-#define OB_WRP_Pages28to31             ((uint32_t)0x00000080) /* Write protection of page 28 to 31 */
-#define OB_WRP_Pages32to35             ((uint32_t)0x00000100) /* Write protection of page 32 to 35 */
-#define OB_WRP_Pages36to39             ((uint32_t)0x00000200) /* Write protection of page 36 to 39 */
-#define OB_WRP_Pages40to43             ((uint32_t)0x00000400) /* Write protection of page 40 to 43 */
-#define OB_WRP_Pages44to47             ((uint32_t)0x00000800) /* Write protection of page 44 to 47 */
-#define OB_WRP_Pages48to51             ((uint32_t)0x00001000) /* Write protection of page 48 to 51 */
-#define OB_WRP_Pages52to55             ((uint32_t)0x00002000) /* Write protection of page 52 to 55 */
-#define OB_WRP_Pages56to59             ((uint32_t)0x00004000) /* Write protection of page 56 to 59 */
-#define OB_WRP_Pages60to63             ((uint32_t)0x00008000) /* Write protection of page 60 to 63 */
-
-#define OB_WRP_AllPages                ((uint32_t)0x0000FFFF) /*!< Write protection of all Sectors */
-
-#define IS_OB_WRP(PAGE) (((PAGE) != 0x0000000))
-
-#else
-
-#define OB_WRP_Pages0to1               ((uint32_t)0x00000001) /* Write protection of page 0 to 1 */
-#define OB_WRP_Pages2to3               ((uint32_t)0x00000002) /* Write protection of page 2 to 3 */
-#define OB_WRP_Pages4to5               ((uint32_t)0x00000004) /* Write protection of page 4 to 5 */
-#define OB_WRP_Pages6to7               ((uint32_t)0x00000008) /* Write protection of page 6 to 7 */
-#define OB_WRP_Pages8to9               ((uint32_t)0x00000010) /* Write protection of page 8 to 9 */
-#define OB_WRP_Pages10to11             ((uint32_t)0x00000020) /* Write protection of page 10 to 11 */
-#define OB_WRP_Pages12to13             ((uint32_t)0x00000040) /* Write protection of page 12 to 13 */
-#define OB_WRP_Pages14to15             ((uint32_t)0x00000080) /* Write protection of page 14 to 15 */
-#define OB_WRP_Pages16to17             ((uint32_t)0x00000100) /* Write protection of page 16 to 17 */
-#define OB_WRP_Pages18to19             ((uint32_t)0x00000200) /* Write protection of page 18 to 19 */
-#define OB_WRP_Pages20to21             ((uint32_t)0x00000400) /* Write protection of page 20 to 21 */
-#define OB_WRP_Pages22to23             ((uint32_t)0x00000800) /* Write protection of page 22 to 23 */
-#define OB_WRP_Pages24to25             ((uint32_t)0x00001000) /* Write protection of page 24 to 25 */
-#define OB_WRP_Pages26to27             ((uint32_t)0x00002000) /* Write protection of page 26 to 27 */
-#define OB_WRP_Pages28to29             ((uint32_t)0x00004000) /* Write protection of page 28 to 29 */
-#define OB_WRP_Pages30to31             ((uint32_t)0x00008000) /* Write protection of page 30 to 31 */
-#define OB_WRP_Pages32to33             ((uint32_t)0x00010000) /* Write protection of page 32 to 33 */
-#define OB_WRP_Pages34to35             ((uint32_t)0x00020000) /* Write protection of page 34 to 35 */
-#define OB_WRP_Pages36to37             ((uint32_t)0x00040000) /* Write protection of page 36 to 37 */
-#define OB_WRP_Pages38to39             ((uint32_t)0x00080000) /* Write protection of page 38 to 39 */
-#define OB_WRP_Pages40to41             ((uint32_t)0x00100000) /* Write protection of page 40 to 41 */
-#define OB_WRP_Pages42to43             ((uint32_t)0x00200000) /* Write protection of page 42 to 43 */
-#define OB_WRP_Pages44to45             ((uint32_t)0x00400000) /* Write protection of page 44 to 45 */
-#define OB_WRP_Pages46to47             ((uint32_t)0x00800000) /* Write protection of page 46 to 47 */
-#define OB_WRP_Pages48to49             ((uint32_t)0x01000000) /* Write protection of page 48 to 49 */
-#define OB_WRP_Pages50to51             ((uint32_t)0x02000000) /* Write protection of page 50 to 51 */
-#define OB_WRP_Pages52to53             ((uint32_t)0x04000000) /* Write protection of page 52 to 53 */
-#define OB_WRP_Pages54to55             ((uint32_t)0x08000000) /* Write protection of page 54 to 55 */
-#define OB_WRP_Pages56to57             ((uint32_t)0x10000000) /* Write protection of page 56 to 57 */
-#define OB_WRP_Pages58to59             ((uint32_t)0x20000000) /* Write protection of page 58 to 59 */
-#define OB_WRP_Pages60to61             ((uint32_t)0x40000000) /* Write protection of page 60 to 61 */
-#define OB_WRP_Pages62to63             ((uint32_t)0x80000000) /* Write protection of page 62 to 63 */
-
-#define OB_WRP_AllPages                ((uint32_t)0xFFFFFFFF) /*!< Write protection of all Sectors */
-
-#define IS_OB_WRP(PAGE) (((PAGE) != 0x0000000))
-
-#endif /* STM32F072 */
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Option_Bytes_Read_Protection 
-  * @{
-  */ 
-
-/** 
-  * @brief  FLASH_Read Protection Level  
-  */ 
-#define OB_RDP_Level_0   ((uint8_t)0xAA)
-#define OB_RDP_Level_1   ((uint8_t)0xBB)
-/*#define OB_RDP_Level_2   ((uint8_t)0xCC)*/ /* Warning: When enabling read protection level 2 
-                                                it's no more possible to go back to level 1 or 0 */
-
-#define IS_OB_RDP(LEVEL) (((LEVEL) == OB_RDP_Level_0)||\
-                          ((LEVEL) == OB_RDP_Level_1))/*||\
-                          ((LEVEL) == OB_RDP_Level_2))*/
-/**
-  * @}
-  */ 
-
-/** @defgroup FLASH_Option_Bytes_IWatchdog 
-  * @{
-  */
-
-#define OB_IWDG_SW                     ((uint8_t)0x01)  /*!< Software IWDG selected */
-#define OB_IWDG_HW                     ((uint8_t)0x00)  /*!< Hardware IWDG selected */
-#define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW))
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Option_Bytes_nRST_STOP 
-  * @{
-  */
-
-#define OB_STOP_NoRST                  ((uint8_t)0x02) /*!< No reset generated when entering in STOP */
-#define OB_STOP_RST                    ((uint8_t)0x00) /*!< Reset generated when entering in STOP */
-#define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NoRST) || ((SOURCE) == OB_STOP_RST))
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Option_Bytes_nRST_STDBY 
-  * @{
-  */
-
-#define OB_STDBY_NoRST                 ((uint8_t)0x04) /*!< No reset generated when entering in STANDBY */
-#define OB_STDBY_RST                   ((uint8_t)0x00) /*!< Reset generated when entering in STANDBY */
-#define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NoRST) || ((SOURCE) == OB_STDBY_RST))
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Option_Bytes_BOOT1
-  * @{
-  */
-
-#define OB_BOOT1_RESET                 ((uint8_t)0x00) /*!< BOOT1 Reset */
-#define OB_BOOT1_SET                   ((uint8_t)0x10) /*!< BOOT1 Set */
-#define IS_OB_BOOT1(BOOT1) (((BOOT1) == OB_BOOT1_RESET) || ((BOOT1) == OB_BOOT1_SET))
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Option_Bytes_BOOT0
-  * @{
-  */
-
-#define OB_BOOT0_RESET                 ((uint8_t)0x00) /*!< BOOT0 Reset */
-#define OB_BOOT0_SET                   ((uint8_t)0x08) /*!< BOOT0 Set */
-#define IS_OB_BOOT0(BOOT0) (((BOOT0) == OB_BOOT0_RESET) || ((BOOT0) == OB_BOOT0_SET))
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Option_Bytes_BOOT0SW
-  * @{
-  */
-
-#define OB_BOOT0_SW                   ((uint8_t)0x00) /*!< BOOT0 pin disabled */  
-#define OB_BOOT0_HW                   ((uint8_t)0x80) /*!< BOOT0 pin bonded with GPIO */
-#define IS_OB_BOOT0SW(BOOT0) (((BOOT0) == OB_BOOT0_SW) || ((BOOT0) == OB_BOOT0_HW))
-
-/**
-  * @}
-  */
-  
-/** @defgroup FLASH_Option_Bytes_VDDA_Analog_Monitoring
-  * @{
-  */
-
-#define OB_VDDA_ANALOG_ON              ((uint8_t)0x20) /*!< Analog monitoring on VDDA Power source ON */
-#define OB_VDDA_ANALOG_OFF             ((uint8_t)0x00) /*!< Analog monitoring on VDDA Power source OFF */
-
-#define IS_OB_VDDA_ANALOG(ANALOG) (((ANALOG) == OB_VDDA_ANALOG_ON) || ((ANALOG) == OB_VDDA_ANALOG_OFF))
-
-/**
-  * @}
-  */    
-
-/** @defgroup FLASH_Option_Bytes_SRAM_Parity_Enable 
-  * @{
-  */
-
-#define OB_SRAM_PARITY_SET              ((uint8_t)0x00) /*!< SRAM parity enable Set */
-#define OB_SRAM_PARITY_RESET            ((uint8_t)0x40) /*!< SRAM parity enable reset */
-
-#define IS_OB_SRAM_PARITY(PARITY) (((PARITY) == OB_SRAM_PARITY_SET) || ((PARITY) == OB_SRAM_PARITY_RESET))
-
-/**
-  * @}
-  */ 
-  
-/** @defgroup FLASH_Flags 
-  * @{
-  */ 
-
-#define FLASH_FLAG_BSY                 FLASH_SR_BSY     /*!< FLASH Busy flag */
-#define FLASH_FLAG_PGERR               FLASH_SR_PGERR   /*!< FLASH Programming error flag */
-#define FLASH_FLAG_WRPERR              FLASH_SR_WRPERR  /*!< FLASH Write protected error flag */
-#define FLASH_FLAG_EOP                 FLASH_SR_EOP     /*!< FLASH End of Programming flag */
- 
-#define IS_FLASH_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFFFFCB) == 0x00000000) && ((FLAG) != 0x00000000))
-
-#define IS_FLASH_GET_FLAG(FLAG)  (((FLAG) == FLASH_FLAG_BSY) || ((FLAG) == FLASH_FLAG_PGERR) || \
-                                  ((FLAG) == FLASH_FLAG_WRPERR) || ((FLAG) == FLASH_FLAG_EOP))
-/**
-  * @}
-  */ 
-
-/** @defgroup FLASH_Timeout_definition 
-  * @{
-  */ 
-#define FLASH_ER_PRG_TIMEOUT         ((uint32_t)0x000B0000)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup FLASH_Legacy 
-  * @{
-  */
-#define FLASH_WRProt_Pages0to3	       OB_WRP_Pages0to3
-#define FLASH_WRProt_Pages4to7	       OB_WRP_Pages4to7
-#define FLASH_WRProt_Pages8to11	       OB_WRP_Pages8to11
-#define FLASH_WRProt_Pages12to15	   OB_WRP_Pages12to15
-#define FLASH_WRProt_Pages16to19	   OB_WRP_Pages16to19
-#define FLASH_WRProt_Pages20to23	   OB_WRP_Pages20to23
-#define FLASH_WRProt_Pages24to27	   OB_WRP_Pages24to27
-#define FLASH_WRProt_Pages28to31	   OB_WRP_Pages28to31
-#define FLASH_WRProt_Pages32to35	   OB_WRP_Pages32to35
-#define FLASH_WRProt_Pages36to39	   OB_WRP_Pages36to39
-#define FLASH_WRProt_Pages40to43	   OB_WRP_Pages40to21
-#define FLASH_WRProt_Pages44to47	   OB_WRP_Pages44to23
-#define FLASH_WRProt_Pages48to51	   OB_WRP_Pages48to51
-#define FLASH_WRProt_Pages52to55	   OB_WRP_Pages52to55
-#define FLASH_WRProt_Pages56to59	   OB_WRP_Pages56to59
-#define FLASH_WRProt_Pages60to63	   OB_WRP_Pages60to63
-
-
-#define FLASH_WRProt_AllPages          OB_WRP_AllPages
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */ 
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-  
-/** 
-  * @brief  FLASH memory functions that can be executed from FLASH.  
-  */  
-/* FLASH Interface configuration functions ************************************/
-void FLASH_SetLatency(uint32_t FLASH_Latency);
-void FLASH_PrefetchBufferCmd(FunctionalState NewState);
-FlagStatus FLASH_GetPrefetchBufferStatus(void);
-
-/* FLASH Memory Programming functions *****************************************/
-void FLASH_Unlock(void);
-void FLASH_Lock(void);
-FLASH_Status FLASH_ErasePage(uint32_t Page_Address);
-FLASH_Status FLASH_EraseAllPages(void);
-FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);
-FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
-
-/* FLASH Option Bytes Programming functions *****************************************/
-void FLASH_OB_Unlock(void);
-void FLASH_OB_Lock(void);
-void FLASH_OB_Launch(void);
-FLASH_Status FLASH_OB_Erase(void);
-FLASH_Status FLASH_OB_EnableWRP(uint32_t OB_WRP);
-FLASH_Status FLASH_OB_RDPConfig(uint8_t OB_RDP);
-FLASH_Status FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY);
-FLASH_Status FLASH_OB_BOOTConfig(uint8_t OB_BOOT1);
-FLASH_Status FLASH_OB_BOOT0Config(uint8_t OB_BOOT0);
-FLASH_Status FLASH_OB_BOOT0SWConfig(uint8_t OB_BOOT0SW);
-FLASH_Status FLASH_OB_VDDAConfig(uint8_t OB_VDDA_ANALOG);
-FLASH_Status FLASH_OB_SRAMParityConfig(uint8_t OB_SRAM_Parity);
-FLASH_Status FLASH_OB_WriteUser(uint8_t OB_USER);
-FLASH_Status FLASH_OB_ProgramData(uint32_t Address, uint8_t Data);
-uint8_t FLASH_OB_GetUser(void);
-uint32_t FLASH_OB_GetWRP(void);
-FlagStatus FLASH_OB_GetRDP(void);
-
-/* FLASH Interrupts and flags management functions **********************************/
-void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState);
-FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG);
-void FLASH_ClearFlag(uint32_t FLASH_FLAG);
-FLASH_Status FLASH_GetStatus(void);
-FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout);
-
-/** @defgroup FLASH_Legacy 
-  * @{
-  */
-#define FLASH_EraseOptionBytes               FLASH_OB_Erase
-#define FLASH_EnableWriteProtection	         FLASH_OB_EnableWRP
-#define FLASH_UserOptionByteConfig	         FLASH_OB_UserConfig
-#define FLASH_ProgramOptionByteData          FLASH_OB_ProgramData
-#define FLASH_GetUserOptionByte	             FLASH_OB_GetUser
-#define FLASH_GetWriteProtectionOptionByte   FLASH_OB_GetWRP
-
-/**
-  * @}
-  */
-  
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_FLASH_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_gpio.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_gpio.h
deleted file mode 100644
index b2625b6..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_gpio.h	
+++ /dev/null
@@ -1,358 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_gpio.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the GPIO 
-  *          firmware library. 
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_GPIO_H
-#define __STM32F0XX_GPIO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup GPIO
-  * @{
-  */
-/* Exported types ------------------------------------------------------------*/
-
-#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
-                                    ((PERIPH) == GPIOB) || \
-                                    ((PERIPH) == GPIOC) || \
-                                    ((PERIPH) == GPIOD) || \
-                                    ((PERIPH) == GPIOE) || \
-                                    ((PERIPH) == GPIOF))
-
-#define IS_GPIO_LIST_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
-                                     ((PERIPH) == GPIOB))
-
-/** @defgroup Configuration_Mode_enumeration 
-  * @{
-  */
-typedef enum
-{
-  GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode              */
-  GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode             */
-  GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */
-  GPIO_Mode_AN   = 0x03  /*!< GPIO Analog In/Out Mode      */
-}GPIOMode_TypeDef;
-
-#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)|| ((MODE) == GPIO_Mode_OUT) || \
-                            ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))
-/**
-  * @}
-  */
-
-/** @defgroup Output_type_enumeration
-  * @{
-  */
-typedef enum
-{
-  GPIO_OType_PP = 0x00,
-  GPIO_OType_OD = 0x01
-}GPIOOType_TypeDef;
-
-#define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))
-
-/**
-  * @}
-  */
-
-/** @defgroup Output_Maximum_frequency_enumeration 
-  * @{
-  */
-typedef enum
-{
-  GPIO_Speed_Level_1  = 0x00, /*!< I/O output speed: Low 2 MHz */
-  GPIO_Speed_Level_2  = 0x01, /*!< I/O output speed: Medium 10 MHz */
-  GPIO_Speed_Level_3  = 0x03  /*!< I/O output speed: High 50 MHz */
-}GPIOSpeed_TypeDef;
-
-#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_Level_1) || ((SPEED) == GPIO_Speed_Level_2) || \
-                              ((SPEED) == GPIO_Speed_Level_3))
-/**
-  * @}
-  */
-
-/** @defgroup Configuration_Pull-Up_Pull-Down_enumeration 
-  * @{
-  */
-typedef enum
-{
-  GPIO_PuPd_NOPULL = 0x00,
-  GPIO_PuPd_UP     = 0x01,
-  GPIO_PuPd_DOWN   = 0x02
-}GPIOPuPd_TypeDef;
-
-#define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \
-                            ((PUPD) == GPIO_PuPd_DOWN))
-/**
-  * @}
-  */
-
-/** @defgroup Bit_SET_and_Bit_RESET_enumeration
-  * @{
-  */
-typedef enum
-{ 
-  Bit_RESET = 0,
-  Bit_SET
-}BitAction;
-
-#define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
-/**
-  * @}
-  */
-
-/**
-  * @brief  GPIO Init structure definition  
-  */
-typedef struct
-{
-  uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured.
-                                       This parameter can be any value of @ref GPIO_pins_define */
-                                       
-  GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins.
-                                       This parameter can be a value of @ref GPIOMode_TypeDef   */
-
-  GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.
-                                       This parameter can be a value of @ref GPIOSpeed_TypeDef  */
-
-  GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.
-                                       This parameter can be a value of @ref GPIOOType_TypeDef  */
-
-  GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.
-                                       This parameter can be a value of @ref GPIOPuPd_TypeDef   */
-}GPIO_InitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup GPIO_Exported_Constants
-  * @{
-  */
-
-/** @defgroup GPIO_pins_define 
-  * @{
-  */
-#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected    */
-#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!< Pin 1 selected    */
-#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!< Pin 2 selected    */
-#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!< Pin 3 selected    */
-#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!< Pin 4 selected    */
-#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!< Pin 5 selected    */
-#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!< Pin 6 selected    */
-#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!< Pin 7 selected    */
-#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!< Pin 8 selected    */
-#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!< Pin 9 selected    */
-#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!< Pin 10 selected   */
-#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!< Pin 11 selected   */
-#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!< Pin 12 selected   */
-#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!< Pin 13 selected   */
-#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!< Pin 14 selected   */
-#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!< Pin 15 selected   */
-#define GPIO_Pin_All               ((uint16_t)0xFFFF)  /*!< All pins selected */
-
-#define IS_GPIO_PIN(PIN) ((PIN) != (uint16_t)0x00)
-
-#define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \
-                              ((PIN) == GPIO_Pin_1) || \
-                              ((PIN) == GPIO_Pin_2) || \
-                              ((PIN) == GPIO_Pin_3) || \
-                              ((PIN) == GPIO_Pin_4) || \
-                              ((PIN) == GPIO_Pin_5) || \
-                              ((PIN) == GPIO_Pin_6) || \
-                              ((PIN) == GPIO_Pin_7) || \
-                              ((PIN) == GPIO_Pin_8) || \
-                              ((PIN) == GPIO_Pin_9) || \
-                              ((PIN) == GPIO_Pin_10) || \
-                              ((PIN) == GPIO_Pin_11) || \
-                              ((PIN) == GPIO_Pin_12) || \
-                              ((PIN) == GPIO_Pin_13) || \
-                              ((PIN) == GPIO_Pin_14) || \
-                              ((PIN) == GPIO_Pin_15))
-
-/**
-  * @}
-  */
-
-/** @defgroup GPIO_Pin_sources 
-  * @{
-  */
-#define GPIO_PinSource0            ((uint8_t)0x00)
-#define GPIO_PinSource1            ((uint8_t)0x01)
-#define GPIO_PinSource2            ((uint8_t)0x02)
-#define GPIO_PinSource3            ((uint8_t)0x03)
-#define GPIO_PinSource4            ((uint8_t)0x04)
-#define GPIO_PinSource5            ((uint8_t)0x05)
-#define GPIO_PinSource6            ((uint8_t)0x06)
-#define GPIO_PinSource7            ((uint8_t)0x07)
-#define GPIO_PinSource8            ((uint8_t)0x08)
-#define GPIO_PinSource9            ((uint8_t)0x09)
-#define GPIO_PinSource10           ((uint8_t)0x0A)
-#define GPIO_PinSource11           ((uint8_t)0x0B)
-#define GPIO_PinSource12           ((uint8_t)0x0C)
-#define GPIO_PinSource13           ((uint8_t)0x0D)
-#define GPIO_PinSource14           ((uint8_t)0x0E)
-#define GPIO_PinSource15           ((uint8_t)0x0F)
-
-#define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \
-                                       ((PINSOURCE) == GPIO_PinSource1) || \
-                                       ((PINSOURCE) == GPIO_PinSource2) || \
-                                       ((PINSOURCE) == GPIO_PinSource3) || \
-                                       ((PINSOURCE) == GPIO_PinSource4) || \
-                                       ((PINSOURCE) == GPIO_PinSource5) || \
-                                       ((PINSOURCE) == GPIO_PinSource6) || \
-                                       ((PINSOURCE) == GPIO_PinSource7) || \
-                                       ((PINSOURCE) == GPIO_PinSource8) || \
-                                       ((PINSOURCE) == GPIO_PinSource9) || \
-                                       ((PINSOURCE) == GPIO_PinSource10) || \
-                                       ((PINSOURCE) == GPIO_PinSource11) || \
-                                       ((PINSOURCE) == GPIO_PinSource12) || \
-                                       ((PINSOURCE) == GPIO_PinSource13) || \
-                                       ((PINSOURCE) == GPIO_PinSource14) || \
-                                       ((PINSOURCE) == GPIO_PinSource15))
-/**
-  * @}
-  */
-
-/** @defgroup GPIO_Alternate_function_selection_define 
-  * @{
-  */
-
-/** 
-  * @brief  AF 0 selection
-  */
-#define GPIO_AF_0            ((uint8_t)0x00) /* WKUP, EVENTOUT, TIM15, SPI1, TIM17,
-                                                MCO, SWDAT, SWCLK, TIM14, BOOT,
-                                                USART1, CEC, IR_OUT, SPI2, TS, TIM3,
-                                                USART4, CAN, TIM3, USART2, USART3, 
-                                                CRS, TIM16, TIM1 */
-/** 
-  * @brief  AF 1 selection
-  */
-#define GPIO_AF_1            ((uint8_t)0x01) /* USART2, CEC, TIM3, USART1, IR,
-                                                EVENTOUT, I2C1, I2C2, TIM15, SPI2,
-                                                USART3, TS, SPI1 */
-/** 
-  * @brief  AF 2 selection
-  */
-#define GPIO_AF_2            ((uint8_t)0x02) /* TIM2, TIM1, EVENTOUT, TIM16, TIM17,
-                                                USB */
-/** 
-  * @brief  AF 3 selection
-  */
-#define GPIO_AF_3            ((uint8_t)0x03) /* TS, I2C1, TIM15, EVENTOUT */
-
-/** 
-  * @brief  AF 4 selection
-  */
-#define GPIO_AF_4            ((uint8_t)0x04) /* TIM14, USART4, USART3, CRS, CAN,
-                                                I2C1 */
-
-/** 
-  * @brief  AF 5 selection
-  */
-#define GPIO_AF_5            ((uint8_t)0x05) /* TIM16, TIM17, TIM15, SPI2, I2C2, 
-                                                MCO, I2C1, USB */
-
-/** 
-  * @brief  AF 6 selection
-  */
-#define GPIO_AF_6            ((uint8_t)0x06) /* EVENTOUT */
-/** 
-  * @brief  AF 7 selection
-  */
-#define GPIO_AF_7            ((uint8_t)0x07) /* COMP1 OUT and COMP2 OUT */
-
-#define IS_GPIO_AF(AF)   (((AF) == GPIO_AF_0) || ((AF) == GPIO_AF_1) || \
-                          ((AF) == GPIO_AF_2) || ((AF) == GPIO_AF_3) || \
-                          ((AF) == GPIO_AF_4) || ((AF) == GPIO_AF_5) || \
-                          ((AF) == GPIO_AF_6) || ((AF) == GPIO_AF_7))
-
-/**
-  * @}
-  */
-
-/** @defgroup GPIO_Speed_Legacy 
-  * @{
-  */
-
-#define GPIO_Speed_2MHz  GPIO_Speed_Level_1   /*!< I/O output speed: Low 2 MHz  */
-#define GPIO_Speed_10MHz GPIO_Speed_Level_2   /*!< I/O output speed: Medium 10 MHz */
-#define GPIO_Speed_50MHz GPIO_Speed_Level_3   /*!< I/O output speed: High 50 MHz */
-  
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-/* Function used to set the GPIO configuration to the default reset state *****/
-void GPIO_DeInit(GPIO_TypeDef* GPIOx);
-
-/* Initialization and Configuration functions *********************************/
-void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
-void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
-void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
-
-/* GPIO Read and Write functions **********************************************/
-uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
-uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
-uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
-uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
-void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
-void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
-void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
-void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
-
-/* GPIO Alternate functions configuration functions ***************************/
-void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_GPIO_H */
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_i2c.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_i2c.h
deleted file mode 100644
index 1c56b9c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_i2c.h	
+++ /dev/null
@@ -1,478 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_i2c.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the I2C firmware
-  *          library
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_I2C_H
-#define __STM32F0XX_I2C_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup I2C
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-/**
-  * @brief  I2C Init structure definition
-  */
-
-typedef struct
-{
-  uint32_t I2C_Timing;              /*!< Specifies the I2C_TIMINGR_register value.
-                                         This parameter must be set by referring to I2C_Timing_Config_Tool*/
-
-  uint32_t I2C_AnalogFilter;        /*!< Enables or disables analog noise filter.
-                                         This parameter can be a value of @ref I2C_Analog_Filter*/
-
-  uint32_t I2C_DigitalFilter;       /*!< Configures the digital noise filter.
-                                         This parameter can be a number between 0x00 and 0x0F*/
-
-  uint32_t I2C_Mode;                /*!< Specifies the I2C mode.
-                                         This parameter can be a value of @ref I2C_mode*/
-
-  uint32_t I2C_OwnAddress1;         /*!< Specifies the device own address 1.
-                                         This parameter can be a 7-bit or 10-bit address*/
-
-  uint32_t I2C_Ack;                 /*!< Enables or disables the acknowledgement.
-                                         This parameter can be a value of @ref I2C_acknowledgement*/
-
-  uint32_t I2C_AcknowledgedAddress; /*!< Specifies if 7-bit or 10-bit address is acknowledged.
-                                         This parameter can be a value of @ref I2C_acknowledged_address*/
-}I2C_InitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-
-/** @defgroup I2C_Exported_Constants
-  * @{
-  */
-
-#define IS_I2C_ALL_PERIPH(PERIPH)       (((PERIPH) == I2C1) || \
-                                         ((PERIPH) == I2C2))
-                                         
-#define IS_I2C_1_PERIPH(PERIPH)         ((PERIPH) == I2C1) 
-
-/** @defgroup I2C_Analog_Filter 
-  * @{
-  */
-
-#define I2C_AnalogFilter_Enable         ((uint32_t)0x00000000)
-#define I2C_AnalogFilter_Disable        I2C_CR1_ANFOFF
-
-#define IS_I2C_ANALOG_FILTER(FILTER)    (((FILTER) == I2C_AnalogFilter_Enable) || \
-                                         ((FILTER) == I2C_AnalogFilter_Disable))
-/**
-  * @}
-  */
-
-/** @defgroup I2C_Digital_Filter
-  * @{
-  */
-
-#define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000F)
-/**
-  * @}
-  */
-
-/** @defgroup I2C_mode 
-  * @{
-  */
-
-#define I2C_Mode_I2C                    ((uint32_t)0x00000000)
-#define I2C_Mode_SMBusDevice            I2C_CR1_SMBDEN
-#define I2C_Mode_SMBusHost              I2C_CR1_SMBHEN
-
-#define IS_I2C_MODE(MODE)               (((MODE) == I2C_Mode_I2C) || \
-                                         ((MODE) == I2C_Mode_SMBusDevice) || \
-                                         ((MODE) == I2C_Mode_SMBusHost))
-/**
-  * @}
-  */
-
-/** @defgroup I2C_acknowledgement
-  * @{
-  */
-
-#define I2C_Ack_Enable                  ((uint32_t)0x00000000)
-#define I2C_Ack_Disable                 I2C_CR2_NACK
-
-#define IS_I2C_ACK(ACK)                 (((ACK) == I2C_Ack_Enable) || \
-                                         ((ACK) == I2C_Ack_Disable))
-/**
-  * @}
-  */
-
-/** @defgroup I2C_acknowledged_address
-  * @{
-  */
-
-#define I2C_AcknowledgedAddress_7bit    ((uint32_t)0x00000000)
-#define I2C_AcknowledgedAddress_10bit   I2C_OAR1_OA1MODE
-
-#define IS_I2C_ACKNOWLEDGE_ADDRESS(ADDRESS) (((ADDRESS) == I2C_AcknowledgedAddress_7bit) || \
-                                             ((ADDRESS) == I2C_AcknowledgedAddress_10bit))
-/**
-  * @}
-  */ 
-
-/** @defgroup I2C_own_address1
-  * @{
-  */
-
-#define IS_I2C_OWN_ADDRESS1(ADDRESS1)   ((ADDRESS1) <= (uint32_t)0x000003FF)
-/**
-  * @}
-  */
-
-/** @defgroup I2C_transfer_direction 
-  * @{
-  */
-
-#define I2C_Direction_Transmitter       ((uint16_t)0x0000)
-#define I2C_Direction_Receiver          ((uint16_t)0x0400)
-
-#define IS_I2C_DIRECTION(DIRECTION)     (((DIRECTION) == I2C_Direction_Transmitter) || \
-                                         ((DIRECTION) == I2C_Direction_Receiver))
-/**
-  * @}
-  */
-
-/** @defgroup I2C_DMA_transfer_requests 
-  * @{
-  */
-
-#define I2C_DMAReq_Tx                   I2C_CR1_TXDMAEN
-#define I2C_DMAReq_Rx                   I2C_CR1_RXDMAEN
-
-#define IS_I2C_DMA_REQ(REQ)             ((((REQ) & (uint32_t)0xFFFF3FFF) == 0x00) && ((REQ) != 0x00))
-/**
-  * @}
-  */
-
-/** @defgroup I2C_slave_address
-  * @{
-  */
-
-#define IS_I2C_SLAVE_ADDRESS(ADDRESS)   ((ADDRESS) <= (uint16_t)0x03FF)
-/**
-  * @}
-  */
-
-
-/** @defgroup I2C_own_address2
-  * @{
-  */
-
-#define IS_I2C_OWN_ADDRESS2(ADDRESS2)   ((ADDRESS2) <= (uint16_t)0x00FF)
-
-/**
-  * @}
-  */
-
-/** @defgroup I2C_own_address2_mask
-  * @{
-  */
-
-#define I2C_OA2_NoMask                  ((uint8_t)0x00)
-#define I2C_OA2_Mask01                  ((uint8_t)0x01)                 
-#define I2C_OA2_Mask02                  ((uint8_t)0x02)
-#define I2C_OA2_Mask03                  ((uint8_t)0x03)
-#define I2C_OA2_Mask04                  ((uint8_t)0x04)
-#define I2C_OA2_Mask05                  ((uint8_t)0x05)
-#define I2C_OA2_Mask06                  ((uint8_t)0x06)
-#define I2C_OA2_Mask07                  ((uint8_t)0x07)
-
-#define IS_I2C_OWN_ADDRESS2_MASK(MASK)  (((MASK) == I2C_OA2_NoMask) || \
-                                         ((MASK) == I2C_OA2_Mask01) || \
-                                         ((MASK) == I2C_OA2_Mask02) || \
-                                         ((MASK) == I2C_OA2_Mask03) || \
-                                         ((MASK) == I2C_OA2_Mask04) || \
-                                         ((MASK) == I2C_OA2_Mask05) || \
-                                         ((MASK) == I2C_OA2_Mask06) || \
-                                         ((MASK) == I2C_OA2_Mask07))  
-
-/**
-  * @}
-  */
-
-/** @defgroup I2C_timeout
-  * @{
-  */
-
-#define IS_I2C_TIMEOUT(TIMEOUT)   ((TIMEOUT) <= (uint16_t)0x0FFF)
-
-/**
-  * @}
-  */
-
-/** @defgroup I2C_registers 
-  * @{
-  */
-
-#define I2C_Register_CR1                ((uint8_t)0x00)
-#define I2C_Register_CR2                ((uint8_t)0x04)
-#define I2C_Register_OAR1               ((uint8_t)0x08)
-#define I2C_Register_OAR2               ((uint8_t)0x0C)
-#define I2C_Register_TIMINGR            ((uint8_t)0x10)
-#define I2C_Register_TIMEOUTR           ((uint8_t)0x14)
-#define I2C_Register_ISR                ((uint8_t)0x18)
-#define I2C_Register_ICR                ((uint8_t)0x1C)
-#define I2C_Register_PECR               ((uint8_t)0x20)
-#define I2C_Register_RXDR               ((uint8_t)0x24)
-#define I2C_Register_TXDR               ((uint8_t)0x28)
-
-#define IS_I2C_REGISTER(REGISTER)       (((REGISTER) == I2C_Register_CR1) || \
-                                         ((REGISTER) == I2C_Register_CR2) || \
-                                         ((REGISTER) == I2C_Register_OAR1) || \
-                                         ((REGISTER) == I2C_Register_OAR2) || \
-                                         ((REGISTER) == I2C_Register_TIMINGR) || \
-                                         ((REGISTER) == I2C_Register_TIMEOUTR) || \
-                                         ((REGISTER) == I2C_Register_ISR) || \
-                                         ((REGISTER) == I2C_Register_ICR) || \
-                                         ((REGISTER) == I2C_Register_PECR) || \
-                                         ((REGISTER) == I2C_Register_RXDR) || \
-                                         ((REGISTER) == I2C_Register_TXDR))
-/**
-  * @}
-  */
-
-/** @defgroup I2C_interrupts_definition 
-  * @{
-  */
-
-#define I2C_IT_ERRI                     I2C_CR1_ERRIE
-#define I2C_IT_TCI                      I2C_CR1_TCIE
-#define I2C_IT_STOPI                    I2C_CR1_STOPIE
-#define I2C_IT_NACKI                    I2C_CR1_NACKIE
-#define I2C_IT_ADDRI                    I2C_CR1_ADDRIE
-#define I2C_IT_RXI                      I2C_CR1_RXIE
-#define I2C_IT_TXI                      I2C_CR1_TXIE
-
-#define IS_I2C_CONFIG_IT(IT)            ((((IT) & (uint32_t)0xFFFFFF01) == 0x00) && ((IT) != 0x00))
-
-/**
-  * @}
-  */
-
-/** @defgroup I2C_flags_definition 
-  * @{
-  */
-
-#define  I2C_FLAG_TXE                   I2C_ISR_TXE
-#define  I2C_FLAG_TXIS                  I2C_ISR_TXIS
-#define  I2C_FLAG_RXNE                  I2C_ISR_RXNE
-#define  I2C_FLAG_ADDR                  I2C_ISR_ADDR
-#define  I2C_FLAG_NACKF                 I2C_ISR_NACKF
-#define  I2C_FLAG_STOPF                 I2C_ISR_STOPF
-#define  I2C_FLAG_TC                    I2C_ISR_TC
-#define  I2C_FLAG_TCR                   I2C_ISR_TCR
-#define  I2C_FLAG_BERR                  I2C_ISR_BERR
-#define  I2C_FLAG_ARLO                  I2C_ISR_ARLO
-#define  I2C_FLAG_OVR                   I2C_ISR_OVR
-#define  I2C_FLAG_PECERR                I2C_ISR_PECERR
-#define  I2C_FLAG_TIMEOUT               I2C_ISR_TIMEOUT
-#define  I2C_FLAG_ALERT                 I2C_ISR_ALERT
-#define  I2C_FLAG_BUSY                  I2C_ISR_BUSY
-
-#define IS_I2C_CLEAR_FLAG(FLAG)         ((((FLAG) & (uint32_t)0xFFFF4000) == 0x00) && ((FLAG) != 0x00))
-
-#define IS_I2C_GET_FLAG(FLAG)           (((FLAG) == I2C_FLAG_TXE) || ((FLAG) == I2C_FLAG_TXIS) || \
-                                         ((FLAG) == I2C_FLAG_RXNE) || ((FLAG) == I2C_FLAG_ADDR) || \
-                                         ((FLAG) == I2C_FLAG_NACKF) || ((FLAG) == I2C_FLAG_STOPF) || \
-                                         ((FLAG) == I2C_FLAG_TC) || ((FLAG) == I2C_FLAG_TCR) || \
-                                         ((FLAG) == I2C_FLAG_BERR) || ((FLAG) == I2C_FLAG_ARLO) || \
-                                         ((FLAG) == I2C_FLAG_OVR) || ((FLAG) == I2C_FLAG_PECERR) || \
-                                         ((FLAG) == I2C_FLAG_TIMEOUT) || ((FLAG) == I2C_FLAG_ALERT) || \
-                                         ((FLAG) == I2C_FLAG_BUSY))
-
-/**
-  * @}
-  */
-
-
-/** @defgroup I2C_interrupts_definition 
-  * @{
-  */
-
-#define  I2C_IT_TXIS                    I2C_ISR_TXIS
-#define  I2C_IT_RXNE                    I2C_ISR_RXNE
-#define  I2C_IT_ADDR                    I2C_ISR_ADDR
-#define  I2C_IT_NACKF                   I2C_ISR_NACKF
-#define  I2C_IT_STOPF                   I2C_ISR_STOPF
-#define  I2C_IT_TC                      I2C_ISR_TC
-#define  I2C_IT_TCR                     I2C_ISR_TCR
-#define  I2C_IT_BERR                    I2C_ISR_BERR
-#define  I2C_IT_ARLO                    I2C_ISR_ARLO
-#define  I2C_IT_OVR                     I2C_ISR_OVR
-#define  I2C_IT_PECERR                  I2C_ISR_PECERR
-#define  I2C_IT_TIMEOUT                 I2C_ISR_TIMEOUT
-#define  I2C_IT_ALERT                   I2C_ISR_ALERT
-
-#define IS_I2C_CLEAR_IT(IT)             ((((IT) & (uint32_t)0xFFFFC001) == 0x00) && ((IT) != 0x00))
-                               
-#define IS_I2C_GET_IT(IT)               (((IT) == I2C_IT_TXIS) || ((IT) == I2C_IT_RXNE) || \
-                                         ((IT) == I2C_IT_ADDR) || ((IT) == I2C_IT_NACKF) || \
-                                         ((IT) == I2C_IT_STOPF) || ((IT) == I2C_IT_TC) || \
-                                         ((IT) == I2C_IT_TCR) || ((IT) == I2C_IT_BERR) || \
-                                         ((IT) == I2C_IT_ARLO) || ((IT) == I2C_IT_OVR) || \
-                                         ((IT) == I2C_IT_PECERR) || ((IT) == I2C_IT_TIMEOUT) || \
-                                         ((IT) == I2C_IT_ALERT))
-                               
-
-/**
-  * @}
-  */
-
-/** @defgroup I2C_ReloadEndMode_definition 
-  * @{
-  */
-
-#define  I2C_Reload_Mode                I2C_CR2_RELOAD
-#define  I2C_AutoEnd_Mode               I2C_CR2_AUTOEND
-#define  I2C_SoftEnd_Mode               ((uint32_t)0x00000000)
-
-                              
-#define IS_RELOAD_END_MODE(MODE)        (((MODE) == I2C_Reload_Mode) || \
-                                         ((MODE) == I2C_AutoEnd_Mode) || \
-                                         ((MODE) == I2C_SoftEnd_Mode))
-                               
-
-/**
-  * @}
-  */
-
-/** @defgroup I2C_StartStopMode_definition 
-  * @{
-  */
-
-#define  I2C_No_StartStop                 ((uint32_t)0x00000000)
-#define  I2C_Generate_Stop                I2C_CR2_STOP
-#define  I2C_Generate_Start_Read          (uint32_t)(I2C_CR2_START | I2C_CR2_RD_WRN)
-#define  I2C_Generate_Start_Write         I2C_CR2_START
-
-                              
-#define IS_START_STOP_MODE(MODE)        (((MODE) == I2C_Generate_Stop) || \
-                                         ((MODE) == I2C_Generate_Start_Read) || \
-                                         ((MODE) == I2C_Generate_Start_Write) || \
-                                         ((MODE) == I2C_No_StartStop))
-                               
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-
-/* Initialization and Configuration functions *********************************/
-void I2C_DeInit(I2C_TypeDef* I2Cx);
-void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);
-void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct);
-void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx);
-void I2C_ITConfig(I2C_TypeDef* I2Cx, uint32_t I2C_IT, FunctionalState NewState);
-void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_StopModeCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); /*!< not applicable for STM32F030 devices */
-void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint16_t Address, uint8_t Mask);
-void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_SlaveByteControlCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_SlaveAddressConfig(I2C_TypeDef* I2Cx, uint16_t Address);
-void I2C_10BitAddressingModeCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-
-/* Communications handling functions ******************************************/
-void I2C_AutoEndCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_ReloadCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_NumberOfBytesConfig(I2C_TypeDef* I2Cx, uint8_t Number_Bytes);
-void I2C_MasterRequestConfig(I2C_TypeDef* I2Cx, uint16_t I2C_Direction);
-void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_10BitAddressHeaderCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState);
-uint8_t I2C_GetAddressMatched(I2C_TypeDef* I2Cx);
-uint16_t I2C_GetTransferDirection(I2C_TypeDef* I2Cx);
-void I2C_TransferHandling(I2C_TypeDef* I2Cx, uint16_t Address, uint8_t Number_Bytes, uint32_t ReloadEndMode, uint32_t StartStopMode);
-
-/*  SMBUS management functions ************************************************/
-void I2C_SMBusAlertCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_ClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_ExtendedClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_IdleClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_TimeoutAConfig(I2C_TypeDef* I2Cx, uint16_t Timeout);
-void I2C_TimeoutBConfig(I2C_TypeDef* I2Cx, uint16_t Timeout);
-void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState);
-void I2C_PECRequestCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
-uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx);
-
-/* I2C registers management functions *****************************************/
-uint32_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register);
-
-/* Data transfers management functions ****************************************/
-void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data);
-uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx);
-
-/* DMA transfers management functions *****************************************/
-void I2C_DMACmd(I2C_TypeDef* I2Cx, uint32_t I2C_DMAReq, FunctionalState NewState);
-
-/* Interrupts and flags management functions **********************************/
-FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);
-void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);
-ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT);
-void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_I2C_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_iwdg.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_iwdg.h
deleted file mode 100644
index 4ad0f38..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_iwdg.h	
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_iwdg.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the IWDG 
-  *          firmware library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_IWDG_H
-#define __STM32F0XX_IWDG_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup IWDG
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup IWDG_Exported_Constants
-  * @{
-  */
-
-/** @defgroup IWDG_WriteAccess
-  * @{
-  */
-
-#define IWDG_WriteAccess_Enable     ((uint16_t)0x5555)
-#define IWDG_WriteAccess_Disable    ((uint16_t)0x0000)
-#define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \
-                                      ((ACCESS) == IWDG_WriteAccess_Disable))
-/**
-  * @}
-  */
-
-/** @defgroup IWDG_prescaler 
-  * @{
-  */
-
-#define IWDG_Prescaler_4            ((uint8_t)0x00)
-#define IWDG_Prescaler_8            ((uint8_t)0x01)
-#define IWDG_Prescaler_16           ((uint8_t)0x02)
-#define IWDG_Prescaler_32           ((uint8_t)0x03)
-#define IWDG_Prescaler_64           ((uint8_t)0x04)
-#define IWDG_Prescaler_128          ((uint8_t)0x05)
-#define IWDG_Prescaler_256          ((uint8_t)0x06)
-#define IS_IWDG_PRESCALER(PRESCALER) (((PRESCALER) == IWDG_Prescaler_4)  || \
-                                      ((PRESCALER) == IWDG_Prescaler_8)  || \
-                                      ((PRESCALER) == IWDG_Prescaler_16) || \
-                                      ((PRESCALER) == IWDG_Prescaler_32) || \
-                                      ((PRESCALER) == IWDG_Prescaler_64) || \
-                                      ((PRESCALER) == IWDG_Prescaler_128)|| \
-                                      ((PRESCALER) == IWDG_Prescaler_256))
-/**
-  * @}
-  */
-
-/** @defgroup IWDG_Flag 
-  * @{
-  */
-
-#define IWDG_FLAG_PVU               IWDG_SR_PVU
-#define IWDG_FLAG_RVU               IWDG_SR_RVU
-#define IWDG_FLAG_WVU               IWDG_SR_WVU
-#define IS_IWDG_FLAG(FLAG) (((FLAG) == IWDG_FLAG_PVU) || ((FLAG) == IWDG_FLAG_RVU)  || \
-                            ((FLAG) == IWDG_FLAG_WVU))
-
-#define IS_IWDG_RELOAD(RELOAD) ((RELOAD) <= 0xFFF)
-
-#define IS_IWDG_WINDOW_VALUE(VALUE) ((VALUE) <= 0xFFF)
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/* Prescaler and Counter configuration functions ******************************/
-void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
-void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
-void IWDG_SetReload(uint16_t Reload);
-void IWDG_ReloadCounter(void);
-void IWDG_SetWindowValue(uint16_t WindowValue);
-
-/* IWDG activation function ***************************************************/
-void IWDG_Enable(void);
-
-/* Flag management function ***************************************************/
-FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_IWDG_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_misc.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_misc.h
deleted file mode 100644
index f5ea6bd..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_misc.h	
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_misc.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the miscellaneous
-  *          firmware library functions (add-on to CMSIS functions).
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_MISC_H
-#define __STM32F0XX_MISC_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup MISC
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  NVIC Init Structure definition  
-  */
-
-typedef struct
-{
-  uint8_t NVIC_IRQChannel;             /*!< Specifies the IRQ channel to be enabled or disabled.
-                                            This parameter can be a value of @ref IRQn_Type 
-                                            (For the complete STM32 Devices IRQ Channels list, 
-                                            please refer to stm32f0xx.h file) */
-
-  uint8_t NVIC_IRQChannelPriority;     /*!< Specifies the priority level for the IRQ channel specified
-                                            in NVIC_IRQChannel. This parameter can be a value
-                                            between 0 and 3.  */
-
-  FunctionalState NVIC_IRQChannelCmd;  /*!< Specifies whether the IRQ channel defined in NVIC_IRQChannel
-                                            will be enabled or disabled. 
-                                            This parameter can be set either to ENABLE or DISABLE */   
-} NVIC_InitTypeDef;
-
-/**  
-  *
-@verbatim   
-
-@endverbatim
-*/
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup MISC_Exported_Constants
-  * @{
-  */
-
-/** @defgroup MISC_System_Low_Power 
-  * @{
-  */
-
-#define NVIC_LP_SEVONPEND            ((uint8_t)0x10)
-#define NVIC_LP_SLEEPDEEP            ((uint8_t)0x04)
-#define NVIC_LP_SLEEPONEXIT          ((uint8_t)0x02)
-#define IS_NVIC_LP(LP) (((LP) == NVIC_LP_SEVONPEND) || \
-                        ((LP) == NVIC_LP_SLEEPDEEP) || \
-                        ((LP) == NVIC_LP_SLEEPONEXIT))
-/**
-  * @}
-  */
-
-/** @defgroup MISC_Preemption_Priority_Group 
-  * @{
-  */
-#define IS_NVIC_PRIORITY(PRIORITY)  ((PRIORITY) < 0x04)
-
-/**
-  * @}
-  */
-
-/** @defgroup MISC_SysTick_clock_source 
-  * @{
-  */
-
-#define SysTick_CLKSource_HCLK_Div8    ((uint32_t)0xFFFFFFFB)
-#define SysTick_CLKSource_HCLK         ((uint32_t)0x00000004)
-#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SysTick_CLKSource_HCLK) || \
-                                       ((SOURCE) == SysTick_CLKSource_HCLK_Div8))
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
-void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState);
-void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_MISC_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_pwr.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_pwr.h
deleted file mode 100644
index 491368c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_pwr.h	
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_pwr.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the PWR firmware 
-  *          library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_PWR_H
-#define __STM32F0XX_PWR_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup PWR
-  * @{
-  */ 
-
-/* Exported types ------------------------------------------------------------*/
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup PWR_Exported_Constants
-  * @{
-  */ 
-
-/** @defgroup PWR_PVD_detection_level 
-  * @brief    This parameters are only applicable for STM32F051 and STM32F072 devices
-  * @{
-  */ 
-
-#define PWR_PVDLevel_0                  PWR_CR_PLS_LEV0
-#define PWR_PVDLevel_1                  PWR_CR_PLS_LEV1
-#define PWR_PVDLevel_2                  PWR_CR_PLS_LEV2
-#define PWR_PVDLevel_3                  PWR_CR_PLS_LEV3
-#define PWR_PVDLevel_4                  PWR_CR_PLS_LEV4
-#define PWR_PVDLevel_5                  PWR_CR_PLS_LEV5
-#define PWR_PVDLevel_6                  PWR_CR_PLS_LEV6
-#define PWR_PVDLevel_7                  PWR_CR_PLS_LEV7 
-
-#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLevel_0) || ((LEVEL) == PWR_PVDLevel_1)|| \
-                                 ((LEVEL) == PWR_PVDLevel_2) || ((LEVEL) == PWR_PVDLevel_3)|| \
-                                 ((LEVEL) == PWR_PVDLevel_4) || ((LEVEL) == PWR_PVDLevel_5)|| \
-                                 ((LEVEL) == PWR_PVDLevel_6) || ((LEVEL) == PWR_PVDLevel_7))
-/**
-  * @}
-  */
-
-/** @defgroup PWR_WakeUp_Pins 
-  * @{
-  */
-
-#define PWR_WakeUpPin_1                 PWR_CSR_EWUP1
-#define PWR_WakeUpPin_2                 PWR_CSR_EWUP2
-#define PWR_WakeUpPin_3                 PWR_CSR_EWUP3 /*!< only applicable for STM32F072 devices */
-#define PWR_WakeUpPin_4                 PWR_CSR_EWUP4 /*!< only applicable for STM32F072 devices */
-#define PWR_WakeUpPin_5                 PWR_CSR_EWUP5 /*!< only applicable for STM32F072 devices */
-#define PWR_WakeUpPin_6                 PWR_CSR_EWUP6 /*!< only applicable for STM32F072 devices */
-#define PWR_WakeUpPin_7                 PWR_CSR_EWUP7 /*!< only applicable for STM32F072 devices */
-#define PWR_WakeUpPin_8                 PWR_CSR_EWUP8 /*!< only applicable for STM32F072 devices */
-#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WakeUpPin_1) || ((PIN) == PWR_WakeUpPin_2) || \
-                                ((PIN) == PWR_WakeUpPin_3) || ((PIN) == PWR_WakeUpPin_4) || \
-                                ((PIN) == PWR_WakeUpPin_5) || ((PIN) == PWR_WakeUpPin_6) || \
-                                ((PIN) == PWR_WakeUpPin_7) || ((PIN) == PWR_WakeUpPin_8))
-/**
-  * @}
-  */
-
- 
-/** @defgroup PWR_Regulator_state_is_Sleep_STOP_mode 
-  * @{
-  */
-
-#define PWR_Regulator_ON                ((uint32_t)0x00000000)
-#define PWR_Regulator_LowPower          PWR_CR_LPSDSR
-#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_Regulator_ON) || \
-                                     ((REGULATOR) == PWR_Regulator_LowPower))
-/**
-  * @}
-  */
-
-/** @defgroup PWR_SLEEP_mode_entry 
-  * @{
-  */
-
-#define PWR_SLEEPEntry_WFI              ((uint8_t)0x01)
-#define PWR_SLEEPEntry_WFE              ((uint8_t)0x02)
-#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPEntry_WFI) || ((ENTRY) == PWR_SLEEPEntry_WFE))
- 
-/**
-  * @}
-  */
-
-/** @defgroup PWR_STOP_mode_entry 
-  * @{
-  */
-
-#define PWR_STOPEntry_WFI               ((uint8_t)0x01)
-#define PWR_STOPEntry_WFE               ((uint8_t)0x02)
-#define PWR_STOPEntry_SLEEPONEXIT       ((uint8_t)0x03)
-#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPEntry_WFI) || ((ENTRY) == PWR_STOPEntry_WFE) ||\
-                                  ((ENTRY) == PWR_STOPEntry_SLEEPONEXIT))
- 
-/**
-  * @}
-  */
-
-/** @defgroup PWR_Flag 
-  * @{
-  */
-
-#define PWR_FLAG_WU                     PWR_CSR_WUF
-#define PWR_FLAG_SB                     PWR_CSR_SBF
-#define PWR_FLAG_PVDO                   PWR_CSR_PVDO /*!< Not applicable for STM32F030 devices */
-#define PWR_FLAG_VREFINTRDY             PWR_CSR_VREFINTRDYF 
-
-#define IS_PWR_GET_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB) || \
-                               ((FLAG) == PWR_FLAG_PVDO) || ((FLAG) == PWR_FLAG_VREFINTRDY))
-
-#define IS_PWR_CLEAR_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB))
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/* Function used to set the PWR configuration to the default reset state ******/
-void PWR_DeInit(void);
-
-/* Backup Domain Access function **********************************************/
-void PWR_BackupAccessCmd(FunctionalState NewState);
-
-/* PVD configuration functions ************************************************/
-void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel); /*!< only applicable for STM32F051 and STM32F072 devices */
-void PWR_PVDCmd(FunctionalState NewState); /*!< only applicable for STM32F051 and STM32F072 devices */
-
-/* WakeUp pins configuration functions ****************************************/
-void PWR_WakeUpPinCmd(uint32_t PWR_WakeUpPin, FunctionalState NewState);
-
-/* Low Power modes configuration functions ************************************/
-void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry);
-void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);
-void PWR_EnterSTANDBYMode(void);
-
-/* Flags management functions *************************************************/
-FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG);
-void PWR_ClearFlag(uint32_t PWR_FLAG);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_PWR_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_rcc.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_rcc.h
deleted file mode 100644
index cd0899c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_rcc.h	
+++ /dev/null
@@ -1,608 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_rcc.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the RCC 
-  *          firmware library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_RCC_H
-#define __STM32F0XX_RCC_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup RCC
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-typedef struct
-{
-  uint32_t SYSCLK_Frequency;
-  uint32_t HCLK_Frequency;
-  uint32_t PCLK_Frequency;
-  uint32_t ADCCLK_Frequency;
-  uint32_t CECCLK_Frequency;
-  uint32_t I2C1CLK_Frequency;
-  uint32_t USART1CLK_Frequency;
-  uint32_t USART2CLK_Frequency; /*!< Only applicable for STM32F072 devices */
-  uint32_t USBCLK_Frequency; /*!< Only applicable for STM32F072 devices */
-}RCC_ClocksTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup RCC_Exported_Constants
-  * @{
-  */
-
-/** @defgroup RCC_HSE_configuration 
-  * @{
-  */
-
-#define RCC_HSE_OFF                      ((uint8_t)0x00)
-#define RCC_HSE_ON                       ((uint8_t)0x01)
-#define RCC_HSE_Bypass                   ((uint8_t)0x05)
-#define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \
-                         ((HSE) == RCC_HSE_Bypass))
-
-/**
-  * @}
-  */ 
- 
-/** @defgroup RCC_PLL_Clock_Source 
-  * @{
-  */
-
-#define RCC_PLLSource_HSI_Div2           RCC_CFGR_PLLSRC_HSI_Div2
-#define RCC_PLLSource_PREDIV1            RCC_CFGR_PLLSRC_HSE_PREDIV /* Old HSEPREDIV1 bit definition, maintained for legacy purpose */
-#define RCC_PLLSource_HSE                RCC_CFGR_PLLSRC_HSE_PREDIV /*!< Only applicable for STM32F072 devices */
-#define RCC_PLLSource_HSI48              RCC_CFGR_PLLSRC_HSI48_PREDIV /*!< Only applicable for STM32F072 devices */
-#define RCC_PLLSource_HSI                RCC_CFGR_PLLSRC_HSI_PREDIV /*!< Only applicable for STM32F072 devices */
-
-#define IS_RCC_PLL_SOURCE(SOURCE) (((SOURCE) == RCC_PLLSource_HSI_Div2) || \
-                                   ((SOURCE) == RCC_PLLSource_HSI48)    || \
-                                   ((SOURCE) == RCC_PLLSource_HSI)      || \
-                                   ((SOURCE) == RCC_PLLSource_HSE)      || \
-                                   ((SOURCE) == RCC_PLLSource_PREDIV1))
-/**
-  * @}
-  */ 
-
-/** @defgroup RCC_PLL_Multiplication_Factor 
-  * @{
-  */
-
-#define RCC_PLLMul_2                    RCC_CFGR_PLLMULL2
-#define RCC_PLLMul_3                    RCC_CFGR_PLLMULL3
-#define RCC_PLLMul_4                    RCC_CFGR_PLLMULL4
-#define RCC_PLLMul_5                    RCC_CFGR_PLLMULL5
-#define RCC_PLLMul_6                    RCC_CFGR_PLLMULL6
-#define RCC_PLLMul_7                    RCC_CFGR_PLLMULL7
-#define RCC_PLLMul_8                    RCC_CFGR_PLLMULL8
-#define RCC_PLLMul_9                    RCC_CFGR_PLLMULL9
-#define RCC_PLLMul_10                   RCC_CFGR_PLLMULL10
-#define RCC_PLLMul_11                   RCC_CFGR_PLLMULL11
-#define RCC_PLLMul_12                   RCC_CFGR_PLLMULL12
-#define RCC_PLLMul_13                   RCC_CFGR_PLLMULL13
-#define RCC_PLLMul_14                   RCC_CFGR_PLLMULL14
-#define RCC_PLLMul_15                   RCC_CFGR_PLLMULL15
-#define RCC_PLLMul_16                   RCC_CFGR_PLLMULL16
-#define IS_RCC_PLL_MUL(MUL) (((MUL) == RCC_PLLMul_2) || ((MUL) == RCC_PLLMul_3)   || \
-                             ((MUL) == RCC_PLLMul_4) || ((MUL) == RCC_PLLMul_5)   || \
-                             ((MUL) == RCC_PLLMul_6) || ((MUL) == RCC_PLLMul_7)   || \
-                             ((MUL) == RCC_PLLMul_8) || ((MUL) == RCC_PLLMul_9)   || \
-                             ((MUL) == RCC_PLLMul_10) || ((MUL) == RCC_PLLMul_11) || \
-                             ((MUL) == RCC_PLLMul_12) || ((MUL) == RCC_PLLMul_13) || \
-                             ((MUL) == RCC_PLLMul_14) || ((MUL) == RCC_PLLMul_15) || \
-                             ((MUL) == RCC_PLLMul_16))
-/**
-  * @}
-  */
-
-/** @defgroup RCC_PREDIV1_division_factor
-  * @{
-  */
-#define  RCC_PREDIV1_Div1               RCC_CFGR2_PREDIV1_DIV1
-#define  RCC_PREDIV1_Div2               RCC_CFGR2_PREDIV1_DIV2
-#define  RCC_PREDIV1_Div3               RCC_CFGR2_PREDIV1_DIV3
-#define  RCC_PREDIV1_Div4               RCC_CFGR2_PREDIV1_DIV4
-#define  RCC_PREDIV1_Div5               RCC_CFGR2_PREDIV1_DIV5
-#define  RCC_PREDIV1_Div6               RCC_CFGR2_PREDIV1_DIV6
-#define  RCC_PREDIV1_Div7               RCC_CFGR2_PREDIV1_DIV7
-#define  RCC_PREDIV1_Div8               RCC_CFGR2_PREDIV1_DIV8
-#define  RCC_PREDIV1_Div9               RCC_CFGR2_PREDIV1_DIV9
-#define  RCC_PREDIV1_Div10              RCC_CFGR2_PREDIV1_DIV10
-#define  RCC_PREDIV1_Div11              RCC_CFGR2_PREDIV1_DIV11
-#define  RCC_PREDIV1_Div12              RCC_CFGR2_PREDIV1_DIV12
-#define  RCC_PREDIV1_Div13              RCC_CFGR2_PREDIV1_DIV13
-#define  RCC_PREDIV1_Div14              RCC_CFGR2_PREDIV1_DIV14
-#define  RCC_PREDIV1_Div15              RCC_CFGR2_PREDIV1_DIV15
-#define  RCC_PREDIV1_Div16              RCC_CFGR2_PREDIV1_DIV16
-
-#define IS_RCC_PREDIV1(PREDIV1) (((PREDIV1) == RCC_PREDIV1_Div1) || ((PREDIV1) == RCC_PREDIV1_Div2) || \
-                                 ((PREDIV1) == RCC_PREDIV1_Div3) || ((PREDIV1) == RCC_PREDIV1_Div4) || \
-                                 ((PREDIV1) == RCC_PREDIV1_Div5) || ((PREDIV1) == RCC_PREDIV1_Div6) || \
-                                 ((PREDIV1) == RCC_PREDIV1_Div7) || ((PREDIV1) == RCC_PREDIV1_Div8) || \
-                                 ((PREDIV1) == RCC_PREDIV1_Div9) || ((PREDIV1) == RCC_PREDIV1_Div10) || \
-                                 ((PREDIV1) == RCC_PREDIV1_Div11) || ((PREDIV1) == RCC_PREDIV1_Div12) || \
-                                 ((PREDIV1) == RCC_PREDIV1_Div13) || ((PREDIV1) == RCC_PREDIV1_Div14) || \
-                                 ((PREDIV1) == RCC_PREDIV1_Div15) || ((PREDIV1) == RCC_PREDIV1_Div16))
-/**
-  * @}
-  */
- 
-/** @defgroup RCC_System_Clock_Source 
-  * @{
-  */
-
-#define RCC_SYSCLKSource_HSI             RCC_CFGR_SW_HSI
-#define RCC_SYSCLKSource_HSE             RCC_CFGR_SW_HSE
-#define RCC_SYSCLKSource_PLLCLK          RCC_CFGR_SW_PLL
-#define RCC_SYSCLKSource_HSI48           RCC_CFGR_SW_HSI48 /*!< Only applicable for STM32F072 devices */
-
-#define IS_RCC_SYSCLK_SOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSource_HSI)   || \
-                                      ((SOURCE) == RCC_SYSCLKSource_HSE)   || \
-                                      ((SOURCE) == RCC_SYSCLKSource_HSI48) || \
-                                      ((SOURCE) == RCC_SYSCLKSource_PLLCLK))
-/**
-  * @}
-  */
-
-/** @defgroup RCC_AHB_Clock_Source
-  * @{
-  */
-
-#define RCC_SYSCLK_Div1                  RCC_CFGR_HPRE_DIV1
-#define RCC_SYSCLK_Div2                  RCC_CFGR_HPRE_DIV2
-#define RCC_SYSCLK_Div4                  RCC_CFGR_HPRE_DIV4
-#define RCC_SYSCLK_Div8                  RCC_CFGR_HPRE_DIV8
-#define RCC_SYSCLK_Div16                 RCC_CFGR_HPRE_DIV16
-#define RCC_SYSCLK_Div64                 RCC_CFGR_HPRE_DIV64
-#define RCC_SYSCLK_Div128                RCC_CFGR_HPRE_DIV128
-#define RCC_SYSCLK_Div256                RCC_CFGR_HPRE_DIV256
-#define RCC_SYSCLK_Div512                RCC_CFGR_HPRE_DIV512
-#define IS_RCC_HCLK(HCLK) (((HCLK) == RCC_SYSCLK_Div1) || ((HCLK) == RCC_SYSCLK_Div2) || \
-                           ((HCLK) == RCC_SYSCLK_Div4) || ((HCLK) == RCC_SYSCLK_Div8) || \
-                           ((HCLK) == RCC_SYSCLK_Div16) || ((HCLK) == RCC_SYSCLK_Div64) || \
-                           ((HCLK) == RCC_SYSCLK_Div128) || ((HCLK) == RCC_SYSCLK_Div256) || \
-                           ((HCLK) == RCC_SYSCLK_Div512))
-/**
-  * @}
-  */ 
-
-/** @defgroup RCC_APB_Clock_Source
-  * @{
-  */
-
-#define RCC_HCLK_Div1                    RCC_CFGR_PPRE_DIV1
-#define RCC_HCLK_Div2                    RCC_CFGR_PPRE_DIV2
-#define RCC_HCLK_Div4                    RCC_CFGR_PPRE_DIV4
-#define RCC_HCLK_Div8                    RCC_CFGR_PPRE_DIV8
-#define RCC_HCLK_Div16                   RCC_CFGR_PPRE_DIV16
-#define IS_RCC_PCLK(PCLK) (((PCLK) == RCC_HCLK_Div1) || ((PCLK) == RCC_HCLK_Div2) || \
-                           ((PCLK) == RCC_HCLK_Div4) || ((PCLK) == RCC_HCLK_Div8) || \
-                           ((PCLK) == RCC_HCLK_Div16))
-/**
-  * @}
-  */
-  
-/** @defgroup RCC_ADC_clock_source 
-  * @{
-  */
-/* These defines are obsolete and kept for legacy purpose only.
-Proper ADC clock selection is done within ADC driver by mean of the ADC_ClockModeConfig() function */
-#define RCC_ADCCLK_HSI14                 ((uint32_t)0x00000000)
-#define RCC_ADCCLK_PCLK_Div2             ((uint32_t)0x01000000)
-#define RCC_ADCCLK_PCLK_Div4             ((uint32_t)0x01004000)
-
-#define IS_RCC_ADCCLK(ADCCLK) (((ADCCLK) == RCC_ADCCLK_HSI14) || ((ADCCLK) == RCC_ADCCLK_PCLK_Div2) || \
-                               ((ADCCLK) == RCC_ADCCLK_PCLK_Div4))
-
-/**
-  * @}
-  */
-
-/** @defgroup RCC_CEC_clock_source 
-  * @{
-  */
-
-#define RCC_CECCLK_HSI_Div244            ((uint32_t)0x00000000)
-#define RCC_CECCLK_LSE                   RCC_CFGR3_CECSW
-
-#define IS_RCC_CECCLK(CECCLK) (((CECCLK) == RCC_CECCLK_HSI_Div244) || ((CECCLK) == RCC_CECCLK_LSE))
-
-/**
-  * @}
-  */
-
-/** @defgroup RCC_I2C_clock_source 
-  * @{
-  */
-
-#define RCC_I2C1CLK_HSI                   ((uint32_t)0x00000000)
-#define RCC_I2C1CLK_SYSCLK                RCC_CFGR3_I2C1SW
-
-#define IS_RCC_I2CCLK(I2CCLK) (((I2CCLK) == RCC_I2C1CLK_HSI) || ((I2CCLK) == RCC_I2C1CLK_SYSCLK))
-
-/**
-  * @}
-  */
-
-/** @defgroup RCC_USB_clock_source
-  * @brief    Applicable only for STM32F072 devices
-  * @{
-  */
-
-#define RCC_USBCLK_HSI48                 ((uint32_t)0x00000000)
-#define RCC_USBCLK_PLLCLK                RCC_CFGR3_USBSW
-
-#define IS_RCC_USBCLK(USBCLK) (((USBCLK) == RCC_USBCLK_HSI48) || ((USBCLK) == RCC_USBCLK_PLLCLK))
-
-/**
-  * @}
-  */
-
-/** @defgroup RCC_USART_clock_source 
-  * @{
-  */
-
-#define RCC_USART1CLK_PCLK                  ((uint32_t)0x10000000)
-#define RCC_USART1CLK_SYSCLK                ((uint32_t)0x10000001)
-#define RCC_USART1CLK_LSE                   ((uint32_t)0x10000002)
-#define RCC_USART1CLK_HSI                   ((uint32_t)0x10000003)
-
-#define RCC_USART2CLK_PCLK                  ((uint32_t)0x20000000) /*!< Only applicable for STM32F072 devices */
-#define RCC_USART2CLK_SYSCLK                ((uint32_t)0x20010000) /*!< Only applicable for STM32F072 devices */
-#define RCC_USART2CLK_LSE                   ((uint32_t)0x20020000) /*!< Only applicable for STM32F072 devices */
-#define RCC_USART2CLK_HSI                   ((uint32_t)0x20030000) /*!< Only applicable for STM32F072 devices */
-
-#define IS_RCC_USARTCLK(USARTCLK) (((USARTCLK) == RCC_USART1CLK_PCLK)   || \
-                                   ((USARTCLK) == RCC_USART1CLK_SYSCLK) || \
-                                   ((USARTCLK) == RCC_USART1CLK_LSE)    || \
-                                   ((USARTCLK) == RCC_USART1CLK_HSI)    || \
-                                   ((USARTCLK) == RCC_USART2CLK_PCLK)   || \
-                                   ((USARTCLK) == RCC_USART2CLK_SYSCLK) || \
-                                   ((USARTCLK) == RCC_USART2CLK_LSE)    || \
-                                   ((USARTCLK) == RCC_USART2CLK_HSI))
-
-/**
-  * @}
-  */
-         
-/** @defgroup RCC_Interrupt_Source 
-  * @{
-  */
-
-#define RCC_IT_LSIRDY                    ((uint8_t)0x01)
-#define RCC_IT_LSERDY                    ((uint8_t)0x02)
-#define RCC_IT_HSIRDY                    ((uint8_t)0x04)
-#define RCC_IT_HSERDY                    ((uint8_t)0x08)
-#define RCC_IT_PLLRDY                    ((uint8_t)0x10)
-#define RCC_IT_HSI14RDY                  ((uint8_t)0x20)
-#define RCC_IT_HSI48RDY                  ((uint8_t)0x40) /*!< Only applicable for STM32F072 devices */
-#define RCC_IT_CSS                       ((uint8_t)0x80)
-
-#define IS_RCC_IT(IT) ((((IT) & (uint8_t)0x80) == 0x00) && ((IT) != 0x00))
-
-#define IS_RCC_GET_IT(IT) (((IT) == RCC_IT_LSIRDY) || ((IT) == RCC_IT_LSERDY) || \
-                           ((IT) == RCC_IT_HSIRDY) || ((IT) == RCC_IT_HSERDY) || \
-                           ((IT) == RCC_IT_PLLRDY) || ((IT) == RCC_IT_HSI14RDY) || \
-                           ((IT) == RCC_IT_CSS)    || ((IT) == RCC_IT_HSI48RDY))
-
-#define IS_RCC_CLEAR_IT(IT) ((IT) != 0x00)
-
-/**
-  * @}
-  */
-  
-/** @defgroup RCC_LSE_Configuration 
-  * @{
-  */
-
-#define RCC_LSE_OFF                      ((uint32_t)0x00000000)
-#define RCC_LSE_ON                       RCC_BDCR_LSEON
-#define RCC_LSE_Bypass                   ((uint32_t)(RCC_BDCR_LSEON | RCC_BDCR_LSEBYP))
-#define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_OFF) || ((LSE) == RCC_LSE_ON) || \
-                         ((LSE) == RCC_LSE_Bypass))
-/**
-  * @}
-  */
-
-/** @defgroup RCC_RTC_Clock_Source
-  * @{
-  */
-
-#define RCC_RTCCLKSource_LSE             RCC_BDCR_RTCSEL_LSE
-#define RCC_RTCCLKSource_LSI             RCC_BDCR_RTCSEL_LSI
-#define RCC_RTCCLKSource_HSE_Div32       RCC_BDCR_RTCSEL_HSE
-
-#define IS_RCC_RTCCLK_SOURCE(SOURCE) (((SOURCE) == RCC_RTCCLKSource_LSE) || \
-                                      ((SOURCE) == RCC_RTCCLKSource_LSI) || \
-                                      ((SOURCE) == RCC_RTCCLKSource_HSE_Div32))
-/**
-  * @}
-  */
-
-/** @defgroup RCC_LSE_Drive_Configuration 
-  * @{
-  */
-
-#define RCC_LSEDrive_Low                 ((uint32_t)0x00000000)
-#define RCC_LSEDrive_MediumLow           RCC_BDCR_LSEDRV_0
-#define RCC_LSEDrive_MediumHigh          RCC_BDCR_LSEDRV_1
-#define RCC_LSEDrive_High                RCC_BDCR_LSEDRV
-#define IS_RCC_LSE_DRIVE(DRIVE) (((DRIVE) == RCC_LSEDrive_Low) || ((DRIVE) == RCC_LSEDrive_MediumLow) || \
-                                 ((DRIVE) == RCC_LSEDrive_MediumHigh) || ((DRIVE) == RCC_LSEDrive_High))
-/**
-  * @}
-  */
-  
-/** @defgroup RCC_AHB_Peripherals 
-  * @{
-  */
-
-#define RCC_AHBPeriph_GPIOA               RCC_AHBENR_GPIOAEN
-#define RCC_AHBPeriph_GPIOB               RCC_AHBENR_GPIOBEN
-#define RCC_AHBPeriph_GPIOC               RCC_AHBENR_GPIOCEN
-#define RCC_AHBPeriph_GPIOD               RCC_AHBENR_GPIODEN
-#define RCC_AHBPeriph_GPIOE               RCC_AHBENR_GPIOEEN /*!< Only applicable for STM32F072 devices */
-#define RCC_AHBPeriph_GPIOF               RCC_AHBENR_GPIOFEN
-#define RCC_AHBPeriph_TS                  RCC_AHBENR_TSEN
-#define RCC_AHBPeriph_CRC                 RCC_AHBENR_CRCEN
-#define RCC_AHBPeriph_FLITF               RCC_AHBENR_FLITFEN
-#define RCC_AHBPeriph_SRAM                RCC_AHBENR_SRAMEN
-#define RCC_AHBPeriph_DMA1                RCC_AHBENR_DMA1EN
-
-#define IS_RCC_AHB_PERIPH(PERIPH) ((((PERIPH) & 0xFE81FFAA) == 0x00) && ((PERIPH) != 0x00))
-#define IS_RCC_AHB_RST_PERIPH(PERIPH) ((((PERIPH) & 0xFE81FFFF) == 0x00) && ((PERIPH) != 0x00))
-
-/**
-  * @}
-  */
-
-/** @defgroup RCC_APB2_Peripherals 
-  * @{
-  */
-
-#define RCC_APB2Periph_SYSCFG            RCC_APB2ENR_SYSCFGEN
-#define RCC_APB2Periph_ADC1              RCC_APB2ENR_ADC1EN
-#define RCC_APB2Periph_TIM1              RCC_APB2ENR_TIM1EN
-#define RCC_APB2Periph_SPI1              RCC_APB2ENR_SPI1EN
-#define RCC_APB2Periph_USART1            RCC_APB2ENR_USART1EN
-#define RCC_APB2Periph_TIM15             RCC_APB2ENR_TIM15EN
-#define RCC_APB2Periph_TIM16             RCC_APB2ENR_TIM16EN
-#define RCC_APB2Periph_TIM17             RCC_APB2ENR_TIM17EN
-#define RCC_APB2Periph_DBGMCU            RCC_APB2ENR_DBGMCUEN
-
-#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFB8A5FE) == 0x00) && ((PERIPH) != 0x00))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RCC_APB1_Peripherals 
-  * @{
-  */
-
-#define RCC_APB1Periph_TIM2              RCC_APB1ENR_TIM2EN    /*!< Only applicable for STM32F051 and STM32F072 devices */
-#define RCC_APB1Periph_TIM3              RCC_APB1ENR_TIM3EN
-#define RCC_APB1Periph_TIM6              RCC_APB1ENR_TIM6EN
-#define RCC_APB1Periph_TIM7              RCC_APB1ENR_TIM7EN    /*!< Only applicable for STM32F072 devices */
-#define RCC_APB1Periph_TIM14             RCC_APB1ENR_TIM14EN
-#define RCC_APB1Periph_WWDG              RCC_APB1ENR_WWDGEN
-#define RCC_APB1Periph_SPI2              RCC_APB1ENR_SPI2EN
-#define RCC_APB1Periph_USART2            RCC_APB1ENR_USART2EN
-#define RCC_APB1Periph_USART3            RCC_APB1ENR_USART3EN  /*!< Only applicable for STM32F072 devices */
-#define RCC_APB1Periph_USART4            RCC_APB1ENR_USART4EN  /*!< Only applicable for STM32F072 devices */
-#define RCC_APB1Periph_I2C1              RCC_APB1ENR_I2C1EN
-#define RCC_APB1Periph_I2C2              RCC_APB1ENR_I2C2EN
-#define RCC_APB1Periph_USB               RCC_APB1ENR_USBEN     /*!< Only applicable for STM32F072 and STM32F042 devices */
-#define RCC_APB1Periph_CAN               RCC_APB1ENR_CANEN    /*!< Only applicable for STM32F072 and STM32F042 devices */
-#define RCC_APB1Periph_CRS               RCC_APB1ENR_CRSEN     /*!< Only applicable for STM32F072 and STM32F042 devices*/
-#define RCC_APB1Periph_PWR               RCC_APB1ENR_PWREN
-#define RCC_APB1Periph_DAC               RCC_APB1ENR_DACEN     /*!< Only applicable for STM32F051 and STM32F072 devices */
-#define RCC_APB1Periph_CEC               RCC_APB1ENR_CECEN     /*!< Only applicable for STM32F051, STM32F042 and STM32F072 devices */
-
-#define IS_RCC_APB1_PERIPH(PERIPH) ((((PERIPH) & 0x8511B6CC) == 0x00) && ((PERIPH) != 0x00))
-/**
-  * @}
-  */
-
-/** @defgroup RCC_MCO_Clock_Source
-  * @{
-  */
-
-#define RCC_MCOSource_NoClock            ((uint8_t)0x00)
-#define RCC_MCOSource_HSI14              ((uint8_t)0x01)
-#define RCC_MCOSource_LSI                ((uint8_t)0x02)
-#define RCC_MCOSource_LSE                ((uint8_t)0x03)
-#define RCC_MCOSource_SYSCLK             ((uint8_t)0x04)
-#define RCC_MCOSource_HSI                ((uint8_t)0x05)
-#define RCC_MCOSource_HSE                ((uint8_t)0x06)
-#define RCC_MCOSource_PLLCLK_Div2        ((uint8_t)0x07)
-#define RCC_MCOSource_HSI48              ((uint8_t)0x08)  /*!< Only applicable for STM32F072 devices */
-#define RCC_MCOSource_PLLCLK             ((uint8_t)0x87)
-
-#define IS_RCC_MCO_SOURCE(SOURCE) (((SOURCE) == RCC_MCOSource_NoClock) || ((SOURCE) == RCC_MCOSource_HSI14)      || \
-                                   ((SOURCE) == RCC_MCOSource_SYSCLK)  || ((SOURCE) == RCC_MCOSource_HSI)        || \
-                                   ((SOURCE) == RCC_MCOSource_HSE)     || ((SOURCE) == RCC_MCOSource_PLLCLK_Div2)|| \
-                                   ((SOURCE) == RCC_MCOSource_LSI)     || ((SOURCE) == RCC_MCOSource_HSI48)      || \
-                                   ((SOURCE) == RCC_MCOSource_PLLCLK)  || ((SOURCE) == RCC_MCOSource_LSE))
-/**
-  * @}
-  */ 
-
-/** @defgroup RCC_MCOPrescaler
-  * @{
-  */
-#if !defined (STM32F051)
-#define RCC_MCOPrescaler_1            RCC_CFGR_MCO_PRE_1
-#define RCC_MCOPrescaler_2            RCC_CFGR_MCO_PRE_2
-#define RCC_MCOPrescaler_4            RCC_CFGR_MCO_PRE_4
-#define RCC_MCOPrescaler_8            RCC_CFGR_MCO_PRE_8
-#define RCC_MCOPrescaler_16           RCC_CFGR_MCO_PRE_16
-#define RCC_MCOPrescaler_32           RCC_CFGR_MCO_PRE_32
-#define RCC_MCOPrescaler_64           RCC_CFGR_MCO_PRE_64
-#define RCC_MCOPrescaler_128          RCC_CFGR_MCO_PRE_128
-
-#define IS_RCC_MCO_PRESCALER(PRESCALER) (((PRESCALER) == RCC_MCOPrescaler_1)  || \
-                                         ((PRESCALER) == RCC_MCOPrescaler_2)  || \
-                                         ((PRESCALER) == RCC_MCOPrescaler_4)  || \
-                                         ((PRESCALER) == RCC_MCOPrescaler_8)  || \
-                                         ((PRESCALER) == RCC_MCOPrescaler_16) || \
-                                         ((PRESCALER) == RCC_MCOPrescaler_32) || \
-                                         ((PRESCALER) == RCC_MCOPrescaler_64) || \
-                                         ((PRESCALER) == RCC_MCOPrescaler_128))
-#endif /* STM32F051 */                                         
-/**
-  * @}
-  */ 
-
-/** @defgroup RCC_Flag 
-  * @{
-  */
-#define RCC_FLAG_HSIRDY                  ((uint8_t)0x01)
-#define RCC_FLAG_HSERDY                  ((uint8_t)0x11)
-#define RCC_FLAG_PLLRDY                  ((uint8_t)0x19)
-#define RCC_FLAG_LSERDY                  ((uint8_t)0x21)
-#define RCC_FLAG_LSIRDY                  ((uint8_t)0x41)
-#define RCC_FLAG_V18PWRRSTF              ((uint8_t)0x57)
-#define RCC_FLAG_OBLRST                  ((uint8_t)0x59)
-#define RCC_FLAG_PINRST                  ((uint8_t)0x5A)
-#define RCC_FLAG_PORRST                  ((uint8_t)0x5B)
-#define RCC_FLAG_SFTRST                  ((uint8_t)0x5C)
-#define RCC_FLAG_IWDGRST                 ((uint8_t)0x5D)
-#define RCC_FLAG_WWDGRST                 ((uint8_t)0x5E)
-#define RCC_FLAG_LPWRRST                 ((uint8_t)0x5F)
-#define RCC_FLAG_HSI14RDY                ((uint8_t)0x61)
-#define RCC_FLAG_HSI48RDY                ((uint8_t)0x71) /*!< Only applicable for STM32F072 devices */ 
-
-#define IS_RCC_FLAG(FLAG) (((FLAG) == RCC_FLAG_HSIRDY)  || ((FLAG) == RCC_FLAG_HSERDY)  || \
-                           ((FLAG) == RCC_FLAG_PLLRDY)  || ((FLAG) == RCC_FLAG_LSERDY)  || \
-                           ((FLAG) == RCC_FLAG_LSIRDY)  || ((FLAG) == RCC_FLAG_OBLRST)  || \
-                           ((FLAG) == RCC_FLAG_PINRST)  || ((FLAG) == RCC_FLAG_PORRST)  || \
-                           ((FLAG) == RCC_FLAG_SFTRST)  || ((FLAG) == RCC_FLAG_IWDGRST) || \
-                           ((FLAG) == RCC_FLAG_WWDGRST) || ((FLAG) == RCC_FLAG_LPWRRST) || \
-                           ((FLAG) == RCC_FLAG_HSI14RDY)|| ((FLAG) == RCC_FLAG_HSI48RDY)|| \
-                           ((FLAG) == RCC_FLAG_V18PWRRSTF))
-
-#define IS_RCC_HSI_CALIBRATION_VALUE(VALUE) ((VALUE) <= 0x1F)
-#define IS_RCC_HSI14_CALIBRATION_VALUE(VALUE) ((VALUE) <= 0x1F)
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/* Function used to set the RCC clock configuration to the default reset state */
-void RCC_DeInit(void);
-
-/* Internal/external clocks, PLL, CSS and MCO configuration functions *********/
-void RCC_HSEConfig(uint8_t RCC_HSE);
-ErrorStatus RCC_WaitForHSEStartUp(void);
-void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);
-void RCC_HSICmd(FunctionalState NewState);
-void RCC_AdjustHSI14CalibrationValue(uint8_t HSI14CalibrationValue);
-void RCC_HSI14Cmd(FunctionalState NewState);
-void RCC_HSI14ADCRequestCmd(FunctionalState NewState);
-void RCC_LSEConfig(uint32_t RCC_LSE);
-void RCC_LSEDriveConfig(uint32_t RCC_LSEDrive);
-void RCC_LSICmd(FunctionalState NewState);
-void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul);
-void RCC_PLLCmd(FunctionalState NewState);
-void RCC_HSI48Cmd(FunctionalState NewState); /*!< Only applicable for STM32F072 devices */
-uint32_t RCC_GetHSI48CalibrationValue(void); /*!< Only applicable for STM32F072 devices */
-void RCC_PREDIV1Config(uint32_t RCC_PREDIV1_Div);
-void RCC_ClockSecuritySystemCmd(FunctionalState NewState);
-#ifdef STM32F051
-void RCC_MCOConfig(uint8_t RCC_MCOSource);
-#else
-void RCC_MCOConfig(uint8_t RCC_MCOSource,uint32_t RCC_MCOPrescaler);
-#endif /* STM32F051 */
-
-/* System, AHB and APB busses clocks configuration functions ******************/
-void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);
-uint8_t RCC_GetSYSCLKSource(void);
-void RCC_HCLKConfig(uint32_t RCC_SYSCLK);
-void RCC_PCLKConfig(uint32_t RCC_HCLK);
-void RCC_ADCCLKConfig(uint32_t RCC_ADCCLK); /* This function is obsolete.
-                                               For proper ADC clock selection, refer to
-                                               ADC_ClockModeConfig() in the ADC driver */
-void RCC_CECCLKConfig(uint32_t RCC_CECCLK);
-void RCC_I2CCLKConfig(uint32_t RCC_I2CCLK);
-void RCC_USARTCLKConfig(uint32_t RCC_USARTCLK);
-void RCC_USBCLKConfig(uint32_t RCC_USBCLK); /*!< Only applicable for STM32F042 and STM32F072 devices */
-void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);
-
-/* Peripheral clocks configuration functions **********************************/
-void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);
-void RCC_RTCCLKCmd(FunctionalState NewState);
-void RCC_BackupResetCmd(FunctionalState NewState);
-
-void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
-void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
-void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
-
-void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
-void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
-void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
-
-/* Interrupts and flags management functions **********************************/
-void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);
-FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);
-void RCC_ClearFlag(void);
-ITStatus RCC_GetITStatus(uint8_t RCC_IT);
-void RCC_ClearITPendingBit(uint8_t RCC_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_RCC_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_rtc.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_rtc.h
deleted file mode 100644
index 598ed66..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_rtc.h	
+++ /dev/null
@@ -1,807 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_rtc.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the RTC firmware 
-  *          library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_RTC_H
-#define __STM32F0XX_RTC_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup RTC
-  * @{
-  */ 
-
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  RTC Init structures definition  
-  */ 
-typedef struct
-{
-  uint32_t RTC_HourFormat;   /*!< Specifies the RTC Hour Format.
-                             This parameter can be a value of @ref RTC_Hour_Formats */
-  
-  uint32_t RTC_AsynchPrediv; /*!< Specifies the RTC Asynchronous Predivider value.
-                             This parameter must be set to a value lower than 0x7F */
-  
-  uint32_t RTC_SynchPrediv;  /*!< Specifies the RTC Synchronous Predivider value.
-                             This parameter must be set to a value lower than 0x1FFF */
-}RTC_InitTypeDef;
-
-/** 
-  * @brief  RTC Time structure definition  
-  */
-typedef struct
-{
-  uint8_t RTC_Hours;    /*!< Specifies the RTC Time Hour.
-                        This parameter must be set to a value in the 0-12 range
-                        if the RTC_HourFormat_12 is selected or 0-23 range if
-                        the RTC_HourFormat_24 is selected. */
-
-  uint8_t RTC_Minutes;  /*!< Specifies the RTC Time Minutes.
-                        This parameter must be set to a value in the 0-59 range. */
-  
-  uint8_t RTC_Seconds;  /*!< Specifies the RTC Time Seconds.
-                        This parameter must be set to a value in the 0-59 range. */
-
-  uint8_t RTC_H12;      /*!< Specifies the RTC AM/PM Time.
-                        This parameter can be a value of @ref RTC_AM_PM_Definitions */
-}RTC_TimeTypeDef; 
-
-/** 
-  * @brief  RTC Date structure definition  
-  */
-typedef struct
-{
-  uint8_t RTC_WeekDay; /*!< Specifies the RTC Date WeekDay.
-                        This parameter can be a value of @ref RTC_WeekDay_Definitions */
-  
-  uint8_t RTC_Month;   /*!< Specifies the RTC Date Month.
-                        This parameter can be a value of @ref RTC_Month_Date_Definitions */
-
-  uint8_t RTC_Date;     /*!< Specifies the RTC Date.
-                        This parameter must be set to a value in the 1-31 range. */
-  
-  uint8_t RTC_Year;     /*!< Specifies the RTC Date Year.
-                        This parameter must be set to a value in the 0-99 range. */
-}RTC_DateTypeDef;
-
-/** 
-  * @brief  RTC Alarm structure definition  
-  */
-typedef struct
-{
-  RTC_TimeTypeDef RTC_AlarmTime;     /*!< Specifies the RTC Alarm Time members. */
-
-  uint32_t RTC_AlarmMask;            /*!< Specifies the RTC Alarm Masks.
-                                     This parameter can be a value of @ref RTC_AlarmMask_Definitions */
-
-  uint32_t RTC_AlarmDateWeekDaySel;  /*!< Specifies the RTC Alarm is on Date or WeekDay.
-                                     This parameter can be a value of @ref RTC_AlarmDateWeekDay_Definitions */
-  
-  uint8_t RTC_AlarmDateWeekDay;      /*!< Specifies the RTC Alarm Date/WeekDay.
-                                     This parameter must be set to a value in the 1-31 range 
-                                     if the Alarm Date is selected.
-                                     This parameter can be a value of @ref RTC_WeekDay_Definitions 
-                                     if the Alarm WeekDay is selected. */
-}RTC_AlarmTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup RTC_Exported_Constants
-  * @{
-  */ 
-
-
-/** @defgroup RTC_Hour_Formats 
-  * @{
-  */ 
-#define RTC_HourFormat_24              ((uint32_t)0x00000000)
-#define RTC_HourFormat_12              ((uint32_t)0x00000040)
-#define IS_RTC_HOUR_FORMAT(FORMAT)     (((FORMAT) == RTC_HourFormat_12) || \
-                                        ((FORMAT) == RTC_HourFormat_24))
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Asynchronous_Predivider 
-  * @{
-  */ 
-#define IS_RTC_ASYNCH_PREDIV(PREDIV)   ((PREDIV) <= 0x7F)
- 
-/**
-  * @}
-  */ 
-
-
-/** @defgroup RTC_Synchronous_Predivider 
-  * @{
-  */ 
-#define IS_RTC_SYNCH_PREDIV(PREDIV)    ((PREDIV) <= 0x7FFF)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Time_Definitions 
-  * @{
-  */ 
-#define IS_RTC_HOUR12(HOUR)            (((HOUR) > 0) && ((HOUR) <= 12))
-#define IS_RTC_HOUR24(HOUR)            ((HOUR) <= 23)
-#define IS_RTC_MINUTES(MINUTES)        ((MINUTES) <= 59)
-#define IS_RTC_SECONDS(SECONDS)        ((SECONDS) <= 59)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_AM_PM_Definitions 
-  * @{
-  */ 
-#define RTC_H12_AM                     ((uint8_t)0x00)
-#define RTC_H12_PM                     ((uint8_t)0x40)
-#define IS_RTC_H12(PM) (((PM) == RTC_H12_AM) || ((PM) == RTC_H12_PM))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Year_Date_Definitions 
-  * @{
-  */ 
-#define IS_RTC_YEAR(YEAR)              ((YEAR) <= 99)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Month_Date_Definitions 
-  * @{
-  */ 
-#define RTC_Month_January              ((uint8_t)0x01)
-#define RTC_Month_February             ((uint8_t)0x02)
-#define RTC_Month_March                ((uint8_t)0x03)
-#define RTC_Month_April                ((uint8_t)0x04)
-#define RTC_Month_May                  ((uint8_t)0x05)
-#define RTC_Month_June                 ((uint8_t)0x06)
-#define RTC_Month_July                 ((uint8_t)0x07)
-#define RTC_Month_August               ((uint8_t)0x08)
-#define RTC_Month_September            ((uint8_t)0x09)
-#define RTC_Month_October              ((uint8_t)0x10)
-#define RTC_Month_November             ((uint8_t)0x11)
-#define RTC_Month_December             ((uint8_t)0x12)
-#define IS_RTC_MONTH(MONTH)            (((MONTH) >= 1) && ((MONTH) <= 12))
-#define IS_RTC_DATE(DATE)              (((DATE) >= 1) && ((DATE) <= 31))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_WeekDay_Definitions 
-  * @{
-  */ 
-  
-#define	RTC_Weekday_Monday             ((uint8_t)0x01)
-#define	RTC_Weekday_Tuesday            ((uint8_t)0x02)
-#define	RTC_Weekday_Wednesday          ((uint8_t)0x03)
-#define	RTC_Weekday_Thursday           ((uint8_t)0x04)
-#define	RTC_Weekday_Friday             ((uint8_t)0x05)
-#define	RTC_Weekday_Saturday           ((uint8_t)0x6)
-#define	RTC_Weekday_Sunday             ((uint8_t)0x07)
-#define IS_RTC_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_Weekday_Monday) || \
-                                 ((WEEKDAY) == RTC_Weekday_Tuesday) || \
-                                 ((WEEKDAY) == RTC_Weekday_Wednesday) || \
-                                 ((WEEKDAY) == RTC_Weekday_Thursday) || \
-                                 ((WEEKDAY) == RTC_Weekday_Friday) || \
-                                 ((WEEKDAY) == RTC_Weekday_Saturday) || \
-                                 ((WEEKDAY) == RTC_Weekday_Sunday))
-/**
-  * @}
-  */ 
-
-
-/** @defgroup RTC_Alarm_Definitions 
-  * @{
-  */ 
-#define IS_RTC_ALARM_DATE_WEEKDAY_DATE(DATE) (((DATE) > 0) && ((DATE) <= 31))
-#define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_Weekday_Monday) || \
-                                                    ((WEEKDAY) == RTC_Weekday_Tuesday) || \
-                                                    ((WEEKDAY) == RTC_Weekday_Wednesday) || \
-                                                    ((WEEKDAY) == RTC_Weekday_Thursday) || \
-                                                    ((WEEKDAY) == RTC_Weekday_Friday) || \
-                                                    ((WEEKDAY) == RTC_Weekday_Saturday) || \
-                                                    ((WEEKDAY) == RTC_Weekday_Sunday))
-
-/**
-  * @}
-  */ 
-
-
-/** @defgroup RTC_AlarmDateWeekDay_Definitions 
-  * @{
-  */ 
-#define RTC_AlarmDateWeekDaySel_Date      ((uint32_t)0x00000000)  
-#define RTC_AlarmDateWeekDaySel_WeekDay   ((uint32_t)0x40000000)  
-
-#define IS_RTC_ALARM_DATE_WEEKDAY_SEL(SEL) (((SEL) == RTC_AlarmDateWeekDaySel_Date) || \
-                                            ((SEL) == RTC_AlarmDateWeekDaySel_WeekDay))
-
-/**
-  * @}
-  */ 
-
-
-/** @defgroup RTC_AlarmMask_Definitions 
-  * @{
-  */ 
-#define RTC_AlarmMask_None                ((uint32_t)0x00000000)
-#define RTC_AlarmMask_DateWeekDay         ((uint32_t)0x80000000)  
-#define RTC_AlarmMask_Hours               ((uint32_t)0x00800000)
-#define RTC_AlarmMask_Minutes             ((uint32_t)0x00008000)
-#define RTC_AlarmMask_Seconds             ((uint32_t)0x00000080)
-#define RTC_AlarmMask_All                 ((uint32_t)0x80808080)
-#define IS_RTC_ALARM_MASK(MASK)  (((MASK) & 0x7F7F7F7F) == (uint32_t)RESET)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Alarms_Definitions 
-  * @{
-  */ 
-#define RTC_Alarm_A                       ((uint32_t)0x00000100)
-#define IS_RTC_ALARM(ALARM)      ((ALARM) == RTC_Alarm_A)
-#define IS_RTC_CMD_ALARM(ALARM)  (((ALARM) & (RTC_Alarm_A)) != (uint32_t)RESET)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Alarm_Sub_Seconds_Masks Definitions.
-  * @{
-  */ 
-#define RTC_AlarmSubSecondMask_All         ((uint8_t)0x00) /*!< All Alarm SS fields are masked. 
-                                                                There is no comparison on sub seconds 
-                                                                for Alarm */
-#define RTC_AlarmSubSecondMask_SS14_1      ((uint8_t)0x01) /*!< SS[14:1] are don't care in Alarm 
-                                                                comparison. Only SS[0] is compared. */
-#define RTC_AlarmSubSecondMask_SS14_2      ((uint8_t)0x02) /*!< SS[14:2] are don't care in Alarm 
-                                                                comparison. Only SS[1:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_3      ((uint8_t)0x03) /*!< SS[14:3] are don't care in Alarm 
-                                                                comparison. Only SS[2:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_4      ((uint8_t)0x04) /*!< SS[14:4] are don't care in Alarm 
-                                                                comparison. Only SS[3:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_5      ((uint8_t)0x05) /*!< SS[14:5] are don't care in Alarm 
-                                                                comparison. Only SS[4:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_6      ((uint8_t)0x06) /*!< SS[14:6] are don't care in Alarm 
-                                                                comparison. Only SS[5:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_7      ((uint8_t)0x07) /*!< SS[14:7] are don't care in Alarm 
-                                                                comparison. Only SS[6:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_8      ((uint8_t)0x08) /*!< SS[14:8] are don't care in Alarm 
-                                                                comparison. Only SS[7:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_9      ((uint8_t)0x09) /*!< SS[14:9] are don't care in Alarm 
-                                                                comparison. Only SS[8:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_10     ((uint8_t)0x0A) /*!< SS[14:10] are don't care in Alarm 
-                                                                comparison. Only SS[9:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_11     ((uint8_t)0x0B) /*!< SS[14:11] are don't care in Alarm 
-                                                                comparison. Only SS[10:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_12     ((uint8_t)0x0C) /*!< SS[14:12] are don't care in Alarm 
-                                                                comparison.Only SS[11:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14_13     ((uint8_t)0x0D) /*!< SS[14:13] are don't care in Alarm 
-                                                                comparison. Only SS[12:0] are compared */
-#define RTC_AlarmSubSecondMask_SS14        ((uint8_t)0x0E) /*!< SS[14] is don't care in Alarm 
-                                                                comparison.Only SS[13:0] are compared */
-#define RTC_AlarmSubSecondMask_None        ((uint8_t)0x0F) /*!< SS[14:0] are compared and must match 
-                                                                to activate alarm. */
-#define IS_RTC_ALARM_SUB_SECOND_MASK(MASK)   (((MASK) == RTC_AlarmSubSecondMask_All) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_1) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_2) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_3) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_4) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_5) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_6) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_7) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_8) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_9) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_10) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_11) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_12) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14_13) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_SS14) || \
-                                              ((MASK) == RTC_AlarmSubSecondMask_None))
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Alarm_Sub_Seconds_Value
-  * @{
-  */ 
-  
-#define IS_RTC_ALARM_SUB_SECOND_VALUE(VALUE) ((VALUE) <= 0x00007FFF)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Wakeup_Timer_Definitions 
-  * @brief    These parameters are only available for STM32F072 devices
-  * @{
-  */
-#define RTC_WakeUpClock_RTCCLK_Div16        ((uint32_t)0x00000000)
-#define RTC_WakeUpClock_RTCCLK_Div8         ((uint32_t)0x00000001)
-#define RTC_WakeUpClock_RTCCLK_Div4         ((uint32_t)0x00000002)
-#define RTC_WakeUpClock_RTCCLK_Div2         ((uint32_t)0x00000003)
-#define RTC_WakeUpClock_CK_SPRE_16bits      ((uint32_t)0x00000004)
-#define RTC_WakeUpClock_CK_SPRE_17bits      ((uint32_t)0x00000006)
-#define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WakeUpClock_RTCCLK_Div16) || \
-                                    ((CLOCK) == RTC_WakeUpClock_RTCCLK_Div8) || \
-                                    ((CLOCK) == RTC_WakeUpClock_RTCCLK_Div4) || \
-                                    ((CLOCK) == RTC_WakeUpClock_RTCCLK_Div2) || \
-                                    ((CLOCK) == RTC_WakeUpClock_CK_SPRE_16bits) || \
-                                    ((CLOCK) == RTC_WakeUpClock_CK_SPRE_17bits))
-#define IS_RTC_WAKEUP_COUNTER(COUNTER)  ((COUNTER) <= 0xFFFF)
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Time_Stamp_Edges_definitions 
-  * @{
-  */ 
-#define RTC_TimeStampEdge_Rising          ((uint32_t)0x00000000)
-#define RTC_TimeStampEdge_Falling         ((uint32_t)0x00000008)
-#define IS_RTC_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TimeStampEdge_Rising) || \
-                                     ((EDGE) == RTC_TimeStampEdge_Falling))
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Output_selection_Definitions 
-  * @{
-  */ 
-#define RTC_Output_Disable             ((uint32_t)0x00000000)
-#define RTC_Output_AlarmA              ((uint32_t)0x00200000)
-#define RTC_Output_WakeUp              ((uint32_t)0x00600000) /*!< available only for STM32F072 devices */
- 
-#define IS_RTC_OUTPUT(OUTPUT) (((OUTPUT) == RTC_Output_Disable) || \
-                               ((OUTPUT) == RTC_Output_AlarmA)  || \
-                               ((OUTPUT) == RTC_Output_WakeUp))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Output_Polarity_Definitions 
-  * @{
-  */ 
-#define RTC_OutputPolarity_High           ((uint32_t)0x00000000)
-#define RTC_OutputPolarity_Low            ((uint32_t)0x00100000)
-#define IS_RTC_OUTPUT_POL(POL) (((POL) == RTC_OutputPolarity_High) || \
-                                ((POL) == RTC_OutputPolarity_Low))
-/**
-  * @}
-  */ 
-
-
-/** @defgroup RTC_Calib_Output_selection_Definitions 
-  * @{
-  */ 
-#define RTC_CalibOutput_512Hz            ((uint32_t)0x00000000) 
-#define RTC_CalibOutput_1Hz              ((uint32_t)0x00080000)
-#define IS_RTC_CALIB_OUTPUT(OUTPUT)  (((OUTPUT) == RTC_CalibOutput_512Hz) || \
-                                      ((OUTPUT) == RTC_CalibOutput_1Hz))
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Smooth_calib_period_Definitions 
-  * @{
-  */ 
-#define RTC_SmoothCalibPeriod_32sec   ((uint32_t)0x00000000) /*!<  if RTCCLK = 32768 Hz, Smooth calibation
-                                                             period is 32s,  else 2exp20 RTCCLK seconds */
-#define RTC_SmoothCalibPeriod_16sec   ((uint32_t)0x00002000) /*!<  if RTCCLK = 32768 Hz, Smooth calibation 
-                                                             period is 16s, else 2exp19 RTCCLK seconds */
-#define RTC_SmoothCalibPeriod_8sec    ((uint32_t)0x00004000) /*!<  if RTCCLK = 32768 Hz, Smooth calibation 
-                                                             period is 8s, else 2exp18 RTCCLK seconds */
-#define  IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SmoothCalibPeriod_32sec) || \
-                                             ((PERIOD) == RTC_SmoothCalibPeriod_16sec) || \
-                                             ((PERIOD) == RTC_SmoothCalibPeriod_8sec))
-                                          
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Smooth_calib_Plus_pulses_Definitions 
-  * @{
-  */ 
-#define RTC_SmoothCalibPlusPulses_Set    ((uint32_t)0x00008000) /*!<  The number of RTCCLK pulses added  
-                                                                during a X -second window = Y - CALM[8:0]. 
-                                                                 with Y = 512, 256, 128 when X = 32, 16, 8 */
-#define RTC_SmoothCalibPlusPulses_Reset  ((uint32_t)0x00000000) /*!<  The number of RTCCLK pulses subbstited
-                                                                 during a 32-second window =   CALM[8:0]. */
-#define  IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SmoothCalibPlusPulses_Set) || \
-                                         ((PLUS) == RTC_SmoothCalibPlusPulses_Reset))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Smooth_calib_Minus_pulses_Definitions 
-  * @{
-  */ 
-#define  IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= 0x000001FF)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_DayLightSaving_Definitions 
-  * @{
-  */ 
-#define RTC_DayLightSaving_SUB1H   ((uint32_t)0x00020000)
-#define RTC_DayLightSaving_ADD1H   ((uint32_t)0x00010000)
-#define IS_RTC_DAYLIGHT_SAVING(SAVING) (((SAVING) == RTC_DayLightSaving_SUB1H) || \
-                                        ((SAVING) == RTC_DayLightSaving_ADD1H))
-
-#define RTC_StoreOperation_Reset        ((uint32_t)0x00000000)
-#define RTC_StoreOperation_Set          ((uint32_t)0x00040000)
-#define IS_RTC_STORE_OPERATION(OPERATION) (((OPERATION) == RTC_StoreOperation_Reset) || \
-                                           ((OPERATION) == RTC_StoreOperation_Set))
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Tamper_Trigger_Definitions 
-  * @{
-  */ 
-#define RTC_TamperTrigger_RisingEdge            ((uint32_t)0x00000000)
-#define RTC_TamperTrigger_FallingEdge           ((uint32_t)0x00000001)
-#define RTC_TamperTrigger_LowLevel              ((uint32_t)0x00000000)
-#define RTC_TamperTrigger_HighLevel             ((uint32_t)0x00000001)
-#define IS_RTC_TAMPER_TRIGGER(TRIGGER) (((TRIGGER) == RTC_TamperTrigger_RisingEdge) || \
-                                        ((TRIGGER) == RTC_TamperTrigger_FallingEdge) || \
-                                        ((TRIGGER) == RTC_TamperTrigger_LowLevel) || \
-                                        ((TRIGGER) == RTC_TamperTrigger_HighLevel)) 
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Tamper_Filter_Definitions 
-  * @{
-  */ 
-#define RTC_TamperFilter_Disable   ((uint32_t)0x00000000) /*!< Tamper filter is disabled */
-
-#define RTC_TamperFilter_2Sample   ((uint32_t)0x00000800) /*!< Tamper is activated after 2 
-                                                          consecutive samples at the active level */
-#define RTC_TamperFilter_4Sample   ((uint32_t)0x00001000) /*!< Tamper is activated after 4 
-                                                          consecutive samples at the active level */
-#define RTC_TamperFilter_8Sample   ((uint32_t)0x00001800) /*!< Tamper is activated after 8 
-                                                          consecutive samples at the active leve. */
-#define IS_RTC_TAMPER_FILTER(FILTER) (((FILTER) == RTC_TamperFilter_Disable) || \
-                                      ((FILTER) == RTC_TamperFilter_2Sample) || \
-                                      ((FILTER) == RTC_TamperFilter_4Sample) || \
-                                      ((FILTER) == RTC_TamperFilter_8Sample))
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Tamper_Sampling_Frequencies_Definitions 
-  * @{
-  */ 
-#define RTC_TamperSamplingFreq_RTCCLK_Div32768 ((uint32_t)0x00000000) /*!< Each of the tamper inputs are sampled
-                                                                      with a frequency =  RTCCLK / 32768 */
-#define RTC_TamperSamplingFreq_RTCCLK_Div16384 ((uint32_t)0x00000100) /*!< Each of the tamper inputs are sampled
-                                                                      with a frequency =  RTCCLK / 16384 */
-#define RTC_TamperSamplingFreq_RTCCLK_Div8192  ((uint32_t)0x00000200) /*!< Each of the tamper inputs are sampled
-                                                                      with a frequency =  RTCCLK / 8192  */
-#define RTC_TamperSamplingFreq_RTCCLK_Div4096  ((uint32_t)0x00000300) /*!< Each of the tamper inputs are sampled
-                                                                      with a frequency =  RTCCLK / 4096  */
-#define RTC_TamperSamplingFreq_RTCCLK_Div2048  ((uint32_t)0x00000400) /*!< Each of the tamper inputs are sampled
-                                                                      with a frequency =  RTCCLK / 2048  */
-#define RTC_TamperSamplingFreq_RTCCLK_Div1024  ((uint32_t)0x00000500) /*!< Each of the tamper inputs are sampled
-                                                                      with a frequency =  RTCCLK / 1024  */
-#define RTC_TamperSamplingFreq_RTCCLK_Div512   ((uint32_t)0x00000600) /*!< Each of the tamper inputs are sampled
-                                                                      with a frequency =  RTCCLK / 512   */
-#define RTC_TamperSamplingFreq_RTCCLK_Div256   ((uint32_t)0x00000700) /*!< Each of the tamper inputs are sampled
-                                                                      with a frequency =  RTCCLK / 256   */
-#define IS_RTC_TAMPER_SAMPLING_FREQ(FREQ) (((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div32768) || \
-                                           ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div16384) || \
-                                           ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div8192) || \
-                                           ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div4096) || \
-                                           ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div2048) || \
-                                           ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div1024) || \
-                                           ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div512) || \
-                                           ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div256))
-                                           
-/**
-  * @}
-  */
-
-  /** @defgroup RTC_Tamper_Pin_Precharge_Duration_Definitions 
-  * @{
-  */ 
-#define RTC_TamperPrechargeDuration_1RTCCLK ((uint32_t)0x00000000)  /*!< Tamper pins are pre-charged before 
-                                                                         sampling during 1 RTCCLK cycle */
-#define RTC_TamperPrechargeDuration_2RTCCLK ((uint32_t)0x00002000)  /*!< Tamper pins are pre-charged before 
-                                                                         sampling during 2 RTCCLK cycles */
-#define RTC_TamperPrechargeDuration_4RTCCLK ((uint32_t)0x00004000)  /*!< Tamper pins are pre-charged before 
-                                                                         sampling during 4 RTCCLK cycles */
-#define RTC_TamperPrechargeDuration_8RTCCLK ((uint32_t)0x00006000)  /*!< Tamper pins are pre-charged before 
-                                                                         sampling during 8 RTCCLK cycles */
-
-#define IS_RTC_TAMPER_PRECHARGE_DURATION(DURATION) (((DURATION) == RTC_TamperPrechargeDuration_1RTCCLK) || \
-                                                    ((DURATION) == RTC_TamperPrechargeDuration_2RTCCLK) || \
-                                                    ((DURATION) == RTC_TamperPrechargeDuration_4RTCCLK) || \
-                                                    ((DURATION) == RTC_TamperPrechargeDuration_8RTCCLK))
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Tamper_Pins_Definitions 
-  * @{
-  */ 
-#define RTC_Tamper_1            RTC_TAFCR_TAMP1E /*!< Tamper detection enable for 
-                                                 input tamper 1 */
-#define RTC_Tamper_2            RTC_TAFCR_TAMP2E /*!< Tamper detection enable for 
-                                                 input tamper 2 */
-#define RTC_Tamper_3            RTC_TAFCR_TAMP3E /*!< Tamper detection enable for 
-                                                 input tamper 3, available only 
-                                                 for STM32F072 devices */
-#define IS_RTC_TAMPER(TAMPER) ((((TAMPER) & (uint32_t)0xFFFFFFD6) == 0x00) && ((TAMPER) != (uint32_t)RESET))
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Output_Type_ALARM_OUT 
-  * @{
-  */ 
-#define RTC_OutputType_OpenDrain           ((uint32_t)0x00000000)
-#define RTC_OutputType_PushPull            ((uint32_t)0x00040000)
-#define IS_RTC_OUTPUT_TYPE(TYPE) (((TYPE) == RTC_OutputType_OpenDrain) || \
-                                  ((TYPE) == RTC_OutputType_PushPull))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Add_1_Second_Parameter_Definitions
-  * @{
-  */ 
-#define RTC_ShiftAdd1S_Reset      ((uint32_t)0x00000000)
-#define RTC_ShiftAdd1S_Set        ((uint32_t)0x80000000)
-#define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_ShiftAdd1S_Reset) || \
-                                 ((SEL) == RTC_ShiftAdd1S_Set))
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Substract_Fraction_Of_Second_Value
-  * @{
-  */ 
-#define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= 0x00007FFF)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Backup_Registers_Definitions 
-  * @{
-  */
-
-#define RTC_BKP_DR0                       ((uint32_t)0x00000000)
-#define RTC_BKP_DR1                       ((uint32_t)0x00000001)
-#define RTC_BKP_DR2                       ((uint32_t)0x00000002)
-#define RTC_BKP_DR3                       ((uint32_t)0x00000003)
-#define RTC_BKP_DR4                       ((uint32_t)0x00000004)
-#define IS_RTC_BKP(BKP)                   (((BKP) == RTC_BKP_DR0) || \
-                                           ((BKP) == RTC_BKP_DR1) || \
-                                           ((BKP) == RTC_BKP_DR2) || \
-                                           ((BKP) == RTC_BKP_DR3) || \
-                                           ((BKP) == RTC_BKP_DR4)) 
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Input_parameter_format_definitions 
-  * @{
-  */ 
-#define RTC_Format_BIN                    ((uint32_t)0x000000000)
-#define RTC_Format_BCD                    ((uint32_t)0x000000001)
-#define IS_RTC_FORMAT(FORMAT) (((FORMAT) == RTC_Format_BIN) || ((FORMAT) == RTC_Format_BCD))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Flags_Definitions 
-  * @{
-  */ 
-#define RTC_FLAG_RECALPF                  RTC_ISR_RECALPF
-#define RTC_FLAG_TAMP3F                   RTC_ISR_TAMP3F /*!< Only available for STM32F072 devices */
-#define RTC_FLAG_TAMP2F                   RTC_ISR_TAMP2F
-#define RTC_FLAG_TAMP1F                   RTC_ISR_TAMP1F
-#define RTC_FLAG_TSOVF                    RTC_ISR_TSOVF
-#define RTC_FLAG_TSF                      RTC_ISR_TSF
-#define RTC_FLAG_WUTF                     RTC_ISR_WUTF /*!< Only available for STM32F072 devices */
-#define RTC_FLAG_ALRAF                    RTC_ISR_ALRAF
-#define RTC_FLAG_INITF                    RTC_ISR_INITF
-#define RTC_FLAG_RSF                      RTC_ISR_RSF
-#define RTC_FLAG_INITS                    RTC_ISR_INITS
-#define RTC_FLAG_SHPF                     RTC_ISR_SHPF
-#define RTC_FLAG_WUTWF                    RTC_ISR_WUTWF /*!< Only available for STM32F072 devices */
-#define RTC_FLAG_ALRAWF                   RTC_ISR_ALRAWF 
-
-#define IS_RTC_GET_FLAG(FLAG) (((FLAG) == RTC_FLAG_TSOVF)  || ((FLAG) == RTC_FLAG_TSF)     || \
-                               ((FLAG) == RTC_FLAG_WUTF)   || ((FLAG) == RTC_FLAG_ALRAWF)  || \
-                               ((FLAG) == RTC_FLAG_ALRAF)  || ((FLAG) == RTC_FLAG_INITF)   || \
-                               ((FLAG) == RTC_FLAG_RSF)    || ((FLAG) == RTC_FLAG_WUTWF)   || \
-                               ((FLAG) == RTC_FLAG_TAMP1F) || ((FLAG) == RTC_FLAG_TAMP2F)  || \
-                               ((FLAG) == RTC_FLAG_TAMP3F) || ((FLAG) == RTC_FLAG_RECALPF) || \
-                               ((FLAG) == RTC_FLAG_SHPF))
-#define IS_RTC_CLEAR_FLAG(FLAG) (((FLAG) != (uint32_t)RESET) && (((FLAG) & 0xFFFF02DF) == (uint32_t)RESET))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup RTC_Interrupts_Definitions 
-  * @{
-  */ 
-#define RTC_IT_TS                         ((uint32_t)0x00008000)
-#define RTC_IT_WUT                        ((uint32_t)0x00004000) /* Available only for STM32F072 devices */
-#define RTC_IT_ALRA                       ((uint32_t)0x00001000)
-#define RTC_IT_TAMP                       ((uint32_t)0x00000004) /* Used only to Enable the Tamper Interrupt */
-#define RTC_IT_TAMP1                      ((uint32_t)0x00020000)
-#define RTC_IT_TAMP2                      ((uint32_t)0x00040000)
-#define RTC_IT_TAMP3                      ((uint32_t)0x00080000) /* Available only for STM32F072 devices */
-
-#define IS_RTC_CONFIG_IT(IT) (((IT) != (uint32_t)RESET) && (((IT) & 0xFFFF2FFB) == (uint32_t)RESET))
-#define IS_RTC_GET_IT(IT) (((IT) == RTC_IT_TS)    || ((IT) == RTC_IT_ALRA)  || \
-                           ((IT) == RTC_IT_TAMP1) || ((IT) == RTC_IT_WUT)   || \
-                           ((IT) == RTC_IT_TAMP2) || ((IT) == RTC_IT_TAMP3))                           
-
-#define IS_RTC_CLEAR_IT(IT) (((IT) != (uint32_t)RESET) && (((IT) & 0xFFF12FFF) == (uint32_t)RESET))
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-/*  Function used to set the RTC configuration to the default reset state *****/
-ErrorStatus RTC_DeInit(void);
-
-
-/* Initialization and Configuration functions *********************************/
-ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct);
-void RTC_StructInit(RTC_InitTypeDef* RTC_InitStruct);
-void RTC_WriteProtectionCmd(FunctionalState NewState);
-ErrorStatus RTC_EnterInitMode(void);
-void RTC_ExitInitMode(void);
-ErrorStatus RTC_WaitForSynchro(void);
-ErrorStatus RTC_RefClockCmd(FunctionalState NewState);
-void RTC_BypassShadowCmd(FunctionalState NewState);
-
-/* Time and Date configuration functions **************************************/
-ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct);
-void RTC_TimeStructInit(RTC_TimeTypeDef* RTC_TimeStruct);
-void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct);
-uint32_t RTC_GetSubSecond(void);
-ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct);
-void RTC_DateStructInit(RTC_DateTypeDef* RTC_DateStruct);
-void RTC_GetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct);
-
-/* Alarms (Alarm A) configuration functions  **********************************/
-void RTC_SetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, RTC_AlarmTypeDef* RTC_AlarmStruct);
-void RTC_AlarmStructInit(RTC_AlarmTypeDef* RTC_AlarmStruct);
-void RTC_GetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, RTC_AlarmTypeDef* RTC_AlarmStruct);
-ErrorStatus RTC_AlarmCmd(uint32_t RTC_Alarm, FunctionalState NewState);
-void RTC_AlarmSubSecondConfig(uint32_t RTC_Alarm, uint32_t RTC_AlarmSubSecondValue, uint8_t RTC_AlarmSubSecondMask);
-uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm);
-
-/* WakeUp Timer configuration functions ***************************************/ 
-void RTC_WakeUpClockConfig(uint32_t RTC_WakeUpClock); /*!< available only for STM32F072 devices */ 
-void RTC_SetWakeUpCounter(uint32_t RTC_WakeUpCounter); /*!< available only for STM32F072 devices */ 
-uint32_t RTC_GetWakeUpCounter(void); /*!< available only for STM32F072 devices */ 
-ErrorStatus RTC_WakeUpCmd(FunctionalState NewState); /*!< available only for STM32F072 devices */ 
-
-/* Daylight Saving configuration functions ************************************/
-void RTC_DayLightSavingConfig(uint32_t RTC_DayLightSaving, uint32_t RTC_StoreOperation);
-uint32_t RTC_GetStoreOperation(void);
-
-/* Output pin Configuration function ******************************************/
-void RTC_OutputConfig(uint32_t RTC_Output, uint32_t RTC_OutputPolarity);
-
-/* Digital Calibration configuration functions ********************************/
-void RTC_CalibOutputCmd(FunctionalState NewState);
-void RTC_CalibOutputConfig(uint32_t RTC_CalibOutput);
-ErrorStatus RTC_SmoothCalibConfig(uint32_t RTC_SmoothCalibPeriod, 
-                                  uint32_t RTC_SmoothCalibPlusPulses,
-                                  uint32_t RTC_SmouthCalibMinusPulsesValue);
-
-/* TimeStamp configuration functions ******************************************/
-void RTC_TimeStampCmd(uint32_t RTC_TimeStampEdge, FunctionalState NewState);
-void RTC_GetTimeStamp(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_StampTimeStruct, RTC_DateTypeDef* RTC_StampDateStruct);
-uint32_t RTC_GetTimeStampSubSecond(void);
-
-/* Tampers configuration functions ********************************************/
-void RTC_TamperTriggerConfig(uint32_t RTC_Tamper, uint32_t RTC_TamperTrigger);
-void RTC_TamperCmd(uint32_t RTC_Tamper, FunctionalState NewState);
-void RTC_TamperFilterConfig(uint32_t RTC_TamperFilter);
-void RTC_TamperSamplingFreqConfig(uint32_t RTC_TamperSamplingFreq);
-void RTC_TamperPinsPrechargeDuration(uint32_t RTC_TamperPrechargeDuration);
-void RTC_TimeStampOnTamperDetectionCmd(FunctionalState NewState);
-void RTC_TamperPullUpCmd(FunctionalState NewState);
-
-/* Backup Data Registers configuration functions ******************************/
-void RTC_WriteBackupRegister(uint32_t RTC_BKP_DR, uint32_t Data);
-uint32_t RTC_ReadBackupRegister(uint32_t RTC_BKP_DR);
-
-/* Output Type Config configuration functions *********************************/
-void RTC_OutputTypeConfig(uint32_t RTC_OutputType);
- 
-/* RTC_Shift_control_synchonisation_functions *********************************/
-ErrorStatus RTC_SynchroShiftConfig(uint32_t RTC_ShiftAdd1S, uint32_t RTC_ShiftSubFS);
-
-/* Interrupts and flags management functions **********************************/
-void RTC_ITConfig(uint32_t RTC_IT, FunctionalState NewState);
-FlagStatus RTC_GetFlagStatus(uint32_t RTC_FLAG);
-void RTC_ClearFlag(uint32_t RTC_FLAG);
-ITStatus RTC_GetITStatus(uint32_t RTC_IT);
-void RTC_ClearITPendingBit(uint32_t RTC_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_RTC_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_spi.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_spi.h
deleted file mode 100644
index 7b95f83..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_spi.h	
+++ /dev/null
@@ -1,588 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_spi.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the SPI 
-  *          firmware library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_SPI_H
-#define __STM32F0XX_SPI_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup SPI
-  * @{
-  */
-
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  SPI Init structure definition  
-  */
-
-typedef struct
-{
-  uint16_t SPI_Direction;           /*!< Specifies the SPI unidirectional or bidirectional data mode.
-                                         This parameter can be a value of @ref SPI_data_direction */
-
-  uint16_t SPI_Mode;                /*!< Specifies the SPI mode (Master/Slave).
-                                         This parameter can be a value of @ref SPI_mode */
-  
-  uint16_t SPI_DataSize;            /*!< Specifies the SPI data size.
-                                         This parameter can be a value of @ref SPI_data_size */
-
-  uint16_t SPI_CPOL;                /*!< Specifies the serial clock steady state.
-                                         This parameter can be a value of @ref SPI_Clock_Polarity */
-
-  uint16_t SPI_CPHA;                /*!< Specifies the clock active edge for the bit capture.
-                                         This parameter can be a value of @ref SPI_Clock_Phase */
-
-  uint16_t SPI_NSS;                 /*!< Specifies whether the NSS signal is managed by
-                                         hardware (NSS pin) or by software using the SSI bit.
-                                         This parameter can be a value of @ref SPI_Slave_Select_management */
- 
-  uint16_t SPI_BaudRatePrescaler;   /*!< Specifies the Baud Rate prescaler value which will be
-                                         used to configure the transmit and receive SCK clock.
-                                         This parameter can be a value of @ref SPI_BaudRate_Prescaler
-                                         @note The communication clock is derived from the master
-                                               clock. The slave clock does not need to be set. */
-
-  uint16_t SPI_FirstBit;            /*!< Specifies whether data transfers start from MSB or LSB bit.
-                                         This parameter can be a value of @ref SPI_MSB_LSB_transmission */
-
-  uint16_t SPI_CRCPolynomial;       /*!< Specifies the polynomial used for the CRC calculation. */
-}SPI_InitTypeDef;
-
-
-/** 
-  * @brief  I2S Init structure definition
-  * @note   These parameters are not available for STM32F030 devices.    
-  */
-
-typedef struct
-{
-  uint16_t I2S_Mode;         /*!< Specifies the I2S operating mode.
-                                  This parameter can be a value of @ref SPI_I2S_Mode */
-
-  uint16_t I2S_Standard;     /*!< Specifies the standard used for the I2S communication.
-                                  This parameter can be a value of @ref SPI_I2S_Standard */
-
-  uint16_t I2S_DataFormat;   /*!< Specifies the data format for the I2S communication.
-                                  This parameter can be a value of @ref SPI_I2S_Data_Format */
-
-  uint16_t I2S_MCLKOutput;   /*!< Specifies whether the I2S MCLK output is enabled or not.
-                                  This parameter can be a value of @ref SPI_I2S_MCLK_Output */
-
-  uint32_t I2S_AudioFreq;    /*!< Specifies the frequency selected for the I2S communication.
-                                  This parameter can be a value of @ref SPI_I2S_Audio_Frequency */
-
-  uint16_t I2S_CPOL;         /*!< Specifies the idle state of the I2S clock.
-                                  This parameter can be a value of @ref SPI_I2S_Clock_Polarity */
-}I2S_InitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup SPI_Exported_Constants
-  * @{
-  */
-
-#define IS_SPI_ALL_PERIPH(PERIPH) (((PERIPH) == SPI1) || \
-                                   ((PERIPH) == SPI2))
-                                   
-#define IS_SPI_1_PERIPH(PERIPH) (((PERIPH) == SPI1))
-
-/** @defgroup SPI_data_direction 
-  * @{
-  */
-  
-#define SPI_Direction_2Lines_FullDuplex ((uint16_t)0x0000)
-#define SPI_Direction_2Lines_RxOnly     ((uint16_t)0x0400)
-#define SPI_Direction_1Line_Rx          ((uint16_t)0x8000)
-#define SPI_Direction_1Line_Tx          ((uint16_t)0xC000)
-#define IS_SPI_DIRECTION_MODE(MODE) (((MODE) == SPI_Direction_2Lines_FullDuplex) || \
-                                     ((MODE) == SPI_Direction_2Lines_RxOnly) || \
-                                     ((MODE) == SPI_Direction_1Line_Rx) || \
-                                     ((MODE) == SPI_Direction_1Line_Tx))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_mode 
-  * @{
-  */
-
-#define SPI_Mode_Master                 ((uint16_t)0x0104)
-#define SPI_Mode_Slave                  ((uint16_t)0x0000)
-#define IS_SPI_MODE(MODE) (((MODE) == SPI_Mode_Master) || \
-                           ((MODE) == SPI_Mode_Slave))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_data_size
-  * @{
-  */
-
-#define SPI_DataSize_4b                 ((uint16_t)0x0300)
-#define SPI_DataSize_5b                 ((uint16_t)0x0400)
-#define SPI_DataSize_6b                 ((uint16_t)0x0500)
-#define SPI_DataSize_7b                 ((uint16_t)0x0600)
-#define SPI_DataSize_8b                 ((uint16_t)0x0700)
-#define SPI_DataSize_9b                 ((uint16_t)0x0800)
-#define SPI_DataSize_10b                ((uint16_t)0x0900)
-#define SPI_DataSize_11b                ((uint16_t)0x0A00)
-#define SPI_DataSize_12b                ((uint16_t)0x0B00)
-#define SPI_DataSize_13b                ((uint16_t)0x0C00)
-#define SPI_DataSize_14b                ((uint16_t)0x0D00)
-#define SPI_DataSize_15b                ((uint16_t)0x0E00)
-#define SPI_DataSize_16b                ((uint16_t)0x0F00)
-#define IS_SPI_DATA_SIZE(SIZE) (((SIZE) == SPI_DataSize_4b) || \
-                                 ((SIZE) == SPI_DataSize_5b) || \
-                                 ((SIZE) == SPI_DataSize_6b) || \
-                                 ((SIZE) == SPI_DataSize_7b) || \
-                                 ((SIZE) == SPI_DataSize_8b) || \
-                                 ((SIZE) == SPI_DataSize_9b) || \
-                                 ((SIZE) == SPI_DataSize_10b) || \
-                                 ((SIZE) == SPI_DataSize_11b) || \
-                                 ((SIZE) == SPI_DataSize_12b) || \
-                                 ((SIZE) == SPI_DataSize_13b) || \
-                                 ((SIZE) == SPI_DataSize_14b) || \
-                                 ((SIZE) == SPI_DataSize_15b) || \
-                                 ((SIZE) == SPI_DataSize_16b))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_CRC_length
-  * @{
-  */
-
-#define SPI_CRCLength_8b                ((uint16_t)0x0000)
-#define SPI_CRCLength_16b               SPI_CR1_CRCL
-#define IS_SPI_CRC_LENGTH(LENGTH) (((LENGTH) == SPI_CRCLength_8b) || \
-                                   ((LENGTH) == SPI_CRCLength_16b))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_Clock_Polarity 
-  * @{
-  */
-
-#define SPI_CPOL_Low                    ((uint16_t)0x0000)
-#define SPI_CPOL_High                   SPI_CR1_CPOL
-#define IS_SPI_CPOL(CPOL) (((CPOL) == SPI_CPOL_Low) || \
-                           ((CPOL) == SPI_CPOL_High))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_Clock_Phase 
-  * @{
-  */
-
-#define SPI_CPHA_1Edge                  ((uint16_t)0x0000)
-#define SPI_CPHA_2Edge                  SPI_CR1_CPHA
-#define IS_SPI_CPHA(CPHA) (((CPHA) == SPI_CPHA_1Edge) || \
-                           ((CPHA) == SPI_CPHA_2Edge))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_Slave_Select_management 
-  * @{
-  */
-
-#define SPI_NSS_Soft                    SPI_CR1_SSM
-#define SPI_NSS_Hard                    ((uint16_t)0x0000)
-#define IS_SPI_NSS(NSS) (((NSS) == SPI_NSS_Soft) || \
-                         ((NSS) == SPI_NSS_Hard))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_BaudRate_Prescaler 
-  * @{
-  */
-
-#define SPI_BaudRatePrescaler_2         ((uint16_t)0x0000)
-#define SPI_BaudRatePrescaler_4         ((uint16_t)0x0008)
-#define SPI_BaudRatePrescaler_8         ((uint16_t)0x0010)
-#define SPI_BaudRatePrescaler_16        ((uint16_t)0x0018)
-#define SPI_BaudRatePrescaler_32        ((uint16_t)0x0020)
-#define SPI_BaudRatePrescaler_64        ((uint16_t)0x0028)
-#define SPI_BaudRatePrescaler_128       ((uint16_t)0x0030)
-#define SPI_BaudRatePrescaler_256       ((uint16_t)0x0038)
-#define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) (((PRESCALER) == SPI_BaudRatePrescaler_2) || \
-                                              ((PRESCALER) == SPI_BaudRatePrescaler_4) || \
-                                              ((PRESCALER) == SPI_BaudRatePrescaler_8) || \
-                                              ((PRESCALER) == SPI_BaudRatePrescaler_16) || \
-                                              ((PRESCALER) == SPI_BaudRatePrescaler_32) || \
-                                              ((PRESCALER) == SPI_BaudRatePrescaler_64) || \
-                                              ((PRESCALER) == SPI_BaudRatePrescaler_128) || \
-                                              ((PRESCALER) == SPI_BaudRatePrescaler_256))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_MSB_LSB_transmission 
-  * @{
-  */
-
-#define SPI_FirstBit_MSB                ((uint16_t)0x0000)
-#define SPI_FirstBit_LSB                SPI_CR1_LSBFIRST
-#define IS_SPI_FIRST_BIT(BIT) (((BIT) == SPI_FirstBit_MSB) || \
-                               ((BIT) == SPI_FirstBit_LSB))
-/**
-  * @}
-  */
-  
-/** @defgroup SPI_I2S_Mode 
-  * @{
-  */
-
-#define I2S_Mode_SlaveTx                ((uint16_t)0x0000)
-#define I2S_Mode_SlaveRx                ((uint16_t)0x0100)
-#define I2S_Mode_MasterTx               ((uint16_t)0x0200)
-#define I2S_Mode_MasterRx               ((uint16_t)0x0300)
-#define IS_I2S_MODE(MODE) (((MODE) == I2S_Mode_SlaveTx) || \
-                           ((MODE) == I2S_Mode_SlaveRx) || \
-                           ((MODE) == I2S_Mode_MasterTx)|| \
-                           ((MODE) == I2S_Mode_MasterRx))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_I2S_Standard 
-  * @{
-  */
-
-#define I2S_Standard_Phillips           ((uint16_t)0x0000)
-#define I2S_Standard_MSB                ((uint16_t)0x0010)
-#define I2S_Standard_LSB                ((uint16_t)0x0020)
-#define I2S_Standard_PCMShort           ((uint16_t)0x0030)
-#define I2S_Standard_PCMLong            ((uint16_t)0x00B0)
-#define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_Standard_Phillips) || \
-                                   ((STANDARD) == I2S_Standard_MSB) || \
-                                   ((STANDARD) == I2S_Standard_LSB) || \
-                                   ((STANDARD) == I2S_Standard_PCMShort) || \
-                                   ((STANDARD) == I2S_Standard_PCMLong))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_I2S_Data_Format 
-  * @{
-  */
-
-#define I2S_DataFormat_16b              ((uint16_t)0x0000)
-#define I2S_DataFormat_16bextended      ((uint16_t)0x0001)
-#define I2S_DataFormat_24b              ((uint16_t)0x0003)
-#define I2S_DataFormat_32b              ((uint16_t)0x0005)
-#define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DataFormat_16b) || \
-                                    ((FORMAT) == I2S_DataFormat_16bextended) || \
-                                    ((FORMAT) == I2S_DataFormat_24b) || \
-                                    ((FORMAT) == I2S_DataFormat_32b))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_I2S_MCLK_Output 
-  * @{
-  */
-
-#define I2S_MCLKOutput_Enable           SPI_I2SPR_MCKOE
-#define I2S_MCLKOutput_Disable          ((uint16_t)0x0000)
-#define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOutput_Enable) || \
-                                    ((OUTPUT) == I2S_MCLKOutput_Disable))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_I2S_Audio_Frequency 
-  * @{
-  */
-
-#define I2S_AudioFreq_192k               ((uint32_t)192000)
-#define I2S_AudioFreq_96k                ((uint32_t)96000)
-#define I2S_AudioFreq_48k                ((uint32_t)48000)
-#define I2S_AudioFreq_44k                ((uint32_t)44100)
-#define I2S_AudioFreq_32k                ((uint32_t)32000)
-#define I2S_AudioFreq_22k                ((uint32_t)22050)
-#define I2S_AudioFreq_16k                ((uint32_t)16000)
-#define I2S_AudioFreq_11k                ((uint32_t)11025)
-#define I2S_AudioFreq_8k                 ((uint32_t)8000)
-#define I2S_AudioFreq_Default            ((uint32_t)2)
-
-#define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AudioFreq_8k) && \
-                                 ((FREQ) <= I2S_AudioFreq_192k)) || \
-                                 ((FREQ) == I2S_AudioFreq_Default))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_I2S_Clock_Polarity 
-  * @{
-  */
-
-#define I2S_CPOL_Low                    ((uint16_t)0x0000)
-#define I2S_CPOL_High                   SPI_I2SCFGR_CKPOL
-#define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_Low) || \
-                           ((CPOL) == I2S_CPOL_High))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_FIFO_reception_threshold 
-  * @{
-  */
-
-#define SPI_RxFIFOThreshold_HF          ((uint16_t)0x0000)
-#define SPI_RxFIFOThreshold_QF          SPI_CR2_FRXTH
-#define IS_SPI_RX_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == SPI_RxFIFOThreshold_HF) || \
-                                             ((THRESHOLD) == SPI_RxFIFOThreshold_QF))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_I2S_DMA_transfer_requests 
-  * @{
-  */
-
-#define SPI_I2S_DMAReq_Tx               SPI_CR2_TXDMAEN
-#define SPI_I2S_DMAReq_Rx               SPI_CR2_RXDMAEN
-#define IS_SPI_I2S_DMA_REQ(REQ) ((((REQ) & (uint16_t)0xFFFC) == 0x00) && ((REQ) != 0x00))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_last_DMA_transfers
-  * @{
-  */
-
-#define SPI_LastDMATransfer_TxEvenRxEven   ((uint16_t)0x0000)
-#define SPI_LastDMATransfer_TxOddRxEven    ((uint16_t)0x4000)
-#define SPI_LastDMATransfer_TxEvenRxOdd    ((uint16_t)0x2000)
-#define SPI_LastDMATransfer_TxOddRxOdd     ((uint16_t)0x6000)
-#define IS_SPI_LAST_DMA_TRANSFER(TRANSFER) (((TRANSFER) == SPI_LastDMATransfer_TxEvenRxEven) || \
-                                            ((TRANSFER) == SPI_LastDMATransfer_TxOddRxEven) || \
-                                            ((TRANSFER) == SPI_LastDMATransfer_TxEvenRxOdd) || \
-                                            ((TRANSFER) == SPI_LastDMATransfer_TxOddRxOdd))
-/**
-  * @}
-  */
-/** @defgroup SPI_NSS_internal_software_management 
-  * @{
-  */
-
-#define SPI_NSSInternalSoft_Set         SPI_CR1_SSI
-#define SPI_NSSInternalSoft_Reset       ((uint16_t)0xFEFF)
-#define IS_SPI_NSS_INTERNAL(INTERNAL) (((INTERNAL) == SPI_NSSInternalSoft_Set) || \
-                                       ((INTERNAL) == SPI_NSSInternalSoft_Reset))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_CRC_Transmit_Receive 
-  * @{
-  */
-
-#define SPI_CRC_Tx                      ((uint8_t)0x00)
-#define SPI_CRC_Rx                      ((uint8_t)0x01)
-#define IS_SPI_CRC(CRC) (((CRC) == SPI_CRC_Tx) || ((CRC) == SPI_CRC_Rx))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_direction_transmit_receive 
-  * @{
-  */
-
-#define SPI_Direction_Rx                ((uint16_t)0xBFFF)
-#define SPI_Direction_Tx                ((uint16_t)0x4000)
-#define IS_SPI_DIRECTION(DIRECTION) (((DIRECTION) == SPI_Direction_Rx) || \
-                                     ((DIRECTION) == SPI_Direction_Tx))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_I2S_interrupts_definition 
-  * @{
-  */
-
-#define SPI_I2S_IT_TXE                  ((uint8_t)0x71)
-#define SPI_I2S_IT_RXNE                 ((uint8_t)0x60)
-#define SPI_I2S_IT_ERR                  ((uint8_t)0x50)
-
-#define IS_SPI_I2S_CONFIG_IT(IT) (((IT) == SPI_I2S_IT_TXE) || \
-                                  ((IT) == SPI_I2S_IT_RXNE) || \
-                                  ((IT) == SPI_I2S_IT_ERR))
-
-#define I2S_IT_UDR                      ((uint8_t)0x53)
-#define SPI_IT_MODF                     ((uint8_t)0x55)
-#define SPI_I2S_IT_OVR                  ((uint8_t)0x56)
-#define SPI_I2S_IT_FRE                  ((uint8_t)0x58)
-
-#define IS_SPI_I2S_GET_IT(IT) (((IT) == SPI_I2S_IT_RXNE) || ((IT) == SPI_I2S_IT_TXE) || \
-                               ((IT) == SPI_I2S_IT_OVR) || ((IT) == SPI_IT_MODF) || \
-                               ((IT) == SPI_I2S_IT_FRE)|| ((IT) == I2S_IT_UDR))
-/**
-  * @}
-  */
-
-
-/** @defgroup SPI_transmission_fifo_status_level 
-  * @{
-  */ 
-
-#define SPI_TransmissionFIFOStatus_Empty           ((uint16_t)0x0000)
-#define SPI_TransmissionFIFOStatus_1QuarterFull    ((uint16_t)0x0800) 
-#define SPI_TransmissionFIFOStatus_HalfFull        ((uint16_t)0x1000) 
-#define SPI_TransmissionFIFOStatus_Full            ((uint16_t)0x1800)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup SPI_reception_fifo_status_level 
-  * @{
-  */ 
-#define SPI_ReceptionFIFOStatus_Empty           ((uint16_t)0x0000)
-#define SPI_ReceptionFIFOStatus_1QuarterFull    ((uint16_t)0x0200) 
-#define SPI_ReceptionFIFOStatus_HalfFull        ((uint16_t)0x0400) 
-#define SPI_ReceptionFIFOStatus_Full            ((uint16_t)0x0600)
-
-/**
-  * @}
-  */ 
-
-
-/** @defgroup SPI_I2S_flags_definition 
-  * @{
-  */
-
-#define SPI_I2S_FLAG_RXNE               SPI_SR_RXNE
-#define SPI_I2S_FLAG_TXE                SPI_SR_TXE
-#define I2S_FLAG_CHSIDE                 SPI_SR_CHSIDE
-#define I2S_FLAG_UDR                    SPI_SR_UDR
-#define SPI_FLAG_CRCERR                 SPI_SR_CRCERR
-#define SPI_FLAG_MODF                   SPI_SR_MODF
-#define SPI_I2S_FLAG_OVR                SPI_SR_OVR
-#define SPI_I2S_FLAG_BSY                SPI_SR_BSY
-#define SPI_I2S_FLAG_FRE                SPI_SR_FRE
-
-
-
-#define IS_SPI_CLEAR_FLAG(FLAG) (((FLAG) == SPI_FLAG_CRCERR))
-#define IS_SPI_I2S_GET_FLAG(FLAG) (((FLAG) == SPI_I2S_FLAG_BSY) || ((FLAG) == SPI_I2S_FLAG_OVR) || \
-                                   ((FLAG) == SPI_FLAG_MODF) || ((FLAG) == SPI_FLAG_CRCERR) || \
-                                   ((FLAG) == SPI_I2S_FLAG_TXE) || ((FLAG) == SPI_I2S_FLAG_RXNE)|| \
-                                   ((FLAG) == SPI_I2S_FLAG_FRE)|| ((FLAG) == I2S_FLAG_CHSIDE)|| \
-                                   ((FLAG) == I2S_FLAG_UDR))
-/**
-  * @}
-  */
-
-/** @defgroup SPI_CRC_polynomial 
-  * @{
-  */
-
-#define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) ((POLYNOMIAL) >= 0x1)
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/* Initialization and Configuration functions *********************************/
-void SPI_I2S_DeInit(SPI_TypeDef* SPIx);
-void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);
-void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct); /*!< Not applicable for STM32F030 devices */
-void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct);
-void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct); /*!< Not applicable for STM32F030 devices */
-void SPI_TIModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
-void SPI_NSSPulseModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
-void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);
-void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); /*!< Not applicable for STM32F030 devices */
-void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize);
-void SPI_RxFIFOThresholdConfig(SPI_TypeDef* SPIx, uint16_t SPI_RxFIFOThreshold);
-void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction);
-void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft);
-void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
-
-/* Data transfers functions ***************************************************/
-void SPI_SendData8(SPI_TypeDef* SPIx, uint8_t Data);
-void SPI_I2S_SendData16(SPI_TypeDef* SPIx, uint16_t Data);
-uint8_t SPI_ReceiveData8(SPI_TypeDef* SPIx);
-uint16_t SPI_I2S_ReceiveData16(SPI_TypeDef* SPIx);
-
-/* Hardware CRC Calculation functions *****************************************/
-void SPI_CRCLengthConfig(SPI_TypeDef* SPIx, uint16_t SPI_CRCLength);
-void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState);
-void SPI_TransmitCRC(SPI_TypeDef* SPIx);
-uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC);
-uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx);
-
-/* DMA transfers management functions *****************************************/
-void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState);
-void SPI_LastDMATransferCmd(SPI_TypeDef* SPIx, uint16_t SPI_LastDMATransfer);
-
-/* Interrupts and flags management functions **********************************/
-void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState);
-uint16_t SPI_GetTransmissionFIFOStatus(SPI_TypeDef* SPIx);
-uint16_t SPI_GetReceptionFIFOStatus(SPI_TypeDef* SPIx);
-FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
-void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
-ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_SPI_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_syscfg.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_syscfg.h
deleted file mode 100644
index 1a1d566..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_syscfg.h	
+++ /dev/null
@@ -1,262 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_syscfg.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the SYSCFG firmware 
-  *          library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/*!< Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_SYSCFG_H
-#define __STM32F0XX_SYSCFG_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/*!< Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup SYSCFG
-  * @{
-  */
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup SYSCFG_Exported_Constants
-  * @{
-  */ 
-  
-/** @defgroup SYSCFG_EXTI_Port_Sources 
-  * @{
-  */ 
-#define EXTI_PortSourceGPIOA       ((uint8_t)0x00)
-#define EXTI_PortSourceGPIOB       ((uint8_t)0x01)
-#define EXTI_PortSourceGPIOC       ((uint8_t)0x02)
-#define EXTI_PortSourceGPIOD       ((uint8_t)0x03) /*!< not available for STM32F031 devices */
-#define EXTI_PortSourceGPIOE       ((uint8_t)0x04) /*!< only available for STM32F072 devices */
-#define EXTI_PortSourceGPIOF       ((uint8_t)0x05)
-
-#define IS_EXTI_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == EXTI_PortSourceGPIOA) || \
-                                         ((PORTSOURCE) == EXTI_PortSourceGPIOB) || \
-                                         ((PORTSOURCE) == EXTI_PortSourceGPIOC) || \
-                                         ((PORTSOURCE) == EXTI_PortSourceGPIOD) || \
-                                         ((PORTSOURCE) == EXTI_PortSourceGPIOE) || \
-                                         ((PORTSOURCE) == EXTI_PortSourceGPIOF)) 
-/**
-  * @}
-  */
-
-/** @defgroup SYSCFG_EXTI_Pin_sources 
-  * @{
-  */ 
-#define EXTI_PinSource0            ((uint8_t)0x00)
-#define EXTI_PinSource1            ((uint8_t)0x01)
-#define EXTI_PinSource2            ((uint8_t)0x02)
-#define EXTI_PinSource3            ((uint8_t)0x03)
-#define EXTI_PinSource4            ((uint8_t)0x04)
-#define EXTI_PinSource5            ((uint8_t)0x05)
-#define EXTI_PinSource6            ((uint8_t)0x06)
-#define EXTI_PinSource7            ((uint8_t)0x07)
-#define EXTI_PinSource8            ((uint8_t)0x08)
-#define EXTI_PinSource9            ((uint8_t)0x09)
-#define EXTI_PinSource10           ((uint8_t)0x0A)
-#define EXTI_PinSource11           ((uint8_t)0x0B)
-#define EXTI_PinSource12           ((uint8_t)0x0C)
-#define EXTI_PinSource13           ((uint8_t)0x0D)
-#define EXTI_PinSource14           ((uint8_t)0x0E)
-#define EXTI_PinSource15           ((uint8_t)0x0F)
-
-#define IS_EXTI_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == EXTI_PinSource0) || \
-                                       ((PINSOURCE) == EXTI_PinSource1) || \
-                                       ((PINSOURCE) == EXTI_PinSource2) || \
-                                       ((PINSOURCE) == EXTI_PinSource3) || \
-                                       ((PINSOURCE) == EXTI_PinSource4) || \
-                                       ((PINSOURCE) == EXTI_PinSource5) || \
-                                       ((PINSOURCE) == EXTI_PinSource6) || \
-                                       ((PINSOURCE) == EXTI_PinSource7) || \
-                                       ((PINSOURCE) == EXTI_PinSource8) || \
-                                       ((PINSOURCE) == EXTI_PinSource9) || \
-                                       ((PINSOURCE) == EXTI_PinSource10) || \
-                                       ((PINSOURCE) == EXTI_PinSource11) || \
-                                       ((PINSOURCE) == EXTI_PinSource12) || \
-                                       ((PINSOURCE) == EXTI_PinSource13) || \
-                                       ((PINSOURCE) == EXTI_PinSource14) || \
-                                       ((PINSOURCE) == EXTI_PinSource15))
-/**
-  * @}
-  */
-
-/** @defgroup SYSCFG_Memory_Remap_Config 
-  * @{
-  */ 
-#define SYSCFG_MemoryRemap_Flash                ((uint8_t)0x00)
-#define SYSCFG_MemoryRemap_SystemMemory         ((uint8_t)0x01)
-#define SYSCFG_MemoryRemap_SRAM                 ((uint8_t)0x03)
-
-
-#define IS_SYSCFG_MEMORY_REMAP(REMAP) (((REMAP) == SYSCFG_MemoryRemap_Flash) || \
-                                       ((REMAP) == SYSCFG_MemoryRemap_SystemMemory) || \
-                                       ((REMAP) == SYSCFG_MemoryRemap_SRAM))
-
-/**
-  * @}
-  */
-
-/** @defgroup SYSCFG_DMA_Remap_Config 
-  * @{
-  */ 
-#define SYSCFG_DMARemap_TIM3        SYSCFG_CFGR1_TIM3_DMA_RMP      /* Remap TIM3 DMA requests from channel4 to channel6, 
-                                                                      available only for STM32F072 devices */
-#define SYSCFG_DMARemap_TIM2        SYSCFG_CFGR1_TIM2_DMA_RMP      /* Remap TIM2 DMA requests from channel3/4 to channel7, 
-                                                                      available only for STM32F072 devices */ 
-#define SYSCFG_DMARemap_TIM1        SYSCFG_CFGR1_TIM1_DMA_RMP      /* Remap TIM1 DMA requests from channel2/3/4 to channel6, 
-                                                                      available only for STM32F072 devices */
-#define SYSCFG_DMARemap_I2C1        SYSCFG_CFGR1_I2C1_DMA_RMP      /* Remap I2C1 DMA requests from channel3/2 to channel7/6, 
-                                                                      available only for STM32F072 devices */
-#define SYSCFG_DMARemap_USART3      SYSCFG_CFGR1_USART3_DMA_RMP    /* Remap USART3 DMA requests from channel6/7 to channel3/2, 
-                                                                      available only for STM32F072 devices */
-#define SYSCFG_DMARemap_USART2      SYSCFG_CFGR1_USART2_DMA_RMP    /* Remap USART2 DMA requests from channel4/5 to channel6/7, 
-                                                                      available only for STM32F072 devices */
-#define SYSCFG_DMARemap_SPI2        SYSCFG_CFGR1_SPI2_DMA_RMP      /* Remap SPI2 DMA requests from channel4/5 to channel6/7, 
-                                                                      available only for STM32F072 devices */
-#define SYSCFG_DMARemap_TIM17_2     SYSCFG_CFGR1_TIM17_DMA_RMP2    /* Remap TIM17 DMA requests from channel1/2 to channel7, 
-                                                                      available only for STM32F072 devices */
-#define SYSCFG_DMARemap_TIM16_2     SYSCFG_CFGR1_TIM16_DMA_RMP2    /* Remap TIM16 DMA requests from channel3/4 to channel6, 
-                                                                      available only for STM32F072 devices */
-#define SYSCFG_DMARemap_TIM17       SYSCFG_CFGR1_TIM17_DMA_RMP    /* Remap TIM17 DMA requests from channel1 to channel2 */
-#define SYSCFG_DMARemap_TIM16       SYSCFG_CFGR1_TIM16_DMA_RMP    /* Remap TIM16 DMA requests from channel3 to channel4 */
-#define SYSCFG_DMARemap_USART1Rx    SYSCFG_CFGR1_USART1RX_DMA_RMP /* Remap USART1 Rx DMA requests from channel3 to channel5 */
-#define SYSCFG_DMARemap_USART1Tx    SYSCFG_CFGR1_USART1TX_DMA_RMP /* Remap USART1 Tx DMA requests from channel2 to channel4 */
-#define SYSCFG_DMARemap_ADC1        SYSCFG_CFGR1_ADC_DMA_RMP      /* Remap ADC1 DMA requests from channel1 to channel2 */
-  
-#define IS_SYSCFG_DMA_REMAP(REMAP) (((REMAP) == SYSCFG_DMARemap_TIM17) || \
-                                    ((REMAP) == SYSCFG_DMARemap_TIM16) || \
-                                    ((REMAP) == SYSCFG_DMARemap_USART1Rx) || \
-                                    ((REMAP) == SYSCFG_DMARemap_USART1Tx) || \
-                                    ((REMAP) == SYSCFG_CFGR1_TIM3_DMA_RMP) || \
-                                    ((REMAP) == SYSCFG_CFGR1_TIM2_DMA_RMP) || \
-                                    ((REMAP) == SYSCFG_CFGR1_TIM1_DMA_RMP) || \
-                                    ((REMAP) == SYSCFG_CFGR1_I2C1_DMA_RMP) || \
-                                    ((REMAP) == SYSCFG_CFGR1_USART3_DMA_RMP) || \
-                                    ((REMAP) == SYSCFG_CFGR1_USART2_DMA_RMP) || \
-                                    ((REMAP) == SYSCFG_CFGR1_SPI2_DMA_RMP) || \
-                                    ((REMAP) == SYSCFG_CFGR1_TIM17_DMA_RMP2) || \
-                                    ((REMAP) == SYSCFG_CFGR1_TIM16_DMA_RMP2) || \
-                                    ((REMAP) == SYSCFG_DMARemap_ADC1))
-
-/**
-  * @}
-  */
-
-/** @defgroup SYSCFG_I2C_FastModePlus_Config 
-  * @{
-  */ 
-#define SYSCFG_I2CFastModePlus_PB6       SYSCFG_CFGR1_I2C_FMP_PB6 /* Enable Fast Mode Plus on PB6 */
-#define SYSCFG_I2CFastModePlus_PB7       SYSCFG_CFGR1_I2C_FMP_PB7 /* Enable Fast Mode Plus on PB7 */
-#define SYSCFG_I2CFastModePlus_PB8       SYSCFG_CFGR1_I2C_FMP_PB8 /* Enable Fast Mode Plus on PB8 */
-#define SYSCFG_I2CFastModePlus_PB9       SYSCFG_CFGR1_I2C_FMP_PB9 /* Enable Fast Mode Plus on PB9 */
-#define SYSCFG_I2CFastModePlus_I2C1      SYSCFG_CFGR1_I2C_FMP_I2C1 /* Enable Fast Mode Plus on PB10, PB11, PF6 and PF7(only for STM32F0031 and STM32F030 devices) */
-#define SYSCFG_I2CFastModePlus_I2C2      SYSCFG_CFGR1_I2C_FMP_I2C2 /* Enable Fast Mode Plus on I2C2 pins, available only for STM32F072 devices */
-#define SYSCFG_I2CFastModePlus_PA9       SYSCFG_CFGR1_I2C_FMP_PA9 /* Enable Fast Mode Plus on PA9 (only for STM32F031 and STM32F030 devices) */
-#define SYSCFG_I2CFastModePlus_PA10      SYSCFG_CFGR1_I2C_FMP_PA10/* Enable Fast Mode Plus on PA10(only for STM32F031 and STM32F030 devices) */
-
-#define IS_SYSCFG_I2C_FMP(PIN) (((PIN) == SYSCFG_I2CFastModePlus_PB6)  || \
-                                ((PIN) == SYSCFG_I2CFastModePlus_PB7)  || \
-                                ((PIN) == SYSCFG_I2CFastModePlus_PB8)  || \
-                                ((PIN) == SYSCFG_I2CFastModePlus_PB9)  || \
-                                ((PIN) == SYSCFG_I2CFastModePlus_I2C1) || \
-                                ((PIN) == SYSCFG_I2CFastModePlus_I2C2) || \
-                                ((PIN) == SYSCFG_I2CFastModePlus_PA9)  || \
-                                ((PIN) == SYSCFG_I2CFastModePlus_PA10))
-
-
-/**
-  * @}
-  */
-
-/** @defgroup SYSCFG_Lock_Config 
-  * @{
-  */ 
-#define SYSCFG_Break_PVD                     SYSCFG_CFGR2_PVD_LOCK       /*!< Connects the PVD event to the Break Input of TIM1, not available for STM32F030 devices */
-#define SYSCFG_Break_SRAMParity              SYSCFG_CFGR2_SRAM_PARITY_LOCK  /*!< Connects the SRAM_PARITY error signal to the Break Input of TIM1 */
-#define SYSCFG_Break_Lockup                  SYSCFG_CFGR2_LOCKUP_LOCK       /*!< Connects Lockup output of CortexM0 to the break input of TIM1 */
-
-#define IS_SYSCFG_LOCK_CONFIG(CONFIG) (((CONFIG) == SYSCFG_Break_PVD)        || \
-                                       ((CONFIG) == SYSCFG_Break_SRAMParity) || \
-                                       ((CONFIG) == SYSCFG_Break_Lockup))
-
-/**
-  * @}
-  */
-
-/** @defgroup SYSCFG_flags_definition 
-  * @{
-  */
-
-#define SYSCFG_FLAG_PE               SYSCFG_CFGR2_SRAM_PE
-
-#define IS_SYSCFG_FLAG(FLAG) (((FLAG) == SYSCFG_FLAG_PE))
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/*  Function used to set the SYSCFG configuration to the default reset state **/
-void SYSCFG_DeInit(void);
-
-/* SYSCFG configuration functions *********************************************/ 
-void SYSCFG_MemoryRemapConfig(uint32_t SYSCFG_MemoryRemap);
-void SYSCFG_DMAChannelRemapConfig(uint32_t SYSCFG_DMARemap, FunctionalState NewState);
-void SYSCFG_I2CFastModePlusConfig(uint32_t SYSCFG_I2CFastModePlus, FunctionalState NewState);
-void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex);
-void SYSCFG_BreakConfig(uint32_t SYSCFG_Break);
-FlagStatus SYSCFG_GetFlagStatus(uint32_t SYSCFG_Flag);
-void SYSCFG_ClearFlag(uint32_t SYSCFG_Flag);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_SYSCFG_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_tim.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_tim.h
deleted file mode 100644
index 1b7c745..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_tim.h	
+++ /dev/null
@@ -1,1186 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_tim.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the TIM 
-  *          firmware library. 
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_TIM_H
-#define __STM32F0XX_TIM_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup TIM
-  * @{
-  */ 
-
-/* Exported types ------------------------------------------------------------*/
-
-/** 
-  * @brief  TIM Time Base Init structure definition
-  * @note   This sturcture is used with all TIMx.
-  */
-
-typedef struct
-{
-  uint16_t TIM_Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
-                                       This parameter can be a number between 0x0000 and 0xFFFF */
-
-  uint16_t TIM_CounterMode;       /*!< Specifies the counter mode.
-                                       This parameter can be a value of @ref TIM_Counter_Mode */
-
-  uint32_t TIM_Period;            /*!< Specifies the period value to be loaded into the active
-                                       Auto-Reload Register at the next update event.
-                                       This parameter must be a number between 0x0000 and 0xFFFF.  */ 
-
-  uint16_t TIM_ClockDivision;     /*!< Specifies the clock division.
-                                      This parameter can be a value of @ref TIM_Clock_Division_CKD */
-
-  uint8_t TIM_RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
-                                       reaches zero, an update event is generated and counting restarts
-                                       from the RCR value (N).
-                                       This means in PWM mode that (N+1) corresponds to:
-                                          - the number of PWM periods in edge-aligned mode
-                                          - the number of half PWM period in center-aligned mode
-                                       This parameter must be a number between 0x00 and 0xFF. 
-                                       @note This parameter is valid only for TIM1. */
-} TIM_TimeBaseInitTypeDef;       
-
-/** 
-  * @brief  TIM Output Compare Init structure definition  
-  */
-
-typedef struct
-{
-  uint16_t TIM_OCMode;        /*!< Specifies the TIM mode.
-                                   This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */
-
-  uint16_t TIM_OutputState;   /*!< Specifies the TIM Output Compare state.
-                                   This parameter can be a value of @ref TIM_Output_Compare_state */
-
-  uint16_t TIM_OutputNState;  /*!< Specifies the TIM complementary Output Compare state.
-                                   This parameter can be a value of @ref TIM_Output_Compare_N_state
-                                   @note This parameter is valid only for TIM1. */
-
-  uint32_t TIM_Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register. 
-                                   This parameter can be a number between 0x0000 and 0xFFFF ( or 0xFFFFFFFF 
-                                   for TIM2) */
-
-  uint16_t TIM_OCPolarity;    /*!< Specifies the output polarity.
-                                   This parameter can be a value of @ref TIM_Output_Compare_Polarity */
-
-  uint16_t TIM_OCNPolarity;   /*!< Specifies the complementary output polarity.
-                                   This parameter can be a value of @ref TIM_Output_Compare_N_Polarity
-                                   @note This parameter is valid only for TIM1. */
-
-  uint16_t TIM_OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
-                                   This parameter can be a value of @ref TIM_Output_Compare_Idle_State
-                                   @note This parameter is valid only for TIM1. */
-
-  uint16_t TIM_OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
-                                   This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State
-                                   @note This parameter is valid only for TIM1. */
-} TIM_OCInitTypeDef;
-
-/** 
-  * @brief  TIM Input Capture Init structure definition  
-  */
-
-typedef struct
-{
-
-  uint16_t TIM_Channel;      /*!< Specifies the TIM channel.
-                                  This parameter can be a value of @ref TIM_Channel */
-
-  uint16_t TIM_ICPolarity;   /*!< Specifies the active edge of the input signal.
-                                  This parameter can be a value of @ref TIM_Input_Capture_Polarity */
-
-  uint16_t TIM_ICSelection;  /*!< Specifies the input.
-                                  This parameter can be a value of @ref TIM_Input_Capture_Selection */
-
-  uint16_t TIM_ICPrescaler;  /*!< Specifies the Input Capture Prescaler.
-                                  This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
-
-  uint16_t TIM_ICFilter;     /*!< Specifies the input capture filter.
-                                  This parameter can be a number between 0x0 and 0xF */
-} TIM_ICInitTypeDef;
-
-/** 
-  * @brief  TIM_BDTR structure definition 
-  * @note   This sturcture is used only with TIM1.    
-  */
-
-typedef struct
-{
-
-  uint16_t TIM_OSSRState;        /*!< Specifies the Off-State selection used in Run mode.
-                                      This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */
-
-  uint16_t TIM_OSSIState;        /*!< Specifies the Off-State used in Idle state.
-                                      This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */
-
-  uint16_t TIM_LOCKLevel;        /*!< Specifies the LOCK level parameters.
-                                      This parameter can be a value of @ref TIM_Lock_level */ 
-
-  uint16_t TIM_DeadTime;         /*!< Specifies the delay time between the switching-off and the
-                                      switching-on of the outputs.
-                                      This parameter can be a number between 0x00 and 0xFF  */
-
-  uint16_t TIM_Break;            /*!< Specifies whether the TIM Break input is enabled or not. 
-                                      This parameter can be a value of @ref TIM_Break_Input_enable_disable */
-
-  uint16_t TIM_BreakPolarity;    /*!< Specifies the TIM Break Input pin polarity.
-                                      This parameter can be a value of @ref TIM_Break_Polarity */
-
-  uint16_t TIM_AutomaticOutput;  /*!< Specifies whether the TIM Automatic Output feature is enabled or not. 
-                                      This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */
-} TIM_BDTRInitTypeDef;
-
-/** 
-  * @brief  TIM Input Capture Init structure definition  
-  */
-
-/* Exported constants --------------------------------------------------------*/
-
-  
-/** @defgroup TIM_Exported_constants 
-  * @{
-  */
-
-#define IS_TIM_ALL_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
-                                   ((PERIPH) == TIM2) || \
-                                   ((PERIPH) == TIM3) || \
-                                   ((PERIPH) == TIM6) || \
-                                   ((PERIPH) == TIM7) || \
-                                   ((PERIPH) == TIM14)|| \
-                                   ((PERIPH) == TIM15)|| \
-                                   ((PERIPH) == TIM16)|| \
-                                   ((PERIPH) == TIM17))
-
-/* LIST1: TIM 1 */
-#define IS_TIM_LIST1_PERIPH(PERIPH)  ((PERIPH) == TIM1)
-
-/* LIST2: TIM 1, 15, 16 and 17 */
-#define IS_TIM_LIST2_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
-                                     ((PERIPH) == TIM15)|| \
-                                     ((PERIPH) == TIM16)|| \
-                                     ((PERIPH) == TIM17)) 
-
-/* LIST3: TIM 1, 2 and 3 */
-#define IS_TIM_LIST3_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
-                                     ((PERIPH) == TIM2) || \
-                                     ((PERIPH) == TIM3)) 
-
-/* LIST4: TIM 1, 2, 3, 14, 15, 16 and 17 */
-#define IS_TIM_LIST4_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
-                                     ((PERIPH) == TIM2) || \
-                                     ((PERIPH) == TIM3) || \
-                                     ((PERIPH) == TIM14) || \
-                                     ((PERIPH) == TIM15)|| \
-                                     ((PERIPH) == TIM16)|| \
-                                     ((PERIPH) == TIM17))
-
-/* LIST5: TIM 1, 2, 3, 15, 16 and 17 */
-#define IS_TIM_LIST5_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
-                                     ((PERIPH) == TIM2) || \
-                                     ((PERIPH) == TIM3) || \
-                                     ((PERIPH) == TIM15)|| \
-                                     ((PERIPH) == TIM16)|| \
-                                     ((PERIPH) == TIM17))
-
-/* LIST6: TIM 1, 2, 3 and 15 */
-#define IS_TIM_LIST6_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
-                                     ((PERIPH) == TIM2) || \
-                                     ((PERIPH) == TIM3) || \
-                                     ((PERIPH) == TIM15)) 
-
-/* LIST7: TIM 1, 2, 3, 6, 7 and 14 */
-#define IS_TIM_LIST7_PERIPH(PERIPH)  (((PERIPH) == TIM1) || \
-                                      ((PERIPH) == TIM2) || \
-                                      ((PERIPH) == TIM3) || \
-                                      ((PERIPH) == TIM6) || \
-                                      ((PERIPH) == TIM7) || \
-                                      ((PERIPH) == TIM14))
-                                      
-/* LIST8: TIM 1, 2, 3 and 14 */
-#define IS_TIM_LIST8_PERIPH(PERIPH)  (((PERIPH) == TIM1) || \
-                                      ((PERIPH) == TIM2) || \
-                                      ((PERIPH) == TIM3) || \
-                                      ((PERIPH) == TIM14))
-
-/* LIST9: TIM 1, 2, 3, 6, 7 and 15 */
-#define IS_TIM_LIST9_PERIPH(PERIPH)  (((PERIPH) == TIM1) || \
-                                      ((PERIPH) == TIM2) || \
-                                      ((PERIPH) == TIM3) || \
-                                      ((PERIPH) == TIM6) || \
-                                      ((PERIPH) == TIM7) || \
-                                      ((PERIPH) == TIM15))
-
-/* LIST10: TIM 1, 2, 3, 6, 7, 15, 16 and 17 */
-#define IS_TIM_LIST10_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
-                                     ((PERIPH) == TIM2) || \
-                                     ((PERIPH) == TIM3) || \
-                                     ((PERIPH) == TIM6) || \
-                                     ((PERIPH) == TIM7) || \
-                                     ((PERIPH) == TIM15)|| \
-                                     ((PERIPH) == TIM16)|| \
-                                     ((PERIPH) == TIM17))
-
-/* LIST1: TIM 11 */
-#define IS_TIM_LIST11_PERIPH(PERIPH)  ((PERIPH) == TIM14)
-                                     
-
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Output_Compare_and_PWM_modes 
-  * @{
-  */
-
-#define TIM_OCMode_Timing                  ((uint16_t)0x0000)
-#define TIM_OCMode_Active                  ((uint16_t)0x0010)
-#define TIM_OCMode_Inactive                ((uint16_t)0x0020)
-#define TIM_OCMode_Toggle                  ((uint16_t)0x0030)
-#define TIM_OCMode_PWM1                    ((uint16_t)0x0060)
-#define TIM_OCMode_PWM2                    ((uint16_t)0x0070)
-#define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMode_Timing) || \
-                              ((MODE) == TIM_OCMode_Active) || \
-                              ((MODE) == TIM_OCMode_Inactive) || \
-                              ((MODE) == TIM_OCMode_Toggle)|| \
-                              ((MODE) == TIM_OCMode_PWM1) || \
-                              ((MODE) == TIM_OCMode_PWM2))
-#define IS_TIM_OCM(MODE) (((MODE) == TIM_OCMode_Timing) || \
-                          ((MODE) == TIM_OCMode_Active) || \
-                          ((MODE) == TIM_OCMode_Inactive) || \
-                          ((MODE) == TIM_OCMode_Toggle)|| \
-                          ((MODE) == TIM_OCMode_PWM1) || \
-                          ((MODE) == TIM_OCMode_PWM2) ||	\
-                          ((MODE) == TIM_ForcedAction_Active) || \
-                          ((MODE) == TIM_ForcedAction_InActive))
-/**
-  * @}
-  */
-
-/** @defgroup TIM_One_Pulse_Mode 
-  * @{
-  */
-
-#define TIM_OPMode_Single                  ((uint16_t)0x0008)
-#define TIM_OPMode_Repetitive              ((uint16_t)0x0000)
-#define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMode_Single) || \
-                               ((MODE) == TIM_OPMode_Repetitive))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Channel 
-  * @{
-  */
-
-#define TIM_Channel_1                      ((uint16_t)0x0000)
-#define TIM_Channel_2                      ((uint16_t)0x0004)
-#define TIM_Channel_3                      ((uint16_t)0x0008)
-#define TIM_Channel_4                      ((uint16_t)0x000C)
-
-#define IS_TIM_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
-                                 ((CHANNEL) == TIM_Channel_2) || \
-                                 ((CHANNEL) == TIM_Channel_3) || \
-                                 ((CHANNEL) == TIM_Channel_4))
-#define IS_TIM_COMPLEMENTARY_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
-                                               ((CHANNEL) == TIM_Channel_2) || \
-                                               ((CHANNEL) == TIM_Channel_3))
-#define IS_TIM_PWMI_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
-                                      ((CHANNEL) == TIM_Channel_2))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Clock_Division_CKD 
-  * @{
-  */
-
-#define TIM_CKD_DIV1                       ((uint16_t)0x0000)
-#define TIM_CKD_DIV2                       ((uint16_t)0x0100)
-#define TIM_CKD_DIV4                       ((uint16_t)0x0200)
-#define IS_TIM_CKD_DIV(DIV) (((DIV) == TIM_CKD_DIV1) || \
-                             ((DIV) == TIM_CKD_DIV2) || \
-                             ((DIV) == TIM_CKD_DIV4))
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Counter_Mode 
-  * @{
-  */
-
-#define TIM_CounterMode_Up                 ((uint16_t)0x0000)
-#define TIM_CounterMode_Down               ((uint16_t)0x0010)
-#define TIM_CounterMode_CenterAligned1     ((uint16_t)0x0020)
-#define TIM_CounterMode_CenterAligned2     ((uint16_t)0x0040)
-#define TIM_CounterMode_CenterAligned3     ((uint16_t)0x0060)
-#define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) ||  \
-                                   ((MODE) == TIM_CounterMode_Down) || \
-                                   ((MODE) == TIM_CounterMode_CenterAligned1) || \
-                                   ((MODE) == TIM_CounterMode_CenterAligned2) || \
-                                   ((MODE) == TIM_CounterMode_CenterAligned3))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Output_Compare_Polarity 
-  * @{
-  */
-
-#define TIM_OCPolarity_High                ((uint16_t)0x0000)
-#define TIM_OCPolarity_Low                 ((uint16_t)0x0002)
-#define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \
-                                      ((POLARITY) == TIM_OCPolarity_Low))
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Output_Compare_N_Polarity 
-  * @{
-  */
-  
-#define TIM_OCNPolarity_High               ((uint16_t)0x0000)
-#define TIM_OCNPolarity_Low                ((uint16_t)0x0008)
-#define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPolarity_High) || \
-                                       ((POLARITY) == TIM_OCNPolarity_Low))
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Output_Compare_state
-  * @{
-  */
-
-#define TIM_OutputState_Disable            ((uint16_t)0x0000)
-#define TIM_OutputState_Enable             ((uint16_t)0x0001)
-#define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OutputState_Disable) || \
-                                    ((STATE) == TIM_OutputState_Enable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Output_Compare_N_state 
-  * @{
-  */
-
-#define TIM_OutputNState_Disable           ((uint16_t)0x0000)
-#define TIM_OutputNState_Enable            ((uint16_t)0x0004)
-#define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OutputNState_Disable) || \
-                                     ((STATE) == TIM_OutputNState_Enable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Capture_Compare_state 
-  * @{
-  */
-
-#define TIM_CCx_Enable                      ((uint16_t)0x0001)
-#define TIM_CCx_Disable                     ((uint16_t)0x0000)
-#define IS_TIM_CCX(CCX) (((CCX) == TIM_CCx_Enable) || \
-                         ((CCX) == TIM_CCx_Disable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Capture_Compare_N_state 
-  * @{
-  */
-
-#define TIM_CCxN_Enable                     ((uint16_t)0x0004)
-#define TIM_CCxN_Disable                    ((uint16_t)0x0000)
-#define IS_TIM_CCXN(CCXN) (((CCXN) == TIM_CCxN_Enable) || \
-                           ((CCXN) == TIM_CCxN_Disable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Break_Input_enable_disable 
-  * @{
-  */
-
-#define TIM_Break_Enable                   ((uint16_t)0x1000)
-#define TIM_Break_Disable                  ((uint16_t)0x0000)
-#define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_Break_Enable) || \
-                                   ((STATE) == TIM_Break_Disable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Break_Polarity 
-  * @{
-  */
-
-#define TIM_BreakPolarity_Low              ((uint16_t)0x0000)
-#define TIM_BreakPolarity_High             ((uint16_t)0x2000)
-#define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BreakPolarity_Low) || \
-                                         ((POLARITY) == TIM_BreakPolarity_High))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_AOE_Bit_Set_Reset 
-  * @{
-  */
-
-#define TIM_AutomaticOutput_Enable         ((uint16_t)0x4000)
-#define TIM_AutomaticOutput_Disable        ((uint16_t)0x0000)
-#define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AutomaticOutput_Enable) || \
-                                              ((STATE) == TIM_AutomaticOutput_Disable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Lock_level 
-  * @{
-  */
-
-#define TIM_LOCKLevel_OFF                  ((uint16_t)0x0000)
-#define TIM_LOCKLevel_1                    ((uint16_t)0x0100)
-#define TIM_LOCKLevel_2                    ((uint16_t)0x0200)
-#define TIM_LOCKLevel_3                    ((uint16_t)0x0300)
-#define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLevel_OFF) || \
-                                  ((LEVEL) == TIM_LOCKLevel_1) || \
-                                  ((LEVEL) == TIM_LOCKLevel_2) || \
-                                  ((LEVEL) == TIM_LOCKLevel_3))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state 
-  * @{
-  */
-
-#define TIM_OSSIState_Enable               ((uint16_t)0x0400)
-#define TIM_OSSIState_Disable              ((uint16_t)0x0000)
-#define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSIState_Enable) || \
-                                  ((STATE) == TIM_OSSIState_Disable))
-/**
-  * @}
-  */
-
-/** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state 
-  * @{
-  */
-
-#define TIM_OSSRState_Enable               ((uint16_t)0x0800)
-#define TIM_OSSRState_Disable              ((uint16_t)0x0000)
-#define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSRState_Enable) || \
-                                  ((STATE) == TIM_OSSRState_Disable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Output_Compare_Idle_State 
-  * @{
-  */
-
-#define TIM_OCIdleState_Set                ((uint16_t)0x0100)
-#define TIM_OCIdleState_Reset              ((uint16_t)0x0000)
-#define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIdleState_Set) || \
-                                    ((STATE) == TIM_OCIdleState_Reset))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Output_Compare_N_Idle_State 
-  * @{
-  */
-
-#define TIM_OCNIdleState_Set               ((uint16_t)0x0200)
-#define TIM_OCNIdleState_Reset             ((uint16_t)0x0000)
-#define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIdleState_Set) || \
-                                     ((STATE) == TIM_OCNIdleState_Reset))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Input_Capture_Polarity 
-  * @{
-  */
-
-#define  TIM_ICPolarity_Rising             ((uint16_t)0x0000)
-#define  TIM_ICPolarity_Falling            ((uint16_t)0x0002)
-#define  TIM_ICPolarity_BothEdge           ((uint16_t)0x000A)
-#define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
-                                      ((POLARITY) == TIM_ICPolarity_Falling)|| \
-                                      ((POLARITY) == TIM_ICPolarity_BothEdge)) 
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Input_Capture_Selection 
-  * @{
-  */
-
-#define TIM_ICSelection_DirectTI           ((uint16_t)0x0001) /*!< TIM Input 1, 2, 3 or 4 is selected to be 
-                                                                   connected to IC1, IC2, IC3 or IC4, respectively */
-#define TIM_ICSelection_IndirectTI         ((uint16_t)0x0002) /*!< TIM Input 1, 2, 3 or 4 is selected to be
-                                                                   connected to IC2, IC1, IC4 or IC3, respectively. */
-#define TIM_ICSelection_TRC                ((uint16_t)0x0003) /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC. */
-#define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSelection_DirectTI) || \
-                                        ((SELECTION) == TIM_ICSelection_IndirectTI) || \
-                                        ((SELECTION) == TIM_ICSelection_TRC))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Input_Capture_Prescaler 
-  * @{
-  */
-
-#define TIM_ICPSC_DIV1                     ((uint16_t)0x0000) /*!< Capture performed each time an edge is detected on the capture input. */
-#define TIM_ICPSC_DIV2                     ((uint16_t)0x0004) /*!< Capture performed once every 2 events. */
-#define TIM_ICPSC_DIV4                     ((uint16_t)0x0008) /*!< Capture performed once every 4 events. */
-#define TIM_ICPSC_DIV8                     ((uint16_t)0x000C) /*!< Capture performed once every 8 events. */
-#define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \
-                                        ((PRESCALER) == TIM_ICPSC_DIV2) || \
-                                        ((PRESCALER) == TIM_ICPSC_DIV4) || \
-                                        ((PRESCALER) == TIM_ICPSC_DIV8))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_interrupt_sources 
-  * @{
-  */
-
-#define TIM_IT_Update                      ((uint16_t)0x0001)
-#define TIM_IT_CC1                         ((uint16_t)0x0002)
-#define TIM_IT_CC2                         ((uint16_t)0x0004)
-#define TIM_IT_CC3                         ((uint16_t)0x0008)
-#define TIM_IT_CC4                         ((uint16_t)0x0010)
-#define TIM_IT_COM                         ((uint16_t)0x0020)
-#define TIM_IT_Trigger                     ((uint16_t)0x0040)
-#define TIM_IT_Break                       ((uint16_t)0x0080)
-#define IS_TIM_IT(IT) ((((IT) & (uint16_t)0xFF00) == 0x0000) && ((IT) != 0x0000))
-
-#define IS_TIM_GET_IT(IT) (((IT) == TIM_IT_Update) || \
-                           ((IT) == TIM_IT_CC1) || \
-                           ((IT) == TIM_IT_CC2) || \
-                           ((IT) == TIM_IT_CC3) || \
-                           ((IT) == TIM_IT_CC4) || \
-                           ((IT) == TIM_IT_COM) || \
-                           ((IT) == TIM_IT_Trigger) || \
-                           ((IT) == TIM_IT_Break))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_DMA_Base_address 
-  * @{
-  */
-
-#define TIM_DMABase_CR1                    ((uint16_t)0x0000)
-#define TIM_DMABase_CR2                    ((uint16_t)0x0001)
-#define TIM_DMABase_SMCR                   ((uint16_t)0x0002)
-#define TIM_DMABase_DIER                   ((uint16_t)0x0003)
-#define TIM_DMABase_SR                     ((uint16_t)0x0004)
-#define TIM_DMABase_EGR                    ((uint16_t)0x0005)
-#define TIM_DMABase_CCMR1                  ((uint16_t)0x0006)
-#define TIM_DMABase_CCMR2                  ((uint16_t)0x0007)
-#define TIM_DMABase_CCER                   ((uint16_t)0x0008)
-#define TIM_DMABase_CNT                    ((uint16_t)0x0009)
-#define TIM_DMABase_PSC                    ((uint16_t)0x000A)
-#define TIM_DMABase_ARR                    ((uint16_t)0x000B)
-#define TIM_DMABase_RCR                    ((uint16_t)0x000C)
-#define TIM_DMABase_CCR1                   ((uint16_t)0x000D)
-#define TIM_DMABase_CCR2                   ((uint16_t)0x000E)
-#define TIM_DMABase_CCR3                   ((uint16_t)0x000F)
-#define TIM_DMABase_CCR4                   ((uint16_t)0x0010)
-#define TIM_DMABase_BDTR                   ((uint16_t)0x0011)
-#define TIM_DMABase_DCR                    ((uint16_t)0x0012)
-#define TIM_DMABase_OR                     ((uint16_t)0x0013)
-#define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABase_CR1) || \
-                               ((BASE) == TIM_DMABase_CR2) || \
-                               ((BASE) == TIM_DMABase_SMCR) || \
-                               ((BASE) == TIM_DMABase_DIER) || \
-                               ((BASE) == TIM_DMABase_SR) || \
-                               ((BASE) == TIM_DMABase_EGR) || \
-                               ((BASE) == TIM_DMABase_CCMR1) || \
-                               ((BASE) == TIM_DMABase_CCMR2) || \
-                               ((BASE) == TIM_DMABase_CCER) || \
-                               ((BASE) == TIM_DMABase_CNT) || \
-                               ((BASE) == TIM_DMABase_PSC) || \
-                               ((BASE) == TIM_DMABase_ARR) || \
-                               ((BASE) == TIM_DMABase_RCR) || \
-                               ((BASE) == TIM_DMABase_CCR1) || \
-                               ((BASE) == TIM_DMABase_CCR2) || \
-                               ((BASE) == TIM_DMABase_CCR3) || \
-                               ((BASE) == TIM_DMABase_CCR4) || \
-                               ((BASE) == TIM_DMABase_BDTR) || \
-							   ((BASE) == TIM_DMABase_DCR) || \
-                               ((BASE) == TIM_DMABase_OR))
-/**
-  * @}
-  */ 
-
-
-/** @defgroup TIM_DMA_Burst_Length 
-  * @{
-  */
-
-#define TIM_DMABurstLength_1Transfer           ((uint16_t)0x0000)
-#define TIM_DMABurstLength_2Transfers          ((uint16_t)0x0100)
-#define TIM_DMABurstLength_3Transfers          ((uint16_t)0x0200)
-#define TIM_DMABurstLength_4Transfers          ((uint16_t)0x0300)
-#define TIM_DMABurstLength_5Transfers          ((uint16_t)0x0400)
-#define TIM_DMABurstLength_6Transfers          ((uint16_t)0x0500)
-#define TIM_DMABurstLength_7Transfers          ((uint16_t)0x0600)
-#define TIM_DMABurstLength_8Transfers          ((uint16_t)0x0700)
-#define TIM_DMABurstLength_9Transfers          ((uint16_t)0x0800)
-#define TIM_DMABurstLength_10Transfers         ((uint16_t)0x0900)
-#define TIM_DMABurstLength_11Transfers         ((uint16_t)0x0A00)
-#define TIM_DMABurstLength_12Transfers         ((uint16_t)0x0B00)
-#define TIM_DMABurstLength_13Transfers         ((uint16_t)0x0C00)
-#define TIM_DMABurstLength_14Transfers         ((uint16_t)0x0D00)
-#define TIM_DMABurstLength_15Transfers         ((uint16_t)0x0E00)
-#define TIM_DMABurstLength_16Transfers         ((uint16_t)0x0F00)
-#define TIM_DMABurstLength_17Transfers         ((uint16_t)0x1000)
-#define TIM_DMABurstLength_18Transfers         ((uint16_t)0x1100)
-#define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABurstLength_1Transfer) || \
-                                   ((LENGTH) == TIM_DMABurstLength_2Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_3Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_4Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_5Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_6Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_7Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_8Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_9Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_10Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_11Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_12Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_13Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_14Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_15Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_16Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_17Transfers) || \
-                                   ((LENGTH) == TIM_DMABurstLength_18Transfers))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_DMA_sources 
-  * @{
-  */
-
-#define TIM_DMA_Update                     ((uint16_t)0x0100)
-#define TIM_DMA_CC1                        ((uint16_t)0x0200)
-#define TIM_DMA_CC2                        ((uint16_t)0x0400)
-#define TIM_DMA_CC3                        ((uint16_t)0x0800)
-#define TIM_DMA_CC4                        ((uint16_t)0x1000)
-#define TIM_DMA_COM                        ((uint16_t)0x2000)
-#define TIM_DMA_Trigger                    ((uint16_t)0x4000)
-#define IS_TIM_DMA_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0x80FF) == 0x0000) && ((SOURCE) != 0x0000))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_External_Trigger_Prescaler 
-  * @{
-  */
-
-#define TIM_ExtTRGPSC_OFF                  ((uint16_t)0x0000)
-#define TIM_ExtTRGPSC_DIV2                 ((uint16_t)0x1000)
-#define TIM_ExtTRGPSC_DIV4                 ((uint16_t)0x2000)
-#define TIM_ExtTRGPSC_DIV8                 ((uint16_t)0x3000)
-#define IS_TIM_EXT_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ExtTRGPSC_OFF) || \
-                                         ((PRESCALER) == TIM_ExtTRGPSC_DIV2) || \
-                                         ((PRESCALER) == TIM_ExtTRGPSC_DIV4) || \
-                                         ((PRESCALER) == TIM_ExtTRGPSC_DIV8))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Internal_Trigger_Selection 
-  * @{
-  */
-
-#define TIM_TS_ITR0                        ((uint16_t)0x0000)
-#define TIM_TS_ITR1                        ((uint16_t)0x0010)
-#define TIM_TS_ITR2                        ((uint16_t)0x0020)
-#define TIM_TS_ITR3                        ((uint16_t)0x0030)
-#define TIM_TS_TI1F_ED                     ((uint16_t)0x0040)
-#define TIM_TS_TI1FP1                      ((uint16_t)0x0050)
-#define TIM_TS_TI2FP2                      ((uint16_t)0x0060)
-#define TIM_TS_ETRF                        ((uint16_t)0x0070)
-#define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
-                                             ((SELECTION) == TIM_TS_ITR1) || \
-                                             ((SELECTION) == TIM_TS_ITR2) || \
-                                             ((SELECTION) == TIM_TS_ITR3) || \
-                                             ((SELECTION) == TIM_TS_TI1F_ED) || \
-                                             ((SELECTION) == TIM_TS_TI1FP1) || \
-                                             ((SELECTION) == TIM_TS_TI2FP2) || \
-                                             ((SELECTION) == TIM_TS_ETRF))
-#define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
-                                                      ((SELECTION) == TIM_TS_ITR1) || \
-                                                      ((SELECTION) == TIM_TS_ITR2) || \
-                                                      ((SELECTION) == TIM_TS_ITR3))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_TIx_External_Clock_Source 
-  * @{
-  */
-
-#define TIM_TIxExternalCLK1Source_TI1      ((uint16_t)0x0050)
-#define TIM_TIxExternalCLK1Source_TI2      ((uint16_t)0x0060)
-#define TIM_TIxExternalCLK1Source_TI1ED    ((uint16_t)0x0040)
-
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_External_Trigger_Polarity 
-  * @{
-  */ 
-#define TIM_ExtTRGPolarity_Inverted        ((uint16_t)0x8000)
-#define TIM_ExtTRGPolarity_NonInverted     ((uint16_t)0x0000)
-#define IS_TIM_EXT_POLARITY(POLARITY) (((POLARITY) == TIM_ExtTRGPolarity_Inverted) || \
-                                       ((POLARITY) == TIM_ExtTRGPolarity_NonInverted))
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Prescaler_Reload_Mode 
-  * @{
-  */
-
-#define TIM_PSCReloadMode_Update           ((uint16_t)0x0000)
-#define TIM_PSCReloadMode_Immediate        ((uint16_t)0x0001)
-#define IS_TIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == TIM_PSCReloadMode_Update) || \
-                                         ((RELOAD) == TIM_PSCReloadMode_Immediate))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Forced_Action 
-  * @{
-  */
-
-#define TIM_ForcedAction_Active            ((uint16_t)0x0050)
-#define TIM_ForcedAction_InActive          ((uint16_t)0x0040)
-#define IS_TIM_FORCED_ACTION(ACTION) (((ACTION) == TIM_ForcedAction_Active) || \
-                                      ((ACTION) == TIM_ForcedAction_InActive))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Encoder_Mode 
-  * @{
-  */
-
-#define TIM_EncoderMode_TI1                ((uint16_t)0x0001)
-#define TIM_EncoderMode_TI2                ((uint16_t)0x0002)
-#define TIM_EncoderMode_TI12               ((uint16_t)0x0003)
-#define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_EncoderMode_TI1) || \
-                                   ((MODE) == TIM_EncoderMode_TI2) || \
-                                   ((MODE) == TIM_EncoderMode_TI12))
-/**
-  * @}
-  */ 
-
-
-/** @defgroup TIM_Event_Source 
-  * @{
-  */
-
-#define TIM_EventSource_Update             ((uint16_t)0x0001)
-#define TIM_EventSource_CC1                ((uint16_t)0x0002)
-#define TIM_EventSource_CC2                ((uint16_t)0x0004)
-#define TIM_EventSource_CC3                ((uint16_t)0x0008)
-#define TIM_EventSource_CC4                ((uint16_t)0x0010)
-#define TIM_EventSource_COM                ((uint16_t)0x0020)
-#define TIM_EventSource_Trigger            ((uint16_t)0x0040)
-#define TIM_EventSource_Break              ((uint16_t)0x0080)
-#define IS_TIM_EVENT_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0xFF00) == 0x0000) && ((SOURCE) != 0x0000))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Update_Source 
-  * @{
-  */
-
-#define TIM_UpdateSource_Global            ((uint16_t)0x0000) /*!< Source of update is the counter overflow/underflow
-                                                                   or the setting of UG bit, or an update generation
-                                                                   through the slave mode controller. */
-#define TIM_UpdateSource_Regular           ((uint16_t)0x0001) /*!< Source of update is counter overflow/underflow. */
-#define IS_TIM_UPDATE_SOURCE(SOURCE) (((SOURCE) == TIM_UpdateSource_Global) || \
-                                      ((SOURCE) == TIM_UpdateSource_Regular))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Output_Compare_Preload_State 
-  * @{
-  */
-
-#define TIM_OCPreload_Enable               ((uint16_t)0x0008)
-#define TIM_OCPreload_Disable              ((uint16_t)0x0000)
-#define IS_TIM_OCPRELOAD_STATE(STATE) (((STATE) == TIM_OCPreload_Enable) || \
-                                       ((STATE) == TIM_OCPreload_Disable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Output_Compare_Fast_State 
-  * @{
-  */
-
-#define TIM_OCFast_Enable                  ((uint16_t)0x0004)
-#define TIM_OCFast_Disable                 ((uint16_t)0x0000)
-#define IS_TIM_OCFAST_STATE(STATE) (((STATE) == TIM_OCFast_Enable) || \
-                                    ((STATE) == TIM_OCFast_Disable))
-                                     
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Output_Compare_Clear_State 
-  * @{
-  */
-
-#define TIM_OCClear_Enable                 ((uint16_t)0x0080)
-#define TIM_OCClear_Disable                ((uint16_t)0x0000)
-#define IS_TIM_OCCLEAR_STATE(STATE) (((STATE) == TIM_OCClear_Enable) || \
-                                     ((STATE) == TIM_OCClear_Disable))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Trigger_Output_Source 
-  * @{
-  */
-
-#define TIM_TRGOSource_Reset               ((uint16_t)0x0000)
-#define TIM_TRGOSource_Enable              ((uint16_t)0x0010)
-#define TIM_TRGOSource_Update              ((uint16_t)0x0020)
-#define TIM_TRGOSource_OC1                 ((uint16_t)0x0030)
-#define TIM_TRGOSource_OC1Ref              ((uint16_t)0x0040)
-#define TIM_TRGOSource_OC2Ref              ((uint16_t)0x0050)
-#define TIM_TRGOSource_OC3Ref              ((uint16_t)0x0060)
-#define TIM_TRGOSource_OC4Ref              ((uint16_t)0x0070)
-#define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGOSource_Reset) || \
-                                    ((SOURCE) == TIM_TRGOSource_Enable) || \
-                                    ((SOURCE) == TIM_TRGOSource_Update) || \
-                                    ((SOURCE) == TIM_TRGOSource_OC1) || \
-                                    ((SOURCE) == TIM_TRGOSource_OC1Ref) || \
-                                    ((SOURCE) == TIM_TRGOSource_OC2Ref) || \
-                                    ((SOURCE) == TIM_TRGOSource_OC3Ref) || \
-                                    ((SOURCE) == TIM_TRGOSource_OC4Ref))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Slave_Mode 
-  * @{
-  */
-
-#define TIM_SlaveMode_Reset                ((uint16_t)0x0004)
-#define TIM_SlaveMode_Gated                ((uint16_t)0x0005)
-#define TIM_SlaveMode_Trigger              ((uint16_t)0x0006)
-#define TIM_SlaveMode_External1            ((uint16_t)0x0007)
-#define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SlaveMode_Reset) || \
-                                 ((MODE) == TIM_SlaveMode_Gated) || \
-                                 ((MODE) == TIM_SlaveMode_Trigger) || \
-                                 ((MODE) == TIM_SlaveMode_External1))
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_Master_Slave_Mode 
-  * @{
-  */
-
-#define TIM_MasterSlaveMode_Enable         ((uint16_t)0x0080)
-#define TIM_MasterSlaveMode_Disable        ((uint16_t)0x0000)
-#define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MasterSlaveMode_Enable) || \
-                                 ((STATE) == TIM_MasterSlaveMode_Disable))
-/**
-  * @}
-  */ 
-  
-/** @defgroup TIM_Flags 
-  * @{
-  */
-
-#define TIM_FLAG_Update                    ((uint16_t)0x0001)
-#define TIM_FLAG_CC1                       ((uint16_t)0x0002)
-#define TIM_FLAG_CC2                       ((uint16_t)0x0004)
-#define TIM_FLAG_CC3                       ((uint16_t)0x0008)
-#define TIM_FLAG_CC4                       ((uint16_t)0x0010)
-#define TIM_FLAG_COM                       ((uint16_t)0x0020)
-#define TIM_FLAG_Trigger                   ((uint16_t)0x0040)
-#define TIM_FLAG_Break                     ((uint16_t)0x0080)
-#define TIM_FLAG_CC1OF                     ((uint16_t)0x0200)
-#define TIM_FLAG_CC2OF                     ((uint16_t)0x0400)
-#define TIM_FLAG_CC3OF                     ((uint16_t)0x0800)
-#define TIM_FLAG_CC4OF                     ((uint16_t)0x1000)
-#define IS_TIM_GET_FLAG(FLAG) (((FLAG) == TIM_FLAG_Update) || \
-                               ((FLAG) == TIM_FLAG_CC1) || \
-                               ((FLAG) == TIM_FLAG_CC2) || \
-                               ((FLAG) == TIM_FLAG_CC3) || \
-                               ((FLAG) == TIM_FLAG_CC4) || \
-                               ((FLAG) == TIM_FLAG_COM) || \
-                               ((FLAG) == TIM_FLAG_Trigger) || \
-                               ((FLAG) == TIM_FLAG_Break) || \
-                               ((FLAG) == TIM_FLAG_CC1OF) || \
-                               ((FLAG) == TIM_FLAG_CC2OF) || \
-                               ((FLAG) == TIM_FLAG_CC3OF) || \
-                               ((FLAG) == TIM_FLAG_CC4OF))
-                               
-                               
-#define IS_TIM_CLEAR_FLAG(TIM_FLAG) ((((TIM_FLAG) & (uint16_t)0xE100) == 0x0000) && ((TIM_FLAG) != 0x0000))
-/**
-  * @}
-  */ 
-
-
-/** @defgroup TIM_Input_Capture_Filer_Value 
-  * @{
-  */
-
-#define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF) 
-/**
-  * @}
-  */ 
-
-/** @defgroup TIM_External_Trigger_Filter 
-  * @{
-  */
-
-#define IS_TIM_EXT_FILTER(EXTFILTER) ((EXTFILTER) <= 0xF)
-/**
-  * @}
-  */
-
-/** @defgroup TIM_OCReferenceClear 
-  * @{
-  */
-#define TIM_OCReferenceClear_ETRF          ((uint16_t)0x0008)
-#define TIM_OCReferenceClear_OCREFCLR      ((uint16_t)0x0000)
-#define TIM_OCREFERENCECECLEAR_SOURCE(SOURCE) (((SOURCE) == TIM_OCReferenceClear_ETRF) || \
-                                              ((SOURCE) == TIM_OCReferenceClear_OCREFCLR)) 
-
-/**
-  * @}
-  */
-/** @defgroup TIM_Remap 
-  * @{
-  */
-#define TIM14_GPIO                      ((uint16_t)0x0000)
-#define TIM14_RTC_CLK                   ((uint16_t)0x0001)
-#define TIM14_HSEDiv32                  ((uint16_t)0x0002)
-#define TIM14_MCO                       ((uint16_t)0x0003)
-
-#define IS_TIM_REMAP(TIM_REMAP)  (((TIM_REMAP) == TIM14_GPIO)|| \
-                                  ((TIM_REMAP) == TIM14_RTC_CLK) || \
-                                  ((TIM_REMAP) == TIM14_HSEDiv32) || \
-                                  ((TIM_REMAP) == TIM14_MCO))
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Legacy 
-  * @{
-  */
-
-#define TIM_DMABurstLength_1Byte           TIM_DMABurstLength_1Transfer
-#define TIM_DMABurstLength_2Bytes          TIM_DMABurstLength_2Transfers
-#define TIM_DMABurstLength_3Bytes          TIM_DMABurstLength_3Transfers
-#define TIM_DMABurstLength_4Bytes          TIM_DMABurstLength_4Transfers
-#define TIM_DMABurstLength_5Bytes          TIM_DMABurstLength_5Transfers
-#define TIM_DMABurstLength_6Bytes          TIM_DMABurstLength_6Transfers
-#define TIM_DMABurstLength_7Bytes          TIM_DMABurstLength_7Transfers
-#define TIM_DMABurstLength_8Bytes          TIM_DMABurstLength_8Transfers
-#define TIM_DMABurstLength_9Bytes          TIM_DMABurstLength_9Transfers
-#define TIM_DMABurstLength_10Bytes         TIM_DMABurstLength_10Transfers
-#define TIM_DMABurstLength_11Bytes         TIM_DMABurstLength_11Transfers
-#define TIM_DMABurstLength_12Bytes         TIM_DMABurstLength_12Transfers
-#define TIM_DMABurstLength_13Bytes         TIM_DMABurstLength_13Transfers
-#define TIM_DMABurstLength_14Bytes         TIM_DMABurstLength_14Transfers
-#define TIM_DMABurstLength_15Bytes         TIM_DMABurstLength_15Transfers
-#define TIM_DMABurstLength_16Bytes         TIM_DMABurstLength_16Transfers
-#define TIM_DMABurstLength_17Bytes         TIM_DMABurstLength_17Transfers
-#define TIM_DMABurstLength_18Bytes         TIM_DMABurstLength_18Transfers
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-  
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-/* TimeBase management ********************************************************/
-void TIM_DeInit(TIM_TypeDef* TIMx);
-void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
-void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
-void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);
-void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);
-void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter);
-void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload);
-uint32_t TIM_GetCounter(TIM_TypeDef* TIMx);
-uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
-void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
-void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource);
-void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
-void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode);
-void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD);
-void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
-
-/* Advanced-control timers (TIM1) specific features*******************/
-void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct);
-void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);
-void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
-
-/* Output Compare management **************************************************/
-void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
-void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
-void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
-void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
-void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);
-void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);
-void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1);
-void TIM_SetCompare2(TIM_TypeDef* TIMx, uint32_t Compare2);
-void TIM_SetCompare3(TIM_TypeDef* TIMx, uint32_t Compare3);
-void TIM_SetCompare4(TIM_TypeDef* TIMx, uint32_t Compare4);
-void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
-void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
-void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
-void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
-void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState);
-void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
-void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
-void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
-void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
-void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
-void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
-void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
-void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
-void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
-void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
-void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
-void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
-void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
-void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
-void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
-void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
-void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
-void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
-void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
-void TIM_SelectOCREFClear(TIM_TypeDef* TIMx, uint16_t TIM_OCReferenceClear);
-void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
-void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);
-void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState);
-
-/* Input Capture management ***************************************************/
-void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
-void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
-void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
-uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);
-uint32_t TIM_GetCapture2(TIM_TypeDef* TIMx);
-uint32_t TIM_GetCapture3(TIM_TypeDef* TIMx);
-uint32_t TIM_GetCapture4(TIM_TypeDef* TIMx);
-void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
-void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
-void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
-void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
-
-/* Interrupts, DMA and flags management ***************************************/
-void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
-void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource);
-FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
-void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
-ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
-void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
-void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength);
-void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState);
-void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState);
-
-/* Clocks management **********************************************************/
-void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
-void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
-void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,
-                                uint16_t TIM_ICPolarity, uint16_t ICFilter);
-void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
-                             uint16_t ExtTRGFilter);
-void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, 
-                             uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
-
-
-/* Synchronization management *************************************************/
-void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
-void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);
-void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
-void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode);
-void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
-                   uint16_t ExtTRGFilter);
-
-/* Specific interface management **********************************************/                   
-void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,
-                                uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
-void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState);
-
-/* Specific remapping management **********************************************/
-void TIM_RemapConfig(TIM_TypeDef* TIMx, uint16_t TIM_Remap);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__STM32F0XX_TIM_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_usart.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_usart.h
deleted file mode 100644
index c9d170a..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_usart.h	
+++ /dev/null
@@ -1,599 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_usart.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the USART 
-  *          firmware library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_USART_H
-#define __STM32F0XX_USART_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup USART
-  * @{
-  */ 
-
-/* Exported types ------------------------------------------------------------*/
-
-   
-   
-/** 
-  * @brief  USART Init Structure definition  
-  */ 
-
-typedef struct
-{
-  uint32_t USART_BaudRate;            /*!< This member configures the USART communication baud rate.
-                                           The baud rate is computed using the following formula:
-                                            - IntegerDivider = ((PCLKx) / (16 * (USART_InitStruct->USART_BaudRate)))
-                                            - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */
-
-  uint32_t USART_WordLength;          /*!< Specifies the number of data bits transmitted or received in a frame.
-                                           This parameter can be a value of @ref USART_Word_Length */
-
-  uint32_t USART_StopBits;            /*!< Specifies the number of stop bits transmitted.
-                                           This parameter can be a value of @ref USART_Stop_Bits */
-
-  uint32_t USART_Parity;              /*!< Specifies the parity mode.
-                                           This parameter can be a value of @ref USART_Parity
-                                           @note When parity is enabled, the computed parity is inserted
-                                                 at the MSB position of the transmitted data (9th bit when
-                                                 the word length is set to 9 data bits; 8th bit when the
-                                                 word length is set to 8 data bits). */
- 
-  uint32_t USART_Mode;                /*!< Specifies wether the Receive or Transmit mode is enabled or disabled.
-                                           This parameter can be a value of @ref USART_Mode */
-
-  uint32_t USART_HardwareFlowControl; /*!< Specifies wether the hardware flow control mode is enabled
-                                           or disabled.
-                                           This parameter can be a value of @ref USART_Hardware_Flow_Control*/
-} USART_InitTypeDef;
-
-/** 
-  * @brief  USART Clock Init Structure definition
-  */ 
-
-typedef struct
-{
-  uint32_t USART_Clock;             /*!< Specifies whether the USART clock is enabled or disabled.
-                                         This parameter can be a value of @ref USART_Clock */
-
-  uint32_t USART_CPOL;              /*!< Specifies the steady state of the serial clock.
-                                         This parameter can be a value of @ref USART_Clock_Polarity */
-
-  uint32_t USART_CPHA;              /*!< Specifies the clock transition on which the bit capture is made.
-                                         This parameter can be a value of @ref USART_Clock_Phase */
-
-  uint32_t USART_LastBit;           /*!< Specifies whether the clock pulse corresponding to the last transmitted
-                                         data bit (MSB) has to be output on the SCLK pin in synchronous mode.
-                                         This parameter can be a value of @ref USART_Last_Bit */
-} USART_ClockInitTypeDef;
-
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup USART_Exported_Constants
-  * @{
-  */ 
-
-#define IS_USART_ALL_PERIPH(PERIPH) (((PERIPH) == USART1) || \
-                                     ((PERIPH) == USART2) || \
-                                     ((PERIPH) == USART3) || \
-                                     ((PERIPH) == USART4))
-
-#define IS_USART_12_PERIPH(PERIPH) (((PERIPH) == USART1) || \
-                                    ((PERIPH) == USART2))
-
-/** @defgroup USART_Word_Length 
-  * @{
-  */ 
-
-#define USART_WordLength_8b                  ((uint32_t)0x00000000)
-#define USART_WordLength_9b                  USART_CR1_M /* should be ((uint32_t)0x00001000) */
-#define USART_WordLength_7b                  ((uint32_t)0x10001000) /*!< only available for STM32F072 and STM32F030 devices */
-#define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \
-                                      ((LENGTH) == USART_WordLength_9b) || \
-                                      ((LENGTH) == USART_WordLength_7b))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Stop_Bits 
-  * @{
-  */ 
-
-#define USART_StopBits_1                     ((uint32_t)0x00000000)
-#define USART_StopBits_2                     USART_CR2_STOP_1
-#define USART_StopBits_1_5                   (USART_CR2_STOP_0 | USART_CR2_STOP_1)
-#define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \
-                                     ((STOPBITS) == USART_StopBits_2) || \
-                                     ((STOPBITS) == USART_StopBits_1_5))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Parity 
-  * @{
-  */ 
-
-#define USART_Parity_No                      ((uint32_t)0x00000000)
-#define USART_Parity_Even                    USART_CR1_PCE
-#define USART_Parity_Odd                     (USART_CR1_PCE | USART_CR1_PS) 
-#define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \
-                                 ((PARITY) == USART_Parity_Even) || \
-                                 ((PARITY) == USART_Parity_Odd))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Mode 
-  * @{
-  */ 
-
-#define USART_Mode_Rx                        USART_CR1_RE
-#define USART_Mode_Tx                        USART_CR1_TE
-#define IS_USART_MODE(MODE) ((((MODE) & (uint32_t)0xFFFFFFF3) == 0x00) && \
-                              ((MODE) != (uint32_t)0x00))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Hardware_Flow_Control 
-  * @{
-  */ 
-
-#define USART_HardwareFlowControl_None       ((uint32_t)0x00000000)
-#define USART_HardwareFlowControl_RTS        USART_CR3_RTSE
-#define USART_HardwareFlowControl_CTS        USART_CR3_CTSE
-#define USART_HardwareFlowControl_RTS_CTS    (USART_CR3_RTSE | USART_CR3_CTSE)
-#define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\
-                              (((CONTROL) == USART_HardwareFlowControl_None) || \
-                               ((CONTROL) == USART_HardwareFlowControl_RTS) || \
-                               ((CONTROL) == USART_HardwareFlowControl_CTS) || \
-                               ((CONTROL) == USART_HardwareFlowControl_RTS_CTS))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Clock 
-  * @{
-  */ 
-  
-#define USART_Clock_Disable                  ((uint32_t)0x00000000)
-#define USART_Clock_Enable                   USART_CR2_CLKEN
-#define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_Clock_Disable) || \
-                               ((CLOCK) == USART_Clock_Enable))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Clock_Polarity 
-  * @{
-  */
-  
-#define USART_CPOL_Low                       ((uint32_t)0x00000000)
-#define USART_CPOL_High                      USART_CR2_CPOL
-#define IS_USART_CPOL(CPOL) (((CPOL) == USART_CPOL_Low) || ((CPOL) == USART_CPOL_High))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Clock_Phase
-  * @{
-  */
-
-#define USART_CPHA_1Edge                     ((uint32_t)0x00000000)
-#define USART_CPHA_2Edge                     USART_CR2_CPHA
-#define IS_USART_CPHA(CPHA) (((CPHA) == USART_CPHA_1Edge) || ((CPHA) == USART_CPHA_2Edge))
-
-/**
-  * @}
-  */
-
-/** @defgroup USART_Last_Bit
-  * @{
-  */
-
-#define USART_LastBit_Disable                ((uint32_t)0x00000000)
-#define USART_LastBit_Enable                 USART_CR2_LBCL
-#define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LastBit_Disable) || \
-                                   ((LASTBIT) == USART_LastBit_Enable))
-/**
-  * @}
-  */
-  
-/** @defgroup USART_DMA_Requests 
-  * @{
-  */
-
-#define USART_DMAReq_Tx                      USART_CR3_DMAT
-#define USART_DMAReq_Rx                      USART_CR3_DMAR
-#define IS_USART_DMAREQ(DMAREQ) ((((DMAREQ) & (uint32_t)0xFFFFFF3F) == 0x00) && \
-                                  ((DMAREQ) != (uint32_t)0x00))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_DMA_Recception_Error
-  * @{
-  */
-
-#define USART_DMAOnError_Enable              ((uint32_t)0x00000000)
-#define USART_DMAOnError_Disable             USART_CR3_DDRE
-#define IS_USART_DMAONERROR(DMAERROR) (((DMAERROR) == USART_DMAOnError_Disable)|| \
-                                       ((DMAERROR) == USART_DMAOnError_Enable))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_MuteMode_WakeUp_methods
-  * @{
-  */
-
-#define USART_WakeUp_IdleLine                ((uint32_t)0x00000000)
-#define USART_WakeUp_AddressMark             USART_CR1_WAKE
-#define IS_USART_MUTEMODE_WAKEUP(WAKEUP) (((WAKEUP) == USART_WakeUp_IdleLine) || \
-                                          ((WAKEUP) == USART_WakeUp_AddressMark))
-/**
-  * @}
-  */
-
-/** @defgroup USART_Address_Detection
-  * @{
-  */ 
-
-#define USART_AddressLength_4b               ((uint32_t)0x00000000)
-#define USART_AddressLength_7b               USART_CR2_ADDM7
-#define IS_USART_ADDRESS_DETECTION(ADDRESS) (((ADDRESS) == USART_AddressLength_4b) || \
-                                             ((ADDRESS) == USART_AddressLength_7b))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_StopMode_WakeUp_methods
-  * @note     These parameters are only available for STM32F051 and STM32F072 devices 
-  * @{
-  */ 
-
-#define USART_WakeUpSource_AddressMatch      ((uint32_t)0x00000000)
-#define USART_WakeUpSource_StartBit          USART_CR3_WUS_1
-#define USART_WakeUpSource_RXNE              (USART_CR3_WUS_0 | USART_CR3_WUS_1)
-#define IS_USART_STOPMODE_WAKEUPSOURCE(SOURCE) (((SOURCE) == USART_WakeUpSource_AddressMatch) || \
-                                                ((SOURCE) == USART_WakeUpSource_StartBit) || \
-                                                ((SOURCE) == USART_WakeUpSource_RXNE))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_LIN_Break_Detection_Length 
-  * @{
-  */
-  
-#define USART_LINBreakDetectLength_10b       ((uint32_t)0x00000000)
-#define USART_LINBreakDetectLength_11b       USART_CR2_LBDL
-#define IS_USART_LIN_BREAK_DETECT_LENGTH(LENGTH) \
-                               (((LENGTH) == USART_LINBreakDetectLength_10b) || \
-                                ((LENGTH) == USART_LINBreakDetectLength_11b))
-/**
-  * @}
-  */
-
-/** @defgroup USART_IrDA_Low_Power 
-  * @{
-  */
-
-#define USART_IrDAMode_LowPower              USART_CR3_IRLP
-#define USART_IrDAMode_Normal                ((uint32_t)0x00000000)
-#define IS_USART_IRDA_MODE(MODE) (((MODE) == USART_IrDAMode_LowPower) || \
-                                  ((MODE) == USART_IrDAMode_Normal))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_DE_Polarity 
-  * @{
-  */
-
-#define USART_DEPolarity_High                ((uint32_t)0x00000000)
-#define USART_DEPolarity_Low                 USART_CR3_DEP
-#define IS_USART_DE_POLARITY(POLARITY) (((POLARITY) == USART_DEPolarity_Low) || \
-                                        ((POLARITY) == USART_DEPolarity_High))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Inversion_Pins 
-  * @{
-  */
-
-#define USART_InvPin_Tx                      USART_CR2_TXINV
-#define USART_InvPin_Rx                      USART_CR2_RXINV
-#define IS_USART_INVERSTION_PIN(PIN) ((((PIN) & (uint32_t)0xFFFCFFFF) == 0x00) && \
-                                       ((PIN) != (uint32_t)0x00))
-
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_AutoBaudRate_Mode 
-  * @{
-  */
-
-#define USART_AutoBaudRate_StartBit          ((uint32_t)0x00000000)
-#define USART_AutoBaudRate_FallingEdge       USART_CR2_ABRMODE_0
-#define IS_USART_AUTOBAUDRATE_MODE(MODE) (((MODE) == USART_AutoBaudRate_StartBit) || \
-                                          ((MODE) == USART_AutoBaudRate_FallingEdge))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_OVR_DETECTION
-  * @{
-  */
-
-#define USART_OVRDetection_Enable            ((uint32_t)0x00000000)
-#define USART_OVRDetection_Disable           USART_CR3_OVRDIS
-#define IS_USART_OVRDETECTION(OVR) (((OVR) == USART_OVRDetection_Enable)|| \
-                                    ((OVR) == USART_OVRDetection_Disable))
-/**
-  * @}
-  */ 
-/** @defgroup USART_Request 
-  * @{
-  */
-
-#define USART_Request_ABRRQ                  USART_RQR_ABRRQ
-#define USART_Request_SBKRQ                  USART_RQR_SBKRQ
-#define USART_Request_MMRQ                   USART_RQR_MMRQ
-#define USART_Request_RXFRQ                  USART_RQR_RXFRQ
-#define USART_Request_TXFRQ                  USART_RQR_TXFRQ
-
-#define IS_USART_REQUEST(REQUEST) (((REQUEST) == USART_Request_TXFRQ) || \
-                                   ((REQUEST) == USART_Request_RXFRQ) || \
-                                   ((REQUEST) == USART_Request_MMRQ) || \
-                                   ((REQUEST) == USART_Request_SBKRQ) || \
-                                   ((REQUEST) == USART_Request_ABRRQ))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Flags 
-  * @{
-  */
-#define USART_FLAG_REACK                     USART_ISR_REACK
-#define USART_FLAG_TEACK                     USART_ISR_TEACK
-#define USART_FLAG_WU                        USART_ISR_WUF /*!< Not available for  STM32F030 devices */
-#define USART_FLAG_RWU                       USART_ISR_RWU /*!< Not available for  STM32F030 devices */
-#define USART_FLAG_SBK                       USART_ISR_SBKF
-#define USART_FLAG_CM                        USART_ISR_CMF
-#define USART_FLAG_BUSY                      USART_ISR_BUSY
-#define USART_FLAG_ABRF                      USART_ISR_ABRF
-#define USART_FLAG_ABRE                      USART_ISR_ABRE
-#define USART_FLAG_EOB                       USART_ISR_EOBF /*!< Not available for  STM32F030 devices */
-#define USART_FLAG_RTO                       USART_ISR_RTOF
-#define USART_FLAG_nCTSS                     USART_ISR_CTS 
-#define USART_FLAG_CTS                       USART_ISR_CTSIF
-#define USART_FLAG_LBD                       USART_ISR_LBD /*!< Not available for  STM32F030 devices */
-#define USART_FLAG_TXE                       USART_ISR_TXE
-#define USART_FLAG_TC                        USART_ISR_TC
-#define USART_FLAG_RXNE                      USART_ISR_RXNE
-#define USART_FLAG_IDLE                      USART_ISR_IDLE
-#define USART_FLAG_ORE                       USART_ISR_ORE
-#define USART_FLAG_NE                        USART_ISR_NE
-#define USART_FLAG_FE                        USART_ISR_FE
-#define USART_FLAG_PE                        USART_ISR_PE
-#define IS_USART_FLAG(FLAG) (((FLAG) == USART_FLAG_PE) || ((FLAG) == USART_FLAG_TXE) || \
-                             ((FLAG) == USART_FLAG_TC) || ((FLAG) == USART_FLAG_RXNE) || \
-                             ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_LBD) || \
-                             ((FLAG) == USART_FLAG_CTS) || ((FLAG) == USART_FLAG_ORE) || \
-                             ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE) || \
-                             ((FLAG) == USART_FLAG_nCTSS) || ((FLAG) == USART_FLAG_RTO) || \
-                             ((FLAG) == USART_FLAG_EOB) || ((FLAG) == USART_FLAG_ABRE) || \
-                             ((FLAG) == USART_FLAG_ABRF) || ((FLAG) == USART_FLAG_BUSY) || \
-                             ((FLAG) == USART_FLAG_CM) || ((FLAG) == USART_FLAG_SBK) || \
-                             ((FLAG) == USART_FLAG_RWU) || ((FLAG) == USART_FLAG_WU) || \
-                             ((FLAG) == USART_FLAG_TEACK)|| ((FLAG) == USART_FLAG_REACK))
-
-#define IS_USART_CLEAR_FLAG(FLAG) (((FLAG) == USART_FLAG_WU) || ((FLAG) == USART_FLAG_TC) || \
-                                   ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_ORE) || \
-                                   ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE) || \
-                                   ((FLAG) == USART_FLAG_LBD) || ((FLAG) == USART_FLAG_CTS) || \
-                                   ((FLAG) == USART_FLAG_RTO) || ((FLAG) == USART_FLAG_EOB) || \
-                                   ((FLAG) == USART_FLAG_CM) || ((FLAG) == USART_FLAG_PE))
-/**
-  * @}
-  */ 
-
-/** @defgroup USART_Interrupt_definition 
-  * @brief USART Interrupt definition
-  * USART_IT possible values
-  * Elements values convention: 0xZZZZYYXX
-  *   XX: Position of the corresponding Interrupt
-  *   YY: Register index
-  *   ZZZZ: Flag position
-  * @{
-  */
-
-#define USART_IT_WU                          ((uint32_t)0x00140316) /*!< Not available for  STM32F030 devices */
-#define USART_IT_CM                          ((uint32_t)0x0011010E)
-#define USART_IT_EOB                         ((uint32_t)0x000C011B) /*!< Not available for  STM32F030 devices */
-#define USART_IT_RTO                         ((uint32_t)0x000B011A)
-#define USART_IT_PE                          ((uint32_t)0x00000108)
-#define USART_IT_TXE                         ((uint32_t)0x00070107)
-#define USART_IT_TC                          ((uint32_t)0x00060106)
-#define USART_IT_RXNE                        ((uint32_t)0x00050105)
-#define USART_IT_IDLE                        ((uint32_t)0x00040104)
-#define USART_IT_LBD                         ((uint32_t)0x00080206) /*!< Not available for  STM32F030 devices */
-#define USART_IT_CTS                         ((uint32_t)0x0009030A) 
-#define USART_IT_ERR                         ((uint32_t)0x00000300)
-#define USART_IT_ORE                         ((uint32_t)0x00030300)
-#define USART_IT_NE                          ((uint32_t)0x00020300)
-#define USART_IT_FE                          ((uint32_t)0x00010300)
-
-#define IS_USART_CONFIG_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \
-                                ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \
-                                ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \
-                                ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ERR) || \
-                                ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \
-                                ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU))
-
-#define IS_USART_GET_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \
-                             ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \
-                             ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \
-                             ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ORE) || \
-                             ((IT) == USART_IT_NE) || ((IT) == USART_IT_FE) || \
-                             ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \
-                             ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU))
-
-#define IS_USART_CLEAR_IT(IT) (((IT) == USART_IT_TC) || ((IT) == USART_IT_PE) || \
-                               ((IT) == USART_IT_FE) || ((IT) == USART_IT_NE) || \
-                               ((IT) == USART_IT_ORE) || ((IT) == USART_IT_IDLE) || \
-                               ((IT) == USART_IT_LBD) || ((IT) == USART_IT_CTS) || \
-                               ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \
-                               ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU))
-/**
-  * @}
-  */
-
-/** @defgroup USART_Global_definition 
-  * @{
-  */
-
-#define IS_USART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x005B8D81))
-#define IS_USART_DE_ASSERTION_DEASSERTION_TIME(TIME) ((TIME) <= 0x1F)
-#define IS_USART_AUTO_RETRY_COUNTER(COUNTER) ((COUNTER) <= 0x7)
-#define IS_USART_TIMEOUT(TIMEOUT) ((TIMEOUT) <= 0x00FFFFFF)
-#define IS_USART_DATA(DATA) ((DATA) <= 0x1FF)
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-/* Initialization and Configuration functions *********************************/
-void USART_DeInit(USART_TypeDef* USARTx);
-void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
-void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
-void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
-void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);
-void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_DirectionModeCmd(USART_TypeDef* USARTx, uint32_t USART_DirectionMode, FunctionalState NewState);
-void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler); /* Not available for STM32F030 devices */
-void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_MSBFirstCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_DataInvCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_InvPinCmd(USART_TypeDef* USARTx, uint32_t USART_InvPin, FunctionalState NewState);
-void USART_SWAPPinCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_ReceiverTimeOutCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_SetReceiverTimeOut(USART_TypeDef* USARTx, uint32_t USART_ReceiverTimeOut);
-
-/* STOP Mode functions ********************************************************/
-void USART_STOPModeCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_StopModeWakeUpSourceConfig(USART_TypeDef* USARTx, uint32_t USART_WakeUpSource); /* Not available for STM32F030 devices */
-
-/* AutoBaudRate functions *****************************************************/
-void USART_AutoBaudRateCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_AutoBaudRateConfig(USART_TypeDef* USARTx, uint32_t USART_AutoBaudRate);
-
-/* Data transfers functions ***************************************************/
-void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
-uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
-
-/* Multi-Processor Communication functions ************************************/
-void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);
-void USART_MuteModeWakeUpConfig(USART_TypeDef* USARTx, uint32_t USART_WakeUp);
-void USART_MuteModeCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_AddressDetectionConfig(USART_TypeDef* USARTx, uint32_t USART_AddressLength);
-
-/* LIN mode functions *********************************************************/
-void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint32_t USART_LINBreakDetectLength); /* Not available for STM32F030 devices */
-void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState); /* Not available for STM32F030 devices */
-
-/* Half-duplex mode function **************************************************/
-void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);
-
-/* Smartcard mode functions ***************************************************/
-void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState); /* Not available for STM32F030 devices */
-void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState); /* Not available for STM32F030 devices */
-void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime); /* Not available for STM32F030 devices */
-void USART_SetAutoRetryCount(USART_TypeDef* USARTx, uint8_t USART_AutoCount); /* Not available for STM32F030 devices */
-void USART_SetBlockLength(USART_TypeDef* USARTx, uint8_t USART_BlockLength); /* Not available for STM32F030 devices */
-
-/* IrDA mode functions ********************************************************/
-void USART_IrDAConfig(USART_TypeDef* USARTx, uint32_t USART_IrDAMode); /* Not available for STM32F030 devices */
-void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState); /* Not available for STM32F030 devices */
-
-/* RS485 mode functions *******************************************************/
-void USART_DECmd(USART_TypeDef* USARTx, FunctionalState NewState);
-void USART_DEPolarityConfig(USART_TypeDef* USARTx, uint32_t USART_DEPolarity);
-void USART_SetDEAssertionTime(USART_TypeDef* USARTx, uint32_t USART_DEAssertionTime);
-void USART_SetDEDeassertionTime(USART_TypeDef* USARTx, uint32_t USART_DEDeassertionTime);
-
-/* DMA transfers management functions *****************************************/
-void USART_DMACmd(USART_TypeDef* USARTx, uint32_t USART_DMAReq, FunctionalState NewState);
-void USART_DMAReceptionErrorConfig(USART_TypeDef* USARTx, uint32_t USART_DMAOnError);
-
-/* Interrupts and flags management functions **********************************/
-void USART_ITConfig(USART_TypeDef* USARTx, uint32_t USART_IT, FunctionalState NewState);
-void USART_RequestCmd(USART_TypeDef* USARTx, uint32_t USART_Request, FunctionalState NewState);
-void USART_OverrunDetectionConfig(USART_TypeDef* USARTx, uint32_t USART_OVRDetection);
-FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint32_t USART_FLAG);
-void USART_ClearFlag(USART_TypeDef* USARTx, uint32_t USART_FLAG);
-ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint32_t USART_IT);
-void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint32_t USART_IT);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_USART_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_wwdg.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_wwdg.h
deleted file mode 100644
index 49defe5..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_wwdg.h	
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_wwdg.h
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file contains all the functions prototypes for the WWDG 
-  *          firmware library.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_WWDG_H
-#define __STM32F0XX_WWDG_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @addtogroup WWDG
-  * @{
-  */ 
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-/** @defgroup WWDG_Exported_Constants
-  * @{
-  */ 
-  
-/** @defgroup WWDG_Prescaler 
-  * @{
-  */ 
-  
-#define WWDG_Prescaler_1    ((uint32_t)0x00000000)
-#define WWDG_Prescaler_2    ((uint32_t)0x00000080)
-#define WWDG_Prescaler_4    ((uint32_t)0x00000100)
-#define WWDG_Prescaler_8    ((uint32_t)0x00000180)
-#define IS_WWDG_PRESCALER(PRESCALER) (((PRESCALER) == WWDG_Prescaler_1) || \
-                                      ((PRESCALER) == WWDG_Prescaler_2) || \
-                                      ((PRESCALER) == WWDG_Prescaler_4) || \
-                                      ((PRESCALER) == WWDG_Prescaler_8))
-#define IS_WWDG_WINDOW_VALUE(VALUE) ((VALUE) <= 0x7F)
-#define IS_WWDG_COUNTER(COUNTER) (((COUNTER) >= 0x40) && ((COUNTER) <= 0x7F))
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-/*  Function used to set the WWDG configuration to the default reset state ****/  
-void WWDG_DeInit(void);
-
-/* Prescaler, Refresh window and Counter configuration functions **************/
-void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);
-void WWDG_SetWindowValue(uint8_t WindowValue);
-void WWDG_EnableIT(void);
-void WWDG_SetCounter(uint8_t Counter);
-
-/* WWDG activation functions **************************************************/
-void WWDG_Enable(uint8_t Counter);
-
-/* Interrupts and flags management functions **********************************/
-FlagStatus WWDG_GetFlagStatus(void);
-void WWDG_ClearFlag(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0XX_WWDG_H */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_adc.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_adc.c
deleted file mode 100644
index 0a8c56d..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_adc.c	
+++ /dev/null
@@ -1,1240 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_adc.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Analog to Digital Convertor (ADC) peripheral:
-  *           + Initialization and Configuration
-  *           + Power saving
-  *           + Analog Watchdog configuration
-  *           + Temperature Sensor, Vrefint (Internal Reference Voltage) and 
-  *             Vbat (Voltage battery) management 
-  *           + ADC Channels Configuration
-  *           + ADC Channels DMA Configuration
-  *           + Interrupts and flags management
-  *
-  *  @verbatim
-================================================================================
-                      ##### How to use this driver #####
-================================================================================
-    [..]
-    (#) Enable the ADC interface clock using 
-        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); 
-    (#) ADC pins configuration
-       (++) Enable the clock for the ADC GPIOs using the following function:
-            RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOx, ENABLE);   
-       (++) Configure these ADC pins in analog mode using GPIO_Init();  
-    (#) Configure the ADC conversion resolution, data alignment, external
-        trigger and edge, scan direction and Enable/Disable the continuous mode
-        using the ADC_Init() function.
-    (#) Activate the ADC peripheral using ADC_Cmd() function.
-
-    *** ADC channels group configuration ***
-    ============================================
-    [..] 
-    (+) To configure the ADC channels features, use ADC_Init() and 
-        ADC_ChannelConfig() functions.
-    (+) To activate the continuous mode, use the ADC_ContinuousModeCmd()
-        function.
-    (+) To activate the Discontinuous mode, use the ADC_DiscModeCmd() functions. 
-    (+) To activate the overrun mode, use the ADC_OverrunModeCmd() functions.
-    (+) To activate the calibration mode, use the ADC_GetCalibrationFactor() functions.
-    (+) To read the ADC converted values, use the ADC_GetConversionValue()
-        function.
-
-    *** DMA for ADC channels features configuration ***
-    =============================================================
-    [..] 
-    (+) To enable the DMA mode for ADC channels group, use the ADC_DMACmd() function.
-    (+) To configure the DMA transfer request, use ADC_DMARequestModeConfig() function.
-
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_adc.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup ADC 
-  * @brief ADC driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* ADC CFGR mask */
-#define CFGR1_CLEAR_MASK           ((uint32_t)0xFFFFD203)
-
-/* Calibration time out */
-#define CALIBRATION_TIMEOUT       ((uint32_t)0x0000F000)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup ADC_Private_Functions
-  * @{
-  */
-
-/** @defgroup ADC_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions 
- *
-@verbatim
- ===============================================================================
-          ##### Initialization and Configuration functions #####
- ===============================================================================
-    [..] This section provides functions allowing to:
-        (+) Initialize and configure the ADC Prescaler
-        (+) ADC Conversion Resolution (12bit..6bit)
-        (+) ADC Continuous Conversion Mode (Continuous or Single conversion)
-        (+) External trigger Edge and source 
-        (+) Converted data alignment (left or right)
-        (+) The direction in which the channels will be scanned in the sequence
-        (+) Enable or disable the ADC peripheral
-   
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes ADC1 peripheral registers to their default reset values.
-  * @param  ADCx: where x can be 1 to select the ADC peripheral.
-  * @retval None
-  */
-void ADC_DeInit(ADC_TypeDef* ADCx)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-
-  if(ADCx == ADC1)
-  {
-    /* Enable ADC1 reset state */
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, ENABLE);
-
-    /* Release ADC1 from reset state */
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, DISABLE);
-  }
-}
-
-/**
-  * @brief  Initializes the ADCx peripheral according to the specified parameters
-  *         in the ADC_InitStruct.
-  * @note   This function is used to configure the global features of the ADC ( 
-  *         Resolution, Data Alignment, continuous mode activation, External 
-  *         trigger source and edge, Sequence Scan Direction).   
-  * @param  ADCx: where x can be 1 to select the ADC peripheral.
-  * @param  ADC_InitStruct: pointer to an ADC_InitTypeDef structure that contains 
-  *         the configuration information for the specified ADC peripheral.
-  * @retval None
-  */
-void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_RESOLUTION(ADC_InitStruct->ADC_Resolution));
-  assert_param(IS_FUNCTIONAL_STATE(ADC_InitStruct->ADC_ContinuousConvMode));
-  assert_param(IS_ADC_EXT_TRIG_EDGE(ADC_InitStruct->ADC_ExternalTrigConvEdge));
-  assert_param(IS_ADC_EXTERNAL_TRIG_CONV(ADC_InitStruct->ADC_ExternalTrigConv));
-  assert_param(IS_ADC_DATA_ALIGN(ADC_InitStruct->ADC_DataAlign));
-  assert_param(IS_ADC_SCAN_DIRECTION(ADC_InitStruct->ADC_ScanDirection)); 
-
-  /* Get the ADCx CFGR value */
-  tmpreg = ADCx->CFGR1;
-
-  /* Clear SCANDIR, RES[1:0], ALIGN, EXTSEL[2:0], EXTEN[1:0] and CONT bits */
-  tmpreg &= CFGR1_CLEAR_MASK;
-
-  /*---------------------------- ADCx CFGR Configuration ---------------------*/
-
-  /* Set RES[1:0] bits according to ADC_Resolution value */
-  /* Set CONT bit according to ADC_ContinuousConvMode value */
-  /* Set EXTEN[1:0] bits according to ADC_ExternalTrigConvEdge value */
-  /* Set EXTSEL[2:0] bits according to ADC_ExternalTrigConv value */
-  /* Set ALIGN bit according to ADC_DataAlign value */
-  /* Set SCANDIR bit according to ADC_ScanDirection value */
- 
-  tmpreg  |= (uint32_t)(ADC_InitStruct->ADC_Resolution | ((uint32_t)(ADC_InitStruct->ADC_ContinuousConvMode) << 13) |
-             ADC_InitStruct->ADC_ExternalTrigConvEdge | ADC_InitStruct->ADC_ExternalTrigConv |
-             ADC_InitStruct->ADC_DataAlign | ADC_InitStruct->ADC_ScanDirection);
-
-  /* Write to ADCx CFGR */
-  ADCx->CFGR1 = tmpreg;
-}
-
-/**
-  * @brief  Fills each ADC_InitStruct member with its default value.
-  * @note   This function is used to initialize the global features of the ADC ( 
-  *         Resolution, Data Alignment, continuous mode activation, External 
-  *         trigger source and edge, Sequence Scan Direction).
-  * @param  ADC_InitStruct: pointer to an ADC_InitTypeDef structure which will 
-  *         be initialized.
-  * @retval None
-  */
-void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct)
-{
-  /* Reset ADC init structure parameters values */
-  /* Initialize the ADC_Resolution member */
-  ADC_InitStruct->ADC_Resolution = ADC_Resolution_12b;
-
-   /* Initialize the ADC_ContinuousConvMode member */
-  ADC_InitStruct->ADC_ContinuousConvMode = DISABLE;
-
-  /* Initialize the ADC_ExternalTrigConvEdge member */
-  ADC_InitStruct->ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
-
-  /* Initialize the ADC_ExternalTrigConv member */
-  ADC_InitStruct->ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_TRGO;
-
-  /* Initialize the ADC_DataAlign member */
-  ADC_InitStruct->ADC_DataAlign = ADC_DataAlign_Right;
-
-  /* Initialize the ADC_ScanDirection member */
-  ADC_InitStruct->ADC_ScanDirection = ADC_ScanDirection_Upward;
-}
-
-/**
-  * @brief  Enables or disables the specified ADC peripheral.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  NewState: new state of the ADCx peripheral. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Set the ADEN bit to Enable the ADC peripheral */
-    ADCx->CR |= (uint32_t)ADC_CR_ADEN;
-  }
-  else
-  {
-    /* Set the ADDIS to Disable the ADC peripheral */
-    ADCx->CR |= (uint32_t)ADC_CR_ADDIS;
-  }
-}
-
-/**
-  * @brief  Configure the ADC to either be clocked by the asynchronous clock(which is
-  *         independent, the dedicated 14MHz clock) or the synchronous clock derived from
-  *         the APB clock of the ADC bus interface divided by 2 or 4
-  * @note   This function can be called only when ADC is disabled.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  ADC_ClockMode: This parameter can be :
-  *            @arg ADC_ClockMode_AsynClk: ADC clocked by the dedicated 14MHz clock
-  *            @arg ADC_ClockMode_SynClkDiv2: ADC clocked by PCLK/2
-  *            @arg ADC_ClockMode_SynClkDiv4: ADC clocked by PCLK/4  
-  * @retval None
-  */
-void ADC_ClockModeConfig(ADC_TypeDef* ADCx, uint32_t ADC_ClockMode)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_CLOCKMODE(ADC_ClockMode));
-
-    /* Configure the ADC Clock mode according to ADC_ClockMode */
-    ADCx->CFGR2 = (uint32_t)ADC_ClockMode;
-
-}
-
-/**
-  * @brief  Enables or disables the jitter when the ADC is clocked by PCLK div2
-  *         or div4
-  * @note   This function is obsolete and maintained for legacy purpose only. ADC_ClockModeConfig()
-  *         function should be used instead.  
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  ADC_JitterOff: This parameter can be :
-  *            @arg ADC_JitterOff_PCLKDiv2: Remove jitter when ADC is clocked by PLCK divided by 2
-  *            @arg ADC_JitterOff_PCLKDiv4: Remove jitter when ADC is clocked by PLCK divided by 4
-  * @param  NewState: new state of the ADCx jitter. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_JitterCmd(ADC_TypeDef* ADCx, uint32_t ADC_JitterOff, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_JITTEROFF(ADC_JitterOff));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Disable Jitter */
-    ADCx->CFGR2 |= (uint32_t)ADC_JitterOff;
-  }
-  else
-  {
-    /* Enable Jitter */
-    ADCx->CFGR2 &= (uint32_t)(~ADC_JitterOff);
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup ADC_Group2 Power saving functions
- *  @brief   Power saving functions 
- *
-@verbatim
- ===============================================================================
-          ##### Power saving functions #####
- ===============================================================================
-    [..] This section provides functions allowing to reduce power consumption.
-    [..] The two function must be combined to get the maximal benefits:
-         When the ADC frequency is higher than the CPU one, it is recommended to 
-         (#) Enable the Auto Delayed Conversion mode : 
-             ==> using ADC_WaitModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-         (#) Enable the power off in Delay phases :
-             ==> using ADC_AutoPowerOffCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the ADC Power Off.
-  * @note   ADC power-on and power-off can be managed by hardware to cut the 
-  *         consumption when the ADC is not converting. 
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @note   The ADC can be powered down: 
-  *         - During the Auto delay phase:  The ADC is powered on again at the end
-  *           of the delay (until the previous data is read from the ADC data register). 
-  *         - During the ADC is waiting for a trigger event: The ADC is powered up
-  *           at the next trigger event (when the conversion is started).
-  * @param  NewState: new state of the ADCx power Off. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_AutoPowerOffCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the ADC Automatic Power-Off */
-    ADCx->CFGR1 |= ADC_CFGR1_AUTOFF;
-  }
-  else
-  {
-    /* Disable the ADC Automatic Power-Off */
-    ADCx->CFGR1 &= (uint32_t)~ADC_CFGR1_AUTOFF;
-  }
-}
-
-/**
-  * @brief  Enables or disables the Wait conversion mode.
-  * @note   When the CPU clock is not fast enough to manage the data rate, a 
-  *         Hardware delay can be introduced between ADC conversions to reduce 
-  *         this data rate. 
-  * @note   The Hardware delay is inserted after each conversions and until the
-  *         previous data is read from the ADC data register
-  * @note   This is a way to automatically adapt the speed of the ADC to the speed 
-  *         of the system which will read the data.
-  * @note   Any hardware triggers wich occur while a conversion is on going or 
-  *         while the automatic Delay is applied are ignored 
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  NewState: new state of the ADCx Auto-Delay.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_WaitModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the ADC Automatic Delayed conversion */
-    ADCx->CFGR1 |= ADC_CFGR1_WAIT;
-  }
-  else
-  {
-    /* Disable the ADC Automatic Delayed conversion */
-    ADCx->CFGR1 &= (uint32_t)~ADC_CFGR1_WAIT;
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup ADC_Group3 Analog Watchdog configuration functions
- *  @brief   Analog Watchdog configuration functions 
- *
-@verbatim
- ===============================================================================
-                   ##### Analog Watchdog configuration functions #####
- ===============================================================================  
-    [..] This section provides functions allowing to configure the Analog Watchdog
-         (AWD) feature in the ADC.
-    [..] A typical configuration Analog Watchdog is done following these steps :
-         (#) the ADC guarded channel(s) is (are) selected using the 
-             ADC_AnalogWatchdogSingleChannelConfig() function.
-         (#) The Analog watchdog lower and higher threshold are configured using the  
-             ADC_AnalogWatchdogThresholdsConfig() function.
-         (#) The Analog watchdog is enabled and configured to enable the check, on one
-             or more channels, using the  ADC_AnalogWatchdogCmd() function.
-         (#) Enable the analog watchdog on the selected channel using
-             ADC_AnalogWatchdogSingleChannelCmd() function
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the analog watchdog 
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  NewState: new state of the ADCx Analog Watchdog.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the ADC Analog Watchdog */
-    ADCx->CFGR1 |= ADC_CFGR1_AWDEN;
-  }
-  else
-  {
-    /* Disable the ADC Analog Watchdog */
-    ADCx->CFGR1 &= (uint32_t)~ADC_CFGR1_AWDEN;
-  }
-}
-
-/**
-  * @brief  Configures the high and low thresholds of the analog watchdog. 
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  HighThreshold: the ADC analog watchdog High threshold value.
-  *          This parameter must be a 12bit value.
-  * @param  LowThreshold: the ADC analog watchdog Low threshold value.
-  *          This parameter must be a 12bit value.
-  * @retval None
-  */
-void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold,
-                                        uint16_t LowThreshold)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_THRESHOLD(HighThreshold));
-  assert_param(IS_ADC_THRESHOLD(LowThreshold));
-
-  /* Set the ADCx high and low threshold */
-  ADCx->TR = LowThreshold | ((uint32_t)HighThreshold << 16);
-
-}
-
-/**
-  * @brief  Configures the analog watchdog guarded single channel
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  ADC_AnalogWatchdog_Channel: the ADC channel to configure for the analog watchdog.
-  *          This parameter can be one of the following values:
-  *            @arg ADC_AnalogWatchdog_Channel_0: ADC Channel0 selected
-  *            @arg ADC_AnalogWatchdog_Channel_1: ADC Channel1 selected
-  *            @arg ADC_AnalogWatchdog_Channel_2: ADC Channel2 selected
-  *            @arg ADC_AnalogWatchdog_Channel_3: ADC Channel3 selected
-  *            @arg ADC_AnalogWatchdog_Channel_4: ADC Channel4 selected
-  *            @arg ADC_AnalogWatchdog_Channel_5: ADC Channel5 selected
-  *            @arg ADC_AnalogWatchdog_Channel_6: ADC Channel6 selected
-  *            @arg ADC_AnalogWatchdog_Channel_7: ADC Channel7 selected
-  *            @arg ADC_AnalogWatchdog_Channel_8: ADC Channel8 selected
-  *            @arg ADC_AnalogWatchdog_Channel_9: ADC Channel9 selected
-  *            @arg ADC_AnalogWatchdog_Channel_10: ADC Channel10 selected, not available for STM32F031 devices
-  *            @arg ADC_AnalogWatchdog_Channel_11: ADC Channel11 selected, not available for STM32F031 devices
-  *            @arg ADC_AnalogWatchdog_Channel_12: ADC Channel12 selected, not available for STM32F031 devices
-  *            @arg ADC_AnalogWatchdog_Channel_13: ADC Channel13 selected, not available for STM32F031 devices
-  *            @arg ADC_AnalogWatchdog_Channel_14: ADC Channel14 selected, not available for STM32F031 devices
-  *            @arg ADC_AnalogWatchdog_Channel_15: ADC Channel15 selected, not available for STM32F031 devices
-  *            @arg ADC_AnalogWatchdog_Channel_16: ADC Channel16 selected
-  *            @arg ADC_AnalogWatchdog_Channel_17: ADC Channel17 selected
-  *            @arg ADC_AnalogWatchdog_Channel_18: ADC Channel18 selected, not available for STM32F030 devices
-  * @note   The channel selected on the AWDCH must be also set into the CHSELR 
-  *         register 
-  * @retval None
-  */
-void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog_Channel)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_ANALOG_WATCHDOG_CHANNEL(ADC_AnalogWatchdog_Channel));
-
-  /* Get the old register value */
-  tmpreg = ADCx->CFGR1;
-
-  /* Clear the Analog watchdog channel select bits */
-  tmpreg &= ~ADC_CFGR1_AWDCH;
-
-  /* Set the Analog watchdog channel */
-  tmpreg |= ADC_AnalogWatchdog_Channel;
-
-  /* Store the new register value */
-  ADCx->CFGR1 = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables the ADC Analog Watchdog Single Channel.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  NewState: new state of the ADCx ADC Analog Watchdog Single Channel.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_AnalogWatchdogSingleChannelCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the ADC Analog Watchdog Single Channel */
-    ADCx->CFGR1 |= ADC_CFGR1_AWDSGL;
-  }
-  else
-  {
-    /* Disable the ADC Analog Watchdog Single Channel */
-    ADCx->CFGR1 &= (uint32_t)~ADC_CFGR1_AWDSGL;
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup ADC_Group4 Temperature Sensor, Vrefint  and Vbat management functions
- *  @brief   Temperature Sensor, Vrefint  and Vbat management functions
- *
-@verbatim
- ===============================================================================
- ##### Temperature Sensor, Vrefint  and Vbat management function #####
- ===============================================================================
-    [..] This section provides a function allowing to enable/disable the internal 
-         connections between the ADC and the Temperature Sensor, the Vrefint and
-         Vbat source.
-     
-    [..] A typical configuration to get the Temperature sensor, Vrefint and Vbat channels 
-         voltages is done following these steps :
-         (#) Enable the internal connection of Temperature sensor, Vrefint or Vbat sources 
-             with the ADC channels using ADC_TempSensorCmd(), ADC_VrefintCmd() or ADC_VbatCmd()
-             functions. 
-         (#) select the ADC_Channel_16(Temperature sensor), ADC_Channel_17(Vrefint)
-             or ADC_Channel_18(Voltage battery) using ADC_ChannelConfig() function 
-         (#) Get the voltage values, using ADC_GetConversionValue() function
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the temperature sensor channel.
-  * @param  NewState: new state of the temperature sensor input channel.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_TempSensorCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the temperature sensor channel*/
-    ADC->CCR |= (uint32_t)ADC_CCR_TSEN;
-  }
-  else
-  {
-    /* Disable the temperature sensor channel*/
-    ADC->CCR &= (uint32_t)(~ADC_CCR_TSEN);
-  }
-}
-
-/**
-  * @brief  Enables or disables the Vrefint channel.
-  * @param  NewState: new state of the Vref input channel.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_VrefintCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the Vrefint channel*/
-    ADC->CCR |= (uint32_t)ADC_CCR_VREFEN;
-  }
-  else
-  {
-    /* Disable the Vrefint channel*/
-    ADC->CCR &= (uint32_t)(~ADC_CCR_VREFEN);
-  }
-}
-
-/**
-  * @brief  Enables or disables the Vbat channel. 
-  * @note   This feature is not applicable for STM32F030 devices. 
-  * @param  NewState: new state of the Vbat input channel.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_VbatCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the Vbat channel*/
-    ADC->CCR |= (uint32_t)ADC_CCR_VBATEN;
-  }
-  else
-  {
-    /* Disable the Vbat channel*/
-    ADC->CCR &= (uint32_t)(~ADC_CCR_VBATEN);
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup ADC_Group5 Channels Configuration functions
- *  @brief    Channels Configuration functions 
- *
-@verbatim
- ===============================================================================
-            ##### Channels Configuration functions #####
- ===============================================================================
-    [..] This section provides functions allowing to manage the ADC channels,
-         it is composed of 3 sub sections :
-         (#) Configuration and management functions for ADC channels: This subsection 
-             provides functions allowing to configure the ADC channels :    
-             (++) Select the ADC channels
-             (++) Activate ADC Calibration
-             (++) Activate the Overrun Mode.
-             (++) Activate the Discontinuous Mode 
-             (++) Activate the Continuous Mode.
-             (++) Configure the sampling time for each channel
-             (++) Select the conversion Trigger and Edge for ADC channels
-             (++) Select the scan direction.
-             -@@- Please Note that the following features for ADC channels are configurated
-                  using the ADC_Init() function : 
-                  (+@@) Activate the Continuous Mode (can be also activated by ADC_OverrunModeCmd().
-                  (+@@) Select the conversion Trigger and Edge for ADC channels
-                  (+@@) Select the scan direction.
-         (#) Control the ADC peripheral : This subsection permits to command the ADC:
-             (++) Stop or discard an on-going conversion (ADSTP command)
-             (++) Start the ADC conversion .
-         (#) Get the conversion data: This subsection provides an important function in 
-             the ADC peripheral since it returns the converted data of the current 
-             ADC channel. When the Conversion value is read, the EOC Flag is 
-             automatically cleared.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures for the selected ADC and its sampling time.
-  * @param  ADCx: where x can be 1 to select the ADC peripheral.
-  * @param  ADC_Channel: the ADC channel to configure. 
-  *          This parameter can be any combination of the following values:
-  *            @arg ADC_Channel_0: ADC Channel0 selected
-  *            @arg ADC_Channel_1: ADC Channel1 selected
-  *            @arg ADC_Channel_2: ADC Channel2 selected
-  *            @arg ADC_Channel_3: ADC Channel3 selected
-  *            @arg ADC_Channel_4: ADC Channel4 selected
-  *            @arg ADC_Channel_5: ADC Channel5 selected
-  *            @arg ADC_Channel_6: ADC Channel6 selected
-  *            @arg ADC_Channel_7: ADC Channel7 selected
-  *            @arg ADC_Channel_8: ADC Channel8 selected
-  *            @arg ADC_Channel_9: ADC Channel9 selected
-  *            @arg ADC_Channel_10: ADC Channel10 selected, not available for STM32F031 devices
-  *            @arg ADC_Channel_11: ADC Channel11 selected, not available for STM32F031 devices
-  *            @arg ADC_Channel_12: ADC Channel12 selected, not available for STM32F031 devices
-  *            @arg ADC_Channel_13: ADC Channel13 selected, not available for STM32F031 devices
-  *            @arg ADC_Channel_14: ADC Channel14 selected, not available for STM32F031 devices
-  *            @arg ADC_Channel_15: ADC Channel15 selected, not available for STM32F031 devices
-  *            @arg ADC_Channel_16: ADC Channel16 selected
-  *            @arg ADC_Channel_17: ADC Channel17 selected
-  *            @arg ADC_Channel_18: ADC Channel18 selected, not available for STM32F030 devices
-  * @param  ADC_SampleTime: The sample time value to be set for the selected channel. 
-  *          This parameter can be one of the following values:
-  *            @arg ADC_SampleTime_1_5Cycles: Sample time equal to 1.5 cycles  
-  *            @arg ADC_SampleTime_7_5Cycles: Sample time equal to 7.5 cycles
-  *            @arg ADC_SampleTime_13_5Cycles: Sample time equal to 13.5 cycles
-  *            @arg ADC_SampleTime_28_5Cycles: Sample time equal to 28.5 cycles
-  *            @arg ADC_SampleTime_41_5Cycles: Sample time equal to 41.5 cycles
-  *            @arg ADC_SampleTime_55_5Cycles: Sample time equal to 55.5 cycles
-  *            @arg ADC_SampleTime_71_5Cycles: Sample time equal to 71.5 cycles
-  *            @arg ADC_SampleTime_239_5Cycles: Sample time equal to 239.5 cycles
-  * @retval None
-  */
-void ADC_ChannelConfig(ADC_TypeDef* ADCx, uint32_t ADC_Channel, uint32_t ADC_SampleTime)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_CHANNEL(ADC_Channel));
-  assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime));
-
-  /* Configure the ADC Channel */
-  ADCx->CHSELR |= (uint32_t)ADC_Channel;
-
-  /* Clear the Sampling time Selection bits */
-  tmpreg &= ~ADC_SMPR1_SMPR;
-
-  /* Set the ADC Sampling Time register */
-  tmpreg |= (uint32_t)ADC_SampleTime;
-
-  /* Configure the ADC Sample time register */
-  ADCx->SMPR = tmpreg ;
-}
-
-/**
-  * @brief  Enable the Continuous mode for the selected ADCx channels.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  NewState: new state of the Continuous mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   It is not possible to have both discontinuous mode and continuous mode
-  *         enabled. In this case (If DISCEN and CONT are Set), the ADC behaves 
-  *         as if continuous mode was disabled
-  * @retval None
-  */
-void ADC_ContinuousModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-    if (NewState != DISABLE)
-  {
-    /* Enable the Continuous mode*/
-    ADCx->CFGR1 |= (uint32_t)ADC_CFGR1_CONT;
-  }
-  else
-  {
-    /* Disable the Continuous mode */
-    ADCx->CFGR1 &= (uint32_t)(~ADC_CFGR1_CONT);
-  }
-}
-
-/**
-  * @brief  Enable the discontinuous mode for the selected ADC channels.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  NewState: new state of the discontinuous mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   It is not possible to have both discontinuous mode and continuous mode
-  *         enabled. In this case (If DISCEN and CONT are Set), the ADC behaves 
-  *         as if continuous mode was disabled
-  * @retval None
-  */
-void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-    if (NewState != DISABLE)
-  {
-    /* Enable the Discontinuous mode */
-    ADCx->CFGR1 |= (uint32_t)ADC_CFGR1_DISCEN;
-  }
-  else
-  {
-    /* Disable the Discontinuous mode */
-    ADCx->CFGR1 &= (uint32_t)(~ADC_CFGR1_DISCEN);
-  }
-}
-
-/**
-  * @brief  Enable the Overrun mode for the selected ADC channels.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  NewState: new state of the Overrun mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_OverrunModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-    if (NewState != DISABLE)
-  {
-    /* Enable the Overrun mode */
-    ADCx->CFGR1 |= (uint32_t)ADC_CFGR1_OVRMOD;
-  }
-  else
-  {
-    /* Disable the Overrun mode */
-    ADCx->CFGR1 &= (uint32_t)(~ADC_CFGR1_OVRMOD);
-  }
-}
-
-/**
-  * @brief  Active the Calibration operation for the selected ADC.
-  * @note   The Calibration can be initiated only when ADC is still in the 
-  *         reset configuration (ADEN must be equal to 0).
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @retval ADC Calibration factor 
-  */
-uint32_t ADC_GetCalibrationFactor(ADC_TypeDef* ADCx)
-{
-  uint32_t tmpreg = 0, calibrationcounter = 0, calibrationstatus = 0;
-
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  
-  /* Set the ADC calibartion */
-  ADCx->CR |= (uint32_t)ADC_CR_ADCAL;
-  
-  /* Wait until no ADC calibration is completed */
-  do
-  {
-    calibrationstatus = ADCx->CR & ADC_CR_ADCAL;
-    calibrationcounter++;  
-  } while((calibrationcounter != CALIBRATION_TIMEOUT) && (calibrationstatus != 0x00));
-    
-  if((uint32_t)(ADCx->CR & ADC_CR_ADCAL) == RESET)
-  {
-    /*Get the calibration factor from the ADC data register */
-    tmpreg = ADCx->DR;
-  }
-  else
-  {
-    /* Error factor */
-    tmpreg = 0x00000000;
-  }
-  return tmpreg;
-}
-
-/**
-  * @brief  Stop the on going conversions for the selected ADC.
-  * @note   When ADSTP is set, any on going conversion is aborted, and the ADC 
-  *         data register is not updated with current conversion. 
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @retval None
-  */
-void ADC_StopOfConversion(ADC_TypeDef* ADCx)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  
-  ADCx->CR |= (uint32_t)ADC_CR_ADSTP;
-}
-
-/**
-  * @brief  Start Conversion for the selected ADC channels.
-  * @note   In continuous mode, ADSTART is not cleared by hardware with the 
-  *         assertion of EOSEQ because the sequence is automatic relaunched
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @retval None
-  */
-void ADC_StartOfConversion(ADC_TypeDef* ADCx)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  
-  ADCx->CR |= (uint32_t)ADC_CR_ADSTART;
-}
-
-/**
-  * @brief  Returns the last ADCx conversion result data for ADC channel.  
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @retval The Data conversion value.
-  */
-uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-
-  /* Return the selected ADC conversion value */
-  return (uint16_t) ADCx->DR;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup ADC_Group6 DMA Configuration functions
- *  @brief   Regular Channels DMA Configuration functions 
- *
-@verbatim
- ===============================================================================
-          ##### DMA Configuration functions #####
- ===============================================================================
-    [..] This section provides functions allowing to configure the DMA for ADC hannels.
-         Since converted channel values are stored into a unique data register, 
-         it is useful to use DMA for conversion of more than one channel. This 
-         avoids the loss of the data already stored in the ADC Data register. 
-         When the DMA mode is enabled (using the ADC_DMACmd() function), after each
-         conversion of a channel, a DMA request is generated.
-  
-    [..] Depending on the "DMA disable selection" configuration (using the 
-         ADC_DMARequestModeConfig() function), at the end of the last DMA 
-         transfer, two possibilities are allowed:
-         (+) No new DMA request is issued to the DMA controller (One Shot Mode) 
-         (+) Requests can continue to be generated (Circular Mode).
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified ADC DMA request.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  NewState: new state of the selected ADC DMA transfer.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected ADC DMA request */
-    ADCx->CFGR1 |= (uint32_t)ADC_CFGR1_DMAEN;
-  }
-  else
-  {
-    /* Disable the selected ADC DMA request */
-    ADCx->CFGR1 &= (uint32_t)(~ADC_CFGR1_DMAEN);
-  }
-}
-
-/**
-  * @brief  Enables or disables the ADC DMA request after last transfer (Single-ADC mode)
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  ADC_DMARequestMode: the ADC channel to configure. 
-  *          This parameter can be one of the following values:
-  *            @arg ADC_DMAMode_OneShot: DMA One Shot Mode 
-  *            @arg ADC_DMAMode_Circular: DMA Circular Mode  
-  *  @retval None
-  */
-void ADC_DMARequestModeConfig(ADC_TypeDef* ADCx, uint32_t ADC_DMARequestMode)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-
-  ADCx->CFGR1 &= (uint32_t)~ADC_CFGR1_DMACFG;
-  ADCx->CFGR1 |= (uint32_t)ADC_DMARequestMode;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup ADC_Group7 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions.
- *
-@verbatim   
- ===============================================================================
-            ##### Interrupts and flags management functions #####
- ===============================================================================
-    [..] This section provides functions allowing to configure the ADC Interrupts 
-         and get the status and clear flags and Interrupts pending bits.
-  
-    [..] The ADC provide 6 Interrupts sources and 11 Flags which can be divided into 
-         3 groups:
-
-  *** Flags for ADC status ***
-  ======================================================
-    [..]
-        (+)Flags :
-           (##) ADC_FLAG_ADRDY : This flag is set after the ADC has been enabled (bit ADEN=1)
-               and when the ADC reaches a state where it is ready to accept conversion requests
-           (##) ADC_FLAG_ADEN : This flag is set by software to enable the ADC.
-                The ADC will be effectively ready to operate once the ADRDY flag has been set.
-           (##) ADC_FLAG_ADDIS : This flag is cleared once the ADC is effectively
-                disabled.
-           (##) ADC_FLAG_ADSTART : This flag is cleared after the execution of
-                ADC_StopOfConversion() function, at the same time as the ADSTP bit is
-                cleared by hardware
-           (##) ADC_FLAG_ADSTP : This flag is cleared by hardware when the conversion
-                is effectively discarded and the ADC is ready to accept a new start conversion
-           (##) ADC_FLAG_ADCAL : This flag is set once the calibration is complete.
-
-        (+)Interrupts 
-           (##) ADC_IT_ADRDY : specifies the interrupt source for ADC ready event.
-
-  *** Flags and Interrupts for ADC channel conversion ***
-  =====================================================
-    [..]
-        (+)Flags :
-           (##) ADC_FLAG_EOC : This flag is set by hardware at the end of each conversion
-                of a channel when a new data result is available in the data register
-           (##) ADC_FLAG_EOSEQ : This bit is set by hardware at the end of the conversion
-                of a sequence of channels selected by ADC_ChannelConfig() function.
-           (##) ADC_FLAG_EOSMP : This bit is set by hardware at the end of the sampling phase.
-           (##) ADC_FLAG_OVR : This flag is set by hardware when an overrun occurs,
-                meaning that a new conversion has complete while the EOC flag was already set.
-
-        (+)Interrupts :
-           (##) ADC_IT_EOC : specifies the interrupt source for end of conversion event.
-           (##) ADC_IT_EOSEQ : specifies the interrupt source for end of sequence event.
-           (##) ADC_IT_EOSMP : specifies the interrupt source for end of sampling event.
-           (##) ADC_IT_OVR : specifies the interrupt source for Overrun detection 
-                event.
-
-  *** Flags and Interrupts for the Analog Watchdog ***
-  ================================================
-    [..]
-        (+)Flags :
-           (##) ADC_FLAG_AWD: This flag is set by hardware when the converted
-                voltage crosses the values programmed thrsholds
-
-        (+)Interrupts :
-           (##) ADC_IT_AWD : specifies the interrupt source for Analog watchdog 
-                event.
-  
-    [..] The user should identify which mode will be used in his application to 
-         manage the ADC controller events: Polling mode or Interrupt mode.
-  
-    [..] In the Polling Mode it is advised to use the following functions:
-         (+) ADC_GetFlagStatus() : to check if flags events occur.
-         (+) ADC_ClearFlag()     : to clear the flags events.
-  
-    [..] In the Interrupt Mode it is advised to use the following functions:
-         (+) ADC_ITConfig()       : to enable or disable the interrupt source.
-         (+) ADC_GetITStatus()    : to check if Interrupt occurs.
-         (+) ADC_ClearITPendingBit() : to clear the Interrupt pending Bit 
-             (corresponding Flag).
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified ADC interrupts.
-  * @param  ADCx: where x can be 1 to select the ADC peripheral.
-  * @param  ADC_IT: specifies the ADC interrupt sources to be enabled or disabled.
-  *          This parameter can be one of the following values:
-  *            @arg ADC_IT_ADRDY: ADC ready interrupt 
-  *            @arg ADC_IT_EOSMP: End of sampling interrupt
-  *            @arg ADC_IT_EOC: End of conversion interrupt 
-  *            @arg ADC_IT_EOSEQ: End of sequence of conversion interrupt
-  *            @arg ADC_IT_OVR: overrun interrupt
-  *            @arg ADC_IT_AWD: Analog watchdog interrupt
-  * @param  NewState: new state of the specified ADC interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void ADC_ITConfig(ADC_TypeDef* ADCx, uint32_t ADC_IT, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  assert_param(IS_ADC_CONFIG_IT(ADC_IT)); 
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected ADC interrupts */
-    ADCx->IER |= ADC_IT;
-  }
-  else
-  {
-    /* Disable the selected ADC interrupts */
-    ADCx->IER &= (~(uint32_t)ADC_IT);
-  }
-}
-
-/**
-  * @brief  Checks whether the specified ADC flag is set or not.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  ADC_FLAG: specifies the flag to check. 
-  *          This parameter can be one of the following values:
-  *            @arg ADC_FLAG_AWD: Analog watchdog flag
-  *            @arg ADC_FLAG_OVR: Overrun flag 
-  *            @arg ADC_FLAG_EOSEQ: End of Sequence flag
-  *            @arg ADC_FLAG_EOC: End of conversion flag
-  *            @arg ADC_FLAG_EOSMP: End of sampling flag
-  *            @arg ADC_FLAG_ADRDY: ADC Ready flag
-  *            @arg ADC_FLAG_ADEN: ADC enable flag 
-  *            @arg ADC_FLAG_ADDIS: ADC disable flag 
-  *            @arg ADC_FLAG_ADSTART: ADC start flag 
-  *            @arg ADC_FLAG_ADSTP: ADC stop flag
-  *            @arg ADC_FLAG_ADCAL: ADC Calibration flag
-  * @retval The new state of ADC_FLAG (SET or RESET).
-  */
-FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint32_t ADC_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_GET_FLAG(ADC_FLAG));
-
-  if((uint32_t)(ADC_FLAG & 0x01000000))
-  {
-    tmpreg = ADCx->CR & 0xFEFFFFFF;
-  }
-  else
-  {
-    tmpreg = ADCx->ISR;
-  }
-  
-  /* Check the status of the specified ADC flag */
-  if ((tmpreg & ADC_FLAG) != (uint32_t)RESET)
-  {
-    /* ADC_FLAG is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* ADC_FLAG is reset */
-    bitstatus = RESET;
-  }
-  /* Return the ADC_FLAG status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the ADCx's pending flags.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  ADC_FLAG: specifies the flag to clear. 
-  *          This parameter can be any combination of the following values:
-  *            @arg ADC_FLAG_AWD: Analog watchdog flag
-  *            @arg ADC_FLAG_EOC: End of conversion flag
-  *            @arg ADC_FLAG_ADRDY: ADC Ready flag
-  *            @arg ADC_FLAG_EOSMP: End of sampling flag
-  *            @arg ADC_FLAG_EOSEQ: End of Sequence flag
-  *            @arg ADC_FLAG_OVR: Overrun flag 
-  * @retval None
-  */
-void ADC_ClearFlag(ADC_TypeDef* ADCx, uint32_t ADC_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_CLEAR_FLAG(ADC_FLAG));
-
-  /* Clear the selected ADC flags */
-  ADCx->ISR = (uint32_t)ADC_FLAG;
-}
-
-/**
-  * @brief  Checks whether the specified ADC interrupt has occurred or not.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral
-  * @param  ADC_IT: specifies the ADC interrupt source to check.
-  *          This parameter can be one of the following values:
-  *            @arg ADC_IT_ADRDY: ADC ready interrupt 
-  *            @arg ADC_IT_EOSMP: End of sampling interrupt
-  *            @arg ADC_IT_EOC: End of conversion interrupt 
-  *            @arg ADC_IT_EOSEQ: End of sequence of conversion interrupt
-  *            @arg ADC_IT_OVR: overrun interrupt
-  *            @arg ADC_IT_AWD: Analog watchdog interrupt
-  * @retval The new state of ADC_IT (SET or RESET).
-  */
-ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint32_t ADC_IT)
-{
-  ITStatus bitstatus = RESET;
-  uint32_t enablestatus = 0;
-
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_GET_IT(ADC_IT));
-
-  /* Get the ADC_IT enable bit status */
-  enablestatus = (uint32_t)(ADCx->IER & ADC_IT); 
-
-  /* Check the status of the specified ADC interrupt */
-  if (((uint32_t)(ADCx->ISR & ADC_IT) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET))
-  {
-    /* ADC_IT is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* ADC_IT is reset */
-    bitstatus = RESET;
-  }
-  /* Return the ADC_IT status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the ADCx's interrupt pending bits.
-  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
-  * @param  ADC_IT: specifies the ADC interrupt pending bit to clear.
-  *          This parameter can be one of the following values:
-  *            @arg ADC_IT_ADRDY: ADC ready interrupt
-  *            @arg ADC_IT_EOSMP: End of sampling interrupt
-  *            @arg ADC_IT_EOC: End of conversion interrupt
-  *            @arg ADC_IT_EOSEQ: End of sequence of conversion interrupt
-  *            @arg ADC_IT_OVR: overrun interrupt
-  *            @arg ADC_IT_AWD: Analog watchdog interrupt
-  * @retval None
-  */
-void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint32_t ADC_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_ADC_ALL_PERIPH(ADCx));
-  assert_param(IS_ADC_CLEAR_IT(ADC_IT));
-
-  /* Clear the selected ADC interrupt pending bits */
-  ADCx->ISR = (uint32_t)ADC_IT; 
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_can.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_can.c
deleted file mode 100644
index 7dcae51..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_can.c	
+++ /dev/null
@@ -1,1631 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_can.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Controller area network (CAN) peripheral and 
-  *          applicable only for STM32F072 devices :           
-  *           + Initialization and Configuration 
-  *           + CAN Frames Transmission 
-  *           + CAN Frames Reception    
-  *           + Operation modes switch  
-  *           + Error management          
-  *           + Interrupts and flags        
-  *         
-  @verbatim
-                               
- ===============================================================================      
-                      ##### How to use this driver #####
- ===============================================================================                
-    [..]
-    (#) Enable the CAN controller interface clock using 
-        RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE);      
-    (#) CAN pins configuration:
-        (++) Enable the clock for the CAN GPIOs using the following function:
-             RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOx, ENABLE);   
-        (++) Connect the involved CAN pins to AF0 using the following function 
-             GPIO_PinAFConfig(GPIOx, GPIO_PinSourcex, GPIO_AF_CANx); 
-        (++) Configure these CAN pins in alternate function mode by calling
-             the function  GPIO_Init();
-    (#) Initialise and configure the CAN using CAN_Init() and 
-        CAN_FilterInit() functions.   
-    (#) Transmit the desired CAN frame using CAN_Transmit() function.
-    (#) Check the transmission of a CAN frame using CAN_TransmitStatus() function.
-    (#) Cancel the transmission of a CAN frame using CAN_CancelTransmit() function.  
-    (#) Receive a CAN frame using CAN_Recieve() function.
-    (#) Release the receive FIFOs using CAN_FIFORelease() function.
-    (#) Return the number of pending received frames using CAN_MessagePending() function.            
-    (#) To control CAN events you can use one of the following two methods:
-        (++) Check on CAN flags using the CAN_GetFlagStatus() function.  
-        (++) Use CAN interrupts through the function CAN_ITConfig() at initialization 
-             phase and CAN_GetITStatus() function into interrupt routines to check 
-             if the event has occurred or not.
-             After checking on a flag you should clear it using CAN_ClearFlag()
-             function. And after checking on an interrupt event you should clear it 
-             using CAN_ClearITPendingBit() function.            
-                 
-  @endverbatim
-  *       
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_can.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup CAN 
-  * @brief CAN driver modules
-  * @{
-  */ 
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-
-/* CAN Master Control Register bits */
-#define MCR_DBF           ((uint32_t)0x00010000) /* software master reset */
-
-/* CAN Mailbox Transmit Request */
-#define TMIDxR_TXRQ       ((uint32_t)0x00000001) /* Transmit mailbox request */
-
-/* CAN Filter Master Register bits */
-#define FMR_FINIT         ((uint32_t)0x00000001) /* Filter init mode */
-
-/* Time out for INAK bit */
-#define INAK_TIMEOUT      ((uint32_t)0x00FFFFFF)
-/* Time out for SLAK bit */
-#define SLAK_TIMEOUT      ((uint32_t)0x00FFFFFF)
-
-/* Flags in TSR register */
-#define CAN_FLAGS_TSR     ((uint32_t)0x08000000) 
-/* Flags in RF1R register */
-#define CAN_FLAGS_RF1R    ((uint32_t)0x04000000) 
-/* Flags in RF0R register */
-#define CAN_FLAGS_RF0R    ((uint32_t)0x02000000) 
-/* Flags in MSR register */
-#define CAN_FLAGS_MSR     ((uint32_t)0x01000000) 
-/* Flags in ESR register */
-#define CAN_FLAGS_ESR     ((uint32_t)0x00F00000) 
-
-/* Mailboxes definition */
-#define CAN_TXMAILBOX_0   ((uint8_t)0x00)
-#define CAN_TXMAILBOX_1   ((uint8_t)0x01)
-#define CAN_TXMAILBOX_2   ((uint8_t)0x02) 
-
-#define CAN_MODE_MASK     ((uint32_t) 0x00000003)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-static ITStatus CheckITStatus(uint32_t CAN_Reg, uint32_t It_Bit);
-
-/** @defgroup CAN_Private_Functions
-  * @{
-  */
-
-/** @defgroup CAN_Group1 Initialization and Configuration functions
- *  @brief    Initialization and Configuration functions 
- *
-@verbatim    
- ===============================================================================
-              ##### Initialization and Configuration functions #####
- ===============================================================================  
-    [..] This section provides functions allowing to: 
-         (+) Initialize the CAN peripherals : Prescaler, operating mode, the maximum 
-             number of time quanta to perform resynchronization, the number of time 
-             quanta in Bit Segment 1 and 2 and many other modes. 
-         (+) Configure the CAN reception filter.                                      
-         (+) Select the start bank filter for slave CAN.
-         (+) Enable or disable the Debug Freeze mode for CAN.
-         (+) Enable or disable the CAN Time Trigger Operation communication mode.
-   
-@endverbatim
-  * @{
-  */
-  
-/**
-  * @brief  Deinitializes the CAN peripheral registers to their default reset values.
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @retval None.
-  */
-void CAN_DeInit(CAN_TypeDef* CANx)
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
- 
-  /* Enable CAN reset state */
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN, ENABLE);
-  /* Release CAN from reset state */
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN, DISABLE);
-}
-
-/**
-  * @brief  Initializes the CAN peripheral according to the specified
-  *         parameters in the CAN_InitStruct.
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @param  CAN_InitStruct: pointer to a CAN_InitTypeDef structure that contains
-  *         the configuration information for the CAN peripheral.
-  * @retval Constant indicates initialization succeed which will be 
-  *         CAN_InitStatus_Failed or CAN_InitStatus_Success.
-  */
-uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct)
-{
-  uint8_t InitStatus = CAN_InitStatus_Failed;
-  uint32_t wait_ack = 0x00000000;
-  
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_TTCM));
-  assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_ABOM));
-  assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_AWUM));
-  assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_NART));
-  assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_RFLM));
-  assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_TXFP));
-  assert_param(IS_CAN_MODE(CAN_InitStruct->CAN_Mode));
-  assert_param(IS_CAN_SJW(CAN_InitStruct->CAN_SJW));
-  assert_param(IS_CAN_BS1(CAN_InitStruct->CAN_BS1));
-  assert_param(IS_CAN_BS2(CAN_InitStruct->CAN_BS2));
-  assert_param(IS_CAN_PRESCALER(CAN_InitStruct->CAN_Prescaler));
-
-  /* Exit from sleep mode */
-  CANx->MCR &= (~(uint32_t)CAN_MCR_SLEEP);
-
-  /* Request initialisation */
-  CANx->MCR |= CAN_MCR_INRQ ;
-
-  /* Wait the acknowledge */
-  while (((CANx->MSR & CAN_MSR_INAK) != CAN_MSR_INAK) && (wait_ack != INAK_TIMEOUT))
-  {
-    wait_ack++;
-  }
-
-  /* Check acknowledge */
-  if ((CANx->MSR & CAN_MSR_INAK) != CAN_MSR_INAK)
-  {
-    InitStatus = CAN_InitStatus_Failed;
-  }
-  else 
-  {
-    /* Set the time triggered communication mode */
-    if (CAN_InitStruct->CAN_TTCM == ENABLE)
-    {
-      CANx->MCR |= CAN_MCR_TTCM;
-    }
-    else
-    {
-      CANx->MCR &= ~(uint32_t)CAN_MCR_TTCM;
-    }
-
-    /* Set the automatic bus-off management */
-    if (CAN_InitStruct->CAN_ABOM == ENABLE)
-    {
-      CANx->MCR |= CAN_MCR_ABOM;
-    }
-    else
-    {
-      CANx->MCR &= ~(uint32_t)CAN_MCR_ABOM;
-    }
-
-    /* Set the automatic wake-up mode */
-    if (CAN_InitStruct->CAN_AWUM == ENABLE)
-    {
-      CANx->MCR |= CAN_MCR_AWUM;
-    }
-    else
-    {
-      CANx->MCR &= ~(uint32_t)CAN_MCR_AWUM;
-    }
-
-    /* Set the no automatic retransmission */
-    if (CAN_InitStruct->CAN_NART == ENABLE)
-    {
-      CANx->MCR |= CAN_MCR_NART;
-    }
-    else
-    {
-      CANx->MCR &= ~(uint32_t)CAN_MCR_NART;
-    }
-
-    /* Set the receive FIFO locked mode */
-    if (CAN_InitStruct->CAN_RFLM == ENABLE)
-    {
-      CANx->MCR |= CAN_MCR_RFLM;
-    }
-    else
-    {
-      CANx->MCR &= ~(uint32_t)CAN_MCR_RFLM;
-    }
-
-    /* Set the transmit FIFO priority */
-    if (CAN_InitStruct->CAN_TXFP == ENABLE)
-    {
-      CANx->MCR |= CAN_MCR_TXFP;
-    }
-    else
-    {
-      CANx->MCR &= ~(uint32_t)CAN_MCR_TXFP;
-    }
-
-    /* Set the bit timing register */
-    CANx->BTR = (uint32_t)((uint32_t)CAN_InitStruct->CAN_Mode << 30) | \
-                ((uint32_t)CAN_InitStruct->CAN_SJW << 24) | \
-                ((uint32_t)CAN_InitStruct->CAN_BS1 << 16) | \
-                ((uint32_t)CAN_InitStruct->CAN_BS2 << 20) | \
-               ((uint32_t)CAN_InitStruct->CAN_Prescaler - 1);
-
-    /* Request leave initialisation */
-    CANx->MCR &= ~(uint32_t)CAN_MCR_INRQ;
-
-   /* Wait the acknowledge */
-   wait_ack = 0;
-
-   while (((CANx->MSR & CAN_MSR_INAK) == (uint16_t)CAN_MSR_INAK) && (wait_ack != INAK_TIMEOUT))
-   {
-     wait_ack++;
-   }
-
-    /* ...and check acknowledged */
-    if ((CANx->MSR & CAN_MSR_INAK) == CAN_MSR_INAK)
-    {
-      InitStatus = CAN_InitStatus_Failed;
-    }
-    else
-    {
-      InitStatus = CAN_InitStatus_Success ;
-    }
-  }
-
-  /* At this step, return the status of initialization */
-  return InitStatus;
-}
-
-/**
-  * @brief  Configures the CAN reception filter according to the specified
-  *         parameters in the CAN_FilterInitStruct.
-  * @param  CAN_FilterInitStruct: pointer to a CAN_FilterInitTypeDef structure that
-  *         contains the configuration information.
-  * @retval None
-  */
-void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct)
-{
-  uint32_t filter_number_bit_pos = 0;
-  /* Check the parameters */
-  assert_param(IS_CAN_FILTER_NUMBER(CAN_FilterInitStruct->CAN_FilterNumber));
-  assert_param(IS_CAN_FILTER_MODE(CAN_FilterInitStruct->CAN_FilterMode));
-  assert_param(IS_CAN_FILTER_SCALE(CAN_FilterInitStruct->CAN_FilterScale));
-  assert_param(IS_CAN_FILTER_FIFO(CAN_FilterInitStruct->CAN_FilterFIFOAssignment));
-  assert_param(IS_FUNCTIONAL_STATE(CAN_FilterInitStruct->CAN_FilterActivation));
-
-  filter_number_bit_pos = ((uint32_t)1) << CAN_FilterInitStruct->CAN_FilterNumber;
-
-  /* Initialisation mode for the filter */
-  CAN->FMR |= FMR_FINIT;
-
-  /* Filter Deactivation */
-  CAN->FA1R &= ~(uint32_t)filter_number_bit_pos;
-
-  /* Filter Scale */
-  if (CAN_FilterInitStruct->CAN_FilterScale == CAN_FilterScale_16bit)
-  {
-    /* 16-bit scale for the filter */
-    CAN->FS1R &= ~(uint32_t)filter_number_bit_pos;
-
-    /* First 16-bit identifier and First 16-bit mask */
-    /* Or First 16-bit identifier and Second 16-bit identifier */
-    CAN->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR1 = 
-       ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdLow) << 16) |
-        (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdLow);
-
-    /* Second 16-bit identifier and Second 16-bit mask */
-    /* Or Third 16-bit identifier and Fourth 16-bit identifier */
-    CAN->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR2 = 
-       ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdHigh) << 16) |
-        (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdHigh);
-  }
-
-  if (CAN_FilterInitStruct->CAN_FilterScale == CAN_FilterScale_32bit)
-  {
-    /* 32-bit scale for the filter */
-    CAN->FS1R |= filter_number_bit_pos;
-    /* 32-bit identifier or First 32-bit identifier */
-    CAN->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR1 = 
-       ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdHigh) << 16) |
-        (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdLow);
-    /* 32-bit mask or Second 32-bit identifier */
-    CAN->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR2 = 
-       ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdHigh) << 16) |
-        (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdLow);
-  }
-
-  /* Filter Mode */
-  if (CAN_FilterInitStruct->CAN_FilterMode == CAN_FilterMode_IdMask)
-  {
-    /*Id/Mask mode for the filter*/
-    CAN->FM1R &= ~(uint32_t)filter_number_bit_pos;
-  }
-  else /* CAN_FilterInitStruct->CAN_FilterMode == CAN_FilterMode_IdList */
-  {
-    /*Identifier list mode for the filter*/
-    CAN->FM1R |= (uint32_t)filter_number_bit_pos;
-  }
-
-  /* Filter FIFO assignment */
-  if (CAN_FilterInitStruct->CAN_FilterFIFOAssignment == CAN_Filter_FIFO0)
-  {
-    /* FIFO 0 assignation for the filter */
-    CAN->FFA1R &= ~(uint32_t)filter_number_bit_pos;
-  }
-
-  if (CAN_FilterInitStruct->CAN_FilterFIFOAssignment == CAN_Filter_FIFO1)
-  {
-    /* FIFO 1 assignation for the filter */
-    CAN->FFA1R |= (uint32_t)filter_number_bit_pos;
-  }
-  
-  /* Filter activation */
-  if (CAN_FilterInitStruct->CAN_FilterActivation == ENABLE)
-  {
-    CAN->FA1R |= filter_number_bit_pos;
-  }
-
-  /* Leave the initialisation mode for the filter */
-  CAN->FMR &= ~FMR_FINIT;
-}
-
-/**
-  * @brief  Fills each CAN_InitStruct member with its default value.
-  * @param  CAN_InitStruct: pointer to a CAN_InitTypeDef structure which ill be initialized.
-  * @retval None
-  */
-void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct)
-{
-  /* Reset CAN init structure parameters values */
-  
-  /* Initialize the time triggered communication mode */
-  CAN_InitStruct->CAN_TTCM = DISABLE;
-  
-  /* Initialize the automatic bus-off management */
-  CAN_InitStruct->CAN_ABOM = DISABLE;
-  
-  /* Initialize the automatic wake-up mode */
-  CAN_InitStruct->CAN_AWUM = DISABLE;
-  
-  /* Initialize the no automatic retransmission */
-  CAN_InitStruct->CAN_NART = DISABLE;
-  
-  /* Initialize the receive FIFO locked mode */
-  CAN_InitStruct->CAN_RFLM = DISABLE;
-  
-  /* Initialize the transmit FIFO priority */
-  CAN_InitStruct->CAN_TXFP = DISABLE;
-  
-  /* Initialize the CAN_Mode member */
-  CAN_InitStruct->CAN_Mode = CAN_Mode_Normal;
-  
-  /* Initialize the CAN_SJW member */
-  CAN_InitStruct->CAN_SJW = CAN_SJW_1tq;
-  
-  /* Initialize the CAN_BS1 member */
-  CAN_InitStruct->CAN_BS1 = CAN_BS1_4tq;
-  
-  /* Initialize the CAN_BS2 member */
-  CAN_InitStruct->CAN_BS2 = CAN_BS2_3tq;
-  
-  /* Initialize the CAN_Prescaler member */
-  CAN_InitStruct->CAN_Prescaler = 1;
-}
-
-/**
-  * @brief  Select the start bank filter for slave CAN.
-  * @param  CAN_BankNumber: Select the start slave bank filter from 1..27.
-  * @retval None
-  */
-void CAN_SlaveStartBank(uint8_t CAN_BankNumber) 
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_BANKNUMBER(CAN_BankNumber));
-  
-  /* Enter Initialisation mode for the filter */
-  CAN->FMR |= FMR_FINIT;
-  
-  /* Select the start slave bank */
-  CAN->FMR &= (uint32_t)0xFFFFC0F1 ;
-  CAN->FMR |= (uint32_t)(CAN_BankNumber)<<8;
-  
-  /* Leave Initialisation mode for the filter */
-  CAN->FMR &= ~FMR_FINIT;
-}
-
-/**
-  * @brief  Enables or disables the DBG Freeze for CAN.
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @param  NewState: new state of the CAN peripheral. 
-  *          This parameter can be: ENABLE (CAN reception/transmission is frozen
-  *          during debug. Reception FIFOs can still be accessed/controlled normally) 
-  *          or DISABLE (CAN is working during debug).
-  * @retval None
-  */
-void CAN_DBGFreeze(CAN_TypeDef* CANx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable Debug Freeze  */
-    CANx->MCR |= MCR_DBF;
-  }
-  else
-  {
-    /* Disable Debug Freeze */
-    CANx->MCR &= ~MCR_DBF;
-  }
-}
-
-/**
-  * @brief  Enables or disables the CAN Time TriggerOperation communication mode.
-  * @note   DLC must be programmed as 8 in order Time Stamp (2 bytes) to be 
-  *         sent over the CAN bus.  
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @param  NewState: Mode new state. This parameter can be: ENABLE or DISABLE.
-  *         When enabled, Time stamp (TIME[15:0]) value is  sent in the last two
-  *         data bytes of the 8-byte message: TIME[7:0] in data byte 6 and TIME[15:8] 
-  *         in data byte 7. 
-  * @retval None
-  */
-void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Enable the TTCM mode */
-    CANx->MCR |= CAN_MCR_TTCM;
-
-    /* Set TGT bits */
-    CANx->sTxMailBox[0].TDTR |= ((uint32_t)CAN_TDT0R_TGT);
-    CANx->sTxMailBox[1].TDTR |= ((uint32_t)CAN_TDT1R_TGT);
-    CANx->sTxMailBox[2].TDTR |= ((uint32_t)CAN_TDT2R_TGT);
-  }
-  else
-  {
-    /* Disable the TTCM mode */
-    CANx->MCR &= (uint32_t)(~(uint32_t)CAN_MCR_TTCM);
-
-    /* Reset TGT bits */
-    CANx->sTxMailBox[0].TDTR &= ((uint32_t)~CAN_TDT0R_TGT);
-    CANx->sTxMailBox[1].TDTR &= ((uint32_t)~CAN_TDT1R_TGT);
-    CANx->sTxMailBox[2].TDTR &= ((uint32_t)~CAN_TDT2R_TGT);
-  }
-}
-/**
-  * @}
-  */
-
-
-/** @defgroup CAN_Group2 CAN Frames Transmission functions
- *  @brief    CAN Frames Transmission functions 
- *
-@verbatim    
- ===============================================================================
-                ##### CAN Frames Transmission functions #####
- ===============================================================================  
-    [..] This section provides functions allowing to 
-         (+) Initiate and transmit a CAN frame message (if there is an empty mailbox).
-         (+) Check the transmission status of a CAN Frame.
-         (+) Cancel a transmit request.
-   
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Initiates and transmits a CAN frame message.
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @param  TxMessage: pointer to a structure which contains CAN Id, CAN DLC and CAN data.
-  * @retval The number of the mailbox that is used for transmission or
-  *         CAN_TxStatus_NoMailBox if there is no empty mailbox.
-  */
-uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage)
-{
-  uint8_t transmit_mailbox = 0;
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_IDTYPE(TxMessage->IDE));
-  assert_param(IS_CAN_RTR(TxMessage->RTR));
-  assert_param(IS_CAN_DLC(TxMessage->DLC));
-
-  /* Select one empty transmit mailbox */
-  if ((CANx->TSR&CAN_TSR_TME0) == CAN_TSR_TME0)
-  {
-    transmit_mailbox = 0;
-  }
-  else if ((CANx->TSR&CAN_TSR_TME1) == CAN_TSR_TME1)
-  {
-    transmit_mailbox = 1;
-  }
-  else if ((CANx->TSR&CAN_TSR_TME2) == CAN_TSR_TME2)
-  {
-    transmit_mailbox = 2;
-  }
-  else
-  {
-    transmit_mailbox = CAN_TxStatus_NoMailBox;
-  }
-
-  if (transmit_mailbox != CAN_TxStatus_NoMailBox)
-  {
-    /* Set up the Id */
-    CANx->sTxMailBox[transmit_mailbox].TIR &= TMIDxR_TXRQ;
-    if (TxMessage->IDE == CAN_Id_Standard)
-    {
-      assert_param(IS_CAN_STDID(TxMessage->StdId));  
-      CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->StdId << 21) | \
-                                                  TxMessage->RTR);
-    }
-    else
-    {
-      assert_param(IS_CAN_EXTID(TxMessage->ExtId));
-      CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->ExtId << 3) | \
-                                                  TxMessage->IDE | \
-                                                  TxMessage->RTR);
-    }
-    
-    /* Set up the DLC */
-    TxMessage->DLC &= (uint8_t)0x0000000F;
-    CANx->sTxMailBox[transmit_mailbox].TDTR &= (uint32_t)0xFFFFFFF0;
-    CANx->sTxMailBox[transmit_mailbox].TDTR |= TxMessage->DLC;
-
-    /* Set up the data field */
-    CANx->sTxMailBox[transmit_mailbox].TDLR = (((uint32_t)TxMessage->Data[3] << 24) | 
-                                             ((uint32_t)TxMessage->Data[2] << 16) |
-                                             ((uint32_t)TxMessage->Data[1] << 8) | 
-                                             ((uint32_t)TxMessage->Data[0]));
-    CANx->sTxMailBox[transmit_mailbox].TDHR = (((uint32_t)TxMessage->Data[7] << 24) | 
-                                             ((uint32_t)TxMessage->Data[6] << 16) |
-                                             ((uint32_t)TxMessage->Data[5] << 8) |
-                                             ((uint32_t)TxMessage->Data[4]));
-    /* Request transmission */
-    CANx->sTxMailBox[transmit_mailbox].TIR |= TMIDxR_TXRQ;
-  }
-  return transmit_mailbox;
-}
-
-/**
-  * @brief  Checks the transmission status of a CAN Frame.
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @param  TransmitMailbox: the number of the mailbox that is used for transmission.
-  * @retval CAN_TxStatus_Ok if the CAN driver transmits the message, 
-  *         CAN_TxStatus_Failed in an other case.
-  */
-uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox)
-{
-  uint32_t state = 0;
-
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_TRANSMITMAILBOX(TransmitMailbox));
- 
-  switch (TransmitMailbox)
-  {
-    case (CAN_TXMAILBOX_0): 
-      state =   CANx->TSR &  (CAN_TSR_RQCP0 | CAN_TSR_TXOK0 | CAN_TSR_TME0);
-      break;
-    case (CAN_TXMAILBOX_1): 
-      state =   CANx->TSR &  (CAN_TSR_RQCP1 | CAN_TSR_TXOK1 | CAN_TSR_TME1);
-      break;
-    case (CAN_TXMAILBOX_2): 
-      state =   CANx->TSR &  (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2);
-      break;
-    default:
-      state = CAN_TxStatus_Failed;
-      break;
-  }
-  switch (state)
-  {
-      /* transmit pending  */
-    case (0x0): state = CAN_TxStatus_Pending;
-      break;
-      /* transmit failed  */
-     case (CAN_TSR_RQCP0 | CAN_TSR_TME0): state = CAN_TxStatus_Failed;
-      break;
-     case (CAN_TSR_RQCP1 | CAN_TSR_TME1): state = CAN_TxStatus_Failed;
-      break;
-     case (CAN_TSR_RQCP2 | CAN_TSR_TME2): state = CAN_TxStatus_Failed;
-      break;
-      /* transmit succeeded  */
-    case (CAN_TSR_RQCP0 | CAN_TSR_TXOK0 | CAN_TSR_TME0):state = CAN_TxStatus_Ok;
-      break;
-    case (CAN_TSR_RQCP1 | CAN_TSR_TXOK1 | CAN_TSR_TME1):state = CAN_TxStatus_Ok;
-      break;
-    case (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2):state = CAN_TxStatus_Ok;
-      break;
-    default: state = CAN_TxStatus_Failed;
-      break;
-  }
-  return (uint8_t) state;
-}
-
-/**
-  * @brief  Cancels a transmit request.
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @param  Mailbox: Mailbox number.
-  * @retval None
-  */
-void CAN_CancelTransmit(CAN_TypeDef* CANx, uint8_t Mailbox)
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_TRANSMITMAILBOX(Mailbox));
-  /* abort transmission */
-  switch (Mailbox)
-  {
-    case (CAN_TXMAILBOX_0): CANx->TSR |= CAN_TSR_ABRQ0;
-      break;
-    case (CAN_TXMAILBOX_1): CANx->TSR |= CAN_TSR_ABRQ1;
-      break;
-    case (CAN_TXMAILBOX_2): CANx->TSR |= CAN_TSR_ABRQ2;
-      break;
-    default:
-      break;
-  }
-}
-/**
-  * @}
-  */
-
-
-/** @defgroup CAN_Group3 CAN Frames Reception functions
- *  @brief    CAN Frames Reception functions 
- *
-@verbatim    
- ===============================================================================
-                  ##### CAN Frames Reception functions #####
- ===============================================================================  
-    [..] This section provides functions allowing to 
-         (+) Receive a correct CAN frame.
-         (+) Release a specified receive FIFO (2 FIFOs are available).
-         (+) Return the number of the pending received CAN frames.
-   
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Receives a correct CAN frame.
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @param  FIFONumber: Receive FIFO number, CAN_FIFO0 or CAN_FIFO1.
-  * @param  RxMessage: pointer to a structure receive frame which contains CAN Id,
-  *         CAN DLC, CAN data and FMI number.
-  * @retval None
-  */
-void CAN_Receive(CAN_TypeDef* CANx, uint8_t FIFONumber, CanRxMsg* RxMessage)
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_FIFO(FIFONumber));
-  /* Get the Id */
-  RxMessage->IDE = (uint8_t)0x04 & CANx->sFIFOMailBox[FIFONumber].RIR;
-  if (RxMessage->IDE == CAN_Id_Standard)
-  {
-    RxMessage->StdId = (uint32_t)0x000007FF & (CANx->sFIFOMailBox[FIFONumber].RIR >> 21);
-  }
-  else
-  {
-    RxMessage->ExtId = (uint32_t)0x1FFFFFFF & (CANx->sFIFOMailBox[FIFONumber].RIR >> 3);
-  }
-  
-  RxMessage->RTR = (uint8_t)0x02 & CANx->sFIFOMailBox[FIFONumber].RIR;
-  /* Get the DLC */
-  RxMessage->DLC = (uint8_t)0x0F & CANx->sFIFOMailBox[FIFONumber].RDTR;
-  /* Get the FMI */
-  RxMessage->FMI = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDTR >> 8);
-  /* Get the data field */
-  RxMessage->Data[0] = (uint8_t)0xFF & CANx->sFIFOMailBox[FIFONumber].RDLR;
-  RxMessage->Data[1] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDLR >> 8);
-  RxMessage->Data[2] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDLR >> 16);
-  RxMessage->Data[3] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDLR >> 24);
-  RxMessage->Data[4] = (uint8_t)0xFF & CANx->sFIFOMailBox[FIFONumber].RDHR;
-  RxMessage->Data[5] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDHR >> 8);
-  RxMessage->Data[6] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDHR >> 16);
-  RxMessage->Data[7] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDHR >> 24);
-  /* Release the FIFO */
-  /* Release FIFO0 */
-  if (FIFONumber == CAN_FIFO0)
-  {
-    CANx->RF0R |= CAN_RF0R_RFOM0;
-  }
-  /* Release FIFO1 */
-  else /* FIFONumber == CAN_FIFO1 */
-  {
-    CANx->RF1R |= CAN_RF1R_RFOM1;
-  }
-}
-
-/**
-  * @brief  Releases the specified receive FIFO.
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @param  FIFONumber: FIFO to release, CAN_FIFO0 or CAN_FIFO1.
-  * @retval None
-  */
-void CAN_FIFORelease(CAN_TypeDef* CANx, uint8_t FIFONumber)
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_FIFO(FIFONumber));
-  /* Release FIFO0 */
-  if (FIFONumber == CAN_FIFO0)
-  {
-    CANx->RF0R |= CAN_RF0R_RFOM0;
-  }
-  /* Release FIFO1 */
-  else /* FIFONumber == CAN_FIFO1 */
-  {
-    CANx->RF1R |= CAN_RF1R_RFOM1;
-  }
-}
-
-/**
-  * @brief  Returns the number of pending received messages.
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @param  FIFONumber: Receive FIFO number, CAN_FIFO0 or CAN_FIFO1.
-  * @retval NbMessage : which is the number of pending message.
-  */
-uint8_t CAN_MessagePending(CAN_TypeDef* CANx, uint8_t FIFONumber)
-{
-  uint8_t message_pending=0;
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_FIFO(FIFONumber));
-  if (FIFONumber == CAN_FIFO0)
-  {
-    message_pending = (uint8_t)(CANx->RF0R&(uint32_t)0x03);
-  }
-  else if (FIFONumber == CAN_FIFO1)
-  {
-    message_pending = (uint8_t)(CANx->RF1R&(uint32_t)0x03);
-  }
-  else
-  {
-    message_pending = 0;
-  }
-  return message_pending;
-}
-/**
-  * @}
-  */
-
-
-/** @defgroup CAN_Group4 CAN Operation modes functions
- *  @brief    CAN Operation modes functions 
- *
-@verbatim    
- ===============================================================================
-                    ##### CAN Operation modes functions #####
- ===============================================================================  
-    [..] This section provides functions allowing to select the CAN Operation modes:
-         (+) sleep mode.
-         (+) normal mode. 
-         (+) initialization mode.
-   
-@endverbatim
-  * @{
-  */
-  
-  
-/**
-  * @brief  Selects the CAN Operation mode.
-  * @param  CAN_OperatingMode: CAN Operating Mode.
-  *         This parameter can be one of @ref CAN_OperatingMode_TypeDef enumeration.
-  * @retval status of the requested mode which can be: 
-  *         - CAN_ModeStatus_Failed:  CAN failed entering the specific mode 
-  *         - CAN_ModeStatus_Success: CAN Succeed entering the specific mode 
-  */
-uint8_t CAN_OperatingModeRequest(CAN_TypeDef* CANx, uint8_t CAN_OperatingMode)
-{
-  uint8_t status = CAN_ModeStatus_Failed;
-  
-  /* Timeout for INAK or also for SLAK bits*/
-  uint32_t timeout = INAK_TIMEOUT; 
-
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_OPERATING_MODE(CAN_OperatingMode));
-
-  if (CAN_OperatingMode == CAN_OperatingMode_Initialization)
-  {
-    /* Request initialisation */
-    CANx->MCR = (uint32_t)((CANx->MCR & (uint32_t)(~(uint32_t)CAN_MCR_SLEEP)) | CAN_MCR_INRQ);
-
-    /* Wait the acknowledge */
-    while (((CANx->MSR & CAN_MODE_MASK) != CAN_MSR_INAK) && (timeout != 0))
-    {
-      timeout--;
-    }
-    if ((CANx->MSR & CAN_MODE_MASK) != CAN_MSR_INAK)
-    {
-      status = CAN_ModeStatus_Failed;
-    }
-    else
-    {
-      status = CAN_ModeStatus_Success;
-    }
-  }
-  else  if (CAN_OperatingMode == CAN_OperatingMode_Normal)
-  {
-    /* Request leave initialisation and sleep mode  and enter Normal mode */
-    CANx->MCR &= (uint32_t)(~(CAN_MCR_SLEEP|CAN_MCR_INRQ));
-
-    /* Wait the acknowledge */
-    while (((CANx->MSR & CAN_MODE_MASK) != 0) && (timeout!=0))
-    {
-      timeout--;
-    }
-    if ((CANx->MSR & CAN_MODE_MASK) != 0)
-    {
-      status = CAN_ModeStatus_Failed;
-    }
-    else
-    {
-      status = CAN_ModeStatus_Success;
-    }
-  }
-  else  if (CAN_OperatingMode == CAN_OperatingMode_Sleep)
-  {
-    /* Request Sleep mode */
-    CANx->MCR = (uint32_t)((CANx->MCR & (uint32_t)(~(uint32_t)CAN_MCR_INRQ)) | CAN_MCR_SLEEP);
-
-    /* Wait the acknowledge */
-    while (((CANx->MSR & CAN_MODE_MASK) != CAN_MSR_SLAK) && (timeout!=0))
-    {
-      timeout--;
-    }
-    if ((CANx->MSR & CAN_MODE_MASK) != CAN_MSR_SLAK)
-    {
-      status = CAN_ModeStatus_Failed;
-    }
-    else
-    {
-      status = CAN_ModeStatus_Success;
-    }
-  }
-  else
-  {
-    status = CAN_ModeStatus_Failed;
-  }
-
-  return  (uint8_t) status;
-}
-
-/**
-  * @brief  Enters the Sleep (low power) mode.
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @retval CAN_Sleep_Ok if sleep entered, CAN_Sleep_Failed otherwise.
-  */
-uint8_t CAN_Sleep(CAN_TypeDef* CANx)
-{
-  uint8_t sleepstatus = CAN_Sleep_Failed;
-  
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-    
-  /* Request Sleep mode */
-   CANx->MCR = (((CANx->MCR) & (uint32_t)(~(uint32_t)CAN_MCR_INRQ)) | CAN_MCR_SLEEP);
-   
-  /* Sleep mode status */
-  if ((CANx->MSR & (CAN_MSR_SLAK|CAN_MSR_INAK)) == CAN_MSR_SLAK)
-  {
-    /* Sleep mode not entered */
-    sleepstatus =  CAN_Sleep_Ok;
-  }
-  /* return sleep mode status */
-   return (uint8_t)sleepstatus;
-}
-
-/**
-  * @brief  Wakes up the CAN peripheral from sleep mode .
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @retval CAN_WakeUp_Ok if sleep mode left, CAN_WakeUp_Failed otherwise.
-  */
-uint8_t CAN_WakeUp(CAN_TypeDef* CANx)
-{
-  uint32_t wait_slak = SLAK_TIMEOUT;
-  uint8_t wakeupstatus = CAN_WakeUp_Failed;
-  
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-    
-  /* Wake up request */
-  CANx->MCR &= ~(uint32_t)CAN_MCR_SLEEP;
-    
-  /* Sleep mode status */
-  while(((CANx->MSR & CAN_MSR_SLAK) == CAN_MSR_SLAK)&&(wait_slak!=0x00))
-  {
-   wait_slak--;
-  }
-  if((CANx->MSR & CAN_MSR_SLAK) != CAN_MSR_SLAK)
-  {
-   /* wake up done : Sleep mode exited */
-    wakeupstatus = CAN_WakeUp_Ok;
-  }
-  /* return wakeup status */
-  return (uint8_t)wakeupstatus;
-}
-/**
-  * @}
-  */
-
-
-/** @defgroup CAN_Group5 CAN Bus Error management functions
- *  @brief    CAN Bus Error management functions 
- *
-@verbatim    
- ===============================================================================
-                  ##### CAN Bus Error management functions #####
- ===============================================================================  
-    [..] This section provides functions allowing to 
-         (+) Return the CANx's last error code (LEC).
-         (+) Return the CANx Receive Error Counter (REC).
-         (+) Return the LSB of the 9-bit CANx Transmit Error Counter(TEC).
-    [..]
-         (@) If TEC is greater than 255, The CAN is in bus-off state.
-         (@) If REC or TEC are greater than 96, an Error warning flag occurs.
-         (@) If REC or TEC are greater than 127, an Error Passive Flag occurs.
-                        
-@endverbatim
-  * @{
-  */
-  
-/**
-  * @brief  Returns the CANx's last error code (LEC).
-  * @param  CANx: where x can be 1 to select the CAN peripheral.
-  * @retval Error code: 
-  *          - CAN_ERRORCODE_NoErr: No Error  
-  *          - CAN_ERRORCODE_StuffErr: Stuff Error
-  *          - CAN_ERRORCODE_FormErr: Form Error
-  *          - CAN_ERRORCODE_ACKErr : Acknowledgment Error
-  *          - CAN_ERRORCODE_BitRecessiveErr: Bit Recessive Error
-  *          - CAN_ERRORCODE_BitDominantErr: Bit Dominant Error
-  *          - CAN_ERRORCODE_CRCErr: CRC Error
-  *          - CAN_ERRORCODE_SoftwareSetErr: Software Set Error  
-  */
-uint8_t CAN_GetLastErrorCode(CAN_TypeDef* CANx)
-{
-  uint8_t errorcode=0;
-  
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  
-  /* Get the error code*/
-  errorcode = (((uint8_t)CANx->ESR) & (uint8_t)CAN_ESR_LEC);
-  
-  /* Return the error code*/
-  return errorcode;
-}
-
-/**
-  * @brief  Returns the CANx Receive Error Counter (REC).
-  * @note   In case of an error during reception, this counter is incremented 
-  *         by 1 or by 8 depending on the error condition as defined by the CAN 
-  *         standard. After every successful reception, the counter is 
-  *         decremented by 1 or reset to 120 if its value was higher than 128. 
-  *         When the counter value exceeds 127, the CAN controller enters the 
-  *         error passive state.  
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.  
-  * @retval CAN Receive Error Counter. 
-  */
-uint8_t CAN_GetReceiveErrorCounter(CAN_TypeDef* CANx)
-{
-  uint8_t counter=0;
-  
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  
-  /* Get the Receive Error Counter*/
-  counter = (uint8_t)((CANx->ESR & CAN_ESR_REC)>> 24);
-  
-  /* Return the Receive Error Counter*/
-  return counter;
-}
-
-
-/**
-  * @brief  Returns the LSB of the 9-bit CANx Transmit Error Counter(TEC).
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @retval LSB of the 9-bit CAN Transmit Error Counter. 
-  */
-uint8_t CAN_GetLSBTransmitErrorCounter(CAN_TypeDef* CANx)
-{
-  uint8_t counter=0;
-  
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  
-  /* Get the LSB of the 9-bit CANx Transmit Error Counter(TEC) */
-  counter = (uint8_t)((CANx->ESR & CAN_ESR_TEC)>> 16);
-  
-  /* Return the LSB of the 9-bit CANx Transmit Error Counter(TEC) */
-  return counter;
-}
-/**
-  * @}
-  */
-
-/** @defgroup CAN_Group6 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions
- *
-@verbatim   
- ===============================================================================
-              ##### Interrupts and flags management functions #####
- ===============================================================================  
-    [..] This section provides functions allowing to configure the CAN Interrupts 
-         and to get the status and clear flags and Interrupts pending bits.
-    [..] The CAN provides 14 Interrupts sources and 15 Flags:
-   
-  *** Flags ***
-  =============
-    [..] The 15 flags can be divided on 4 groups: 
-         (+) Transmit Flags:
-             (++) CAN_FLAG_RQCP0. 
-             (++) CAN_FLAG_RQCP1. 
-             (++) CAN_FLAG_RQCP2: Request completed MailBoxes 0, 1 and 2  Flags
-                  Set when when the last request (transmit or abort) has 
-                  been performed. 
-         (+) Receive Flags:
-             (++) CAN_FLAG_FMP0.
-             (++) CAN_FLAG_FMP1: FIFO 0 and 1 Message Pending Flags; 
-                  Set to signal that messages are pending in the receive FIFO.
-                  These Flags are cleared only by hardware. 
-             (++) CAN_FLAG_FF0.
-             (++) CAN_FLAG_FF1: FIFO 0 and 1 Full Flags; 
-                  Set when three messages are stored in the selected FIFO.                        
-             (++) CAN_FLAG_FOV0.              
-             (++) CAN_FLAG_FOV1: FIFO 0 and 1 Overrun Flags; 
-                  Set when a new message has been received and passed the filter 
-                  while the FIFO was full.         
-         (+) Operating Mode Flags: 
-             (++) CAN_FLAG_WKU: Wake up Flag; 
-                  Set to signal that a SOF bit has been detected while the CAN 
-                  hardware was in Sleep mode. 
-             (++) CAN_FLAG_SLAK: Sleep acknowledge Flag;
-                  Set to signal that the CAN has entered Sleep Mode. 
-         (+) Error Flags:  
-             (++) CAN_FLAG_EWG: Error Warning Flag;
-                  Set when the warning limit has been reached (Receive Error Counter 
-                  or Transmit Error Counter greater than 96). 
-                  This Flag is cleared only by hardware.
-             (++) CAN_FLAG_EPV: Error Passive Flag;
-                  Set when the Error Passive limit has been reached (Receive Error 
-                  Counter or Transmit Error Counter greater than 127).
-                  This Flag is cleared only by hardware.
-             (++) CAN_FLAG_BOF: Bus-Off Flag;
-                  Set when CAN enters the bus-off state. The bus-off state is 
-                  entered on TEC overflow, greater than 255.
-                  This Flag is cleared only by hardware.
-             (++) CAN_FLAG_LEC: Last error code Flag;
-                  Set If a message has been transferred (reception or transmission) 
-                  with error, and the error code is hold.                      
-  
-  *** Interrupts ***
-  ==================
-    [..] The 14 interrupts can be divided on 4 groups: 
-         (+) Transmit interrupt:   
-             (++) CAN_IT_TME: Transmit mailbox empty Interrupt;
-                  If enabled, this interrupt source is pending when no transmit 
-                  request are pending for Tx mailboxes.      
-         (+) Receive Interrupts:   
-             (++) CAN_IT_FMP0.
-             (++) CAN_IT_FMP1: FIFO 0 and FIFO1 message pending Interrupts;
-                  If enabled, these interrupt sources are pending when messages 
-                  are pending in the receive FIFO.
-                  The corresponding interrupt pending bits are cleared only by hardware.
-             (++) CAN_IT_FF0.              
-             (++) CAN_IT_FF1: FIFO 0 and FIFO1 full Interrupts;
-                  If enabled, these interrupt sources are pending when three messages 
-                  are stored in the selected FIFO.
-             (++) CAN_IT_FOV0.        
-             (++) CAN_IT_FOV1: FIFO 0 and FIFO1 overrun Interrupts;        
-                  If enabled, these interrupt sources are pending when a new message 
-                  has been received and passed the filter while the FIFO was full.
-         (+) Operating Mode Interrupts:    
-             (++) CAN_IT_WKU: Wake-up Interrupt;
-                  If enabled, this interrupt source is pending when a SOF bit has 
-                  been detected while the CAN hardware was in Sleep mode.
-             (++) CAN_IT_SLK: Sleep acknowledge Interrupt:
-                  If enabled, this interrupt source is pending when the CAN has 
-                  entered Sleep Mode.       
-         (+) Error Interrupts:     
-             (++) CAN_IT_EWG: Error warning Interrupt; 
-                  If enabled, this interrupt source is pending when the warning limit 
-                  has been reached (Receive Error Counter or Transmit Error Counter=96). 
-             (++) CAN_IT_EPV: Error passive Interrupt;        
-                  If enabled, this interrupt source is pending when the Error Passive 
-                  limit has been reached (Receive Error Counter or Transmit Error Counter>127).
-             (++) CAN_IT_BOF: Bus-off Interrupt;
-                  If enabled, this interrupt source is pending when CAN enters 
-                  the bus-off state. The bus-off state is entered on TEC overflow, 
-                  greater than 255.
-                  This Flag is cleared only by hardware.
-             (++) CAN_IT_LEC: Last error code Interrupt;        
-                  If enabled, this interrupt source is pending when a message has 
-                  been transferred (reception or transmission) with error and the 
-                  error code is hold.
-             (++) CAN_IT_ERR: Error Interrupt;
-                  If enabled, this interrupt source is pending when an error condition 
-                  is pending.      
-    [..] Managing the CAN controller events: 
-         The user should identify which mode will be used in his application to manage 
-         the CAN controller events: Polling mode or Interrupt mode.
-         (+) In the Polling Mode it is advised to use the following functions:
-             (++) CAN_GetFlagStatus() : to check if flags events occur. 
-             (++) CAN_ClearFlag()     : to clear the flags events.
-         (+) In the Interrupt Mode it is advised to use the following functions:
-             (++) CAN_ITConfig()       : to enable or disable the interrupt source.
-             (++) CAN_GetITStatus()    : to check if Interrupt occurs.
-             (++) CAN_ClearITPendingBit() : to clear the Interrupt pending Bit 
-                  (corresponding Flag).
-                  This function has no impact on CAN_IT_FMP0 and CAN_IT_FMP1 Interrupts 
-                  pending bits since there are cleared only by hardware. 
-  
-@endverbatim
-  * @{
-  */ 
-/**
-  * @brief  Enables or disables the specified CANx interrupts.
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @param  CAN_IT: specifies the CAN interrupt sources to be enabled or disabled.
-  *          This parameter can be: 
-  *            @arg CAN_IT_TME: Transmit mailbox empty Interrupt 
-  *            @arg CAN_IT_FMP0: FIFO 0 message pending Interrupt 
-  *            @arg CAN_IT_FF0: FIFO 0 full Interrupt
-  *            @arg CAN_IT_FOV0: FIFO 0 overrun Interrupt
-  *            @arg CAN_IT_FMP1: FIFO 1 message pending Interrupt 
-  *            @arg CAN_IT_FF1: FIFO 1 full Interrupt
-  *            @arg CAN_IT_FOV1: FIFO 1 overrun Interrupt
-  *            @arg CAN_IT_WKU: Wake-up Interrupt
-  *            @arg CAN_IT_SLK: Sleep acknowledge Interrupt  
-  *            @arg CAN_IT_EWG: Error warning Interrupt
-  *            @arg CAN_IT_EPV: Error passive Interrupt
-  *            @arg CAN_IT_BOF: Bus-off Interrupt  
-  *            @arg CAN_IT_LEC: Last error code Interrupt
-  *            @arg CAN_IT_ERR: Error Interrupt
-  * @param  NewState: new state of the CAN interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_IT(CAN_IT));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected CANx interrupt */
-    CANx->IER |= CAN_IT;
-  }
-  else
-  {
-    /* Disable the selected CANx interrupt */
-    CANx->IER &= ~CAN_IT;
-  }
-}
-/**
-  * @brief  Checks whether the specified CAN flag is set or not.
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @param  CAN_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *            @arg CAN_FLAG_RQCP0: Request MailBox0 Flag
-  *            @arg CAN_FLAG_RQCP1: Request MailBox1 Flag
-  *            @arg CAN_FLAG_RQCP2: Request MailBox2 Flag
-  *            @arg CAN_FLAG_FMP0: FIFO 0 Message Pending Flag   
-  *            @arg CAN_FLAG_FF0: FIFO 0 Full Flag       
-  *            @arg CAN_FLAG_FOV0: FIFO 0 Overrun Flag 
-  *            @arg CAN_FLAG_FMP1: FIFO 1 Message Pending Flag   
-  *            @arg CAN_FLAG_FF1: FIFO 1 Full Flag        
-  *            @arg CAN_FLAG_FOV1: FIFO 1 Overrun Flag     
-  *            @arg CAN_FLAG_WKU: Wake up Flag
-  *            @arg CAN_FLAG_SLAK: Sleep acknowledge Flag 
-  *            @arg CAN_FLAG_EWG: Error Warning Flag
-  *            @arg CAN_FLAG_EPV: Error Passive Flag  
-  *            @arg CAN_FLAG_BOF: Bus-Off Flag    
-  *            @arg CAN_FLAG_LEC: Last error code Flag      
-  * @retval The new state of CAN_FLAG (SET or RESET).
-  */
-FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-  
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_GET_FLAG(CAN_FLAG));
-  
-
-  if((CAN_FLAG & CAN_FLAGS_ESR) != (uint32_t)RESET)
-  { 
-    /* Check the status of the specified CAN flag */
-    if ((CANx->ESR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET)
-    { 
-      /* CAN_FLAG is set */
-      bitstatus = SET;
-    }
-    else
-    { 
-      /* CAN_FLAG is reset */
-      bitstatus = RESET;
-    }
-  }
-  else if((CAN_FLAG & CAN_FLAGS_MSR) != (uint32_t)RESET)
-  { 
-    /* Check the status of the specified CAN flag */
-    if ((CANx->MSR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET)
-    { 
-      /* CAN_FLAG is set */
-      bitstatus = SET;
-    }
-    else
-    { 
-      /* CAN_FLAG is reset */
-      bitstatus = RESET;
-    }
-  }
-  else if((CAN_FLAG & CAN_FLAGS_TSR) != (uint32_t)RESET)
-  { 
-    /* Check the status of the specified CAN flag */
-    if ((CANx->TSR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET)
-    { 
-      /* CAN_FLAG is set */
-      bitstatus = SET;
-    }
-    else
-    { 
-      /* CAN_FLAG is reset */
-      bitstatus = RESET;
-    }
-  }
-  else if((CAN_FLAG & CAN_FLAGS_RF0R) != (uint32_t)RESET)
-  { 
-    /* Check the status of the specified CAN flag */
-    if ((CANx->RF0R & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET)
-    { 
-      /* CAN_FLAG is set */
-      bitstatus = SET;
-    }
-    else
-    { 
-      /* CAN_FLAG is reset */
-      bitstatus = RESET;
-    }
-  }
-  else /* If(CAN_FLAG & CAN_FLAGS_RF1R != (uint32_t)RESET) */
-  { 
-    /* Check the status of the specified CAN flag */
-    if ((uint32_t)(CANx->RF1R & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET)
-    { 
-      /* CAN_FLAG is set */
-      bitstatus = SET;
-    }
-    else
-    { 
-      /* CAN_FLAG is reset */
-      bitstatus = RESET;
-    }
-  }
-  /* Return the CAN_FLAG status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the CAN's pending flags.
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @param  CAN_FLAG: specifies the flag to clear.
-  *          This parameter can be one of the following values:
-  *            @arg CAN_FLAG_RQCP0: Request MailBox0 Flag
-  *            @arg CAN_FLAG_RQCP1: Request MailBox1 Flag
-  *            @arg CAN_FLAG_RQCP2: Request MailBox2 Flag 
-  *            @arg CAN_FLAG_FF0: FIFO 0 Full Flag       
-  *            @arg CAN_FLAG_FOV0: FIFO 0 Overrun Flag  
-  *            @arg CAN_FLAG_FF1: FIFO 1 Full Flag        
-  *            @arg CAN_FLAG_FOV1: FIFO 1 Overrun Flag     
-  *            @arg CAN_FLAG_WKU: Wake up Flag
-  *            @arg CAN_FLAG_SLAK: Sleep acknowledge Flag    
-  *            @arg CAN_FLAG_LEC: Last error code Flag        
-  * @retval None
-  */
-void CAN_ClearFlag(CAN_TypeDef* CANx, uint32_t CAN_FLAG)
-{
-  uint32_t flagtmp=0;
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_CLEAR_FLAG(CAN_FLAG));
-  
-  if (CAN_FLAG == CAN_FLAG_LEC) /* ESR register */
-  {
-    /* Clear the selected CAN flags */
-    CANx->ESR = (uint32_t)RESET;
-  }
-  else /* MSR or TSR or RF0R or RF1R */
-  {
-    flagtmp = CAN_FLAG & 0x000FFFFF;
-
-    if ((CAN_FLAG & CAN_FLAGS_RF0R)!=(uint32_t)RESET)
-    {
-      /* Receive Flags */
-      CANx->RF0R = (uint32_t)(flagtmp);
-    }
-    else if ((CAN_FLAG & CAN_FLAGS_RF1R)!=(uint32_t)RESET)
-    {
-      /* Receive Flags */
-      CANx->RF1R = (uint32_t)(flagtmp);
-    }
-    else if ((CAN_FLAG & CAN_FLAGS_TSR)!=(uint32_t)RESET)
-    {
-      /* Transmit Flags */
-      CANx->TSR = (uint32_t)(flagtmp);
-    }
-    else /* If((CAN_FLAG & CAN_FLAGS_MSR)!=(uint32_t)RESET) */
-    {
-      /* Operating mode Flags */
-      CANx->MSR = (uint32_t)(flagtmp);
-    }
-  }
-}
-
-/**
-  * @brief  Checks whether the specified CANx interrupt has occurred or not.
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @param  CAN_IT: specifies the CAN interrupt source to check.
-  *          This parameter can be one of the following values:
-  *            @arg CAN_IT_TME: Transmit mailbox empty Interrupt 
-  *            @arg CAN_IT_FMP0: FIFO 0 message pending Interrupt 
-  *            @arg CAN_IT_FF0: FIFO 0 full Interrupt
-  *            @arg CAN_IT_FOV0: FIFO 0 overrun Interrupt
-  *            @arg CAN_IT_FMP1: FIFO 1 message pending Interrupt 
-  *            @arg CAN_IT_FF1: FIFO 1 full Interrupt
-  *            @arg CAN_IT_FOV1: FIFO 1 overrun Interrupt
-  *            @arg CAN_IT_WKU: Wake-up Interrupt
-  *            @arg CAN_IT_SLK: Sleep acknowledge Interrupt  
-  *            @arg CAN_IT_EWG: Error warning Interrupt
-  *            @arg CAN_IT_EPV: Error passive Interrupt
-  *            @arg CAN_IT_BOF: Bus-off Interrupt  
-  *            @arg CAN_IT_LEC: Last error code Interrupt
-  *            @arg CAN_IT_ERR: Error Interrupt
-  * @retval The current state of CAN_IT (SET or RESET).
-  */
-ITStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_IT)
-{
-  ITStatus itstatus = RESET;
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_IT(CAN_IT));
-  
-  /* check the interrupt enable bit */
- if((CANx->IER & CAN_IT) != RESET)
- {
-   /* in case the Interrupt is enabled, .... */
-    switch (CAN_IT)
-    {
-      case CAN_IT_TME:
-        /* Check CAN_TSR_RQCPx bits */
-        itstatus = CheckITStatus(CANx->TSR, CAN_TSR_RQCP0|CAN_TSR_RQCP1|CAN_TSR_RQCP2);  
-        break;
-      case CAN_IT_FMP0:
-        /* Check CAN_RF0R_FMP0 bit */
-        itstatus = CheckITStatus(CANx->RF0R, CAN_RF0R_FMP0);  
-        break;
-      case CAN_IT_FF0:
-        /* Check CAN_RF0R_FULL0 bit */
-        itstatus = CheckITStatus(CANx->RF0R, CAN_RF0R_FULL0);  
-        break;
-      case CAN_IT_FOV0:
-        /* Check CAN_RF0R_FOVR0 bit */
-        itstatus = CheckITStatus(CANx->RF0R, CAN_RF0R_FOVR0);  
-        break;
-      case CAN_IT_FMP1:
-        /* Check CAN_RF1R_FMP1 bit */
-        itstatus = CheckITStatus(CANx->RF1R, CAN_RF1R_FMP1);  
-        break;
-      case CAN_IT_FF1:
-        /* Check CAN_RF1R_FULL1 bit */
-        itstatus = CheckITStatus(CANx->RF1R, CAN_RF1R_FULL1);  
-        break;
-      case CAN_IT_FOV1:
-        /* Check CAN_RF1R_FOVR1 bit */
-        itstatus = CheckITStatus(CANx->RF1R, CAN_RF1R_FOVR1);  
-        break;
-      case CAN_IT_WKU:
-        /* Check CAN_MSR_WKUI bit */
-        itstatus = CheckITStatus(CANx->MSR, CAN_MSR_WKUI);  
-        break;
-      case CAN_IT_SLK:
-        /* Check CAN_MSR_SLAKI bit */
-        itstatus = CheckITStatus(CANx->MSR, CAN_MSR_SLAKI);  
-        break;
-      case CAN_IT_EWG:
-        /* Check CAN_ESR_EWGF bit */
-        itstatus = CheckITStatus(CANx->ESR, CAN_ESR_EWGF);  
-        break;
-      case CAN_IT_EPV:
-        /* Check CAN_ESR_EPVF bit */
-        itstatus = CheckITStatus(CANx->ESR, CAN_ESR_EPVF);  
-        break;
-      case CAN_IT_BOF:
-        /* Check CAN_ESR_BOFF bit */
-        itstatus = CheckITStatus(CANx->ESR, CAN_ESR_BOFF);  
-        break;
-      case CAN_IT_LEC:
-        /* Check CAN_ESR_LEC bit */
-        itstatus = CheckITStatus(CANx->ESR, CAN_ESR_LEC);  
-        break;
-      case CAN_IT_ERR:
-        /* Check CAN_MSR_ERRI bit */ 
-        itstatus = CheckITStatus(CANx->MSR, CAN_MSR_ERRI); 
-        break;
-      default:
-        /* in case of error, return RESET */
-        itstatus = RESET;
-        break;
-    }
-  }
-  else
-  {
-   /* in case the Interrupt is not enabled, return RESET */
-    itstatus  = RESET;
-  }
-  
-  /* Return the CAN_IT status */
-  return  itstatus;
-}
-
-/**
-  * @brief  Clears the CANx's interrupt pending bits.
-  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
-  * @param  CAN_IT: specifies the interrupt pending bit to clear.
-  *          This parameter can be one of the following values:
-  *            @arg CAN_IT_TME: Transmit mailbox empty Interrupt
-  *            @arg CAN_IT_FF0: FIFO 0 full Interrupt
-  *            @arg CAN_IT_FOV0: FIFO 0 overrun Interrupt
-  *            @arg CAN_IT_FF1: FIFO 1 full Interrupt
-  *            @arg CAN_IT_FOV1: FIFO 1 overrun Interrupt
-  *            @arg CAN_IT_WKU: Wake-up Interrupt
-  *            @arg CAN_IT_SLK: Sleep acknowledge Interrupt  
-  *            @arg CAN_IT_EWG: Error warning Interrupt
-  *            @arg CAN_IT_EPV: Error passive Interrupt
-  *            @arg CAN_IT_BOF: Bus-off Interrupt  
-  *            @arg CAN_IT_LEC: Last error code Interrupt
-  *            @arg CAN_IT_ERR: Error Interrupt 
-  * @retval None
-  */
-void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_CAN_ALL_PERIPH(CANx));
-  assert_param(IS_CAN_CLEAR_IT(CAN_IT));
-
-  switch (CAN_IT)
-  {
-    case CAN_IT_TME:
-      /* Clear CAN_TSR_RQCPx (rc_w1)*/
-      CANx->TSR = CAN_TSR_RQCP0|CAN_TSR_RQCP1|CAN_TSR_RQCP2;  
-      break;
-    case CAN_IT_FF0:
-      /* Clear CAN_RF0R_FULL0 (rc_w1)*/
-      CANx->RF0R = CAN_RF0R_FULL0; 
-      break;
-    case CAN_IT_FOV0:
-      /* Clear CAN_RF0R_FOVR0 (rc_w1)*/
-      CANx->RF0R = CAN_RF0R_FOVR0; 
-      break;
-    case CAN_IT_FF1:
-      /* Clear CAN_RF1R_FULL1 (rc_w1)*/
-      CANx->RF1R = CAN_RF1R_FULL1;  
-      break;
-    case CAN_IT_FOV1:
-      /* Clear CAN_RF1R_FOVR1 (rc_w1)*/
-      CANx->RF1R = CAN_RF1R_FOVR1; 
-      break;
-    case CAN_IT_WKU:
-      /* Clear CAN_MSR_WKUI (rc_w1)*/
-      CANx->MSR = CAN_MSR_WKUI;  
-      break;
-    case CAN_IT_SLK:
-      /* Clear CAN_MSR_SLAKI (rc_w1)*/ 
-      CANx->MSR = CAN_MSR_SLAKI;   
-      break;
-    case CAN_IT_EWG:
-      /* Clear CAN_MSR_ERRI (rc_w1) */
-      CANx->MSR = CAN_MSR_ERRI;
-       /* @note the corresponding Flag is cleared by hardware depending on the CAN Bus status*/ 
-      break;
-    case CAN_IT_EPV:
-      /* Clear CAN_MSR_ERRI (rc_w1) */
-      CANx->MSR = CAN_MSR_ERRI; 
-       /* @note the corresponding Flag is cleared by hardware depending on the CAN Bus status*/
-      break;
-    case CAN_IT_BOF:
-      /* Clear CAN_MSR_ERRI (rc_w1) */ 
-      CANx->MSR = CAN_MSR_ERRI; 
-       /* @note the corresponding Flag is cleared by hardware depending on the CAN Bus status*/
-       break;
-    case CAN_IT_LEC:
-      /*  Clear LEC bits */
-      CANx->ESR = RESET; 
-      /* Clear CAN_MSR_ERRI (rc_w1) */
-      CANx->MSR = CAN_MSR_ERRI; 
-      break;
-    case CAN_IT_ERR:
-      /*Clear LEC bits */
-      CANx->ESR = RESET; 
-      /* Clear CAN_MSR_ERRI (rc_w1) */
-      CANx->MSR = CAN_MSR_ERRI; 
-       /* @note BOFF, EPVF and EWGF Flags are cleared by hardware depending on the CAN Bus status*/
-       break;
-    default:
-       break;
-   }
-}
- /**
-  * @}
-  */
-
-/**
-  * @brief  Checks whether the CAN interrupt has occurred or not.
-  * @param  CAN_Reg: specifies the CAN interrupt register to check.
-  * @param  It_Bit: specifies the interrupt source bit to check.
-  * @retval The new state of the CAN Interrupt (SET or RESET).
-  */
-static ITStatus CheckITStatus(uint32_t CAN_Reg, uint32_t It_Bit)
-{
-  ITStatus pendingbitstatus = RESET;
-  
-  if ((CAN_Reg & It_Bit) != (uint32_t)RESET)
-  {
-    /* CAN_IT is set */
-    pendingbitstatus = SET;
-  }
-  else
-  {
-    /* CAN_IT is reset */
-    pendingbitstatus = RESET;
-  }
-  return pendingbitstatus;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_cec.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_cec.c
deleted file mode 100644
index f6b4294..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_cec.c	
+++ /dev/null
@@ -1,607 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_cec.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Consumer Electronics Control (CEC) peripheral
-  *          applicable only on STM32F051, STM32F042 and STM32F072 devices:
-  *            + Initialization and Configuration
-  *            + Data transfers functions
-  *            + Interrupts and flags management
-  *               
-  *  @verbatim
-  ==============================================================================
-                            ##### CEC features #####
-  ==============================================================================
-      [..] This device provides some features:
-           (#) Supports HDMI-CEC specification 1.4.
-           (#) Supports two source clocks(HSI/244 or LSE).
-           (#) Works in stop mode(without APB clock, but with CEC clock 32KHz).
-               It can genarate an interrupt in the CEC clock domain that the CPU 
-               wakes up from the low power mode.
-           (#) Configurable Signal Free Time before of transmission start. The 
-               number of nominal data bit periods waited before transmission can be
-               ruled by Hardware or Software.
-           (#) Configurable Peripheral Address (multi-addressing configuration).
-           (#) Supports listen mode.The CEC Messages addressed to different destination
-               can be received without interfering with CEC bus when Listen mode option is enabled.
-           (#) Configurable Rx-Tolerance(Standard and Extended tolerance margin).
-           (#) Error detection with configurable error bit generation.
-           (#) Arbitration lost error in the case of two CEC devices starting at the same time.
-
-                            ##### How to use this driver ##### 
-  ==============================================================================
-      [..] This driver provides functions to configure and program the CEC device,
-       follow steps below:
-           (#) The source clock can be configured using:
-               (++) RCC_CECCLKConfig(RCC_CECCLK_HSI_Div244) for HSI(Default) 
-               (++) RCC_CECCLKConfig(RCC_CECCLK_LSE) for LSE.
-           (#) Enable CEC peripheral clock using RCC_APBPeriphClockCmd(RCC_APBPeriph_CEC, ENABLE).
-           (#) Peripherals alternate function.
-               (++) Connect the pin to the desired peripherals' Alternate Function (AF) using 
-               GPIO_PinAFConfig() function.
-               (++) Configure the desired pin in alternate function by:
-               GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF.
-               (++) Select the type open-drain and output speed via GPIO_OType 
-               and GPIO_Speed members.
-               (++) Call GPIO_Init() function.
-           (#) Configure the Signal Free Time, Rx Tolerance, Stop reception generation 
-               and Bit error generation using the CEC_Init() function.
-               The function CEC_Init() must be called when the CEC peripheral is disabled.
-           (#) Configure the CEC own address by calling the fuction CEC_OwnAddressConfig().
-           (#) Optionally, you can configure the Listen mode using the function CEC_ListenModeCmd().
-           (#) Enable the NVIC and the corresponding interrupt using the function 
-               CEC_ITConfig() if you need to use interrupt mode.
-               CEC_ITConfig() must be called before enabling the CEC peripheral.
-           (#) Enable the CEC using the CEC_Cmd() function.
-           (#) Charge the first data byte in the TXDR register using CEC_SendDataByte().
-           (#) Enable the transmission of the Byte of a CEC message using CEC_StartOfMessage() 
-           (#) Transmit single data through the CEC peripheral using CEC_SendDataByte() 
-               and Receive the last transmitted byte using CEC_ReceiveDataByte().
-           (#) Enable the CEC_EndOfMessage() in order to indicate the last byte of the message.
-      [..]
-           (@) If the listen mode is enabled, Stop reception generation and Bit error generation 
-               must be in reset state.
-           (@) If the CEC message consists of only 1 byte, the function CEC_EndOfMessage()
-               must be called before CEC_StartOfMessage().
-  
-   @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_cec.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup CEC 
-  * @brief CEC driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define BROADCAST_ADDRESS      ((uint32_t)0x0000F)
-#define CFGR_CLEAR_MASK        ((uint32_t)0x7000FE00)   /* CFGR register Mask */
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup CEC_Private_Functions 
-  * @{
-  */
-
-/** @defgroup CEC_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions
- *
-@verbatim  
- ===============================================================================
-                            ##### Initialization and Configuration functions #####
- ===============================================================================
-      [..] This section provides functions allowing to initialize:
-            (+) CEC own addresses
-            (+) CEC Signal Free Time
-            (+) CEC Rx Tolerance
-            (+) CEC Stop Reception
-            (+) CEC Bit Rising Error
-            (+) CEC Long Bit Period Error
-      [..] This section provides also a function to configure the CEC peripheral in Listen Mode.
-           Messages addressed to different destination can be received when Listen mode is 
-           enabled without interfering with CEC bus.
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the CEC peripheral registers to their default reset values.
-  * @param  None
-  * @retval None
-  */
-void CEC_DeInit(void)
-{
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_CEC, ENABLE);
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_CEC, DISABLE);
-}
-
-/**
-  * @brief  Initializes the CEC peripheral according to the specified parameters
-  *         in the CEC_InitStruct.
-  * @note   The CEC parameters must be configured before enabling the CEC peripheral.
-  * @param  CEC_InitStruct: pointer to an CEC_InitTypeDef structure that contains
-  *         the configuration information for the specified CEC peripheral.
-  * @retval None
-  */
-void CEC_Init(CEC_InitTypeDef* CEC_InitStruct)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_CEC_SIGNAL_FREE_TIME(CEC_InitStruct->CEC_SignalFreeTime));
-  assert_param(IS_CEC_RX_TOLERANCE(CEC_InitStruct->CEC_RxTolerance));
-  assert_param(IS_CEC_STOP_RECEPTION(CEC_InitStruct->CEC_StopReception));
-  assert_param(IS_CEC_BIT_RISING_ERROR(CEC_InitStruct->CEC_BitRisingError));
-  assert_param(IS_CEC_LONG_BIT_PERIOD_ERROR(CEC_InitStruct->CEC_LongBitPeriodError));
-  assert_param(IS_CEC_BDR_NO_GEN_ERROR(CEC_InitStruct->CEC_BRDNoGen));
-  assert_param(IS_CEC_SFT_OPTION(CEC_InitStruct->CEC_SFTOption));
-
-  /* Get the CEC CFGR value */
-  tmpreg = CEC->CFGR;
-
-  /* Clear CFGR bits */
-  tmpreg &= CFGR_CLEAR_MASK;
-
-  /* Configure the CEC peripheral */
-  tmpreg |= (CEC_InitStruct->CEC_SignalFreeTime | CEC_InitStruct->CEC_RxTolerance |
-             CEC_InitStruct->CEC_StopReception  | CEC_InitStruct->CEC_BitRisingError |
-             CEC_InitStruct->CEC_LongBitPeriodError| CEC_InitStruct->CEC_BRDNoGen |
-             CEC_InitStruct->CEC_SFTOption);
-
-  /* Write to CEC CFGR  register */
-  CEC->CFGR = tmpreg;
-}
-
-/**
-  * @brief  Fills each CEC_InitStruct member with its default value.
-  * @param  CEC_InitStruct: pointer to a CEC_InitTypeDef structure which will 
-  *         be initialized.
-  * @retval None
-  */
-void CEC_StructInit(CEC_InitTypeDef* CEC_InitStruct)
-{
-  CEC_InitStruct->CEC_SignalFreeTime = CEC_SignalFreeTime_Standard;
-  CEC_InitStruct->CEC_RxTolerance = CEC_RxTolerance_Standard;
-  CEC_InitStruct->CEC_StopReception = CEC_StopReception_Off;
-  CEC_InitStruct->CEC_BitRisingError = CEC_BitRisingError_Off;
-  CEC_InitStruct->CEC_LongBitPeriodError = CEC_LongBitPeriodError_Off;
-  CEC_InitStruct->CEC_BRDNoGen = CEC_BRDNoGen_Off;
-  CEC_InitStruct->CEC_SFTOption = CEC_SFTOption_Off;
-}
-
-/**
-  * @brief  Enables or disables the CEC peripheral.
-  * @param  NewState: new state of the CEC peripheral.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void CEC_Cmd(FunctionalState NewState)
-{
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the CEC peripheral */
-    CEC->CR |= CEC_CR_CECEN;
-  }
-  else
-  {
-    /* Disable the CEC peripheral */
-    CEC->CR &= ~CEC_CR_CECEN;
-  }
-}
-
-/**
-  * @brief  Enables or disables the CEC Listen Mode.
-  * @param  NewState: new state of the Listen Mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void CEC_ListenModeCmd(FunctionalState NewState)
-{
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the Listen Mode */
-    CEC->CFGR |= CEC_CFGR_LSTN;
-  }
-  else
-  {
-    /* Disable the Listen Mode */
-    CEC->CFGR &= ~CEC_CFGR_LSTN;
-  }
-}
-
-/**
-  * @brief  Defines the Own Address of the CEC device.
-  * @param  CEC_OwnAddress: The CEC own address.
-  * @retval None
-  */
-void CEC_OwnAddressConfig(uint8_t CEC_OwnAddress)
-{
-  uint32_t tmp =0x00;
-  /* Check the parameters */
-  assert_param(IS_CEC_ADDRESS(CEC_OwnAddress));
-  tmp = 1 <<(CEC_OwnAddress + 16);
-  /* Set the CEC own address */
-  CEC->CFGR |= tmp;
-}
-
-/**
-  * @brief  Clears the Own Address of the CEC device.
-  * @param  CEC_OwnAddress: The CEC own address.
-  * @retval None
-  */
-void CEC_OwnAddressClear(void)
-{
-  /* Set the CEC own address */
-  CEC->CFGR = 0x0;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup CEC_Group2 Data transfers functions
- *  @brief    Data transfers functions
- *
-@verbatim
- ===============================================================================
-                            ##### Data transfers functions #####
- ===============================================================================
-    [..] This section provides functions allowing the CEC data transfers.The read 
-         access of the CEC_RXDR register can be done using the CEC_ReceiveData()function 
-         and returns the Rx buffered value. Whereas a write access to the CEC_TXDR can be 
-         done using CEC_SendData() function.
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Transmits single data through the CEC peripheral.
-  * @param  Data: the data to transmit.
-  * @retval None
-  */
-void CEC_SendData(uint8_t Data)
-{
-  /* Transmit Data */
-  CEC->TXDR = Data;
-}
-
-/**
-  * @brief  Returns the most recent received data by the CEC peripheral.
-  * @param  None
-  * @retval The received data.
-  */
-uint8_t CEC_ReceiveData(void)
-{
-  /* Receive Data */
-  return (uint8_t)(CEC->RXDR);
-}
-
-/**
-  * @brief  Starts a new message.
-  * @param  None
-  * @retval None
-  */
-void CEC_StartOfMessage(void)
-{
-  /* Starts of new message */
-  CEC->CR |= CEC_CR_TXSOM; 
-}
-
-/**
-  * @brief  Transmits message with an EOM bit.
-  * @param  None
-  * @retval None
-  */
-void CEC_EndOfMessage(void)
-{
-  /* The data byte will be transmitted with an EOM bit */
-  CEC->CR |= CEC_CR_TXEOM;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup CEC_Group3 Interrupts and flags management functions
- *  @brief    Interrupts and flags management functions
-*
-@verbatim
- ===============================================================================
-                            ##### Interrupts and flags management functions ##### 
- ===============================================================================
-    [..] This section provides functions allowing to configure the CEC Interrupts
-         sources and check or clear the flags or pending bits status.
-    [..] The user should identify which mode will be used in his application to manage
-         the communication: Polling mode or Interrupt mode.
-  
-    [..] In polling mode, the CEC can be managed by the following flags:
-            (+) CEC_FLAG_TXACKE : to indicate a missing acknowledge in transmission mode.
-            (+) CEC_FLAG_TXERR  : to indicate an error occurs during transmission mode.
-                                  The initiator detects low impedance in the CEC line.
-            (+) CEC_FLAG_TXUDR  : to indicate if an underrun error occurs in transmission mode.
-                                  The transmission is enabled while the software has not yet 
-                                  loaded any value into the TXDR register.
-            (+) CEC_FLAG_TXEND  : to indicate the end of successful transmission.
-            (+) CEC_FLAG_TXBR   : to indicate the next transmission data has to be written to TXDR.
-            (+) CEC_FLAG_ARBLST : to indicate arbitration lost in the case of two CEC devices
-                                  starting at the same time.
-            (+) CEC_FLAG_RXACKE : to indicate a missing acknowledge in receive mode.
-            (+) CEC_FLAG_LBPE   : to indicate a long bit period error generated during receive mode.
-            (+) CEC_FLAG_SBPE   : to indicate a short bit period error generated during receive mode.
-            (+) CEC_FLAG_BRE    : to indicate a bit rising error generated during receive mode.
-            (+) CEC_FLAG_RXOVR  : to indicate if an overrun error occur while receiving a CEC message.
-                                  A byte is not yet received while a new byte is stored in the RXDR register.
-            (+) CEC_FLAG_RXEND  : to indicate the end Of reception
-            (+) CEC_FLAG_RXBR   : to indicate a new byte has been received from the CEC line and 
-                                  stored into the RXDR buffer.
-    [..]
-           (@)In this Mode, it is advised to use the following functions:
-              FlagStatus CEC_GetFlagStatus(uint16_t CEC_FLAG);
-              void CEC_ClearFlag(uint16_t CEC_FLAG);
-
-    [..] In Interrupt mode, the CEC can be managed by the following interrupt sources:
-           (+) CEC_IT_TXACKE : to indicate a TX Missing acknowledge 
-           (+) CEC_IT_TXACKE : to indicate a missing acknowledge in transmission mode.
-           (+) CEC_IT_TXERR  : to indicate an error occurs during transmission mode.
-                               The initiator detects low impedance in the CEC line.
-           (+) CEC_IT_TXUDR  : to indicate if an underrun error occurs in transmission mode.
-                               The transmission is enabled while the software has not yet 
-                               loaded any value into the TXDR register.
-           (+) CEC_IT_TXEND  : to indicate the end of successful transmission.
-           (+) CEC_IT_TXBR   : to indicate the next transmission data has to be written to TXDR register.
-           (+) CEC_IT_ARBLST : to indicate arbitration lost in the case of two CEC devices
-                                starting at the same time.
-           (+) CEC_IT_RXACKE : to indicate a missing acknowledge in receive mode.
-           (+) CEC_IT_LBPE   : to indicate a long bit period error generated during receive mode.
-           (+) CEC_IT_SBPE   : to indicate a short bit period error generated during receive mode.
-           (+) CEC_IT_BRE    : to indicate a bit rising error generated during receive mode.
-           (+) CEC_IT_RXOVR  : to indicate if an overrun error occur while receiving a CEC message.
-                               A byte is not yet received while a new byte is stored in the RXDR register.
-           (+) CEC_IT_RXEND  : to indicate the end Of reception
-           (+) CEC_IT_RXBR   : to indicate a new byte has been received from the CEC line and 
-                                stored into the RXDR buffer.
-    [..]
-           (@)In this Mode it is advised to use the following functions:
-              void CEC_ITConfig( uint16_t CEC_IT, FunctionalState NewState);
-              ITStatus CEC_GetITStatus(uint16_t CEC_IT);
-              void CEC_ClearITPendingBit(uint16_t CEC_IT);
-              
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the selected CEC interrupts.
-  * @param  CEC_IT: specifies the CEC interrupt source to be enabled.
-  *          This parameter can be any combination of the following values:
-  *            @arg CEC_IT_TXACKE: Tx Missing acknowledge Error
-  *            @arg CEC_IT_TXERR: Tx Error.
-  *            @arg CEC_IT_TXUDR: Tx-Buffer Underrun.
-  *            @arg CEC_IT_TXEND: End of Transmission (successful transmission of the last byte).
-  *            @arg CEC_IT_TXBR: Tx-Byte Request.
-  *            @arg CEC_IT_ARBLST: Arbitration Lost
-  *            @arg CEC_IT_RXACKE: Rx-Missing Acknowledge
-  *            @arg CEC_IT_LBPE: Rx Long period Error
-  *            @arg CEC_IT_SBPE: Rx Short period Error
-  *            @arg CEC_IT_BRE: Rx Bit Rising Error
-  *            @arg CEC_IT_RXOVR: Rx Overrun.
-  *            @arg CEC_IT_RXEND: End Of Reception
-  *            @arg CEC_IT_RXBR: Rx-Byte Received
-  * @param  NewState: new state of the selected CEC interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void CEC_ITConfig(uint16_t CEC_IT, FunctionalState NewState)
-{
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  assert_param(IS_CEC_IT(CEC_IT));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected CEC interrupt */
-    CEC->IER |= CEC_IT;
-  }
-  else
-  {
-    CEC_IT =~CEC_IT;
-    /* Disable the selected CEC interrupt */
-    CEC->IER &= CEC_IT;
-  }
-}
-
-/**
-  * @brief  Gets the CEC flag status.
-  * @param  CEC_FLAG: specifies the CEC flag to check.
-  *     This parameter can be one of the following values:
-  *            @arg CEC_FLAG_TXACKE: Tx Missing acknowledge Error
-  *            @arg CEC_FLAG_TXERR: Tx Error.
-  *            @arg CEC_FLAG_TXUDR: Tx-Buffer Underrun.
-  *            @arg CEC_FLAG_TXEND: End of transmission (successful transmission of the last byte).
-  *            @arg CEC_FLAG_TXBR: Tx-Byte Request.
-  *            @arg CEC_FLAG_ARBLST: Arbitration Lost
-  *            @arg CEC_FLAG_RXACKE: Rx-Missing Acknowledge 
-  *            @arg CEC_FLAG_LBPE: Rx Long period Error
-  *            @arg CEC_FLAG_SBPE: Rx Short period Error
-  *            @arg CEC_FLAG_BRE: Rx Bit Rissing Error
-  *            @arg CEC_FLAG_RXOVR: Rx Overrun.
-  *            @arg CEC_FLAG_RXEND: End Of Reception.
-  *            @arg CEC_FLAG_RXBR: Rx-Byte Received.
-  * @retval The new state of CEC_FLAG (SET or RESET)
-  */
-FlagStatus CEC_GetFlagStatus(uint16_t CEC_FLAG) 
-{
-  FlagStatus bitstatus = RESET;
-  
-  assert_param(IS_CEC_GET_FLAG(CEC_FLAG));
-  
-  /* Check the status of the specified CEC flag */
-  if ((CEC->ISR & CEC_FLAG) != (uint16_t)RESET)
-  {
-    /* CEC flag is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* CEC flag is reset */
-    bitstatus = RESET;
-  }
-
-  /* Return the CEC flag status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the CEC's pending flags.
-  * @param  CEC_FLAG: specifies the flag to clear. 
-  *          This parameter can be any combination of the following values:
-  *            @arg CEC_FLAG_TXACKE: Tx Missing acknowledge Error
-  *            @arg CEC_FLAG_TXERR: Tx Error
-  *            @arg CEC_FLAG_TXUDR: Tx-Buffer Underrun
-  *            @arg CEC_FLAG_TXEND: End of transmission (successful transmission of the last byte).
-  *            @arg CEC_FLAG_TXBR: Tx-Byte Request
-  *            @arg CEC_FLAG_ARBLST: Arbitration Lost
-  *            @arg CEC_FLAG_RXACKE: Rx Missing Acknowledge 
-  *            @arg CEC_FLAG_LBPE: Rx Long period Error
-  *            @arg CEC_FLAG_SBPE: Rx Short period Error
-  *            @arg CEC_FLAG_BRE: Rx Bit Rising Error
-  *            @arg CEC_FLAG_RXOVR: Rx Overrun
-  *            @arg CEC_FLAG_RXEND: End Of Reception
-  *            @arg CEC_FLAG_RXBR: Rx-Byte Received
-  * @retval None
-  */
-void CEC_ClearFlag(uint32_t CEC_FLAG)
-{
-  assert_param(IS_CEC_CLEAR_FLAG(CEC_FLAG));
-
-  /* Clear the selected CEC flag */
-  CEC->ISR = CEC_FLAG;
-}
-
-/**
-  * @brief  Checks whether the specified CEC interrupt has occurred or not.
-  * @param  CEC_IT: specifies the CEC interrupt source to check. 
-  *          This parameter can be one of the following values:
-  *            @arg CEC_IT_TXACKE: Tx Missing acknowledge Error
-  *            @arg CEC_IT_TXERR: Tx Error.
-  *            @arg CEC_IT_TXUDR: Tx-Buffer Underrun.
-  *            @arg CEC_IT_TXEND: End of transmission (successful transmission of the last byte).
-  *            @arg CEC_IT_TXBR: Tx-Byte Request.
-  *            @arg CEC_IT_ARBLST: Arbitration Lost.
-  *            @arg CEC_IT_RXACKE: Rx-Missing Acknowledge.
-  *            @arg CEC_IT_LBPE: Rx Long period Error.
-  *            @arg CEC_IT_SBPE: Rx Short period Error.
-  *            @arg CEC_IT_BRE: Rx Bit Rising Error.
-  *            @arg CEC_IT_RXOVR: Rx Overrun.
-  *            @arg CEC_IT_RXEND: End Of Reception.
-  *            @arg CEC_IT_RXBR: Rx-Byte Received 
-  * @retval The new state of CEC_IT (SET or RESET).
-  */
-ITStatus CEC_GetITStatus(uint16_t CEC_IT)
-{
-  ITStatus bitstatus = RESET;
-  uint32_t enablestatus = 0;
-
-  /* Check the parameters */
-  assert_param(IS_CEC_GET_IT(CEC_IT));
-
-  /* Get the CEC IT enable bit status */
-  enablestatus = (CEC->IER & CEC_IT);
-
-  /* Check the status of the specified CEC interrupt */
-  if (((CEC->ISR & CEC_IT) != (uint32_t)RESET) && enablestatus)
-  {
-    /* CEC interrupt is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* CEC interrupt is reset */
-    bitstatus = RESET;
-  }
-
-  /* Return the CEC interrupt status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the CEC's interrupt pending bits.
-  * @param  CEC_IT: specifies the CEC interrupt pending bit to clear.
-  *          This parameter can be any combination of the following values:
-  *            @arg CEC_IT_TXACKE: Tx Missing acknowledge Error
-  *            @arg CEC_IT_TXERR: Tx Error
-  *            @arg CEC_IT_TXUDR: Tx-Buffer Underrun
-  *            @arg CEC_IT_TXEND: End of Transmission
-  *            @arg CEC_IT_TXBR: Tx-Byte Request
-  *            @arg CEC_IT_ARBLST: Arbitration Lost
-  *            @arg CEC_IT_RXACKE: Rx-Missing Acknowledge
-  *            @arg CEC_IT_LBPE: Rx Long period Error
-  *            @arg CEC_IT_SBPE: Rx Short period Error
-  *            @arg CEC_IT_BRE: Rx Bit Rising Error
-  *            @arg CEC_IT_RXOVR: Rx Overrun
-  *            @arg CEC_IT_RXEND: End Of Reception
-  *            @arg CEC_IT_RXBR: Rx-Byte Received
-  * @retval None
-  */
-void CEC_ClearITPendingBit(uint16_t CEC_IT)
-{
-  assert_param(IS_CEC_IT(CEC_IT));
-
-  /* Clear the selected CEC interrupt pending bits */
-  CEC->ISR = CEC_IT;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_comp.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_comp.c
deleted file mode 100644
index f4b279c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_comp.c	
+++ /dev/null
@@ -1,408 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_comp.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the comparators (COMP1 and COMP2) peripheral
-  *          applicable only on STM32F051 and STM32F072 devices: 
-  *           + Comparators configuration
-  *           + Window mode control
-  *
-  *  @verbatim
-  *
- ===============================================================================
-                     ##### How to use this driver #####
- ===============================================================================
-    [..]           
-   
-         The device integrates two analog comparators COMP1 and COMP2:
-         (+) The non inverting input is set to PA1 for COMP1 and to PA3
-             for COMP2.
-  
-         (+) The inverting input can be selected among: DAC1_OUT, DAC2_OUT 
-             1/4 VREFINT, 1/2 VERFINT, 3/4 VREFINT, VREFINT,
-             I/O (PA0 for COMP1 and PA2 for COMP2)
-  
-         (+) The COMP output is internally is available using COMP_GetOutputLevel()
-             and can be set on GPIO pins: PA0, PA6, PA11 for COMP1
-             and PA2, PA7, PA12 for COMP2
-  
-         (+) The COMP output can be redirected to embedded timers (TIM1, TIM2
-             and TIM3)
-  
-         (+) The two comparators COMP1 and COMP2 can be combined in window
-             mode and only COMP1 non inverting (PA1) can be used as non-
-             inverting input.
-  
-         (+) The two comparators COMP1 and COMP2 have interrupt capability 
-             with wake-up from Sleep and Stop modes (through the EXTI controller).
-             COMP1 and COMP2 outputs are internally connected to EXTI Line 21
-             and EXTI Line 22 respectively.
-                   
-
-                     ##### How to configure the comparator #####
- ===============================================================================
-    [..] 
-           This driver provides functions to configure and program the Comparators 
-           of all STM32F0xx devices.
-             
-    [..]   To use the comparator, perform the following steps:
-  
-         (#) Enable the SYSCFG APB clock to get write access to comparator
-             register using RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
-  
-         (#) Configure the comparator input in analog mode using GPIO_Init()
-  
-         (#) Configure the comparator output in alternate function mode
-             using GPIO_Init() and use GPIO_PinAFConfig() function to map the
-             comparator output to the GPIO pin
-  
-         (#) Configure the comparator using COMP_Init() function:
-                 (++)  Select the inverting input
-                 (++)  Select the output polarity  
-                 (++)  Select the output redirection
-                 (++)  Select the hysteresis level
-                 (++)  Select the power mode
-    
-         (#) Enable the comparator using COMP_Cmd() function
-  
-         (#) If required enable the COMP interrupt by configuring and enabling
-             EXTI line in Interrupt mode and selecting the desired sensitivity
-             level using EXTI_Init() function. After that enable the comparator
-             interrupt vector using NVIC_Init() function.
-  
-     @endverbatim
-  *    
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_comp.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup COMP 
-  * @brief COMP driver modules
-  * @{
-  */ 
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* CSR register Mask */
-#define COMP_CSR_CLEAR_MASK              ((uint32_t)0x00003FFE)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup COMP_Private_Functions
-  * @{
-  */
-
-/** @defgroup COMP_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions 
- *
-@verbatim   
- ===============================================================================
-               ##### Initialization and Configuration functions #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-   
-/**
-  * @brief  Deinitializes COMP peripheral registers to their default reset values.
-  * @note   Deinitialization can't be performed if the COMP configuration is locked.
-  *         To unlock the configuration, perform a system reset.
-  * @param  None
-  * @retval None
-  */
-void COMP_DeInit(void)
-{
-  COMP->CSR = ((uint32_t)0x00000000);    /*!< Set COMP_CSR register to reset value */
-}
-
-/**
-  * @brief  Initializes the COMP peripheral according to the specified parameters
-  *         in COMP_InitStruct
-  * @note   If the selected comparator is locked, initialization can't be performed.
-  *         To unlock the configuration, perform a system reset.
-  * @note   By default, PA1 is selected as COMP1 non inverting input.
-  *         To use PA4 as COMP1 non inverting input call COMP_SwitchCmd() after COMP_Init()
-  * @param  COMP_Selection: the selected comparator. 
-  *          This parameter can be one of the following values:
-  *            @arg COMP_Selection_COMP1: COMP1 selected
-  *            @arg COMP_Selection_COMP2: COMP2 selected
-  * @param  COMP_InitStruct: pointer to an COMP_InitTypeDef structure that contains 
-  *         the configuration information for the specified COMP peripheral.
-  * @retval None
-  */
-void COMP_Init(uint32_t COMP_Selection, COMP_InitTypeDef* COMP_InitStruct)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_COMP_ALL_PERIPH(COMP_Selection));
-  assert_param(IS_COMP_INVERTING_INPUT(COMP_InitStruct->COMP_InvertingInput));
-  assert_param(IS_COMP_OUTPUT(COMP_InitStruct->COMP_Output));
-  assert_param(IS_COMP_OUTPUT_POL(COMP_InitStruct->COMP_OutputPol));
-  assert_param(IS_COMP_HYSTERESIS(COMP_InitStruct->COMP_Hysteresis));
-  assert_param(IS_COMP_MODE(COMP_InitStruct->COMP_Mode));
-
-  /*!< Get the COMP_CSR register value */
-  tmpreg = COMP->CSR;
-
-  /*!< Clear the COMP1SW1, COMPx_IN_SEL, COMPx_OUT_TIM_SEL, COMPx_POL, COMPx_HYST and COMPx_PWR_MODE bits */ 
-  tmpreg &= (uint32_t) ~(COMP_CSR_CLEAR_MASK<<COMP_Selection);
-
-  /*!< Configure COMP: inverting input, output redirection, hysteresis value and power mode */
-  /*!< Set COMPxINSEL bits according to COMP_InitStruct->COMP_InvertingInput value */
-  /*!< Set COMPxOUTSEL bits according to COMP_InitStruct->COMP_Output value */
-  /*!< Set COMPxPOL bit according to COMP_InitStruct->COMP_OutputPol value */
-  /*!< Set COMPxHYST bits according to COMP_InitStruct->COMP_Hysteresis value */
-  /*!< Set COMPxMODE bits according to COMP_InitStruct->COMP_Mode value */   
-  tmpreg |= (uint32_t)((COMP_InitStruct->COMP_InvertingInput | COMP_InitStruct->COMP_Output |
-                       COMP_InitStruct->COMP_OutputPol | COMP_InitStruct->COMP_Hysteresis |
-                       COMP_InitStruct->COMP_Mode)<<COMP_Selection);
-
-  /*!< Write to COMP_CSR register */
-  COMP->CSR = tmpreg;  
-}
-
-/**
-  * @brief  Fills each COMP_InitStruct member with its default value.
-  * @param  COMP_InitStruct: pointer to an COMP_InitTypeDef structure which will 
-  *         be initialized.
-  * @retval None
-  */
-void COMP_StructInit(COMP_InitTypeDef* COMP_InitStruct)
-{
-  COMP_InitStruct->COMP_InvertingInput = COMP_InvertingInput_1_4VREFINT;
-  COMP_InitStruct->COMP_Output = COMP_Output_None;
-  COMP_InitStruct->COMP_OutputPol = COMP_OutputPol_NonInverted;
-  COMP_InitStruct->COMP_Hysteresis = COMP_Hysteresis_No;
-  COMP_InitStruct->COMP_Mode = COMP_Mode_UltraLowPower;
-}
-
-/**
-  * @brief  Enable or disable the COMP peripheral.
-  * @note   If the selected comparator is locked, enable/disable can't be performed.
-  *         To unlock the configuration, perform a system reset.
-  * @param  COMP_Selection: the selected comparator.
-  *          This parameter can be one of the following values:
-  *            @arg COMP_Selection_COMP1: COMP1 selected
-  *            @arg COMP_Selection_COMP2: COMP2 selected
-  * @param  NewState: new state of the COMP peripheral.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   When enabled, the comparator compares the non inverting input with 
-  *         the inverting input and the comparison result is available on comparator output.
-  * @note   When disabled, the comparator doesn't perform comparison and the 
-  *         output level is low.
-  * @retval None
-  */
-void COMP_Cmd(uint32_t COMP_Selection, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_COMP_ALL_PERIPH(COMP_Selection));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected COMP peripheral */
-    COMP->CSR |= (uint32_t) (1<<COMP_Selection);
-  }
-  else
-  {
-    /* Disable the selected COMP peripheral  */
-    COMP->CSR &= (uint32_t)(~((uint32_t)1<<COMP_Selection));
-  }
-}
-
-/**
-  * @brief  Close or Open the SW1 switch.
-  * @note   This switch is solely intended to redirect signals onto high
-  *         impedance input, such as COMP1 non-inverting input (highly resistive switch)
-  * @param  NewState: New state of the analog switch.
-  *          This parameter can be: ENABLE or DISABLE. 
-  * @note   When enabled, the SW1 is closed; PA1 is connected to PA4
-  * @note   When disabled, the SW1 switch is open; PA1 is disconnected from PA4
-  * @retval None
-  */
-void COMP_SwitchCmd(FunctionalState NewState)
-{
-  /* Check the parameter */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Close SW1 switch */
-    COMP->CSR |= (uint32_t) (COMP_CSR_COMP1SW1);
-  }
-  else
-  {
-    /* Open SW1 switch */
-    COMP->CSR &= (uint32_t)(~COMP_CSR_COMP1SW1);
-  }
-}
-
-/**
-  * @brief  Return the output level (high or low) of the selected comparator. 
-  * @note   The output level depends on the selected polarity.
-  * @note   If the polarity is not inverted:
-  *          - Comparator output is low when the non-inverting input is at a lower
-  *            voltage than the inverting input
-  *          - Comparator output is high when the non-inverting input is at a higher
-  *            voltage than the inverting input
-  * @note   If the polarity is inverted:
-  *          - Comparator output is high when the non-inverting input is at a lower
-  *            voltage than the inverting input
-  *          - Comparator output is low when the non-inverting input is at a higher
-  *            voltage than the inverting input
-  * @param  COMP_Selection: the selected comparator. 
-  *          This parameter can be one of the following values:
-  *            @arg COMP_Selection_COMP1: COMP1 selected
-  *            @arg COMP_Selection_COMP2: COMP2 selected  
-  * @retval Returns the selected comparator output level: low or high.
-  *       
-  */
-uint32_t COMP_GetOutputLevel(uint32_t COMP_Selection)
-{
-  uint32_t compout = 0x0;
-
-  /* Check the parameters */
-  assert_param(IS_COMP_ALL_PERIPH(COMP_Selection));
-
-  /* Check if selected comparator output is high */
-  if ((COMP->CSR & (COMP_CSR_COMP1OUT<<COMP_Selection)) != 0)
-  {
-    compout = COMP_OutputLevel_High;
-  }
-  else
-  {
-    compout = COMP_OutputLevel_Low;
-  }
-
-  /* Return the comparator output level */
-  return (uint32_t)(compout);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup COMP_Group2 Window mode control function
- *  @brief   Window mode control function 
- *
-@verbatim   
- ===============================================================================
-                     ##### Window mode control function #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the window mode.
-  * @note   In window mode, COMP1 and COMP2 non inverting inputs are connected
-  *         together and only COMP1 non inverting input (PA1) can be used.
-  * @param  NewState: new state of the window mode.
-  *          This parameter can be :
-  *           @arg ENABLE: COMP1 and COMP2 non inverting inputs are connected together.
-  *           @arg DISABLE: OMP1 and COMP2 non inverting inputs are disconnected.
-  * @retval None
-  */
-void COMP_WindowCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the window mode */
-    COMP->CSR |= (uint32_t) COMP_CSR_WNDWEN;
-  }
-  else
-  {
-    /* Disable the window mode */
-    COMP->CSR &= (uint32_t)(~COMP_CSR_WNDWEN);
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup COMP_Group3 COMP configuration locking function
- *  @brief   COMP1 and COMP2 configuration locking function
- *           COMP1 and COMP2 configuration can be locked each separately.
- *           Unlocking is performed by system reset.
- *
-@verbatim   
- ===============================================================================
-                     ##### Configuration Lock function #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Lock the selected comparator (COMP1/COMP2) configuration.
-  * @note   Locking the configuration means that all control bits are read-only.
-  *         To unlock the comparator configuration, perform a system reset.
-  * @param  COMP_Selection: selects the comparator to be locked 
-  *          This parameter can be a value of the following values:
-  *            @arg COMP_Selection_COMP1: COMP1 configuration is locked.
-  *            @arg COMP_Selection_COMP2: COMP2 configuration is locked.  
-  * @retval None
-  */
-void COMP_LockConfig(uint32_t COMP_Selection)
-{
-  /* Check the parameter */
-  assert_param(IS_COMP_ALL_PERIPH(COMP_Selection));
-
-  /* Set the lock bit corresponding to selected comparator */
-  COMP->CSR |= (uint32_t) (COMP_CSR_COMP1LOCK<<COMP_Selection);
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crc.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crc.c
deleted file mode 100644
index 05e1bf1..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crc.c	
+++ /dev/null
@@ -1,361 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_crc.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of CRC computation unit peripheral:
-  *            + Configuration of the CRC computation unit
-  *            + CRC computation of one/many 32-bit data
-  *            + CRC Independent register (IDR) access
-  *
-  *  @verbatim
- ===============================================================================
-                     ##### How to use this driver #####
- ===============================================================================
-    [..]
-    
-         (+) Enable CRC AHB clock using RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE)
-             function
-         (+) If required, select the reverse operation on input data 
-             using CRC_ReverseInputDataSelect()  
-         (+) If required, enable the reverse operation on output data
-             using CRC_ReverseOutputDataCmd(Enable)
-         (+) use CRC_CalcCRC() function to compute the CRC of a 32-bit data
-             or use CRC_CalcBlockCRC() function to compute the CRC if a 32-bit 
-             data buffer
-            (@) To compute the CRC of a new data use CRC_ResetDR() to reset
-                 the CRC computation unit before starting the computation
-                 otherwise you can get wrong CRC values.
-      
-     @endverbatim
-  *  
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_crc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup CRC 
-  * @brief CRC driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup CRC_Private_Functions
-  * @{
-  */
-
-/** @defgroup CRC_Group1 Configuration of the CRC computation unit functions
- *  @brief   Configuration of the CRC computation unit functions 
- *
-@verbatim
- ===============================================================================
-                     ##### CRC configuration functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes CRC peripheral registers to their default reset values.
-  * @param  None
-  * @retval None
-  */
-void CRC_DeInit(void)
-{
-  /* Set DR register to reset value */
-  CRC->DR = 0xFFFFFFFF;
-  
-  /* Set the POL register to the reset value: 0x04C11DB7 */
-  CRC->POL = 0x04C11DB7;
-  
-  /* Reset IDR register */
-  CRC->IDR = 0x00;
-  
-  /* Set INIT register to reset value */
-  CRC->INIT = 0xFFFFFFFF;
-  
-  /* Reset the CRC calculation unit */
-  CRC->CR = CRC_CR_RESET;
-}
-
-/**
-  * @brief  Resets the CRC calculation unit and sets INIT register content in DR register.
-  * @param  None
-  * @retval None
-  */
-void CRC_ResetDR(void)
-{
-  /* Reset CRC generator */
-  CRC->CR |= CRC_CR_RESET;
-}
-
-/**
-  * @brief  Selects the polynomial size. This function is only applicable for 
-  *         STM32F072 devices.
-  * @param  CRC_PolSize: Specifies the polynomial size.
-  *         This parameter can be:
-  *          @arg CRC_PolSize_7: 7-bit polynomial for CRC calculation
-  *          @arg CRC_PolSize_8: 8-bit polynomial for CRC calculation
-  *          @arg CRC_PolSize_16: 16-bit polynomial for CRC calculation
-  *          @arg CRC_PolSize_32: 32-bit polynomial for CRC calculation
-  * @retval None
-  */
-void CRC_PolynomialSizeSelect(uint32_t CRC_PolSize)
-{
-  uint32_t tmpcr = 0;
-
-  /* Check the parameter */
-  assert_param(IS_CRC_POL_SIZE(CRC_PolSize));
-
-  /* Get CR register value */
-  tmpcr = CRC->CR;
-
-  /* Reset POL_SIZE bits */
-  tmpcr &= (uint32_t)~((uint32_t)CRC_CR_POLSIZE);
-  /* Set the polynomial size */
-  tmpcr |= (uint32_t)CRC_PolSize;
-
-  /* Write to CR register */
-  CRC->CR = (uint32_t)tmpcr;
-}
-
-/**
-  * @brief  Selects the reverse operation to be performed on input data.
-  * @param  CRC_ReverseInputData: Specifies the reverse operation on input data.
-  *          This parameter can be:
-  *            @arg CRC_ReverseInputData_No: No reverse operation is performed
-  *            @arg CRC_ReverseInputData_8bits: reverse operation performed on 8 bits
-  *            @arg CRC_ReverseInputData_16bits: reverse operation performed on 16 bits
-  *            @arg CRC_ReverseInputData_32bits: reverse operation performed on 32 bits
-  * @retval None
-  */
-void CRC_ReverseInputDataSelect(uint32_t CRC_ReverseInputData)
-{
-  uint32_t tmpcr = 0;
-
-  /* Check the parameter */
-  assert_param(IS_CRC_REVERSE_INPUT_DATA(CRC_ReverseInputData));
-
-  /* Get CR register value */
-  tmpcr = CRC->CR;
-
-  /* Reset REV_IN bits */
-  tmpcr &= (uint32_t)~((uint32_t)CRC_CR_REV_IN);
-  /* Set the reverse operation */
-  tmpcr |= (uint32_t)CRC_ReverseInputData;
-
-  /* Write to CR register */
-  CRC->CR = (uint32_t)tmpcr;
-}
-
-/**
-  * @brief  Enables or disable the reverse operation on output data.
-  *         The reverse operation on output data is performed on 32-bit.
-  * @param  NewState: new state of the reverse operation on output data.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void CRC_ReverseOutputDataCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable reverse operation on output data */
-    CRC->CR |= CRC_CR_REV_OUT;
-  }
-  else
-  {
-    /* Disable reverse operation on output data */
-    CRC->CR &= (uint32_t)~((uint32_t)CRC_CR_REV_OUT);
-  }
-}
-
-/**
-  * @brief  Initializes the INIT register.
-  * @note   After resetting CRC calculation unit, CRC_InitValue is stored in DR register
-  * @param  CRC_InitValue: Programmable initial CRC value
-  * @retval None
-  */
-void CRC_SetInitRegister(uint32_t CRC_InitValue)
-{
-  CRC->INIT = CRC_InitValue;
-}
-
-/**
-  * @brief  Initializes the polynomail coefficients. This function is only 
-  *         applicable for STM32F072 devices.
-  * @param  CRC_Pol: Polynomial to be used for CRC calculation.
-  * @retval None
-  */
-void CRC_SetPolynomial(uint32_t CRC_Pol)
-{
-  CRC->POL = CRC_Pol;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup CRC_Group2 CRC computation of one/many 32-bit data functions
- *  @brief   CRC computation of one/many 32-bit data functions
- *
-@verbatim
- ===============================================================================
-                     ##### CRC computation functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Computes the 32-bit CRC of a given data word(32-bit).
-  * @param  CRC_Data: data word(32-bit) to compute its CRC
-  * @retval 32-bit CRC
-  */
-uint32_t CRC_CalcCRC(uint32_t CRC_Data)
-{
-  CRC->DR = CRC_Data;
-  
-  return (CRC->DR);
-}
-
-/**
-  * @brief  Computes the 16-bit CRC of a given 16-bit data. This function is only 
-  *         applicable for STM32F072 devices.
-  * @param  CRC_Data: data half-word(16-bit) to compute its CRC
-  * @retval 16-bit CRC
-  */
-uint32_t CRC_CalcCRC16bits(uint16_t CRC_Data)
-{
-  *(uint16_t*)(CRC_BASE) = (uint16_t) CRC_Data;
-  
-  return (CRC->DR);
-}
-
-/**
-  * @brief  Computes the 8-bit CRC of a given 8-bit data. This function is only 
-  *         applicable for STM32F072 devices.
-  * @param  CRC_Data: 8-bit data to compute its CRC
-  * @retval 8-bit CRC
-  */
-uint32_t CRC_CalcCRC8bits(uint8_t CRC_Data)
-{
-  *(uint8_t*)(CRC_BASE) = (uint8_t) CRC_Data;
-
-  return (CRC->DR);
-}
-
-/**
-  * @brief  Computes the 32-bit CRC of a given buffer of data word(32-bit).
-  * @param  pBuffer: pointer to the buffer containing the data to be computed
-  * @param  BufferLength: length of the buffer to be computed
-  * @retval 32-bit CRC
-  */
-uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength)
-{
-  uint32_t index = 0;
-  
-  for(index = 0; index < BufferLength; index++)
-  {
-    CRC->DR = pBuffer[index];
-  }
-  return (CRC->DR);
-}
-
-/**
-  * @brief  Returns the current CRC value.
-  * @param  None
-  * @retval 32-bit CRC
-  */
-uint32_t CRC_GetCRC(void)
-{
-  return (CRC->DR);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup CRC_Group3 CRC Independent Register (IDR) access functions
- *  @brief   CRC Independent Register (IDR) access (write/read) functions
- *
-@verbatim
- ===============================================================================
-           ##### CRC Independent Register (IDR) access functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Stores an 8-bit data in the Independent Data(ID) register.
-  * @param  CRC_IDValue: 8-bit value to be stored in the ID register 					
-  * @retval None
-  */
-void CRC_SetIDRegister(uint8_t CRC_IDValue)
-{
-  CRC->IDR = CRC_IDValue;
-}
-
-/**
-  * @brief  Returns the 8-bit data stored in the Independent Data(ID) register
-  * @param  None
-  * @retval 8-bit value of the ID register 
-  */
-uint8_t CRC_GetIDRegister(void)
-{
-  return (CRC->IDR);
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crs.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crs.c
deleted file mode 100644
index 3d35149..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crs.c	
+++ /dev/null
@@ -1,466 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_crs.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of CRS peripheral applicable only on STM32F042 and 
-  *          STM32F072 devices:
-  *            + Configuration of the CRS peripheral
-  *            + Interrupts and flags management
-  *              
-  *
-  *  @verbatim
- ===============================================================================
-                     ##### How to use this driver #####
- ===============================================================================
-    [..]
-    
-         (+) Enable CRS AHB clock using RCC_APB1eriphClockCmd(RCC_APB1Periph_CRS, ENABLE)
-             function
-
-      
-     @endverbatim
-  *  
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_crs.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup CRS 
-  * @brief CRS driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* CRS Flag Mask */
-#define FLAG_MASK                 ((uint32_t)0x700)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup CRS_Private_Functions
-  * @{
-  */
-
-/** @defgroup CRS_Group1 Configuration of the CRS functions
- *  @brief   Configuration of the CRS  functions 
- *
-@verbatim
- ===============================================================================
-                     ##### CRS configuration functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes CRS peripheral registers to their default reset values.
-  * @param  None
-  * @retval None
-  */
-void CRS_DeInit(void)
-{
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_CRS, ENABLE);
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_CRS, DISABLE);
-}
-
-/**
-  * @brief  Adjusts the Internal High Speed 48 oscillator (HSI 48) calibration value.
-  * @note   The calibration is used to compensate for the variations in voltage
-  *         and temperature that influence the frequency of the internal HSI48 RC.
-  * @note   This function can be called only when the AUTOTRIMEN bit is reset.
-  * @param  CRS_HSI48CalibrationValue: 
-  * @retval None
-  */
-void CRS_AdjustHSI48CalibrationValue(uint8_t CRS_HSI48CalibrationValue)
-{
-  /* Clear TRIM[5:0] bits */
-  CRS->CR &= ~CRS_CR_TRIM;
-  
-  /* Set the TRIM[5:0] bits according to CRS_HSI48CalibrationValue value */
-  CRS->CR |= (uint32_t)((uint32_t)CRS_HSI48CalibrationValue << 8);
-
-}
-
-/**
-  * @brief  Enables or disables the oscillator clock for frequency error counter.
-  * @note   when the CEN bit is set the CRS_CFGR register becomes write-protected.
-  * @param  NewState: new state of the frequency error counter.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void CRS_FrequencyErrorCounterCmd(FunctionalState NewState)
-{
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-     CRS->CR |= CRS_CR_CEN;
-  }
-  else
-  {
-    CRS->CR &= ~CRS_CR_CEN;
-  }
-}
-
-/**
-  * @brief  Enables or disables the automatic hardware adjustement of TRIM bits.
-  * @note   When the AUTOTRIMEN bit is set the CRS_CFGR register becomes write-protected.
-  * @param  NewState: new state of the automatic trimming.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void CRS_AutomaticCalibrationCmd(FunctionalState NewState)
-{
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    CRS->CR |= CRS_CR_AUTOTRIMEN;
-  }
-else
-  {
-    CRS->CR &= ~CRS_CR_AUTOTRIMEN;
-  }
-}
-
-/**
-  * @brief  Generate the software synchronization event
-  * @param  None
-  * @retval None
-  */
-void CRS_SoftwareSynchronizationGenerate(void)
-{
-  CRS->CR |= CRS_CR_SWSYNC;
-}
-
-/**
-  * @brief  Adjusts the Internal High Speed 48 oscillator (HSI 48) calibration value.
-  * @note   The calibration is used to compensate for the variations in voltage
-  *         and temperature that influence the frequency of the internal HSI48 RC.
-  * @note   This function can be called only when the CEN bit is reset.
-  * @param  CRS_ReloadValue: specifies the HSI calibration trimming value.
-  *          This parameter must be a number between 0 and .
-  * @retval None
-  */
-void CRS_FrequencyErrorCounterReload(uint32_t CRS_ReloadValue)
-{
- 
-  /* Clear RELOAD[15:0] bits */
-  CRS->CFGR &= ~CRS_CFGR_RELOAD;
-  
-  /* Set the RELOAD[15:0] bits according to CRS_ReloadValue value */
-  CRS->CFGR |= (uint32_t)CRS_ReloadValue;
-
-}
-
-/**
-  * @brief  
-  * @note   This function can be called only when the CEN bit is reset.
-  * @param  CRS_ErrorLimitValue: specifies the HSI calibration trimming value.
-  *          This parameter must be a number between 0 and .
-  * @retval None
-  */
-void CRS_FrequencyErrorLimitConfig(uint8_t CRS_ErrorLimitValue)
-{
-  /* Clear FELIM[7:0] bits */
-  CRS->CFGR &= ~CRS_CFGR_FELIM;
-  
-  /* Set the FELIM[7:0] bits according to CRS_ErrorLimitValue value */
-  CRS->CFGR |= (uint32_t)CRS_ErrorLimitValue;
-}
-
-/**
-  * @brief  
-  * @note   This function can be called only when the CEN bit is reset.
-  * @param  CRS_Prescaler: specifies the HSI calibration trimming value.
-  *          This parameter can be one of the following values:
-  *            @arg CRS_SYNC_Div1:   
-  *            @arg CRS_SYNC_Div2:   
-  *            @arg CRS_SYNC_Div4:   
-  *            @arg CRS_SYNC_Div8:   
-  *            @arg CRS_SYNC_Div16:  
-  *            @arg CRS_SYNC_Div32:  
-  *            @arg CRS_SYNC_Div64: 
-  *            @arg CRS_SYNC_Div128: 
-  * @retval None
-  */
-void CRS_SynchronizationPrescalerConfig(uint32_t CRS_Prescaler)
-{
-  /* Check the parameters */
-  assert_param(IS_CRS_SYNC_DIV(CRS_Prescaler));
-  
-  /* Clear SYNCDIV[2:0] bits */
-  CRS->CFGR &= ~CRS_CFGR_SYNCDIV;
-  
-  /* Set the CRS_CFGR_SYNCDIV[2:0] bits according to CRS_Prescaler value */
-  CRS->CFGR |= CRS_Prescaler;
-}
-
-/**
-  * @brief  
-  * @note   This function can be called only when the CEN bit is reset.
-  * @param  CRS_Source: .
-  *          This parameter can be one of the following values:
-  *            @arg CRS_SYNCSource_GPIO:   
-  *            @arg CRS_SYNCSource_LSE:   
-  *            @arg CRS_SYNCSource_USB:   
-  * @retval None
-  */
-void CRS_SynchronizationSourceConfig(uint32_t CRS_Source)
-{
-  /* Check the parameters */
-  assert_param(IS_CRS_SYNC_SOURCE(CRS_Source));
-  
-  /* Clear SYNCSRC[1:0] bits */
-  CRS->CFGR &= ~CRS_CFGR_SYNCSRC;
-  
-  /* Set the SYNCSRC[1:0] bits according to CRS_Source value */
-  CRS->CFGR |= CRS_Source;
-}
-
-/**
-  * @brief  
-  * @note   This function can be called only when the CEN bit is reset.
-  * @param  CRS_Polarity: .
-  *          This parameter can be one of the following values:
-  *            @arg CRS_SYNCPolarity_Rising:   
-  *            @arg CRS_SYNCPolarity_Falling:   
-  * @retval None
-  */
-void CRS_SynchronizationPolarityConfig(uint32_t CRS_Polarity)
-{
-  /* Check the parameters */
-  assert_param(IS_CRS_SYNC_POLARITY(CRS_Polarity));
-  
-  /* Clear SYNCSPOL bit */
-  CRS->CFGR &= ~CRS_CFGR_SYNCPOL;
-  
-  /* Set the SYNCSPOL bits according to CRS_Polarity value */
-  CRS->CFGR |= CRS_Polarity;
-}
-
-/**
-  * @brief  Returns the Relaod value.
-  * @param  None
-  * @retval The reload value 
-  */
-uint32_t CRS_GetReloadValue(void)
-{
-  return ((uint32_t)(CRS->CFGR & CRS_CFGR_RELOAD));
-}
-
-/**
-  * @brief  Returns the HSI48 Calibration value.
-  * @param  None
-  * @retval The reload value 
-  */
-uint32_t CRS_GetHSI48CalibrationValue(void)
-{
-  return (((uint32_t)(CRS->CR & CRS_CR_TRIM)) >> 8);
-}
-
-/**
-  * @brief  Returns the frequency error capture.
-  * @param  None
-  * @retval The frequency error capture value 
-  */
-uint32_t CRS_GetFrequencyErrorValue(void)
-{
-  return ((uint32_t)(CRS->ISR & CRS_ISR_FECAP));
-}
-
-/**
-  * @brief  Returns the frequency error direction.
-  * @param  None
-  * @retval The frequency error direction. The returned value can be one 
-  *         of the following values:
-  *           - 0x00: Up counting
-  *           - 0x8000: Down counting   
-  */
-uint32_t CRS_GetFrequencyErrorDirection(void)
-{
-  return ((uint32_t)(CRS->ISR & CRS_ISR_FEDIR));
-}
-
-/** @defgroup CRS_Group2 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions 
- *
-@verbatim
- ===============================================================================
-             ##### Interrupts and flags management functions #####
- ===============================================================================
-@endverbatim
-  * @{
-  */
-/**
-  * @brief  Enables or disables the specified CRS interrupts.
-  * @param  CRS_IT: specifies the RCC interrupt sources to be enabled or disabled.
-  *          This parameter can be any combination of the following values:
-  *              @arg CRS_IT_SYNCOK: 
-  *              @arg CRS_IT_SYNCWARN: 
-  *              @arg CRS_IT_ERR: 
-  *              @arg CRS_IT_ESYNC: 
-  * @param  NewState: new state of the specified CRS interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void CRS_ITConfig(uint32_t CRS_IT, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_CRS_IT(CRS_IT));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    CRS->CR |= CRS_IT;
-  }
-  else
-  {
-    CRS->CR &= ~CRS_IT;
-  }
-}
-
-/**
-  * @brief  Checks whether the specified CRS flag is set or not.
-  * @param  CRS_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *              @arg CRS_FLAG_SYNCOK: 
-  *              @arg CRS_FLAG_SYNCWARN: 
-  *              @arg CRS_FLAG_ERR: 
-  *              @arg CRS_FLAG_ESYNC:   
-  *              @arg CRS_FLAG_TRIMOVF: 
-  *              @arg CRS_FLAG_SYNCERR: 
-  *              @arg CRS_FLAG_SYNCMISS: 
-  * @retval The new state of CRS_FLAG (SET or RESET).
-  */
-FlagStatus CRS_GetFlagStatus(uint32_t CRS_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_CRS_FLAG(CRS_FLAG));
-
-  return ((FlagStatus)(CRS->ISR & CRS_FLAG));
-}
-
-/**
-  * @brief  Clears the CRS specified FLAG.
-  * @param  CRS_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *              @arg CRS_FLAG_SYNCOK: 
-  *              @arg CRS_FLAG_SYNCWARN: 
-  *              @arg CRS_FLAG_ERR: 
-  *              @arg CRS_FLAG_ESYNC:   
-  *              @arg CRS_FLAG_TRIMOVF: 
-  *              @arg CRS_FLAG_SYNCERR: 
-  *              @arg CRS_FLAG_SYNCMISS: 
-  * @retval None
-  */
-void CRS_ClearFlag(uint32_t CRS_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_CRS_FLAG(CRS_FLAG));
-  
-  if ((CRS_FLAG & FLAG_MASK)!= 0)
-  {
-    CRS->ICR |= CRS_ICR_ERRC;  
-  }
-  else
-  {
-    CRS->ICR |= CRS_FLAG;
-  }
-}
-
-/**
-  * @brief  Checks whether the specified CRS IT pending bit is set or not.
-  * @param  CRS_IT: specifies the IT pending bit to check.
-  *          This parameter can be one of the following values:
-  *              @arg CRS_IT_SYNCOK: 
-  *              @arg CRS_IT_SYNCWARN: 
-  *              @arg CRS_IT_ERR: 
-  *              @arg CRS_IT_ESYNC:   
-  *              @arg CRS_IT_TRIMOVF: 
-  *              @arg CRS_IT_SYNCERR: 
-  *              @arg CRS_IT_SYNCMISS: 
-  * @retval The new state of CRS_IT (SET or RESET).
-  */
-ITStatus CRS_GetITStatus(uint32_t CRS_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_CRS_GET_IT(CRS_IT));
-
-  return ((ITStatus)(CRS->ISR & CRS_IT));
-}
-
-/**
-  * @brief  Clears the CRS specified IT pending bi.
-  * @param  CRS_FLAG: specifies the IT pending bi to clear.
-  *          This parameter can be one of the following values:
-  *              @arg CRS_IT_SYNCOK: 
-  *              @arg CRS_IT_SYNCWARN: 
-  *              @arg CRS_IT_ERR: 
-  *              @arg CRS_IT_ESYNC:   
-  *              @arg CRS_IT_TRIMOVF: 
-  *              @arg CRS_IT_SYNCERR: 
-  *              @arg CRS_IT_SYNCMISS: 
-  * @retval None
-  */
-void CRS_ClearITPendingBit(uint32_t CRS_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_CRS_CLEAR_IT(CRS_IT));
-  
-  if ((CRS_IT & FLAG_MASK)!= 0)
-  {
-    CRS->ICR |= CRS_ICR_ERRC;  
-  }
-  else
-  {
-    CRS->ICR |= CRS_IT;
-  }
-}
-/**
-  * @}
-  */
-  
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dac.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dac.c
deleted file mode 100644
index e6f34ad..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dac.c	
+++ /dev/null
@@ -1,692 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_dac.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Digital-to-Analog Converter (DAC) peripheral
-  *          applicable only on STM32F051 and STM32F072 devices:
-  *           + DAC channel configuration: trigger, output buffer, data format
-  *           + DMA management
-  *           + Interrupts and flags management
-  *
-  *  @verbatim
-  *
- ===============================================================================
-                        ##### DAC Peripheral features #####
- ===============================================================================
-    [..] The device integrates two 12-bit Digital Analog Converters refered as
-         DAC channel1 with DAC_OUT1 (PA4) and DAC_OUT2 (PA5) as outputs.
-  
-    [..] Digital to Analog conversion can be non-triggered using DAC_Trigger_None
-         and DAC_OUTx is available once writing to DHRx register using 
-         DAC_SetChannel1Data() or DAC_SetChannel2Data() 
-  
-    [..] Digital to Analog conversion can be triggered by:
-         (#) External event: EXTI Line 9 (any GPIOx_Pin9) using DAC_Trigger_Ext_IT9.
-             The used pin (GPIOx_Pin9) must be configured in input mode.
-  
-         (#) Timers TRGO: TIM2, TIM3,TIM7, TIM6 and TIM15 
-             (DAC_Trigger_T2_TRGO, DAC_Trigger_T3_TRGO...)
-             The timer TRGO event should be selected using TIM_SelectOutputTrigger()
-  
-         (#) Software using DAC_Trigger_Software
-  
-    [..] Each DAC integrates an output buffer that can be used to 
-         reduce the output impedance, and to drive external loads directly
-         without having to add an external operational amplifier.
-         To enable the output buffer use  
-         DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
-  
-    [..] Refer to the device datasheet for more details about output impedance
-         value with and without output buffer.
-         
-    [..] DAC wave generation feature
-         Both DAC channels can be used to generate
-             1- Noise wave using DAC_WaveGeneration_Noise
-             2- Triangle wave using DAC_WaveGeneration_Triangle
-  
-    [..] The DAC data format can be:
-         (#) 8-bit right alignment using DAC_Align_8b_R
-         (#) 12-bit left alignment using DAC_Align_12b_L
-         (#) 12-bit right alignment using DAC_Align_12b_R
-  
-    [..] The analog output voltage on each DAC channel pin is determined
-         by the following equation: DAC_OUTx = VREF+ * DOR / 4095
-         with  DOR is the Data Output Register
-         VEF+ is the input voltage reference (refer to the device datasheet)
-         e.g. To set DAC_OUT1 to 0.7V, use
-         DAC_SetChannel1Data(DAC_Align_12b_R, 868);
-         Assuming that VREF+ = 3.3, DAC_OUT1 = (3.3 * 868) / 4095 = 0.7V
-  
-    [..] A DMA1 request can be generated when an external trigger (but not
-         a software trigger) occurs if DMA1 requests are enabled using
-         DAC_DMACmd()
-         DMA1 requests are mapped as following:
-         (+) DAC channel1 is mapped on DMA1 channel3 which must be already 
-             configured
-         (+) DAC channel2 is mapped on DMA1 channel4 which must be already 
-             configured
-    
-                      ##### How to use this driver #####
- ===============================================================================
-    [..]
-         (+) Enable DAC APB1 clock to get write access to DAC registers
-             using RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE)
-              
-         (+) Configure DAC_OUTx (DAC_OUT1: PA4, DAC_OUT2: PA5) in analog mode
-             using GPIO_Init() function  
-              
-         (+) Configure the DAC channel using DAC_Init()
-              
-         (+) Enable the DAC channel using DAC_Cmd()
-  
-    @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_dac.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup DAC 
-  * @brief DAC driver modules
-  * @{
-  */ 
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* CR register Mask */
-#define CR_CLEAR_MASK              ((uint32_t)0x00000FFE) /* check the value of the mask */
-
-/* DAC Dual Channels SWTRIG masks */
-#define DUAL_SWTRIG_SET            ((uint32_t)0x00000003) /*!< Only applicable for STM32F072 devices */
-#define DUAL_SWTRIG_RESET          ((uint32_t)0xFFFFFFFC) /*!< Only applicable for STM32F072 devices */
-
-/* DHR registers offsets */
-#define DHR12R1_OFFSET             ((uint32_t)0x00000008)
-#define DHR12R2_OFFSET             ((uint32_t)0x00000014) /*!< Only applicable for STM32F072 devices */
-#define DHR12RD_OFFSET             ((uint32_t)0x00000020) /*!< Only applicable for STM32F072 devices */
-
-/* DOR register offset */
-#define DOR_OFFSET                 ((uint32_t)0x0000002C)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup DAC_Private_Functions
-  * @{
-  */ 
-
-/** @defgroup DAC_Group1 DAC channels configuration
- *  @brief   DAC channels configuration: trigger, output buffer, data format 
- *
-@verbatim
- ===============================================================================
-  ##### DAC channels configuration: trigger, output buffer, data format #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the DAC peripheral registers to their default reset values.
-  * @param  None
-  * @retval None
-  */
-void DAC_DeInit(void)
-{
-  /* Enable DAC reset state */
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, ENABLE);
-  /* Release DAC from reset state */
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, DISABLE);
-}
-
-/**
-  * @brief  Initializes the DAC peripheral according to the specified parameters
-  *         in the DAC_InitStruct.
-  * @param  DAC_Channel: the selected DAC channel. 
-  *          This parameter can be:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  DAC_InitStruct: pointer to a DAC_InitTypeDef structure that contains
-  *         the configuration information for the  specified DAC channel.
-  * @retval None
-  */
-void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct)
-{
-  uint32_t tmpreg1 = 0, tmpreg2 = 0;
-
-  /* Check the DAC parameters */
-  assert_param(IS_DAC_TRIGGER(DAC_InitStruct->DAC_Trigger));
-  assert_param(IS_DAC_GENERATE_WAVE(DAC_InitStruct->DAC_WaveGeneration));
-  assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude));
-  assert_param(IS_DAC_OUTPUT_BUFFER_STATE(DAC_InitStruct->DAC_OutputBuffer));
-
-/*---------------------------- DAC CR Configuration --------------------------*/
-  /* Get the DAC CR value */
-  tmpreg1 = DAC->CR;
-  /* Clear BOFFx, TENx, TSELx, WAVEx and MAMPx bits */
-  tmpreg1 &= ~(CR_CLEAR_MASK << DAC_Channel);
-  /* Configure for the selected DAC channel: buffer output, trigger, 
-     wave generation, mask/amplitude for wave generation */
-  /* Set TSELx and TENx bits according to DAC_Trigger value */
-  /* Set WAVEx bits according to DAC_WaveGeneration value */
-  /* Set MAMPx bits according to DAC_LFSRUnmask_TriangleAmplitude value */ 
-  /* Set BOFFx bit according to DAC_OutputBuffer value */   
-  tmpreg2 = (DAC_InitStruct->DAC_Trigger | DAC_InitStruct->DAC_WaveGeneration |
-             DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude | \
-             DAC_InitStruct->DAC_OutputBuffer);
-  /* Calculate CR register value depending on DAC_Channel */
-  tmpreg1 |= tmpreg2 << DAC_Channel;
-  /* Write to DAC CR */
-  DAC->CR = tmpreg1;
-}
-
-/**
-  * @brief  Fills each DAC_InitStruct member with its default value.
-  * @param  DAC_InitStruct: pointer to a DAC_InitTypeDef structure which will 
-  *         be initialized.
-  * @retval None
-  */
-void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct)
-{
-/*--------------- Reset DAC init structure parameters values -----------------*/
-  /* Initialize the DAC_Trigger member */
-  DAC_InitStruct->DAC_Trigger = DAC_Trigger_None;
-  
-  /* Initialize the DAC_WaveGeneration member */
-  DAC_InitStruct->DAC_WaveGeneration = DAC_WaveGeneration_None;
-  
-  /* Initialize the DAC_LFSRUnmask_TriangleAmplitude member */
-  DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
-  
-  /* Initialize the DAC_OutputBuffer member */
-  DAC_InitStruct->DAC_OutputBuffer = DAC_OutputBuffer_Enable;
-}
-
-/**
-  * @brief  Enables or disables the specified DAC channel.
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  NewState: new state of the DAC channel. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   When the DAC channel is enabled the trigger source can no more be modified.
-  * @retval None
-  */
-void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected DAC channel */
-    DAC->CR |= (DAC_CR_EN1 << DAC_Channel);
-  }
-  else
-  {
-    /* Disable the selected DAC channel */
-    DAC->CR &= (~(DAC_CR_EN1 << DAC_Channel));
-  }
-}
-
-/**
-  * @brief  Enables or disables the selected DAC channel software trigger.
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  NewState: new state of the selected DAC channel software trigger.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable software trigger for the selected DAC channel */
-    DAC->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1 << (DAC_Channel >> 4);
-  }
-  else
-  {
-    /* Disable software trigger for the selected DAC channel */
-    DAC->SWTRIGR &= ~((uint32_t)DAC_SWTRIGR_SWTRIG1 << (DAC_Channel >> 4));
-  }
-}
-
-/**
-  * @brief  Enables or disables simultaneously the two DAC channels software triggers.
-  *         This function is applicable only for STM32F072 devices.  
-  * @param  NewState: new state of the DAC channels software triggers.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void DAC_DualSoftwareTriggerCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable software trigger for both DAC channels */
-    DAC->SWTRIGR |= DUAL_SWTRIG_SET;
-  }
-  else
-  {
-    /* Disable software trigger for both DAC channels */
-    DAC->SWTRIGR &= DUAL_SWTRIG_RESET;
-  }
-}
-
-/**
-  * @brief  Enables or disables the selected DAC channel wave generation.
-  *         This function is applicable only for STM32F072 devices.  
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected
-  * @param  DAC_Wave: specifies the wave type to enable or disable.
-  *          This parameter can be:
-  *            @arg DAC_Wave_Noise: noise wave generation
-  *            @arg DAC_Wave_Triangle: triangle wave generation
-  * @param  NewState: new state of the selected DAC channel wave generation.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_DAC_WAVE(DAC_Wave)); 
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected wave generation for the selected DAC channel */
-    DAC->CR |= DAC_Wave << DAC_Channel;
-  }
-  else
-  {
-    /* Disable the selected wave generation for the selected DAC channel */
-    DAC->CR &= ~(DAC_Wave << DAC_Channel);
-  }
-}
-
-/**
-  * @brief  Set the specified data holding register value for DAC channel1.
-  * @param  DAC_Align: Specifies the data alignment for DAC channel1.
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Align_8b_R: 8bit right data alignment selected
-  *            @arg DAC_Align_12b_L: 12bit left data alignment selected
-  *            @arg DAC_Align_12b_R: 12bit right data alignment selected
-  * @param  Data: Data to be loaded in the selected data holding register.
-  * @retval None
-  */
-void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)
-{  
-  __IO uint32_t tmp = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_DAC_ALIGN(DAC_Align));
-  assert_param(IS_DAC_DATA(Data));
-  
-  tmp = (uint32_t)DAC_BASE; 
-  tmp += DHR12R1_OFFSET + DAC_Align;
-
-  /* Set the DAC channel1 selected data holding register */
-  *(__IO uint32_t *) tmp = Data;
-}
-
-/**
-  * @brief  Sets the specified data holding register value for DAC channel2.
-  *         This function is applicable only for STM32F072 devices.  
-  * @param  DAC_Align: Specifies the data alignment for DAC channel2.
-  *          This parameter can be:
-  *            @arg DAC_Align_8b_R: 8bit right data alignment selected
-  *            @arg DAC_Align_12b_L: 12bit left data alignment selected
-  *            @arg DAC_Align_12b_R: 12bit right data alignment selected
-  * @param  Data: Data to be loaded in the selected data holding register.
-  * @retval None
-  */
-void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data)
-{
-  __IO uint32_t tmp = 0;
-
-  /* Check the parameters */
-  assert_param(IS_DAC_ALIGN(DAC_Align));
-  assert_param(IS_DAC_DATA(Data));
-  
-  tmp = (uint32_t)DAC_BASE;
-  tmp += DHR12R2_OFFSET + DAC_Align;
-
-  /* Set the DAC channel2 selected data holding register */
-  *(__IO uint32_t *)tmp = Data;
-}
-
-/**
-  * @brief  Sets the specified data holding register value for dual channel DAC.
-  *         This function is applicable only for STM32F072 devices.  
-  * @param  DAC_Align: Specifies the data alignment for dual channel DAC.
-  *          This parameter can be:
-  *            @arg DAC_Align_8b_R: 8bit right data alignment selected
-  *            @arg DAC_Align_12b_L: 12bit left data alignment selected
-  *            @arg DAC_Align_12b_R: 12bit right data alignment selected
-  * @param  Data2: Data for DAC Channel2 to be loaded in the selected data holding register.
-  * @param  Data1: Data for DAC Channel1 to be loaded in the selected data  holding register.
-  * @note   In dual mode, a unique register access is required to write in both
-  *          DAC channels at the same time.
-  * @retval None
-  */
-void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1)
-{
-  uint32_t data = 0, tmp = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_DAC_ALIGN(DAC_Align));
-  assert_param(IS_DAC_DATA(Data1));
-  assert_param(IS_DAC_DATA(Data2));
-  
-  /* Calculate and set dual DAC data holding register value */
-  if (DAC_Align == DAC_Align_8b_R)
-  {
-    data = ((uint32_t)Data2 << 8) | Data1; 
-  }
-  else
-  {
-    data = ((uint32_t)Data2 << 16) | Data1;
-  }
-  
-  tmp = (uint32_t)DAC_BASE;
-  tmp += DHR12RD_OFFSET + DAC_Align;
-
-  /* Set the dual DAC selected data holding register */
-  *(__IO uint32_t *)tmp = data;
-}
-
-/**
-  * @brief  Returns the last data output value of the selected DAC channel.
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @retval The selected DAC channel data output value.
-  */
-uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel)
-{
-  __IO uint32_t tmp = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  
-  tmp = (uint32_t) DAC_BASE ;
-  tmp += DOR_OFFSET + ((uint32_t)DAC_Channel >> 2);
-  
-  /* Returns the DAC channel data output register value */
-  return (uint16_t) (*(__IO uint32_t*) tmp);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup DAC_Group2 DMA management functions
- *  @brief   DMA management functions
- *
-@verbatim   
- ===============================================================================
-                    ##### DMA management functions #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified DAC channel DMA request.
-  *         When enabled DMA1 is generated when an external trigger (EXTI Line9,
-  *         TIM2, TIM3, TIM6 or TIM15  but not a software trigger) occurs
-  * @param  DAC_Channel: the selected DAC channel.
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  NewState: new state of the selected DAC channel DMA request.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   The DAC channel1 is mapped on DMA1 channel3 which must be already configured. 
-  * @note   The DAC channel2 is mapped on DMA1 channel4 which must be already configured.  
-  * @retval None
-  */
-void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected DAC channel DMA request */
-    DAC->CR |= (DAC_CR_DMAEN1 << DAC_Channel);
-  }
-  else
-  {
-    /* Disable the selected DAC channel DMA request */
-    DAC->CR &= (~(DAC_CR_DMAEN1 << DAC_Channel));
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup DAC_Group3 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions
- *
-@verbatim   
- ===============================================================================
-            ##### Interrupts and flags management functions #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified DAC interrupts.
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  DAC_IT: specifies the DAC interrupt sources to be enabled or disabled. 
-  *          This parameter can be the following values:
-  *            @arg DAC_IT_DMAUDR: DMA underrun interrupt mask
-  * @note   The DMA underrun occurs when a second external trigger arrives before the 
-  *         acknowledgement for the first external trigger is received (first request).
-  * @param  NewState: new state of the specified DAC interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */ 
-void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState)  
-{
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  assert_param(IS_DAC_IT(DAC_IT)); 
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected DAC interrupts */
-    DAC->CR |=  (DAC_IT << DAC_Channel);
-  }
-  else
-  {
-    /* Disable the selected DAC interrupts */
-    DAC->CR &= (~(uint32_t)(DAC_IT << DAC_Channel));
-  }
-}
-
-/**
-  * @brief  Checks whether the specified DAC flag is set or not.
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  DAC_FLAG: specifies the flag to check. 
-  *          This parameter can be only of the following value:
-  *            @arg DAC_FLAG_DMAUDR: DMA underrun flag
-  * @note   The DMA underrun occurs when a second external trigger arrives before the 
-  *         acknowledgement for the first external trigger is received (first request).
-  * @retval The new state of DAC_FLAG (SET or RESET).
-  */
-FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_DAC_FLAG(DAC_FLAG));
-
-  /* Check the status of the specified DAC flag */
-  if ((DAC->SR & (DAC_FLAG << DAC_Channel)) != (uint8_t)RESET)
-  {
-    /* DAC_FLAG is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* DAC_FLAG is reset */
-    bitstatus = RESET;
-  }
-  /* Return the DAC_FLAG status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the DAC channel's pending flags.
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  DAC_FLAG: specifies the flag to clear. 
-  *          This parameter can be of the following value:
-  *            @arg DAC_FLAG_DMAUDR: DMA underrun flag                           
-  * @retval None
-  */
-void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_DAC_FLAG(DAC_FLAG));
-
-  /* Clear the selected DAC flags */
-  DAC->SR = (DAC_FLAG << DAC_Channel);
-}
-
-/**
-  * @brief  Checks whether the specified DAC interrupt has occurred or not.
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  DAC_IT: specifies the DAC interrupt source to check. 
-  *          This parameter can be the following values:
-  *            @arg DAC_IT_DMAUDR: DMA underrun interrupt mask
-  * @note   The DMA underrun occurs when a second external trigger arrives before the 
-  *         acknowledgement for the first external trigger is received (first request).
-  * @retval The new state of DAC_IT (SET or RESET).
-  */
-ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT)
-{
-  ITStatus bitstatus = RESET;
-  uint32_t enablestatus = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_DAC_IT(DAC_IT));
-
-  /* Get the DAC_IT enable bit status */
-  enablestatus = (DAC->CR & (DAC_IT << DAC_Channel)) ;
-  
-  /* Check the status of the specified DAC interrupt */
-  if (((DAC->SR & (DAC_IT << DAC_Channel)) != (uint32_t)RESET) && enablestatus)
-  {
-    /* DAC_IT is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* DAC_IT is reset */
-    bitstatus = RESET;
-  }
-  /* Return the DAC_IT status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the DAC channel's interrupt pending bits.
-  * @param  DAC_Channel: The selected DAC channel. 
-  *          This parameter can be one of the following values:
-  *            @arg DAC_Channel_1: DAC Channel1 selected
-  *            @arg DAC_Channel_2: DAC Channel2 selected, applicable only for STM32F072 devices
-  * @param  DAC_IT: specifies the DAC interrupt pending bit to clear.
-  *          This parameter can be the following values:
-  *            @arg DAC_IT_DMAUDR: DMA underrun interrupt mask                                                    
-  * @retval None
-  */
-void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_DAC_CHANNEL(DAC_Channel));
-  assert_param(IS_DAC_IT(DAC_IT)); 
-
-  /* Clear the selected DAC interrupt pending bits */
-  DAC->SR = (DAC_IT << DAC_Channel);
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dbgmcu.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dbgmcu.c
deleted file mode 100644
index 3965733..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dbgmcu.c	
+++ /dev/null
@@ -1,218 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_dbgmcu.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Debug MCU (DBGMCU) peripheral:
-  *           + Device and Revision ID management
-  *           + Peripherals Configuration
-  *  @verbatim
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_dbgmcu.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup DBGMCU 
-  * @brief DBGMCU driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define IDCODE_DEVID_MASK    ((uint32_t)0x00000FFF)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup DBGMCU_Private_Functions 
-  * @{
-  */
-  
-
-/** @defgroup DBGMCU_Group1 Device and Revision ID management functions
- *  @brief   Device and Revision ID management functions
- *
-@verbatim
-  ==============================================================================
-            ##### Device and Revision ID management functions #####
-  ==============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Returns the device revision identifier.
-  * @param  None
-  * @retval Device revision identifier
-  */
-uint32_t DBGMCU_GetREVID(void)
-{
-   return(DBGMCU->IDCODE >> 16);
-}
-
-/**
-  * @brief  Returns the device identifier.
-  * @param  None
-  * @retval Device identifier
-  */
-uint32_t DBGMCU_GetDEVID(void)
-{
-   return(DBGMCU->IDCODE & IDCODE_DEVID_MASK);
-}
-
-/**
-  * @}
-  */
-  
-/** @defgroup DBGMCU_Group2 Peripherals Configuration functions
- *  @brief   Peripherals Configuration
- *
-@verbatim
-  ==============================================================================
-               ##### Peripherals Configuration functions #####
-  ==============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures low power mode behavior when the MCU is in Debug mode.
-  * @param  DBGMCU_Periph: specifies the low power mode.
-  *          This parameter can be any combination of the following values:
-  *             @arg DBGMCU_STOP: Keep debugger connection during STOP mode
-  *             @arg DBGMCU_STANDBY: Keep debugger connection during STANDBY mode
-  * @param  NewState: new state of the specified low power mode in Debug mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DBGMCU_PERIPH(DBGMCU_Periph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    DBGMCU->CR |= DBGMCU_Periph;
-  }
-  else
-  {
-    DBGMCU->CR &= ~DBGMCU_Periph;
-  }
-}
-
-
-/**
-  * @brief  Configures APB1 peripheral behavior when the MCU is in Debug mode.
-  * @param  DBGMCU_Periph: specifies the APB1 peripheral.
-  *          This parameter can be any combination of the following values:
-  *             @arg DBGMCU_TIM2_STOP: TIM2 counter stopped when Core is halted, 
-  *                  not applicable for STM32F030 devices   
-  *             @arg DBGMCU_TIM3_STOP: TIM3 counter stopped when Core is halted
-  *             @arg DBGMCU_TIM6_STOP: TIM6 counter stopped when Core is halted
-  *             @arg DBGMCU_TIM7_STOP: TIM7 counter stopped when Core is halted, 
-  *                  applicable only for STM32F072 devices               
-  *             @arg DBGMCU_TIM14_STOP: TIM14 counter stopped when Core is halted
-  *             @arg DBGMCU_RTC_STOP: RTC Calendar and Wakeup counter stopped 
-  *                                   when Core is halted.
-  *             @arg DBGMCU_WWDG_STOP: Debug WWDG stopped when Core is halted
-  *             @arg DBGMCU_IWDG_STOP: Debug IWDG stopped when Core is halted
-  *             @arg DBGMCU_I2C1_SMBUS_TIMEOUT: I2C1 SMBUS timeout mode stopped 
-  *                                             when Core is halted
-  *             @arg DBGMCU_CAN1_STOP: Debug CAN1 stopped when Core is halted, 
-  *                  applicable only for STM32F042 and STM32F072 devices               
-  * @param  NewState: new state of the specified APB1 peripheral in Debug mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void DBGMCU_APB1PeriphConfig(uint32_t DBGMCU_Periph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DBGMCU_APB1PERIPH(DBGMCU_Periph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    DBGMCU->APB1FZ |= DBGMCU_Periph;
-  }
-  else
-  {
-    DBGMCU->APB1FZ &= ~DBGMCU_Periph;
-  }
-}
-
-/**
-  * @brief  Configures APB2 peripheral behavior when the MCU is in Debug mode.
-  * @param  DBGMCU_Periph: specifies the APB2 peripheral.
-  *          This parameter can be any combination of the following values:
-  *             @arg DBGMCU_TIM1_STOP: TIM1 counter stopped when Core is halted
-  *             @arg DBGMCU_TIM15_STOP: TIM15 counter stopped when Core is halted
-  *             @arg DBGMCU_TIM16_STOP: TIM16 counter stopped when Core is halted
-  *             @arg DBGMCU_TIM17_STOP: TIM17 counter stopped when Core is halted
-  * @param  NewState: new state of the specified APB2 peripheral in Debug mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void DBGMCU_APB2PeriphConfig(uint32_t DBGMCU_Periph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DBGMCU_APB2PERIPH(DBGMCU_Periph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    DBGMCU->APB2FZ |= DBGMCU_Periph;
-  }
-  else
-  {
-    DBGMCU->APB2FZ &= ~DBGMCU_Periph;
-  }
-}
-
-/**
-  * @}
-  */
-  
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dma.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dma.c
deleted file mode 100644
index 73492c5..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dma.c	
+++ /dev/null
@@ -1,705 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_dma.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Direct Memory Access controller (DMA):
-  *           + Initialization and Configuration
-  *           + Data Counter
-  *           + Interrupts and flags management
-  *
-  *  @verbatim
-  ==============================================================================
-                      ##### How to use this driver #####
-  ==============================================================================
-    [..]
-    (#) Enable The DMA controller clock using 
-        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE) function for DMA1.
-    (#) Enable and configure the peripheral to be connected to the DMA channel
-       (except for internal SRAM / FLASH memories: no initialization is necessary).
-    (#) For a given Channel, program the Source and Destination addresses, 
-        the transfer Direction, the Buffer Size, the Peripheral and Memory 
-        Incrementation mode and Data Size, the Circular or Normal mode, 
-        the channel transfer Priority and the Memory-to-Memory transfer 
-        mode (if needed) using the DMA_Init() function.
-    (#) Enable the NVIC and the corresponding interrupt(s) using the function 
-        DMA_ITConfig() if you need to use DMA interrupts.
-    (#) Enable the DMA channel using the DMA_Cmd() function.
-    (#) Activate the needed channel Request using PPP_DMACmd() function for 
-        any PPP peripheral except internal SRAM and FLASH (ie. SPI, USART ...) 
-        The function allowing this operation is provided in each PPP peripheral 
-        driver (ie. SPI_DMACmd for SPI peripheral).
-    (#) Optionally, you can configure the number of data to be transferred
-        when the channel is disabled (ie. after each Transfer Complete event
-        or when a Transfer Error occurs) using the function DMA_SetCurrDataCounter().
-        And you can get the number of remaining data to be transferred using 
-        the function DMA_GetCurrDataCounter() at run time (when the DMA channel is
-        enabled and running).
-    (#) To control DMA events you can use one of the following two methods:
-        (##) Check on DMA channel flags using the function DMA_GetFlagStatus().
-        (##) Use DMA interrupts through the function DMA_ITConfig() at initialization
-             phase and DMA_GetITStatus() function into interrupt routines in
-             communication phase.
-             After checking on a flag you should clear it using DMA_ClearFlag()
-             function. And after checking on an interrupt event you should 
-             clear it using DMA_ClearITPendingBit() function.
-    @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_dma.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup DMA 
-  * @brief DMA driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define CCR_CLEAR_MASK   ((uint32_t)0xFFFF800F) /* DMA Channel config registers Masks */
-
-/* DMA1 Channelx interrupt pending bit masks */
-#define DMA1_CHANNEL1_IT_MASK    ((uint32_t)(DMA_ISR_GIF1 | DMA_ISR_TCIF1 | DMA_ISR_HTIF1 | DMA_ISR_TEIF1))
-#define DMA1_CHANNEL2_IT_MASK    ((uint32_t)(DMA_ISR_GIF2 | DMA_ISR_TCIF2 | DMA_ISR_HTIF2 | DMA_ISR_TEIF2))
-#define DMA1_CHANNEL3_IT_MASK    ((uint32_t)(DMA_ISR_GIF3 | DMA_ISR_TCIF3 | DMA_ISR_HTIF3 | DMA_ISR_TEIF3))
-#define DMA1_CHANNEL4_IT_MASK    ((uint32_t)(DMA_ISR_GIF4 | DMA_ISR_TCIF4 | DMA_ISR_HTIF4 | DMA_ISR_TEIF4))
-#define DMA1_CHANNEL5_IT_MASK    ((uint32_t)(DMA_ISR_GIF5 | DMA_ISR_TCIF5 | DMA_ISR_HTIF5 | DMA_ISR_TEIF5))
-#define DMA1_CHANNEL6_IT_MASK    ((uint32_t)(DMA_ISR_GIF6 | DMA_ISR_TCIF6 | DMA_ISR_HTIF6 | DMA_ISR_TEIF6)) /*!< Only applicable for STM32F072 devices */
-#define DMA1_CHANNEL7_IT_MASK    ((uint32_t)(DMA_ISR_GIF7 | DMA_ISR_TCIF7 | DMA_ISR_HTIF7 | DMA_ISR_TEIF7)) /*!< Only applicable for STM32F072 devices */
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup DMA_Private_Functions 
-  * @{
-  */
-
-/** @defgroup DMA_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions
- *
-@verbatim   
- ===============================================================================
-            ##### Initialization and Configuration functions #####
- ===============================================================================
-    [..] This subsection provides functions allowing to initialize the DMA channel 
-         source and destination addresses, incrementation and data sizes, transfer 
-         direction, buffer size, circular/normal mode selection, memory-to-memory 
-         mode selection and channel priority value.
-    [..] The DMA_Init() function follows the DMA configuration procedures as described 
-         in reference manual (RM0091).
-@endverbatim
-  * @{
-  */
-    
-/**
-  * @brief  Deinitializes the DMAy Channelx registers to their default reset
-  *         values.
-  * @param  DMAy_Channelx: where y can be 1 to select the DMA and 
-  *         x can be 1 to 7 for DMA1 to select the DMA Channel.
-  * @note   Channel 6 and 7 are available only for STM32F072 devices.
-  * @retval None
-  */
-void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx)
-{
-  /* Check the parameters */
-  assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx));
-
-  /* Disable the selected DMAy Channelx */
-  DMAy_Channelx->CCR &= (uint16_t)(~DMA_CCR_EN);
-
-  /* Reset DMAy Channelx control register */
-  DMAy_Channelx->CCR  = 0;
-
-  /* Reset DMAy Channelx remaining bytes register */
-  DMAy_Channelx->CNDTR = 0;
-
-  /* Reset DMAy Channelx peripheral address register */
-  DMAy_Channelx->CPAR  = 0;
-
-  /* Reset DMAy Channelx memory address register */
-  DMAy_Channelx->CMAR = 0;
-
-  if (DMAy_Channelx == DMA1_Channel1)
-  {
-    /* Reset interrupt pending bits for DMA1 Channel1 */
-    DMA1->IFCR |= DMA1_CHANNEL1_IT_MASK;
-  }
-  else if (DMAy_Channelx == DMA1_Channel2)
-  {
-    /* Reset interrupt pending bits for DMA1 Channel2 */
-    DMA1->IFCR |= DMA1_CHANNEL2_IT_MASK;
-  }
-  else if (DMAy_Channelx == DMA1_Channel3)
-  {
-    /* Reset interrupt pending bits for DMA1 Channel3 */
-    DMA1->IFCR |= DMA1_CHANNEL3_IT_MASK;
-  }
-  else if (DMAy_Channelx == DMA1_Channel4)
-  {
-    /* Reset interrupt pending bits for DMA1 Channel4 */
-    DMA1->IFCR |= DMA1_CHANNEL4_IT_MASK;
-  }
-  else if (DMAy_Channelx == DMA1_Channel5)
-  {
-    /* Reset interrupt pending bits for DMA1 Channel5 */
-    DMA1->IFCR |= DMA1_CHANNEL5_IT_MASK;
-  }
-  else if (DMAy_Channelx == DMA1_Channel6)
-  {
-    /* Reset interrupt pending bits for DMA1 Channel6 */
-    DMA1->IFCR |= DMA1_CHANNEL6_IT_MASK;
-  }
-  else
-  {
-    if (DMAy_Channelx == DMA1_Channel7) 
-    {
-      /* Reset interrupt pending bits for DMA1 Channel7 */
-      DMA1->IFCR |= DMA1_CHANNEL7_IT_MASK;
-    }
-  }
-}
-
-/**
-  * @brief  Initializes the DMAy Channelx according to the specified parameters 
-  *         in the DMA_InitStruct.
-  * @param  DMAy_Channelx: where y can be 1 to select the DMA and x can be 1 to 7
-  *         for DMA1 to select the DMA Channel.
-  * @note   Channel 6 and 7 are available only for STM32F072 devices. 
-  * @param  DMA_InitStruct: pointer to a DMA_InitTypeDef structure that contains
-  *         the configuration information for the specified DMA Channel.
-  * @retval None
-  */
-void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx));
-  assert_param(IS_DMA_DIR(DMA_InitStruct->DMA_DIR));
-  assert_param(IS_DMA_BUFFER_SIZE(DMA_InitStruct->DMA_BufferSize));
-  assert_param(IS_DMA_PERIPHERAL_INC_STATE(DMA_InitStruct->DMA_PeripheralInc));
-  assert_param(IS_DMA_MEMORY_INC_STATE(DMA_InitStruct->DMA_MemoryInc));
-  assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(DMA_InitStruct->DMA_PeripheralDataSize));
-  assert_param(IS_DMA_MEMORY_DATA_SIZE(DMA_InitStruct->DMA_MemoryDataSize));
-  assert_param(IS_DMA_MODE(DMA_InitStruct->DMA_Mode));
-  assert_param(IS_DMA_PRIORITY(DMA_InitStruct->DMA_Priority));
-  assert_param(IS_DMA_M2M_STATE(DMA_InitStruct->DMA_M2M));
-
-/*--------------------------- DMAy Channelx CCR Configuration ----------------*/
-  /* Get the DMAy_Channelx CCR value */
-  tmpreg = DMAy_Channelx->CCR;
-
-  /* Clear MEM2MEM, PL, MSIZE, PSIZE, MINC, PINC, CIRC and DIR bits */
-  tmpreg &= CCR_CLEAR_MASK;
-
-  /* Configure DMAy Channelx: data transfer, data size, priority level and mode */
-  /* Set DIR bit according to DMA_DIR value */
-  /* Set CIRC bit according to DMA_Mode value */
-  /* Set PINC bit according to DMA_PeripheralInc value */
-  /* Set MINC bit according to DMA_MemoryInc value */
-  /* Set PSIZE bits according to DMA_PeripheralDataSize value */
-  /* Set MSIZE bits according to DMA_MemoryDataSize value */
-  /* Set PL bits according to DMA_Priority value */
-  /* Set the MEM2MEM bit according to DMA_M2M value */
-  tmpreg |= DMA_InitStruct->DMA_DIR | DMA_InitStruct->DMA_Mode |
-            DMA_InitStruct->DMA_PeripheralInc | DMA_InitStruct->DMA_MemoryInc |
-            DMA_InitStruct->DMA_PeripheralDataSize | DMA_InitStruct->DMA_MemoryDataSize |
-            DMA_InitStruct->DMA_Priority | DMA_InitStruct->DMA_M2M;
-
-  /* Write to DMAy Channelx CCR */
-  DMAy_Channelx->CCR = tmpreg;
-
-/*--------------------------- DMAy Channelx CNDTR Configuration --------------*/
-  /* Write to DMAy Channelx CNDTR */
-  DMAy_Channelx->CNDTR = DMA_InitStruct->DMA_BufferSize;
-
-/*--------------------------- DMAy Channelx CPAR Configuration ---------------*/
-  /* Write to DMAy Channelx CPAR */
-  DMAy_Channelx->CPAR = DMA_InitStruct->DMA_PeripheralBaseAddr;
-
-/*--------------------------- DMAy Channelx CMAR Configuration ---------------*/
-  /* Write to DMAy Channelx CMAR */
-  DMAy_Channelx->CMAR = DMA_InitStruct->DMA_MemoryBaseAddr;
-}
-
-/**
-  * @brief  Fills each DMA_InitStruct member with its default value.
-  * @param  DMA_InitStruct: pointer to a DMA_InitTypeDef structure which will
-  *         be initialized.
-  * @retval None
-  */
-void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct)
-{
-/*-------------- Reset DMA init structure parameters values ------------------*/
-  /* Initialize the DMA_PeripheralBaseAddr member */
-  DMA_InitStruct->DMA_PeripheralBaseAddr = 0;
-  /* Initialize the DMA_MemoryBaseAddr member */
-  DMA_InitStruct->DMA_MemoryBaseAddr = 0;
-  /* Initialize the DMA_DIR member */
-  DMA_InitStruct->DMA_DIR = DMA_DIR_PeripheralSRC;
-  /* Initialize the DMA_BufferSize member */
-  DMA_InitStruct->DMA_BufferSize = 0;
-  /* Initialize the DMA_PeripheralInc member */
-  DMA_InitStruct->DMA_PeripheralInc = DMA_PeripheralInc_Disable;
-  /* Initialize the DMA_MemoryInc member */
-  DMA_InitStruct->DMA_MemoryInc = DMA_MemoryInc_Disable;
-  /* Initialize the DMA_PeripheralDataSize member */
-  DMA_InitStruct->DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
-  /* Initialize the DMA_MemoryDataSize member */
-  DMA_InitStruct->DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
-  /* Initialize the DMA_Mode member */
-  DMA_InitStruct->DMA_Mode = DMA_Mode_Normal;
-  /* Initialize the DMA_Priority member */
-  DMA_InitStruct->DMA_Priority = DMA_Priority_Low;
-  /* Initialize the DMA_M2M member */
-  DMA_InitStruct->DMA_M2M = DMA_M2M_Disable;
-}
-
-/**
-  * @brief  Enables or disables the specified DMAy Channelx.
-  * @param  DMAy_Channelx: where y can be 1 to select the DMA and
-  *         x can be 1 to 7 for DMA1 to select the DMA Channel.
-  * @note   Channel 6 and 7 are available only for STM32F072 devices.  
-  * @param  NewState: new state of the DMAy Channelx. 
-  *         This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected DMAy Channelx */
-    DMAy_Channelx->CCR |= DMA_CCR_EN;
-  }
-  else
-  {
-    /* Disable the selected DMAy Channelx */
-    DMAy_Channelx->CCR &= (uint16_t)(~DMA_CCR_EN);
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup DMA_Group2 Data Counter functions
- *  @brief   Data Counter functions 
- *
-@verbatim
- ===============================================================================
-                      ##### Data Counter functions #####
- ===============================================================================
-    [..] This subsection provides function allowing to configure and read the buffer 
-         size (number of data to be transferred).The DMA data counter can be written 
-         only when the DMA channel is disabled (ie. after transfer complete event).
-    [..] The following function can be used to write the Channel data counter value:
-         (+) void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t 
-             DataNumber).
-    -@- It is advised to use this function rather than DMA_Init() in situations 
-        where only the Data buffer needs to be reloaded.
-    [..] The DMA data counter can be read to indicate the number of remaining transfers 
-         for the relative DMA channel. This counter is decremented at the end of each 
-         data transfer and when the transfer is complete: 
-         (+) If Normal mode is selected: the counter is set to 0.
-         (+) If Circular mode is selected: the counter is reloaded with the initial 
-         value(configured before enabling the DMA channel).
-    [..] The following function can be used to read the Channel data counter value:
-         (+) uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx).
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Sets the number of data units in the current DMAy Channelx transfer.
-  * @param  DMAy_Channelx: where y can be 1 to select the DMA and x can be 
-  *         1 to 7 for DMA1 to select the DMA Channel.
-  * @note   Channel 6 and 7 are available only for STM32F072 devices. 
-  * @param  DataNumber: The number of data units in the current DMAy Channelx
-  *         transfer.
-  * @note   This function can only be used when the DMAy_Channelx is disabled.
-  * @retval None.
-  */
-void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber)
-{
-  /* Check the parameters */
-  assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx));
-
-/*--------------------------- DMAy Channelx CNDTR Configuration --------------*/
-  /* Write to DMAy Channelx CNDTR */
-  DMAy_Channelx->CNDTR = DataNumber;
-}
-
-/**
-  * @brief  Returns the number of remaining data units in the current
-  *         DMAy Channelx transfer.
-  * @param  DMAy_Channelx: where y can be 1 to select the DMA and
-  *         x can be 1 to 7 for DMA1 to select the DMA Channel.
-  * @note   Channel 6 and 7 are available only for STM32F072 devices. 
-  * @retval The number of remaining data units in the current DMAy Channelx
-  *         transfer.
-  */
-uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx)
-{
-  /* Check the parameters */
-  assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx));
-  /* Return the number of remaining data units for DMAy Channelx */
-  return ((uint16_t)(DMAy_Channelx->CNDTR));
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup DMA_Group3 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions 
- *
-@verbatim
- ===============================================================================
-          ##### Interrupts and flags management functions #####
- ===============================================================================
-    [..] This subsection provides functions allowing to configure the DMA Interrupts 
-         sources and check or clear the flags or pending bits status.
-         The user should identify which mode will be used in his application to manage 
-         the DMA controller events: Polling mode or Interrupt mode. 
-  *** Polling Mode ***
-  ====================
-    [..] Each DMA channel can be managed through 4 event Flags:(y : DMA Controller 
-         number  x : DMA channel number ).
-         (#) DMAy_FLAG_TCx : to indicate that a Transfer Complete event occurred.
-         (#) DMAy_FLAG_HTx : to indicate that a Half-Transfer Complete event occurred.
-         (#) DMAy_FLAG_TEx : to indicate that a Transfer Error occurred.
-         (#) DMAy_FLAG_GLx : to indicate that at least one of the events described 
-             above occurred.
-    -@- Clearing DMAy_FLAG_GLx results in clearing all other pending flags of the 
-        same channel (DMAy_FLAG_TCx, DMAy_FLAG_HTx and DMAy_FLAG_TEx).
-    [..]In this Mode it is advised to use the following functions:
-        (+) FlagStatus DMA_GetFlagStatus(uint32_t DMA_FLAG);
-        (+) void DMA_ClearFlag(uint32_t DMA_FLAG);
-
-  *** Interrupt Mode ***
-  ======================
-    [..] Each DMA channel can be managed through 4 Interrupts:
-    (+) Interrupt Source
-       (##) DMA_IT_TC: specifies the interrupt source for the Transfer Complete 
-            event.
-       (##) DMA_IT_HT : specifies the interrupt source for the Half-transfer Complete 
-            event.
-       (##) DMA_IT_TE : specifies the interrupt source for the transfer errors event.
-       (##) DMA_IT_GL : to indicate that at least one of the interrupts described 
-            above occurred.
-    -@@- Clearing DMA_IT_GL interrupt results in clearing all other interrupts of 
-        the same channel (DMA_IT_TCx, DMA_IT_HT and DMA_IT_TE).
-    [..]In this Mode it is advised to use the following functions:
-        (+) void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, 
-            FunctionalState NewState);
-        (+) ITStatus DMA_GetITStatus(uint32_t DMA_IT);
-        (+) void DMA_ClearITPendingBit(uint32_t DMA_IT);
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified DMAy Channelx interrupts.
-  * @param  DMAy_Channelx: where y can be 1 to select the DMA and
-  *         x can be 1 to 7 for DMA1 to select the DMA Channel.
-  * @note   Channel 6 and 7 are available only for STM32F072 devices. 
-  * @param  DMA_IT: specifies the DMA interrupts sources to be enabled
-  *         or disabled. 
-  *          This parameter can be any combination of the following values:
-  *            @arg DMA_IT_TC: Transfer complete interrupt mask
-  *            @arg DMA_IT_HT: Half transfer interrupt mask
-  *            @arg DMA_IT_TE: Transfer error interrupt mask
-  * @param  NewState: new state of the specified DMA interrupts.
-  *         This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx));
-  assert_param(IS_DMA_CONFIG_IT(DMA_IT));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected DMA interrupts */
-    DMAy_Channelx->CCR |= DMA_IT;
-  }
-  else
-  {
-    /* Disable the selected DMA interrupts */
-    DMAy_Channelx->CCR &= ~DMA_IT;
-  }
-}
-
-/**
-  * @brief  Checks whether the specified DMAy Channelx flag is set or not.
-  * @param  DMA_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *            @arg DMA1_FLAG_GL1: DMA1 Channel1 global flag.
-  *            @arg DMA1_FLAG_TC1: DMA1 Channel1 transfer complete flag.
-  *            @arg DMA1_FLAG_HT1: DMA1 Channel1 half transfer flag.
-  *            @arg DMA1_FLAG_TE1: DMA1 Channel1 transfer error flag.
-  *            @arg DMA1_FLAG_GL2: DMA1 Channel2 global flag.
-  *            @arg DMA1_FLAG_TC2: DMA1 Channel2 transfer complete flag.
-  *            @arg DMA1_FLAG_HT2: DMA1 Channel2 half transfer flag.
-  *            @arg DMA1_FLAG_TE2: DMA1 Channel2 transfer error flag.
-  *            @arg DMA1_FLAG_GL3: DMA1 Channel3 global flag.
-  *            @arg DMA1_FLAG_TC3: DMA1 Channel3 transfer complete flag.
-  *            @arg DMA1_FLAG_HT3: DMA1 Channel3 half transfer flag.
-  *            @arg DMA1_FLAG_TE3: DMA1 Channel3 transfer error flag.
-  *            @arg DMA1_FLAG_GL4: DMA1 Channel4 global flag.
-  *            @arg DMA1_FLAG_TC4: DMA1 Channel4 transfer complete flag.
-  *            @arg DMA1_FLAG_HT4: DMA1 Channel4 half transfer flag.
-  *            @arg DMA1_FLAG_TE4: DMA1 Channel4 transfer error flag.
-  *            @arg DMA1_FLAG_GL5: DMA1 Channel5 global flag.
-  *            @arg DMA1_FLAG_TC5: DMA1 Channel5 transfer complete flag.
-  *            @arg DMA1_FLAG_HT5: DMA1 Channel5 half transfer flag.
-  *            @arg DMA1_FLAG_TE5: DMA1 Channel5 transfer error flag.
-  *            @arg DMA1_FLAG_GL6: DMA1 Channel6 global flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_TC6: DMA1 Channel6 transfer complete flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_HT6: DMA1 Channel6 half transfer flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_TE6: DMA1 Channel6 transfer error flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_GL7: DMA1 Channel7 global flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_TC7: DMA1 Channel7 transfer complete flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_HT7: DMA1 Channel7 half transfer flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_TE7: DMA1 Channel7 transfer error flag, applicable only for STM32F072 devices.
-  * @note   The Global flag (DMAy_FLAG_GLx) is set whenever any of the other flags 
-  *         relative to the same channel is set (Transfer Complete, Half-transfer 
-  *         Complete or Transfer Error flags: DMAy_FLAG_TCx, DMAy_FLAG_HTx or 
-  *         DMAy_FLAG_TEx). 
-  *      
-  * @retval The new state of DMA_FLAG (SET or RESET).
-  */
-FlagStatus DMA_GetFlagStatus(uint32_t DMA_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-
-  /* Check the parameters */
-  assert_param(IS_DMA_GET_FLAG(DMA_FLAG));
-
-  /* Check the status of the specified DMA flag */
-  if ((DMA1->ISR & DMA_FLAG) != (uint32_t)RESET)
-  {
-    /* DMA_FLAG is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* DMA_FLAG is reset */
-    bitstatus = RESET;
-  }
-
-  /* Return the DMA_FLAG status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the DMAy Channelx's pending flags.
-  * @param  DMA_FLAG: specifies the flag to clear.
-  *          This parameter can be any combination (for the same DMA) of the following values:
-  *            @arg DMA1_FLAG_GL1: DMA1 Channel1 global flag.
-  *            @arg DMA1_FLAG_TC1: DMA1 Channel1 transfer complete flag.
-  *            @arg DMA1_FLAG_HT1: DMA1 Channel1 half transfer flag.
-  *            @arg DMA1_FLAG_TE1: DMA1 Channel1 transfer error flag.
-  *            @arg DMA1_FLAG_GL2: DMA1 Channel2 global flag.
-  *            @arg DMA1_FLAG_TC2: DMA1 Channel2 transfer complete flag.
-  *            @arg DMA1_FLAG_HT2: DMA1 Channel2 half transfer flag.
-  *            @arg DMA1_FLAG_TE2: DMA1 Channel2 transfer error flag.
-  *            @arg DMA1_FLAG_GL3: DMA1 Channel3 global flag.
-  *            @arg DMA1_FLAG_TC3: DMA1 Channel3 transfer complete flag.
-  *            @arg DMA1_FLAG_HT3: DMA1 Channel3 half transfer flag.
-  *            @arg DMA1_FLAG_TE3: DMA1 Channel3 transfer error flag.
-  *            @arg DMA1_FLAG_GL4: DMA1 Channel4 global flag.
-  *            @arg DMA1_FLAG_TC4: DMA1 Channel4 transfer complete flag.
-  *            @arg DMA1_FLAG_HT4: DMA1 Channel4 half transfer flag.
-  *            @arg DMA1_FLAG_TE4: DMA1 Channel4 transfer error flag.
-  *            @arg DMA1_FLAG_GL5: DMA1 Channel5 global flag.
-  *            @arg DMA1_FLAG_TC5: DMA1 Channel5 transfer complete flag.
-  *            @arg DMA1_FLAG_HT5: DMA1 Channel5 half transfer flag.
-  *            @arg DMA1_FLAG_TE5: DMA1 Channel5 transfer error flag.
-  *            @arg DMA1_FLAG_GL6: DMA1 Channel6 global flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_TC6: DMA1 Channel6 transfer complete flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_HT6: DMA1 Channel6 half transfer flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_TE6: DMA1 Channel6 transfer error flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_GL7: DMA1 Channel7 global flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_TC7: DMA1 Channel7 transfer complete flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_HT7: DMA1 Channel7 half transfer flag, applicable only for STM32F072 devices.
-  *            @arg DMA1_FLAG_TE7: DMA1 Channel7 transfer error flag, applicable only for STM32F072 devices.
-  *              
-  * @note   Clearing the Global flag (DMAy_FLAG_GLx) results in clearing all other flags
-  *         relative to the same channel (Transfer Complete, Half-transfer Complete and
-  *         Transfer Error flags: DMAy_FLAG_TCx, DMAy_FLAG_HTx and DMAy_FLAG_TEx).
-  *
-  * @retval None
-  */
-void DMA_ClearFlag(uint32_t DMA_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_DMA_CLEAR_FLAG(DMA_FLAG));
-
-  /* Clear the selected DMA flags */
-  DMA1->IFCR = DMA_FLAG;
-}
-
-/**
-  * @brief  Checks whether the specified DMAy Channelx interrupt has occurred or not.
-  * @param  DMA_IT: specifies the DMA interrupt source to check. 
-  *          This parameter can be one of the following values:
-  *            @arg DMA1_IT_GL1: DMA1 Channel1 global interrupt.
-  *            @arg DMA1_IT_TC1: DMA1 Channel1 transfer complete interrupt.
-  *            @arg DMA1_IT_HT1: DMA1 Channel1 half transfer interrupt.
-  *            @arg DMA1_IT_TE1: DMA1 Channel1 transfer error interrupt.
-  *            @arg DMA1_IT_GL2: DMA1 Channel2 global interrupt.
-  *            @arg DMA1_IT_TC2: DMA1 Channel2 transfer complete interrupt.
-  *            @arg DMA1_IT_HT2: DMA1 Channel2 half transfer interrupt.
-  *            @arg DMA1_IT_TE2: DMA1 Channel2 transfer error interrupt.
-  *            @arg DMA1_IT_GL3: DMA1 Channel3 global interrupt.
-  *            @arg DMA1_IT_TC3: DMA1 Channel3 transfer complete interrupt.
-  *            @arg DMA1_IT_HT3: DMA1 Channel3 half transfer interrupt.
-  *            @arg DMA1_IT_TE3: DMA1 Channel3 transfer error interrupt.
-  *            @arg DMA1_IT_GL4: DMA1 Channel4 global interrupt.
-  *            @arg DMA1_IT_TC4: DMA1 Channel4 transfer complete interrupt.
-  *            @arg DMA1_IT_HT4: DMA1 Channel4 half transfer interrupt.
-  *            @arg DMA1_IT_TE4: DMA1 Channel4 transfer error interrupt.
-  *            @arg DMA1_IT_GL5: DMA1 Channel5 global interrupt.
-  *            @arg DMA1_IT_TC5: DMA1 Channel5 transfer complete interrupt.
-  *            @arg DMA1_IT_HT5: DMA1 Channel5 half transfer interrupt.
-  *            @arg DMA1_IT_TE5: DMA1 Channel5 transfer error interrupt.
-  *            @arg DMA1_IT_GL6: DMA1 Channel6 global interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_TC6: DMA1 Channel6 transfer complete interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_HT6: DMA1 Channel6 half transfer interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_TE6: DMA1 Channel6 transfer error interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_GL7: DMA1 Channel7 global interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_TC7: DMA1 Channel7 transfer complete interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_HT7: DMA1 Channel7 half transfer interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_TE7: DMA1 Channel7 transfer error interrupt, applicable only for STM32F072 devices.  
-  *     
-  * @note   The Global interrupt (DMAy_FLAG_GLx) is set whenever any of the other 
-  *         interrupts relative to the same channel is set (Transfer Complete, 
-  *         Half-transfer Complete or Transfer Error interrupts: DMAy_IT_TCx, 
-  *         DMAy_IT_HTx or DMAy_IT_TEx). 
-  *      
-  * @retval The new state of DMA_IT (SET or RESET).
-  */
-ITStatus DMA_GetITStatus(uint32_t DMA_IT)
-{
-  ITStatus bitstatus = RESET;
-
-  /* Check the parameters */
-  assert_param(IS_DMA_GET_IT(DMA_IT));
-
-  /* Check the status of the specified DMA interrupt */
-  if ((DMA1->ISR & DMA_IT) != (uint32_t)RESET)
-  {
-    /* DMA_IT is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* DMA_IT is reset */
-    bitstatus = RESET;
-  }
-  /* Return the DMA_IT status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the DMAy Channelx's interrupt pending bits.
-  * @param  DMA_IT: specifies the DMA interrupt pending bit to clear.
-  *          This parameter can be any combination (for the same DMA) of the following values:
-  *            @arg DMA1_IT_GL1: DMA1 Channel1 global interrupt.
-  *            @arg DMA1_IT_TC1: DMA1 Channel1 transfer complete interrupt.
-  *            @arg DMA1_IT_HT1: DMA1 Channel1 half transfer interrupt.
-  *            @arg DMA1_IT_TE1: DMA1 Channel1 transfer error interrupt.
-  *            @arg DMA1_IT_GL2: DMA1 Channel2 global interrupt.
-  *            @arg DMA1_IT_TC2: DMA1 Channel2 transfer complete interrupt.
-  *            @arg DMA1_IT_HT2: DMA1 Channel2 half transfer interrupt.
-  *            @arg DMA1_IT_TE2: DMA1 Channel2 transfer error interrupt.
-  *            @arg DMA1_IT_GL3: DMA1 Channel3 global interrupt.
-  *            @arg DMA1_IT_TC3: DMA1 Channel3 transfer complete interrupt.
-  *            @arg DMA1_IT_HT3: DMA1 Channel3 half transfer interrupt.
-  *            @arg DMA1_IT_TE3: DMA1 Channel3 transfer error interrupt.
-  *            @arg DMA1_IT_GL4: DMA1 Channel4 global interrupt.
-  *            @arg DMA1_IT_TC4: DMA1 Channel4 transfer complete interrupt.
-  *            @arg DMA1_IT_HT4: DMA1 Channel4 half transfer interrupt.
-  *            @arg DMA1_IT_TE4: DMA1 Channel4 transfer error interrupt.
-  *            @arg DMA1_IT_GL5: DMA1 Channel5 global interrupt.
-  *            @arg DMA1_IT_TC5: DMA1 Channel5 transfer complete interrupt.
-  *            @arg DMA1_IT_HT5: DMA1 Channel5 half transfer interrupt.
-  *            @arg DMA1_IT_TE5: DMA1 Channel5 transfer error interrupt.
-  *            @arg DMA1_IT_GL6: DMA1 Channel6 global interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_TC6: DMA1 Channel6 transfer complete interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_HT6: DMA1 Channel6 half transfer interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_TE6: DMA1 Channel6 transfer error interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_GL7: DMA1 Channel7 global interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_TC7: DMA1 Channel7 transfer complete interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_HT7: DMA1 Channel7 half transfer interrupt, applicable only for STM32F072 devices.
-  *            @arg DMA1_IT_TE7: DMA1 Channel7 transfer error interrupt, applicable only for STM32F072 devices.  
-  *     
-  * @note   Clearing the Global interrupt (DMAy_IT_GLx) results in clearing all other 
-  *         interrupts relative to the same channel (Transfer Complete, Half-transfer 
-  *         Complete and Transfer Error interrupts: DMAy_IT_TCx, DMAy_IT_HTx and 
-  *         DMAy_IT_TEx).  
-  *        
-  * @retval None
-  */
-void DMA_ClearITPendingBit(uint32_t DMA_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_DMA_CLEAR_IT(DMA_IT));
-
-  /* Clear the selected DMA interrupt pending bits */
-  DMA1->IFCR = DMA_IT;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_exti.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_exti.c
deleted file mode 100644
index 684a7de..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_exti.c	
+++ /dev/null
@@ -1,314 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_exti.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the EXTI peripheral:
-  *           + Initialization and Configuration
-  *           + Interrupts and flags management
-  *
-  *  @verbatim
-  ==============================================================================
-                            ##### EXTI features ##### 
-  ==============================================================================
-    [..] External interrupt/event lines are mapped as following:
-         (#) All available GPIO pins are connected to the 16 external 
-             interrupt/event lines from EXTI0 to EXTI15.
-         (#) EXTI line 16 is connected to the PVD output, not applicable for STM32F030 devices.
-         (#) EXTI line 17 is connected to the RTC Alarm event.
-         (#) EXTI line 18 is connected to the RTC Alarm event, applicable only for STM32F072 devices.
-         (#) EXTI line 19 is connected to the RTC Tamper and TimeStamp events.
-         (#) EXTI line 20 is connected to the RTC wakeup event, applicable only for STM32F072 devices.
-         (#) EXTI line 21 is connected to the Comparator 1 wakeup event, applicable only for STM32F051 and STM32F072 devices. 
-         (#) EXTI line 22 is connected to the Comparator 2 wakeup event, applicable only for STM32F051 and STM32F072 devices.
-         (#) EXTI line 23 is connected to the I2C1 wakeup event, not applicable for STM32F030 devices.
-         (#) EXTI line 25 is connected to the USART1 wakeup event, not applicable for STM32F030 devices.
-         (#) EXTI line 26 is connected to the USART2 wakeup event, applicable only for STM32F072 devices.
-         (#) EXTI line 27 is connected to the CEC wakeup event, applicable only for STM32F051 and STM32F072 devices.
-         (#) EXTI line 31 is connected to the VDD USB monitor event, applicable only for STM32F072 devices.
-
-                       ##### How to use this driver ##### 
-  ==============================================================================
-    [..] In order to use an I/O pin as an external interrupt source, follow
-         steps below:
-    (#) Configure the I/O in input mode using GPIO_Init()
-    (#) Select the input source pin for the EXTI line using 
-        SYSCFG_EXTILineConfig().
-    (#) Select the mode(interrupt, event) and configure the trigger selection 
-       (Rising, falling or both) using EXTI_Init(). For the internal interrupt,
-       the trigger selection is not needed( the active edge is always the rising one).
-    (#) Configure NVIC IRQ channel mapped to the EXTI line using NVIC_Init().
-    (#) Optionally, you can generate a software interrupt using the function EXTI_GenerateSWInterrupt().
-    [..]
-    (@) SYSCFG APB clock must be enabled to get write access to SYSCFG_EXTICRx
-      registers using RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
-    @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_exti.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup EXTI 
-  * @brief EXTI driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define EXTI_LINENONE     ((uint32_t)0x00000)        /* No interrupt selected */
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup EXTI_Private_Functions
-  * @{
-  */
-
-/** @defgroup EXTI_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions 
- *
-@verbatim   
-  ==============================================================================
-            ##### Initialization and Configuration functions #####
-  ==============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the EXTI peripheral registers to their default reset 
-  *         values.
-  * @param  None
-  * @retval None
-  */
-void EXTI_DeInit(void)
-{
-  EXTI->IMR = 0x0F940000;
-  EXTI->EMR = 0x00000000;
-  EXTI->RTSR = 0x00000000;
-  EXTI->FTSR = 0x00000000;
-  EXTI->PR = 0x006BFFFF;
-}
-
-/**
-  * @brief  Initializes the EXTI peripheral according to the specified
-  *         parameters in the EXTI_InitStruct.
-  * @param  EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure that 
-  *         contains the configuration information for the EXTI peripheral.
-  * @retval None
-  */
-void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
-{
-  uint32_t tmp = 0;
-
-  /* Check the parameters */
-  assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
-  assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
-  assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));
-  assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
-
-  tmp = (uint32_t)EXTI_BASE;
-
-  if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
-  {
-    /* Clear EXTI line configuration */
-    EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
-    EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
-
-    tmp += EXTI_InitStruct->EXTI_Mode;
-
-    *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
-
-    /* Clear Rising Falling edge configuration */
-    EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
-    EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
-
-    /* Select the trigger for the selected interrupts */
-    if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
-    {
-      /* Rising Falling edge */
-      EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
-      EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
-    }
-    else
-    {
-      tmp = (uint32_t)EXTI_BASE;
-      tmp += EXTI_InitStruct->EXTI_Trigger;
-
-      *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
-    }
-  }
-  else
-  {
-    tmp += EXTI_InitStruct->EXTI_Mode;
-
-    /* Disable the selected external lines */
-    *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;
-  }
-}
-
-/**
-  * @brief  Fills each EXTI_InitStruct member with its reset value.
-  * @param  EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure which will
-  *         be initialized.
-  * @retval None
-  */
-void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
-{
-  EXTI_InitStruct->EXTI_Line = EXTI_LINENONE;
-  EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
-  EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
-  EXTI_InitStruct->EXTI_LineCmd = DISABLE;
-}
-
-/**
-  * @brief  Generates a Software interrupt on selected EXTI line.
-  * @param  EXTI_Line: specifies the EXTI line on which the software interrupt
-  *         will be generated.
-  *          This parameter can be any combination of EXTI_Linex where x can be (0..27).
-  * @retval None
-  */
-void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
-{
-  /* Check the parameters */
-  assert_param(IS_EXTI_LINE(EXTI_Line));
-
-  EXTI->SWIER |= EXTI_Line;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup EXTI_Group2 Interrupts and flags management functions
- *  @brief    Interrupts and flags management functions 
- *
-@verbatim   
-  ==============================================================================
-             ##### Interrupts and flags management functions #####
-  ==============================================================================
-  
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Checks whether the specified EXTI line flag is set or not.
-  * @param  EXTI_Line: specifies the EXTI line flag to check.
-  *          This parameter can be EXTI_Linex where x can be (0..27).
-  * @retval The new state of EXTI_Line (SET or RESET).
-  */
-FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
-{
-   FlagStatus bitstatus = RESET;
-  /* Check the parameters */
-  assert_param(IS_GET_EXTI_LINE(EXTI_Line));
-
-  if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the EXTI's line pending flags.
-  * @param  EXTI_Line: specifies the EXTI lines flags to clear.
-  *          This parameter can be any combination of EXTI_Linex where x can be (0..27).
-  * @retval None
-  */
-void EXTI_ClearFlag(uint32_t EXTI_Line)
-{
-  /* Check the parameters */
-  assert_param(IS_EXTI_LINE(EXTI_Line));
-
-  EXTI->PR = EXTI_Line;
-}
-
-/**
-  * @brief  Checks whether the specified EXTI line is asserted or not.
-  * @param  EXTI_Line: specifies the EXTI line to check.
-  *          This parameter can be EXTI_Linex where x can be (0..27).
-  * @retval The new state of EXTI_Line (SET or RESET).
-  */
-ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
-{
-  ITStatus bitstatus = RESET;
-
-  /* Check the parameters */
-  assert_param(IS_GET_EXTI_LINE(EXTI_Line));
-
-  if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the EXTI's line pending bits.
-  * @param  EXTI_Line: specifies the EXTI lines to clear.
-  *          This parameter can be any combination of EXTI_Linex where x can be (0..27).
-  * @retval None
-  */
-void EXTI_ClearITPendingBit(uint32_t EXTI_Line)
-{
-  /* Check the parameters */
-  assert_param(IS_EXTI_LINE(EXTI_Line));
-
-  EXTI->PR = EXTI_Line;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_flash.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_flash.c
deleted file mode 100644
index e548c44..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_flash.c	
+++ /dev/null
@@ -1,1256 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_flash.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the FLASH peripheral:
-  *            - FLASH Interface configuration
-  *            - FLASH Memory Programming
-  *            - Option Bytes Programming
-  *            - Interrupts and flags management
-  *
-  *  @verbatim
- ===============================================================================
-                    ##### How to use this driver #####
- ===============================================================================
-    [..] This driver provides functions to configure and program the Flash 
-         memory of all STM32F0xx devices. These functions are split in 4 groups
-         (#) FLASH Interface configuration functions: this group includes the 
-             management of following features:
-             (++) Set the latency
-             (++) Enable/Disable the prefetch buffer
-
-         (#) FLASH Memory Programming functions: this group includes all needed 
-             functions to erase and program the main memory:
-             (++) Lock and Unlock the Flash interface.
-             (++) Erase function: Erase Page, erase all pages.
-             (++) Program functions: Half Word and Word write.
-
-         (#) FLASH Option Bytes Programming functions: this group includes all 
-             needed functions to:
-             (++) Lock and Unlock the Flash Option bytes.
-             (++) Launch the Option Bytes loader
-             (++) Erase the Option Bytes
-             (++)Set/Reset the write protection
-             (++) Set the Read protection Level
-             (++) Program the user option Bytes
-             (++) Set/Reset the BOOT1 bit
-             (++) Enable/Disable the VDDA Analog Monitoring
-             (++) Get the user option bytes
-             (++) Get the Write protection
-             (++) Get the read protection status
-
-         (#) FLASH Interrupts and flag management functions: this group includes 
-             all needed functions to:
-             (++) Enable/Disable the flash interrupt sources
-             (++) Get flags status
-             (++) Clear flags
-             (++) Get Flash operation status
-             (++) Wait for last flash operation
-
- @endverbatim
-  
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_flash.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup FLASH 
-  * @brief FLASH driver modules
-  * @{
-  */ 
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
- 
-/** @defgroup FLASH_Private_Functions
-  * @{
-  */ 
-
-/** @defgroup FLASH_Group1 FLASH Interface configuration functions
-  *  @brief   FLASH Interface configuration functions 
- *
-@verbatim   
- ===============================================================================
-               ##### FLASH Interface configuration functions #####
- ===============================================================================
-
-    [..] FLASH_Interface configuration_Functions, includes the following functions:
-       (+) void FLASH_SetLatency(uint32_t FLASH_Latency):
-    [..] To correctly read data from Flash memory, the number of wait states (LATENCY) 
-     must be correctly programmed according to the frequency of the CPU clock (HCLK) 
-    [..]
-        +--------------------------------------------- +
-        |  Wait states  |   HCLK clock frequency (MHz) |
-        |---------------|------------------------------|
-        |0WS(1CPU cycle)|       0 < HCLK <= 24         |
-        |---------------|------------------------------|
-        |1WS(2CPU cycle)|       24 < HCLK <= 48        |
-        +----------------------------------------------+
-    [..]
-       (+) void FLASH_PrefetchBufferCmd(FunctionalState NewState);
-    [..]
-     All these functions don't need the unlock sequence.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Sets the code latency value.
-  * @param  FLASH_Latency: specifies the FLASH Latency value.
-  *          This parameter can be one of the following values:
-  *             @arg FLASH_Latency_0: FLASH Zero Latency cycle
-  *             @arg FLASH_Latency_1: FLASH One Latency cycle
-  * @retval None
-  */
-void FLASH_SetLatency(uint32_t FLASH_Latency)
-{
-   uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_FLASH_LATENCY(FLASH_Latency));
-
-  /* Read the ACR register */
-  tmpreg = FLASH->ACR;  
-
-  /* Sets the Latency value */
-  tmpreg &= (uint32_t) (~((uint32_t)FLASH_ACR_LATENCY));
-  tmpreg |= FLASH_Latency;
-
-  /* Write the ACR register */
-  FLASH->ACR = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables the Prefetch Buffer.
-  * @param  NewState: new state of the FLASH prefetch buffer.
-  *          This parameter can be: ENABLE or DISABLE. 
-  * @retval None
-  */
-void FLASH_PrefetchBufferCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if(NewState != DISABLE)
-  {
-    FLASH->ACR |= FLASH_ACR_PRFTBE;
-  }
-  else
-  {
-    FLASH->ACR &= (uint32_t)(~((uint32_t)FLASH_ACR_PRFTBE));
-  }
-}
-
-/**
-  * @brief  Checks whether the FLASH Prefetch Buffer status is set or not.
-  * @param  None
-  * @retval FLASH Prefetch Buffer Status (SET or RESET).
-  */
-FlagStatus FLASH_GetPrefetchBufferStatus(void)
-{
-  FlagStatus bitstatus = RESET;
-
-  if ((FLASH->ACR & FLASH_ACR_PRFTBS) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  /* Return the new state of FLASH Prefetch Buffer Status (SET or RESET) */
-  return bitstatus; 
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Group2 FLASH Memory Programming functions
- *  @brief   FLASH Memory Programming functions
- *
-@verbatim   
- ===============================================================================
-                ##### FLASH Memory Programming functions #####
- ===============================================================================
-
-    [..] The FLASH Memory Programming functions, includes the following functions:
-       (+) void FLASH_Unlock(void);
-       (+) void FLASH_Lock(void);
-       (+) FLASH_Status FLASH_ErasePage(uint32_t Page_Address);
-       (+) FLASH_Status FLASH_EraseAllPages(void);
-       (+) FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);
-       (+) FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
-
-    [..] Any operation of erase or program should follow these steps:
-       
-       (#) Call the FLASH_Unlock() function to enable the flash control register and 
-           program memory access
-       (#) Call the desired function to erase page or program data
-       (#) Call the FLASH_Lock() to disable the flash program memory access 
-      (recommended to protect the FLASH memory against possible unwanted operation)
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Unlocks the FLASH control register and program memory access.
-  * @param  None
-  * @retval None
-  */
-void FLASH_Unlock(void)
-{
-  if((FLASH->CR & FLASH_CR_LOCK) != RESET)
-  {
-    /* Unlocking the program memory access */
-    FLASH->KEYR = FLASH_FKEY1;
-    FLASH->KEYR = FLASH_FKEY2;
-  }
-}
-
-/**
-  * @brief  Locks the Program memory access.
-  * @param  None
-  * @retval None
-  */
-void FLASH_Lock(void)
-{
-  /* Set the LOCK Bit to lock the FLASH control register and program memory access */
-  FLASH->CR |= FLASH_CR_LOCK;
-}
-
-/**
-  * @brief  Erases a specified page in program memory.
-  * @note   To correctly run this function, the FLASH_Unlock() function must be called before.
-  * @note   Call the FLASH_Lock() to disable the flash memory access (recommended
-  *         to protect the FLASH memory against possible unwanted operation)
-  * @param  Page_Address: The page address in program memory to be erased.
-  * @note   A Page is erased in the Program memory only if the address to load 
-  *         is the start address of a page (multiple of 1024 bytes).
-  * @retval FLASH Status: The returned value can be: 
-  *         FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_ErasePage(uint32_t Page_Address)
-{
-  FLASH_Status status = FLASH_COMPLETE;
-
-  /* Check the parameters */
-  assert_param(IS_FLASH_PROGRAM_ADDRESS(Page_Address));
- 
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  { 
-    /* If the previous operation is completed, proceed to erase the page */
-    FLASH->CR |= FLASH_CR_PER;
-    FLASH->AR  = Page_Address;
-    FLASH->CR |= FLASH_CR_STRT;
-    
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    
-    /* Disable the PER Bit */
-    FLASH->CR &= ~FLASH_CR_PER;
-  }
-    
-  /* Return the Erase Status */
-  return status;
-}
-
-/**
-  * @brief  Erases all FLASH pages.
-  * @note   To correctly run this function, the FLASH_Unlock() function must be called before.
-  * @note   Call the FLASH_Lock() to disable the flash memory access (recommended
-  *         to protect the FLASH memory against possible unwanted operation)
-  * @param  None
-  * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG,
-  *         FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_EraseAllPages(void)
-{
-  FLASH_Status status = FLASH_COMPLETE;
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {
-    /* if the previous operation is completed, proceed to erase all pages */
-     FLASH->CR |= FLASH_CR_MER;
-     FLASH->CR |= FLASH_CR_STRT;
-    
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-    /* Disable the MER Bit */
-    FLASH->CR &= ~FLASH_CR_MER;
-  }
-
-  /* Return the Erase Status */
-  return status;
-}
-
-/**
-  * @brief  Programs a word at a specified address.
-  * @note   To correctly run this function, the FLASH_Unlock() function must be called before.
-  * @note   Call the FLASH_Lock() to disable the flash memory access (recommended
-  *         to protect the FLASH memory against possible unwanted operation)
-  * @param  Address: specifies the address to be programmed.
-  * @param  Data: specifies the data to be programmed.
-  * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG,
-  *         FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. 
-  */
-FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data)
-{
-  FLASH_Status status = FLASH_COMPLETE;
-  __IO uint32_t tmp = 0;
-
-  /* Check the parameters */
-  assert_param(IS_FLASH_PROGRAM_ADDRESS(Address));
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {
-    /* If the previous operation is completed, proceed to program the new first 
-    half word */
-    FLASH->CR |= FLASH_CR_PG;
-  
-    *(__IO uint16_t*)Address = (uint16_t)Data;
-    
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
- 
-    if(status == FLASH_COMPLETE)
-    {
-      /* If the previous operation is completed, proceed to program the new second 
-      half word */
-      tmp = Address + 2;
-
-      *(__IO uint16_t*) tmp = Data >> 16;
-    
-      /* Wait for last operation to be completed */
-      status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-        
-      /* Disable the PG Bit */
-      FLASH->CR &= ~FLASH_CR_PG;
-    }
-    else
-    {
-      /* Disable the PG Bit */
-      FLASH->CR &= ~FLASH_CR_PG;
-    }
-  }
-   
-  /* Return the Program Status */
-  return status;
-}
-
-/**
-  * @brief  Programs a half word at a specified address.
-  * @note   To correctly run this function, the FLASH_Unlock() function must be called before.
-  * @note   Call the FLASH_Lock() to disable the flash memory access (recommended
-  *         to protect the FLASH memory against possible unwanted operation)
-  * @param  Address: specifies the address to be programmed.
-  * @param  Data: specifies the data to be programmed.
-  * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG,
-  *         FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. 
-  */
-FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data)
-{
-  FLASH_Status status = FLASH_COMPLETE;
-
-  /* Check the parameters */
-  assert_param(IS_FLASH_PROGRAM_ADDRESS(Address));
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {
-    /* If the previous operation is completed, proceed to program the new data */
-    FLASH->CR |= FLASH_CR_PG;
-  
-    *(__IO uint16_t*)Address = Data;
-
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    
-    /* Disable the PG Bit */
-    FLASH->CR &= ~FLASH_CR_PG;
-  } 
-  
-  /* Return the Program Status */
-  return status;
-}
-
-/**
-  * @}
-  */
-  
-/** @defgroup FLASH_Group3 Option Bytes Programming functions
- *  @brief   Option Bytes Programming functions 
- *
-@verbatim   
- ===============================================================================
-                ##### Option Bytes Programming functions #####
- ===============================================================================
-
-    [..] The FLASH_Option Bytes Programming_functions, includes the following functions:
-       (+) void FLASH_OB_Unlock(void);
-       (+) void FLASH_OB_Lock(void);
-       (+) void FLASH_OB_Launch(void);
-       (+) FLASH_Status FLASH_OB_Erase(void);
-       (+) FLASH_Status FLASH_OB_WRPConfig(uint32_t OB_WRP, FunctionalState NewState);
-       (+) FLASH_Status FLASH_OB_RDPConfig(uint8_t OB_RDP);
-       (+) FLASH_Status FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY);
-       (+) FLASH_Status FLASH_OB_BOOTConfig(uint8_t OB_BOOT1);
-       (+) FLASH_Status FLASH_OB_VDDAConfig(uint8_t OB_VDDA_ANALOG);
-       (+) FLASH_Status FLASH_OB_WriteUser(uint8_t OB_USER);
-       (+) FLASH_OB_ProgramData(uint32_t Address, uint8_t Data);
-       (+) uint8_t FLASH_OB_GetUser(void);
-       (+) uint32_t FLASH_OB_GetWRP(void);
-       (+) FlagStatus FLASH_OB_GetRDP(void);
-
-    [..] Any operation of erase or program should follow these steps:
-
-   (#) Call the FLASH_OB_Unlock() function to enable the Option Bytes registers access
-
-   (#) Call one or several functions to program the desired option bytes 
-      (++) FLASH_Status FLASH_OB_RDPConfig(uint8_t OB_RDP) => to set the desired read Protection Level
-      (++) FLASH_Status FLASH_OB_WRPConfig(uint32_t OB_WRP, FunctionalState NewState) 
-           => to Enable/Disable the desired sector write protection
-      (++) FLASH_Status FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY) 
-           => to configure the user option Bytes: IWDG, STOP and the Standby.
-      (++) FLASH_Status FLASH_OB_BOOTConfig(uint8_t OB_BOOT1)
-           => to set or reset BOOT1 
-      (++) FLASH_Status FLASH_OB_VDDAConfig(uint8_t OB_VDDA_ANALOG) 
-           => to enable or disable the VDDA Analog Monitoring 			 
-      (++) You can write all User Options bytes at once using a single function
-           by calling FLASH_Status FLASH_OB_WriteUser(uint8_t OB_USER)
-      (++) FLASH_OB_ProgramData(uint32_t Address, uint8_t Data) to program the 
-           two half word in the option bytes
-
-   (#) Once all needed option bytes to be programmed are correctly written, call the
-      FLASH_OB_Launch(void) function to launch the Option Bytes programming process.
-
-   (#) Call the FLASH_OB_Lock() to disable the Option Bytes registers access (recommended
-      to protect the option Bytes against possible unwanted operations)
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Unlocks the option bytes block access.
-  * @param  None
-  * @retval None
-  */
-void FLASH_OB_Unlock(void)
-{
-  if((FLASH->CR & FLASH_CR_OPTWRE) == RESET)
-  { 
-    /* Unlocking the option bytes block access */
-    FLASH->OPTKEYR = FLASH_OPTKEY1;
-    FLASH->OPTKEYR = FLASH_OPTKEY2;
-  }
-}
-
-/**
-  * @brief  Locks the option bytes block access.
-  * @param  None
-  * @retval None
-  */
-void FLASH_OB_Lock(void)
-{
-  /* Set the OPTWREN Bit to lock the option bytes block access */
-  FLASH->CR &= ~FLASH_CR_OPTWRE;
-}
-
-/**
-  * @brief  Launch the option byte loading.
-  * @param  None
-  * @retval None
-  */
-void FLASH_OB_Launch(void)
-{
-  /* Set the OBL_Launch bit to launch the option byte loading */
-  FLASH->CR |= FLASH_CR_OBL_LAUNCH;
-}
-
-/**
-  * @brief  Erases the FLASH option bytes.
-  * @note   To correctly run this function, the FLASH_OB_Unlock() function must be called before.
-  * @note   Call the FLASH_OB_Lock() to disable the flash control register access and the option
-  *         bytes (recommended to protect the FLASH memory against possible unwanted operation)
-  * @note   This functions erases all option bytes except the Read protection (RDP).
-  * @param  None
-  * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG,
-  *         FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_OB_Erase(void)
-{
-  uint16_t rdptmp = OB_RDP_Level_0;
-
-  FLASH_Status status = FLASH_COMPLETE;
-
-  /* Get the actual read protection Option Byte value */ 
-  if(FLASH_OB_GetRDP() != RESET)
-  {
-    rdptmp = 0x00;  
-  }
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-  if(status == FLASH_COMPLETE)
-  {   
-    /* If the previous operation is completed, proceed to erase the option bytes */
-    FLASH->CR |= FLASH_CR_OPTER;
-    FLASH->CR |= FLASH_CR_STRT;
-
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    
-    if(status == FLASH_COMPLETE)
-    {
-      /* If the erase operation is completed, disable the OPTER Bit */
-      FLASH->CR &= ~FLASH_CR_OPTER;
-       
-      /* Enable the Option Bytes Programming operation */
-      FLASH->CR |= FLASH_CR_OPTPG;
-
-      /* Restore the last read protection Option Byte value */
-      OB->RDP = (uint16_t)rdptmp; 
-
-      /* Wait for last operation to be completed */
-      status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
- 
-      if(status != FLASH_TIMEOUT)
-      {
-        /* if the program operation is completed, disable the OPTPG Bit */
-        FLASH->CR &= ~FLASH_CR_OPTPG;
-      }
-    }
-    else
-    {
-      if (status != FLASH_TIMEOUT)
-      {
-        /* Disable the OPTPG Bit */
-        FLASH->CR &= ~FLASH_CR_OPTPG;
-      }
-    }  
-  }
-  /* Return the erase status */
-  return status;
-}
-
-/**
-  * @brief  Write protects the desired pages
-  * @note   To correctly run this function, the FLASH_OB_Unlock() function must be called before.
-  * @note   Call the FLASH_OB_Lock() to disable the flash control register access and the option
-  *         bytes (recommended to protect the FLASH memory against possible unwanted operation)
-  * @param  OB_WRP: specifies the address of the pages to be write protected.
-  *          This parameter can be:
-  *             @arg OB_WRP_Pages0to3..OB_WRP_Pages60to63
-  *             @arg OB_WRP_AllPages
-  * @retval FLASH Status: The returned value can be: 
-  *         FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_OB_EnableWRP(uint32_t OB_WRP)
-{
- uint16_t WRP0_Data = 0xFFFF, WRP1_Data = 0xFFFF, WRP2_Data = 0xFFFF, WRP3_Data = 0xFFFF;
-
-  FLASH_Status status = FLASH_COMPLETE;
-
-  /* Check the parameters */
-  assert_param(IS_OB_WRP(OB_WRP));
-
-  OB_WRP = (uint32_t)(~OB_WRP);
-  WRP0_Data = (uint16_t)(OB_WRP & OB_WRP0_WRP0);
-  WRP1_Data = (uint16_t)((OB_WRP >> 8) & OB_WRP0_WRP0);
-  WRP2_Data = (uint16_t)((OB_WRP >> 16) & OB_WRP0_WRP0) ;
-  WRP3_Data = (uint16_t)((OB_WRP >> 24) & OB_WRP0_WRP0) ;
-    
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-  if(status == FLASH_COMPLETE)
-  {
-    FLASH->CR |= FLASH_CR_OPTPG;
-
-    if(WRP0_Data != 0xFF)
-    {
-      OB->WRP0 = WRP0_Data;
-      
-      /* Wait for last operation to be completed */
-      status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    }
-    if((status == FLASH_COMPLETE) && (WRP1_Data != 0xFF))
-    {
-      OB->WRP1 = WRP1_Data;
-      
-      /* Wait for last operation to be completed */
-      status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    }
-    if((status == FLASH_COMPLETE) && (WRP2_Data != 0xFF))
-    {
-      OB->WRP2 = WRP2_Data;
-      
-      /* Wait for last operation to be completed */
-      status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    }    
-    if((status == FLASH_COMPLETE) && (WRP3_Data != 0xFF))
-    {
-      OB->WRP3 = WRP3_Data;
-      
-      /* Wait for last operation to be completed */
-      status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    }  
-    if(status != FLASH_TIMEOUT)
-    {
-      /* if the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  } 
-  /* Return the write protection operation Status */
-  return status;
-}
-
-/**
-  * @brief  Enables or disables the read out protection.
-  * @note   To correctly run this function, the FLASH_OB_Unlock() function must be called before.
-  * @note   Call the FLASH_OB_Lock() to disable the flash control register access and the option
-  *         bytes (recommended to protect the FLASH memory against possible unwanted operation)
-  * @param  FLASH_ReadProtection_Level: specifies the read protection level. 
-  *          This parameter can be:
-  *             @arg OB_RDP_Level_0: No protection
-  *             @arg OB_RDP_Level_1: Read protection of the memory
-  *             @arg OB_RDP_Level_2: Chip protection
-  * @note   When enabling OB_RDP level 2 it's no more possible to go back to level 1 or 0
-  * @retval FLASH Status: The returned value can be: 
-  *         FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_OB_RDPConfig(uint8_t OB_RDP)
-{
-  FLASH_Status status = FLASH_COMPLETE;
-  
-  /* Check the parameters */
-  assert_param(IS_OB_RDP(OB_RDP));
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {
-    FLASH->CR |= FLASH_CR_OPTER;
-    FLASH->CR |= FLASH_CR_STRT;
-    
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    
-    if(status == FLASH_COMPLETE)
-    {
-      /* If the erase operation is completed, disable the OPTER Bit */
-      FLASH->CR &= ~FLASH_CR_OPTER;
-      
-      /* Enable the Option Bytes Programming operation */
-      FLASH->CR |= FLASH_CR_OPTPG;
-       
-      OB->RDP = OB_RDP;
-
-      /* Wait for last operation to be completed */
-      status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT); 
-    
-      if(status != FLASH_TIMEOUT)
-      {
-        /* if the program operation is completed, disable the OPTPG Bit */
-        FLASH->CR &= ~FLASH_CR_OPTPG;
-      }
-    }
-    else 
-    {
-      if(status != FLASH_TIMEOUT)
-      {
-        /* Disable the OPTER Bit */
-        FLASH->CR &= ~FLASH_CR_OPTER;
-      }
-    }
-  }
-  /* Return the protection operation Status */
-  return status;
-}
-
-/**
-  * @brief  Programs the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY.
-  * @note   To correctly run this function, the FLASH_OB_Unlock() function must be called before.
-  * @note   Call the FLASH_OB_Lock() to disable the flash control register access and the option
-  *         bytes (recommended to protect the FLASH memory against possible unwanted operation)
-  * @param  OB_IWDG: Selects the WDG mode
-  *          This parameter can be one of the following values:
-  *             @arg OB_IWDG_SW: Software WDG selected
-  *             @arg OB_IWDG_HW: Hardware WDG selected
-  * @param  OB_STOP: Reset event when entering STOP mode.
-  *          This parameter can be one of the following values:
-  *             @arg OB_STOP_NoRST: No reset generated when entering in STOP
-  *             @arg OB_STOP_RST: Reset generated when entering in STOP
-  * @param  OB_STDBY: Reset event when entering Standby mode.
-  *          This parameter can be one of the following values:
-  *             @arg OB_STDBY_NoRST: No reset generated when entering in STANDBY
-  *             @arg OB_STDBY_RST: Reset generated when entering in STANDBY
-  * @retval FLASH Status: The returned value can be: 
-  *         FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY)
-{
-  FLASH_Status status = FLASH_COMPLETE; 
-
-  /* Check the parameters */
-  assert_param(IS_OB_IWDG_SOURCE(OB_IWDG));
-  assert_param(IS_OB_STOP_SOURCE(OB_STOP));
-  assert_param(IS_OB_STDBY_SOURCE(OB_STDBY));
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {
-    /* Enable the Option Bytes Programming operation */
-    FLASH->CR |= FLASH_CR_OPTPG; 
-
-    OB->USER = (uint16_t)((uint16_t)(OB_IWDG | OB_STOP) | (uint16_t)(OB_STDBY | 0xF8));
-  
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-    if(status != FLASH_TIMEOUT)
-    {
-      /* If the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  }    
-  /* Return the Option Byte program Status */
-  return status;
-}
-
-/**
-  * @brief  Sets or resets the BOOT1 option bit.
-  * @param  OB_BOOT1: Set or Reset the BOOT1 option bit.
-  *          This parameter can be one of the following values:
-  *             @arg OB_BOOT1_RESET: BOOT1 option bit reset
-  *             @arg OB_BOOT1_SET: BOOT1 option bit set
-  * @retval None
-  */
-FLASH_Status FLASH_OB_BOOTConfig(uint8_t OB_BOOT1)
-{
-  FLASH_Status status = FLASH_COMPLETE; 
-
-  /* Check the parameters */
-  assert_param(IS_OB_BOOT1(OB_BOOT1));
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {  
-    /* Enable the Option Bytes Programming operation */
-    FLASH->CR |= FLASH_CR_OPTPG;
-
-    OB->USER = OB_BOOT1 | 0xEF;
-  
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-    if(status != FLASH_TIMEOUT)
-    {
-      /* If the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  }
-  /* Return the Option Byte program Status */
-  return status;
-}
-
-/**
-  * @brief  Sets or resets the BOOT0 option bit.
-  * @note   This function is applicable only for the STM32F042 devices.
-  * @param  OB_BOOT0: Set or Reset the BOOT0 option bit.
-  *          This parameter can be one of the following values:
-  *             @arg OB_BOOT0_RESET: BOOT0 option bit reset
-  *             @arg OB_BOOT0_SET: BOOT0 option bit set
-  * @retval None
-  */
-FLASH_Status FLASH_OB_BOOT0Config(uint8_t OB_BOOT0)
-{
-  FLASH_Status status = FLASH_COMPLETE; 
-
-  /* Check the parameters */
-  assert_param(IS_OB_BOOT0(OB_BOOT0));
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {  
-    /* Enable the Option Bytes Programming operation */
-    FLASH->CR |= FLASH_CR_OPTPG;
-
-    OB->USER = OB_BOOT0 | 0xF7;
-  
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-    if(status != FLASH_TIMEOUT)
-    {
-      /* If the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  }
-  /* Return the Option Byte program Status */
-  return status;
-}
-
-/**
-  * @brief  Sets or resets the BOOT0SW option bit.
-  * @note   This function is applicable only for the STM32F042 devices.   
-  * @param  OB_BOOT0SW: Set or Reset the BOOT0_SW option bit.
-  *          This parameter can be one of the following values:
-  *             @arg OB_BOOT0_SW: BOOT0_SW option bit reset
-  *             @arg OB_BOOT0_HW: BOOT0_SW option bit set
-  * @retval None
-  */
-FLASH_Status FLASH_OB_BOOT0SWConfig(uint8_t OB_BOOT0SW)
-{
-  FLASH_Status status = FLASH_COMPLETE; 
-
-  /* Check the parameters */
-  assert_param(IS_OB_BOOT0SW(OB_BOOT0SW));
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {  
-    /* Enable the Option Bytes Programming operation */
-    FLASH->CR |= FLASH_CR_OPTPG;
-
-    OB->USER = OB_BOOT0SW | 0x7F;
-  
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-    if(status != FLASH_TIMEOUT)
-    {
-      /* If the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  }
-  /* Return the Option Byte program Status */
-  return status;
-}
-
-/**
-  * @brief  Sets or resets the analogue monitoring on VDDA Power source.
-  * @param  OB_VDDA_ANALOG: Selects the analog monitoring on VDDA Power source.
-  *          This parameter can be one of the following values:
-  *             @arg OB_VDDA_ANALOG_ON: Analog monitoring on VDDA Power source ON
-  *             @arg OB_VDDA_ANALOG_OFF: Analog monitoring on VDDA Power source OFF
-  * @retval None
-  */
-FLASH_Status FLASH_OB_VDDAConfig(uint8_t OB_VDDA_ANALOG)
-{
-  FLASH_Status status = FLASH_COMPLETE; 
-
-  /* Check the parameters */
-  assert_param(IS_OB_VDDA_ANALOG(OB_VDDA_ANALOG));
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {  
-    /* Enable the Option Bytes Programming operation */
-    FLASH->CR |= FLASH_CR_OPTPG; 
-
-    OB->USER = OB_VDDA_ANALOG | 0xDF;
-  
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-    if(status != FLASH_TIMEOUT)
-    {
-      /* if the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  }
-  /* Return the Option Byte program Status */
-  return status;
-}
-
-/**
-  * @brief  Sets or resets the SRAM parity.
-  * @param  OB_SRAM_Parity: Set or Reset the SRAM parity enable bit.
-  *          This parameter can be one of the following values:
-  *             @arg OB_SRAM_PARITY_SET: Set SRAM parity.
-  *             @arg OB_SRAM_PARITY_RESET: Reset SRAM parity.
-  * @retval None
-  */
-FLASH_Status FLASH_OB_SRAMParityConfig(uint8_t OB_SRAM_Parity)
-{
-  FLASH_Status status = FLASH_COMPLETE; 
-
-  /* Check the parameters */
-  assert_param(IS_OB_SRAM_PARITY(OB_SRAM_Parity));
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {  
-    /* Enable the Option Bytes Programming operation */
-    FLASH->CR |= FLASH_CR_OPTPG; 
-
-    OB->USER = OB_SRAM_Parity | 0xBF;
-  
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-    if(status != FLASH_TIMEOUT)
-    {
-      /* if the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  }
-  /* Return the Option Byte program Status */
-  return status;
-}
-
-/**
-  * @brief  Programs the FLASH User Option Byte: IWDG_SW, RST_STOP, RST_STDBY,
-  *         BOOT1 and VDDA ANALOG monitoring.
-  * @note   To correctly run this function, the FLASH_OB_Unlock() function must be called before.
-  * @note   Call the FLASH_OB_Lock() to disable the flash control register access and the option
-  *         bytes (recommended to protect the FLASH memory against possible unwanted operation)
-  * @param  OB_USER: Selects all user option bytes
-  *          This parameter is a combination of the following values:
-  *             @arg OB_IWDG_SW / OB_IWDG_HW: Software / Hardware WDG selected
-  *             @arg OB_STOP_NoRST / OB_STOP_RST: No reset / Reset generated when entering in STOP
-  *             @arg OB_STDBY_NoRST / OB_STDBY_RST: No reset / Reset generated when entering in STANDBY
-  *             @arg OB_BOOT1_RESET / OB_BOOT1_SET: BOOT1 Reset / Set
-  *             @arg OB_VDDA_ANALOG_ON / OB_VDDA_ANALOG_OFF: Analog monitoring on VDDA Power source ON / OFF 
-  *             @arg OB_SRAM_PARITY_SET / OB_SRAM_PARITY_RESET: SRAM Parity SET / RESET
-  *             @arg OB_BOOT0_RESET / OB_BOOT0_SET: BOOT0 Reset / Set
-  *             @arg OB_BOOT0_SW / OB_BOOT0_SW: BOOT0 pin disabled / BOOT0 pin bonded with GPIO      
-  * @retval FLASH Status: The returned value can be: 
-  *         FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_OB_WriteUser(uint8_t OB_USER)
-{
-  FLASH_Status status = FLASH_COMPLETE; 
-
-  /* Wait for last operation to be completed */
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-  
-  if(status == FLASH_COMPLETE)
-  {
-    /* Enable the Option Bytes Programming operation */
-    FLASH->CR |= FLASH_CR_OPTPG; 
-
-    OB->USER = OB_USER;
-  
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-    if(status != FLASH_TIMEOUT)
-    {
-      /* If the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  }    
-  /* Return the Option Byte program Status */
-  return status;
-
-}
-
-/**
-  * @brief  Programs a half word at a specified Option Byte Data address.
-  * @note   To correctly run this function, the FLASH_OB_Unlock() function must be called before.
-  * @note   Call the FLASH_OB_Lock() to disable the flash control register access and the option
-  *         bytes (recommended to protect the FLASH memory against possible unwanted operation)
-  * @param  Address: specifies the address to be programmed.
-  *          This parameter can be 0x1FFFF804 or 0x1FFFF806. 
-  * @param  Data: specifies the data to be programmed.
-  * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG,
-  *         FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_OB_ProgramData(uint32_t Address, uint8_t Data)
-{
-  FLASH_Status status = FLASH_COMPLETE;
-  /* Check the parameters */
-  assert_param(IS_OB_DATA_ADDRESS(Address));
-  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-
-  if(status == FLASH_COMPLETE)
-  {
-    /* Enables the Option Bytes Programming operation */
-    FLASH->CR |= FLASH_CR_OPTPG; 
-    *(__IO uint16_t*)Address = Data;
-    
-    /* Wait for last operation to be completed */
-    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
-    
-    if(status != FLASH_TIMEOUT)
-    {
-      /* If the program operation is completed, disable the OPTPG Bit */
-      FLASH->CR &= ~FLASH_CR_OPTPG;
-    }
-  }
-  /* Return the Option Byte Data Program Status */
-  return status;
-}
-
-/**
-  * @brief  Returns the FLASH User Option Bytes values.
-  * @param  None
-  * @retval The FLASH User Option Bytes .
-  */
-uint8_t FLASH_OB_GetUser(void)
-{
-  /* Return the User Option Byte */
-  return (uint8_t)(FLASH->OBR >> 8);
-}
-
-/**
-  * @brief  Returns the FLASH Write Protection Option Bytes value.
-  * @param  None
-  * @retval The FLASH Write Protection Option Bytes value
-  */
-uint32_t FLASH_OB_GetWRP(void)
-{
-  /* Return the FLASH write protection Register value */
-  return (uint32_t)(FLASH->WRPR);
-}
-
-/**
-  * @brief  Checks whether the FLASH Read out Protection Status is set or not.
-  * @param  None
-  * @retval FLASH ReadOut Protection Status(SET or RESET)
-  */
-FlagStatus FLASH_OB_GetRDP(void)
-{
-  FlagStatus readstatus = RESET;
-  
-  if ((uint8_t)(FLASH->OBR & (FLASH_OBR_RDPRT1 | FLASH_OBR_RDPRT2)) != RESET)
-  {
-    readstatus = SET;
-  }
-  else
-  {
-    readstatus = RESET;
-  }
-  return readstatus;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup FLASH_Group4 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions
- *
-@verbatim   
- ===============================================================================
-             ##### Interrupts and flags management functions #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified FLASH interrupts.
-  * @param  FLASH_IT: specifies the FLASH interrupt sources to be enabled or 
-  *         disabled.
-  *          This parameter can be any combination of the following values:
-  *             @arg FLASH_IT_EOP: FLASH end of programming Interrupt
-  *             @arg FLASH_IT_ERR: FLASH Error Interrupt
-  * @retval None 
-  */
-void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FLASH_IT(FLASH_IT)); 
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if(NewState != DISABLE)
-  {
-    /* Enable the interrupt sources */
-    FLASH->CR |= FLASH_IT;
-  }
-  else
-  {
-    /* Disable the interrupt sources */
-    FLASH->CR &= ~(uint32_t)FLASH_IT;
-  }
-}
-
-/**
-  * @brief  Checks whether the specified FLASH flag is set or not.
-  * @param  FLASH_FLAG: specifies the FLASH flag to check.
-  *          This parameter can be one of the following values:
-  *             @arg FLASH_FLAG_BSY: FLASH write/erase operations in progress flag 
-  *             @arg FLASH_FLAG_PGERR: FLASH Programming error flag flag
-  *             @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
-  *             @arg FLASH_FLAG_EOP: FLASH End of Programming flag
-  * @retval The new state of FLASH_FLAG (SET or RESET).
-  */
-FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-
-  /* Check the parameters */
-  assert_param(IS_FLASH_GET_FLAG(FLASH_FLAG));
-
-  if((FLASH->SR & FLASH_FLAG) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  /* Return the new state of FLASH_FLAG (SET or RESET) */
-  return bitstatus; 
-}
-
-/**
-  * @brief  Clears the FLASH's pending flags.
-  * @param  FLASH_FLAG: specifies the FLASH flags to clear.
-  *          This parameter can be any combination of the following values:
-  *             @arg FLASH_FLAG_PGERR: FLASH Programming error flag flag
-  *             @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
-  *             @arg FLASH_FLAG_EOP: FLASH End of Programming flag
-  * @retval None
-  */
-void FLASH_ClearFlag(uint32_t FLASH_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_FLASH_CLEAR_FLAG(FLASH_FLAG));
-  
-  /* Clear the flags */
-  FLASH->SR = FLASH_FLAG;
-}
-
-/**
-  * @brief  Returns the FLASH Status.
-  * @param  None
-  * @retval FLASH Status: The returned value can be: 
-  *         FLASH_BUSY, FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP or FLASH_COMPLETE.
-  */
-FLASH_Status FLASH_GetStatus(void)
-{
-  FLASH_Status FLASHstatus = FLASH_COMPLETE;
-  
-  if((FLASH->SR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY) 
-  {
-    FLASHstatus = FLASH_BUSY;
-  }
-  else 
-  {  
-    if((FLASH->SR & (uint32_t)FLASH_FLAG_WRPERR)!= (uint32_t)0x00)
-    { 
-      FLASHstatus = FLASH_ERROR_WRP;
-    }
-    else 
-    {
-      if((FLASH->SR & (uint32_t)(FLASH_SR_PGERR)) != (uint32_t)0x00)
-      {
-        FLASHstatus = FLASH_ERROR_PROGRAM; 
-      }
-      else
-      {
-        FLASHstatus = FLASH_COMPLETE;
-      }
-    }
-  }
-  /* Return the FLASH Status */
-  return FLASHstatus;
-}
-
-
-/**
-  * @brief  Waits for a FLASH operation to complete or a TIMEOUT to occur.
-  * @param  Timeout: FLASH programming Timeout
-  * @retval FLASH Status: The returned value can be: FLASH_BUSY, 
-  *         FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
-  */
-FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout)
-{ 
-  FLASH_Status status = FLASH_COMPLETE;
-   
-  /* Check for the FLASH Status */
-  status = FLASH_GetStatus();
-  
-  /* Wait for a FLASH operation to complete or a TIMEOUT to occur */
-  while((status == FLASH_BUSY) && (Timeout != 0x00))
-  {
-    status = FLASH_GetStatus();
-    Timeout--;
-  }
-  
-  if(Timeout == 0x00 )
-  {
-    status = FLASH_TIMEOUT;
-  }
-  /* Return the operation status */
-  return status;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-   
-  /**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_gpio.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_gpio.c
deleted file mode 100644
index 880508c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_gpio.c	
+++ /dev/null
@@ -1,540 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_gpio.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the GPIO peripheral:
-  *           + Initialization and Configuration functions
-  *           + GPIO Read and Write functions
-  *           + GPIO Alternate functions configuration functions
-  *
-  *  @verbatim
-  *
-  *
-    ===========================================================================
-                         ##### How to use this driver #####
-    ===========================================================================
-      [..]
-      (#) Enable the GPIO AHB clock using RCC_AHBPeriphClockCmd()
-      (#) Configure the GPIO pin(s) using GPIO_Init()
-          Four possible configuration are available for each pin:
-         (++) Input: Floating, Pull-up, Pull-down.
-         (++) Output: Push-Pull (Pull-up, Pull-down or no Pull)
-                      Open Drain (Pull-up, Pull-down or no Pull).
-              In output mode, the speed is configurable: Low, Medium, Fast or High.
-         (++) Alternate Function: Push-Pull (Pull-up, Pull-down or no Pull)
-                                  Open Drain (Pull-up, Pull-down or no Pull).
-         (++) Analog: required mode when a pin is to be used as ADC channel,
-              DAC output or comparator input.
-      (#) Peripherals alternate function:
-         (++) For ADC, DAC and comparators, configure the desired pin in analog 
-              mode using GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AN
-         (++) For other peripherals (TIM, USART...):
-              (+++) Connect the pin to the desired peripherals' Alternate 
-                    Function (AF) using GPIO_PinAFConfig() function. For PortC, 
-                    PortD and PortF, no configuration is needed.
-              (+++) Configure the desired pin in alternate function mode using
-                    GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF
-              (+++) Select the type, pull-up/pull-down and output speed via 
-                    GPIO_PuPd, GPIO_OType and GPIO_Speed members
-              (+++) Call GPIO_Init() function
-      (#) To get the level of a pin configured in input mode use GPIO_ReadInputDataBit()
-      (#) To set/reset the level of a pin configured in output mode use
-          GPIO_SetBits()/GPIO_ResetBits()
-      (#) During and just after reset, the alternate functions are not active and 
-          the GPIO pins are configured in input floating mode (except JTAG pins).
-      (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as 
-          general-purpose (PC14 and PC15, respectively) when the LSE oscillator 
-          is off. The LSE has priority over the GPIO function.
-      (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as general-purpose 
-          PD0 and PD1, respectively, when the HSE oscillator is off. The HSE has 
-          priority over the GPIO function.
-    @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_gpio.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup GPIO 
-  * @brief GPIO driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup GPIO_Private_Functions 
-  * @{
-  */
-
-/** @defgroup GPIO_Group1 Initialization and Configuration
- *  @brief   Initialization and Configuration
- *
-@verbatim
- ===============================================================================
-                    ##### Initialization and Configuration #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the GPIOx peripheral registers to their default reset 
-  *         values.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.    
-  * @retval None
-  */
-void GPIO_DeInit(GPIO_TypeDef* GPIOx)
-{
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-
-  if(GPIOx == GPIOA)
-  {
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOA, ENABLE);
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOA, DISABLE);
-  }
-  else if(GPIOx == GPIOB)
-  {
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOB, ENABLE);
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOB, DISABLE);
-  }
-  else if(GPIOx == GPIOC)
-  {
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOC, ENABLE);
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOC, DISABLE);
-  }
-  else if(GPIOx == GPIOD)
-  {
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOD, ENABLE);
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOD, DISABLE);
-  }
-  else if(GPIOx == GPIOE)
-  {
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOE, ENABLE);
-    RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOE, DISABLE);
-  }
-  else
-  {
-    if(GPIOx == GPIOF)
-    {
-      RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOF, ENABLE);
-      RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOF, DISABLE);
-    }
-  }
-}
-
-/**
-  * @brief  Initializes the GPIOx peripheral according to the specified 
-  *         parameters in the GPIO_InitStruct.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.   
-  * @param  GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that contains
-  *         the configuration information for the specified GPIO peripheral.
-  * @retval None
-  */
-void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
-{
-  uint32_t pinpos = 0x00, pos = 0x00 , currentpin = 0x00;
-
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-  assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));
-  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
-  assert_param(IS_GPIO_PUPD(GPIO_InitStruct->GPIO_PuPd));
-
-  /*-------------------------- Configure the port pins -----------------------*/
-  /*-- GPIO Mode Configuration --*/
-  for (pinpos = 0x00; pinpos < 0x10; pinpos++)
-  {
-    pos = ((uint32_t)0x01) << pinpos;
-
-    /* Get the port pins position */
-    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;
-
-    if (currentpin == pos)
-    {
-      if ((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) || (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF))
-      {
-        /* Check Speed mode parameters */
-        assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));
-
-        /* Speed mode configuration */
-        GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (pinpos * 2));
-        GPIOx->OSPEEDR |= ((uint32_t)(GPIO_InitStruct->GPIO_Speed) << (pinpos * 2));
-
-        /* Check Output mode parameters */
-        assert_param(IS_GPIO_OTYPE(GPIO_InitStruct->GPIO_OType));
-
-        /* Output mode configuration */
-        GPIOx->OTYPER &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pinpos));
-        GPIOx->OTYPER |= (uint16_t)(((uint16_t)GPIO_InitStruct->GPIO_OType) << ((uint16_t)pinpos));
-      }
-
-      GPIOx->MODER  &= ~(GPIO_MODER_MODER0 << (pinpos * 2));
-
-      GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (pinpos * 2));
-
-      /* Pull-up Pull down resistor configuration */
-      GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pinpos * 2));
-      GPIOx->PUPDR |= (((uint32_t)GPIO_InitStruct->GPIO_PuPd) << (pinpos * 2));
-    }
-  }
-}
-
-/**
-  * @brief  Fills each GPIO_InitStruct member with its default value.
-  * @param  GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure which will 
-  *         be initialized.
-  * @retval None
-  */
-void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
-{
-  /* Reset GPIO init structure parameters values */
-  GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
-  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN;
-  GPIO_InitStruct->GPIO_Speed = GPIO_Speed_Level_2;
-  GPIO_InitStruct->GPIO_OType = GPIO_OType_PP;
-  GPIO_InitStruct->GPIO_PuPd = GPIO_PuPd_NOPULL;
-}
-
-/**
-  * @brief  Locks GPIO Pins configuration registers.
-  * @note   The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR,
-  *         GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH.
-  * @note   The configuration of the locked GPIO pins can no longer be modified
-  *         until the next device reset.
-  * @param  GPIOx: where x can be (A or B) to select the GPIO peripheral.
-  * @param  GPIO_Pin: specifies the port bit to be written.
-  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
-  * @retval None
-  */
-void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
-{
-  __IO uint32_t tmp = 0x00010000;
-
-  /* Check the parameters */
-  assert_param(IS_GPIO_LIST_PERIPH(GPIOx));
-  assert_param(IS_GPIO_PIN(GPIO_Pin));
-
-  tmp |= GPIO_Pin;
-  /* Set LCKK bit */
-  GPIOx->LCKR = tmp;
-  /* Reset LCKK bit */
-  GPIOx->LCKR =  GPIO_Pin;
-  /* Set LCKK bit */
-  GPIOx->LCKR = tmp;
-  /* Read LCKK bit */
-  tmp = GPIOx->LCKR;
-  /* Read LCKK bit */
-  tmp = GPIOx->LCKR;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup GPIO_Group2 GPIO Read and Write
- *  @brief   GPIO Read and Write
- *
-@verbatim   
- ===============================================================================
-                      ##### GPIO Read and Write #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Reads the specified input port pin.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.   
-  * @param  GPIO_Pin: specifies the port bit to read.
-  * @note   This parameter can be GPIO_Pin_x where x can be:
-  *         For STM32F051 and STM32F030: (0..15) for GPIOA, GPIOB, GPIOC, (2) for GPIOD and (0..1, 4..7) for GIIOF.
-  *         For STM32F072: (0..15) for GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, (0..10) for GPIOF.
-  *         For STM32F031: (0..15) for GPIOA, GPIOB, (13..15) for GPIOC and (0..1, 6..7) for GPIOF.  
-  * @retval The input port pin value.
-  */
-uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
-{
-  uint8_t bitstatus = 0x00;
-
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
-
-  if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET)
-  {
-    bitstatus = (uint8_t)Bit_SET;
-  }
-  else
-  {
-    bitstatus = (uint8_t)Bit_RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Reads the specified input port pin.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.   
-  * @retval The input port pin value.
-  */
-uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
-{
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-
-  return ((uint16_t)GPIOx->IDR);
-}
-
-/**
-  * @brief  Reads the specified output data port bit.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.   
-  * @param  GPIO_Pin: Specifies the port bit to read.
-  * @note   This parameter can be GPIO_Pin_x where x can be:
-  *         For STM32F051 and STM32F030: (0..15) for GPIOA, GPIOB, GPIOC, (2) for GPIOD and (0..1, 4..7) for GIIOF.
-  *         For STM32F072: (0..15) for GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, (0..10) for GPIOF.
-  *         For STM32F031: (0..15) for GPIOA, GPIOB, (13..15) for GPIOC and (0..1, 6..7) for GPIOF. 
-  * @retval The output port pin value.
-  */
-uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
-{
-  uint8_t bitstatus = 0x00;
-
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
-
-  if ((GPIOx->ODR & GPIO_Pin) != (uint32_t)Bit_RESET)
-  {
-    bitstatus = (uint8_t)Bit_SET;
-  }
-  else
-  {
-    bitstatus = (uint8_t)Bit_RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Reads the specified GPIO output data port.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.    
-  * @retval GPIO output data port value.
-  */
-uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
-{
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-
-  return ((uint16_t)GPIOx->ODR);
-}
-
-/**
-  * @brief  Sets the selected data port bits.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.    
-  * @param  GPIO_Pin: specifies the port bits to be written.
-  * @note   This parameter can be GPIO_Pin_x where x can be:
-  *         For STM32F051 and STM32F030: (0..15) for GPIOA, GPIOB, GPIOC, (2) for GPIOD and (0..1, 4..7) for GIIOF.
-  *         For STM32F072: (0..15) for GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, (0..10) for GPIOF.
-  *         For STM32F031: (0..15) for GPIOA, GPIOB, (13..15) for GPIOC and (0..1, 6..7) for GPIOF. 
-  * @retval None
-  */
-void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
-{
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-  assert_param(IS_GPIO_PIN(GPIO_Pin));
-
-  GPIOx->BSRR = GPIO_Pin;
-}
-
-/**
-  * @brief  Clears the selected data port bits.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.
-  * @param  GPIO_Pin: specifies the port bits to be written.
-  * @note   This parameter can be GPIO_Pin_x where x can be:
-  *         For STM32F051 and STM32F030: (0..15) for GPIOA, GPIOB, GPIOC, (2) for GPIOD and (0..1, 4..7) for GIIOF.
-  *         For STM32F072: (0..15) for GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, (0..10) for GPIOF.
-  *         For STM32F031: (0..15) for GPIOA, GPIOB, (13..15) for GPIOC and (0..1, 6..7) for GPIOF. 
-  * @retval None
-  */
-void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
-{
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-  assert_param(IS_GPIO_PIN(GPIO_Pin));
-
-  GPIOx->BRR = GPIO_Pin;
-}
-
-/**
-  * @brief  Sets or clears the selected data port bit.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.  
-  * @param  GPIO_Pin: specifies the port bit to be written.
-  * @param  BitVal: specifies the value to be written to the selected bit.
-  *          This parameter can be one of the BitAction enumeration values:
-  *            @arg Bit_RESET: to clear the port pin
-  *            @arg Bit_SET: to set the port pin
-  * @note   This parameter can be GPIO_Pin_x where x can be:
-  *         For STM32F051 and STM32F030: (0..15) for GPIOA, GPIOB, GPIOC, (2) for GPIOD and (0..1, 4..7) for GIIOF.
-  *         For STM32F072: (0..15) for GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, (0..10) for GPIOF.
-  *         For STM32F031: (0..15) for GPIOA, GPIOB, (13..15) for GPIOC and (0..1, 6..7) for GPIOF.
-  * @retval None
-  */
-void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
-{
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
-  assert_param(IS_GPIO_BIT_ACTION(BitVal));
-
-  if (BitVal != Bit_RESET)
-  {
-    GPIOx->BSRR = GPIO_Pin;
-  }
-  else
-  {
-    GPIOx->BRR = GPIO_Pin ;
-  }
-}
-
-/**
-  * @brief  Writes data to the specified GPIO data port.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.  
-  * @param  PortVal: specifies the value to be written to the port output data register.
-  * @retval None
-  */
-void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
-{
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-
-  GPIOx->ODR = PortVal;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup GPIO_Group3 GPIO Alternate functions configuration functions
- *  @brief   GPIO Alternate functions configuration functions
- *
-@verbatim   
- ===============================================================================
-          ##### GPIO Alternate functions configuration functions #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Writes data to the specified GPIO data port.
-  * @param  GPIOx: where x can be (A, B, C, D, E or F) to select the GPIO peripheral.
-  * @note   GPIOC, GPIOD, GPIOE and GPIOF  are available only for STM32F072. 
-  * @param  GPIO_PinSource: specifies the pin for the Alternate function.
-  *          This parameter can be GPIO_PinSourcex where x can be (0..15) for GPIOA, GPIOB, GPIOD, GPIOE
-  *          and (0..12) for GPIOC and (0, 2..5, 9..10) for GPIOF.    
-  * @param  GPIO_AF: selects the pin to used as Alternate function.
-  *          This parameter can be one of the following value:
-  *            @arg GPIO_AF_0:  WKUP, EVENTOUT, TIM15, SPI1, TIM17, MCO, SWDAT, SWCLK,
-  *                             TIM14, BOOT, USART1, CEC, IR_OUT, SPI2, TIM3, USART4,
-  *                             CAN, USART2, CRS, TIM16, TIM1, TS 
-  *            @arg GPIO_AF_1: USART2, CEC, TIM3, USART1, USART2, EVENTOUT, I2C1,
-  *                            I2C2, TIM15, SPI2, USART3, TS, SPI1 
-  *            @arg GPIO_AF_2: TIM2, TIM1, EVENTOUT, TIM16, TIM17, USB
-  *            @arg GPIO_AF_3: TS, I2C1, TIM15, EVENTOUT 
-  *            @arg GPIO_AF_4: TIM14, USART4, USART3, CRS, CAN
-  *            @arg GPIO_AF_5: TIM16, TIM17, TIM15, SPI2, I2C2
-  *            @arg GPIO_AF_6: EVENTOUT
-  *            @arg GPIO_AF_7: COMP1 OUT, COMP2 OUT 
-  * @note   The pin should already been configured in Alternate Function mode(AF)
-  *         using GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF
-  * @note   Refer to the Alternate function mapping table in the device datasheet 
-  *         for the detailed mapping of the system and peripherals'alternate 
-  *         function I/O pins.
-  * @retval None
-  */
-void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
-{
-  uint32_t temp = 0x00;
-  uint32_t temp_2 = 0x00;
-
-  /* Check the parameters */
-  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
-  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
-  assert_param(IS_GPIO_AF(GPIO_AF));
-
-  temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4));
-  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4));
-  temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp;
-  GPIOx->AFR[GPIO_PinSource >> 0x03] = temp_2;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_i2c.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_i2c.c
deleted file mode 100644
index 05a7966..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_i2c.c	
+++ /dev/null
@@ -1,1585 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_i2c.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Inter-Integrated circuit (I2C):
-  *           + Initialization and Configuration
-  *           + Communications handling
-  *           + SMBUS management
-  *           + I2C registers management
-  *           + Data transfers management
-  *           + DMA transfers management
-  *           + Interrupts and flags management
-  *
-  *  @verbatim
- ============================================================================
-                     ##### How to use this driver #####
- ============================================================================
-   [..]
-   (#) Enable peripheral clock using RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2Cx, ENABLE)
-       function for I2C1 or I2C2.
-   (#) Enable SDA, SCL  and SMBA (when used) GPIO clocks using 
-       RCC_AHBPeriphClockCmd() function. 
-   (#) Peripherals alternate function: 
-       (++) Connect the pin to the desired peripherals' Alternate 
-            Function (AF) using GPIO_PinAFConfig() function.
-       (++) Configure the desired pin in alternate function by:
-            GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF
-       (++) Select the type, OpenDrain and speed via  
-            GPIO_PuPd, GPIO_OType and GPIO_Speed members
-       (++) Call GPIO_Init() function.
-   (#) Program the Mode, Timing , Own address, Ack and Acknowledged Address 
-       using the I2C_Init() function.
-   (#) Optionally you can enable/configure the following parameters without
-       re-initialization (i.e there is no need to call again I2C_Init() function):
-       (++) Enable the acknowledge feature using I2C_AcknowledgeConfig() function.
-       (++) Enable the dual addressing mode using I2C_DualAddressCmd() function.
-       (++) Enable the general call using the I2C_GeneralCallCmd() function.
-       (++) Enable the clock stretching using I2C_StretchClockCmd() function.
-       (++) Enable the PEC Calculation using I2C_CalculatePEC() function.
-       (++) For SMBus Mode:
-            (+++) Enable the SMBusAlert pin using I2C_SMBusAlertCmd() function.
-   (#) Enable the NVIC and the corresponding interrupt using the function
-       I2C_ITConfig() if you need to use interrupt mode.
-   (#) When using the DMA mode 
-      (++) Configure the DMA using DMA_Init() function.
-      (++) Active the needed channel Request using I2C_DMACmd() function.
-   (#) Enable the I2C using the I2C_Cmd() function.
-   (#) Enable the DMA using the DMA_Cmd() function when using DMA mode in the 
-       transfers. 
-   [..]
-   (@) When using I2C in Fast Mode Plus, SCL and SDA pin 20mA current drive capability
-       must be enabled by setting the driving capability control bit in SYSCFG.
-
-    @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_i2c.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup I2C 
-  * @brief I2C driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-
-#define CR1_CLEAR_MASK          ((uint32_t)0x00CFE0FF)  /*<! I2C CR1 clear register Mask */
-#define CR2_CLEAR_MASK          ((uint32_t)0x07FF7FFF)  /*<! I2C CR2 clear register Mask */
-#define TIMING_CLEAR_MASK       ((uint32_t)0xF0FFFFFF)  /*<! I2C TIMING clear register Mask */
-#define ERROR_IT_MASK           ((uint32_t)0x00003F00)  /*<! I2C Error interrupt register Mask */
-#define TC_IT_MASK              ((uint32_t)0x000000C0)  /*<! I2C TC interrupt register Mask */
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup I2C_Private_Functions
-  * @{
-  */
-
-
-/** @defgroup I2C_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions 
- *
-@verbatim   
- ===============================================================================
-           ##### Initialization and Configuration functions #####
- ===============================================================================
-    [..] This section provides a set of functions allowing to initialize the I2C Mode,
-         I2C Timing, I2C filters, I2C Addressing mode, I2C OwnAddress1.
-
-    [..] The I2C_Init() function follows the I2C configuration procedures (these procedures 
-         are available in reference manual).
-
-    [..] When the Software Reset is performed using I2C_SoftwareResetCmd() function, the internal
-         states machines are reset and communication control bits, as well as status bits come 
-         back to their reset value.
-
-    [..] Before enabling Stop mode using I2C_StopModeCmd() I2C Clock source must be set to
-         HSI and Digital filters must be disabled.
-
-    [..] Before enabling Own Address 2 via I2C_DualAddressCmd() function, OA2 and mask should be
-         configured using I2C_OwnAddress2Config() function.
-
-    [..] I2C_SlaveByteControlCmd() enable Slave byte control that allow user to get control of 
-         each byte in slave mode when NBYTES is set to 0x01.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the I2Cx peripheral registers to their default reset values.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @retval None
-  */
-void I2C_DeInit(I2C_TypeDef* I2Cx)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-
-  if (I2Cx == I2C1)
-  {
-    /* Enable I2C1 reset state */
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, ENABLE);
-    /* Release I2C1 from reset state */
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, DISABLE);
-  }
-  else
-  {
-    /* Enable I2C2 reset state */
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, ENABLE);
-    /* Release I2C2 from reset state */
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, DISABLE);
-  }
-}
-
-/**
-  * @brief  Initializes the I2Cx peripheral according to the specified
-  *         parameters in the I2C_InitStruct.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_InitStruct: pointer to a I2C_InitTypeDef structure that
-  *         contains the configuration information for the specified I2C peripheral.
-  * @retval None
-  */
-void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_ANALOG_FILTER(I2C_InitStruct->I2C_AnalogFilter));
-  assert_param(IS_I2C_DIGITAL_FILTER(I2C_InitStruct->I2C_DigitalFilter));
-  assert_param(IS_I2C_MODE(I2C_InitStruct->I2C_Mode));
-  assert_param(IS_I2C_OWN_ADDRESS1(I2C_InitStruct->I2C_OwnAddress1));
-  assert_param(IS_I2C_ACK(I2C_InitStruct->I2C_Ack));
-  assert_param(IS_I2C_ACKNOWLEDGE_ADDRESS(I2C_InitStruct->I2C_AcknowledgedAddress));
-
-  /* Disable I2Cx Peripheral */
-  I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_PE);
-
-  /*---------------------------- I2Cx FILTERS Configuration ------------------*/
-  /* Get the I2Cx CR1 value */
-  tmpreg = I2Cx->CR1;
-  /* Clear I2Cx CR1 register */
-  tmpreg &= CR1_CLEAR_MASK;
-  /* Configure I2Cx: analog and digital filter */
-  /* Set ANFOFF bit according to I2C_AnalogFilter value */
-  /* Set DFN bits according to I2C_DigitalFilter value */
-  tmpreg |= (uint32_t)I2C_InitStruct->I2C_AnalogFilter |(I2C_InitStruct->I2C_DigitalFilter << 8);
-
-  /* Write to I2Cx CR1 */
-  I2Cx->CR1 = tmpreg;
-
-  /*---------------------------- I2Cx TIMING Configuration -------------------*/
-  /* Configure I2Cx: Timing */
-  /* Set TIMINGR bits according to I2C_Timing */
-  /* Write to I2Cx TIMING */
-  I2Cx->TIMINGR = I2C_InitStruct->I2C_Timing & TIMING_CLEAR_MASK;
-
-  /* Enable I2Cx Peripheral */
-  I2Cx->CR1 |= I2C_CR1_PE;
-
-  /*---------------------------- I2Cx OAR1 Configuration ---------------------*/
-  /* Clear tmpreg local variable */
-  tmpreg = 0;
-  /* Clear OAR1 register */
-  I2Cx->OAR1 = (uint32_t)tmpreg;
-  /* Clear OAR2 register */
-  I2Cx->OAR2 = (uint32_t)tmpreg;
-  /* Configure I2Cx: Own Address1 and acknowledged address */
-  /* Set OA1MODE bit according to I2C_AcknowledgedAddress value */
-  /* Set OA1 bits according to I2C_OwnAddress1 value */
-  tmpreg = (uint32_t)((uint32_t)I2C_InitStruct->I2C_AcknowledgedAddress | \
-                      (uint32_t)I2C_InitStruct->I2C_OwnAddress1);
-  /* Write to I2Cx OAR1 */
-  I2Cx->OAR1 = tmpreg;
-  /* Enable Own Address1 acknowledgement */
-  I2Cx->OAR1 |= I2C_OAR1_OA1EN;
-
-  /*---------------------------- I2Cx MODE Configuration ---------------------*/
-  /* Configure I2Cx: mode */
-  /* Set SMBDEN and SMBHEN bits according to I2C_Mode value */
-  tmpreg = I2C_InitStruct->I2C_Mode;
-  /* Write to I2Cx CR1 */
-  I2Cx->CR1 |= tmpreg;
-
-  /*---------------------------- I2Cx ACK Configuration ----------------------*/
-  /* Get the I2Cx CR2 value */
-  tmpreg = I2Cx->CR2;
-  /* Clear I2Cx CR2 register */
-  tmpreg &= CR2_CLEAR_MASK;
-  /* Configure I2Cx: acknowledgement */
-  /* Set NACK bit according to I2C_Ack value */
-  tmpreg |= I2C_InitStruct->I2C_Ack;
-  /* Write to I2Cx CR2 */
-  I2Cx->CR2 = tmpreg;
-}
-
-/**
-  * @brief  Fills each I2C_InitStruct member with its default value.
-  * @param  I2C_InitStruct: pointer to an I2C_InitTypeDef structure which will be initialized.
-  * @retval None
-  */
-void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct)
-{
-  /*---------------- Reset I2C init structure parameters values --------------*/
-  /* Initialize the I2C_Timing member */
-  I2C_InitStruct->I2C_Timing = 0;
-  /* Initialize the I2C_AnalogFilter member */
-  I2C_InitStruct->I2C_AnalogFilter = I2C_AnalogFilter_Enable;
-  /* Initialize the I2C_DigitalFilter member */
-  I2C_InitStruct->I2C_DigitalFilter = 0;
-  /* Initialize the I2C_Mode member */
-  I2C_InitStruct->I2C_Mode = I2C_Mode_I2C;
-  /* Initialize the I2C_OwnAddress1 member */
-  I2C_InitStruct->I2C_OwnAddress1 = 0;
-  /* Initialize the I2C_Ack member */
-  I2C_InitStruct->I2C_Ack = I2C_Ack_Disable;
-  /* Initialize the I2C_AcknowledgedAddress member */
-  I2C_InitStruct->I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
-}
-
-/**
-  * @brief  Enables or disables the specified I2C peripheral.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx peripheral. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected I2C peripheral */
-    I2Cx->CR1 |= I2C_CR1_PE;
-  }
-  else
-  {
-    /* Disable the selected I2C peripheral */
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_PE);
-  }
-}
-
-/**
-  * @brief  Enables or disables the specified I2C software reset.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @retval None
-  */
-void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-
-  /* Disable peripheral */
-  I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_PE);
-
-  /* Perform a dummy read to delay the disable of peripheral for minimum
-     3 APB clock cycles to perform the software reset functionality */
-  *(__IO uint32_t *)(uint32_t)I2Cx; 
-
-  /* Enable peripheral */
-  I2Cx->CR1 |= I2C_CR1_PE;
-}
-
-/**
-  * @brief  Enables or disables the specified I2C interrupts.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_IT: specifies the I2C interrupts sources to be enabled or disabled. 
-  *          This parameter can be any combination of the following values:
-  *            @arg I2C_IT_ERRI: Error interrupt mask
-  *            @arg I2C_IT_TCI: Transfer Complete interrupt mask
-  *            @arg I2C_IT_STOPI: Stop Detection interrupt mask
-  *            @arg I2C_IT_NACKI: Not Acknowledge received interrupt mask
-  *            @arg I2C_IT_ADDRI: Address Match interrupt mask  
-  *            @arg I2C_IT_RXI: RX interrupt mask
-  *            @arg I2C_IT_TXI: TX interrupt mask
-  * @param  NewState: new state of the specified I2C interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_ITConfig(I2C_TypeDef* I2Cx, uint32_t I2C_IT, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  assert_param(IS_I2C_CONFIG_IT(I2C_IT));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected I2C interrupts */
-    I2Cx->CR1 |= I2C_IT;
-  }
-  else
-  {
-    /* Disable the selected I2C interrupts */
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_IT);
-  }
-}
-
-/**
-  * @brief  Enables or disables the I2C Clock stretching.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx Clock stretching.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable clock stretching */
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_NOSTRETCH);    
-  }
-  else
-  {
-    /* Disable clock stretching  */
-    I2Cx->CR1 |= I2C_CR1_NOSTRETCH;
-  }
-}
-
-/**
-  * @brief  Enables or disables I2C wakeup from stop mode.
-  *         This function is not applicable for  STM32F030 devices.  
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx stop mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_StopModeCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable wakeup from stop mode */
-    I2Cx->CR1 |= I2C_CR1_WUPEN;   
-  }
-  else
-  {
-    /* Disable wakeup from stop mode */    
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_WUPEN); 
-  }
-}
-
-/**
-  * @brief  Enables or disables the I2C own address 2.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2C own address 2.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable own address 2 */
-    I2Cx->OAR2 |= I2C_OAR2_OA2EN;
-  }
-  else
-  {
-    /* Disable own address 2 */
-    I2Cx->OAR2 &= (uint32_t)~((uint32_t)I2C_OAR2_OA2EN);
-  }
-}    
-
-/**
-  * @brief  Configures the I2C slave own address 2 and mask.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  Address: specifies the slave address to be programmed.
-  * @param  Mask: specifies own address 2 mask to be programmed.
-  *          This parameter can be one of the following values:
-  *            @arg I2C_OA2_NoMask: no mask.
-  *            @arg I2C_OA2_Mask01: OA2[1] is masked and don't care.
-  *            @arg I2C_OA2_Mask02: OA2[2:1] are masked and don't care.
-  *            @arg I2C_OA2_Mask03: OA2[3:1] are masked and don't care.
-  *            @arg I2C_OA2_Mask04: OA2[4:1] are masked and don't care.
-  *            @arg I2C_OA2_Mask05: OA2[5:1] are masked and don't care.
-  *            @arg I2C_OA2_Mask06: OA2[6:1] are masked and don't care.
-  *            @arg I2C_OA2_Mask07: OA2[7:1] are masked and don't care.
-  * @retval None
-  */
-void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint16_t Address, uint8_t Mask)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_OWN_ADDRESS2(Address));
-  assert_param(IS_I2C_OWN_ADDRESS2_MASK(Mask));
-  
-  /* Get the old register value */
-  tmpreg = I2Cx->OAR2;
-
-  /* Reset I2Cx OA2 bit [7:1] and OA2MSK bit [1:0]  */
-  tmpreg &= (uint32_t)~((uint32_t)(I2C_OAR2_OA2 | I2C_OAR2_OA2MSK));
-
-  /* Set I2Cx SADD */
-  tmpreg |= (uint32_t)(((uint32_t)Address & I2C_OAR2_OA2) | \
-            (((uint32_t)Mask << 8) & I2C_OAR2_OA2MSK)) ;
-
-  /* Store the new register value */
-  I2Cx->OAR2 = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables the I2C general call mode.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2C general call mode.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable general call mode */
-    I2Cx->CR1 |= I2C_CR1_GCEN;
-  }
-  else
-  {
-    /* Disable general call mode */
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_GCEN);
-  }
-} 
-
-/**
-  * @brief  Enables or disables the I2C slave byte control.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2C slave byte control.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void I2C_SlaveByteControlCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable slave byte control */
-    I2Cx->CR1 |= I2C_CR1_SBC;
-  }
-  else
-  {
-    /* Disable slave byte control */
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_SBC);
-  }
-}
-
-/**
-  * @brief  Configures the slave address to be transmitted after start generation.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  Address: specifies the slave address to be programmed.
-  * @note   This function should be called before generating start condition.
-  * @retval None
-  */
-void I2C_SlaveAddressConfig(I2C_TypeDef* I2Cx, uint16_t Address)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_SLAVE_ADDRESS(Address));
-               
-  /* Get the old register value */
-  tmpreg = I2Cx->CR2;
-
-  /* Reset I2Cx SADD bit [9:0] */
-  tmpreg &= (uint32_t)~((uint32_t)I2C_CR2_SADD);
-
-  /* Set I2Cx SADD */
-  tmpreg |= (uint32_t)((uint32_t)Address & I2C_CR2_SADD);
-
-  /* Store the new register value */
-  I2Cx->CR2 = tmpreg;
-}
-  
-/**
-  * @brief  Enables or disables the I2C 10-bit addressing mode for the master.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2C 10-bit addressing mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   This function should be called before generating start condition.
-  * @retval None
-  */
-void I2C_10BitAddressingModeCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable 10-bit addressing mode */
-    I2Cx->CR2 |= I2C_CR2_ADD10;
-  }
-  else
-  {
-    /* Disable 10-bit addressing mode */
-    I2Cx->CR2 &= (uint32_t)~((uint32_t)I2C_CR2_ADD10);
-  }
-} 
-
-/**
-  * @}
-  */
-
-
-/** @defgroup I2C_Group2 Communications handling functions
- *  @brief   Communications handling functions 
- *
-@verbatim
- ===============================================================================
-                  ##### Communications handling functions #####
- ===============================================================================  
-    [..] This section provides a set of functions that handles I2C communication.
-
-    [..] Automatic End mode is enabled using I2C_AutoEndCmd() function. When Reload
-         mode is enabled via I2C_ReloadCmd() AutoEnd bit has no effect.
-
-    [..] I2C_NumberOfBytesConfig() function set the number of bytes to be transferred,
-         this configuration should be done before generating start condition in master 
-         mode.
-
-    [..] When switching from master write operation to read operation in 10Bit addressing
-         mode, master can only sends the 1st 7 bits of the 10 bit address, followed by 
-         Read direction by enabling HEADR bit using I2C_10BitAddressHeader() function.
-
-    [..] In master mode, when transferring more than 255 bytes Reload mode should be used
-         to handle communication. In the first phase of transfer, Nbytes should be set to 
-         255. After transferring these bytes TCR flag is set and I2C_TransferHandling()
-         function should be called to handle remaining communication.
-
-    [..] In master mode, when software end mode is selected when all data is transferred
-         TC flag is set I2C_TransferHandling() function should be called to generate STOP
-         or generate ReStart.
-
-@endverbatim
-  * @{
-  */
-  
-/**
-  * @brief  Enables or disables the I2C automatic end mode (stop condition is 
-  *         automatically sent when nbytes data are transferred).
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2C automatic end mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   This function has effect if Reload mode is disabled.
-  * @retval None
-  */
-void I2C_AutoEndCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable Auto end mode */
-    I2Cx->CR2 |= I2C_CR2_AUTOEND;
-  }
-  else
-  {
-    /* Disable Auto end mode */
-    I2Cx->CR2 &= (uint32_t)~((uint32_t)I2C_CR2_AUTOEND);
-  }
-} 
-
-/**
-  * @brief  Enables or disables the I2C nbytes reload mode.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the nbytes reload mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_ReloadCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable Auto Reload mode */
-    I2Cx->CR2 |= I2C_CR2_RELOAD;
-  }
-  else
-  {
-    /* Disable Auto Reload mode */
-    I2Cx->CR2 &= (uint32_t)~((uint32_t)I2C_CR2_RELOAD);
-  }
-}
-
-/**
-  * @brief  Configures the number of bytes to be transmitted/received.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  Number_Bytes: specifies the number of bytes to be programmed.
-  * @retval None
-  */
-void I2C_NumberOfBytesConfig(I2C_TypeDef* I2Cx, uint8_t Number_Bytes)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-
-  /* Get the old register value */
-  tmpreg = I2Cx->CR2;
-
-  /* Reset I2Cx Nbytes bit [7:0] */
-  tmpreg &= (uint32_t)~((uint32_t)I2C_CR2_NBYTES);
-
-  /* Set I2Cx Nbytes */
-  tmpreg |= (uint32_t)(((uint32_t)Number_Bytes << 16 ) & I2C_CR2_NBYTES);
-
-  /* Store the new register value */
-  I2Cx->CR2 = tmpreg;
-}  
-  
-/**
-  * @brief  Configures the type of transfer request for the master.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_Direction: specifies the transfer request direction to be programmed.
-  *          This parameter can be one of the following values:
-  *            @arg I2C_Direction_Transmitter: Master request a write transfer
-  *            @arg I2C_Direction_Receiver: Master request a read transfer  
-  * @retval None
-  */
-void I2C_MasterRequestConfig(I2C_TypeDef* I2Cx, uint16_t I2C_Direction)
-{
-/* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_DIRECTION(I2C_Direction));
-  
-  /* Test on the direction to set/reset the read/write bit */
-  if (I2C_Direction == I2C_Direction_Transmitter)
-  {
-    /* Request a write Transfer */
-    I2Cx->CR2 &= (uint32_t)~((uint32_t)I2C_CR2_RD_WRN);
-  }
-  else
-  {
-    /* Request a read Transfer */
-    I2Cx->CR2 |= I2C_CR2_RD_WRN;
-  }
-}  
-  
-/**
-  * @brief  Generates I2Cx communication START condition.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2C START condition generation.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Generate a START condition */
-    I2Cx->CR2 |= I2C_CR2_START;
-  }
-  else
-  {
-    /* Disable the START condition generation */
-    I2Cx->CR2 &= (uint32_t)~((uint32_t)I2C_CR2_START);
-  }
-}  
-  
-/**
-  * @brief  Generates I2Cx communication STOP condition.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2C STOP condition generation.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Generate a STOP condition */
-    I2Cx->CR2 |= I2C_CR2_STOP;
-  }
-  else
-  {
-    /* Disable the STOP condition generation */
-    I2Cx->CR2 &= (uint32_t)~((uint32_t)I2C_CR2_STOP);
-  }
-}  
-
-/**
-  * @brief  Enables or disables the I2C 10-bit header only mode with read direction.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the I2C 10-bit header only mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   This mode can be used only when switching from master transmitter mode 
-  *         to master receiver mode.
-  * @retval None
-  */
-void I2C_10BitAddressHeaderCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable 10-bit header only mode */
-    I2Cx->CR2 |= I2C_CR2_HEAD10R;
-  }
-  else
-  {
-    /* Disable 10-bit header only mode */
-    I2Cx->CR2 &= (uint32_t)~((uint32_t)I2C_CR2_HEAD10R);
-  }
-}    
-
-/**
-  * @brief  Generates I2C communication Acknowledge.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  NewState: new state of the Acknowledge.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable ACK generation */
-    I2Cx->CR2 &= (uint32_t)~((uint32_t)I2C_CR2_NACK);    
-  }
-  else
-  {
-    /* Enable NACK generation */
-    I2Cx->CR2 |= I2C_CR2_NACK;
-  }
-}
-
-/**
-  * @brief  Returns the I2C slave matched address .
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @retval The value of the slave matched address .
-  */
-uint8_t I2C_GetAddressMatched(I2C_TypeDef* I2Cx)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  
-  /* Return the slave matched address in the SR1 register */
-  return (uint8_t)(((uint32_t)I2Cx->ISR & I2C_ISR_ADDCODE) >> 16) ;
-}
-
-/**
-  * @brief  Returns the I2C slave received request.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @retval The value of the received request.
-  */
-uint16_t I2C_GetTransferDirection(I2C_TypeDef* I2Cx)
-{
-  uint32_t tmpreg = 0;
-  uint16_t direction = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  
-  /* Return the slave matched address in the SR1 register */
-  tmpreg = (uint32_t)(I2Cx->ISR & I2C_ISR_DIR);
-  
-  /* If write transfer is requested */
-  if (tmpreg == 0)
-  {
-    /* write transfer is requested */
-    direction = I2C_Direction_Transmitter;
-  }
-  else
-  {
-    /* Read transfer is requested */
-    direction = I2C_Direction_Receiver;
-  }  
-  return direction;
-}
-
-/**
-  * @brief  Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag are set).
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  Address: specifies the slave address to be programmed.
-  * @param  Number_Bytes: specifies the number of bytes to be programmed.
-  *          This parameter must be a value between 0 and 255.
-  * @param  ReloadEndMode: new state of the I2C START condition generation.
-  *          This parameter can be one of the following values:
-  *            @arg I2C_Reload_Mode: Enable Reload mode .
-  *            @arg I2C_AutoEnd_Mode: Enable Automatic end mode.
-  *            @arg I2C_SoftEnd_Mode: Enable Software end mode.
-  * @param  StartStopMode: new state of the I2C START condition generation.
-  *          This parameter can be one of the following values:
-  *            @arg I2C_No_StartStop: Don't Generate stop and start condition.
-  *            @arg I2C_Generate_Stop: Generate stop condition (Number_Bytes should be set to 0).
-  *            @arg I2C_Generate_Start_Read: Generate Restart for read request.
-  *            @arg I2C_Generate_Start_Write: Generate Restart for write request.
-  * @retval None
-  */
-void I2C_TransferHandling(I2C_TypeDef* I2Cx, uint16_t Address, uint8_t Number_Bytes, uint32_t ReloadEndMode, uint32_t StartStopMode)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_SLAVE_ADDRESS(Address));  
-  assert_param(IS_RELOAD_END_MODE(ReloadEndMode));
-  assert_param(IS_START_STOP_MODE(StartStopMode));
-    
-  /* Get the CR2 register value */
-  tmpreg = I2Cx->CR2;
-  
-  /* clear tmpreg specific bits */
-  tmpreg &= (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | I2C_CR2_RD_WRN | I2C_CR2_START | I2C_CR2_STOP));
-  
-  /* update tmpreg */
-  tmpreg |= (uint32_t)(((uint32_t)Address & I2C_CR2_SADD) | (((uint32_t)Number_Bytes << 16 ) & I2C_CR2_NBYTES) | \
-            (uint32_t)ReloadEndMode | (uint32_t)StartStopMode);
-  
-  /* update CR2 register */
-  I2Cx->CR2 = tmpreg;  
-}
-
-/**
-  * @}
-  */
-
-
-/** @defgroup I2C_Group3 SMBUS management functions
- *  @brief   SMBUS management functions 
- *
-@verbatim
- ===============================================================================
-                      ##### SMBUS management functions #####
- ===============================================================================  
-    [..] This section provides a set of functions that handles SMBus communication
-         and timeouts detection.
-
-    [..] The SMBus Device default address (0b1100 001) is enabled by calling I2C_Init()
-         function and setting I2C_Mode member of I2C_InitTypeDef() structure to 
-         I2C_Mode_SMBusDevice.
-
-    [..] The SMBus Host address (0b0001 000) is enabled by calling I2C_Init()
-         function and setting I2C_Mode member of I2C_InitTypeDef() structure to 
-         I2C_Mode_SMBusHost.
-
-    [..] The Alert Response Address (0b0001 100) is enabled using I2C_SMBusAlertCmd()
-         function.
-
-    [..] To detect cumulative SCL stretch in master and slave mode, TIMEOUTB should be 
-         configured (in accordance to SMBus specification) using I2C_TimeoutBConfig() 
-         function then I2C_ExtendedClockTimeoutCmd() function should be called to enable
-         the detection.
-
-    [..] SCL low timeout is detected by configuring TIMEOUTB using I2C_TimeoutBConfig()
-         function followed by the call of I2C_ClockTimeoutCmd(). When adding to this 
-         procedure the call of I2C_IdleClockTimeoutCmd() function, Bus Idle condition 
-         (both SCL and SDA high) is detected also.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables I2C SMBus alert.
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx SMBus alert.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_SMBusAlertCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable SMBus alert */
-    I2Cx->CR1 |= I2C_CR1_ALERTEN;   
-  }
-  else
-  {
-    /* Disable SMBus alert */    
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_ALERTEN); 
-  }
-}
-
-/**
-  * @brief  Enables or disables I2C Clock Timeout (SCL Timeout detection).
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx clock Timeout.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_ClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable Clock Timeout */
-    I2Cx->TIMEOUTR |= I2C_TIMEOUTR_TIMOUTEN;   
-  }
-  else
-  {
-    /* Disable Clock Timeout */    
-    I2Cx->TIMEOUTR &= (uint32_t)~((uint32_t)I2C_TIMEOUTR_TIMOUTEN); 
-  }
-}
-
-/**
-  * @brief  Enables or disables I2C Extended Clock Timeout (SCL cumulative Timeout detection).
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx Extended clock Timeout.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_ExtendedClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable Clock Timeout */
-    I2Cx->TIMEOUTR |= I2C_TIMEOUTR_TEXTEN;   
-  }
-  else
-  {
-    /* Disable Clock Timeout */    
-    I2Cx->TIMEOUTR &= (uint32_t)~((uint32_t)I2C_TIMEOUTR_TEXTEN); 
-  }
-}
-
-/**
-  * @brief  Enables or disables I2C Idle Clock Timeout (Bus idle SCL and SDA 
-  *         high detection).
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx Idle clock Timeout.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_IdleClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable Clock Timeout */
-    I2Cx->TIMEOUTR |= I2C_TIMEOUTR_TIDLE;   
-  }
-  else
-  {
-    /* Disable Clock Timeout */    
-    I2Cx->TIMEOUTR &= (uint32_t)~((uint32_t)I2C_TIMEOUTR_TIDLE); 
-  }
-}
-
-/**
-  * @brief  Configures the I2C Bus Timeout A (SCL Timeout when TIDLE = 0 or Bus 
-  *         idle SCL and SDA high when TIDLE = 1).
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  Timeout: specifies the TimeoutA to be programmed. 
-  * @retval None
-  */
-void I2C_TimeoutAConfig(I2C_TypeDef* I2Cx, uint16_t Timeout)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_I2C_TIMEOUT(Timeout));
-    
-  /* Get the old register value */
-  tmpreg = I2Cx->TIMEOUTR;
-
-  /* Reset I2Cx TIMEOUTA bit [11:0] */
-  tmpreg &= (uint32_t)~((uint32_t)I2C_TIMEOUTR_TIMEOUTA);
-
-  /* Set I2Cx TIMEOUTA */
-  tmpreg |= (uint32_t)((uint32_t)Timeout & I2C_TIMEOUTR_TIMEOUTA) ;
-
-  /* Store the new register value */
-  I2Cx->TIMEOUTR = tmpreg;
-}
-
-/**
-  * @brief  Configures the I2C Bus Timeout B (SCL cumulative Timeout).
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  Timeout: specifies the TimeoutB to be programmed. 
-  * @retval None
-  */
-void I2C_TimeoutBConfig(I2C_TypeDef* I2Cx, uint16_t Timeout)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_I2C_TIMEOUT(Timeout));
-
-  /* Get the old register value */
-  tmpreg = I2Cx->TIMEOUTR;
-
-  /* Reset I2Cx TIMEOUTB bit [11:0] */
-  tmpreg &= (uint32_t)~((uint32_t)I2C_TIMEOUTR_TIMEOUTB);
-
-  /* Set I2Cx TIMEOUTB */
-  tmpreg |= (uint32_t)(((uint32_t)Timeout << 16) & I2C_TIMEOUTR_TIMEOUTB) ;
-
-  /* Store the new register value */
-  I2Cx->TIMEOUTR = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables I2C PEC calculation.
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx PEC calculation.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable PEC calculation */
-    I2Cx->CR1 |= I2C_CR1_PECEN;   
-  }
-  else
-  {
-    /* Disable PEC calculation */    
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR1_PECEN); 
-  }
-}
-
-/**
-  * @brief  Enables or disables I2C PEC transmission/reception request.
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @param  NewState: new state of the I2Cx PEC request.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_PECRequestCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable PEC transmission/reception request */
-    I2Cx->CR1 |= I2C_CR2_PECBYTE;   
-  }
-  else
-  {
-    /* Disable PEC transmission/reception request */    
-    I2Cx->CR1 &= (uint32_t)~((uint32_t)I2C_CR2_PECBYTE); 
-  }
-}
-
-/**
-  * @brief  Returns the I2C PEC.
-  * @param  I2Cx: where x can be 1 to select the I2C peripheral.
-  * @retval The value of the PEC .
-  */
-uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_1_PERIPH(I2Cx));
-  
-  /* Return the slave matched address in the SR1 register */
-  return (uint8_t)((uint32_t)I2Cx->PECR & I2C_PECR_PEC);
-}
-
-/**
-  * @}
-  */  
-
-
-/** @defgroup I2C_Group4 I2C registers management functions
- *  @brief   I2C registers management functions 
- *
-@verbatim
- ===============================================================================
-                ##### I2C registers management functions #####
- ===============================================================================  
-    [..] This section provides a functions that allow user the management of 
-         I2C registers.
-
-@endverbatim
-  * @{
-  */
-
-  /**
-  * @brief  Reads the specified I2C register and returns its value.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_Register: specifies the register to read.
-  *          This parameter can be one of the following values:
-  *            @arg I2C_Register_CR1: CR1 register.
-  *            @arg I2C_Register_CR2: CR2 register.
-  *            @arg I2C_Register_OAR1: OAR1 register.
-  *            @arg I2C_Register_OAR2: OAR2 register.
-  *            @arg I2C_Register_TIMINGR: TIMING register.
-  *            @arg I2C_Register_TIMEOUTR: TIMEOUTR register.
-  *            @arg I2C_Register_ISR: ISR register.
-  *            @arg I2C_Register_ICR: ICR register.
-  *            @arg I2C_Register_PECR: PECR register.
-  *            @arg I2C_Register_RXDR: RXDR register.
-  *            @arg I2C_Register_TXDR: TXDR register.
-  * @retval The value of the read register.
-  */
-uint32_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register)
-{
-  __IO uint32_t tmp = 0;
-
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_REGISTER(I2C_Register));
-
-  tmp = (uint32_t)I2Cx;
-  tmp += I2C_Register;
-
-  /* Return the selected register value */
-  return (*(__IO uint32_t *) tmp);
-}
-
-/**
-  * @}
-  */  
-  
-/** @defgroup I2C_Group5 Data transfers management functions
- *  @brief   Data transfers management functions 
- *
-@verbatim
- ===============================================================================
-                ##### Data transfers management functions #####
- ===============================================================================  
-    [..] This subsection provides a set of functions allowing to manage 
-         the I2C data transfers.
-
-    [..] The read access of the I2C_RXDR register can be done using 
-         the I2C_ReceiveData() function and returns the received value.
-         Whereas a write access to the I2C_TXDR can be done using I2C_SendData()
-         function and stores the written data into TXDR.
-@endverbatim
-  * @{
-  */  
-  
-/**
-  * @brief  Sends a data byte through the I2Cx peripheral.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  Data: Byte to be transmitted..
-  * @retval None
-  */
-void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  
-  /* Write in the DR register the data to be sent */
-  I2Cx->TXDR = (uint8_t)Data;
-}
-
-/**
-  * @brief  Returns the most recent received data by the I2Cx peripheral.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @retval The value of the received data.
-  */
-uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  
-  /* Return the data in the DR register */
-  return (uint8_t)I2Cx->RXDR;
-}  
-
-/**
-  * @}
-  */ 
-
-
-/** @defgroup I2C_Group6 DMA transfers management functions
- *  @brief   DMA transfers management functions 
- *
-@verbatim
- ===============================================================================
-                ##### DMA transfers management functions #####
- ===============================================================================  
-    [..] This section provides two functions that can be used only in DMA mode.
-    [..] In DMA Mode, the I2C communication can be managed by 2 DMA Channel 
-         requests:
-         (#) I2C_DMAReq_Tx: specifies the Tx buffer DMA transfer request.
-         (#) I2C_DMAReq_Rx: specifies the Rx buffer DMA transfer request.
-    [..] In this Mode it is advised to use the following function:
-         (+) I2C_DMACmd(I2C_TypeDef* I2Cx, uint32_t I2C_DMAReq, FunctionalState NewState);
-@endverbatim
-  * @{
-  */  
-    
-/**
-  * @brief  Enables or disables the I2C DMA interface.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_DMAReq: specifies the I2C DMA transfer request to be enabled or disabled. 
-  *          This parameter can be any combination of the following values:
-  *            @arg I2C_DMAReq_Tx: Tx DMA transfer request
-  *            @arg I2C_DMAReq_Rx: Rx DMA transfer request
-  * @param  NewState: new state of the selected I2C DMA transfer request.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2C_DMACmd(I2C_TypeDef* I2Cx, uint32_t I2C_DMAReq, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  assert_param(IS_I2C_DMA_REQ(I2C_DMAReq));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected I2C DMA requests */
-    I2Cx->CR1 |= I2C_DMAReq;
-  }
-  else
-  {
-    /* Disable the selected I2C DMA requests */
-    I2Cx->CR1 &= (uint32_t)~I2C_DMAReq;
-  }
-}
-/**
-  * @}
-  */  
-
-
-/** @defgroup I2C_Group7 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions 
- *
-@verbatim
- ===============================================================================
-             ##### Interrupts and flags management functions  #####
- ===============================================================================  
-    [..] This section provides functions allowing to configure the I2C Interrupts 
-         sources and check or clear the flags or pending bits status.
-         The user should identify which mode will be used in his application to manage 
-         the communication: Polling mode, Interrupt mode or DMA mode(refer I2C_Group6).
-
-  *** Polling Mode ***
-  ====================
-    [..] In Polling Mode, the I2C communication can be managed by 15 flags:
-        (#) I2C_FLAG_TXE: to indicate the status of Transmit data register empty flag.
-        (#) I2C_FLAG_TXIS: to indicate the status of Transmit interrupt status flag .
-        (#) I2C_FLAG_RXNE: to indicate the status of Receive data register not empty flag.
-        (#) I2C_FLAG_ADDR: to indicate the status of Address matched flag (slave mode).
-        (#) I2C_FLAG_NACKF: to indicate the status of NACK received flag.
-        (#) I2C_FLAG_STOPF: to indicate the status of STOP detection flag.
-        (#) I2C_FLAG_TC: to indicate the status of Transfer complete flag(master mode).
-        (#) I2C_FLAG_TCR: to indicate the status of Transfer complete reload flag.
-        (#) I2C_FLAG_BERR: to indicate the status of Bus error flag.
-        (#) I2C_FLAG_ARLO: to indicate the status of Arbitration lost flag.
-        (#) I2C_FLAG_OVR: to indicate the status of Overrun/Underrun flag.
-        (#) I2C_FLAG_PECERR: to indicate the status of PEC error in reception flag.
-        (#) I2C_FLAG_TIMEOUT: to indicate the status of Timeout or Tlow detection flag.
-        (#) I2C_FLAG_ALERT: to indicate the status of SMBus Alert flag.
-        (#) I2C_FLAG_BUSY: to indicate the status of Bus busy flag.
-
-    [..] In this Mode it is advised to use the following functions:
-        (+) FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);
-        (+) void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);
-
-    [..]
-        (@)Do not use the BUSY flag to handle each data transmission or reception.It is 
-           better to use the TXIS and RXNE flags instead.
-
-  *** Interrupt Mode ***
-  ======================
-    [..] In Interrupt Mode, the I2C communication can be managed by 7 interrupt sources
-         and 15 pending bits: 
-    [..] Interrupt Source:
-        (#) I2C_IT_ERRI: specifies the interrupt source for the Error interrupt.
-        (#) I2C_IT_TCI: specifies the interrupt source for the Transfer Complete interrupt.
-        (#) I2C_IT_STOPI: specifies the interrupt source for the Stop Detection interrupt.
-        (#) I2C_IT_NACKI: specifies the interrupt source for the Not Acknowledge received interrupt.
-        (#) I2C_IT_ADDRI: specifies the interrupt source for the Address Match interrupt.
-        (#) I2C_IT_RXI: specifies the interrupt source for the RX interrupt.
-        (#) I2C_IT_TXI: specifies the interrupt source for the TX interrupt.
-
-    [..] Pending Bits:
-        (#) I2C_IT_TXIS: to indicate the status of Transmit interrupt status flag.
-        (#) I2C_IT_RXNE: to indicate the status of Receive data register not empty flag.
-        (#) I2C_IT_ADDR: to indicate the status of Address matched flag (slave mode).
-        (#) I2C_IT_NACKF: to indicate the status of NACK received flag.
-        (#) I2C_IT_STOPF: to indicate the status of STOP detection flag.
-        (#) I2C_IT_TC: to indicate the status of Transfer complete flag (master mode).
-        (#) I2C_IT_TCR: to indicate the status of Transfer complete reload flag.
-        (#) I2C_IT_BERR: to indicate the status of Bus error flag.
-        (#) I2C_IT_ARLO: to indicate the status of Arbitration lost flag.
-        (#) I2C_IT_OVR: to indicate the status of Overrun/Underrun flag.
-        (#) I2C_IT_PECERR: to indicate the status of PEC error in reception flag.
-        (#) I2C_IT_TIMEOUT: to indicate the status of Timeout or Tlow detection flag.
-        (#) I2C_IT_ALERT: to indicate the status of SMBus Alert flag.
-
-    [..] In this Mode it is advised to use the following functions:
-        (+) void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT);
-        (+) ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT);
-
-@endverbatim
-  * @{
-  */  
-
-/**
-  * @brief  Checks whether the specified I2C flag is set or not.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_FLAG: specifies the flag to check. 
-  *          This parameter can be one of the following values:
-  *            @arg I2C_FLAG_TXE: Transmit data register empty
-  *            @arg I2C_FLAG_TXIS: Transmit interrupt status
-  *            @arg I2C_FLAG_RXNE: Receive data register not empty
-  *            @arg I2C_FLAG_ADDR: Address matched (slave mode)
-  *            @arg I2C_FLAG_NACKF: NACK received flag
-  *            @arg I2C_FLAG_STOPF: STOP detection flag
-  *            @arg I2C_FLAG_TC: Transfer complete (master mode)
-  *            @arg I2C_FLAG_TCR: Transfer complete reload
-  *            @arg I2C_FLAG_BERR: Bus error
-  *            @arg I2C_FLAG_ARLO: Arbitration lost
-  *            @arg I2C_FLAG_OVR: Overrun/Underrun
-  *            @arg I2C_FLAG_PECERR: PEC error in reception
-  *            @arg I2C_FLAG_TIMEOUT: Timeout or Tlow detection flag
-  *            @arg I2C_FLAG_ALERT: SMBus Alert
-  *            @arg I2C_FLAG_BUSY: Bus busy
-  * @retval The new state of I2C_FLAG (SET or RESET).
-  */
-FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG)
-{
-  uint32_t tmpreg = 0;
-  FlagStatus bitstatus = RESET;
-  
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_GET_FLAG(I2C_FLAG));
-  
-  /* Get the ISR register value */
-  tmpreg = I2Cx->ISR;
-  
-  /* Get flag status */
-  tmpreg &= I2C_FLAG;
-  
-  if(tmpreg != 0)
-  {
-    /* I2C_FLAG is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* I2C_FLAG is reset */
-    bitstatus = RESET;
-  }
-  return bitstatus;
-} 
-
-/**
-  * @brief  Clears the I2Cx's pending flags.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_FLAG: specifies the flag to clear. 
-  *          This parameter can be any combination of the following values:
-  *            @arg I2C_FLAG_ADDR: Address matched (slave mode)
-  *            @arg I2C_FLAG_NACKF: NACK received flag
-  *            @arg I2C_FLAG_STOPF: STOP detection flag
-  *            @arg I2C_FLAG_BERR: Bus error
-  *            @arg I2C_FLAG_ARLO: Arbitration lost
-  *            @arg I2C_FLAG_OVR: Overrun/Underrun
-  *            @arg I2C_FLAG_PECERR: PEC error in reception
-  *            @arg I2C_FLAG_TIMEOUT: Timeout or Tlow detection flag
-  *            @arg I2C_FLAG_ALERT: SMBus Alert
-  * @retval The new state of I2C_FLAG (SET or RESET).
-  */
-void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG)
-{ 
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_CLEAR_FLAG(I2C_FLAG));
-
-  /* Clear the selected flag */
-  I2Cx->ICR = I2C_FLAG;
-  }
-
-/**
-  * @brief  Checks whether the specified I2C interrupt has occurred or not.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_IT: specifies the interrupt source to check.
-  *          This parameter can be one of the following values:
-  *            @arg I2C_IT_TXIS: Transmit interrupt status
-  *            @arg I2C_IT_RXNE: Receive data register not empty
-  *            @arg I2C_IT_ADDR: Address matched (slave mode)
-  *            @arg I2C_IT_NACKF: NACK received flag
-  *            @arg I2C_IT_STOPF: STOP detection flag
-  *            @arg I2C_IT_TC: Transfer complete (master mode)
-  *            @arg I2C_IT_TCR: Transfer complete reload
-  *            @arg I2C_IT_BERR: Bus error
-  *            @arg I2C_IT_ARLO: Arbitration lost
-  *            @arg I2C_IT_OVR: Overrun/Underrun
-  *            @arg I2C_IT_PECERR: PEC error in reception
-  *            @arg I2C_IT_TIMEOUT: Timeout or Tlow detection flag
-  *            @arg I2C_IT_ALERT: SMBus Alert
-  * @retval The new state of I2C_IT (SET or RESET).
-  */
-ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT)
-{
-  uint32_t tmpreg = 0;
-  ITStatus bitstatus = RESET;
-  uint32_t enablestatus = 0;
-
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_GET_IT(I2C_IT));
-
-  /* Check if the interrupt source is enabled or not */
-  /* If Error interrupt */
-  if ((uint32_t)(I2C_IT & ERROR_IT_MASK))
-  {
-    enablestatus = (uint32_t)((I2C_CR1_ERRIE) & (I2Cx->CR1));
-  }
-  /* If TC interrupt */
-  else if ((uint32_t)(I2C_IT & TC_IT_MASK))
-  {
-    enablestatus = (uint32_t)((I2C_CR1_TCIE) & (I2Cx->CR1));
-  }
-  else
-  {
-    enablestatus = (uint32_t)((I2C_IT) & (I2Cx->CR1));
-  }
-  
-  /* Get the ISR register value */
-  tmpreg = I2Cx->ISR;
-
-  /* Get flag status */
-  tmpreg &= I2C_IT;
-
-  /* Check the status of the specified I2C flag */
-  if((tmpreg != RESET) && enablestatus)
-  {
-    /* I2C_IT is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* I2C_IT is reset */
-    bitstatus = RESET;
-  }
-
-  /* Return the I2C_IT status */
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the I2Cx's interrupt pending bits.
-  * @param  I2Cx: where x can be 1 or 2 to select the I2C peripheral.
-  * @param  I2C_IT: specifies the interrupt pending bit to clear.
-  *          This parameter can be any combination of the following values:
-  *            @arg I2C_IT_ADDR: Address matched (slave mode)
-  *            @arg I2C_IT_NACKF: NACK received flag
-  *            @arg I2C_IT_STOPF: STOP detection flag
-  *            @arg I2C_IT_BERR: Bus error
-  *            @arg I2C_IT_ARLO: Arbitration lost
-  *            @arg I2C_IT_OVR: Overrun/Underrun
-  *            @arg I2C_IT_PECERR: PEC error in reception
-  *            @arg I2C_IT_TIMEOUT: Timeout or Tlow detection flag
-  *            @arg I2C_IT_ALERT: SMBus Alert
-  * @retval The new state of I2C_IT (SET or RESET).
-  */
-void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
-  assert_param(IS_I2C_CLEAR_IT(I2C_IT));
-
-  /* Clear the selected flag */
-  I2Cx->ICR = I2C_IT;
-}
-
-/**
-  * @}
-  */  
-  
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_iwdg.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_iwdg.c
deleted file mode 100644
index 2eca2c8..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_iwdg.c	
+++ /dev/null
@@ -1,293 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_iwdg.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Independent watchdog (IWDG) peripheral:           
-  *           + Prescaler and Counter configuration
-  *           + IWDG activation
-  *           + Flag management
-  *
-  *  @verbatim  
-  *  
-  ============================================================================== 
-                          ##### IWDG features #####
-  ============================================================================== 
-    [..] The IWDG can be started by either software or hardware (configurable
-         through option byte).
-             
-    [..] The IWDG is clocked by its own dedicated low-speed clock (LSI) and
-         thus stays active even if the main clock fails.
-         Once the IWDG is started, the LSI is forced ON and cannot be disabled
-         (LSI cannot be disabled too), and the counter starts counting down from 
-         the reset value of 0xFFF. When it reaches the end of count value (0x000)
-         a system reset is generated.
-         The IWDG counter should be reloaded at regular intervals to prevent
-         an MCU reset.
-                             
-    [..] The IWDG is implemented in the VDD voltage domain that is still functional
-         in STOP and STANDBY mode (IWDG reset can wake-up from STANDBY).
-              
-    [..] IWDGRST flag in RCC_CSR register can be used to inform when a IWDG
-         reset occurs.
-              
-    [..] Min-max timeout value @40KHz (LSI): ~0.1ms / ~28.3s
-         The IWDG timeout may vary due to LSI frequency dispersion. STM32F0xx
-         devices provide the capability to measure the LSI frequency (LSI clock
-         should be seleted as RTC clock which is internally connected to TIM10 CH1
-         input capture). The measured value can be used to have an IWDG timeout with
-         an acceptable accuracy. 
-         For more information, please refer to the STM32F0xx Reference manual.
-            
-                          ##### How to use this driver ##### 
-  ============================================================================== 
-    [..] This driver allows to use IWDG peripheral with either window option enabled
-         or disabled. To do so follow one of the two procedures below.
-    (#) Window option is enabled:    
-        (++) Start the IWDG using IWDG_Enable() function, when the IWDG is used
-             in software mode (no need to enable the LSI, it will be enabled
-             by hardware).        
-        (++) Enable write access to IWDG_PR and IWDG_RLR registers using
-             IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable) function.
-        (++) Configure the IWDG prescaler using IWDG_SetPrescaler() function.
-        (++) Configure the IWDG counter value using IWDG_SetReload() function.
-             This value will be loaded in the IWDG counter each time the counter
-             is reloaded, then the IWDG will start counting down from this value.
-        (++) Wait for the IWDG registers to be updated using IWDG_GetFlagStatus() function.
-        (++) Configure the IWDG refresh window using IWDG_SetWindowValue() function.
-
-    (#) Window option is disabled:    
-        (++) Enable write access to IWDG_PR and IWDG_RLR registers using
-             IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable) function.
-        (++) Configure the IWDG prescaler using IWDG_SetPrescaler() function.
-        (++) Configure the IWDG counter value using IWDG_SetReload() function.
-             This value will be loaded in the IWDG counter each time the counter
-             is reloaded, then the IWDG will start counting down from this value.
-        (++) Wait for the IWDG registers to be updated using IWDG_GetFlagStatus() function.
-        (++) reload the IWDG counter at regular intervals during normal operation 
-             to prevent an MCU reset, using IWDG_ReloadCounter() function.
-        (++) Start the IWDG using IWDG_Enable() function, when the IWDG is used
-             in software mode (no need to enable the LSI, it will be enabled
-             by hardware).
-              
-    @endverbatim
-  *    
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_iwdg.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup IWDG 
-  * @brief IWDG driver modules
-  * @{
-  */ 
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* ---------------------- IWDG registers bit mask ----------------------------*/
-/* KR register bit mask */
-#define KR_KEY_RELOAD    ((uint16_t)0xAAAA)
-#define KR_KEY_ENABLE    ((uint16_t)0xCCCC)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup IWDG_Private_Functions
-  * @{
-  */
-
-/** @defgroup IWDG_Group1 Prescaler and Counter configuration functions
- *  @brief   Prescaler and Counter configuration functions
- *
-@verbatim   
-  ==============================================================================
-            ##### Prescaler and Counter configuration functions #####
-  ==============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables write access to IWDG_PR and IWDG_RLR registers.
-  * @param  IWDG_WriteAccess: new state of write access to IWDG_PR and IWDG_RLR registers.
-  *          This parameter can be one of the following values:
-  *            @arg IWDG_WriteAccess_Enable: Enable write access to IWDG_PR and IWDG_RLR registers
-  *            @arg IWDG_WriteAccess_Disable: Disable write access to IWDG_PR and IWDG_RLR registers
-  * @retval None
-  */
-void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess)
-{
-  /* Check the parameters */
-  assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess));
-  IWDG->KR = IWDG_WriteAccess;
-}
-
-/**
-  * @brief  Sets IWDG Prescaler value.
-  * @param  IWDG_Prescaler: specifies the IWDG Prescaler value.
-  *          This parameter can be one of the following values:
-  *            @arg IWDG_Prescaler_4: IWDG prescaler set to 4
-  *            @arg IWDG_Prescaler_8: IWDG prescaler set to 8
-  *            @arg IWDG_Prescaler_16: IWDG prescaler set to 16
-  *            @arg IWDG_Prescaler_32: IWDG prescaler set to 32
-  *            @arg IWDG_Prescaler_64: IWDG prescaler set to 64
-  *            @arg IWDG_Prescaler_128: IWDG prescaler set to 128
-  *            @arg IWDG_Prescaler_256: IWDG prescaler set to 256
-  * @retval None
-  */
-void IWDG_SetPrescaler(uint8_t IWDG_Prescaler)
-{
-  /* Check the parameters */
-  assert_param(IS_IWDG_PRESCALER(IWDG_Prescaler));
-  IWDG->PR = IWDG_Prescaler;
-}
-
-/**
-  * @brief  Sets IWDG Reload value.
-  * @param  Reload: specifies the IWDG Reload value.
-  *          This parameter must be a number between 0 and 0x0FFF.
-  * @retval None
-  */
-void IWDG_SetReload(uint16_t Reload)
-{
-  /* Check the parameters */
-  assert_param(IS_IWDG_RELOAD(Reload));
-  IWDG->RLR = Reload;
-}
-
-/**
-  * @brief  Reloads IWDG counter with value defined in the reload register
-  *   (write access to IWDG_PR and IWDG_RLR registers disabled).
-  * @param  None
-  * @retval None
-  */
-void IWDG_ReloadCounter(void)
-{
-  IWDG->KR = KR_KEY_RELOAD;
-}
-
-
-/**
-  * @brief  Sets the IWDG window value.
-  * @param  WindowValue: specifies the window value to be compared to the downcounter.
-  * @retval None
-  */
-void IWDG_SetWindowValue(uint16_t WindowValue)
-{
-  /* Check the parameters */
-  assert_param(IS_IWDG_WINDOW_VALUE(WindowValue));
-  IWDG->WINR = WindowValue;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup IWDG_Group2 IWDG activation function
- *  @brief   IWDG activation function 
- *
-@verbatim   
- ==============================================================================
-                          ##### IWDG activation function #####
- ==============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables IWDG (write access to IWDG_PR and IWDG_RLR registers disabled).
-  * @param  None
-  * @retval None
-  */
-void IWDG_Enable(void)
-{
-  IWDG->KR = KR_KEY_ENABLE;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup IWDG_Group3 Flag management function 
- *  @brief  Flag management function  
- *
-@verbatim   
- ===============================================================================
-                      ##### Flag management function ##### 
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Checks whether the specified IWDG flag is set or not.
-  * @param  IWDG_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *            @arg IWDG_FLAG_PVU: Prescaler Value Update on going
-  *            @arg IWDG_FLAG_RVU: Reload Value Update on going
-  *            @arg IWDG_FLAG_WVU: Counter Window Value Update on going
-  * @retval The new state of IWDG_FLAG (SET or RESET).
-  */
-FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-  /* Check the parameters */
-  assert_param(IS_IWDG_FLAG(IWDG_FLAG));
-  if ((IWDG->SR & IWDG_FLAG) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  /* Return the flag status */
-  return bitstatus;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_misc.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_misc.c
deleted file mode 100644
index 1ace673..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_misc.c	
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_misc.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides all the miscellaneous firmware functions (add-on
-  *          to CMSIS functions).
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_misc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup MISC 
-  * @brief MISC driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup MISC_Private_Functions
-  * @{
-  */
-/**
-  *
-@verbatim
- *******************************************************************************
-                   ##### Interrupts configuration functions #####
- *******************************************************************************
-    [..] This section provide functions allowing to configure the NVIC interrupts
-        (IRQ). The Cortex-M0 exceptions are managed by CMSIS functions.
-         (#) Enable and Configure the priority of the selected IRQ Channels. 
-             The priority can be 0..3. 
-
-        -@- Lower priority values gives higher priority.
-        -@- Priority Order:
-            (#@) Lowest priority.
-            (#@) Lowest hardware priority (IRQn position).  
-  
-@endverbatim
-*/
-
-/**
-  * @brief  Initializes the NVIC peripheral according to the specified
-  *         parameters in the NVIC_InitStruct.
-  * @param  NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure that contains
-  *         the configuration information for the specified NVIC peripheral.
-  * @retval None
-  */
-void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
-{
-  uint32_t tmppriority = 0x00;
-  
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
-  assert_param(IS_NVIC_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPriority));  
-    
-  if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
-  {
-    /* Compute the Corresponding IRQ Priority --------------------------------*/    
-    tmppriority = NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel >> 0x02];
-    tmppriority &= (uint32_t)(~(((uint32_t)0xFF) << ((NVIC_InitStruct->NVIC_IRQChannel & 0x03) * 8)));
-    tmppriority |= (uint32_t)((((uint32_t)NVIC_InitStruct->NVIC_IRQChannelPriority << 6) & 0xFF) << ((NVIC_InitStruct->NVIC_IRQChannel & 0x03) * 8));    
-    
-    NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel >> 0x02] = tmppriority;
-    
-    /* Enable the Selected IRQ Channels --------------------------------------*/
-    NVIC->ISER[0] = (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F);
-  }
-  else
-  {
-    /* Disable the Selected IRQ Channels -------------------------------------*/
-    NVIC->ICER[0] = (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F);
-  }
-}
-
-/**
-  * @brief  Selects the condition for the system to enter low power mode.
-  * @param  LowPowerMode: Specifies the new mode for the system to enter low power mode.
-  *          This parameter can be one of the following values:
-  *            @arg NVIC_LP_SEVONPEND: Low Power SEV on Pend.
-  *            @arg NVIC_LP_SLEEPDEEP: Low Power DEEPSLEEP request.
-  *            @arg NVIC_LP_SLEEPONEXIT: Low Power Sleep on Exit.
-  * @param  NewState: new state of LP condition. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_NVIC_LP(LowPowerMode));
-  
-  assert_param(IS_FUNCTIONAL_STATE(NewState));  
-  
-  if (NewState != DISABLE)
-  {
-    SCB->SCR |= LowPowerMode;
-  }
-  else
-  {
-    SCB->SCR &= (uint32_t)(~(uint32_t)LowPowerMode);
-  }
-}
-
-/**
-  * @brief  Configures the SysTick clock source.
-  * @param  SysTick_CLKSource: specifies the SysTick clock source.
-  *          This parameter can be one of the following values:
-  *            @arg SysTick_CLKSource_HCLK_Div8: AHB clock divided by 8 selected as SysTick clock source.
-  *            @arg SysTick_CLKSource_HCLK: AHB clock selected as SysTick clock source.
-  * @retval None
-  */
-void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
-{
-  /* Check the parameters */
-  assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
-  
-  if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
-  {
-    SysTick->CTRL |= SysTick_CLKSource_HCLK;
-  }
-  else
-  {
-    SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
-  }
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_pwr.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_pwr.c
deleted file mode 100644
index 7c13ce4..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_pwr.c	
+++ /dev/null
@@ -1,566 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_pwr.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Power Controller (PWR) peripheral:
-  *           + Backup Domain Access
-  *           + PVD configuration
-  *           + WakeUp pins configuration
-  *           + Low Power modes configuration
-  *           + Flags management
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_pwr.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup PWR 
-  * @brief PWR driver modules
-  * @{
-  */ 
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-
-/* ------------------ PWR registers bit mask ------------------------ */
-
-/* CR register bit mask */
-#define CR_DS_MASK               ((uint32_t)0xFFFFFFFC)
-#define CR_PLS_MASK              ((uint32_t)0xFFFFFF1F)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup PWR_Private_Functions
-  * @{
-  */
-
-/** @defgroup PWR_Group1 Backup Domain Access function 
- *  @brief   Backup Domain Access function
- *
-@verbatim
-  ==============================================================================
-                   ##### Backup Domain Access function #####
-  ==============================================================================
-
-    [..] After reset, the Backup Domain Registers (RCC BDCR Register, RTC registers
-         and RTC backup registers) are protected against possible stray write accesses.
-    [..] To enable access to Backup domain use the PWR_BackupAccessCmd(ENABLE) function.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the PWR peripheral registers to their default reset values.
-  * @param  None
-  * @retval None
-  */
-void PWR_DeInit(void)
-{
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, ENABLE);
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, DISABLE);
-}
-
-/**
-  * @brief  Enables or disables access to the Backup domain registers.
-  * @note   If the HSE divided by 32 is used as the RTC clock, the 
-  *         Backup Domain Access should be kept enabled.
-  * @param  NewState: new state of the access to the Backup domain registers.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void PWR_BackupAccessCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the Backup Domain Access */
-    PWR->CR |= PWR_CR_DBP;
-  }
-  else
-  {
-    /* Disable the Backup Domain Access */
-    PWR->CR &= (uint32_t)~((uint32_t)PWR_CR_DBP);
-  } 
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup PWR_Group2 PVD configuration functions
- *  @brief   PVD configuration functions 
- *
-@verbatim
-  ==============================================================================
-                    ##### PVD configuration functions #####
-  ==============================================================================
-  [..]
-  (+) The PVD is used to monitor the VDD power supply by comparing it to a threshold
-      selected by the PVD Level (PLS[2:0] bits in the PWR_CR).
-  (+) A PVDO flag is available to indicate if VDD/VDDA is higher or lower than the 
-      PVD threshold. This event is internally connected to the EXTI line16
-      and can generate an interrupt if enabled through the EXTI registers.
-  (+) The PVD is stopped in Standby mode.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the voltage threshold detected by the Power Voltage Detector(PVD).
-  * @note   This function is not applicable for STM32F030 devices. 
-  * @param  PWR_PVDLevel: specifies the PVD detection level
-  *          This parameter can be one of the following values:
-  *             @arg PWR_PVDLevel_0
-  *             @arg PWR_PVDLevel_1
-  *             @arg PWR_PVDLevel_2
-  *             @arg PWR_PVDLevel_3
-  *             @arg PWR_PVDLevel_4
-  *             @arg PWR_PVDLevel_5
-  *             @arg PWR_PVDLevel_6
-  *             @arg PWR_PVDLevel_7
-  * @note   Refer to the electrical characteristics of your device datasheet for
-  *         more details about the voltage threshold corresponding to each 
-  *         detection level.
-  * @retval None
-  */
-void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_PWR_PVD_LEVEL(PWR_PVDLevel));
-  
-  tmpreg = PWR->CR;
-  
-  /* Clear PLS[7:5] bits */
-  tmpreg &= CR_PLS_MASK;
-  
-  /* Set PLS[7:5] bits according to PWR_PVDLevel value */
-  tmpreg |= PWR_PVDLevel;
-  
-  /* Store the new value */
-  PWR->CR = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables the Power Voltage Detector(PVD).
-  * @note   This function is not applicable for STM32F030 devices.    
-  * @param  NewState: new state of the PVD.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void PWR_PVDCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the PVD */
-    PWR->CR |= PWR_CR_PVDE;
-  }
-  else
-  {
-    /* Disable the PVD */
-    PWR->CR &= (uint32_t)~((uint32_t)PWR_CR_PVDE);
-  } 
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup PWR_Group3 WakeUp pins configuration functions
- *  @brief   WakeUp pins configuration functions 
- *
-@verbatim
-  ==============================================================================
-               ##### WakeUp pin configuration functions #####
-  ==============================================================================
-
-  (+) WakeUp pins are used to wakeup the system from Standby mode. These pins are 
-      forced in input pull down configuration and are active on rising edges.
-  (+) There are eight WakeUp pins: WakeUp Pin 1 on PA.00 and WakeUp Pin 2 on PC.13. 
-      The following WakeUp pins are only applicable for STM32F072 dvices:
-      WakeUp Pin 3 on PE.06, WakeUp Pin 4 on PA.02, WakeUp Pin 5 on PC.05, 
-      WakeUp Pin 6 on PB.05, WakeUp Pin 7 on PB.15 and WakeUp Pin 8 on PF.02.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the WakeUp Pin functionality.
-  * @param  PWR_WakeUpPin: specifies the WakeUpPin.
-  *          This parameter can be one of the following values
-  *             @arg PWR_WakeUpPin_1
-  *             @arg PWR_WakeUpPin_2
-  *             @arg PWR_WakeUpPin_3, only applicable for STM32F072 devices
-  *             @arg PWR_WakeUpPin_4, only applicable for STM32F072 devices
-  *             @arg PWR_WakeUpPin_5, only applicable for STM32F072 devices
-  *             @arg PWR_WakeUpPin_6, only applicable for STM32F072 devices
-  *             @arg PWR_WakeUpPin_7, only applicable for STM32F072 devices
-  *             @arg PWR_WakeUpPin_8, only applicable for STM32F072 devices            
-  * @param  NewState: new state of the WakeUp Pin functionality.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void PWR_WakeUpPinCmd(uint32_t PWR_WakeUpPin, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_PWR_WAKEUP_PIN(PWR_WakeUpPin));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the EWUPx pin */
-    PWR->CSR |= PWR_WakeUpPin;
-  }
-  else
-  {
-    /* Disable the EWUPx pin */
-    PWR->CSR &= ~PWR_WakeUpPin;
-  }
-}
-
-/**
-  * @}
-  */
-
-
-/** @defgroup PWR_Group4 Low Power modes configuration functions
- *  @brief   Low Power modes configuration functions 
- *
-@verbatim
-  ==============================================================================
-              ##### Low Power modes configuration functions #####
-  ==============================================================================
-
-    [..] The devices feature three low-power modes:
-    (+) Sleep mode: Cortex-M0 core stopped, peripherals kept running.
-    (+) Stop mode: all clocks are stopped, regulator running, regulator in low power mode
-    (+) Standby mode: VCORE domain powered off
-
-  *** Sleep mode *** 
-  ==================
-  [..] 
-    (+) Entry:
-        (++) The Sleep mode is entered by executing the WFE() or WFI() instructions.
-    (+) Exit:
-        (++) Any peripheral interrupt acknowledged by the nested vectored interrupt 
-             controller (NVIC) can wake up the device from Sleep mode.
-
-  *** Stop mode *** 
-  =================
-  [..] In Stop mode, all clocks in the VCORE domain are stopped, the PLL, the HSI,
-       the HSI14 and the HSE RC oscillators are disabled. Internal SRAM and register 
-       contents are preserved.
-       The voltage regulator can be configured either in normal or low-power mode.
-
-    (+) Entry:
-        (++) The Stop mode is entered using the PWR_EnterSTOPMode(PWR_Regulator_LowPower,) 
-             function with regulator in LowPower or with Regulator ON.
-    (+) Exit:
-        (++) Any EXTI Line (Internal or External) configured in Interrupt/Event mode
-             or any internal IPs (I2C, UASRT or CEC) wakeup event.
-
-  *** Standby mode *** 
-  ====================
-  [..] The Standby mode allows to achieve the lowest power consumption. It is based 
-       on the Cortex-M0 deepsleep mode, with the voltage regulator disabled. 
-       The VCORE domain is consequently powered off. The PLL, the HSI, the HSI14 
-       oscillator and the HSE oscillator are also switched off. SRAM and register 
-       contents are lost except for the Backup domain (RTC registers, RTC backup 
-       registers and Standby circuitry).
-   
-  [..] The voltage regulator is OFF.
-
-    (+) Entry:
-        (++) The Standby mode is entered using the PWR_EnterSTANDBYMode() function.
-    (+) Exit:
-        (++) WKUP pin rising edge, RTC alarm (Alarm A and Alarm B), RTC wakeup,
-             tamper event, time-stamp event, external reset in NRST pin, IWDG reset.
-
-  *** Auto-wakeup (AWU) from low-power mode *** 
-  =============================================
-  [..] The MCU can be woken up from low-power mode by an RTC Alarm event, a tamper 
-       event, a time-stamp event, or a comparator event, without depending on an 
-       external interrupt (Auto-wakeup mode).
-
-    (+) RTC auto-wakeup (AWU) from the Stop mode
-        (++) To wake up from the Stop mode with an RTC alarm event, it is necessary to:
-             (+++) Configure the EXTI Line 17 to be sensitive to rising edges (Interrupt 
-                   or Event modes) using the EXTI_Init() function.
-             (+++) Enable the RTC Alarm Interrupt using the RTC_ITConfig() function
-             (+++) Configure the RTC to generate the RTC alarm using the RTC_SetAlarm() 
-                   and RTC_AlarmCmd() functions.
-        (++) To wake up from the Stop mode with an RTC Tamper or time stamp event, it 
-             is necessary to:
-             (+++) Configure the EXTI Line 19 to be sensitive to rising edges (Interrupt 
-                   or Event modes) using the EXTI_Init() function.
-             (+++) Enable the RTC Tamper or time stamp Interrupt using the RTC_ITConfig() 
-                   function.
-             (+++) Configure the RTC to detect the tamper or time stamp event using the
-                   RTC_TimeStampConfig(), RTC_TamperTriggerConfig() and RTC_TamperCmd()
-                   functions.
-
-    (+) RTC auto-wakeup (AWU) from the Standby mode
-        (++) To wake up from the Standby mode with an RTC alarm event, it is necessary to:
-             (+++) Enable the RTC Alarm Interrupt using the RTC_ITConfig() function.
-             (+++) Configure the RTC to generate the RTC alarm using the RTC_SetAlarm() 
-                   and RTC_AlarmCmd() functions.
-        (++) To wake up from the Standby mode with an RTC Tamper or time stamp event, it 
-             is necessary to:
-             (+++) Enable the RTC Tamper or time stamp Interrupt using the RTC_ITConfig() 
-                   function.
-             (+++) Configure the RTC to detect the tamper or time stamp event using the
-                   RTC_TimeStampConfig(), RTC_TamperTriggerConfig() and RTC_TamperCmd()
-                   functions.
-
-    (+) Comparator auto-wakeup (AWU) from the Stop mode
-        (++) To wake up from the Stop mode with an comparator 1 or comparator 2 wakeup
-             event, it is necessary to:
-             (+++) Configure the EXTI Line 21 for comparator 1 or EXTI Line 22 for comparator 2 
-                   to be sensitive to to the selected edges (falling, rising or falling 
-                   and rising) (Interrupt or Event modes) using the EXTI_Init() function.
-             (+++) Configure the comparator to generate the event.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enters Sleep mode.
-  * @note   In Sleep mode, all I/O pins keep the same state as in Run mode.
-  * @param  PWR_SLEEPEntry: specifies if SLEEP mode in entered with WFI or WFE instruction.
-  *          This parameter can be one of the following values:
-  *             @arg PWR_SLEEPEntry_WFI: enter SLEEP mode with WFI instruction
-  *             @arg PWR_SLEEPEntry_WFE: enter SLEEP mode with WFE instruction
-  * @retval None
-  */
-void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry)
-{
-  /* Check the parameters */
-  assert_param(IS_PWR_SLEEP_ENTRY(PWR_SLEEPEntry));
-
-  /* Clear SLEEPDEEP bit of Cortex-M0 System Control Register */
-  SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);
-  
-  /* Select SLEEP mode entry -------------------------------------------------*/
-  if(PWR_SLEEPEntry == PWR_SLEEPEntry_WFI)
-  {
-    /* Request Wait For Interrupt */
-    __WFI();
-  }
-  else
-  {
-    /* Request Wait For Event */
-    __WFE();
-  }
-}
-
-/**
-  * @brief  Enters STOP mode.
-  * @note   In Stop mode, all I/O pins keep the same state as in Run mode.
-  * @note   When exiting Stop mode by issuing an interrupt or a wakeup event, 
-  *         the HSI RC oscillator is selected as system clock.
-  * @note   When the voltage regulator operates in low power mode, an additional 
-  *         startup delay is incurred when waking up from Stop mode. 
-  *         By keeping the internal regulator ON during Stop mode, the consumption 
-  *         is higher although the startup time is reduced.
-  * @param  PWR_Regulator: specifies the regulator state in STOP mode.
-  *         This parameter can be one of the following values:
-  *             @arg PWR_Regulator_ON: STOP mode with regulator ON
-  *             @arg PWR_Regulator_LowPower: STOP mode with regulator in low power mode
-  * @param  PWR_STOPEntry: specifies if STOP mode in entered with WFI or WFE instruction.
-  *         This parameter can be one of the following values:
-  *             @arg PWR_STOPEntry_WFI: enter STOP mode with WFI instruction
-  *             @arg PWR_STOPEntry_WFE: enter STOP mode with WFE instruction
-                @arg PWR_STOPEntry_SLEEPONEXIT: enter STOP mode with SLEEPONEXIT instruction
-  * @retval None
-  */
-void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_PWR_REGULATOR(PWR_Regulator));
-  assert_param(IS_PWR_STOP_ENTRY(PWR_STOPEntry));
-  
-  /* Select the regulator state in STOP mode ---------------------------------*/
-  tmpreg = PWR->CR;
-  /* Clear PDDS and LPDSR bits */
-  tmpreg &= CR_DS_MASK;
-  
-  /* Set LPDSR bit according to PWR_Regulator value */
-  tmpreg |= PWR_Regulator;
-  
-  /* Store the new value */
-  PWR->CR = tmpreg;
-  
-  /* Set SLEEPDEEP bit of Cortex-M0 System Control Register */
-  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-  
-  /* Select STOP mode entry --------------------------------------------------*/
-  if(PWR_STOPEntry == PWR_STOPEntry_WFI)
-  {
-    /* Request Wait For Interrupt */
-    __WFI();
-    /* Reset SLEEPDEEP bit of Cortex System Control Register */
-    SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); 
-  }
-  else if (PWR_STOPEntry == PWR_STOPEntry_WFE)
-  {
-    /* Request Wait For Event */
-    __WFE();
-    /* Reset SLEEPDEEP bit of Cortex System Control Register */
-    SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);   
-  }
-  else
-  {
-    /* Set SLEEP on exit bit of Cortex-M0 System Control Register */
-    SCB->SCR |= SCB_SCR_SLEEPONEXIT_Msk;
-  }
-}
-
-/**
-  * @brief  Enters STANDBY mode.
-  * @note   In Standby mode, all I/O pins are high impedance except for:
-  *          - Reset pad (still available) 
-  *          - RTC_AF1 pin (PC13) if configured for Wakeup pin 2 (WKUP2), tamper, 
-  *             time-stamp, RTC Alarm out, or RTC clock calibration out.
-  *          - WKUP pin 1 (PA0) if enabled.
-  * @param  None
-  * @retval None
-  */
-void PWR_EnterSTANDBYMode(void)
-{
-  /* Clear Wakeup flag */
-  PWR->CR |= PWR_CR_CWUF;
-
-  /* Select STANDBY mode */
-  PWR->CR |= PWR_CR_PDDS;
-
-  /* Set SLEEPDEEP bit of Cortex-M0 System Control Register */
-  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
-  /* Request Wait For Interrupt */
-  __WFI();
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup PWR_Group5 Flags management functions
- *  @brief   Flags management functions 
- *
-@verbatim
-  ==============================================================================
-                       ##### Flags management functions #####
-  ==============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Checks whether the specified PWR flag is set or not.
-  * @param  PWR_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *             @arg PWR_FLAG_WU: Wake Up flag. This flag indicates that a wakeup
-  *                  event was received from the WKUP pin or from the RTC alarm 
-  *                  (Alarm A or Alarm B), RTC Tamper event or RTC TimeStamp event.
-  *             @arg PWR_FLAG_SB: StandBy flag. This flag indicates that the 
-  *                  system was resumed from StandBy mode.
-  *             @arg PWR_FLAG_PVDO: PVD Output. This flag is valid only if PVD 
-  *                  is enabled by the PWR_PVDCmd() function.
-  *             @arg PWR_FLAG_VREFINTRDY: Internal Voltage Reference Ready flag. 
-  *                  This flag indicates the state of the internal voltage 
-  *                  reference, VREFINT.
-  * @retval The new state of PWR_FLAG (SET or RESET).
-  */
-FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-  /* Check the parameters */
-  assert_param(IS_PWR_GET_FLAG(PWR_FLAG));
-
-  if ((PWR->CSR & PWR_FLAG) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  /* Return the flag status */
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the PWR's pending flags.
-  * @param  PWR_FLAG: specifies the flag to clear.
-  *          This parameter can be one of the following values:
-  *             @arg PWR_FLAG_WU: Wake Up flag
-  *             @arg PWR_FLAG_SB: StandBy flag
-  * @retval None
-  */
-void PWR_ClearFlag(uint32_t PWR_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_PWR_CLEAR_FLAG(PWR_FLAG));
-
-  PWR->CR |=  PWR_FLAG << 2;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rcc.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rcc.c
deleted file mode 100644
index ef8d5fd..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rcc.c	
+++ /dev/null
@@ -1,1741 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_rcc.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Reset and clock control (RCC) peripheral:
-  *           + Internal/external clocks, PLL, CSS and MCO configuration
-  *           + System, AHB and APB busses clocks configuration
-  *           + Peripheral clocks configuration
-  *           + Interrupts and flags management
-  *
- @verbatim
-
- ===============================================================================
-                        ##### RCC specific features #####
- ===============================================================================
-    [..] After reset the device is running from HSI (8 MHz) with Flash 0 WS, 
-         all peripherals are off except internal SRAM, Flash and SWD.
-         (#) There is no prescaler on High speed (AHB) and Low speed (APB) busses;
-             all peripherals mapped on these busses are running at HSI speed.
-         (#) The clock for all peripherals is switched off, except the SRAM and FLASH.
-         (#) All GPIOs are in input floating state, except the SWD pins which
-             are assigned to be used for debug purpose.
-    [..] Once the device started from reset, the user application has to:
-         (#) Configure the clock source to be used to drive the System clock
-             (if the application needs higher frequency/performance)
-         (#) Configure the System clock frequency and Flash settings
-         (#) Configure the AHB and APB busses prescalers
-         (#) Enable the clock for the peripheral(s) to be used
-         (#) Configure the clock source(s) for peripherals which clocks are not
-             derived from the System clock (ADC, CEC, I2C, USART, RTC and IWDG)
-
- @endverbatim
-  
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup RCC 
-  * @brief RCC driver modules
-  * @{
-  */ 
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-
-/* ---------------------- RCC registers mask -------------------------------- */
-/* RCC Flag Mask */
-#define FLAG_MASK                 ((uint8_t)0x1F)
-
-/* CR register byte 2 (Bits[23:16]) base address */
-#define CR_BYTE2_ADDRESS          ((uint32_t)0x40021002)
-
-/* CFGR register byte 3 (Bits[31:23]) base address */
-#define CFGR_BYTE3_ADDRESS        ((uint32_t)0x40021007)
-
-/* CIR register byte 1 (Bits[15:8]) base address */
-#define CIR_BYTE1_ADDRESS         ((uint32_t)0x40021009)
-
-/* CIR register byte 2 (Bits[23:16]) base address */
-#define CIR_BYTE2_ADDRESS         ((uint32_t)0x4002100A)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-static __I uint8_t APBAHBPrescTable[16] = {0, 0, 0, 0, 1, 2, 3, 4, 1, 2, 3, 4, 6, 7, 8, 9};
-
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup RCC_Private_Functions
-  * @{
-  */
-
-/** @defgroup RCC_Group1 Internal and external clocks, PLL, CSS and MCO configuration functions
- *  @brief   Internal and external clocks, PLL, CSS and MCO configuration functions 
- *
-@verbatim
- ===============================================================================
- ##### Internal-external clocks, PLL, CSS and MCO configuration functions #####
- ===============================================================================
-    [..] This section provides functions allowing to configure the internal/external clocks,
-         PLL, CSS and MCO.
-         (#) HSI (high-speed internal), 8 MHz factory-trimmed RC used directly 
-             or through the PLL as System clock source.
-             The HSI clock can be used also to clock the USART, I2C and CEC peripherals.
-         (#) HSI14 (high-speed internal for ADC), 14 MHz factory-trimmed RC used to clock
-             the ADC peripheral.
-         (#) LSI (low-speed internal), 40 KHz low consumption RC used as IWDG and/or RTC
-             clock source.
-         (#) HSE (high-speed external), 4 to 32 MHz crystal oscillator used directly or
-             through the PLL as System clock source. Can be used also as RTC clock source.
-         (#) LSE (low-speed external), 32 KHz oscillator used as RTC clock source. 
-             LSE can be used also to clock the USART and CEC peripherals.   
-         (#) PLL (clocked by HSI or HSE), for System clock.
-         (#) CSS (Clock security system), once enabled and if a HSE clock failure occurs 
-             (HSE used directly or through PLL as System clock source), the System clock
-             is automatically switched to HSI and an interrupt is generated if enabled. 
-             The interrupt is linked to the Cortex-M0 NMI (Non-Maskable Interrupt) 
-             exception vector.   
-         (#) MCO (microcontroller clock output), used to output SYSCLK, HSI, HSI14, LSI,
-             HSE, LSE or PLL (divided by 2) clock on PA8 pin.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Resets the RCC clock configuration to the default reset state.
-  * @note   The default reset state of the clock configuration is given below:
-  * @note      HSI ON and used as system clock source 
-  * @note      HSI14, HSE and PLL OFF
-  * @note      AHB, APB prescaler set to 1.
-  * @note      CSS and MCO OFF
-  * @note      All interrupts disabled
-  * @note   However, this function doesn't modify the configuration of the
-  * @note      Peripheral clocks
-  * @note      LSI, LSE and RTC clocks
-  * @param  None
-  * @retval None
-  */
-void RCC_DeInit(void)
-{
-  /* Set HSION bit */
-  RCC->CR |= (uint32_t)0x00000001;
-
-#if defined (STM32F051)
-  /* Reset SW[1:0], HPRE[3:0], PPRE[2:0] and MCOSEL[2:0] bits */
-  RCC->CFGR &= (uint32_t)0xF8FFB80C;
-#else
-  /* Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE, MCOSEL[2:0], MCOPRE[2:0] and PLLNODIV bits */
-  RCC->CFGR &= (uint32_t)0x08FFB80C;
-#endif /* STM32F051 */
-  
-  /* Reset HSEON, CSSON and PLLON bits */
-  RCC->CR &= (uint32_t)0xFEF6FFFF;
-
-  /* Reset HSEBYP bit */
-  RCC->CR &= (uint32_t)0xFFFBFFFF;
-
-  /* Reset PLLSRC, PLLXTPRE and PLLMUL[3:0] bits */
-  RCC->CFGR &= (uint32_t)0xFFC0FFFF;
-
-  /* Reset PREDIV1[3:0] bits */
-  RCC->CFGR2 &= (uint32_t)0xFFFFFFF0;
-
-  /* Reset USARTSW[1:0], I2CSW, CECSW and ADCSW bits */
-  RCC->CFGR3 &= (uint32_t)0xFFFFFEAC;
-  
-  /* Reset HSI14 bit */
-  RCC->CR2 &= (uint32_t)0xFFFFFFFE;
-
-  /* Disable all interrupts */
-  RCC->CIR = 0x00000000;
-}
-
-/**
-  * @brief  Configures the External High Speed oscillator (HSE).
-  * @note   After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application
-  *         software should wait on HSERDY flag to be set indicating that HSE clock
-  *         is stable and can be used to clock the PLL and/or system clock.
-  * @note   HSE state can not be changed if it is used directly or through the
-  *         PLL as system clock. In this case, you have to select another source
-  *         of the system clock then change the HSE state (ex. disable it).
-  * @note   The HSE is stopped by hardware when entering STOP and STANDBY modes.
-  * @note   This function resets the CSSON bit, so if the Clock security system(CSS)
-  *         was previously enabled you have to enable it again after calling this
-  *         function.
-  * @param  RCC_HSE: specifies the new state of the HSE.
-  *          This parameter can be one of the following values:
-  *            @arg RCC_HSE_OFF: turn OFF the HSE oscillator, HSERDY flag goes low after
-  *                              6 HSE oscillator clock cycles.
-  *            @arg RCC_HSE_ON: turn ON the HSE oscillator
-  *            @arg RCC_HSE_Bypass: HSE oscillator bypassed with external clock
-  * @retval None
-  */
-void RCC_HSEConfig(uint8_t RCC_HSE)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_HSE(RCC_HSE));
-
-  /* Reset HSEON and HSEBYP bits before configuring the HSE ------------------*/
-  *(__IO uint8_t *) CR_BYTE2_ADDRESS = RCC_HSE_OFF;
-
-  /* Set the new HSE configuration -------------------------------------------*/
-  *(__IO uint8_t *) CR_BYTE2_ADDRESS = RCC_HSE;
-
-}
-
-/**
-  * @brief  Waits for HSE start-up.
-  * @note   This function waits on HSERDY flag to be set and return SUCCESS if 
-  *         this flag is set, otherwise returns ERROR if the timeout is reached 
-  *         and this flag is not set. The timeout value is defined by the constant
-  *         HSE_STARTUP_TIMEOUT in stm32f0xx.h file. You can tailor it depending
-  *         on the HSE crystal used in your application.
-  * @note   The HSE is stopped by hardware when entering STOP and STANDBY modes.
-  * @param  None
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: HSE oscillator is stable and ready to use
-  *          - ERROR: HSE oscillator not yet ready
-  */
-ErrorStatus RCC_WaitForHSEStartUp(void)
-{
-  __IO uint32_t StartUpCounter = 0;
-  ErrorStatus status = ERROR;
-  FlagStatus HSEStatus = RESET;
-  
-  /* Wait till HSE is ready and if timeout is reached exit */
-  do
-  {
-    HSEStatus = RCC_GetFlagStatus(RCC_FLAG_HSERDY);
-    StartUpCounter++;  
-  } while((StartUpCounter != HSE_STARTUP_TIMEOUT) && (HSEStatus == RESET));
-  
-  if (RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET)
-  {
-    status = SUCCESS;
-  }
-  else
-  {
-    status = ERROR;
-  }  
-  return (status);
-}
-
-/**
-  * @brief  Adjusts the Internal High Speed oscillator (HSI) calibration value.
-  * @note   The calibration is used to compensate for the variations in voltage
-  *         and temperature that influence the frequency of the internal HSI RC.
-  *         Refer to the Application Note AN4067 for more details on how to  
-  *         calibrate the HSI.
-  * @param  HSICalibrationValue: specifies the HSI calibration trimming value.
-  *          This parameter must be a number between 0 and 0x1F.
-  * @retval None
-  */
-void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_HSI_CALIBRATION_VALUE(HSICalibrationValue));
-  
-  tmpreg = RCC->CR;
-  
-  /* Clear HSITRIM[4:0] bits */
-  tmpreg &= ~RCC_CR_HSITRIM;
-  
-  /* Set the HSITRIM[4:0] bits according to HSICalibrationValue value */
-  tmpreg |= (uint32_t)HSICalibrationValue << 3;
-
-  /* Store the new value */
-  RCC->CR = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables the Internal High Speed oscillator (HSI).
-  * @note   After enabling the HSI, the application software should wait on 
-  *         HSIRDY flag to be set indicating that HSI clock is stable and can
-  *         be used to clock the PLL and/or system clock.
-  * @note   HSI can not be stopped if it is used directly or through the PLL
-  *         as system clock. In this case, you have to select another source 
-  *         of the system clock then stop the HSI.
-  * @note   The HSI is stopped by hardware when entering STOP and STANDBY modes.
-  * @param  NewState: new state of the HSI.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator
-  *         clock cycles.
-  * @retval None
-  */
-void RCC_HSICmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->CR |= RCC_CR_HSION;
-  }
-  else
-  {
-    RCC->CR &= ~RCC_CR_HSION;
-  }
-}
-
-/**
-  * @brief  Adjusts the Internal High Speed oscillator for ADC (HSI14) 
-  *         calibration value.
-  * @note   The calibration is used to compensate for the variations in voltage
-  *         and temperature that influence the frequency of the internal HSI RC.
-  *         Refer to the Application Note AN4067  for more details on how to  
-  *         calibrate the HSI14.
-  * @param  HSI14CalibrationValue: specifies the HSI14 calibration trimming value.
-  *          This parameter must be a number between 0 and 0x1F.
-  * @retval None
-  */
-void RCC_AdjustHSI14CalibrationValue(uint8_t HSI14CalibrationValue)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_HSI14_CALIBRATION_VALUE(HSI14CalibrationValue));
-  
-  tmpreg = RCC->CR2;
-  
-  /* Clear HSI14TRIM[4:0] bits */
-  tmpreg &= ~RCC_CR2_HSI14TRIM;
-  
-  /* Set the HSITRIM14[4:0] bits according to HSI14CalibrationValue value */
-  tmpreg |= (uint32_t)HSI14CalibrationValue << 3;
-
-  /* Store the new value */
-  RCC->CR2 = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables the Internal High Speed oscillator for ADC (HSI14).
-  * @note   After enabling the HSI14, the application software should wait on 
-  *         HSIRDY flag to be set indicating that HSI clock is stable and can
-  *         be used to clock the ADC.
-  * @note   The HSI14 is stopped by hardware when entering STOP and STANDBY modes.
-  * @param  NewState: new state of the HSI14.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   When the HSI14 is stopped, HSI14RDY flag goes low after 6 HSI14 oscillator
-  *         clock cycles.
-  * @retval None
-  */
-void RCC_HSI14Cmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->CR2 |= RCC_CR2_HSI14ON;
-  }
-  else
-  {
-    RCC->CR2 &= ~RCC_CR2_HSI14ON;
-  }
-}
-
-/**
-  * @brief  Enables or disables the Internal High Speed oscillator request from ADC.
-  * @param  NewState: new state of the HSI14 ADC request.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_HSI14ADCRequestCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->CR2 &= ~RCC_CR2_HSI14DIS;
-  }
-  else
-  {
-    RCC->CR2 |= RCC_CR2_HSI14DIS;
-  }
-}
-
-/**
-  * @brief  Configures the External Low Speed oscillator (LSE).
-  * @note   As the LSE is in the Backup domain and write access is denied to this
-  *         domain after reset, you have to enable write access using 
-  *         PWR_BackupAccessCmd(ENABLE) function before to configure the LSE
-  *         (to be done once after reset).
-  * @note   After enabling the LSE (RCC_LSE_ON or RCC_LSE_Bypass), the application
-  *         software should wait on LSERDY flag to be set indicating that LSE clock
-  *         is stable and can be used to clock the RTC.
-  * @param  RCC_LSE: specifies the new state of the LSE.
-  *          This parameter can be one of the following values:
-  *            @arg RCC_LSE_OFF: turn OFF the LSE oscillator, LSERDY flag goes low after
-  *                              6 LSE oscillator clock cycles.
-  *            @arg RCC_LSE_ON: turn ON the LSE oscillator
-  *            @arg RCC_LSE_Bypass: LSE oscillator bypassed with external clock
-  * @retval None
-  */
-void RCC_LSEConfig(uint32_t RCC_LSE)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_LSE(RCC_LSE));
-
-  /* Reset LSEON and LSEBYP bits before configuring the LSE ------------------*/
-  /* Reset LSEON bit */
-  RCC->BDCR &= ~(RCC_BDCR_LSEON);
-
-  /* Reset LSEBYP bit */
-  RCC->BDCR &= ~(RCC_BDCR_LSEBYP);
-
-  /* Configure LSE */
-  RCC->BDCR |= RCC_LSE;
-}
-
-/**
-  * @brief  Configures the External Low Speed oscillator (LSE) drive capability.
-  * @param  RCC_LSEDrive: specifies the new state of the LSE drive capability.
-  *          This parameter can be one of the following values:
-  *            @arg RCC_LSEDrive_Low: LSE oscillator low drive capability.
-  *            @arg RCC_LSEDrive_MediumLow: LSE oscillator medium low drive capability.
-  *            @arg RCC_LSEDrive_MediumHigh: LSE oscillator medium high drive capability.
-  *            @arg RCC_LSEDrive_High: LSE oscillator high drive capability.
-  * @retval None
-  */
-void RCC_LSEDriveConfig(uint32_t RCC_LSEDrive)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_LSE_DRIVE(RCC_LSEDrive));
-  
-  /* Clear LSEDRV[1:0] bits */
-  RCC->BDCR &= ~(RCC_BDCR_LSEDRV);
-
-  /* Set the LSE Drive */
-  RCC->BDCR |= RCC_LSEDrive;
-}
-
-/**
-  * @brief  Enables or disables the Internal Low Speed oscillator (LSI).
-  * @note   After enabling the LSI, the application software should wait on 
-  *         LSIRDY flag to be set indicating that LSI clock is stable and can
-  *         be used to clock the IWDG and/or the RTC.
-  * @note   LSI can not be disabled if the IWDG is running.
-  * @param  NewState: new state of the LSI.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator
-  *         clock cycles.
-  * @retval None
-  */
-void RCC_LSICmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->CSR |= RCC_CSR_LSION;
-  }
-  else
-  {
-    RCC->CSR &= ~RCC_CSR_LSION;
-  }
-}
-
-/**
-  * @brief  Configures the PLL clock source and multiplication factor.
-  * @note   This function must be used only when the PLL is disabled.
-  *
-  * @param  RCC_PLLSource: specifies the PLL entry clock source.
-  *          This parameter can be one of the following values:
-  *            @arg RCC_PLLSource_HSI_Div2: HSI oscillator clock selected as PLL clock source
-  *            @arg RCC_PLLSource_PREDIV1: PREDIV1 clock selected as PLL clock entry
-  *            @arg RCC_PLLSource_HSI48 HSI48 oscillator clock selected as PLL clock source, applicable only for STM32F072 devices
-  *            @arg RCC_PLLSource_HSI: HSI clock selected as PLL clock entry, applicable only for STM32F072 devices
-  * @note   The minimum input clock frequency for PLL is 2 MHz (when using HSE as
-  *         PLL source).
-  *
-  * @param  RCC_PLLMul: specifies the PLL multiplication factor, which drive the PLLVCO clock
-  *          This parameter can be RCC_PLLMul_x where x:[2,16] 
-  *
-  * @retval None
-  */
-void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_PLL_SOURCE(RCC_PLLSource));
-  assert_param(IS_RCC_PLL_MUL(RCC_PLLMul));
-
-  /* Clear PLL Source [16] and Multiplier [21:18] bits */
-  RCC->CFGR &= ~(RCC_CFGR_PLLMULL | RCC_CFGR_PLLSRC);
-
-  /* Set the PLL Source and Multiplier */
-  RCC->CFGR |= (uint32_t)(RCC_PLLSource | RCC_PLLMul);
-}
-
-/**
-  * @brief  Enables or disables the PLL.
-  * @note   After enabling the PLL, the application software should wait on 
-  *         PLLRDY flag to be set indicating that PLL clock is stable and can
-  *         be used as system clock source.
-  * @note   The PLL can not be disabled if it is used as system clock source
-  * @note   The PLL is disabled by hardware when entering STOP and STANDBY modes.
-  * @param  NewState: new state of the PLL.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_PLLCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->CR |= RCC_CR_PLLON;
-  }
-  else
-  {
-    RCC->CR &= ~RCC_CR_PLLON;
-  }
-}
-
-/**
-  * @brief  Enables or disables the Internal High Speed oscillator for USB (HSI48).
-  *         This function is only applicable for STM32F072 devices.  
-  * @note   After enabling the HSI48, the application software should wait on 
-  *         HSI48RDY flag to be set indicating that HSI48 clock is stable and can
-  *         be used to clock the USB.
-  * @note   The HSI48 is stopped by hardware when entering STOP and STANDBY modes.
-  * @param  NewState: new state of the HSI48.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_HSI48Cmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->CR2 |= RCC_CR2_HSI48ON;
-  }
-  else
-  {
-    RCC->CR2 &= ~RCC_CR2_HSI48ON;
-  }
-}
-
-/**
-  * @brief  Configures the PREDIV1 division factor.
-  * @note   This function must be used only when the PLL is disabled.
-  * @param  RCC_PREDIV1_Div: specifies the PREDIV1 clock division factor.
-  *          This parameter can be RCC_PREDIV1_Divx where x:[1,16]
-  * @retval None
-  */
-void RCC_PREDIV1Config(uint32_t RCC_PREDIV1_Div)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_PREDIV1(RCC_PREDIV1_Div));
-
-  tmpreg = RCC->CFGR2;
-  /* Clear PREDIV1[3:0] bits */
-  tmpreg &= ~(RCC_CFGR2_PREDIV1);
-  /* Set the PREDIV1 division factor */
-  tmpreg |= RCC_PREDIV1_Div;
-  /* Store the new value */
-  RCC->CFGR2 = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables the Clock Security System.
-  * @note   If a failure is detected on the HSE oscillator clock, this oscillator
-  *         is automatically disabled and an interrupt is generated to inform the
-  *         software about the failure (Clock Security System Interrupt, CSSI),
-  *         allowing the MCU to perform rescue operations. The CSSI is linked to 
-  *         the Cortex-M0 NMI (Non-Maskable Interrupt) exception vector.
-  * @param  NewState: new state of the Clock Security System.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_ClockSecuritySystemCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->CR |= RCC_CR_CSSON;
-  }
-  else
-  {
-    RCC->CR &= ~RCC_CR_CSSON;
-  }
-}
-
-#ifdef STM32F051
-/**
-  * @brief  Selects the clock source to output on MCO pin (PA8).
-  * @note   PA8 should be configured in alternate function mode.
-  * @param  RCC_MCOSource: specifies the clock source to output.
-  *          This parameter can be one of the following values:
-  *            @arg RCC_MCOSource_NoClock: No clock selected.
-  *            @arg RCC_MCOSource_HSI14: HSI14 oscillator clock selected.
-  *            @arg RCC_MCOSource_LSI: LSI oscillator clock selected.
-  *            @arg RCC_MCOSource_LSE: LSE oscillator clock selected.
-  *            @arg RCC_MCOSource_SYSCLK: System clock selected.
-  *            @arg RCC_MCOSource_HSI: HSI oscillator clock selected.
-  *            @arg RCC_MCOSource_HSE: HSE oscillator clock selected.
-  *            @arg RCC_MCOSource_PLLCLK_Div2: PLL clock divided by 2 selected.
-  * @retval None
-  */
-void RCC_MCOConfig(uint8_t RCC_MCOSource)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_MCO_SOURCE(RCC_MCOSource));
-
-  /* Select MCO clock source and prescaler */
-  *(__IO uint8_t *) CFGR_BYTE3_ADDRESS =  RCC_MCOSource;
-}
-#else
-
-/**
-  * @brief  Selects the clock source to output on MCO pin (PA8) and the corresponding
-  *         prescsaler.
-  * @note   PA8 should be configured in alternate function mode.
-  * @param  RCC_MCOSource: specifies the clock source to output.
-  *          This parameter can be one of the following values:
-  *            @arg RCC_MCOSource_NoClock: No clock selected.
-  *            @arg RCC_MCOSource_HSI14: HSI14 oscillator clock selected.
-  *            @arg RCC_MCOSource_LSI: LSI oscillator clock selected.
-  *            @arg RCC_MCOSource_LSE: LSE oscillator clock selected.
-  *            @arg RCC_MCOSource_SYSCLK: System clock selected.
-  *            @arg RCC_MCOSource_HSI: HSI oscillator clock selected.
-  *            @arg RCC_MCOSource_HSE: HSE oscillator clock selected.
-  *            @arg RCC_MCOSource_PLLCLK_Div2: PLL clock divided by 2 selected.
-  *            @arg RCC_MCOSource_PLLCLK: PLL clock selected.
-  *            @arg RCC_MCOSource_HSI48: HSI48 clock selected.
-  * @param  RCC_MCOPrescaler: specifies the prescaler on MCO pin.
-  *          This parameter can be one of the following values:
-  *            @arg RCC_MCOPrescaler_1: MCO clock is divided by 1.
-  *            @arg RCC_MCOPrescaler_2: MCO clock is divided by 2.
-  *            @arg RCC_MCOPrescaler_4: MCO clock is divided by 4.
-  *            @arg RCC_MCOPrescaler_8: MCO clock is divided by 8.
-  *            @arg RCC_MCOPrescaler_16: MCO clock is divided by 16.
-  *            @arg RCC_MCOPrescaler_32: MCO clock is divided by 32.
-  *            @arg RCC_MCOPrescaler_64: MCO clock is divided by 64.
-  *            @arg RCC_MCOPrescaler_128: MCO clock is divided by 128.    
-  * @retval None
-  */
-void RCC_MCOConfig(uint8_t RCC_MCOSource, uint32_t RCC_MCOPrescaler)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_MCO_SOURCE(RCC_MCOSource));
-  assert_param(IS_RCC_MCO_PRESCALER(RCC_MCOPrescaler));
-    
-  /* Get CFGR value */  
-  tmpreg = RCC->CFGR;
-  /* Clear MCOPRE[2:0] bits */
-  tmpreg &= ~(RCC_CFGR_MCO_PRE | RCC_CFGR_MCO | RCC_CFGR_PLLNODIV);
-  /* Set the RCC_MCOSource and RCC_MCOPrescaler */
-  tmpreg |= (RCC_MCOPrescaler | ((uint32_t)RCC_MCOSource<<24));
-  /* Store the new value */
-  RCC->CFGR = tmpreg;
-}
-#endif /* STM32F072 */
-
-/**
-  * @}
-  */
-
-/** @defgroup RCC_Group2 System AHB and APB busses clocks configuration functions
- *  @brief   System, AHB and APB busses clocks configuration functions
- *
-@verbatim
- ===============================================================================
-     ##### System, AHB and APB busses clocks configuration functions #####
- ===============================================================================
-
-    [..] This section provide functions allowing to configure the System, AHB and 
-         APB busses clocks.
-         (#) Several clock sources can be used to drive the System clock (SYSCLK): HSI,
-             HSE and PLL.
-             The AHB clock (HCLK) is derived from System clock through configurable prescaler
-             and used to clock the CPU, memory and peripherals mapped on AHB bus (DMA and GPIO).
-             and APB (PCLK) clocks are derived from AHB clock through 
-             configurable prescalers and used to clock the peripherals mapped on these busses.
-             You can use "RCC_GetClocksFreq()" function to retrieve the frequencies of these clocks.
-
-         -@- All the peripheral clocks are derived from the System clock (SYSCLK) except:
-             (+@) The ADC clock which is derived from HSI14 or APB (APB divided by a
-                  programmable prescaler: 2 or 4).
-             (+@) The CEC clock which is derived from LSE or HSI divided by 244.
-             (+@) The I2C clock which is derived from HSI or system clock (SYSCLK).
-             (+@) The USART clock which is derived from HSI, system clock (SYSCLK), APB or LSE.
-             (+@) The RTC/LCD clock which is derived from the LSE, LSI or 2 MHz HSE_RTC (HSE
-                  divided by a programmable prescaler).
-                  The System clock (SYSCLK) frequency must be higher or equal to the RTC/LCD
-                  clock frequency.
-             (+@) IWDG clock which is always the LSI clock.
-       
-         (#) The maximum frequency of the SYSCLK, HCLK and PCLK is 48 MHz.
-             Depending on the maximum frequency, the FLASH wait states (WS) should be 
-             adapted accordingly:
-        +--------------------------------------------- +
-        |  Wait states  |   HCLK clock frequency (MHz) |
-        |---------------|------------------------------|
-        |0WS(1CPU cycle)|       0 < HCLK <= 24         |
-        |---------------|------------------------------|
-        |1WS(2CPU cycle)|       24 < HCLK <= 48        |
-        +----------------------------------------------+
-
-         (#) After reset, the System clock source is the HSI (8 MHz) with 0 WS and 
-             prefetch is disabled.
-  
-    [..] It is recommended to use the following software sequences to tune the number
-         of wait states needed to access the Flash memory with the CPU frequency (HCLK).
-         (+) Increasing the CPU frequency
-         (++) Program the Flash Prefetch buffer, using "FLASH_PrefetchBufferCmd(ENABLE)" 
-              function
-         (++) Check that Flash Prefetch buffer activation is taken into account by 
-              reading FLASH_ACR using the FLASH_GetPrefetchBufferStatus() function
-         (++) Program Flash WS to 1, using "FLASH_SetLatency(FLASH_Latency_1)" function
-         (++) Check that the new number of WS is taken into account by reading FLASH_ACR
-         (++) Modify the CPU clock source, using "RCC_SYSCLKConfig()" function
-         (++) If needed, modify the CPU clock prescaler by using "RCC_HCLKConfig()" function
-         (++) Check that the new CPU clock source is taken into account by reading 
-              the clock source status, using "RCC_GetSYSCLKSource()" function 
-         (+) Decreasing the CPU frequency
-         (++) Modify the CPU clock source, using "RCC_SYSCLKConfig()" function
-         (++) If needed, modify the CPU clock prescaler by using "RCC_HCLKConfig()" function
-         (++) Check that the new CPU clock source is taken into account by reading 
-              the clock source status, using "RCC_GetSYSCLKSource()" function
-         (++) Program the new number of WS, using "FLASH_SetLatency()" function
-         (++) Check that the new number of WS is taken into account by reading FLASH_ACR
-         (++) Disable the Flash Prefetch buffer using "FLASH_PrefetchBufferCmd(DISABLE)" 
-              function
-         (++) Check that Flash Prefetch buffer deactivation is taken into account by reading FLASH_ACR
-              using the FLASH_GetPrefetchBufferStatus() function.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the system clock (SYSCLK).
-  * @note   The HSI is used (enabled by hardware) as system clock source after
-  *         startup from Reset, wake-up from STOP and STANDBY mode, or in case
-  *         of failure of the HSE used directly or indirectly as system clock
-  *         (if the Clock Security System CSS is enabled).
-  * @note   A switch from one clock source to another occurs only if the target
-  *         clock source is ready (clock stable after startup delay or PLL locked). 
-  *         If a clock source which is not yet ready is selected, the switch will
-  *         occur when the clock source will be ready. 
-  *         You can use RCC_GetSYSCLKSource() function to know which clock is
-  *         currently used as system clock source.  
-  * @param  RCC_SYSCLKSource: specifies the clock source used as system clock source 
-  *          This parameter can be one of the following values:
-  *            @arg RCC_SYSCLKSource_HSI:    HSI selected as system clock source
-  *            @arg RCC_SYSCLKSource_HSE:    HSE selected as system clock source
-  *            @arg RCC_SYSCLKSource_PLLCLK: PLL selected as system clock source
-  *            @arg RCC_SYSCLKSource_HSI48:  HSI48 selected as system clock source, applicable only for STM32F072 devices  
-  * @retval None
-  */
-void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_SYSCLK_SOURCE(RCC_SYSCLKSource));
-  
-  tmpreg = RCC->CFGR;
-  
-  /* Clear SW[1:0] bits */
-  tmpreg &= ~RCC_CFGR_SW;
-  
-  /* Set SW[1:0] bits according to RCC_SYSCLKSource value */
-  tmpreg |= RCC_SYSCLKSource;
-  
-  /* Store the new value */
-  RCC->CFGR = tmpreg;
-}
-
-/**
-  * @brief  Returns the clock source used as system clock.
-  * @param  None
-  * @retval The clock source used as system clock. The returned value can be one 
-  *         of the following values:
-  *           - 0x00: HSI used as system clock
-  *           - 0x04: HSE used as system clock  
-  *           - 0x08: PLL used as system clock
-  *           - 0x0C: HSI48 used as system clock, applicable only for STM32F072 devices  
-  */
-uint8_t RCC_GetSYSCLKSource(void)
-{
-  return ((uint8_t)(RCC->CFGR & RCC_CFGR_SWS));
-}
-
-/**
-  * @brief  Configures the AHB clock (HCLK).
-  * @param  RCC_SYSCLK: defines the AHB clock divider. This clock is derived from 
-  *         the system clock (SYSCLK).
-  *          This parameter can be one of the following values:
-  *            @arg RCC_SYSCLK_Div1:   AHB clock = SYSCLK
-  *            @arg RCC_SYSCLK_Div2:   AHB clock = SYSCLK/2
-  *            @arg RCC_SYSCLK_Div4:   AHB clock = SYSCLK/4
-  *            @arg RCC_SYSCLK_Div8:   AHB clock = SYSCLK/8
-  *            @arg RCC_SYSCLK_Div16:  AHB clock = SYSCLK/16
-  *            @arg RCC_SYSCLK_Div64:  AHB clock = SYSCLK/64
-  *            @arg RCC_SYSCLK_Div128: AHB clock = SYSCLK/128
-  *            @arg RCC_SYSCLK_Div256: AHB clock = SYSCLK/256
-  *            @arg RCC_SYSCLK_Div512: AHB clock = SYSCLK/512
-  * @retval None
-  */
-void RCC_HCLKConfig(uint32_t RCC_SYSCLK)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_HCLK(RCC_SYSCLK));
-  
-  tmpreg = RCC->CFGR;
-  
-  /* Clear HPRE[3:0] bits */
-  tmpreg &= ~RCC_CFGR_HPRE;
-  
-  /* Set HPRE[3:0] bits according to RCC_SYSCLK value */
-  tmpreg |= RCC_SYSCLK;
-  
-  /* Store the new value */
-  RCC->CFGR = tmpreg;
-}
-
-/**
-  * @brief  Configures the APB clock (PCLK).
-  * @param  RCC_HCLK: defines the APB clock divider. This clock is derived from 
-  *         the AHB clock (HCLK).
-  *          This parameter can be one of the following values:
-  *            @arg RCC_HCLK_Div1: APB clock = HCLK
-  *            @arg RCC_HCLK_Div2: APB clock = HCLK/2
-  *            @arg RCC_HCLK_Div4: APB clock = HCLK/4
-  *            @arg RCC_HCLK_Div8: APB clock = HCLK/8
-  *            @arg RCC_HCLK_Div16: APB clock = HCLK/16
-  * @retval None
-  */
-void RCC_PCLKConfig(uint32_t RCC_HCLK)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_PCLK(RCC_HCLK));
-  
-  tmpreg = RCC->CFGR;
-  
-  /* Clear PPRE[2:0] bits */
-  tmpreg &= ~RCC_CFGR_PPRE;
-  
-  /* Set PPRE[2:0] bits according to RCC_HCLK value */
-  tmpreg |= RCC_HCLK;
-  
-  /* Store the new value */
-  RCC->CFGR = tmpreg;
-}
-
-/**
-  * @brief  Configures the ADC clock (ADCCLK).
-  * @note   This function is obsolete.
-  *         For proper ADC clock selection, refer to ADC_ClockModeConfig() in the ADC driver
-  * @param  RCC_ADCCLK: defines the ADC clock source. This clock is derived 
-  *         from the HSI14 or APB clock (PCLK).
-  *          This parameter can be one of the following values:
-  *             @arg RCC_ADCCLK_HSI14: ADC clock = HSI14 (14MHz)
-  *             @arg RCC_ADCCLK_PCLK_Div2: ADC clock = PCLK/2
-  *             @arg RCC_ADCCLK_PCLK_Div4: ADC clock = PCLK/4  
-  * @retval None
-  */
-void RCC_ADCCLKConfig(uint32_t RCC_ADCCLK)
-{ 
-  /* Check the parameters */
-  assert_param(IS_RCC_ADCCLK(RCC_ADCCLK));
-
-  /* Clear ADCPRE bit */
-  RCC->CFGR &= ~RCC_CFGR_ADCPRE;
-  /* Set ADCPRE bits according to RCC_PCLK value */
-  RCC->CFGR |= RCC_ADCCLK & 0xFFFF;
-
-  /* Clear ADCSW bit */
-  RCC->CFGR3 &= ~RCC_CFGR3_ADCSW; 
-  /* Set ADCSW bits according to RCC_ADCCLK value */
-  RCC->CFGR3 |= RCC_ADCCLK >> 16;  
-}
-
-/**
-  * @brief  Configures the CEC clock (CECCLK).
-  * @param  RCC_CECCLK: defines the CEC clock source. This clock is derived 
-  *         from the HSI or LSE clock.
-  *          This parameter can be one of the following values:
-  *             @arg RCC_CECCLK_HSI_Div244: CEC clock = HSI/244 (32768Hz)
-  *             @arg RCC_CECCLK_LSE: CEC clock = LSE
-  * @retval None
-  */
-void RCC_CECCLKConfig(uint32_t RCC_CECCLK)
-{ 
-  /* Check the parameters */
-  assert_param(IS_RCC_CECCLK(RCC_CECCLK));
-
-  /* Clear CECSW bit */
-  RCC->CFGR3 &= ~RCC_CFGR3_CECSW;
-  /* Set CECSW bits according to RCC_CECCLK value */
-  RCC->CFGR3 |= RCC_CECCLK;
-}
-
-/**
-  * @brief  Configures the I2C1 clock (I2C1CLK).
-  * @param  RCC_I2CCLK: defines the I2C1 clock source. This clock is derived 
-  *         from the HSI or System clock.
-  *          This parameter can be one of the following values:
-  *             @arg RCC_I2C1CLK_HSI: I2C1 clock = HSI
-  *             @arg RCC_I2C1CLK_SYSCLK: I2C1 clock = System Clock
-  * @retval None
-  */
-void RCC_I2CCLKConfig(uint32_t RCC_I2CCLK)
-{ 
-  /* Check the parameters */
-  assert_param(IS_RCC_I2CCLK(RCC_I2CCLK));
-
-  /* Clear I2CSW bit */
-  RCC->CFGR3 &= ~RCC_CFGR3_I2C1SW;
-  /* Set I2CSW bits according to RCC_I2CCLK value */
-  RCC->CFGR3 |= RCC_I2CCLK;
-}
-
-/**
-  * @brief  Configures the USART1 clock (USART1CLK).
-  * @param  RCC_USARTCLK: defines the USART clock source. This clock is derived 
-  *         from the HSI or System clock.
-  *          This parameter can be one of the following values:
-  *             @arg RCC_USART1CLK_PCLK: USART1 clock = APB Clock (PCLK)
-  *             @arg RCC_USART1CLK_SYSCLK: USART1 clock = System Clock
-  *             @arg RCC_USART1CLK_LSE: USART1 clock = LSE Clock
-  *             @arg RCC_USART1CLK_HSI: USART1 clock = HSI Clock
-  *             @arg RCC_USART2CLK_PCLK: USART2 clock = APB Clock (PCLK), applicable only for STM32F072 devices
-  *             @arg RCC_USART2CLK_SYSCLK: USART2 clock = System Clock, applicable only for STM32F072 devices
-  *             @arg RCC_USART2CLK_LSE: USART2 clock = LSE Clock, applicable only for STM32F072 devices
-  *             @arg RCC_USART2CLK_HSI: USART2 clock = HSI Clock, applicable only for STM32F072 devices  
-  * @retval None
-  */
-void RCC_USARTCLKConfig(uint32_t RCC_USARTCLK)
-{ 
-  uint32_t tmp = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_USARTCLK(RCC_USARTCLK));
-
-  /* Get USART index */
-  tmp = (RCC_USARTCLK >> 28);
-
-  /* Clear USARTSW[1:0] bit */
-  if (tmp == (uint32_t)0x00000001)
-  {
-    /* Clear USART1SW[1:0] bit */  
-    RCC->CFGR3 &= ~RCC_CFGR3_USART1SW;
-  }
-  else
-  {
-    /* Clear USART2SW[1:0] bit */
-    RCC->CFGR3 &= ~RCC_CFGR3_USART2SW;
-  }
-
-  /* Set USARTxSW bits according to RCC_USARTCLK value */
-  RCC->CFGR3 |= RCC_USARTCLK;
-}
-
-/**
-  * @brief  Configures the USB clock (USBCLK).
-  *         This function is only applicable for STM32F072 devices.  
-  * @param  RCC_USBCLK: defines the USB clock source. This clock is derived 
-  *         from the HSI48 or system clock.
-  *          This parameter can be one of the following values:
-  *             @arg RCC_USBCLK_HSI48: USB clock = HSI48
-  *             @arg RCC_USBCLK_PLLCLK: USB clock = PLL clock
-  * @retval None
-  */
-void RCC_USBCLKConfig(uint32_t RCC_USBCLK)
-{ 
-  /* Check the parameters */
-  assert_param(IS_RCC_USBCLK(RCC_USBCLK));
-
-  /* Clear USBSW bit */
-  RCC->CFGR3 &= ~RCC_CFGR3_USBSW;
-  /* Set USBSW bits according to RCC_USBCLK value */
-  RCC->CFGR3 |= RCC_USBCLK;
-}
-
-/**
-  * @brief  Returns the frequencies of the System, AHB and APB busses clocks.
-  * @note    The frequency returned by this function is not the real frequency
-  *           in the chip. It is calculated based on the predefined constant and
-  *           the source selected by RCC_SYSCLKConfig():
-  *                                              
-  * @note     If SYSCLK source is HSI, function returns constant HSI_VALUE(*)
-  *                                              
-  * @note     If SYSCLK source is HSE, function returns constant HSE_VALUE(**)
-  *                          
-  * @note     If SYSCLK source is PLL, function returns constant HSE_VALUE(**) 
-  *             or HSI_VALUE(*) multiplied by the PLL factors.
-  *               
-  * @note     If SYSCLK source is HSI48, function returns constant HSI48_VALUE(***) 
-  *             
-  * @note     (*) HSI_VALUE is a constant defined in stm32f0xx.h file (default value
-  *               8 MHz) but the real value may vary depending on the variations
-  *               in voltage and temperature, refer to RCC_AdjustHSICalibrationValue().   
-  *    
-  * @note     (**) HSE_VALUE is a constant defined in stm32f0xx.h file (default value
-  *                8 MHz), user has to ensure that HSE_VALUE is same as the real
-  *                frequency of the crystal used. Otherwise, this function may
-  *                return wrong result.
-  *
-  * @note     (***) HSI48_VALUE is a constant defined in stm32f0xx.h file (default value
-  *                 48 MHz) but the real value may vary depending on the variations
-  *                 in voltage and temperature.
-  *                                   
-  * @note   The result of this function could be not correct when using fractional
-  *         value for HSE crystal.   
-  *             
-  * @param  RCC_Clocks: pointer to a RCC_ClocksTypeDef structure which will hold 
-  *         the clocks frequencies. 
-  *     
-  * @note   This function can be used by the user application to compute the 
-  *         baudrate for the communication peripherals or configure other parameters.
-  * @note   Each time SYSCLK, HCLK and/or PCLK clock changes, this function
-  *         must be called to update the structure's field. Otherwise, any
-  *         configuration based on this function will be incorrect.
-  *    
-  * @retval None
-  */
-void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
-{
-  uint32_t tmp = 0, pllmull = 0, pllsource = 0, prediv1factor = 0, presc = 0, pllclk = 0;
-
-  /* Get SYSCLK source -------------------------------------------------------*/
-  tmp = RCC->CFGR & RCC_CFGR_SWS;
-  
-  switch (tmp)
-  {
-    case 0x00:  /* HSI used as system clock */
-      RCC_Clocks->SYSCLK_Frequency = HSI_VALUE;
-      break;
-    case 0x04:  /* HSE used as system clock */
-      RCC_Clocks->SYSCLK_Frequency = HSE_VALUE;
-      break;
-    case 0x08:  /* PLL used as system clock */
-      /* Get PLL clock source and multiplication factor ----------------------*/
-      pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
-      pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
-      pllmull = ( pllmull >> 18) + 2;
-      
-      if (pllsource == 0x00)
-      {
-        /* HSI oscillator clock divided by 2 selected as PLL clock entry */
-        pllclk = (HSI_VALUE >> 1) * pllmull;
-      }
-      else
-      {
-        prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1;
-        /* HSE oscillator clock selected as PREDIV1 clock entry */
-        pllclk = (HSE_VALUE / prediv1factor) * pllmull; 
-      }
-      RCC_Clocks->SYSCLK_Frequency = pllclk;      
-      break;
-    case 0x0C:  /* HSI48 used as system clock */
-      RCC_Clocks->SYSCLK_Frequency = HSI48_VALUE;
-      break;
-    default: /* HSI used as system clock */
-      RCC_Clocks->SYSCLK_Frequency = HSI_VALUE;
-      break;
-  }
-  /* Compute HCLK, PCLK clocks frequencies -----------------------------------*/
-  /* Get HCLK prescaler */
-  tmp = RCC->CFGR & RCC_CFGR_HPRE;
-  tmp = tmp >> 4;
-  presc = APBAHBPrescTable[tmp]; 
-  /* HCLK clock frequency */
-  RCC_Clocks->HCLK_Frequency = RCC_Clocks->SYSCLK_Frequency >> presc;
-
-  /* Get PCLK prescaler */
-  tmp = RCC->CFGR & RCC_CFGR_PPRE;
-  tmp = tmp >> 8;
-  presc = APBAHBPrescTable[tmp];
-  /* PCLK clock frequency */
-  RCC_Clocks->PCLK_Frequency = RCC_Clocks->HCLK_Frequency >> presc;
-
-  /* ADCCLK clock frequency */
-  if((RCC->CFGR3 & RCC_CFGR3_ADCSW) != RCC_CFGR3_ADCSW)
-  {
-    /* ADC Clock is HSI14 Osc. */
-    RCC_Clocks->ADCCLK_Frequency = HSI14_VALUE;
-  }
-  else
-  {
-    if((RCC->CFGR & RCC_CFGR_ADCPRE) != RCC_CFGR_ADCPRE)
-    {
-      /* ADC Clock is derived from PCLK/2 */
-      RCC_Clocks->ADCCLK_Frequency = RCC_Clocks->PCLK_Frequency >> 1;
-    }
-    else
-    {
-      /* ADC Clock is derived from PCLK/4 */
-      RCC_Clocks->ADCCLK_Frequency = RCC_Clocks->PCLK_Frequency >> 2;
-    }
-    
-  }
-
-  /* CECCLK clock frequency */
-  if((RCC->CFGR3 & RCC_CFGR3_CECSW) != RCC_CFGR3_CECSW)
-  {
-    /* CEC Clock is HSI/244 */
-    RCC_Clocks->CECCLK_Frequency = HSI_VALUE / 244;
-  }
-  else
-  {
-    /* CECC Clock is LSE Osc. */
-    RCC_Clocks->CECCLK_Frequency = LSE_VALUE;
-  }
-
-  /* I2C1CLK clock frequency */
-  if((RCC->CFGR3 & RCC_CFGR3_I2C1SW) != RCC_CFGR3_I2C1SW)
-  {
-    /* I2C1 Clock is HSI Osc. */
-    RCC_Clocks->I2C1CLK_Frequency = HSI_VALUE;
-  }
-  else
-  {
-    /* I2C1 Clock is System Clock */
-    RCC_Clocks->I2C1CLK_Frequency = RCC_Clocks->SYSCLK_Frequency;
-  }
-
-  /* USART1CLK clock frequency */
-  if((RCC->CFGR3 & RCC_CFGR3_USART1SW) == 0x0)
-  {
-    /* USART1 Clock is PCLK */
-    RCC_Clocks->USART1CLK_Frequency = RCC_Clocks->PCLK_Frequency;
-  }
-  else if((RCC->CFGR3 & RCC_CFGR3_USART1SW) == RCC_CFGR3_USART1SW_0)
-  {
-    /* USART1 Clock is System Clock */
-    RCC_Clocks->USART1CLK_Frequency = RCC_Clocks->SYSCLK_Frequency;
-  }
-  else if((RCC->CFGR3 & RCC_CFGR3_USART1SW) == RCC_CFGR3_USART1SW_1)
-  {
-    /* USART1 Clock is LSE Osc. */
-    RCC_Clocks->USART1CLK_Frequency = LSE_VALUE;
-  }
-  else if((RCC->CFGR3 & RCC_CFGR3_USART1SW) == RCC_CFGR3_USART1SW)
-  {
-    /* USART1 Clock is HSI Osc. */
-    RCC_Clocks->USART1CLK_Frequency = HSI_VALUE;
-  }
-  
-  /* USART2CLK clock frequency */
-  if((RCC->CFGR3 & RCC_CFGR3_USART2SW) == 0x0)
-  {
-    /* USART Clock is PCLK */
-    RCC_Clocks->USART2CLK_Frequency = RCC_Clocks->PCLK_Frequency;
-  }
-  else if((RCC->CFGR3 & RCC_CFGR3_USART2SW) == RCC_CFGR3_USART2SW_0)
-  {
-    /* USART Clock is System Clock */
-    RCC_Clocks->USART2CLK_Frequency = RCC_Clocks->SYSCLK_Frequency;
-  }
-  else if((RCC->CFGR3 & RCC_CFGR3_USART2SW) == RCC_CFGR3_USART2SW_1)
-  {
-    /* USART Clock is LSE Osc. */
-    RCC_Clocks->USART2CLK_Frequency = LSE_VALUE;
-  }
-  else if((RCC->CFGR3 & RCC_CFGR3_USART2SW) == RCC_CFGR3_USART2SW)
-  {
-    /* USART Clock is HSI Osc. */
-    RCC_Clocks->USART2CLK_Frequency = HSI_VALUE;
-  }
-  
-  /* USBCLK clock frequency */
-  if((RCC->CFGR3 & RCC_CFGR3_USBSW) != RCC_CFGR3_USBSW)
-  {
-    /* USB Clock is HSI48 */
-    RCC_Clocks->USBCLK_Frequency = HSI48_VALUE;
-  }
-  else
-  {
-    /* USB Clock is PLL clock */
-    RCC_Clocks->USBCLK_Frequency = pllclk;
-  }   
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RCC_Group3 Peripheral clocks configuration functions
- *  @brief   Peripheral clocks configuration functions 
- *
-@verbatim
- ===============================================================================
-             #####Peripheral clocks configuration functions #####
- ===============================================================================  
-
-    [..] This section provide functions allowing to configure the Peripheral clocks. 
-         (#) The RTC clock which is derived from the LSE, LSI or  HSE_Div32 (HSE
-             divided by 32).
-         (#) After restart from Reset or wakeup from STANDBY, all peripherals are off
-             except internal SRAM, Flash and SWD. Before to start using a peripheral you
-             have to enable its interface clock. You can do this using RCC_AHBPeriphClockCmd(),
-             RCC_APB2PeriphClockCmd() and RCC_APB1PeriphClockCmd() functions.
-         (#) To reset the peripherals configuration (to the default state after device reset)
-             you can use RCC_AHBPeriphResetCmd(), RCC_APB2PeriphResetCmd() and 
-             RCC_APB1PeriphResetCmd() functions.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the RTC clock (RTCCLK).
-  * @note   As the RTC clock configuration bits are in the Backup domain and write
-  *         access is denied to this domain after reset, you have to enable write
-  *         access using PWR_BackupAccessCmd(ENABLE) function before to configure
-  *         the RTC clock source (to be done once after reset).    
-  * @note   Once the RTC clock is configured it can't be changed unless the RTC
-  *         is reset using RCC_BackupResetCmd function, or by a Power On Reset (POR)
-  *             
-  * @param  RCC_RTCCLKSource: specifies the RTC clock source.
-  *          This parameter can be one of the following values:
-  *            @arg RCC_RTCCLKSource_LSE: LSE selected as RTC clock
-  *            @arg RCC_RTCCLKSource_LSI: LSI selected as RTC clock
-  *            @arg RCC_RTCCLKSource_HSE_Div32: HSE divided by 32 selected as RTC clock
-  *       
-  * @note   If the LSE or LSI is used as RTC clock source, the RTC continues to
-  *         work in STOP and STANDBY modes, and can be used as wakeup source.
-  *         However, when the HSE clock is used as RTC clock source, the RTC
-  *         cannot be used in STOP and STANDBY modes.
-  *             
-  * @note   The maximum input clock frequency for RTC is 2MHz (when using HSE as
-  *         RTC clock source).
-  *                          
-  * @retval None
-  */
-void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_RTCCLK_SOURCE(RCC_RTCCLKSource));
-  
-  /* Select the RTC clock source */
-  RCC->BDCR |= RCC_RTCCLKSource;
-}
-
-/**
-  * @brief  Enables or disables the RTC clock.
-  * @note   This function must be used only after the RTC clock source was selected
-  *         using the RCC_RTCCLKConfig function.
-  * @param  NewState: new state of the RTC clock.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_RTCCLKCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->BDCR |= RCC_BDCR_RTCEN;
-  }
-  else
-  {
-    RCC->BDCR &= ~RCC_BDCR_RTCEN;
-  }
-}
-
-/**
-  * @brief  Forces or releases the Backup domain reset.
-  * @note   This function resets the RTC peripheral (including the backup registers)
-  *         and the RTC clock source selection in RCC_BDCR register.
-  * @param  NewState: new state of the Backup domain reset.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_BackupResetCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->BDCR |= RCC_BDCR_BDRST;
-  }
-  else
-  {
-    RCC->BDCR &= ~RCC_BDCR_BDRST;
-  }
-}
-
-/**
-  * @brief  Enables or disables the AHB peripheral clock.
-  * @note   After reset, the peripheral clock (used for registers read/write access)
-  *         is disabled and the application software has to enable this clock before 
-  *         using it.    
-  * @param  RCC_AHBPeriph: specifies the AHB peripheral to gates its clock.
-  *          This parameter can be any combination of the following values:
-  *             @arg RCC_AHBPeriph_GPIOA: GPIOA clock
-  *             @arg RCC_AHBPeriph_GPIOB: GPIOB clock
-  *             @arg RCC_AHBPeriph_GPIOC: GPIOC clock
-  *             @arg RCC_AHBPeriph_GPIOD: GPIOD clock
-  *             @arg RCC_AHBPeriph_GPIOE: GPIOE clock, applicable only for STM32F072 devices  
-  *             @arg RCC_AHBPeriph_GPIOF: GPIOF clock
-  *             @arg RCC_AHBPeriph_TS:    TS clock
-  *             @arg RCC_AHBPeriph_CRC:   CRC clock
-  *             @arg RCC_AHBPeriph_FLITF: (has effect only when the Flash memory is in power down mode)  
-  *             @arg RCC_AHBPeriph_SRAM:  SRAM clock
-  *             @arg RCC_AHBPeriph_DMA1:  DMA1 clock
-  * @param  NewState: new state of the specified peripheral clock.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_AHB_PERIPH(RCC_AHBPeriph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    RCC->AHBENR |= RCC_AHBPeriph;
-  }
-  else
-  {
-    RCC->AHBENR &= ~RCC_AHBPeriph;
-  }
-}
-
-/**
-  * @brief  Enables or disables the High Speed APB (APB2) peripheral clock.
-  * @note   After reset, the peripheral clock (used for registers read/write access)
-  *         is disabled and the application software has to enable this clock before 
-  *         using it.
-  * @param  RCC_APB2Periph: specifies the APB2 peripheral to gates its clock.
-  *          This parameter can be any combination of the following values:
-  *             @arg RCC_APB2Periph_SYSCFG: SYSCFG clock
-  *             @arg RCC_APB2Periph_ADC1:   ADC1 clock
-  *             @arg RCC_APB2Periph_TIM1:   TIM1 clock
-  *             @arg RCC_APB2Periph_SPI1:   SPI1 clock
-  *             @arg RCC_APB2Periph_USART1: USART1 clock
-  *             @arg RCC_APB2Periph_TIM15:  TIM15 clock
-  *             @arg RCC_APB2Periph_TIM16:  TIM16 clock
-  *             @arg RCC_APB2Periph_TIM17:  TIM17 clock
-  *             @arg RCC_APB2Periph_DBGMCU: DBGMCU clock
-  * @param  NewState: new state of the specified peripheral clock.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    RCC->APB2ENR |= RCC_APB2Periph;
-  }
-  else
-  {
-    RCC->APB2ENR &= ~RCC_APB2Periph;
-  }
-}
-
-/**
-  * @brief  Enables or disables the Low Speed APB (APB1) peripheral clock.
-  * @note   After reset, the peripheral clock (used for registers read/write access)
-  *         is disabled and the application software has to enable this clock before 
-  *         using it.
-  * @param  RCC_APB1Periph: specifies the APB1 peripheral to gates its clock.
-  *          This parameter can be any combination of the following values:
-  *           @arg RCC_APB1Periph_TIM2:   TIM2 clock, applicable only for STM32F051 and STM32F072 devices
-  *           @arg RCC_APB1Periph_TIM3:   TIM3 clock
-  *           @arg RCC_APB1Periph_TIM6:   TIM6 clock
-  *           @arg RCC_APB1Periph_TIM7:   TIM7 clock, applicable only for STM32F072 devices   
-  *           @arg RCC_APB1Periph_TIM14:  TIM14 clock
-  *           @arg RCC_APB1Periph_WWDG:   WWDG clock
-  *           @arg RCC_APB1Periph_SPI2:   SPI2 clock
-  *           @arg RCC_APB1Periph_USART2: USART2 clock
-  *           @arg RCC_APB1Periph_USART3: USART3 clock, applicable only for STM32F072 devices 
-  *           @arg RCC_APB1Periph_USART4: USART4 clock, applicable only for STM32F072 devices     
-  *           @arg RCC_APB1Periph_I2C1:   I2C1 clock
-  *           @arg RCC_APB1Periph_I2C2:   I2C2 clock
-  *           @arg RCC_APB1Periph_USB:    USB clock, applicable only for STM32F042 and STM32F072 devices 
-  *           @arg RCC_APB1Periph_CAN:    CAN clock, applicable only for STM32F042 and STM32F072 devices 
-  *           @arg RCC_APB1Periph_CRS:    CRS clock , applicable only for STM32F042 and STM32F072 devices      
-  *           @arg RCC_APB1Periph_PWR:    PWR clock
-  *           @arg RCC_APB1Periph_DAC:    DAC clock, applicable only for STM32F051 and STM32F072 devices 
-  *           @arg RCC_APB1Periph_CEC:    CEC clock, applicable only for STM32F051, STM32F042 and STM32F072 devices                               
-  * @param  NewState: new state of the specified peripheral clock.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    RCC->APB1ENR |= RCC_APB1Periph;
-  }
-  else
-  {
-    RCC->APB1ENR &= ~RCC_APB1Periph;
-  }
-}
-
-/**
-  * @brief  Forces or releases AHB peripheral reset.
-  * @param  RCC_AHBPeriph: specifies the AHB peripheral to reset.
-  *          This parameter can be any combination of the following values:
-  *             @arg RCC_AHBPeriph_GPIOA: GPIOA clock
-  *             @arg RCC_AHBPeriph_GPIOB: GPIOB clock
-  *             @arg RCC_AHBPeriph_GPIOC: GPIOC clock
-  *             @arg RCC_AHBPeriph_GPIOD: GPIOD clock
-  *             @arg RCC_AHBPeriph_GPIOE: GPIOE clock, applicable only for STM32F072 devices  
-  *             @arg RCC_AHBPeriph_GPIOF: GPIOF clock
-  *             @arg RCC_AHBPeriph_TS:    TS clock
-  * @param  NewState: new state of the specified peripheral reset.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_AHB_RST_PERIPH(RCC_AHBPeriph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    RCC->AHBRSTR |= RCC_AHBPeriph;
-  }
-  else
-  {
-    RCC->AHBRSTR &= ~RCC_AHBPeriph;
-  }
-}
-
-/**
-  * @brief  Forces or releases High Speed APB (APB2) peripheral reset.
-  * @param  RCC_APB2Periph: specifies the APB2 peripheral to reset.
-  *          This parameter can be any combination of the following values:
-  *             @arg RCC_APB2Periph_SYSCFG: SYSCFG clock
-  *             @arg RCC_APB2Periph_ADC1:   ADC1 clock
-  *             @arg RCC_APB2Periph_TIM1:   TIM1 clock
-  *             @arg RCC_APB2Periph_SPI1:   SPI1 clock
-  *             @arg RCC_APB2Periph_USART1: USART1 clock
-  *             @arg RCC_APB2Periph_TIM15:  TIM15 clock
-  *             @arg RCC_APB2Periph_TIM16:  TIM16 clock
-  *             @arg RCC_APB2Periph_TIM17:  TIM17 clock
-  *             @arg RCC_APB2Periph_DBGMCU: DBGMCU clock
-  * @param  NewState: new state of the specified peripheral reset.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    RCC->APB2RSTR |= RCC_APB2Periph;
-  }
-  else
-  {
-    RCC->APB2RSTR &= ~RCC_APB2Periph;
-  }
-}
-
-/**
-  * @brief  Forces or releases Low Speed APB (APB1) peripheral reset.
-  * @param  RCC_APB1Periph: specifies the APB1 peripheral to reset.
-  *          This parameter can be any combination of the following values:
-  *           @arg RCC_APB1Periph_TIM2:   TIM2 clock, applicable only for STM32F051 and STM32F072 devices
-  *           @arg RCC_APB1Periph_TIM3:   TIM3 clock
-  *           @arg RCC_APB1Periph_TIM6:   TIM6 clock
-  *           @arg RCC_APB1Periph_TIM7:   TIM7 clock, applicable only for STM32F072 devices  
-  *           @arg RCC_APB1Periph_TIM14:  TIM14 clock
-  *           @arg RCC_APB1Periph_WWDG:   WWDG clock
-  *           @arg RCC_APB1Periph_SPI2:   SPI2 clock
-  *           @arg RCC_APB1Periph_USART2: USART2 clock
-  *           @arg RCC_APB1Periph_USART3: USART3 clock
-  *           @arg RCC_APB1Periph_USART4: USART4 clock    
-  *           @arg RCC_APB1Periph_I2C1:   I2C1 clock
-  *           @arg RCC_APB1Periph_I2C2:   I2C2 clock
-  *           @arg RCC_APB1Periph_USB:    USB clock, applicable only for STM32F072 devices
-  *           @arg RCC_APB1Periph_CAN:    CAN clock, applicable only for STM32F072 devices
-  *           @arg RCC_APB1Periph_CRS:    CRS clock, applicable only for STM32F072 devices      
-  *           @arg RCC_APB1Periph_PWR:    PWR clock
-  *           @arg RCC_APB1Periph_DAC:    DAC clock, applicable only for STM32F051 and STM32F072 devices
-  *           @arg RCC_APB1Periph_CEC:    CEC clock, applicable only for STM32F051 and STM32F072 devices  
-  * @param  NewState: new state of the specified peripheral clock.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    RCC->APB1RSTR |= RCC_APB1Periph;
-  }
-  else
-  {
-    RCC->APB1RSTR &= ~RCC_APB1Periph;
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RCC_Group4 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions 
- *
-@verbatim
- ===============================================================================
-             ##### Interrupts and flags management functions #####
- ===============================================================================
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified RCC interrupts.
-  * @note   The CSS interrupt doesn't have an enable bit; once the CSS is enabled
-  *         and if the HSE clock fails, the CSS interrupt occurs and an NMI is
-  *         automatically generated. The NMI will be executed indefinitely, and 
-  *         since NMI has higher priority than any other IRQ (and main program)
-  *         the application will be stacked in the NMI ISR unless the CSS interrupt
-  *         pending bit is cleared.
-  * @param  RCC_IT: specifies the RCC interrupt sources to be enabled or disabled.
-  *          This parameter can be any combination of the following values:
-  *              @arg RCC_IT_LSIRDY: LSI ready interrupt
-  *              @arg RCC_IT_LSERDY: LSE ready interrupt
-  *              @arg RCC_IT_HSIRDY: HSI ready interrupt
-  *              @arg RCC_IT_HSERDY: HSE ready interrupt
-  *              @arg RCC_IT_PLLRDY: PLL ready interrupt
-  *              @arg RCC_IT_HSI14RDY: HSI14 ready interrupt
-  *              @arg RCC_IT_HSI48RDY: HSI48 ready interrupt, applicable only for STM32F072 devices  
-  * @param  NewState: new state of the specified RCC interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_IT(RCC_IT));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Perform Byte access to RCC_CIR[13:8] bits to enable the selected interrupts */
-    *(__IO uint8_t *) CIR_BYTE1_ADDRESS |= RCC_IT;
-  }
-  else
-  {
-    /* Perform Byte access to RCC_CIR[13:8] bits to disable the selected interrupts */
-    *(__IO uint8_t *) CIR_BYTE1_ADDRESS &= (uint8_t)~RCC_IT;
-  }
-}
-
-/**
-  * @brief  Checks whether the specified RCC flag is set or not.
-  * @param  RCC_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *             @arg RCC_FLAG_HSIRDY: HSI oscillator clock ready  
-  *             @arg RCC_FLAG_HSERDY: HSE oscillator clock ready
-  *             @arg RCC_FLAG_PLLRDY: PLL clock ready
-  *             @arg RCC_FLAG_LSERDY: LSE oscillator clock ready
-  *             @arg RCC_FLAG_LSIRDY: LSI oscillator clock ready
-  *             @arg RCC_FLAG_OBLRST: Option Byte Loader (OBL) reset 
-  *             @arg RCC_FLAG_PINRST: Pin reset
-  *             @arg RCC_FLAG_V18PWRRSTF:  V1.8 power domain reset  
-  *             @arg RCC_FLAG_PORRST: POR/PDR reset
-  *             @arg RCC_FLAG_SFTRST: Software reset
-  *             @arg RCC_FLAG_IWDGRST: Independent Watchdog reset
-  *             @arg RCC_FLAG_WWDGRST: Window Watchdog reset
-  *             @arg RCC_FLAG_LPWRRST: Low Power reset
-  *             @arg RCC_FLAG_HSI14RDY: HSI14 oscillator clock ready
-  *             @arg RCC_FLAG_HSI48RDY: HSI48 oscillator clock ready, applicable only for STM32F072 devices    
-  * @retval The new state of RCC_FLAG (SET or RESET).
-  */
-FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG)
-{
-  uint32_t tmp = 0;
-  uint32_t statusreg = 0;
-  FlagStatus bitstatus = RESET;
-
-  /* Check the parameters */
-  assert_param(IS_RCC_FLAG(RCC_FLAG));
-
-  /* Get the RCC register index */
-  tmp = RCC_FLAG >> 5;
-
-  if (tmp == 0)               /* The flag to check is in CR register */
-  {
-    statusreg = RCC->CR;
-  }
-  else if (tmp == 1)          /* The flag to check is in BDCR register */
-  {
-    statusreg = RCC->BDCR;
-  }
-  else if (tmp == 2)          /* The flag to check is in CSR register */
-  {
-    statusreg = RCC->CSR;
-  }
-  else                        /* The flag to check is in CR2 register */
-  {
-    statusreg = RCC->CR2;
-  }    
-
-  /* Get the flag position */
-  tmp = RCC_FLAG & FLAG_MASK;
-
-  if ((statusreg & ((uint32_t)1 << tmp)) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  /* Return the flag status */
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the RCC reset flags.
-  *         The reset flags are: RCC_FLAG_OBLRST, RCC_FLAG_PINRST, RCC_FLAG_V18PWRRSTF,
-  *         RCC_FLAG_PORRST, RCC_FLAG_SFTRST, RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST,
-  *         RCC_FLAG_LPWRRST.
-  * @param  None
-  * @retval None
-  */
-void RCC_ClearFlag(void)
-{
-  /* Set RMVF bit to clear the reset flags */
-  RCC->CSR |= RCC_CSR_RMVF;
-}
-
-/**
-  * @brief  Checks whether the specified RCC interrupt has occurred or not.
-  * @param  RCC_IT: specifies the RCC interrupt source to check.
-  *          This parameter can be one of the following values:
-  *             @arg RCC_IT_LSIRDY: LSI ready interrupt
-  *             @arg RCC_IT_LSERDY: LSE ready interrupt
-  *             @arg RCC_IT_HSIRDY: HSI ready interrupt
-  *             @arg RCC_IT_HSERDY: HSE ready interrupt
-  *             @arg RCC_IT_PLLRDY: PLL ready interrupt
-  *             @arg RCC_IT_HSI14RDY: HSI14 ready interrupt
-  *             @arg RCC_IT_HSI48RDY: HSI48 ready interrupt, applicable only for STM32F072 devices    
-  *             @arg RCC_IT_CSS: Clock Security System interrupt
-  * @retval The new state of RCC_IT (SET or RESET).
-  */
-ITStatus RCC_GetITStatus(uint8_t RCC_IT)
-{
-  ITStatus bitstatus = RESET;
-  
-  /* Check the parameters */
-  assert_param(IS_RCC_GET_IT(RCC_IT));
-  
-  /* Check the status of the specified RCC interrupt */
-  if ((RCC->CIR & RCC_IT) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  /* Return the RCC_IT status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the RCC's interrupt pending bits.
-  * @param  RCC_IT: specifies the interrupt pending bit to clear.
-  *          This parameter can be any combination of the following values:
-  *             @arg RCC_IT_LSIRDY: LSI ready interrupt
-  *             @arg RCC_IT_LSERDY: LSE ready interrupt
-  *             @arg RCC_IT_HSIRDY: HSI ready interrupt
-  *             @arg RCC_IT_HSERDY: HSE ready interrupt
-  *             @arg RCC_IT_PLLRDY: PLL ready interrupt
-  *             @arg RCC_IT_HSI48RDY: HSI48 ready interrupt, applicable only for STM32F072 devices 
-  *             @arg RCC_IT_HSI14RDY: HSI14 ready interrupt
-  *             @arg RCC_IT_CSS: Clock Security System interrupt
-  * @retval None
-  */
-void RCC_ClearITPendingBit(uint8_t RCC_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_RCC_CLEAR_IT(RCC_IT));
-  
-  /* Perform Byte access to RCC_CIR[23:16] bits to clear the selected interrupt
-     pending bits */
-  *(__IO uint8_t *) CIR_BYTE2_ADDRESS = RCC_IT;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rtc.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rtc.c
deleted file mode 100644
index 58b9978..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rtc.c	
+++ /dev/null
@@ -1,2518 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_rtc.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Real-Time Clock (RTC) peripheral:
-  *           + Initialization
-  *           + Calendar (Time and Date) configuration
-  *           + Alarms (Alarm A) configuration
-  *           + Daylight Saving configuration
-  *           + Output pin Configuration
-  *           + Digital Calibration configuration  
-  *           + TimeStamp configuration
-  *           + Tampers configuration
-  *           + Backup Data Registers configuration
-  *           + Output Type Config configuration
-  *           + Shift control synchronisation  
-  *           + Interrupts and flags management
-  *
- @verbatim
- ===============================================================================
-                    ##### Backup Domain Operating Condition #####
- ===============================================================================
-    [..] The real-time clock (RTC) and the RTC backup registers can be powered
-         from the VBAT voltage when the main VDD supply is powered off.
-         To retain the content of the RTC backup registers and supply the RTC 
-         when VDD is turned off, VBAT pin can be connected to an optional
-         standby voltage supplied by a battery or by another source.
-  
-    [..] To allow the RTC to operate even when the main digital supply (VDD) 
-         is turned off, the VBAT pin powers the following blocks:
-           (#) The RTC
-           (#) The LSE oscillator
-           (#) PC13 to PC15 I/Os I/Os (when available)
-  
-    [..] When the backup domain is supplied by VDD (analog switch connected 
-         to VDD), the following functions are available:
-           (#) PC14 and PC15 can be used as either GPIO or LSE pins
-           (#) PC13 can be used as a GPIO or as the RTC_AF1 pin
-  
-    [..] When the backup domain is supplied by VBAT (analog switch connected 
-         to VBAT because VDD is not present), the following functions are available:
-           (#) PC14 and PC15 can be used as LSE pins only
-           (#) PC13 can be used as the RTC_AF1 pin 
-  
-                     ##### Backup Domain Reset #####
- ===============================================================================
-    [..] The backup domain reset sets all RTC registers and the RCC_BDCR 
-         register to their reset values. 
-         A backup domain reset is generated when one of the following events
-         occurs:
-           (#) Software reset, triggered by setting the BDRST bit in the 
-               RCC Backup domain control register (RCC_BDCR). You can use the
-               RCC_BackupResetCmd().
-           (#) VDD or VBAT power on, if both supplies have previously been
-               powered off.
-  
-                     ##### Backup Domain Access #####
- ===============================================================================
-    [..] After reset, the backup domain (RTC registers and RTC backup data 
-         registers) is protected against possible unwanted write accesses. 
-    [..] To enable access to the Backup Domain and RTC registers, proceed as follows:
-         (#) Enable the Power Controller (PWR) APB1 interface clock using the
-             RCC_APB1PeriphClockCmd() function.
-         (#) Enable access to Backup domain using the PWR_BackupAccessCmd() function.
-         (#) Select the RTC clock source using the RCC_RTCCLKConfig() function.
-         (#) Enable RTC Clock using the RCC_RTCCLKCmd() function.
-                                                                                           
-  
-                     ##### How to use this driver #####
- ===============================================================================
-    [..]
-        (+) Enable the backup domain access (see description in the section above)
-        (+) Configure the RTC Prescaler (Asynchronous and Synchronous) and
-            RTC hour format using the RTC_Init() function.
-  
- ***Time and Date configuration ***
- ==================================
-     [..]
-        (+) To configure the RTC Calendar (Time and Date) use the RTC_SetTime()
-            and RTC_SetDate() functions.
-        (+) To read the RTC Calendar, use the RTC_GetTime() and RTC_GetDate()
-            functions.
-        (+) To read the RTC subsecond, use the RTC_GetSubSecond() function.
-        (+) Use the RTC_DayLightSavingConfig() function to add or sub one
-            hour to the RTC Calendar.
-  
- ***Alarm configuration ***
- ========================== 
-     [..]  
-        (+) To configure the RTC Alarm use the RTC_SetAlarm() function.
-        (+) Enable the selected RTC Alarm using the RTC_AlarmCmd() function  
-        (+) To read the RTC Alarm, use the RTC_GetAlarm() function.
-        (+) To read the RTC alarm SubSecond, use the RTC_GetAlarmSubSecond() function.
-
- ***RTC Wakeup configuration***
- ========================== 
-    [..]  
-        (+) Configure the RTC Wakeup Clock source use the RTC_WakeUpClockConfig()
-            function.
-        (+) Configure the RTC WakeUp Counter using the RTC_SetWakeUpCounter() 
-            function  
-        (+) Enable the RTC WakeUp using the RTC_WakeUpCmd() function  
-        (+) To read the RTC WakeUp Counter register, use the RTC_GetWakeUpCounter() 
-            function.
-  
- ***Outputs configuration ***
- ============================
-    [..] The RTC has 2 different outputs:
-        (+) AFO_ALARM: this output is used to manage the RTC Alarm A.
-            To output the selected RTC signal on RTC_AF1 pin, use the 
-            RTC_OutputConfig() function.                
-        (+) AFO_CALIB: this output is 512Hz signal or 1Hz .
-            To output the RTC Clock on RTC_AF1 pin, use the RTC_CalibOutputCmd()
-            function.                
-  
- ***Original Digital Calibration configuration ***
- =================================    
-    [..] Configure the RTC Original Digital Calibration Value and the corresponding
-         calibration cycle period (32s,16s and 8s) using the RTC_SmoothCalibConfig()
-         function.
-  
- ***TimeStamp configuration ***
- ==============================
-    [..]  
-        (+) Configure the RTC_AF1 trigger and enables the RTC TimeStamp 
-            using the RTC_TimeStampCmd() function.
-        (+) To read the RTC TimeStamp Time and Date register, use the 
-            RTC_GetTimeStamp() function.
-        (+) To read the RTC TimeStamp SubSecond register, use the 
-            RTC_GetTimeStampSubSecond() function.
-  
- ***Tamper configuration ***
- ===========================
-    [..]   
-        (+) Configure the Tamper filter count using RTC_TamperFilterConfig()
-            function. 
-        (+) Configure the RTC Tamper trigger Edge or Level according to the Tamper 
-            filter (if equal to 0 Edge else Level) value using the RTC_TamperConfig() function
-        (+) Configure the Tamper sampling frequency using RTC_TamperSamplingFreqConfig()
-            function.
-        (+) Configure the Tamper precharge or discharge duration using 
-            RTC_TamperPinsPrechargeDuration() function.
-        (+) Enable the Tamper Pull-UP using RTC_TamperPullUpDisableCmd() function.
-        (+) Enable the RTC Tamper using the RTC_TamperCmd() function.
-        (+) Enable the Time stamp on Tamper detection event using  
-            RTC_TSOnTamperDetecCmd() function.     
-  
- ***Backup Data Registers configuration ***
- ==========================================
-    [..]  
-        (+) To write to the RTC Backup Data registers, use the RTC_WriteBackupRegister()
-            function.  
-        (+) To read the RTC Backup Data registers, use the RTC_ReadBackupRegister()
-            function.  
-  
-                       ##### RTC and low power modes #####
- ===============================================================================
-    [..] The MCU can be woken up from a low power mode by an RTC alternate 
-         function.
-    [..] The RTC alternate functions are the RTC alarm (Alarm A), RTC tamper 
-         event detection and RTC time stamp event detection.
-         These RTC alternate functions can wake up the system from the Stop 
-         and Standby lowpower modes.
-         The system can also wake up from low power modes without depending 
-         on an external interrupt (Auto-wakeup mode), by using the RTC alarm events.
-    [..] The RTC provides a programmable time base for waking up from the 
-         Stop or Standby mode at regular intervals.
-         Wakeup from STOP and Standby modes is possible only when the RTC 
-         clock source is LSE or LSI.
-  
-               ##### Selection of RTC_AF1 alternate functions #####
- ===============================================================================
-    [..] The RTC_AF1 pin (PC13) can be used for the following purposes:
-         (+) AFO_ALARM output
-         (+) AFO_CALIB output
-         (+) AFI_TAMPER
-         (+) AFI_TIMESTAMP
-  
-   +------------------------------------------------------------------------------------------+
-   |     Pin         |AFO_ALARM |AFO_CALIB |AFI_TAMPER |AFI_TIMESTAMP | WKUP2  |ALARMOUTTYPE  |
-   |  configuration  | ENABLED  | ENABLED  |  ENABLED  |   ENABLED    |ENABLED |  AFO_ALARM   |
-   |  and function   |          |          |           |              |        |Configuration |
-   |-----------------|----------|----------|-----------|--------------|--------|--------------|
-   |   Alarm out     |          |          |           |              | Don't  |              |
-   |   output OD     |     1    |    0     |Don't care | Don't care   | care   |      0       |
-   |-----------------|----------|----------|-----------|--------------|--------|--------------|
-   |   Alarm out     |          |          |           |              | Don't  |              |
-   |   output PP     |     1    |    0     |Don't care | Don't care   | care   |      1       |
-   |-----------------|----------|----------|-----------|--------------|--------|--------------|
-   | Calibration out |          |          |           |              | Don't  |              |
-   |   output PP     |     0    |    1     |Don't care | Don't care   | care   |  Don't care  |
-   |-----------------|----------|----------|-----------|--------------|--------|--------------|
-   |  TAMPER input   |          |          |           |              | Don't  |              |
-   |   floating      |     0    |    0     |     1     |      0       | care   |  Don't care  |
-   |-----------------|----------|----------|-----------|--------------|--------|--------------|
-   |  TIMESTAMP and  |          |          |           |              | Don't  |              |
-   |  TAMPER input   |     0    |    0     |     1     |      1       | care   |  Don't care  |
-   |   floating      |          |          |           |              |        |              |
-   |-----------------|----------|----------|-----------|--------------|--------|--------------|
-   | TIMESTAMP input |          |          |           |              | Don't  |              |
-   |    floating     |     0    |    0     |     0     |      1       | care   |  Don't care  |
-   |-----------------|----------|----------|-----------|--------------|--------|--------------|
-   |  Wakeup Pin 2   |     0    |    0     |     0     |      0       |   1    |  Don't care  |
-   |-----------------|----------|----------|-----------|--------------|--------|--------------|
-   |  Standard GPIO  |     0    |    0     |     0     |      0       |   0    |  Don't care  |
-   +------------------------------------------------------------------------------------------+
-  
- @endverbatim
- 
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_rtc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup RTC 
-  * @brief RTC driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-
-/* Masks Definition */
-#define RTC_TR_RESERVED_MASK    ((uint32_t)0x007F7F7F)
-#define RTC_DR_RESERVED_MASK    ((uint32_t)0x00FFFF3F) 
-#define RTC_INIT_MASK           ((uint32_t)0xFFFFFFFF)  
-#define RTC_RSF_MASK            ((uint32_t)0xFFFFFF5F)
-#define RTC_FLAGS_MASK          ((uint32_t)(RTC_FLAG_TSOVF | RTC_FLAG_TSF | RTC_FLAG_ALRAF | \
-                                            RTC_FLAG_RSF | RTC_FLAG_INITS |RTC_FLAG_INITF | \
-                                            RTC_FLAG_TAMP1F | RTC_FLAG_TAMP2F | RTC_FLAG_RECALPF | \
-                                            RTC_FLAG_SHPF))
-
-#define INITMODE_TIMEOUT         ((uint32_t) 0x00004000)
-#define SYNCHRO_TIMEOUT          ((uint32_t) 0x00008000)
-#define RECALPF_TIMEOUT          ((uint32_t) 0x00001000)
-#define SHPF_TIMEOUT             ((uint32_t) 0x00001000)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-static uint8_t RTC_ByteToBcd2(uint8_t Value);
-static uint8_t RTC_Bcd2ToByte(uint8_t Value);
-
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup RTC_Private_Functions
-  * @{
-  */ 
-
-/** @defgroup RTC_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions 
- *
-@verbatim   
- ===============================================================================
-            ##### Initialization and Configuration functions #####
- ===============================================================================  
-
-    [..] This section provide functions allowing to initialize and configure the RTC
-         Prescaler (Synchronous and Asynchronous), RTC Hour format, disable RTC registers
-         Write protection, enter and exit the RTC initialization mode, RTC registers
-         synchronization check and reference clock detection enable.
-  
-         (#) The RTC Prescaler is programmed to generate the RTC 1Hz time base.
-             It is split into 2 programmable prescalers to minimize power consumption.
-             (++) A 7-bit asynchronous prescaler and A 13-bit synchronous prescaler.
-             (++) When both prescalers are used, it is recommended to configure the
-                  asynchronous prescaler to a high value to minimize consumption.
-         (#) All RTC registers are Write protected. Writing to the RTC registers
-             is enabled by writing a key into the Write Protection register, RTC_WPR.
-         (#) To Configure the RTC Calendar, user application should enter
-             initialization mode. In this mode, the calendar counter is stopped
-             and its value can be updated. When the initialization sequence is
-             complete, the calendar restarts counting after 4 RTCCLK cycles.
-         (#) To read the calendar through the shadow registers after Calendar
-             initialization, calendar update or after wakeup from low power modes
-             the software must first clear the RSF flag. The software must then
-             wait until it is set again before reading the calendar, which means
-             that the calendar registers have been correctly copied into the
-             RTC_TR and RTC_DR shadow registers.The RTC_WaitForSynchro() function
-             implements the above software sequence (RSF clear and RSF check).
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the RTC registers to their default reset values.
-  * @note   This function doesn't reset the RTC Clock source and RTC Backup Data
-  *         registers.       
-  * @param  None
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC registers are deinitialized
-  *          - ERROR: RTC registers are not deinitialized
-  */
-ErrorStatus RTC_DeInit(void)
-{
-  ErrorStatus status = ERROR;
-  
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Set Initialization mode */
-  if (RTC_EnterInitMode() == ERROR)
-  {
-    status = ERROR;
-  }  
-  else
-  {
-    /* Reset TR, DR and CR registers */
-    RTC->TR        = (uint32_t)0x00000000;
-    RTC->WUTR      = (uint32_t)0x0000FFFF;
-    RTC->DR        = (uint32_t)0x00002101;
-    RTC->CR        &= (uint32_t)0x00000000;
-    RTC->PRER      = (uint32_t)0x007F00FF;
-    RTC->ALRMAR    = (uint32_t)0x00000000;
-    RTC->SHIFTR    = (uint32_t)0x00000000;
-    RTC->CALR       = (uint32_t)0x00000000;
-    RTC->ALRMASSR  = (uint32_t)0x00000000;
-
-    /* Reset ISR register and exit initialization mode */
-    RTC->ISR = (uint32_t)0x00000000;
-    
-    /* Reset Tamper and alternate functions configuration register */
-    RTC->TAFCR = 0x00000000;
-      
-    /* Wait till the RTC RSF flag is set */
-    if (RTC_WaitForSynchro() == ERROR)
-    {
-      status = ERROR;
-    }
-    else
-    {
-      status = SUCCESS;
-    }
-
-  }
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;  
-
-  return status;
-}
-
-/**
-  * @brief  Initializes the RTC registers according to the specified parameters 
-  *         in RTC_InitStruct.
-  * @param  RTC_InitStruct: pointer to a RTC_InitTypeDef structure that contains 
-  *         the configuration information for the RTC peripheral.
-  * @note   The RTC Prescaler register is write protected and can be written in 
-  *         initialization mode only.  
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC registers are initialized
-  *          - ERROR: RTC registers are not initialized  
-  */
-ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct)
-{
-  ErrorStatus status = ERROR;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_HOUR_FORMAT(RTC_InitStruct->RTC_HourFormat));
-  assert_param(IS_RTC_ASYNCH_PREDIV(RTC_InitStruct->RTC_AsynchPrediv));
-  assert_param(IS_RTC_SYNCH_PREDIV(RTC_InitStruct->RTC_SynchPrediv));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Set Initialization mode */
-  if (RTC_EnterInitMode() == ERROR)
-  {
-    status = ERROR;
-  }
-  else
-  {
-    /* Clear RTC CR FMT Bit */
-    RTC->CR &= ((uint32_t)~(RTC_CR_FMT));
-    /* Set RTC_CR register */
-    RTC->CR |=  ((uint32_t)(RTC_InitStruct->RTC_HourFormat));
-  
-    /* Configure the RTC PRER */
-    RTC->PRER = (uint32_t)(RTC_InitStruct->RTC_SynchPrediv);
-    RTC->PRER |= (uint32_t)(RTC_InitStruct->RTC_AsynchPrediv << 16);
-
-    /* Exit Initialization mode */
-    RTC_ExitInitMode();
-
-    status = SUCCESS;
-  }
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-
-  return status;
-}
-
-/**
-  * @brief  Fills each RTC_InitStruct member with its default value.
-  * @param  RTC_InitStruct: pointer to a RTC_InitTypeDef structure which will be 
-  *         initialized.
-  * @retval None
-  */
-void RTC_StructInit(RTC_InitTypeDef* RTC_InitStruct)
-{
-  /* Initialize the RTC_HourFormat member */
-  RTC_InitStruct->RTC_HourFormat = RTC_HourFormat_24;
-
-  /* Initialize the RTC_AsynchPrediv member */
-  RTC_InitStruct->RTC_AsynchPrediv = (uint32_t)0x7F;
-
-  /* Initialize the RTC_SynchPrediv member */
-  RTC_InitStruct->RTC_SynchPrediv = (uint32_t)0xFF; 
-}
-
-/**
-  * @brief  Enables or disables the RTC registers write protection.
-  * @note   All the RTC registers are write protected except for RTC_ISR[13:8], 
-  *         RTC_TAFCR and RTC_BKPxR.
-  * @note   Writing a wrong key reactivates the write protection.
-  * @note   The protection mechanism is not affected by system reset.
-  * @param  NewState: new state of the write protection.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RTC_WriteProtectionCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the write protection for RTC registers */
-    RTC->WPR = 0xFF;
-  }
-  else
-  {
-    /* Disable the write protection for RTC registers */
-    RTC->WPR = 0xCA;
-    RTC->WPR = 0x53;
-  }
-}
-
-/**
-  * @brief  Enters the RTC Initialization mode.
-  * @note   The RTC Initialization mode is write protected, use the 
-  *         RTC_WriteProtectionCmd(DISABLE) before calling this function.
-  * @param  None
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC is in Init mode
-  *          - ERROR: RTC is not in Init mode
-  */
-ErrorStatus RTC_EnterInitMode(void)
-{
-  __IO uint32_t initcounter = 0x00;
-  ErrorStatus status = ERROR;
-  uint32_t initstatus = 0x00;
-
-  /* Check if the Initialization mode is set */
-  if ((RTC->ISR & RTC_ISR_INITF) == (uint32_t)RESET)
-  {
-    /* Set the Initialization mode */
-    RTC->ISR = (uint32_t)RTC_INIT_MASK;
-    
-    /* Wait till RTC is in INIT state and if Time out is reached exit */
-    do
-    {
-      initstatus = RTC->ISR & RTC_ISR_INITF;
-      initcounter++;  
-    } while((initcounter != INITMODE_TIMEOUT) && (initstatus == 0x00));
-    
-    if ((RTC->ISR & RTC_ISR_INITF) != RESET)
-    {
-      status = SUCCESS;
-    }
-    else
-    {
-      status = ERROR;
-    }
-  }
-  else
-  {
-    status = SUCCESS;
-  }
-
-  return (status);
-}
-
-/**
-  * @brief  Exits the RTC Initialization mode.
-  * @note   When the initialization sequence is complete, the calendar restarts 
-  *         counting after 4 RTCCLK cycles.  
-  * @note   The RTC Initialization mode is write protected, use the 
-  *         RTC_WriteProtectionCmd(DISABLE) before calling this function.      
-  * @param  None
-  * @retval None
-  */
-void RTC_ExitInitMode(void)
-{
-  /* Exit Initialization mode */
-  RTC->ISR &= (uint32_t)~RTC_ISR_INIT;
-}
-
-/**
-  * @brief  Waits until the RTC Time and Date registers (RTC_TR and RTC_DR) are 
-  *         synchronized with RTC APB clock.
-  * @note   The RTC Resynchronization mode is write protected, use the 
-  *         RTC_WriteProtectionCmd(DISABLE) before calling this function. 
-  * @note   To read the calendar through the shadow registers after Calendar 
-  *         initialization, calendar update or after wakeup from low power modes 
-  *         the software must first clear the RSF flag. 
-  *         The software must then wait until it is set again before reading 
-  *         the calendar, which means that the calendar registers have been 
-  *         correctly copied into the RTC_TR and RTC_DR shadow registers.   
-  * @param  None
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC registers are synchronised
-  *          - ERROR: RTC registers are not synchronised
-  */
-ErrorStatus RTC_WaitForSynchro(void)
-{
-  __IO uint32_t synchrocounter = 0;
-  ErrorStatus status = ERROR;
-  uint32_t synchrostatus = 0x00;
-
-  if ((RTC->CR & RTC_CR_BYPSHAD) != RESET)
-  {
-    /* Bypass shadow mode */
-    status = SUCCESS;
-  }
-  else
-  {
-    /* Disable the write protection for RTC registers */
-    RTC->WPR = 0xCA;
-    RTC->WPR = 0x53;
-
-    /* Clear RSF flag */
-    RTC->ISR &= (uint32_t)RTC_RSF_MASK;
-
-    /* Wait the registers to be synchronised */
-    do
-    {
-      synchrostatus = RTC->ISR & RTC_ISR_RSF;
-      synchrocounter++;  
-    } while((synchrocounter != SYNCHRO_TIMEOUT) && (synchrostatus == 0x00));
-
-    if ((RTC->ISR & RTC_ISR_RSF) != RESET)
-    {
-      status = SUCCESS;
-    }
-    else
-    {
-      status = ERROR;
-    }
-
-    /* Enable the write protection for RTC registers */
-    RTC->WPR = 0xFF;
-  }
-
-  return (status);
-}
-
-/**
-  * @brief  Enables or disables the RTC reference clock detection.
-  * @param  NewState: new state of the RTC reference clock.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC reference clock detection is enabled
-  *          - ERROR: RTC reference clock detection is disabled  
-  */
-ErrorStatus RTC_RefClockCmd(FunctionalState NewState)
-{
-  ErrorStatus status = ERROR;
-
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Set Initialization mode */
-  if (RTC_EnterInitMode() == ERROR)
-  {
-    status = ERROR;
-  }
-  else
-  {
-    if (NewState != DISABLE)
-    {
-      /* Enable the RTC reference clock detection */
-      RTC->CR |= RTC_CR_REFCKON;
-    }
-    else
-    {
-      /* Disable the RTC reference clock detection */
-      RTC->CR &= ~RTC_CR_REFCKON;
-    }
-    /* Exit Initialization mode */
-    RTC_ExitInitMode();
-
-    status = SUCCESS;
-  }
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-
-  return status;
-}
-
-/**
-  * @brief  Enables or Disables the Bypass Shadow feature.
-  * @note   When the Bypass Shadow is enabled the calendar value are taken 
-  *         directly from the Calendar counter.
-  * @param  NewState: new state of the Bypass Shadow feature.
-  *         This parameter can be: ENABLE or DISABLE.
-  * @retval None
-*/
-void RTC_BypassShadowCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-  
-  if (NewState != DISABLE)
-  {
-    /* Set the BYPSHAD bit */
-    RTC->CR |= (uint8_t)RTC_CR_BYPSHAD;
-  }
-  else
-  {
-    /* Reset the BYPSHAD bit */
-    RTC->CR &= (uint8_t)~RTC_CR_BYPSHAD;
-  }
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group2 Time and Date configuration functions
- *  @brief   Time and Date configuration functions
- *
-@verbatim
- ===============================================================================
-               ##### Time and Date configuration functions #####
- ===============================================================================
-    [..]  This section provide functions allowing to program and read the RTC
-          Calendar (Time and Date).
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Set the RTC current time.
-  * @param  RTC_Format: specifies the format of the entered parameters.
-  *          This parameter can be  one of the following values:
-  *            @arg RTC_Format_BIN:  Binary data format 
-  *            @arg RTC_Format_BCD:  BCD data format
-  * @param  RTC_TimeStruct: pointer to a RTC_TimeTypeDef structure that contains 
-  *                        the time configuration information for the RTC.
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC Time register is configured
-  *          - ERROR: RTC Time register is not configured
-  */
-ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct)
-{
-  uint32_t tmpreg = 0;
-  ErrorStatus status = ERROR;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_FORMAT(RTC_Format));
-  
-  if (RTC_Format == RTC_Format_BIN)
-  {
-    if ((RTC->CR & RTC_CR_FMT) != (uint32_t)RESET)
-    {
-      assert_param(IS_RTC_HOUR12(RTC_TimeStruct->RTC_Hours));
-      assert_param(IS_RTC_H12(RTC_TimeStruct->RTC_H12));
-    }
-    else
-    {
-      RTC_TimeStruct->RTC_H12 = 0x00;
-      assert_param(IS_RTC_HOUR24(RTC_TimeStruct->RTC_Hours));
-    }
-    assert_param(IS_RTC_MINUTES(RTC_TimeStruct->RTC_Minutes));
-    assert_param(IS_RTC_SECONDS(RTC_TimeStruct->RTC_Seconds));
-  }
-  else
-  {
-    if ((RTC->CR & RTC_CR_FMT) != (uint32_t)RESET)
-    {
-      tmpreg = RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Hours);
-      assert_param(IS_RTC_HOUR12(tmpreg));
-      assert_param(IS_RTC_H12(RTC_TimeStruct->RTC_H12)); 
-    } 
-    else
-    {
-      RTC_TimeStruct->RTC_H12 = 0x00;
-      assert_param(IS_RTC_HOUR24(RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Hours)));
-    }
-    assert_param(IS_RTC_MINUTES(RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Minutes)));
-    assert_param(IS_RTC_SECONDS(RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Seconds)));
-  }
-  
-  /* Check the input parameters format */
-  if (RTC_Format != RTC_Format_BIN)
-  {
-    tmpreg = (((uint32_t)(RTC_TimeStruct->RTC_Hours) << 16) | \
-             ((uint32_t)(RTC_TimeStruct->RTC_Minutes) << 8) | \
-             ((uint32_t)RTC_TimeStruct->RTC_Seconds) | \
-             ((uint32_t)(RTC_TimeStruct->RTC_H12) << 16)); 
-  }
-  else
-  {
-    tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Hours) << 16) | \
-                   ((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Minutes) << 8) | \
-                   ((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Seconds)) | \
-                   (((uint32_t)RTC_TimeStruct->RTC_H12) << 16));
-  } 
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Set Initialization mode */
-  if (RTC_EnterInitMode() == ERROR)
-  {
-    status = ERROR;
-  } 
-  else
-  {
-    /* Set the RTC_TR register */
-    RTC->TR = (uint32_t)(tmpreg & RTC_TR_RESERVED_MASK);
-
-    /* Exit Initialization mode */
-    RTC_ExitInitMode(); 
-
-    /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
-    if ((RTC->CR & RTC_CR_BYPSHAD) == RESET)
-    {
-      if (RTC_WaitForSynchro() == ERROR)
-      {
-        status = ERROR;
-      }
-      else
-      {
-        status = SUCCESS;
-      }
-    }
-    else
-    {
-      status = SUCCESS;
-    }
-  
-  }
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-    
-  return status;
-}
-
-/**
-  * @brief  Fills each RTC_TimeStruct member with its default value
-  *         (Time = 00h:00min:00sec).
-  * @param  RTC_TimeStruct: pointer to a RTC_TimeTypeDef structure which will be 
-  *         initialized.
-  * @retval None
-  */
-void RTC_TimeStructInit(RTC_TimeTypeDef* RTC_TimeStruct)
-{
-  /* Time = 00h:00min:00sec */
-  RTC_TimeStruct->RTC_H12 = RTC_H12_AM;
-  RTC_TimeStruct->RTC_Hours = 0;
-  RTC_TimeStruct->RTC_Minutes = 0;
-  RTC_TimeStruct->RTC_Seconds = 0; 
-}
-
-/**
-  * @brief  Get the RTC current Time.
-  * @param  RTC_Format: specifies the format of the returned parameters.
-  *          This parameter can be  one of the following values:
-  *            @arg RTC_Format_BIN:  Binary data format 
-  *            @arg RTC_Format_BCD:  BCD data format
-  * @param RTC_TimeStruct: pointer to a RTC_TimeTypeDef structure that will 
-  *                        contain the returned current time configuration.
-  * @retval None
-  */
-void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_FORMAT(RTC_Format));
-
-  /* Get the RTC_TR register */
-  tmpreg = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK); 
-  
-  /* Fill the structure fields with the read parameters */
-  RTC_TimeStruct->RTC_Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16);
-  RTC_TimeStruct->RTC_Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >>8);
-  RTC_TimeStruct->RTC_Seconds = (uint8_t)(tmpreg & (RTC_TR_ST | RTC_TR_SU));
-  RTC_TimeStruct->RTC_H12 = (uint8_t)((tmpreg & (RTC_TR_PM)) >> 16);  
-
-  /* Check the input parameters format */
-  if (RTC_Format == RTC_Format_BIN)
-  {
-    /* Convert the structure parameters to Binary format */
-    RTC_TimeStruct->RTC_Hours = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Hours);
-    RTC_TimeStruct->RTC_Minutes = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Minutes);
-    RTC_TimeStruct->RTC_Seconds = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Seconds);
-  }
-}
-
-/**
-  * @brief  Gets the RTC current Calendar Subseconds value.
-  * @note   This function freeze the Time and Date registers after reading the 
-  *         SSR register.
-  * @param  None
-  * @retval RTC current Calendar Subseconds value.
-  */
-uint32_t RTC_GetSubSecond(void)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Get subseconds values from the correspondent registers*/
-  tmpreg = (uint32_t)(RTC->SSR);
-  
-  /* Read DR register to unfroze calendar registers */
-  (void) (RTC->DR);
-  
-  return (tmpreg);
-}
-
-/**
-  * @brief  Set the RTC current date.
-  * @param  RTC_Format: specifies the format of the entered parameters.
-  *          This parameter can be  one of the following values:
-  *            @arg RTC_Format_BIN:  Binary data format 
-  *            @arg RTC_Format_BCD:  BCD data format
-  * @param  RTC_DateStruct: pointer to a RTC_DateTypeDef structure that contains 
-  *                         the date configuration information for the RTC.
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC Date register is configured
-  *          - ERROR: RTC Date register is not configured
-  */
-ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct)
-{
-  uint32_t tmpreg = 0;
-  ErrorStatus status = ERROR;
-  
-  /* Check the parameters */
-  assert_param(IS_RTC_FORMAT(RTC_Format));
-
-  if ((RTC_Format == RTC_Format_BIN) && ((RTC_DateStruct->RTC_Month & 0x10) == 0x10))
-  {
-    RTC_DateStruct->RTC_Month = (RTC_DateStruct->RTC_Month & (uint32_t)~(0x10)) + 0x0A;
-  }  
-  if (RTC_Format == RTC_Format_BIN)
-  {
-    assert_param(IS_RTC_YEAR(RTC_DateStruct->RTC_Year));
-    assert_param(IS_RTC_MONTH(RTC_DateStruct->RTC_Month));
-    assert_param(IS_RTC_DATE(RTC_DateStruct->RTC_Date));
-  }
-  else
-  {
-    assert_param(IS_RTC_YEAR(RTC_Bcd2ToByte(RTC_DateStruct->RTC_Year)));
-    tmpreg = RTC_Bcd2ToByte(RTC_DateStruct->RTC_Month);
-    assert_param(IS_RTC_MONTH(tmpreg));
-    tmpreg = RTC_Bcd2ToByte(RTC_DateStruct->RTC_Date);
-    assert_param(IS_RTC_DATE(tmpreg));
-  }
-  assert_param(IS_RTC_WEEKDAY(RTC_DateStruct->RTC_WeekDay));
-
-  /* Check the input parameters format */
-  if (RTC_Format != RTC_Format_BIN)
-  {
-    tmpreg = ((((uint32_t)RTC_DateStruct->RTC_Year) << 16) | \
-              (((uint32_t)RTC_DateStruct->RTC_Month) << 8) | \
-              ((uint32_t)RTC_DateStruct->RTC_Date) | \
-              (((uint32_t)RTC_DateStruct->RTC_WeekDay) << 13)); 
-  }  
-  else
-  {
-    tmpreg = (((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Year) << 16) | \
-              ((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Month) << 8) | \
-              ((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Date)) | \
-              ((uint32_t)RTC_DateStruct->RTC_WeekDay << 13));
-  }
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Set Initialization mode */
-  if (RTC_EnterInitMode() == ERROR)
-  {
-    status = ERROR;
-  } 
-  else
-  {
-    /* Set the RTC_DR register */
-    RTC->DR = (uint32_t)(tmpreg & RTC_DR_RESERVED_MASK);
-
-    /* Exit Initialization mode */
-    RTC_ExitInitMode(); 
-
-    /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
-    if ((RTC->CR & RTC_CR_BYPSHAD) == RESET)
-    {
-      if (RTC_WaitForSynchro() == ERROR)
-      {
-        status = ERROR;
-      }
-      else
-      {
-        status = SUCCESS;
-      }
-    }
-    else
-    {
-      status = SUCCESS;
-    }
-  }
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-  
-  return status;
-}
-
-/**
-  * @brief  Fills each RTC_DateStruct member with its default value
-  *         (Monday, January 01 xx00).
-  * @param  RTC_DateStruct: pointer to a RTC_DateTypeDef structure which will be 
-  *         initialized.
-  * @retval None
-  */
-void RTC_DateStructInit(RTC_DateTypeDef* RTC_DateStruct)
-{
-  /* Monday, January 01 xx00 */
-  RTC_DateStruct->RTC_WeekDay = RTC_Weekday_Monday;
-  RTC_DateStruct->RTC_Date = 1;
-  RTC_DateStruct->RTC_Month = RTC_Month_January;
-  RTC_DateStruct->RTC_Year = 0;
-}
-
-/**
-  * @brief  Get the RTC current date.
-  * @param  RTC_Format: specifies the format of the returned parameters.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Format_BIN: Binary data format 
-  *            @arg RTC_Format_BCD: BCD data format
-  * @param RTC_DateStruct: pointer to a RTC_DateTypeDef structure that will 
-  *                        contain the returned current date configuration.
-  * @retval None
-  */
-void RTC_GetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_FORMAT(RTC_Format));
-  
-  /* Get the RTC_TR register */
-  tmpreg = (uint32_t)(RTC->DR & RTC_DR_RESERVED_MASK); 
-
-  /* Fill the structure fields with the read parameters */
-  RTC_DateStruct->RTC_Year = (uint8_t)((tmpreg & (RTC_DR_YT | RTC_DR_YU)) >> 16);
-  RTC_DateStruct->RTC_Month = (uint8_t)((tmpreg & (RTC_DR_MT | RTC_DR_MU)) >> 8);
-  RTC_DateStruct->RTC_Date = (uint8_t)(tmpreg & (RTC_DR_DT | RTC_DR_DU));
-  RTC_DateStruct->RTC_WeekDay = (uint8_t)((tmpreg & (RTC_DR_WDU)) >> 13);  
-
-  /* Check the input parameters format */
-  if (RTC_Format == RTC_Format_BIN)
-  {
-    /* Convert the structure parameters to Binary format */
-    RTC_DateStruct->RTC_Year = (uint8_t)RTC_Bcd2ToByte(RTC_DateStruct->RTC_Year);
-    RTC_DateStruct->RTC_Month = (uint8_t)RTC_Bcd2ToByte(RTC_DateStruct->RTC_Month);
-    RTC_DateStruct->RTC_Date = (uint8_t)RTC_Bcd2ToByte(RTC_DateStruct->RTC_Date);
-    RTC_DateStruct->RTC_WeekDay = (uint8_t)(RTC_DateStruct->RTC_WeekDay);   
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group3 Alarms configuration functions
- *  @brief   Alarms (Alarm A) configuration functions 
- *
-@verbatim
- ===============================================================================
-         ##### Alarms (Alarm A and Alarm B) configuration functions #####
- ===============================================================================
-    [..] This section provide functions allowing to program and read the RTC 
-         Alarms.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Set the specified RTC Alarm.
-  * @note   The Alarm register can only be written when the corresponding Alarm
-  *         is disabled (Use the RTC_AlarmCmd(DISABLE)).    
-  * @param  RTC_Format: specifies the format of the returned parameters.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Format_BIN: Binary data format 
-  *            @arg RTC_Format_BCD: BCD data format
-  * @param  RTC_Alarm: specifies the alarm to be configured.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Alarm_A: to select Alarm A
-  * @param  RTC_AlarmStruct: pointer to a RTC_AlarmTypeDef structure that 
-  *                          contains the alarm configuration parameters.
-  * @retval None
-  */
-void RTC_SetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, RTC_AlarmTypeDef* RTC_AlarmStruct)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RTC_FORMAT(RTC_Format));
-  assert_param(IS_RTC_ALARM(RTC_Alarm));
-  assert_param(IS_RTC_ALARM_MASK(RTC_AlarmStruct->RTC_AlarmMask));
-  assert_param(IS_RTC_ALARM_DATE_WEEKDAY_SEL(RTC_AlarmStruct->RTC_AlarmDateWeekDaySel));
-
-  if (RTC_Format == RTC_Format_BIN)
-  {
-    if ((RTC->CR & RTC_CR_FMT) != (uint32_t)RESET)
-    {
-      assert_param(IS_RTC_HOUR12(RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours));
-      assert_param(IS_RTC_H12(RTC_AlarmStruct->RTC_AlarmTime.RTC_H12));
-    } 
-    else
-    {
-      RTC_AlarmStruct->RTC_AlarmTime.RTC_H12 = 0x00;
-      assert_param(IS_RTC_HOUR24(RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours));
-    }
-    assert_param(IS_RTC_MINUTES(RTC_AlarmStruct->RTC_AlarmTime.RTC_Minutes));
-    assert_param(IS_RTC_SECONDS(RTC_AlarmStruct->RTC_AlarmTime.RTC_Seconds));
-    
-    if(RTC_AlarmStruct->RTC_AlarmDateWeekDaySel == RTC_AlarmDateWeekDaySel_Date)
-    {
-      assert_param(IS_RTC_ALARM_DATE_WEEKDAY_DATE(RTC_AlarmStruct->RTC_AlarmDateWeekDay));
-    }
-    else
-    {
-      assert_param(IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(RTC_AlarmStruct->RTC_AlarmDateWeekDay));
-    }
-  }
-  else
-  {
-    if ((RTC->CR & RTC_CR_FMT) != (uint32_t)RESET)
-    {
-      tmpreg = RTC_Bcd2ToByte(RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours);
-      assert_param(IS_RTC_HOUR12(tmpreg));
-      assert_param(IS_RTC_H12(RTC_AlarmStruct->RTC_AlarmTime.RTC_H12));
-    } 
-    else
-    {
-      RTC_AlarmStruct->RTC_AlarmTime.RTC_H12 = 0x00;
-      assert_param(IS_RTC_HOUR24(RTC_Bcd2ToByte(RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours)));
-    }
-    
-    assert_param(IS_RTC_MINUTES(RTC_Bcd2ToByte(RTC_AlarmStruct->RTC_AlarmTime.RTC_Minutes)));
-    assert_param(IS_RTC_SECONDS(RTC_Bcd2ToByte(RTC_AlarmStruct->RTC_AlarmTime.RTC_Seconds)));
-    
-    if(RTC_AlarmStruct->RTC_AlarmDateWeekDaySel == RTC_AlarmDateWeekDaySel_Date)
-    {
-      tmpreg = RTC_Bcd2ToByte(RTC_AlarmStruct->RTC_AlarmDateWeekDay);
-      assert_param(IS_RTC_ALARM_DATE_WEEKDAY_DATE(tmpreg));    
-    }
-    else
-    {
-      tmpreg = RTC_Bcd2ToByte(RTC_AlarmStruct->RTC_AlarmDateWeekDay);
-      assert_param(IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(tmpreg));      
-    }    
-  }
-
-  /* Check the input parameters format */
-  if (RTC_Format != RTC_Format_BIN)
-  {
-    tmpreg = (((uint32_t)(RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours) << 16) | \
-              ((uint32_t)(RTC_AlarmStruct->RTC_AlarmTime.RTC_Minutes) << 8) | \
-              ((uint32_t)RTC_AlarmStruct->RTC_AlarmTime.RTC_Seconds) | \
-              ((uint32_t)(RTC_AlarmStruct->RTC_AlarmTime.RTC_H12) << 16) | \
-              ((uint32_t)(RTC_AlarmStruct->RTC_AlarmDateWeekDay) << 24) | \
-              ((uint32_t)RTC_AlarmStruct->RTC_AlarmDateWeekDaySel) | \
-              ((uint32_t)RTC_AlarmStruct->RTC_AlarmMask)); 
-  }  
-  else
-  {
-    tmpreg = (((uint32_t)RTC_ByteToBcd2(RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours) << 16) | \
-              ((uint32_t)RTC_ByteToBcd2(RTC_AlarmStruct->RTC_AlarmTime.RTC_Minutes) << 8) | \
-              ((uint32_t)RTC_ByteToBcd2(RTC_AlarmStruct->RTC_AlarmTime.RTC_Seconds)) | \
-              ((uint32_t)(RTC_AlarmStruct->RTC_AlarmTime.RTC_H12) << 16) | \
-              ((uint32_t)RTC_ByteToBcd2(RTC_AlarmStruct->RTC_AlarmDateWeekDay) << 24) | \
-              ((uint32_t)RTC_AlarmStruct->RTC_AlarmDateWeekDaySel) | \
-              ((uint32_t)RTC_AlarmStruct->RTC_AlarmMask)); 
-  }
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Configure the Alarm register */
-  RTC->ALRMAR = (uint32_t)tmpreg;
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-}
-
-/**
-  * @brief  Fills each RTC_AlarmStruct member with its default value
-  *         (Time = 00h:00mn:00sec / Date = 1st day of the month/Mask =
-  *         all fields are masked).
-  * @param  RTC_AlarmStruct: pointer to a @ref RTC_AlarmTypeDef structure which
-  *         will be initialized.
-  * @retval None
-  */
-void RTC_AlarmStructInit(RTC_AlarmTypeDef* RTC_AlarmStruct)
-{
-  /* Alarm Time Settings : Time = 00h:00mn:00sec */
-  RTC_AlarmStruct->RTC_AlarmTime.RTC_H12 = RTC_H12_AM;
-  RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours = 0;
-  RTC_AlarmStruct->RTC_AlarmTime.RTC_Minutes = 0;
-  RTC_AlarmStruct->RTC_AlarmTime.RTC_Seconds = 0;
-
-  /* Alarm Date Settings : Date = 1st day of the month */
-  RTC_AlarmStruct->RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date;
-  RTC_AlarmStruct->RTC_AlarmDateWeekDay = 1;
-
-  /* Alarm Masks Settings : Mask =  all fields are not masked */
-  RTC_AlarmStruct->RTC_AlarmMask = RTC_AlarmMask_None;
-}
-
-/**
-  * @brief  Get the RTC Alarm value and masks.
-  * @param  RTC_Format: specifies the format of the output parameters.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Format_BIN: Binary data format 
-  *            @arg RTC_Format_BCD: BCD data format
-  * @param  RTC_Alarm: specifies the alarm to be read.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Alarm_A: to select Alarm A
-  * @param  RTC_AlarmStruct: pointer to a RTC_AlarmTypeDef structure that will 
-  *                          contains the output alarm configuration values.
-  * @retval None
-  */
-void RTC_GetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, RTC_AlarmTypeDef* RTC_AlarmStruct)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_FORMAT(RTC_Format));
-  assert_param(IS_RTC_ALARM(RTC_Alarm)); 
-
-  /* Get the RTC_ALRMAR register */
-  tmpreg = (uint32_t)(RTC->ALRMAR);
-
-  /* Fill the structure with the read parameters */
-  RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours = (uint32_t)((tmpreg & (RTC_ALRMAR_HT | \
-                                                     RTC_ALRMAR_HU)) >> 16);
-  RTC_AlarmStruct->RTC_AlarmTime.RTC_Minutes = (uint32_t)((tmpreg & (RTC_ALRMAR_MNT | \
-                                                     RTC_ALRMAR_MNU)) >> 8);
-  RTC_AlarmStruct->RTC_AlarmTime.RTC_Seconds = (uint32_t)(tmpreg & (RTC_ALRMAR_ST | \
-                                                     RTC_ALRMAR_SU));
-  RTC_AlarmStruct->RTC_AlarmTime.RTC_H12 = (uint32_t)((tmpreg & RTC_ALRMAR_PM) >> 16);
-  RTC_AlarmStruct->RTC_AlarmDateWeekDay = (uint32_t)((tmpreg & (RTC_ALRMAR_DT | RTC_ALRMAR_DU)) >> 24);
-  RTC_AlarmStruct->RTC_AlarmDateWeekDaySel = (uint32_t)(tmpreg & RTC_ALRMAR_WDSEL);
-  RTC_AlarmStruct->RTC_AlarmMask = (uint32_t)(tmpreg & RTC_AlarmMask_All);
-
-  if (RTC_Format == RTC_Format_BIN)
-  {
-    RTC_AlarmStruct->RTC_AlarmTime.RTC_Hours = RTC_Bcd2ToByte(RTC_AlarmStruct-> \
-                                                        RTC_AlarmTime.RTC_Hours);
-    RTC_AlarmStruct->RTC_AlarmTime.RTC_Minutes = RTC_Bcd2ToByte(RTC_AlarmStruct-> \
-                                                        RTC_AlarmTime.RTC_Minutes);
-    RTC_AlarmStruct->RTC_AlarmTime.RTC_Seconds = RTC_Bcd2ToByte(RTC_AlarmStruct-> \
-                                                        RTC_AlarmTime.RTC_Seconds);
-    RTC_AlarmStruct->RTC_AlarmDateWeekDay = RTC_Bcd2ToByte(RTC_AlarmStruct->RTC_AlarmDateWeekDay);
-  }  
-}
-
-/**
-  * @brief  Enables or disables the specified RTC Alarm.
-  * @param  RTC_Alarm: specifies the alarm to be configured.
-  *          This parameter can be any combination of the following values:
-  *            @arg RTC_Alarm_A: to select Alarm A
-  * @param  NewState: new state of the specified alarm.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC Alarm is enabled/disabled
-  *          - ERROR: RTC Alarm is not enabled/disabled  
-  */
-ErrorStatus RTC_AlarmCmd(uint32_t RTC_Alarm, FunctionalState NewState)
-{
-  __IO uint32_t alarmcounter = 0x00;
-  uint32_t alarmstatus = 0x00;
-  ErrorStatus status = ERROR;
-    
-  /* Check the parameters */
-  assert_param(IS_RTC_CMD_ALARM(RTC_Alarm));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Configure the Alarm state */
-  if (NewState != DISABLE)
-  {
-    RTC->CR |= (uint32_t)RTC_Alarm;
-
-    status = SUCCESS;    
-  }
-  else
-  { 
-    /* Disable the Alarm in RTC_CR register */
-    RTC->CR &= (uint32_t)~RTC_Alarm;
-   
-    /* Wait till RTC ALRxWF flag is set and if Time out is reached exit */
-    do
-    {
-      alarmstatus = RTC->ISR & (RTC_Alarm >> 8);
-      alarmcounter++;  
-    } while((alarmcounter != INITMODE_TIMEOUT) && (alarmstatus == 0x00));
-    
-    if ((RTC->ISR & (RTC_Alarm >> 8)) == RESET)
-    {
-      status = ERROR;
-    } 
-    else
-    {
-      status = SUCCESS;
-    }        
-  } 
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-  
-  return status;
-}
-
-/**
-  * @brief  Configure the RTC AlarmA/B Subseconds value and mask.
-  * @note   This function is performed only when the Alarm is disabled. 
-  * @param  RTC_Alarm: specifies the alarm to be configured.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Alarm_A: to select Alarm A
-  * @param  RTC_AlarmSubSecondValue: specifies the Subseconds value.
-  *          This parameter can be a value from 0 to 0x00007FFF.
-  * @param  RTC_AlarmSubSecondMask:  specifies the Subseconds Mask.
-  *          This parameter can be any combination of the following values:
-  *            @arg RTC_AlarmSubSecondMask_All: All Alarm SS fields are masked.
-  *                                             There is no comparison on sub seconds for Alarm.
-  *            @arg RTC_AlarmSubSecondMask_SS14_1: SS[14:1] are don't care in Alarm comparison.
-  *                                                Only SS[0] is compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_2: SS[14:2] are don't care in Alarm comparison.
-  *                                                Only SS[1:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_3: SS[14:3] are don't care in Alarm comparison.
-  *                                                Only SS[2:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_4: SS[14:4] are don't care in Alarm comparison.
-  *                                                Only SS[3:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_5: SS[14:5] are don't care in Alarm comparison.
-  *                                                Only SS[4:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_6: SS[14:6] are don't care in Alarm comparison.
-  *                                                Only SS[5:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_7: SS[14:7] are don't care in Alarm comparison.
-  *                                                Only SS[6:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_8: SS[14:8] are don't care in Alarm comparison.
-  *                                                Only SS[7:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_9: SS[14:9] are don't care in Alarm comparison.
-  *                                                Only SS[8:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_10: SS[14:10] are don't care in Alarm comparison.
-  *                                                 Only SS[9:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_11: SS[14:11] are don't care in Alarm comparison.
-  *                                                 Only SS[10:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_12: SS[14:12] are don't care in Alarm comparison.
-  *                                                 Only SS[11:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14_13: SS[14:13] are don't care in Alarm comparison.
-  *                                                 Only SS[12:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_SS14: SS[14] is don't care in Alarm comparison.
-  *                                              Only SS[13:0] are compared
-  *            @arg RTC_AlarmSubSecondMask_None: SS[14:0] are compared and must match to activate alarm
-  * @retval None
-  */
-void RTC_AlarmSubSecondConfig(uint32_t RTC_Alarm, uint32_t RTC_AlarmSubSecondValue, uint8_t RTC_AlarmSubSecondMask)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_ALARM(RTC_Alarm));
-  assert_param(IS_RTC_ALARM_SUB_SECOND_VALUE(RTC_AlarmSubSecondValue));
-  assert_param(IS_RTC_ALARM_SUB_SECOND_MASK(RTC_AlarmSubSecondMask));
-  
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-  
-  /* Configure the Alarm A or Alarm B SubSecond registers */
-  tmpreg = (uint32_t) (((uint32_t)(RTC_AlarmSubSecondValue)) | ((uint32_t)(RTC_AlarmSubSecondMask) << 24));
-  
-  /* Configure the AlarmA SubSecond register */
-  RTC->ALRMASSR = tmpreg;
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-
-}
-
-/**
-  * @brief  Gets the RTC Alarm Subseconds value.
-  * @param  RTC_Alarm: specifies the alarm to be read.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Alarm_A: to select Alarm A
-  * @param  None
-  * @retval RTC Alarm Subseconds value.
-  */
-uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm)
-{
-  uint32_t tmpreg = 0;
-  
-  /* Get the RTC_ALRMAR register */
-  tmpreg = (uint32_t)((RTC->ALRMASSR) & RTC_ALRMASSR_SS);
-
-  return (tmpreg);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group4 WakeUp Timer configuration functions
- *  @brief   WakeUp Timer configuration functions 
- *
-@verbatim   
- ===============================================================================
-            ##### WakeUp Timer configuration functions #####
- ===============================================================================  
-
-    [..] This section provide functions allowing to program and read the RTC WakeUp.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the RTC Wakeup clock source.
-  *         This function is available for STM32F072 devices.  
-  * @note   The WakeUp Clock source can only be changed when the RTC WakeUp
-  *         is disabled (Use the RTC_WakeUpCmd(DISABLE)).
-  * @param  RTC_WakeUpClock: Wakeup Clock source.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_WakeUpClock_RTCCLK_Div16
-  *            @arg RTC_WakeUpClock_RTCCLK_Div8
-  *            @arg RTC_WakeUpClock_RTCCLK_Div4
-  *            @arg RTC_WakeUpClock_RTCCLK_Div2
-  *            @arg RTC_WakeUpClock_CK_SPRE_16bits
-  *            @arg RTC_WakeUpClock_CK_SPRE_17bits
-  * @retval None
-  */
-void RTC_WakeUpClockConfig(uint32_t RTC_WakeUpClock)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_WAKEUP_CLOCK(RTC_WakeUpClock));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Clear the Wakeup Timer clock source bits in CR register */
-  RTC->CR &= (uint32_t)~RTC_CR_WUCKSEL;
-
-  /* Configure the clock source */
-  RTC->CR |= (uint32_t)RTC_WakeUpClock;
-  
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-}
-
-/**
-  * @brief  Configures the RTC Wakeup counter.
-  *         This function is available for STM32F072 devices.  
-  * @note   The RTC WakeUp counter can only be written when the RTC WakeUp
-  *         is disabled (Use the RTC_WakeUpCmd(DISABLE)).
-  * @param  RTC_WakeUpCounter: specifies the WakeUp counter.
-  *          This parameter can be a value from 0x0000 to 0xFFFF. 
-  * @retval None
-  */
-void RTC_SetWakeUpCounter(uint32_t RTC_WakeUpCounter)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_WAKEUP_COUNTER(RTC_WakeUpCounter));
-  
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-  
-  /* Configure the Wakeup Timer counter */
-  RTC->WUTR = (uint32_t)RTC_WakeUpCounter;
-  
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-}
-
-/**
-  * @brief  Returns the RTC WakeUp timer counter value.
-  *         This function is available for STM32F072 devices.  
-  * @param  None
-  * @retval The RTC WakeUp Counter value.
-  */
-uint32_t RTC_GetWakeUpCounter(void)
-{
-  /* Get the counter value */
-  return ((uint32_t)(RTC->WUTR & RTC_WUTR_WUT));
-}
-
-/**
-  * @brief  Enables or Disables the RTC WakeUp timer.
-  *         This function is available for STM32F072 devices.  
-  * @param  NewState: new state of the WakeUp timer.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-ErrorStatus RTC_WakeUpCmd(FunctionalState NewState)
-{
-  __IO uint32_t wutcounter = 0x00;
-  uint32_t wutwfstatus = 0x00;
-  ErrorStatus status = ERROR;
-  
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the Wakeup Timer */
-    RTC->CR |= (uint32_t)RTC_CR_WUTE;
-    status = SUCCESS;    
-  }
-  else
-  {
-    /* Disable the Wakeup Timer */
-    RTC->CR &= (uint32_t)~RTC_CR_WUTE;
-    /* Wait till RTC WUTWF flag is set and if Time out is reached exit */
-    do
-    {
-      wutwfstatus = RTC->ISR & RTC_ISR_WUTWF;
-      wutcounter++;  
-    } while((wutcounter != INITMODE_TIMEOUT) && (wutwfstatus == 0x00));
-    
-    if ((RTC->ISR & RTC_ISR_WUTWF) == RESET)
-    {
-      status = ERROR;
-    }
-    else
-    {
-      status = SUCCESS;
-    }    
-  }
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-  
-  return status;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group5 Daylight Saving configuration functions
- *  @brief   Daylight Saving configuration functions 
- *
-@verbatim   
- ===============================================================================
-               ##### WakeUp Timer configuration functions #####
- ===============================================================================
-    [..] This section provide functions allowing to program and read the RTC WakeUp. 
-
-  This section provide functions allowing to configure the RTC DayLight Saving.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Adds or substract one hour from the current time.
-  * @param  RTC_DayLightSaveOperation: the value of hour adjustment. 
-  *          This parameter can be one of the following values:
-  *            @arg RTC_DayLightSaving_SUB1H: Substract one hour (winter time)
-  *            @arg RTC_DayLightSaving_ADD1H: Add one hour (summer time)
-  * @param  RTC_StoreOperation: Specifies the value to be written in the BCK bit 
-  *                             in CR register to store the operation.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_StoreOperation_Reset: BCK Bit Reset
-  *            @arg RTC_StoreOperation_Set: BCK Bit Set
-  * @retval None
-  */
-void RTC_DayLightSavingConfig(uint32_t RTC_DayLightSaving, uint32_t RTC_StoreOperation)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_DAYLIGHT_SAVING(RTC_DayLightSaving));
-  assert_param(IS_RTC_STORE_OPERATION(RTC_StoreOperation));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Clear the bits to be configured */
-  RTC->CR &= (uint32_t)~(RTC_CR_BCK);
-
-  /* Configure the RTC_CR register */
-  RTC->CR |= (uint32_t)(RTC_DayLightSaving | RTC_StoreOperation);
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-}
-
-/**
-  * @brief  Returns the RTC Day Light Saving stored operation.
-  * @param  None
-  * @retval RTC Day Light Saving stored operation.
-  *          - RTC_StoreOperation_Reset
-  *          - RTC_StoreOperation_Set
-  */
-uint32_t RTC_GetStoreOperation(void)
-{
-  return (RTC->CR & RTC_CR_BCK);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group6 Output pin Configuration function
- *  @brief   Output pin Configuration function 
- *
-@verbatim   
- ===============================================================================
-                  ##### Output pin Configuration function #####
- ===============================================================================
-    [..] This section provide functions allowing to configure the RTC Output source.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the RTC output source (AFO_ALARM).
-  * @param  RTC_Output: Specifies which signal will be routed to the RTC output. 
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Output_Disable: No output selected
-  *            @arg RTC_Output_AlarmA: signal of AlarmA mapped to output
-  *            @arg RTC_Output_WakeUp: signal of WakeUp mapped to output, available only for STM32F072 devices  
-  * @param  RTC_OutputPolarity: Specifies the polarity of the output signal. 
-  *          This parameter can be one of the following:
-  *            @arg RTC_OutputPolarity_High: The output pin is high when the 
-  *                                          ALRAF is high (depending on OSEL)
-  *            @arg RTC_OutputPolarity_Low: The output pin is low when the 
-  *                                         ALRAF is high (depending on OSEL)
-  * @retval None
-  */
-void RTC_OutputConfig(uint32_t RTC_Output, uint32_t RTC_OutputPolarity)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_OUTPUT(RTC_Output));
-  assert_param(IS_RTC_OUTPUT_POL(RTC_OutputPolarity));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Clear the bits to be configured */
-  RTC->CR &= (uint32_t)~(RTC_CR_OSEL | RTC_CR_POL);
-
-  /* Configure the output selection and polarity */
-  RTC->CR |= (uint32_t)(RTC_Output | RTC_OutputPolarity);
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group7 Digital Calibration configuration functions
- *  @brief   Digital Calibration configuration functions 
- *
-@verbatim   
- ===============================================================================
-          ##### Digital Calibration configuration functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the RTC clock to be output through the relative pin.
-  * @param  NewState: new state of the digital calibration Output.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RTC_CalibOutputCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the RTC clock output */
-    RTC->CR |= (uint32_t)RTC_CR_COE;
-  }
-  else
-  { 
-    /* Disable the RTC clock output */
-    RTC->CR &= (uint32_t)~RTC_CR_COE;
-  }
-  
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF; 
-}
-
-/**
-  * @brief  Configure the Calibration Pinout (RTC_CALIB) Selection (1Hz or 512Hz).
-  * @param  RTC_CalibOutput: Select the Calibration output Selection .
-  *          This parameter can be one of the following values:
-  *            @arg RTC_CalibOutput_512Hz: A signal has a regular waveform at 512Hz. 
-  *            @arg RTC_CalibOutput_1Hz: A signal has a regular waveform at 1Hz.
-  * @retval None
-*/
-void RTC_CalibOutputConfig(uint32_t RTC_CalibOutput)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_CALIB_OUTPUT(RTC_CalibOutput));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-  
-  /*clear flags before config*/
-  RTC->CR &= (uint32_t)~(RTC_CR_CALSEL);
-
-  /* Configure the RTC_CR register */
-  RTC->CR |= (uint32_t)RTC_CalibOutput;
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-}
-
-/**
-  * @brief  Configures the Smooth Calibration Settings.
-  * @param  RTC_SmoothCalibPeriod: Select the Smooth Calibration Period.
-  *          This parameter can be can be one of the following values:
-  *            @arg RTC_SmoothCalibPeriod_32sec: The smooth calibration periode is 32s.
-  *            @arg RTC_SmoothCalibPeriod_16sec: The smooth calibration periode is 16s.
-  *            @arg RTC_SmoothCalibPeriod_8sec: The smooth calibartion periode is 8s.
-  * @param  RTC_SmoothCalibPlusPulses: Select to Set or reset the CALP bit.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_SmoothCalibPlusPulses_Set: Add one RTCCLK puls every 2**11 pulses.
-  *            @arg RTC_SmoothCalibPlusPulses_Reset: No RTCCLK pulses are added.
-  * @param  RTC_SmouthCalibMinusPulsesValue: Select the value of CALM[8:0] bits.
-  *          This parameter can be one any value from 0 to 0x000001FF.
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC Calib registers are configured
-  *          - ERROR: RTC Calib registers are not configured
-*/
-ErrorStatus RTC_SmoothCalibConfig(uint32_t RTC_SmoothCalibPeriod,
-                                  uint32_t RTC_SmoothCalibPlusPulses,
-                                  uint32_t RTC_SmouthCalibMinusPulsesValue)
-{
-  ErrorStatus status = ERROR;
-  uint32_t recalpfcount = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_SMOOTH_CALIB_PERIOD(RTC_SmoothCalibPeriod));
-  assert_param(IS_RTC_SMOOTH_CALIB_PLUS(RTC_SmoothCalibPlusPulses));
-  assert_param(IS_RTC_SMOOTH_CALIB_MINUS(RTC_SmouthCalibMinusPulsesValue));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-  
-  /* check if a calibration is pending*/
-  if ((RTC->ISR & RTC_ISR_RECALPF) != RESET)
-  {
-    /* wait until the Calibration is completed*/
-    while (((RTC->ISR & RTC_ISR_RECALPF) != RESET) && (recalpfcount != RECALPF_TIMEOUT))
-    {
-      recalpfcount++;
-    }
-  }
-
-  /* check if the calibration pending is completed or if there is no calibration operation at all*/
-  if ((RTC->ISR & RTC_ISR_RECALPF) == RESET)
-  {
-    /* Configure the Smooth calibration settings */
-    RTC->CALR = (uint32_t)((uint32_t)RTC_SmoothCalibPeriod | (uint32_t)RTC_SmoothCalibPlusPulses | (uint32_t)RTC_SmouthCalibMinusPulsesValue);
-
-    status = SUCCESS;
-  }
-  else
-  {
-    status = ERROR;
-  }
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-  
-  return (ErrorStatus)(status);
-}
-
-/**
-  * @}
-  */
-
-
-/** @defgroup RTC_Group8 TimeStamp configuration functions
- *  @brief   TimeStamp configuration functions 
- *
-@verbatim   
- ===============================================================================
-          ##### TimeStamp configuration functions #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or Disables the RTC TimeStamp functionality with the 
-  *         specified time stamp pin stimulating edge.
-  * @param  RTC_TimeStampEdge: Specifies the pin edge on which the TimeStamp is 
-  *         activated.
-  *          This parameter can be one of the following:
-  *            @arg RTC_TimeStampEdge_Rising: the Time stamp event occurs on the rising 
-  *                                           edge of the related pin.
-  *            @arg RTC_TimeStampEdge_Falling: the Time stamp event occurs on the 
-  *                                            falling edge of the related pin.
-  * @param  NewState: new state of the TimeStamp.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RTC_TimeStampCmd(uint32_t RTC_TimeStampEdge, FunctionalState NewState)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_TIMESTAMP_EDGE(RTC_TimeStampEdge));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  /* Get the RTC_CR register and clear the bits to be configured */
-  tmpreg = (uint32_t)(RTC->CR & (uint32_t)~(RTC_CR_TSEDGE | RTC_CR_TSE));
-
-  /* Get the new configuration */
-  if (NewState != DISABLE)
-  {
-    tmpreg |= (uint32_t)(RTC_TimeStampEdge | RTC_CR_TSE);
-  }
-  else
-  {
-    tmpreg |= (uint32_t)(RTC_TimeStampEdge);
-  }
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  /* Configure the Time Stamp TSEDGE and Enable bits */
-  RTC->CR = (uint32_t)tmpreg;
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-}
-
-/**
-  * @brief  Get the RTC TimeStamp value and masks.
-  * @param  RTC_Format: specifies the format of the output parameters.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_Format_BIN: Binary data format 
-  *            @arg RTC_Format_BCD: BCD data format
-  * @param RTC_StampTimeStruct: pointer to a RTC_TimeTypeDef structure that will 
-  *                             contains the TimeStamp time values. 
-  * @param RTC_StampDateStruct: pointer to a RTC_DateTypeDef structure that will 
-  *                             contains the TimeStamp date values.     
-  * @retval None
-  */
-void RTC_GetTimeStamp(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_StampTimeStruct, 
-                                      RTC_DateTypeDef* RTC_StampDateStruct)
-{
-  uint32_t tmptime = 0, tmpdate = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_FORMAT(RTC_Format));
-
-  /* Get the TimeStamp time and date registers values */
-  tmptime = (uint32_t)(RTC->TSTR & RTC_TR_RESERVED_MASK);
-  tmpdate = (uint32_t)(RTC->TSDR & RTC_DR_RESERVED_MASK);
-
-  /* Fill the Time structure fields with the read parameters */
-  RTC_StampTimeStruct->RTC_Hours = (uint8_t)((tmptime & (RTC_TR_HT | RTC_TR_HU)) >> 16);
-  RTC_StampTimeStruct->RTC_Minutes = (uint8_t)((tmptime & (RTC_TR_MNT | RTC_TR_MNU)) >> 8);
-  RTC_StampTimeStruct->RTC_Seconds = (uint8_t)(tmptime & (RTC_TR_ST | RTC_TR_SU));
-  RTC_StampTimeStruct->RTC_H12 = (uint8_t)((tmptime & (RTC_TR_PM)) >> 16);  
-
-  /* Fill the Date structure fields with the read parameters */
-  RTC_StampDateStruct->RTC_Year = 0;
-  RTC_StampDateStruct->RTC_Month = (uint8_t)((tmpdate & (RTC_DR_MT | RTC_DR_MU)) >> 8);
-  RTC_StampDateStruct->RTC_Date = (uint8_t)(tmpdate & (RTC_DR_DT | RTC_DR_DU));
-  RTC_StampDateStruct->RTC_WeekDay = (uint8_t)((tmpdate & (RTC_DR_WDU)) >> 13);
-
-  /* Check the input parameters format */
-  if (RTC_Format == RTC_Format_BIN)
-  {
-    /* Convert the Time structure parameters to Binary format */
-    RTC_StampTimeStruct->RTC_Hours = (uint8_t)RTC_Bcd2ToByte(RTC_StampTimeStruct->RTC_Hours);
-    RTC_StampTimeStruct->RTC_Minutes = (uint8_t)RTC_Bcd2ToByte(RTC_StampTimeStruct->RTC_Minutes);
-    RTC_StampTimeStruct->RTC_Seconds = (uint8_t)RTC_Bcd2ToByte(RTC_StampTimeStruct->RTC_Seconds);
-
-    /* Convert the Date structure parameters to Binary format */
-    RTC_StampDateStruct->RTC_Month = (uint8_t)RTC_Bcd2ToByte(RTC_StampDateStruct->RTC_Month);
-    RTC_StampDateStruct->RTC_Date = (uint8_t)RTC_Bcd2ToByte(RTC_StampDateStruct->RTC_Date);
-    RTC_StampDateStruct->RTC_WeekDay = (uint8_t)RTC_Bcd2ToByte(RTC_StampDateStruct->RTC_WeekDay);
-  }
-}
-
-/**
-  * @brief  Get the RTC timestamp Subseconds value.
-  * @param  None
-  * @retval RTC current timestamp Subseconds value.
-  */
-uint32_t RTC_GetTimeStampSubSecond(void)
-{
-  /* Get timestamp subseconds values from the correspondent registers */
-  return (uint32_t)(RTC->TSSSR);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group9 Tampers configuration functions
- *  @brief   Tampers configuration functions 
- *
-@verbatim   
- ===============================================================================
-          ##### Tampers configuration functions #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the select Tamper pin edge.
-  * @param  RTC_Tamper: Selected tamper pin.
-  *          This parameter can be any combination of the following values:
-  *            @arg RTC_Tamper_1: Select Tamper 1.
-  *            @arg RTC_Tamper_2: Select Tamper 2.
-  * @param  RTC_TamperTrigger: Specifies the trigger on the tamper pin that 
-  *                            stimulates tamper event. 
-  *          This parameter can be one of the following values:
-  *            @arg RTC_TamperTrigger_RisingEdge: Rising Edge of the tamper pin causes tamper event.
-  *            @arg RTC_TamperTrigger_FallingEdge: Falling Edge of the tamper pin causes tamper event.
-  *            @arg RTC_TamperTrigger_LowLevel: Low Level of the tamper pin causes tamper event.
-  *            @arg RTC_TamperTrigger_HighLevel: High Level of the tamper pin causes tamper event.
-  * @retval None
-  */
-void RTC_TamperTriggerConfig(uint32_t RTC_Tamper, uint32_t RTC_TamperTrigger)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_TAMPER(RTC_Tamper)); 
-  assert_param(IS_RTC_TAMPER_TRIGGER(RTC_TamperTrigger));
- 
-  if (RTC_TamperTrigger == RTC_TamperTrigger_RisingEdge)
-  {  
-    /* Configure the RTC_TAFCR register */
-    RTC->TAFCR &= (uint32_t)((uint32_t)~(RTC_Tamper << 1));	
-  }
-  else
-  { 
-    /* Configure the RTC_TAFCR register */
-    RTC->TAFCR |= (uint32_t)(RTC_Tamper << 1);  
-  }  
-}
-
-/**
-  * @brief  Enables or Disables the Tamper detection.
-  * @param  RTC_Tamper: Selected tamper pin.
-  *          This parameter can be any combination of the following values:
-  *            @arg RTC_Tamper_1: Select Tamper 1.
-  *            @arg RTC_Tamper_2: Select Tamper 2.
-  * @param  NewState: new state of the tamper pin.
-  *         This parameter can be: ENABLE or DISABLE.                   
-  * @retval None
-  */
-void RTC_TamperCmd(uint32_t RTC_Tamper, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_TAMPER(RTC_Tamper));  
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected Tamper pin */
-    RTC->TAFCR |= (uint32_t)RTC_Tamper;
-  }
-  else
-  {
-    /* Disable the selected Tamper pin */
-    RTC->TAFCR &= (uint32_t)~RTC_Tamper;    
-  }  
-}
-
-/**
-  * @brief  Configures the Tampers Filter.
-  * @param  RTC_TamperFilter: Specifies the tampers filter.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_TamperFilter_Disable: Tamper filter is disabled.
-  *            @arg RTC_TamperFilter_2Sample: Tamper is activated after 2 consecutive 
-  *                                           samples at the active level 
-  *            @arg RTC_TamperFilter_4Sample: Tamper is activated after 4 consecutive 
-  *                                           samples at the active level
-  *            @arg RTC_TamperFilter_8Sample: Tamper is activated after 8 consecutive 
-  *                                           samples at the active level 
-  * @retval None
-  */
-void RTC_TamperFilterConfig(uint32_t RTC_TamperFilter)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_TAMPER_FILTER(RTC_TamperFilter));
-   
-  /* Clear TAMPFLT[1:0] bits in the RTC_TAFCR register */
-  RTC->TAFCR &= (uint32_t)~(RTC_TAFCR_TAMPFLT);
-
-  /* Configure the RTC_TAFCR register */
-  RTC->TAFCR |= (uint32_t)RTC_TamperFilter;
-}
-
-/**
-  * @brief  Configures the Tampers Sampling Frequency.
-  * @param  RTC_TamperSamplingFreq: Specifies the tampers Sampling Frequency.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_TamperSamplingFreq_RTCCLK_Div32768: Each of the tamper inputs are sampled
-  *                                                         with a frequency =  RTCCLK / 32768
-  *            @arg RTC_TamperSamplingFreq_RTCCLK_Div16384: Each of the tamper inputs are sampled
-  *                                                         with a frequency =  RTCCLK / 16384
-  *            @arg RTC_TamperSamplingFreq_RTCCLK_Div8192: Each of the tamper inputs are sampled
-  *                                                        with a frequency =  RTCCLK / 8192
-  *            @arg RTC_TamperSamplingFreq_RTCCLK_Div4096: Each of the tamper inputs are sampled
-  *                                                        with a frequency =  RTCCLK / 4096
-  *            @arg RTC_TamperSamplingFreq_RTCCLK_Div2048: Each of the tamper inputs are sampled
-  *                                                        with a frequency =  RTCCLK / 2048
-  *            @arg RTC_TamperSamplingFreq_RTCCLK_Div1024: Each of the tamper inputs are sampled
-  *                                                        with a frequency =  RTCCLK / 1024
-  *            @arg RTC_TamperSamplingFreq_RTCCLK_Div512: Each of the tamper inputs are sampled
-  *                                                       with a frequency =  RTCCLK / 512  
-  *            @arg RTC_TamperSamplingFreq_RTCCLK_Div256: Each of the tamper inputs are sampled
-  *                                                       with a frequency =  RTCCLK / 256  
-  * @retval None
-  */
-void RTC_TamperSamplingFreqConfig(uint32_t RTC_TamperSamplingFreq)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_TAMPER_SAMPLING_FREQ(RTC_TamperSamplingFreq));
- 
-  /* Clear TAMPFREQ[2:0] bits in the RTC_TAFCR register */
-  RTC->TAFCR &= (uint32_t)~(RTC_TAFCR_TAMPFREQ);
-
-  /* Configure the RTC_TAFCR register */
-  RTC->TAFCR |= (uint32_t)RTC_TamperSamplingFreq;
-}
-
-/**
-  * @brief  Configures the Tampers Pins input Precharge Duration.
-  * @param  RTC_TamperPrechargeDuration: Specifies the Tampers Pins input
-  *         Precharge Duration.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_TamperPrechargeDuration_1RTCCLK: Tamper pins are pre-charged before sampling during 1 RTCCLK cycle
-  *            @arg RTC_TamperPrechargeDuration_2RTCCLK: Tamper pins are pre-charged before sampling during 2 RTCCLK cycle
-  *            @arg RTC_TamperPrechargeDuration_4RTCCLK: Tamper pins are pre-charged before sampling during 4 RTCCLK cycle    
-  *            @arg RTC_TamperPrechargeDuration_8RTCCLK: Tamper pins are pre-charged before sampling during 8 RTCCLK cycle
-  * @retval None
-  */
-void RTC_TamperPinsPrechargeDuration(uint32_t RTC_TamperPrechargeDuration)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_TAMPER_PRECHARGE_DURATION(RTC_TamperPrechargeDuration));
-   
-  /* Clear TAMPPRCH[1:0] bits in the RTC_TAFCR register */
-  RTC->TAFCR &= (uint32_t)~(RTC_TAFCR_TAMPPRCH);
-
-  /* Configure the RTC_TAFCR register */
-  RTC->TAFCR |= (uint32_t)RTC_TamperPrechargeDuration;
-}
-
-/**
-  * @brief  Enables or Disables the TimeStamp on Tamper Detection Event.
-  * @note   The timestamp is valid even the TSE bit in tamper control register 
-  *         is reset.   
-  * @param  NewState: new state of the timestamp on tamper event.
-  *         This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RTC_TimeStampOnTamperDetectionCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-   
-  if (NewState != DISABLE)
-  {
-    /* Save timestamp on tamper detection event */
-    RTC->TAFCR |= (uint32_t)RTC_TAFCR_TAMPTS;
-  }
-  else
-  {
-    /* Tamper detection does not cause a timestamp to be saved */
-    RTC->TAFCR &= (uint32_t)~RTC_TAFCR_TAMPTS;    
-  }
-}
-
-/**
-  * @brief  Enables or Disables the Precharge of Tamper pin.
-  * @param  NewState: new state of tamper pull up.
-  *          This parameter can be: ENABLE or DISABLE.                   
-  * @retval None
-  */
-void RTC_TamperPullUpCmd(FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
- if (NewState != DISABLE)
-  {
-    /* Enable precharge of the selected Tamper pin */
-    RTC->TAFCR &= (uint32_t)~RTC_TAFCR_TAMPPUDIS; 
-  }
-  else
-  {
-    /* Disable precharge of the selected Tamper pin */
-    RTC->TAFCR |= (uint32_t)RTC_TAFCR_TAMPPUDIS;    
-  } 
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group10 Backup Data Registers configuration functions
- *  @brief   Backup Data Registers configuration functions  
- *
-@verbatim   
- ===============================================================================
-          ##### Backup Data Registers configuration functions ##### 
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Writes a data in a specified RTC Backup data register.
-  * @param  RTC_BKP_DR: RTC Backup data Register number.
-  *          This parameter can be: RTC_BKP_DRx where x can be from 0 to 4 to 
-  *                                 specify the register.
-  * @param  Data: Data to be written in the specified RTC Backup data register.                     
-  * @retval None
-  */
-void RTC_WriteBackupRegister(uint32_t RTC_BKP_DR, uint32_t Data)
-{
-  __IO uint32_t tmp = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RTC_BKP(RTC_BKP_DR));
-
-  tmp = RTC_BASE + 0x50;
-  tmp += (RTC_BKP_DR * 4);
-
-  /* Write the specified register */
-  *(__IO uint32_t *)tmp = (uint32_t)Data;
-}
-
-/**
-  * @brief  Reads data from the specified RTC Backup data Register.
-  * @param  RTC_BKP_DR: RTC Backup data Register number.
-  *          This parameter can be: RTC_BKP_DRx where x can be from 0 to 19 to 
-  *                          specify the register.                   
-  * @retval None
-  */
-uint32_t RTC_ReadBackupRegister(uint32_t RTC_BKP_DR)
-{
-  __IO uint32_t tmp = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RTC_BKP(RTC_BKP_DR));
-
-  tmp = RTC_BASE + 0x50;
-  tmp += (RTC_BKP_DR * 4);
-  
-  /* Read the specified register */
-  return (*(__IO uint32_t *)tmp);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group11 Output Type Config configuration functions
- *  @brief   Output Type Config configuration functions  
- *
-@verbatim   
- ===============================================================================
-             ##### Output Type Config configuration functions ##### 
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the RTC Output Pin mode. 
-  * @param  RTC_OutputType: specifies the RTC Output (PC13) pin mode.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_OutputType_OpenDrain: RTC Output (PC13) is configured in 
-  *                                    Open Drain mode.
-  *            @arg RTC_OutputType_PushPull:  RTC Output (PC13) is configured in 
-  *                                    Push Pull mode.    
-  * @retval None
-  */
-void RTC_OutputTypeConfig(uint32_t RTC_OutputType)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_OUTPUT_TYPE(RTC_OutputType));
-  
-  RTC->TAFCR &= (uint32_t)~(RTC_TAFCR_ALARMOUTTYPE);
-  RTC->TAFCR |= (uint32_t)(RTC_OutputType);  
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group12 Shift control synchronisation functions
- *  @brief   Shift control synchronisation functions 
- *
-@verbatim   
- ===============================================================================
-            ##### Shift control synchronisation functions #####
- ===============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the Synchronization Shift Control Settings.
-  * @note   When REFCKON is set, firmware must not write to Shift control register 
-  * @param  RTC_ShiftAdd1S: Select to add or not 1 second to the time Calendar.
-  *          This parameter can be one of the following values :
-  *            @arg RTC_ShiftAdd1S_Set: Add one second to the clock calendar. 
-  *            @arg RTC_ShiftAdd1S_Reset: No effect.
-  * @param  RTC_ShiftSubFS: Select the number of Second Fractions to Substitute.
-  *         This parameter can be one any value from 0 to 0x7FFF.
-  * @retval An ErrorStatus enumeration value:
-  *          - SUCCESS: RTC Shift registers are configured
-  *          - ERROR: RTC Shift registers are not configured
-*/
-ErrorStatus RTC_SynchroShiftConfig(uint32_t RTC_ShiftAdd1S, uint32_t RTC_ShiftSubFS)
-{
-  ErrorStatus status = ERROR;
-  uint32_t shpfcount = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_SHIFT_ADD1S(RTC_ShiftAdd1S));
-  assert_param(IS_RTC_SHIFT_SUBFS(RTC_ShiftSubFS));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-  
-  /* Check if a Shift is pending*/
-  if ((RTC->ISR & RTC_ISR_SHPF) != RESET)
-  {
-    /* Wait until the shift is completed*/
-    while (((RTC->ISR & RTC_ISR_SHPF) != RESET) && (shpfcount != SHPF_TIMEOUT))
-    {
-      shpfcount++;
-    }
-  }
-
-  /* Check if the Shift pending is completed or if there is no Shift operation at all*/
-  if ((RTC->ISR & RTC_ISR_SHPF) == RESET)
-  {
-    /* check if the reference clock detection is disabled */
-    if((RTC->CR & RTC_CR_REFCKON) == RESET)
-    {
-      /* Configure the Shift settings */
-      RTC->SHIFTR = (uint32_t)(uint32_t)(RTC_ShiftSubFS) | (uint32_t)(RTC_ShiftAdd1S);
-    
-      if(RTC_WaitForSynchro() == ERROR)
-      {
-        status = ERROR;
-      }
-      else
-      {
-        status = SUCCESS;
-      }
-    }
-    else
-    {
-      status = ERROR;
-    }
-  }
-  else
-  {
-    status = ERROR;
-  }
-
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF;
-  
-  return (ErrorStatus)(status);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Group13 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions  
- *
-@verbatim   
- ===============================================================================
-            ##### Interrupts and flags management functions #####
- ===============================================================================  
-    [..] All RTC interrupts are connected to the EXTI controller.
- 
-         (+) To enable the RTC Alarm interrupt, the following sequence is required:
-             (++) Configure and enable the EXTI Line 17 in interrupt mode and select the rising 
-                  edge sensitivity using the EXTI_Init() function.
-             (++) Configure and enable the RTC_Alarm IRQ channel in the NVIC using the NVIC_Init()
-                  function.
-             (++) Configure the RTC to generate RTC alarms (Alarm A) using
-                  the RTC_SetAlarm() and RTC_AlarmCmd() functions.
-
-         (+) To enable the RTC Tamper interrupt, the following sequence is required:
-             (++) Configure and enable the EXTI Line 19 in interrupt mode and select the rising 
-                  edge sensitivity using the EXTI_Init() function.
-             (++) Configure and enable the TAMP_STAMP IRQ channel in the NVIC using the NVIC_Init()
-                  function.
-             (++) Configure the RTC to detect the RTC tamper event using the 
-                  RTC_TamperTriggerConfig() and RTC_TamperCmd() functions.
-
-         (+) To enable the RTC TimeStamp interrupt, the following sequence is required:
-             (++) Configure and enable the EXTI Line 19 in interrupt mode and select the rising 
-                  edge sensitivity using the EXTI_Init() function.
-             (++) Configure and enable the TAMP_STAMP IRQ channel in the NVIC using the NVIC_Init()
-                  function.
-             (++) Configure the RTC to detect the RTC time-stamp event using the 
-                  RTC_TimeStampCmd() functions.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified RTC interrupts.
-  * @param  RTC_IT: specifies the RTC interrupt sources to be enabled or disabled. 
-  *          This parameter can be any combination of the following values:
-  *            @arg RTC_IT_TS:  Time Stamp interrupt mask
-  *            @arg RTC_IT_WUT:  WakeUp Timer interrupt mask, available only for STM32F072 devices  
-  *            @arg RTC_IT_ALRA:  Alarm A interrupt mask
-  *            @arg RTC_IT_TAMP: Tamper event interrupt mask
-  * @param  NewState: new state of the specified RTC interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void RTC_ITConfig(uint32_t RTC_IT, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_CONFIG_IT(RTC_IT));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  /* Disable the write protection for RTC registers */
-  RTC->WPR = 0xCA;
-  RTC->WPR = 0x53;
-
-  if (NewState != DISABLE)
-  {
-    /* Configure the Interrupts in the RTC_CR register */
-    RTC->CR |= (uint32_t)(RTC_IT & ~RTC_TAFCR_TAMPIE);
-    /* Configure the Tamper Interrupt in the RTC_TAFCR */
-    RTC->TAFCR |= (uint32_t)(RTC_IT & RTC_TAFCR_TAMPIE);
-  }
-  else
-  {
-    /* Configure the Interrupts in the RTC_CR register */
-    RTC->CR &= (uint32_t)~(RTC_IT & (uint32_t)~RTC_TAFCR_TAMPIE);
-    /* Configure the Tamper Interrupt in the RTC_TAFCR */
-    RTC->TAFCR &= (uint32_t)~(RTC_IT & RTC_TAFCR_TAMPIE);
-  }
-  /* Enable the write protection for RTC registers */
-  RTC->WPR = 0xFF; 
-}
-
-/**
-  * @brief  Checks whether the specified RTC flag is set or not.
-  * @param  RTC_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_FLAG_RECALPF: RECALPF event flag
-  *            @arg RTC_FLAG_TAMP2F: Tamper 2 event flag   
-  *            @arg RTC_FLAG_TAMP1F: Tamper 1 event flag
-  *            @arg RTC_FLAG_TSOVF: Time Stamp OverFlow flag
-  *            @arg RTC_FLAG_TSF: Time Stamp event flag
-  *            @arg RTC_FLAG_WUTF: WakeUp Timer flag, available only for STM32F072 devices  
-  *            @arg RTC_FLAG_ALRAF: Alarm A flag
-  *            @arg RTC_FLAG_INITF: Initialization mode flag
-  *            @arg RTC_FLAG_RSF: Registers Synchronized flag
-  *            @arg RTC_FLAG_INITS: Registers Configured flag
-  * @retval The new state of RTC_FLAG (SET or RESET).
-  */
-FlagStatus RTC_GetFlagStatus(uint32_t RTC_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-  uint32_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_RTC_GET_FLAG(RTC_FLAG));
-  
-  /* Get all the flags */
-  tmpreg = (uint32_t)(RTC->ISR & RTC_FLAGS_MASK);
-  
-  /* Return the status of the flag */
-  if ((tmpreg & RTC_FLAG) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the RTC's pending flags.
-  * @param  RTC_FLAG: specifies the RTC flag to clear.
-  *          This parameter can be any combination of the following values:
-  *            @arg RTC_FLAG_TAMP2F: Tamper 2 event flag
-  *            @arg RTC_FLAG_TAMP1F: Tamper 1 event flag 
-  *            @arg RTC_FLAG_TSOVF: Time Stamp Overflow flag 
-  *            @arg RTC_FLAG_TSF: Time Stamp event flag
-  *            @arg RTC_FLAG_WUTF: WakeUp Timer flag, available only for STM32F072 devices  
-  *            @arg RTC_FLAG_ALRAF: Alarm A flag
-  *            @arg RTC_FLAG_RSF: Registers Synchronized flag
-  * @retval None
-  */
-void RTC_ClearFlag(uint32_t RTC_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_RTC_CLEAR_FLAG(RTC_FLAG));
-
-  /* Clear the Flags in the RTC_ISR register */
-  RTC->ISR = (uint32_t)((uint32_t)(~((RTC_FLAG | RTC_ISR_INIT)& 0x0001FFFF) | (uint32_t)(RTC->ISR & RTC_ISR_INIT)));    
-}
-
-/**
-  * @brief  Checks whether the specified RTC interrupt has occurred or not.
-  * @param  RTC_IT: specifies the RTC interrupt source to check.
-  *          This parameter can be one of the following values:
-  *            @arg RTC_IT_TS: Time Stamp interrupt
-  *            @arg RTC_IT_WUT: WakeUp Timer interrupt, available only for STM32F072 devices
-  *            @arg RTC_IT_ALRA: Alarm A interrupt 
-  *            @arg RTC_IT_TAMP1: Tamper1 event interrupt 
-  *            @arg RTC_IT_TAMP2: Tamper2 event interrupt 
-  * @retval The new state of RTC_IT (SET or RESET).
-  */
-ITStatus RTC_GetITStatus(uint32_t RTC_IT)
-{
-  ITStatus bitstatus = RESET;
-  uint32_t tmpreg = 0, enablestatus = 0;
- 
-  /* Check the parameters */
-  assert_param(IS_RTC_GET_IT(RTC_IT));
-  
-  /* Get the TAMPER Interrupt enable bit and pending bit */
-  tmpreg = (uint32_t)(RTC->TAFCR & (RTC_TAFCR_TAMPIE));
- 
-  /* Get the Interrupt enable Status */
-  enablestatus = (uint32_t)((RTC->CR & RTC_IT) | (tmpreg & ((RTC_IT >> (RTC_IT >> 18)) >> 15)));
-  
-  /* Get the Interrupt pending bit */
-  tmpreg = (uint32_t)((RTC->ISR & (uint32_t)(RTC_IT >> 4)));
-  
-  /* Get the status of the Interrupt */
-  if ((enablestatus != (uint32_t)RESET) && ((tmpreg & 0x0000FFFF) != (uint32_t)RESET))
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the RTC's interrupt pending bits.
-  * @param  RTC_IT: specifies the RTC interrupt pending bit to clear.
-  *          This parameter can be any combination of the following values:
-  *            @arg RTC_IT_TS: Time Stamp interrupt 
-  *            @arg RTC_IT_WUT: WakeUp Timer interrupt, available only for STM32F072 devices
-  *            @arg RTC_IT_ALRA: Alarm A interrupt 
-  *            @arg RTC_IT_TAMP1: Tamper1 event interrupt
-  *            @arg RTC_IT_TAMP2: Tamper2 event interrupt
-  * @retval None
-  */
-void RTC_ClearITPendingBit(uint32_t RTC_IT)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_CLEAR_IT(RTC_IT));
-
-  /* Get the RTC_ISR Interrupt pending bits mask */
-  tmpreg = (uint32_t)(RTC_IT >> 4);
-
-  /* Clear the interrupt pending bits in the RTC_ISR register */
-  RTC->ISR = (uint32_t)((uint32_t)(~((tmpreg | RTC_ISR_INIT)& 0x0000FFFF) | (uint32_t)(RTC->ISR & RTC_ISR_INIT))); 
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @brief  Converts a 2 digit decimal to BCD format.
-  * @param  Value: Byte to be converted.
-  * @retval Converted byte
-  */
-static uint8_t RTC_ByteToBcd2(uint8_t Value)
-{
-  uint8_t bcdhigh = 0;
-  
-  while (Value >= 10)
-  {
-    bcdhigh++;
-    Value -= 10;
-  }
-  
-  return  ((uint8_t)(bcdhigh << 4) | Value);
-}
-
-/**
-  * @brief  Convert from 2 digit BCD to Binary.
-  * @param  Value: BCD value to be converted.
-  * @retval Converted word
-  */
-static uint8_t RTC_Bcd2ToByte(uint8_t Value)
-{
-  uint8_t tmp = 0;
-  tmp = ((uint8_t)(Value & (uint8_t)0xF0) >> (uint8_t)0x4) * 10;
-  return (tmp + (Value & (uint8_t)0x0F));
-}
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_spi.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_spi.c
deleted file mode 100644
index e0c148b..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_spi.c	
+++ /dev/null
@@ -1,1334 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_spi.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Serial peripheral interface (SPI):
-  *           + Initialization and Configuration
-  *           + Data transfers functions
-  *           + Hardware CRC Calculation
-  *           + DMA transfers management
-  *           + Interrupts and flags management
-  *
-  *  @verbatim
-
- ===============================================================================
-                       ##### How to use this driver #####
- ===============================================================================
-    [..]
-        (#) Enable peripheral clock using RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE)
-            function for SPI1 or using RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE)
-            function for SPI2.
-  
-        (#) Enable SCK, MOSI, MISO and NSS GPIO clocks using 
-            RCC_AHBPeriphClockCmd() function. 
-  
-        (#) Peripherals alternate function: 
-            (++) Connect the pin to the desired peripherals' Alternate 
-                 Function (AF) using GPIO_PinAFConfig() function.
-            (++) Configure the desired pin in alternate function by:
-                 GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF.
-            (++) Select the type, pull-up/pull-down and output speed via 
-                 GPIO_PuPd, GPIO_OType and GPIO_Speed members.
-            (++) Call GPIO_Init() function.
-  
-        (#) Program the Polarity, Phase, First Data, Baud Rate Prescaler, Slave 
-            Management, Peripheral Mode and CRC Polynomial values using the SPI_Init()
-            function.In I2S mode, program the Mode, Standard, Data Format, MCLK 
-            Output, Audio frequency and Polarity using I2S_Init() function.
-  
-        (#) Configure the FIFO threshold using SPI_RxFIFOThresholdConfig() to select 
-            at which threshold the RXNE event is generated.
-            
-        (#) Enable the NVIC and the corresponding interrupt using the function 
-            SPI_ITConfig() if you need to use interrupt mode. 
-  
-        (#) When using the DMA mode 
-            (++) Configure the DMA using DMA_Init() function.
-            (++) Active the needed channel Request using SPI_I2S_DMACmd() function.
-   
-        (#) Enable the SPI using the SPI_Cmd() function or enable the I2S using
-            I2S_Cmd().
-   
-        (#) Enable the DMA using the DMA_Cmd() function when using DMA mode. 
-  
-        (#) Optionally, you can enable/configure the following parameters without
-            re-initialization (i.e there is no need to call again SPI_Init() function):
-            (++) When bidirectional mode (SPI_Direction_1Line_Rx or SPI_Direction_1Line_Tx)
-                 is programmed as Data direction parameter using the SPI_Init() 
-                 function it can be possible to switch between SPI_Direction_Tx 
-                 or SPI_Direction_Rx using the SPI_BiDirectionalLineConfig() function.
-            (++) When SPI_NSS_Soft is selected as Slave Select Management parameter 
-                 using the SPI_Init() function it can be possible to manage the 
-                 NSS internal signal using the SPI_NSSInternalSoftwareConfig() function.
-            (++) Reconfigure the data size using the SPI_DataSizeConfig() function.
-            (++) Enable or disable the SS output using the SPI_SSOutputCmd() function.  
-  
-        (#) To use the CRC Hardware calculation feature refer to the Peripheral 
-            CRC hardware Calculation subsection.
-  
-    @endverbatim 
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_spi.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup SPI
-  * @brief SPI driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* SPI registers Masks */
-#define CR1_CLEAR_MASK       ((uint16_t)0x3040)
-#define CR1_CLEAR_MASK2      ((uint16_t)0xFFFB)
-#define CR2_LDMA_MASK        ((uint16_t)0x9FFF)
-
-#define I2SCFGR_CLEAR_Mask   ((uint16_t)0xF040)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup SPI_Private_Functions
-  * @{
-  */
-
-/** @defgroup SPI_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions 
- *
-@verbatim   
- ===============================================================================
-           ##### Initialization and Configuration functions #####
- ===============================================================================
-    [..] This section provides a set of functions allowing to initialize the SPI Direction,
-         SPI Mode, SPI Data Size, SPI Polarity, SPI Phase, SPI NSS Management, SPI Baud
-         Rate Prescaler, SPI First Bit and SPI CRC Polynomial.
-
-    [..] The SPI_Init() function follows the SPI configuration procedures for Master mode
-         and Slave mode (details for these procedures are available in reference manual).
-         
-    [..] When the Software NSS management (SPI_InitStruct->SPI_NSS = SPI_NSS_Soft) is selected,
-         use the following function to manage the NSS bit:
-         void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft);
-
-    [..] In Master mode, when the Hardware NSS management (SPI_InitStruct->SPI_NSS = SPI_NSS_Hard)
-         is selected, use the follwoing function to enable the NSS output feature.
-         void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
-
-    [..] The NSS pulse mode can be managed by the SPI TI mode when enabling it using the following function:
-         void SPI_TIModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
-         And it can be managed by software in the SPI Motorola mode using this function: 
-         void SPI_NSSPulseModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
-
-    [..] This section provides also functions to initialize the I2S Mode, Standard, 
-         Data Format, MCLK Output, Audio frequency and Polarity.
-  
-    [..] The I2S_Init() function follows the I2S configuration procedures for Master mode
-         and Slave mode.
-  
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the SPIx peripheral registers to their default
-  *         reset values.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  *         I2S mode is not supported for STM32F030 devices.      
-  * @retval None
-  */
-void SPI_I2S_DeInit(SPI_TypeDef* SPIx)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-
-  if (SPIx == SPI1)
-  {
-    /* Enable SPI1 reset state */
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);
-    /* Release SPI1 from reset state */
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE);
-  }
-  else
-  {
-    if (SPIx == SPI2)
-    {
-      /* Enable SPI2 reset state */
-      RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE);
-      /* Release SPI2 from reset state */
-      RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, DISABLE);
-    }
-  }
-}
-
-/**
-  * @brief  Fills each SPI_InitStruct member with its default value.
-  * @param  SPI_InitStruct: pointer to a SPI_InitTypeDef structure which will be initialized.
-  * @retval None
-  */
-void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct)
-{
-/*--------------- Reset SPI init structure parameters values -----------------*/
-  /* Initialize the SPI_Direction member */
-  SPI_InitStruct->SPI_Direction = SPI_Direction_2Lines_FullDuplex;
-  /* Initialize the SPI_Mode member */
-  SPI_InitStruct->SPI_Mode = SPI_Mode_Slave;
-  /* Initialize the SPI_DataSize member */
-  SPI_InitStruct->SPI_DataSize = SPI_DataSize_8b;
-  /* Initialize the SPI_CPOL member */
-  SPI_InitStruct->SPI_CPOL = SPI_CPOL_Low;
-  /* Initialize the SPI_CPHA member */
-  SPI_InitStruct->SPI_CPHA = SPI_CPHA_1Edge;
-  /* Initialize the SPI_NSS member */
-  SPI_InitStruct->SPI_NSS = SPI_NSS_Hard;
-  /* Initialize the SPI_BaudRatePrescaler member */
-  SPI_InitStruct->SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
-  /* Initialize the SPI_FirstBit member */
-  SPI_InitStruct->SPI_FirstBit = SPI_FirstBit_MSB;
-  /* Initialize the SPI_CRCPolynomial member */
-  SPI_InitStruct->SPI_CRCPolynomial = 7;
-}
-
-/**
-  * @brief  Initializes the SPIx peripheral according to the specified 
-  *         parameters in the SPI_InitStruct.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices. 
-  * @param  SPI_InitStruct: pointer to a SPI_InitTypeDef structure that
-  *         contains the configuration information for the specified SPI peripheral.
-  * @retval None
-  */
-void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct)
-{
-  uint16_t tmpreg = 0;
-
-  /* check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-
-  /* Check the SPI parameters */
-  assert_param(IS_SPI_DIRECTION_MODE(SPI_InitStruct->SPI_Direction));
-  assert_param(IS_SPI_MODE(SPI_InitStruct->SPI_Mode));
-  assert_param(IS_SPI_DATA_SIZE(SPI_InitStruct->SPI_DataSize));
-  assert_param(IS_SPI_CPOL(SPI_InitStruct->SPI_CPOL));
-  assert_param(IS_SPI_CPHA(SPI_InitStruct->SPI_CPHA));
-  assert_param(IS_SPI_NSS(SPI_InitStruct->SPI_NSS));
-  assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_InitStruct->SPI_BaudRatePrescaler));
-  assert_param(IS_SPI_FIRST_BIT(SPI_InitStruct->SPI_FirstBit));
-  assert_param(IS_SPI_CRC_POLYNOMIAL(SPI_InitStruct->SPI_CRCPolynomial));
-
-  /*---------------------------- SPIx CR1 Configuration ------------------------*/
-  /* Get the SPIx CR1 value */
-  tmpreg = SPIx->CR1;
-  /* Clear BIDIMode, BIDIOE, RxONLY, SSM, SSI, LSBFirst, BR, CPOL and CPHA bits */
-  tmpreg &= CR1_CLEAR_MASK;
-  /* Configure SPIx: direction, NSS management, first transmitted bit, BaudRate prescaler
-  master/slave mode, CPOL and CPHA */
-  /* Set BIDImode, BIDIOE and RxONLY bits according to SPI_Direction value */
-  /* Set SSM, SSI bit according to SPI_NSS values */
-  /* Set LSBFirst bit according to SPI_FirstBit value */
-  /* Set BR bits according to SPI_BaudRatePrescaler value */
-  /* Set CPOL bit according to SPI_CPOL value */
-  /* Set CPHA bit according to SPI_CPHA value */
-  tmpreg |= (uint16_t)((uint32_t)SPI_InitStruct->SPI_Direction | SPI_InitStruct->SPI_FirstBit |
-                      SPI_InitStruct->SPI_CPOL | SPI_InitStruct->SPI_CPHA |
-                      SPI_InitStruct->SPI_NSS | SPI_InitStruct->SPI_BaudRatePrescaler);  
-  /* Write to SPIx CR1 */
-  SPIx->CR1 = tmpreg;
-  /*-------------------------Data Size Configuration -----------------------*/
-  /* Get the SPIx CR2 value */
-  tmpreg = SPIx->CR2;
-  /* Clear DS[3:0] bits */
-  tmpreg &=(uint16_t)~SPI_CR2_DS;
-  /* Configure SPIx: Data Size */
-  tmpreg |= (uint16_t)(SPI_InitStruct->SPI_DataSize);
-  /* Write to SPIx CR2 */
-  SPIx->CR2 = tmpreg;
-  
-  /*---------------------------- SPIx CRCPOLY Configuration --------------------*/
-  /* Write to SPIx CRCPOLY */
-  SPIx->CRCPR = SPI_InitStruct->SPI_CRCPolynomial;
-  
-  /*---------------------------- SPIx CR1 Configuration ------------------------*/
-  /* Get the SPIx CR1 value */
-  tmpreg = SPIx->CR1;
-  /* Clear MSTR bit */
-  tmpreg &= CR1_CLEAR_MASK2;
-  /* Configure SPIx: master/slave mode */  
-  /* Set MSTR bit according to SPI_Mode */
-  tmpreg |= (uint16_t)((uint32_t)SPI_InitStruct->SPI_Mode);  
-  /* Write to SPIx CR1 */
-  SPIx->CR1 = tmpreg;  
-  
-  /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */
-  SPIx->I2SCFGR &= (uint16_t)~((uint16_t)SPI_I2SCFGR_I2SMOD);
-}
-
-/**
-  * @brief  Fills each I2S_InitStruct member with its default value.
-  * @note   This mode is not supported for STM32F030 devices.  
-  * @param  I2S_InitStruct: pointer to a I2S_InitTypeDef structure which will be initialized.
-  * @retval None
-  */
-void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct)
-{
-/*--------------- Reset I2S init structure parameters values -----------------*/
-  /* Initialize the I2S_Mode member */
-  I2S_InitStruct->I2S_Mode = I2S_Mode_SlaveTx;
-
-  /* Initialize the I2S_Standard member */
-  I2S_InitStruct->I2S_Standard = I2S_Standard_Phillips;
-
-  /* Initialize the I2S_DataFormat member */
-  I2S_InitStruct->I2S_DataFormat = I2S_DataFormat_16b;
-
-  /* Initialize the I2S_MCLKOutput member */
-  I2S_InitStruct->I2S_MCLKOutput = I2S_MCLKOutput_Disable;
-
-  /* Initialize the I2S_AudioFreq member */
-  I2S_InitStruct->I2S_AudioFreq = I2S_AudioFreq_Default;
-
-  /* Initialize the I2S_CPOL member */
-  I2S_InitStruct->I2S_CPOL = I2S_CPOL_Low;
-}
-
-/**
-  * @brief  Initializes the SPIx peripheral according to the specified 
-  *         parameters in the I2S_InitStruct.
-  * @note   This mode is not supported for STM32F030 devices.  
-  * @param  SPIx: where x can be 1 to select the SPI peripheral (configured in I2S mode).  
-  * @param  I2S_InitStruct: pointer to an I2S_InitTypeDef structure that
-  *         contains the configuration information for the specified SPI peripheral
-  *         configured in I2S mode.
-  * @note   This function calculates the optimal prescaler needed to obtain the most 
-  *         accurate audio frequency (depending on the I2S clock source, the PLL values 
-  *         and the product configuration). But in case the prescaler value is greater 
-  *         than 511, the default value (0x02) will be configured instead.
-  * @retval None
-  */
-void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct)
-{
-  uint16_t tmpreg = 0, i2sdiv = 2, i2sodd = 0, packetlength = 1;
-  uint32_t tmp = 0;
-  RCC_ClocksTypeDef RCC_Clocks;
-  uint32_t sourceclock = 0;
-
-  /* Check the I2S parameters */
-  assert_param(IS_SPI_1_PERIPH(SPIx));
-  assert_param(IS_I2S_MODE(I2S_InitStruct->I2S_Mode));
-  assert_param(IS_I2S_STANDARD(I2S_InitStruct->I2S_Standard));
-  assert_param(IS_I2S_DATA_FORMAT(I2S_InitStruct->I2S_DataFormat));
-  assert_param(IS_I2S_MCLK_OUTPUT(I2S_InitStruct->I2S_MCLKOutput));
-  assert_param(IS_I2S_AUDIO_FREQ(I2S_InitStruct->I2S_AudioFreq));
-  assert_param(IS_I2S_CPOL(I2S_InitStruct->I2S_CPOL));  
-
-/*----------------------- SPIx I2SCFGR & I2SPR Configuration -----------------*/
-  /* Clear I2SMOD, I2SE, I2SCFG, PCMSYNC, I2SSTD, CKPOL, DATLEN and CHLEN bits */
-  SPIx->I2SCFGR &= I2SCFGR_CLEAR_Mask; 
-  SPIx->I2SPR = 0x0002;
-
-  /* Get the I2SCFGR register value */
-  tmpreg = SPIx->I2SCFGR;
-
-  /* If the default value has to be written, reinitialize i2sdiv and i2sodd*/
-  if(I2S_InitStruct->I2S_AudioFreq == I2S_AudioFreq_Default)
-  {
-    i2sodd = (uint16_t)0;
-    i2sdiv = (uint16_t)2;   
-  }
-  /* If the requested audio frequency is not the default, compute the prescaler */
-  else
-  {
-    /* Check the frame length (For the Prescaler computing) */
-    if(I2S_InitStruct->I2S_DataFormat == I2S_DataFormat_16b)
-    {
-      /* Packet length is 16 bits */
-      packetlength = 1;
-    }
-    else
-    {
-      /* Packet length is 32 bits */
-      packetlength = 2;
-    }
-
-    /* I2S Clock source is System clock: Get System Clock frequency */
-    RCC_GetClocksFreq(&RCC_Clocks);      
-
-    /* Get the source clock value: based on System Clock value */
-    sourceclock = RCC_Clocks.SYSCLK_Frequency;    
-
-    /* Compute the Real divider depending on the MCLK output state with a floating point */
-    if(I2S_InitStruct->I2S_MCLKOutput == I2S_MCLKOutput_Enable)
-    {
-      /* MCLK output is enabled */
-      tmp = (uint16_t)(((((sourceclock / 256) * 10) / I2S_InitStruct->I2S_AudioFreq)) + 5);
-    }
-    else
-    {
-      /* MCLK output is disabled */
-      tmp = (uint16_t)(((((sourceclock / (32 * packetlength)) *10 ) / I2S_InitStruct->I2S_AudioFreq)) + 5);
-    }
-    
-    /* Remove the floating point */
-    tmp = tmp / 10;
-
-    /* Check the parity of the divider */
-    i2sodd = (uint16_t)(tmp & (uint16_t)0x0001);
-
-    /* Compute the i2sdiv prescaler */
-    i2sdiv = (uint16_t)((tmp - i2sodd) / 2);
-
-    /* Get the Mask for the Odd bit (SPI_I2SPR[8]) register */
-    i2sodd = (uint16_t) (i2sodd << 8);
-  }
-
-  /* Test if the divider is 1 or 0 or greater than 0xFF */
-  if ((i2sdiv < 2) || (i2sdiv > 0xFF))
-  {
-    /* Set the default values */
-    i2sdiv = 2;
-    i2sodd = 0;
-  }
-
-  /* Write to SPIx I2SPR register the computed value */
-  SPIx->I2SPR = (uint16_t)(i2sdiv | (uint16_t)(i2sodd | (uint16_t)I2S_InitStruct->I2S_MCLKOutput));
-
-  /* Configure the I2S with the SPI_InitStruct values */
-  tmpreg |= (uint16_t)(SPI_I2SCFGR_I2SMOD | (uint16_t)(I2S_InitStruct->I2S_Mode | \
-                  (uint16_t)(I2S_InitStruct->I2S_Standard | (uint16_t)(I2S_InitStruct->I2S_DataFormat | \
-                  (uint16_t)I2S_InitStruct->I2S_CPOL))));
-
-  /* Write to SPIx I2SCFGR */
-  SPIx->I2SCFGR = tmpreg;
-}
-
-/**
-  * @brief  Enables or disables the specified SPI peripheral.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @param  NewState: new state of the SPIx peripheral. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected SPI peripheral */
-    SPIx->CR1 |= SPI_CR1_SPE;
-  }
-  else
-  {
-    /* Disable the selected SPI peripheral */
-    SPIx->CR1 &= (uint16_t)~((uint16_t)SPI_CR1_SPE);
-  }
-}
-
-/**
-  * @brief  Enables or disables the TI Mode.
-  *   
-  * @note   This function can be called only after the SPI_Init() function has 
-  *         been called. 
-  * @note   When TI mode is selected, the control bits SSM, SSI, CPOL and CPHA 
-  *         are not taken into consideration and are configured by hardware 
-  *         respectively to the TI mode requirements.
-  *    
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @param  NewState: new state of the selected SPI TI communication mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void SPI_TIModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the TI mode for the selected SPI peripheral */
-    SPIx->CR2 |= SPI_CR2_FRF;
-  }
-  else
-  {
-    /* Disable the TI mode for the selected SPI peripheral */
-    SPIx->CR2 &= (uint16_t)~((uint16_t)SPI_CR2_FRF);
-  }
-}
-
-/**
-  * @brief  Enables or disables the specified SPI peripheral (in I2S mode).
-  * @note   This mode is not supported for STM32F030 devices.    
-  * @param  SPIx: where x can be 1 to select the SPI peripheral.
-  * @param  NewState: new state of the SPIx peripheral. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_1_PERIPH(SPIx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected SPI peripheral in I2S mode */
-    SPIx->I2SCFGR |= SPI_I2SCFGR_I2SE;
-  }
-  else
-  {
-    /* Disable the selected SPI peripheral in I2S mode */
-    SPIx->I2SCFGR &= (uint16_t)~((uint16_t)SPI_I2SCFGR_I2SE);
-  }
-}
-
-/**
-  * @brief  Configures the data size for the selected SPI.
-  * @param  SPIx: where x can be 1 or 2  to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices. 
-  * @param  SPI_DataSize: specifies the SPI data size.
-  *         For the SPIx peripheral this parameter can be one of the following values:
-  *            @arg SPI_DataSize_4b: Set data size to 4 bits
-  *            @arg SPI_DataSize_5b: Set data size to 5 bits
-  *            @arg SPI_DataSize_6b: Set data size to 6 bits
-  *            @arg SPI_DataSize_7b: Set data size to 7 bits
-  *            @arg SPI_DataSize_8b: Set data size to 8 bits
-  *            @arg SPI_DataSize_9b: Set data size to 9 bits
-  *            @arg SPI_DataSize_10b: Set data size to 10 bits
-  *            @arg SPI_DataSize_11b: Set data size to 11 bits
-  *            @arg SPI_DataSize_12b: Set data size to 12 bits
-  *            @arg SPI_DataSize_13b: Set data size to 13 bits
-  *            @arg SPI_DataSize_14b: Set data size to 14 bits
-  *            @arg SPI_DataSize_15b: Set data size to 15 bits
-  *            @arg SPI_DataSize_16b: Set data size to 16 bits
-  * @retval None
-  */
-void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize)
-{
-  uint16_t tmpreg = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_DATA_SIZE(SPI_DataSize));
-  /* Read the CR2 register */
-  tmpreg = SPIx->CR2;
-  /* Clear DS[3:0] bits */
-  tmpreg &= (uint16_t)~SPI_CR2_DS;
-  /* Set new DS[3:0] bits value */
-  tmpreg |= SPI_DataSize;
-  SPIx->CR2 = tmpreg;
-}
-
-/**
-  * @brief  Configures the FIFO reception threshold for the selected SPI.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices. 
-  * @param  SPI_RxFIFOThreshold: specifies the FIFO reception threshold.
-  *          This parameter can be one of the following values:
-  *            @arg SPI_RxFIFOThreshold_HF: RXNE event is generated if the FIFO 
-  *                                         level is greater or equal to 1/2. 
-  *            @arg SPI_RxFIFOThreshold_QF: RXNE event is generated if the FIFO 
-  *                                         level is greater or equal to 1/4. 
-  * @retval None
-  */
-void SPI_RxFIFOThresholdConfig(SPI_TypeDef* SPIx, uint16_t SPI_RxFIFOThreshold)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_RX_FIFO_THRESHOLD(SPI_RxFIFOThreshold));
-
-  /* Clear FRXTH bit */
-  SPIx->CR2 &= (uint16_t)~((uint16_t)SPI_CR2_FRXTH);
-
-  /* Set new FRXTH bit value */
-  SPIx->CR2 |= SPI_RxFIFOThreshold;
-}
-
-/**
-  * @brief  Selects the data transfer direction in bidirectional mode for the specified SPI.
-  * @param  SPIx: where x can be 1 or 2  to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices. 
-  * @param  SPI_Direction: specifies the data transfer direction in bidirectional mode. 
-  *          This parameter can be one of the following values:
-  *            @arg SPI_Direction_Tx: Selects Tx transmission direction
-  *            @arg SPI_Direction_Rx: Selects Rx receive direction
-  * @retval None
-  */
-void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_DIRECTION(SPI_Direction));
-  if (SPI_Direction == SPI_Direction_Tx)
-  {
-    /* Set the Tx only mode */
-    SPIx->CR1 |= SPI_Direction_Tx;
-  }
-  else
-  {
-    /* Set the Rx only mode */
-    SPIx->CR1 &= SPI_Direction_Rx;
-  }
-}
-
-/**
-  * @brief  Configures internally by software the NSS pin for the selected SPI.
-  * @note   This function can be called only after the SPI_Init() function has 
-  *         been called.  
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.  
-  * @param  SPI_NSSInternalSoft: specifies the SPI NSS internal state.
-  *          This parameter can be one of the following values:
-  *            @arg SPI_NSSInternalSoft_Set: Set NSS pin internally
-  *            @arg SPI_NSSInternalSoft_Reset: Reset NSS pin internally
-  * @retval None
-  */
-void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_NSS_INTERNAL(SPI_NSSInternalSoft));
-
-  if (SPI_NSSInternalSoft != SPI_NSSInternalSoft_Reset)
-  {
-    /* Set NSS pin internally by software */
-    SPIx->CR1 |= SPI_NSSInternalSoft_Set;
-  }
-  else
-  {
-    /* Reset NSS pin internally by software */
-    SPIx->CR1 &= SPI_NSSInternalSoft_Reset;
-  }
-}
-
-/**
-  * @brief  Enables or disables the SS output for the selected SPI.
-  * @note   This function can be called only after the SPI_Init() function has 
-  *         been called and the NSS hardware management mode is selected. 
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.  
-  * @param  NewState: new state of the SPIx SS output. 
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected SPI SS output */
-    SPIx->CR2 |= SPI_CR2_SSOE;
-  }
-  else
-  {
-    /* Disable the selected SPI SS output */
-    SPIx->CR2 &= (uint16_t)~((uint16_t)SPI_CR2_SSOE);
-  }
-}
-
-/**
-  * @brief  Enables or disables the NSS pulse management mode.
-  * @note   This function can be called only after the SPI_Init() function has 
-  *         been called. 
-  * @note   When TI mode is selected, the control bits NSSP is not taken into 
-  *         consideration and are configured by hardware respectively to the 
-  *         TI mode requirements. 
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @param  NewState: new state of the NSS pulse management mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void SPI_NSSPulseModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the NSS pulse management mode */
-    SPIx->CR2 |= SPI_CR2_NSSP;
-  }
-  else
-  {
-    /* Disable the NSS pulse management mode */
-    SPIx->CR2 &= (uint16_t)~((uint16_t)SPI_CR2_NSSP);    
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup SPI_Group2 Data transfers functions
- *  @brief   Data transfers functions
- *
-@verbatim
- ===============================================================================
-                    ##### Data transfers functions #####
- ===============================================================================
-    [..] This section provides a set of functions allowing to manage the SPI or I2S
-         data transfers.
-
-    [..] In reception, data are received and then stored into an internal Rx buffer while 
-         In transmission, data are first stored into an internal Tx buffer before being 
-         transmitted.
-
-    [..] The read access of the SPI_DR register can be done using 
-         SPI_ReceiveData8() (when data size is equal or inferior than 8bits) and.
-         SPI_I2S_ReceiveData16() (when data size is superior than 8bits)function
-         and returns the Rx buffered value. Whereas a write access to the SPI_DR 
-         can be done using SPI_SendData8() (when data size is equal or inferior than 8bits)
-         and SPI_I2S_SendData16() (when data size is superior than 8bits) function 
-         and stores the written data into Tx buffer.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Transmits a Data through the SPIx/I2Sx peripheral.
-  * @param  SPIx: where x can be 1 or 2 in SPI mode to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @param  Data: Data to be transmitted.
-  * @retval None
-  */
-void SPI_SendData8(SPI_TypeDef* SPIx, uint8_t Data)
-{
-  uint32_t spixbase = 0x00;
-
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-
-  spixbase = (uint32_t)SPIx; 
-  spixbase += 0x0C;
-  
-  *(__IO uint8_t *) spixbase = Data;
-}
-
-/**
-  * @brief  Transmits a Data through the SPIx/I2Sx peripheral.
-  * @param  SPIx: where x can be 1 or 2 in SPI mode or 1 in I2S mode to select 
-  *         the SPI peripheral. 
-  * @note   SPI2 is not available for STM32F031 devices. 
-  * @param  Data: Data to be transmitted.
-  * @retval None
-  */
-void SPI_I2S_SendData16(SPI_TypeDef* SPIx, uint16_t Data)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  
-  SPIx->DR = (uint16_t)Data;
-}
-
-/**
-  * @brief  Returns the most recent received data by the SPIx/I2Sx peripheral. 
-  * @param  SPIx: where x can be 1 or 2 in SPI mode to select the SPI peripheral. 
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @retval The value of the received data.
-  */
-uint8_t SPI_ReceiveData8(SPI_TypeDef* SPIx)
-{
-  uint32_t spixbase = 0x00;
-  
-  spixbase = (uint32_t)SPIx; 
-  spixbase += 0x0C;
-  
-  return *(__IO uint8_t *) spixbase;
-}
-
-/**
-  * @brief  Returns the most recent received data by the SPIx peripheral. 
-  * @param  SPIx: where x can be 1 or 2 in SPI mode or 1 in I2S mode to select
-  * @note   SPI2 is not available for STM32F031 devices.
-  *         the SPI peripheral.  
-  * @retval The value of the received data.
-  */
-uint16_t SPI_I2S_ReceiveData16(SPI_TypeDef* SPIx)
-{
-  return SPIx->DR;
-}
-/**
-  * @}
-  */
-
-/** @defgroup SPI_Group3 Hardware CRC Calculation functions
- *  @brief   Hardware CRC Calculation functions
- *
-@verbatim   
- ===============================================================================
-                ##### Hardware CRC Calculation functions #####
- ===============================================================================
-    [..] This section provides a set of functions allowing to manage the SPI CRC hardware 
-         calculation.SPI communication using CRC is possible through the following procedure:
-
-         (#) Program the Data direction, Polarity, Phase, First Data, Baud Rate Prescaler,
-             Slave Management, Peripheral Mode and CRC Polynomial values using the SPI_Init()
-             function.
-         (#) Enable the CRC calculation using the SPI_CalculateCRC() function.
-         (#) Enable the SPI using the SPI_Cmd() function
-         (#) Before writing the last data to the TX buffer, set the CRCNext bit using the 
-             SPI_TransmitCRC() function to indicate that after transmission of the last 
-             data, the CRC should be transmitted.
-         (#) After transmitting the last data, the SPI transmits the CRC. The SPI_CR1_CRCNEXT
-             bit is reset. The CRC is also received and compared against the SPI_RXCRCR 
-             value. 
-             If the value does not match, the SPI_FLAG_CRCERR flag is set and an interrupt
-             can be generated when the SPI_I2S_IT_ERR interrupt is enabled.
-
-    -@-
-       (+@) It is advised to don't read the calculate CRC values during the communication.
-       (+@) When the SPI is in slave mode, be careful to enable CRC calculation only
-       when the clock is stable, that is, when the clock is in the steady state. 
-       If not, a wrong CRC calculation may be done. In fact, the CRC is sensitive 
-       to the SCK slave input clock as soon as CRCEN is set, and this, whatever 
-       the value of the SPE bit.
-       (+@) With high bitrate frequencies, be careful when transmitting the CRC.
-       As the number of used CPU cycles has to be as low as possible in the CRC 
-       transfer phase, it is forbidden to call software functions in the CRC 
-       transmission sequence to avoid errors in the last data and CRC reception. 
-       In fact, CRCNEXT bit has to be written before the end of the transmission/reception 
-       of the last data.
-       (+@) For high bit rate frequencies, it is advised to use the DMA mode to avoid the
-       degradation of the SPI speed performance due to CPU accesses impacting the 
-       SPI bandwidth.
-       (+@) When the STM32F0xx are configured as slaves and the NSS hardware mode is 
-       used, the NSS pin needs to be kept low between the data phase and the CRC 
-       phase.
-       (+@) When the SPI is configured in slave mode with the CRC feature enabled, CRC
-       calculation takes place even if a high level is applied on the NSS pin. 
-       This may happen for example in case of a multislave environment where the 
-       communication master addresses slaves alternately.
-       (+@) Between a slave deselection (high level on NSS) and a new slave selection
-       (low level on NSS), the CRC value should be cleared on both master and slave
-       sides in order to resynchronize the master and slave for their respective 
-       CRC calculation.
-
-    -@- To clear the CRC, follow the procedure below:
-       (#@) Disable SPI using the SPI_Cmd() function
-       (#@) Disable the CRC calculation using the SPI_CalculateCRC() function.
-       (#@) Enable the CRC calculation using the SPI_CalculateCRC() function.
-       (#@) Enable SPI using the SPI_Cmd() function.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the CRC calculation length for the selected SPI.
-  * @note   This function can be called only after the SPI_Init() function has 
-  *         been called.  
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.  
-  * @param  SPI_CRCLength: specifies the SPI CRC calculation length.
-  *          This parameter can be one of the following values:
-  *            @arg SPI_CRCLength_8b: Set CRC Calculation to 8 bits
-  *            @arg SPI_CRCLength_16b: Set CRC Calculation to 16 bits
-  * @retval None
-  */
-void SPI_CRCLengthConfig(SPI_TypeDef* SPIx, uint16_t SPI_CRCLength)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_CRC_LENGTH(SPI_CRCLength));
-
-  /* Clear CRCL bit */
-  SPIx->CR1 &= (uint16_t)~((uint16_t)SPI_CR1_CRCL);
-
-  /* Set new CRCL bit value */
-  SPIx->CR1 |= SPI_CRCLength;
-}
-
-/**
-  * @brief  Enables or disables the CRC value calculation of the transferred bytes.
-  * @note   This function can be called only after the SPI_Init() function has 
-  *         been called.   
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @param  NewState: new state of the SPIx CRC value calculation.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected SPI CRC calculation */
-    SPIx->CR1 |= SPI_CR1_CRCEN;
-  }
-  else
-  {
-    /* Disable the selected SPI CRC calculation */
-    SPIx->CR1 &= (uint16_t)~((uint16_t)SPI_CR1_CRCEN);
-  }
-}
-
-/**
-  * @brief  Transmit the SPIx CRC value.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices. 
-  * @retval None
-  */
-void SPI_TransmitCRC(SPI_TypeDef* SPIx)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-
-  /* Enable the selected SPI CRC transmission */
-  SPIx->CR1 |= SPI_CR1_CRCNEXT;
-}
-
-/**
-  * @brief  Returns the transmit or the receive CRC register value for the specified SPI.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices. 
-  * @param  SPI_CRC: specifies the CRC register to be read.
-  *          This parameter can be one of the following values:
-  *            @arg SPI_CRC_Tx: Selects Tx CRC register
-  *            @arg SPI_CRC_Rx: Selects Rx CRC register
-  * @retval The selected CRC register value..
-  */
-uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC)
-{
-  uint16_t crcreg = 0;
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_CRC(SPI_CRC));
-
-  if (SPI_CRC != SPI_CRC_Rx)
-  {
-    /* Get the Tx CRC register */
-    crcreg = SPIx->TXCRCR;
-  }
-  else
-  {
-    /* Get the Rx CRC register */
-    crcreg = SPIx->RXCRCR;
-  }
-  /* Return the selected CRC register */
-  return crcreg;
-}
-
-/**
-  * @brief  Returns the CRC Polynomial register value for the specified SPI.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices. 
-  * @retval The CRC Polynomial register value.
-  */
-uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-
-  /* Return the CRC polynomial register */
-  return SPIx->CRCPR;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup SPI_Group4 DMA transfers management functions
- *  @brief   DMA transfers management functions
-  *
-@verbatim   
- ===============================================================================
-                ##### DMA transfers management functions #####
- ===============================================================================
-    [..] This section provides two functions that can be used only in DMA mode.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the SPIx/I2Sx DMA interface.
-  * @param  SPIx: where x can be 1 or 2 in SPI mode or 1 in I2S mode to select 
-  *         the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  *         I2S mode is not supported for STM32F030 devices.  
-  * @param  SPI_I2S_DMAReq: specifies the SPI DMA transfer request to be enabled or disabled. 
-  *          This parameter can be any combination of the following values:
-  *            @arg SPI_I2S_DMAReq_Tx: Tx buffer DMA transfer request
-  *            @arg SPI_I2S_DMAReq_Rx: Rx buffer DMA transfer request
-  * @param  NewState: new state of the selected SPI DMA transfer request.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  assert_param(IS_SPI_I2S_DMA_REQ(SPI_I2S_DMAReq));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected SPI DMA requests */
-    SPIx->CR2 |= SPI_I2S_DMAReq;
-  }
-  else
-  {
-    /* Disable the selected SPI DMA requests */
-    SPIx->CR2 &= (uint16_t)~SPI_I2S_DMAReq;
-  }
-}
-
-/**
-  * @brief  Configures the number of data to transfer type(Even/Odd) for the DMA
-  *         last transfers and for the selected SPI.
-  * @note   This function have a meaning only if DMA mode is selected and if 
-  *         the packing mode is used (data length <= 8 and DMA transfer size halfword)  
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @param  SPI_LastDMATransfer: specifies the SPI last DMA transfers state.
-  *          This parameter can be one of the following values:
-  *            @arg SPI_LastDMATransfer_TxEvenRxEven: Number of data for transmission Even
-  *                                                   and number of data for reception Even.
-  *            @arg SPI_LastDMATransfer_TxOddRxEven: Number of data for transmission Odd
-  *                                                  and number of data for reception Even.
-  *            @arg SPI_LastDMATransfer_TxEvenRxOdd: Number of data for transmission Even
-  *                                                  and number of data for reception Odd.
-  *            @arg SPI_LastDMATransfer_TxOddRxOdd: Number of data for transmission Odd
-  *                                                 and number of data for reception Odd.
-  * @retval None
-  */
-void SPI_LastDMATransferCmd(SPI_TypeDef* SPIx, uint16_t SPI_LastDMATransfer)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_LAST_DMA_TRANSFER(SPI_LastDMATransfer));
-
-  /* Clear LDMA_TX and LDMA_RX bits */
-  SPIx->CR2 &= CR2_LDMA_MASK;
-
-  /* Set new LDMA_TX and LDMA_RX bits value */
-  SPIx->CR2 |= SPI_LastDMATransfer; 
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup SPI_Group5 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions
-  *
-@verbatim   
- ===============================================================================
-             ##### Interrupts and flags management functions #####
- ===============================================================================
-    [..] This section provides a set of functions allowing to configure the SPI/I2S Interrupts 
-         sources and check or clear the flags or pending bits status.
-         The user should identify which mode will be used in his application to manage 
-         the communication: Polling mode, Interrupt mode or DMA mode. 
-
-  *** Polling Mode ***
-  ====================
-    [..] In Polling Mode, the SPI/I2S communication can be managed by 9 flags:
-        (#) SPI_I2S_FLAG_TXE : to indicate the status of the transmit buffer register
-        (#) SPI_I2S_FLAG_RXNE : to indicate the status of the receive buffer register
-        (#) SPI_I2S_FLAG_BSY : to indicate the state of the communication layer of the SPI.
-        (#) SPI_FLAG_CRCERR : to indicate if a CRC Calculation error occur              
-        (#) SPI_FLAG_MODF : to indicate if a Mode Fault error occur
-        (#) SPI_I2S_FLAG_OVR : to indicate if an Overrun error occur
-        (#) SPI_I2S_FLAG_FRE: to indicate a Frame Format error occurs.
-        (#) I2S_FLAG_UDR: to indicate an Underrun error occurs.
-        (#) I2S_FLAG_CHSIDE: to indicate Channel Side.
-
-    [..]
-        (@)Do not use the BSY flag to handle each data transmission or reception. It is better 
-           to use the TXE and RXNE flags instead.
-
-    [..] In this Mode it is advised to use the following functions:
-        (+) FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
-        (+) void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
-
-  *** Interrupt Mode ***
-  ======================
-    [..] In Interrupt Mode, the SPI/I2S communication can be managed by 3 interrupt sources
-         and 5 pending bits: 
-    [..] Pending Bits:
-        (#) SPI_I2S_IT_TXE : to indicate the status of the transmit buffer register
-        (#) SPI_I2S_IT_RXNE : to indicate the status of the receive buffer register
-        (#) SPI_I2S_IT_OVR : to indicate if an Overrun error occur
-        (#) I2S_IT_UDR : to indicate an Underrun Error occurs.
-        (#) SPI_I2S_FLAG_FRE : to indicate a Frame Format error occurs.
-
-    [..] Interrupt Source:
-        (#) SPI_I2S_IT_TXE: specifies the interrupt source for the Tx buffer empty 
-            interrupt.  
-        (#) SPI_I2S_IT_RXNE : specifies the interrupt source for the Rx buffer not 
-            empty interrupt.
-        (#) SPI_I2S_IT_ERR : specifies the interrupt source for the errors interrupt.
-
-    [..] In this Mode it is advised to use the following functions:
-         (+) void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState);
-         (+) ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);
-
-  *** FIFO Status ***
-  ===================
-    [..] It is possible to monitor the FIFO status when a transfer is ongoing using the
-         following function:
-         (+) uint32_t SPI_GetFIFOStatus(uint8_t SPI_FIFO_Direction); 
-
-  *** DMA Mode ***
-  ================
-    [..] In DMA Mode, the SPI communication can be managed by 2 DMA Channel 
-         requests:
-        (#) SPI_I2S_DMAReq_Tx: specifies the Tx buffer DMA transfer request.
-        (#) SPI_I2S_DMAReq_Rx: specifies the Rx buffer DMA transfer request.
-
-    [..] In this Mode it is advised to use the following function:
-        (+) void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState).
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified SPI/I2S interrupts.
-  * @param  SPIx: where x can be 1 or 2 in SPI mode or 1 in I2S mode to select 
-  *         the SPI peripheral.  
-  * @note   SPI2 is not available for STM32F031 devices.
-  *         I2S mode is not supported for STM32F030 devices.  
-  * @param  SPI_I2S_IT: specifies the SPI interrupt source to be enabled or disabled. 
-  *          This parameter can be one of the following values:
-  *            @arg SPI_I2S_IT_TXE: Tx buffer empty interrupt mask
-  *            @arg SPI_I2S_IT_RXNE: Rx buffer not empty interrupt mask
-  *            @arg SPI_I2S_IT_ERR: Error interrupt mask
-  * @param  NewState: new state of the specified SPI interrupt.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState)
-{
-  uint16_t itpos = 0, itmask = 0 ;
-
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  assert_param(IS_SPI_I2S_CONFIG_IT(SPI_I2S_IT));
-
-  /* Get the SPI IT index */
-  itpos = SPI_I2S_IT >> 4;
-
-  /* Set the IT mask */
-  itmask = (uint16_t)1 << (uint16_t)itpos;
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected SPI interrupt */
-    SPIx->CR2 |= itmask;
-  }
-  else
-  {
-    /* Disable the selected SPI interrupt */
-    SPIx->CR2 &= (uint16_t)~itmask;
-  }
-}
-
-/**
-  * @brief  Returns the current SPIx Transmission FIFO filled level.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @retval The Transmission FIFO filling state.
-  *          - SPI_TransmissionFIFOStatus_Empty: when FIFO is empty
-  *          - SPI_TransmissionFIFOStatus_1QuarterFull: if more than 1 quarter-full.
-  *          - SPI_TransmissionFIFOStatus_HalfFull: if more than 1 half-full.
-  *          - SPI_TransmissionFIFOStatus_Full: when FIFO is full.
-  */
-uint16_t SPI_GetTransmissionFIFOStatus(SPI_TypeDef* SPIx)
-{
-  /* Get the SPIx Transmission FIFO level bits */
-  return (uint16_t)((SPIx->SR & SPI_SR_FTLVL));
-}
-
-/**
-  * @brief  Returns the current SPIx Reception FIFO filled level.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  * @retval The Reception FIFO filling state.
-  *          - SPI_ReceptionFIFOStatus_Empty: when FIFO is empty
-  *          - SPI_ReceptionFIFOStatus_1QuarterFull: if more than 1 quarter-full.
-  *          - SPI_ReceptionFIFOStatus_HalfFull: if more than 1 half-full.
-  *          - SPI_ReceptionFIFOStatus_Full: when FIFO is full.
-  */
-uint16_t SPI_GetReceptionFIFOStatus(SPI_TypeDef* SPIx)
-{
-  /* Get the SPIx Reception FIFO level bits */
-  return (uint16_t)((SPIx->SR & SPI_SR_FRLVL));
-}
-
-/**
-  * @brief  Checks whether the specified SPI flag is set or not.
-  * @param  SPIx: where x can be 1 or 2 in SPI mode or 1 in I2S mode to select 
-  *         the SPI peripheral.    
-  * @note   SPI2 is not available for STM32F031 devices.
-  *         I2S mode is not supported for STM32F030 devices.  
-  * @param  SPI_I2S_FLAG: specifies the SPI flag to check. 
-  *          This parameter can be one of the following values:
-  *            @arg SPI_I2S_FLAG_TXE: Transmit buffer empty flag.
-  *            @arg SPI_I2S_FLAG_RXNE: Receive buffer not empty flag.
-  *            @arg SPI_I2S_FLAG_BSY: Busy flag.
-  *            @arg SPI_I2S_FLAG_OVR: Overrun flag.
-  *            @arg SPI_FLAG_MODF: Mode Fault flag.
-  *            @arg SPI_FLAG_CRCERR: CRC Error flag.
-  *            @arg SPI_I2S_FLAG_FRE: TI frame format error flag.
-  *            @arg I2S_FLAG_UDR: Underrun Error flag.
-  *            @arg I2S_FLAG_CHSIDE: Channel Side flag.   
-  * @retval The new state of SPI_I2S_FLAG (SET or RESET).
-  */
-FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_I2S_GET_FLAG(SPI_I2S_FLAG));
-
-  /* Check the status of the specified SPI flag */
-  if ((SPIx->SR & SPI_I2S_FLAG) != (uint16_t)RESET)
-  {
-    /* SPI_I2S_FLAG is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* SPI_I2S_FLAG is reset */
-    bitstatus = RESET;
-  }
-  /* Return the SPI_I2S_FLAG status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clears the SPIx CRC Error (CRCERR) flag.
-  * @param  SPIx: where x can be 1 or 2 to select the SPI peripheral.
-  * @note   SPI2 is not available for STM32F031 devices.
-  *         I2S mode is not supported for STM32F030 devices.  
-  * @param  SPI_I2S_FLAG: specifies the SPI flag to clear. 
-  *         This function clears only CRCERR flag.
-  * @note   OVR (OverRun error) flag is cleared by software sequence: a read 
-  *         operation to SPI_DR register (SPI_I2S_ReceiveData()) followed by  
-  *         a read operation to SPI_SR register (SPI_I2S_GetFlagStatus()).
-  * @note   MODF (Mode Fault) flag is cleared by software sequence: a read/write 
-  *         operation to SPI_SR register (SPI_I2S_GetFlagStatus()) followed by
-  *         a write operation to SPI_CR1 register (SPI_Cmd() to enable the SPI).
-  * @retval None
-  */
-void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_CLEAR_FLAG(SPI_I2S_FLAG));
-
-  /* Clear the selected SPI CRC Error (CRCERR) flag */
-  SPIx->SR = (uint16_t)~SPI_I2S_FLAG;
-}
-
-/**
-  * @brief  Checks whether the specified SPI/I2S interrupt has occurred or not.
-  * @param  SPIx: where x can be 1 or 2 in SPI mode or 1 in I2S mode to select 
-  *         the SPI peripheral.
-  * @param  SPI_I2S_IT: specifies the SPI interrupt source to check. 
-  *          This parameter can be one of the following values:
-  *            @arg SPI_I2S_IT_TXE: Transmit buffer empty interrupt.
-  *            @arg SPI_I2S_IT_RXNE: Receive buffer not empty interrupt.
-  *            @arg SPI_IT_MODF: Mode Fault interrupt.
-  *            @arg SPI_I2S_IT_OVR: Overrun interrupt.
-  *            @arg I2S_IT_UDR: Underrun interrupt.  
-  *            @arg SPI_I2S_IT_FRE: Format Error interrupt.  
-  * @retval The new state of SPI_I2S_IT (SET or RESET).
-  */
-ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT)
-{
-  ITStatus bitstatus = RESET;
-  uint16_t itpos = 0, itmask = 0, enablestatus = 0;
-
-  /* Check the parameters */
-  assert_param(IS_SPI_ALL_PERIPH(SPIx));
-  assert_param(IS_SPI_I2S_GET_IT(SPI_I2S_IT));
-
-  /* Get the SPI_I2S_IT index */
-  itpos = 0x01 << (SPI_I2S_IT & 0x0F);
-
-  /* Get the SPI_I2S_IT IT mask */
-  itmask = SPI_I2S_IT >> 4;
-
-  /* Set the IT mask */
-  itmask = 0x01 << itmask;
-
-  /* Get the SPI_I2S_IT enable bit status */
-  enablestatus = (SPIx->CR2 & itmask) ;
-
-  /* Check the status of the specified SPI interrupt */
-  if (((SPIx->SR & itpos) != (uint16_t)RESET) && enablestatus)
-  {
-    /* SPI_I2S_IT is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* SPI_I2S_IT is reset */
-    bitstatus = RESET;
-  }
-  /* Return the SPI_I2S_IT status */
-  return bitstatus;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_syscfg.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_syscfg.c
deleted file mode 100644
index 518cf2a..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_syscfg.c	
+++ /dev/null
@@ -1,320 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_syscfg.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the SYSCFG peripheral:
-  *           + Remapping the memory mapped at 0x00000000  
-  *           + Remapping the DMA channels
-  *           + Enabling I2C fast mode plus driving capability for I2C pins   
-  *           + Configuring the EXTI lines connection to the GPIO port
-  *           + Configuring the CFGR2 features (Connecting some internal signal
-  *             to the break input of TIM1)
-  *   
-  *  @verbatim
- ===============================================================================
-                     ##### How to use this driver #####
- ===============================================================================
-    [..] 
-               The SYSCFG registers can be accessed only when the SYSCFG 
-               interface APB clock is enabled.
-               To enable SYSCFG APB clock use:
-               RCC_APBPeriphClockCmd(RCC_APBPeriph_SYSCFG, ENABLE).
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_syscfg.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup SYSCFG 
-  * @brief SYSCFG driver modules
-  * @{
-  */ 
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup SYSCFG_Private_Functions
-  * @{
-  */ 
-
-/** @defgroup SYSCFG_Group1 SYSCFG Initialization and Configuration functions
- *  @brief   SYSCFG Initialization and Configuration functions 
- *
-@verbatim
- ===============================================================================
-        ##### SYSCFG Initialization and Configuration functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the SYSCFG registers to their default reset values.
-  * @param  None
-  * @retval None
-  * @note   MEM_MODE bits are not affected by APB reset.
-  * @note   MEM_MODE bits took the value from the user option bytes.
-  * @note   CFGR2 register is not affected by APB reset.
-  * @note   CLABBB configuration bits are locked when set.
-  * @note   To unlock the configuration, perform a system reset.
-  */
-void SYSCFG_DeInit(void)
-{
-  /* Set SYSCFG_CFGR1 register to reset value without affecting MEM_MODE bits */
-  SYSCFG->CFGR1 &= SYSCFG_CFGR1_MEM_MODE;
-  /* Set EXTICRx registers to reset value */
-  SYSCFG->EXTICR[0] = 0;
-  SYSCFG->EXTICR[1] = 0;
-  SYSCFG->EXTICR[2] = 0;
-  SYSCFG->EXTICR[3] = 0;
-  /* Set CFGR2 register to reset value: clear SRAM parity error flag */
-  SYSCFG->CFGR2 |= (uint32_t) SYSCFG_CFGR2_SRAM_PE;
-}
-
-/**
-  * @brief  Configures the memory mapping at address 0x00000000.
-  * @param  SYSCFG_MemoryRemap: selects the memory remapping.
-  *          This parameter can be one of the following values:
-  *            @arg SYSCFG_MemoryRemap_Flash: Main Flash memory mapped at 0x00000000  
-  *            @arg SYSCFG_MemoryRemap_SystemMemory: System Flash memory mapped at 0x00000000
-  *            @arg SYSCFG_MemoryRemap_SRAM: Embedded SRAM mapped at 0x00000000
-  * @retval None
-  */
-void SYSCFG_MemoryRemapConfig(uint32_t SYSCFG_MemoryRemap)
-{
-  uint32_t tmpctrl = 0;
-
-  /* Check the parameter */
-  assert_param(IS_SYSCFG_MEMORY_REMAP(SYSCFG_MemoryRemap));
-
-  /* Get CFGR1 register value */
-  tmpctrl = SYSCFG->CFGR1;
-
-  /* Clear MEM_MODE bits */
-  tmpctrl &= (uint32_t) (~SYSCFG_CFGR1_MEM_MODE);
-
-  /* Set the new MEM_MODE bits value */
-  tmpctrl |= (uint32_t) SYSCFG_MemoryRemap;
-
-  /* Set CFGR1 register with the new memory remap configuration */
-  SYSCFG->CFGR1 = tmpctrl;
-}
-
-/**
-  * @brief  Configure the DMA channels remapping.
-  * @param  SYSCFG_DMARemap: selects the DMA channels remap.
-  *          This parameter can be one of the following values:
-  *            @arg SYSCFG_DMARemap_TIM17: Remap TIM17 DMA requests from channel1 to channel2
-  *            @arg SYSCFG_DMARemap_TIM16: Remap TIM16 DMA requests from channel3 to channel4
-  *            @arg SYSCFG_DMARemap_USART1Rx: Remap USART1 Rx DMA requests from channel3 to channel5
-  *            @arg SYSCFG_DMARemap_USART1Tx: Remap USART1 Tx DMA requests from channel2 to channel4
-  *            @arg SYSCFG_DMARemap_ADC1: Remap ADC1 DMA requests from channel1 to channel2
-  * @param  NewState: new state of the DMA channel remapping. 
-  *         This parameter can be: ENABLE or DISABLE.
-  * @note   When enabled, DMA channel of the selected peripheral is remapped
-  * @note   When disabled, Default DMA channel is mapped to the selected peripheral
-  * @note   By default TIM17 DMA requests is mapped to channel 1, 
-  *         use SYSCFG_DMAChannelRemapConfig(SYSCFG_DMARemap_TIM17, Enable) to remap
-  *         TIM17 DMA requests to channel 2 and use
-  *         SYSCFG_DMAChannelRemapConfig(SYSCFG_DMARemap_TIM17, Disable) to map
-  *         TIM17 DMA requests to channel 1 (default mapping)
-  * @retval None
-  */
-void SYSCFG_DMAChannelRemapConfig(uint32_t SYSCFG_DMARemap, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SYSCFG_DMA_REMAP(SYSCFG_DMARemap));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Remap the DMA channel */
-    SYSCFG->CFGR1 |= (uint32_t)SYSCFG_DMARemap;
-  }
-  else
-  {
-    /* use the default DMA channel mapping */
-    SYSCFG->CFGR1 &= (uint32_t)(~SYSCFG_DMARemap);
-  }
-}
-
-/**
-  * @brief  Configure the I2C fast mode plus driving capability.
-  * @param  SYSCFG_I2CFastModePlus: selects the pin.
-  *          This parameter can be one of the following values:
-  *            @arg SYSCFG_I2CFastModePlus_PB6: Configure fast mode plus driving capability for PB6
-  *            @arg SYSCFG_I2CFastModePlus_PB7: Configure fast mode plus driving capability for PB7
-  *            @arg SYSCFG_I2CFastModePlus_PB8: Configure fast mode plus driving capability for PB8
-  *            @arg SYSCFG_I2CFastModePlus_PB9: Configure fast mode plus driving capability for PB9
-  *            @arg SYSCFG_I2CFastModePlus_PA9: Configure fast mode plus driving capability for PA9 (only for STM32F031 and STM32F030 devices)
-  *            @arg SYSCFG_I2CFastModePlus_PA10: Configure fast mode plus driving capability for PA10 (only for STM32F031 and STM32F030 devices)
-  *            @arg SYSCFG_I2CFastModePlus_I2C1: Configure fast mode plus driving capability for PB10, PB11, PF6 and PF7(only for STM32F031 and STM32F030 devices)
-  *            @arg SYSCFG_I2CFastModePlus_I2C2: Configure fast mode plus driving capability for I2C2 pins, available only for STM32F072 devices
-  *                
-  * @param  NewState: new state of the DMA channel remapping. 
-  *         This parameter can be:  ENABLE or DISABLE.
-  * @note   ENABLE: Enable fast mode plus driving capability for selected I2C pin
-  * @note   DISABLE: Disable fast mode plus driving capability for selected I2C pin
-  * @note  For I2C1, fast mode plus driving capability can be enabled on all selected
-  *        I2C1 pins using SYSCFG_I2CFastModePlus_I2C1 parameter or independently
-  *        on each one of the following pins PB6, PB7, PB8 and PB9.
-  * @note  For remaing I2C1 pins (PA14, PA15...) fast mode plus driving capability
-  *        can be enabled only by using SYSCFG_I2CFastModePlus_I2C1 parameter.
-  * @note  For all I2C2 pins fast mode plus driving capability can be enabled
-  *        only by using SYSCFG_I2CFastModePlus_I2C2 parameter.
-  * @retval None
-  */
-void SYSCFG_I2CFastModePlusConfig(uint32_t SYSCFG_I2CFastModePlus, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_SYSCFG_I2C_FMP(SYSCFG_I2CFastModePlus));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable fast mode plus driving capability for selected pin */
-    SYSCFG->CFGR1 |= (uint32_t)SYSCFG_I2CFastModePlus;
-  }
-  else
-  {
-    /* Disable fast mode plus driving capability for selected pin */
-    SYSCFG->CFGR1 &= (uint32_t)(~SYSCFG_I2CFastModePlus);
-  }
-}
-
-/**
-  * @brief  Selects the GPIO pin used as EXTI Line.
-  * @param  EXTI_PortSourceGPIOx: selects the GPIO port to be used as source 
-  *                               for EXTI lines where x can be (A, B, C, D, E or F).
-  * @note   GPIOE is available only for STM32F072.
-  * @note   GPIOD is not available for STM32F031.    
-  * @param  EXTI_PinSourcex: specifies the EXTI line to be configured.
-  * @note   This parameter can be EXTI_PinSourcex where x can be:
-  *         For STM32F051 and STM32F030: (0..15) for GPIOA, GPIOB, GPIOC, (2) for GPIOD and (0..1, 4..7) for GIIOF.
-  *         For STM32F072: (0..15) for GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, (0..10) for GPIOF.
-  *         For STM32F031: (0..15) for GPIOA, GPIOB, (13..15) for GPIOC and (0..1, 6..7) for GPIOF.
-  * @retval None
-  */
-void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex)
-{
-  uint32_t tmp = 0x00;
-
-  /* Check the parameters */
-  assert_param(IS_EXTI_PORT_SOURCE(EXTI_PortSourceGPIOx));
-  assert_param(IS_EXTI_PIN_SOURCE(EXTI_PinSourcex));
-  
-  tmp = ((uint32_t)0x0F) << (0x04 * (EXTI_PinSourcex & (uint8_t)0x03));
-  SYSCFG->EXTICR[EXTI_PinSourcex >> 0x02] &= ~tmp;
-  SYSCFG->EXTICR[EXTI_PinSourcex >> 0x02] |= (((uint32_t)EXTI_PortSourceGPIOx) << (0x04 * (EXTI_PinSourcex & (uint8_t)0x03)));
-}
-
-/**
-  * @brief  Connect the selected parameter to the break input of TIM1.
-  * @note   The selected configuration is locked and can be unlocked by system reset
-  * @param  SYSCFG_Break: selects the configuration to be connected to break
-  *         input of TIM1
-  *          This parameter can be any combination of the following values:
-  *            @arg SYSCFG_Break_PVD: Connects the PVD event to the Break Input of TIM1,, not avaailable for  STM32F030 devices.
-  *            @arg SYSCFG_Break_SRAMParity: Connects the SRAM_PARITY error signal to the Break Input of TIM1 .
-  *            @arg SYSCFG_Break_Lockup: Connects Lockup output of CortexM0 to the break input of TIM1.
-  * @retval None
-  */
-void SYSCFG_BreakConfig(uint32_t SYSCFG_Break)
-{
-  /* Check the parameter */
-  assert_param(IS_SYSCFG_LOCK_CONFIG(SYSCFG_Break));
-
-  SYSCFG->CFGR2 |= (uint32_t) SYSCFG_Break;
-}
-
-/**
-  * @brief  Checks whether the specified SYSCFG flag is set or not.
-  * @param  SYSCFG_Flag: specifies the SYSCFG flag to check. 
-  *          This parameter can be one of the following values:
-  *            @arg SYSCFG_FLAG_PE: SRAM parity error flag.
-  * @retval The new state of SYSCFG_Flag (SET or RESET).
-  */
-FlagStatus SYSCFG_GetFlagStatus(uint32_t SYSCFG_Flag)
-{
-  FlagStatus bitstatus = RESET;
-
-  /* Check the parameter */
-  assert_param(IS_SYSCFG_FLAG(SYSCFG_Flag));
-
-  /* Check the status of the specified SPI flag */
-  if ((SYSCFG->CFGR2 & SYSCFG_CFGR2_SRAM_PE) != (uint32_t)RESET)
-  {
-    /* SYSCFG_Flag is set */
-    bitstatus = SET;
-  }
-  else
-  {
-    /* SYSCFG_Flag is reset */
-    bitstatus = RESET;
-  }
-  /* Return the SYSCFG_Flag status */
-  return  bitstatus;
-}
-
-/**
-  * @brief  Clear the selected SYSCFG flag.
-  * @param  SYSCFG_Flag: selects the flag to be cleared.
-  *          This parameter can be any combination of the following values:
-  *            @arg SYSCFG_FLAG_PE: SRAM parity error flag.
-  * @retval None
-  */
-void SYSCFG_ClearFlag(uint32_t SYSCFG_Flag)
-{
-  /* Check the parameter */
-  assert_param(IS_SYSCFG_FLAG(SYSCFG_Flag));
-
-  SYSCFG->CFGR2 |= (uint32_t) SYSCFG_Flag;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_tim.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_tim.c
deleted file mode 100644
index f7b4287..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_tim.c	
+++ /dev/null
@@ -1,3349 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_tim.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the TIM peripheral:
-  *            + TimeBase management
-  *            + Output Compare management
-  *            + Input Capture management
-  *            + Interrupts, DMA and flags management
-  *            + Clocks management
-  *            + Synchronization management
-  *            + Specific interface management
-  *            + Specific remapping management      
-  *              
-  *  @verbatim
-  
- ===============================================================================
-                    ##### How to use this driver #####
- ===============================================================================
-    [..] This driver provides functions to configure and program the TIM 
-         of all STM32F0xx devices These functions are split in 8 groups: 
-         (#) TIM TimeBase management: this group includes all needed functions 
-             to configure the TM Timebase unit:
-             (++) Set/Get Prescaler.
-             (++) Set/Get Autoreload.
-             (++) Counter modes configuration.
-             (++) Set Clock division.
-             (++) Select the One Pulse mode.
-             (++) Update Request Configuration.
-             (++) Update Disable Configuration.
-             (++) Auto-Preload Configuration.
-             (++) Enable/Disable the counter.
-  
-         (#) TIM Output Compare management: this group includes all needed 
-             functions to configure the Capture/Compare unit used in Output 
-             compare mode: 
-             (++) Configure each channel, independently, in Output Compare mode.
-             (++) Select the output compare modes.
-             (++) Select the Polarities of each channel.
-             (++) Set/Get the Capture/Compare register values.
-             (++) Select the Output Compare Fast mode. 
-             (++) Select the Output Compare Forced mode.  
-             (++) Output Compare-Preload Configuration. 
-             (++) Clear Output Compare Reference.
-             (++) Select the OCREF Clear signal.
-             (++) Enable/Disable the Capture/Compare Channels.    
-  
-         (#) TIM Input Capture management: this group includes all needed 
-             functions to configure the Capture/Compare unit used in 
-             Input Capture mode:
-             (++) Configure each channel in input capture mode.
-             (++) Configure Channel1/2 in PWM Input mode.
-             (++) Set the Input Capture Prescaler.
-             (++) Get the Capture/Compare values.  
-             
-        (#) Advanced-control timers (TIM1) specific features
-            (++) Configures the Break input, dead time, Lock level, the OSSI,
-                 the OSSR State and the AOE(automatic output enable)
-            (++) Enable/Disable the TIM peripheral Main Outputs
-            (++) Select the Commutation event
-            (++) Set/Reset the Capture Compare Preload Control bit     
-  
-         (#) TIM interrupts, DMA and flags management.
-             (++) Enable/Disable interrupt sources.
-             (++) Get flags status.
-             (++) Clear flags/ Pending bits.
-             (++) Enable/Disable DMA requests. 
-             (++) Configure DMA burst mode.
-             (++) Select CaptureCompare DMA request.  
-  
-         (#) TIM clocks management: this group includes all needed functions 
-             to configure the clock controller unit:
-             (++) Select internal/External clock.
-             (++) Select the external clock mode: ETR(Mode1/Mode2), TIx or ITRx.
-  
-         (#) TIM synchronization management: this group includes all needed. 
-             functions to configure the Synchronization unit:
-             (++) Select Input Trigger.  
-             (++) Select Output Trigger.  
-             (++) Select Master Slave Mode. 
-             (++) ETR Configuration when used as external trigger.   
-  
-         (#) TIM specific interface management, this group includes all 
-             needed functions to use the specific TIM interface:
-             (++) Encoder Interface Configuration.
-             (++) Select Hall Sensor.   
-  
-         (#) TIM specific remapping management includes the Remapping 
-             configuration of specific timers
-  
-@endverbatim
-  *    
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_tim.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup TIM 
-  * @brief TIM driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-
-/* ---------------------- TIM registers bit mask ------------------------ */
-#define SMCR_ETR_MASK               ((uint16_t)0x00FF) 
-#define CCMR_OFFSET                 ((uint16_t)0x0018)
-#define CCER_CCE_SET                ((uint16_t)0x0001)
-#define CCER_CCNE_SET               ((uint16_t)0x0004) 
-  
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-
-static void TI1_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
-                       uint16_t TIM_ICFilter);
-static void TI2_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
-                       uint16_t TIM_ICFilter);
-static void TI3_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
-                       uint16_t TIM_ICFilter);
-static void TI4_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
-                       uint16_t TIM_ICFilter);
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup TIM_Private_Functions
-  * @{
-  */
-
-/** @defgroup TIM_Group1 TimeBase management functions
- *  @brief   TimeBase management functions 
- *
-@verbatim
- ===============================================================================
-                 ##### TimeBase management functions #####
- ===============================================================================
-  
-        *** TIM Driver: how to use it in Timing(Time base) Mode ***
- ===============================================================================
-    [..] To use the Timer in Timing(Time base) mode, the following steps are 
-         mandatory:
-         (#) Enable TIM clock using 
-             RCC_APBxPeriphClockCmd(RCC_APBxPeriph_TIMx, ENABLE) function.
-         (#) Fill the TIM_TimeBaseInitStruct with the desired parameters.
-         (#) Call TIM_TimeBaseInit(TIMx, &TIM_TimeBaseInitStruct) to configure 
-             the Time Base unit with the corresponding configuration.
-         (#) Enable the NVIC if you need to generate the update interrupt. 
-         (#) Enable the corresponding interrupt using the function 
-             TIM_ITConfig(TIMx, TIM_IT_Update). 
-         (#) Call the TIM_Cmd(ENABLE) function to enable the TIM counter.
-    [..]
-        (@) All other functions can be used seperatly to modify, if needed,
-            a specific feature of the Timer. 
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the TIMx peripheral registers to their default reset values.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @retval None
-  *   
-  */
-void TIM_DeInit(TIM_TypeDef* TIMx)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx)); 
-
-  if (TIMx == TIM1)
-  {
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, ENABLE);
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, DISABLE);  
-  }     
-  else if (TIMx == TIM2)
-  {
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, ENABLE);
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, DISABLE);
-  }
-  else if (TIMx == TIM3)
-  {
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE);
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, DISABLE);
-  }
-  else if (TIMx == TIM6)
-  {
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, ENABLE);
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, DISABLE);
-  } 
-  else if (TIMx == TIM7)
-  {
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, ENABLE);
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, DISABLE);
-  }
-  else if (TIMx == TIM14) 
-  {       
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM14, ENABLE);
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM14, DISABLE);  
-  }        
-  else if (TIMx == TIM15)
-  {
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM15, ENABLE);
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM15, DISABLE);
-  } 
-  else if (TIMx == TIM16)
-  {
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM16, ENABLE);
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM16, DISABLE);
-  } 
-  else
-  {
-    if (TIMx == TIM17)
-    {
-      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM17, ENABLE);
-      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM17, DISABLE);
-    }  
-  }
-     
-}
-
-/**
-  * @brief  Initializes the TIMx Time Base Unit peripheral according to 
-  *         the specified parameters in the TIM_TimeBaseInitStruct.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM 
-  *         peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_TimeBaseInitStruct: pointer to a TIM_TimeBaseInitTypeDef
-  *         structure that contains the configuration information for
-  *         the specified TIM peripheral.
-  * @retval None
-  */
-void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
-{
-  uint16_t tmpcr1 = 0;
-
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx)); 
-  assert_param(IS_TIM_COUNTER_MODE(TIM_TimeBaseInitStruct->TIM_CounterMode));
-  assert_param(IS_TIM_CKD_DIV(TIM_TimeBaseInitStruct->TIM_ClockDivision));
-
-  tmpcr1 = TIMx->CR1;  
-
-  if((TIMx == TIM1) || (TIMx == TIM2) || (TIMx == TIM3))
-  {
-    /* Select the Counter Mode */
-    tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_CR1_DIR | TIM_CR1_CMS)));
-    tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_CounterMode;
-  }
- 
-  if(TIMx != TIM6)
-  {
-    /* Set the clock division */
-    tmpcr1 &= (uint16_t)(~((uint16_t)TIM_CR1_CKD));
-    tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_ClockDivision;
-  }
-
-  TIMx->CR1 = tmpcr1;
-
-  /* Set the Autoreload value */
-  TIMx->ARR = TIM_TimeBaseInitStruct->TIM_Period ;
- 
-  /* Set the Prescaler value */
-  TIMx->PSC = TIM_TimeBaseInitStruct->TIM_Prescaler;
-    
-  if ((TIMx == TIM1) || (TIMx == TIM15)|| (TIMx == TIM16) || (TIMx == TIM17))  
-  {
-    /* Set the Repetition Counter value */
-    TIMx->RCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter;
-  }
-
-  /* Generate an update event to reload the Prescaler and the Repetition counter
-     values immediately */
-  TIMx->EGR = TIM_PSCReloadMode_Immediate;           
-}
-
-/**
-  * @brief  Fills each TIM_TimeBaseInitStruct member with its default value.
-  * @param  TIM_TimeBaseInitStruct: pointer to a TIM_TimeBaseInitTypeDef structure
-  *         which will be initialized.
-  * @retval None
-  */
-void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
-{
-  /* Set the default configuration */
-  TIM_TimeBaseInitStruct->TIM_Period = 0xFFFFFFFF;
-  TIM_TimeBaseInitStruct->TIM_Prescaler = 0x0000;
-  TIM_TimeBaseInitStruct->TIM_ClockDivision = TIM_CKD_DIV1;
-  TIM_TimeBaseInitStruct->TIM_CounterMode = TIM_CounterMode_Up;
-  TIM_TimeBaseInitStruct->TIM_RepetitionCounter = 0x0000;
-}
-
-/**
-  * @brief  Configures the TIMx Prescaler.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @param  Prescaler: specifies the Prescaler Register value
-  * @param  TIM_PSCReloadMode: specifies the TIM Prescaler Reload mode
-  *          This parameter can be one of the following values:
-  *            @arg TIM_PSCReloadMode_Update: The Prescaler is loaded at the update event.
-  *            @arg TIM_PSCReloadMode_Immediate: The Prescaler is loaded immediatly.
-  * @retval None
-  */
-void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_PRESCALER_RELOAD(TIM_PSCReloadMode));
-  
-  /* Set the Prescaler value */
-  TIMx->PSC = Prescaler;
-  /* Set or reset the UG Bit */
-  TIMx->EGR = TIM_PSCReloadMode;
-}
-
-/**
-  * @brief  Specifies the TIMx Counter Mode to be used.
-  * @param  TIMx: where x can be 1, 2, or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_CounterMode: specifies the Counter Mode to be used
-  *          This parameter can be one of the following values:
-  *            @arg TIM_CounterMode_Up: TIM Up Counting Mode
-  *            @arg TIM_CounterMode_Down: TIM Down Counting Mode
-  *            @arg TIM_CounterMode_CenterAligned1: TIM Center Aligned Mode1
-  *            @arg TIM_CounterMode_CenterAligned2: TIM Center Aligned Mode2
-  *            @arg TIM_CounterMode_CenterAligned3: TIM Center Aligned Mode3
-  * @retval None
-  */
-void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode)
-{
-  uint16_t tmpcr1 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_COUNTER_MODE(TIM_CounterMode));
-  
-  tmpcr1 = TIMx->CR1;
-  /* Reset the CMS and DIR Bits */
-  tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_CR1_DIR | TIM_CR1_CMS)));
-  /* Set the Counter Mode */
-  tmpcr1 |= TIM_CounterMode;
-  /* Write to TIMx CR1 register */
-  TIMx->CR1 = tmpcr1;
-}
-
-/**
-  * @brief  Sets the TIMx Counter Register value
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM 
-  *          peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @param  Counter: specifies the Counter register new value.
-  * @retval None
-  */
-void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter)
-{
-  /* Check the parameters */
-   assert_param(IS_TIM_ALL_PERIPH(TIMx));
-   
-  /* Set the Counter Register value */
-  TIMx->CNT = Counter;
-}
-
-/**
-  * @brief  Sets the TIMx Autoreload Register value
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @param  Autoreload: specifies the Autoreload register new value.
-  * @retval None
-  */
-void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  
-  /* Set the Autoreload Register value */
-  TIMx->ARR = Autoreload;
-}
-
-/**
-  * @brief  Gets the TIMx Counter value.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM 
-  *         peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @retval Counter Register value.
-  */
-uint32_t TIM_GetCounter(TIM_TypeDef* TIMx)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  
-  /* Get the Counter Register value */
-  return TIMx->CNT;
-}
-
-/**
-  * @brief  Gets the TIMx Prescaler value.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM 
-  *         peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @retval Prescaler Register value.
-  */
-uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  
-  /* Get the Prescaler Register value */
-  return TIMx->PSC;
-}
-
-/**
-  * @brief  Enables or Disables the TIMx Update event.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM 
-  *         peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @param  NewState: new state of the TIMx UDIS bit
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Set the Update Disable Bit */
-    TIMx->CR1 |= TIM_CR1_UDIS;
-  }
-  else
-  {
-    /* Reset the Update Disable Bit */
-    TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_UDIS);
-  }
-}
-
-/**
-  * @brief  Configures the TIMx Update Request Interrupt source.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM 
-  *         peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @param  TIM_UpdateSource: specifies the Update source.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_UpdateSource_Regular: Source of update is the counter
-  *                 overflow/underflow or the setting of UG bit, or an update
-  *                 generation through the slave mode controller.
-  *            @arg TIM_UpdateSource_Global: Source of update is counter overflow/underflow.
-  * @retval None
-  */
-void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_UPDATE_SOURCE(TIM_UpdateSource));
-  
-  if (TIM_UpdateSource != TIM_UpdateSource_Global)
-  {
-    /* Set the URS Bit */
-    TIMx->CR1 |= TIM_CR1_URS;
-  }
-  else
-  {
-    /* Reset the URS Bit */
-    TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_URS);
-  }
-}
-
-/**
-  * @brief  Enables or disables TIMx peripheral Preload register on ARR.
-  * @param  TIMx: where x can be  1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM 
-  *         peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  NewState: new state of the TIMx peripheral Preload register
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Set the ARR Preload Bit */
-    TIMx->CR1 |= TIM_CR1_ARPE;
-  }
-  else
-  {
-    /* Reset the ARR Preload Bit */
-    TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_ARPE);
-  }
-}
-
-/**
-  * @brief  Selects the TIMx's One Pulse Mode.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM 
-  *         peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @param  TIM_OPMode: specifies the OPM Mode to be used.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OPMode_Single
-  *            @arg TIM_OPMode_Repetitive
-  * @retval None
-  */
-void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_OPM_MODE(TIM_OPMode));
-  
-  /* Reset the OPM Bit */
-  TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_OPM);
-  /* Configure the OPM Mode */
-  TIMx->CR1 |= TIM_OPMode;
-}
-
-/**
-  * @brief  Sets the TIMx Clock Division value.
-  * @param  TIMx: where x can be  1, 2, 3, 14, 15, 16 and 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_CKD: specifies the clock division value.
-  *          This parameter can be one of the following value:
-  *            @arg TIM_CKD_DIV1: TDTS = Tck_tim
-  *            @arg TIM_CKD_DIV2: TDTS = 2*Tck_tim
-  *            @arg TIM_CKD_DIV4: TDTS = 4*Tck_tim
-  * @retval None
-  */
-void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_CKD_DIV(TIM_CKD));
-  
-  /* Reset the CKD Bits */
-  TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_CKD);
-  /* Set the CKD value */
-  TIMx->CR1 |= TIM_CKD;
-}
-
-/**
-  * @brief  Enables or disables the specified TIM peripheral.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17to select the TIMx
-  *         peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @param  NewState: new state of the TIMx peripheral.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx)); 
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the TIM Counter */
-    TIMx->CR1 |= TIM_CR1_CEN;
-  }
-  else
-  {
-    /* Disable the TIM Counter */
-    TIMx->CR1 &= (uint16_t)(~((uint16_t)TIM_CR1_CEN));
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Group2 Advanced-control timers (TIM1) specific features
- *  @brief   Advanced-control timers (TIM1) specific features
- *
-@verbatim   
- ===============================================================================
-      ##### Advanced-control timers (TIM1) specific features #####
- ===============================================================================  
-  
-       ===================================================================      
-              *** TIM Driver: how to use the Break feature ***
-       =================================================================== 
-       [..] After configuring the Timer channel(s) in the appropriate Output Compare mode: 
-                         
-           (#) Fill the TIM_BDTRInitStruct with the desired parameters for the Timer
-               Break Polarity, dead time, Lock level, the OSSI/OSSR State and the 
-               AOE(automatic output enable).
-               
-           (#) Call TIM_BDTRConfig(TIMx, &TIM_BDTRInitStruct) to configure the Timer
-          
-           (#) Enable the Main Output using TIM_CtrlPWMOutputs(TIM1, ENABLE) 
-          
-           (#) Once the break even occurs, the Timer's output signals are put in reset
-               state or in a known state (according to the configuration made in
-               TIM_BDTRConfig() function).
-
-@endverbatim
-  * @{
-  */
-/**
-  * @brief  Configures the: Break feature, dead time, Lock level, OSSI/OSSR State
-  *         and the AOE(automatic output enable).
-  * @param  TIMx: where x can be  1, 15, 16 or 17 to select the TIM 
-  * @param  TIM_BDTRInitStruct: pointer to a TIM_BDTRInitTypeDef structure that
-  *         contains the BDTR Register configuration  information for the TIM peripheral.
-  * @retval None
-  */
-void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST2_PERIPH(TIMx));
-  assert_param(IS_TIM_OSSR_STATE(TIM_BDTRInitStruct->TIM_OSSRState));
-  assert_param(IS_TIM_OSSI_STATE(TIM_BDTRInitStruct->TIM_OSSIState));
-  assert_param(IS_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->TIM_LOCKLevel));
-  assert_param(IS_TIM_BREAK_STATE(TIM_BDTRInitStruct->TIM_Break));
-  assert_param(IS_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->TIM_BreakPolarity));
-  assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->TIM_AutomaticOutput));
-  /* Set the Lock level, the Break enable Bit and the Ploarity, the OSSR State,
-     the OSSI State, the dead time value and the Automatic Output Enable Bit */
-  TIMx->BDTR = (uint32_t)TIM_BDTRInitStruct->TIM_OSSRState | TIM_BDTRInitStruct->TIM_OSSIState |
-             TIM_BDTRInitStruct->TIM_LOCKLevel | TIM_BDTRInitStruct->TIM_DeadTime |
-             TIM_BDTRInitStruct->TIM_Break | TIM_BDTRInitStruct->TIM_BreakPolarity |
-             TIM_BDTRInitStruct->TIM_AutomaticOutput;
-}
-
-/**
-  * @brief  Fills each TIM_BDTRInitStruct member with its default value.
-  * @param  TIM_BDTRInitStruct: pointer to a TIM_BDTRInitTypeDef structure which
-  *         will be initialized.
-  * @retval None
-  */
-void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct)
-{
-  /* Set the default configuration */
-  TIM_BDTRInitStruct->TIM_OSSRState = TIM_OSSRState_Disable;
-  TIM_BDTRInitStruct->TIM_OSSIState = TIM_OSSIState_Disable;
-  TIM_BDTRInitStruct->TIM_LOCKLevel = TIM_LOCKLevel_OFF;
-  TIM_BDTRInitStruct->TIM_DeadTime = 0x00;
-  TIM_BDTRInitStruct->TIM_Break = TIM_Break_Disable;
-  TIM_BDTRInitStruct->TIM_BreakPolarity = TIM_BreakPolarity_Low;
-  TIM_BDTRInitStruct->TIM_AutomaticOutput = TIM_AutomaticOutput_Disable;
-}
-
-/**
-  * @brief  Enables or disables the TIM peripheral Main Outputs.
-  * @param  TIMx: where x can be 1, 15, 16 or 17 to select the TIMx peripheral.
-  * @param  NewState: new state of the TIM peripheral Main Outputs.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST2_PERIPH(TIMx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Enable the TIM Main Output */
-    TIMx->BDTR |= TIM_BDTR_MOE;
-  }
-  else
-  {
-    /* Disable the TIM Main Output */
-    TIMx->BDTR &= (uint16_t)(~((uint16_t)TIM_BDTR_MOE));
-  }  
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Group3 Output Compare management functions
- *  @brief    Output Compare management functions 
- *
-@verbatim
- ===============================================================================
-                ##### Output Compare management functions #####
- ===============================================================================
-        *** TIM Driver: how to use it in Output Compare Mode ***
- ===============================================================================
-    [..] To use the Timer in Output Compare mode, the following steps are mandatory:
-         (#) Enable TIM clock using 
-             RCC_APBxPeriphClockCmd(RCC_APBxPeriph_TIMx, ENABLE) function.
-         (#) Configure the TIM pins by configuring the corresponding GPIO pins
-         (#) Configure the Time base unit as described in the first part of this 
-             driver, if needed, else the Timer will run with the default 
-             configuration:
-             (++) Autoreload value = 0xFFFF.
-             (++) Prescaler value = 0x0000.
-             (++) Counter mode = Up counting.
-             (++) Clock Division = TIM_CKD_DIV1.
-         (#) Fill the TIM_OCInitStruct with the desired parameters including:
-             (++) The TIM Output Compare mode: TIM_OCMode.
-             (++) TIM Output State: TIM_OutputState.
-             (++) TIM Pulse value: TIM_Pulse.
-             (++) TIM Output Compare Polarity : TIM_OCPolarity.
-         (#) Call TIM_OCxInit(TIMx, &TIM_OCInitStruct) to configure the desired 
-             channel with the corresponding configuration.
-         (#) Call the TIM_Cmd(ENABLE) function to enable the TIM counter.
-    [..]
-        (@) All other functions can be used separately to modify, if needed,
-          a specific feature of the Timer.
-        (@) In case of PWM mode, this function is mandatory:
-            TIM_OCxPreloadConfig(TIMx, TIM_OCPreload_ENABLE).
-        (@) If the corresponding interrupt or DMA request are needed, the user should:
-            (#@) Enable the NVIC (or the DMA) to use the TIM interrupts (or DMA requests).
-            (#@) Enable the corresponding interrupt (or DMA request) using the function
-                 TIM_ITConfig(TIMx, TIM_IT_CCx) (or TIM_DMA_Cmd(TIMx, TIM_DMA_CCx)).
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Initializes the TIMx Channel1 according to the specified
-  *         parameters in the TIM_OCInitStruct.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 and 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure
-  *         that contains the configuration information for the specified TIM 
-  *         peripheral.
-  * @retval None
-  */
-void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
-{
-  uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0;
-   
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode));
-  assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState));
-  assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity));   
- /* Disable the Channel 1: Reset the CC1E Bit */
-  TIMx->CCER &= (uint16_t)(~(uint16_t)TIM_CCER_CC1E);
-  /* Get the TIMx CCER register value */
-  tmpccer = TIMx->CCER;
-  /* Get the TIMx CR2 register value */
-  tmpcr2 =  TIMx->CR2;
-  
-  /* Get the TIMx CCMR1 register value */
-  tmpccmrx = TIMx->CCMR1;
-    
-  /* Reset the Output Compare Mode Bits */
-  tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR1_OC1M));
-  tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR1_CC1S));
-
-  /* Select the Output Compare Mode */
-  tmpccmrx |= TIM_OCInitStruct->TIM_OCMode;
-  
-  /* Reset the Output Polarity level */
-  tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC1P));
-  /* Set the Output Compare Polarity */
-  tmpccer |= TIM_OCInitStruct->TIM_OCPolarity;
-  
-  /* Set the Output State */
-  tmpccer |= TIM_OCInitStruct->TIM_OutputState;
-    
-  if((TIMx == TIM1) || (TIMx == TIM15) || (TIMx == TIM16) || (TIMx == TIM17))
-  {
-    assert_param(IS_TIM_OUTPUTN_STATE(TIM_OCInitStruct->TIM_OutputNState));
-    assert_param(IS_TIM_OCN_POLARITY(TIM_OCInitStruct->TIM_OCNPolarity));
-    assert_param(IS_TIM_OCNIDLE_STATE(TIM_OCInitStruct->TIM_OCNIdleState));
-    assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState));
-    
-    /* Reset the Output N Polarity level */
-    tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC1NP));
-    /* Set the Output N Polarity */
-    tmpccer |= TIM_OCInitStruct->TIM_OCNPolarity;
-    
-    /* Reset the Output N State */
-    tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC1NE));    
-    /* Set the Output N State */
-    tmpccer |= TIM_OCInitStruct->TIM_OutputNState;
-    
-    /* Reset the Ouput Compare and Output Compare N IDLE State */
-    tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS1));
-    tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS1N));
-    
-    /* Set the Output Idle state */
-    tmpcr2 |= TIM_OCInitStruct->TIM_OCIdleState;
-    /* Set the Output N Idle state */
-    tmpcr2 |= TIM_OCInitStruct->TIM_OCNIdleState;
-  }
-  /* Write to TIMx CR2 */
-  TIMx->CR2 = tmpcr2;
-  
-  /* Write to TIMx CCMR1 */
-  TIMx->CCMR1 = tmpccmrx;
-
-  /* Set the Capture Compare Register value */
-  TIMx->CCR1 = TIM_OCInitStruct->TIM_Pulse; 
- 
-  /* Write to TIMx CCER */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Initializes the TIMx Channel2 according to the specified
-  *         parameters in the TIM_OCInitStruct.
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure
-  *         that contains the configuration information for the specified TIM 
-  *         peripheral.
-  * @retval None
-  */
-void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
-{
-  uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0;
-   
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx)); 
-  assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode));
-  assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState));
-  assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity));   
-   /* Disable the Channel 2: Reset the CC2E Bit */
-  TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CCER_CC2E));
-  
-  /* Get the TIMx CCER register value */  
-  tmpccer = TIMx->CCER;
-  /* Get the TIMx CR2 register value */
-  tmpcr2 =  TIMx->CR2;
-  
-  /* Get the TIMx CCMR1 register value */
-  tmpccmrx = TIMx->CCMR1;
-    
-  /* Reset the Output Compare mode and Capture/Compare selection Bits */
-  tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR1_OC2M));
-  tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR1_CC2S));
-  
-  /* Select the Output Compare Mode */
-  tmpccmrx |= (uint16_t)(TIM_OCInitStruct->TIM_OCMode << 8);
-  
-  /* Reset the Output Polarity level */
-  tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC2P));
-  /* Set the Output Compare Polarity */
-  tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 4);
-  
-  /* Set the Output State */
-  tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 4);
-    
-  if((TIMx == TIM1) || (TIMx == TIM15))
-  {
-    /* Check the parameters */
-    assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState));
-    
-    /* Reset the Ouput Compare State */
-    tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS2));
-    
-    /* Set the Output Idle state */
-    tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 2);
-    
-    if (TIMx == TIM1)
-    {    
-      /* Check the parameters */
-      assert_param(IS_TIM_OUTPUTN_STATE(TIM_OCInitStruct->TIM_OutputNState));
-      assert_param(IS_TIM_OCN_POLARITY(TIM_OCInitStruct->TIM_OCNPolarity));
-      assert_param(IS_TIM_OCNIDLE_STATE(TIM_OCInitStruct->TIM_OCNIdleState));
-      
-      /* Reset the Output N Polarity level */
-      tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC2NP));
-      /* Set the Output N Polarity */
-      tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCNPolarity << 4);
-      
-      /* Reset the Output N State */
-      tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC2NE));    
-      /* Set the Output N State */
-      tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputNState << 4);
-      
-      /* Reset the Output Compare N IDLE State */
-      tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS2N));
-      
-      /* Set the Output N Idle state */
-      tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCNIdleState << 2);
-    }
-  }
-  /* Write to TIMx CR2 */
-  TIMx->CR2 = tmpcr2;
-  
-  /* Write to TIMx CCMR1 */
-  TIMx->CCMR1 = tmpccmrx;
-
-  /* Set the Capture Compare Register value */
-  TIMx->CCR2 = TIM_OCInitStruct->TIM_Pulse;
-  
-  /* Write to TIMx CCER */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Initializes the TIMx Channel3 according to the specified
-  *         parameters in the TIM_OCInitStruct.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure
-  *         that contains the configuration information for the specified TIM 
-  *         peripheral.
-  * @retval None
-  */
-void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
-{
-  uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0;
-   
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx)); 
-  assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode));
-  assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState));
-  assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity));   
-  /* Disable the Channel 2: Reset the CC2E Bit */
-  TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CCER_CC3E));
-  
-  /* Get the TIMx CCER register value */
-  tmpccer = TIMx->CCER;
-  /* Get the TIMx CR2 register value */
-  tmpcr2 =  TIMx->CR2;
-  
-  /* Get the TIMx CCMR2 register value */
-  tmpccmrx = TIMx->CCMR2;
-    
-  /* Reset the Output Compare mode and Capture/Compare selection Bits */
-  tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR2_OC3M));
-  tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR2_CC3S));  
-  /* Select the Output Compare Mode */
-  tmpccmrx |= TIM_OCInitStruct->TIM_OCMode;
-  
-  /* Reset the Output Polarity level */
-  tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC3P));
-  /* Set the Output Compare Polarity */
-  tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 8);
-  
-  /* Set the Output State */
-  tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 8);
-    
-  if(TIMx == TIM1)
-  {
-    assert_param(IS_TIM_OUTPUTN_STATE(TIM_OCInitStruct->TIM_OutputNState));
-    assert_param(IS_TIM_OCN_POLARITY(TIM_OCInitStruct->TIM_OCNPolarity));
-    assert_param(IS_TIM_OCNIDLE_STATE(TIM_OCInitStruct->TIM_OCNIdleState));
-    assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState));
-    
-    /* Reset the Output N Polarity level */
-    tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC3NP));
-    /* Set the Output N Polarity */
-    tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCNPolarity << 8);
-    /* Reset the Output N State */
-    tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC3NE));
-    
-    /* Set the Output N State */
-    tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputNState << 8);
-    /* Reset the Ouput Compare and Output Compare N IDLE State */
-    tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS3));
-    tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS3N));
-    /* Set the Output Idle state */
-    tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 4);
-    /* Set the Output N Idle state */
-    tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCNIdleState << 4);
-  }
-  /* Write to TIMx CR2 */
-  TIMx->CR2 = tmpcr2;
-  
-  /* Write to TIMx CCMR2 */
-  TIMx->CCMR2 = tmpccmrx;
-
-  /* Set the Capture Compare Register value */
-  TIMx->CCR3 = TIM_OCInitStruct->TIM_Pulse;
-  
-  /* Write to TIMx CCER */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Initializes the TIMx Channel4 according to the specified
-  *         parameters in the TIM_OCInitStruct.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure
-  *         that contains the configuration information for the specified TIM 
-  *         peripheral.
-  * @retval None
-  */
-void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
-{
-  uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0;
-   
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx)); 
-  assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode));
-  assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState));
-  assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity));   
-  /* Disable the Channel 2: Reset the CC4E Bit */
-  TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CCER_CC4E));
-  
-  /* Get the TIMx CCER register value */
-  tmpccer = TIMx->CCER;
-  /* Get the TIMx CR2 register value */
-  tmpcr2 =  TIMx->CR2;
-  
-  /* Get the TIMx CCMR2 register value */
-  tmpccmrx = TIMx->CCMR2;
-    
-  /* Reset the Output Compare mode and Capture/Compare selection Bits */
-  tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR2_OC4M));
-  tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR2_CC4S));
-  
-  /* Select the Output Compare Mode */
-  tmpccmrx |= (uint16_t)(TIM_OCInitStruct->TIM_OCMode << 8);
-  
-  /* Reset the Output Polarity level */
-  tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC4P));
-  /* Set the Output Compare Polarity */
-  tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 12);
-  
-  /* Set the Output State */
-  tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 12);
-    
-  if(TIMx == TIM1)
-  {
-    assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState));
-    /* Reset the Ouput Compare IDLE State */
-    tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS4));
-    /* Set the Output Idle state */
-    tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 6);
-  }
-  /* Write to TIMx CR2 */
-  TIMx->CR2 = tmpcr2;
-  
-  /* Write to TIMx CCMR2 */  
-  TIMx->CCMR2 = tmpccmrx;
-
-  /* Set the Capture Compare Register value */
-  TIMx->CCR4 = TIM_OCInitStruct->TIM_Pulse;
-  
-  /* Write to TIMx CCER */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Fills each TIM_OCInitStruct member with its default value.
-  * @param  TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure which will
-  *         be initialized.
-  * @retval None
-  */
-void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct)
-{
-  /* Set the default configuration */
-  TIM_OCInitStruct->TIM_OCMode = TIM_OCMode_Timing;
-  TIM_OCInitStruct->TIM_OutputState = TIM_OutputState_Disable;
-  TIM_OCInitStruct->TIM_OutputNState = TIM_OutputNState_Disable;
-  TIM_OCInitStruct->TIM_Pulse = 0x0000000;
-  TIM_OCInitStruct->TIM_OCPolarity = TIM_OCPolarity_High;
-  TIM_OCInitStruct->TIM_OCNPolarity = TIM_OCPolarity_High;
-  TIM_OCInitStruct->TIM_OCIdleState = TIM_OCIdleState_Reset;
-  TIM_OCInitStruct->TIM_OCNIdleState = TIM_OCNIdleState_Reset;
-}
-
-/**
-  * @brief  Selects the TIM Output Compare Mode.
-  * @note   This function disables the selected channel before changing the Output
-  *         Compare Mode.
-  *         User has to enable this channel using TIM_CCxCmd and TIM_CCxNCmd functions.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_Channel: specifies the TIM Channel
-  *          This parameter can be one of the following values:
-  *            @arg TIM_Channel_1: TIM Channel 1
-  *            @arg TIM_Channel_2: TIM Channel 2
-  *            @arg TIM_Channel_3: TIM Channel 3
-  *            @arg TIM_Channel_4: TIM Channel 4
-  * @param  TIM_OCMode: specifies the TIM Output Compare Mode.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCMode_Timing
-  *            @arg TIM_OCMode_Active
-  *            @arg TIM_OCMode_Toggle
-  *            @arg TIM_OCMode_PWM1
-  *            @arg TIM_OCMode_PWM2
-  *            @arg TIM_ForcedAction_Active
-  *            @arg TIM_ForcedAction_InActive
-  * @retval None
-  */
-void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode)
-{
-  uint32_t tmp = 0;
-  uint16_t tmp1 = 0;
-
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));  
-  assert_param(IS_TIM_OCM(TIM_OCMode));
-  
-  tmp = (uint32_t) TIMx;
-  tmp += CCMR_OFFSET;
-
-  tmp1 = CCER_CCE_SET << (uint16_t)TIM_Channel;
-
-  /* Disable the Channel: Reset the CCxE Bit */
-  TIMx->CCER &= (uint16_t) ~tmp1;
-
-  if((TIM_Channel == TIM_Channel_1) ||(TIM_Channel == TIM_Channel_3))
-  {
-    tmp += (TIM_Channel>>1);
-
-    /* Reset the OCxM bits in the CCMRx register */
-    *(__IO uint32_t *) tmp &= (uint32_t)~((uint32_t)TIM_CCMR1_OC1M);
-   
-    /* Configure the OCxM bits in the CCMRx register */
-    *(__IO uint32_t *) tmp |= TIM_OCMode;
-  }
-  else
-  {
-    tmp += (uint16_t)(TIM_Channel - (uint16_t)4)>> (uint16_t)1;
-
-    /* Reset the OCxM bits in the CCMRx register */
-    *(__IO uint32_t *) tmp &= (uint32_t)~((uint32_t)TIM_CCMR1_OC2M);
-    
-    /* Configure the OCxM bits in the CCMRx register */
-    *(__IO uint32_t *) tmp |= (uint16_t)(TIM_OCMode << 8);
-  }
-}
-
-/**
-  * @brief  Sets the TIMx Capture Compare1 Register value
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  Compare1: specifies the Capture Compare1 register new value.
-  * @retval None
-  */
-void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  
-  /* Set the Capture Compare1 Register value */
-  TIMx->CCR1 = Compare1;
-}
-
-/**
-  * @brief  Sets the TIMx Capture Compare2 Register value
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  Compare2: specifies the Capture Compare2 register new value.
-  * @retval None
-  */
-void TIM_SetCompare2(TIM_TypeDef* TIMx, uint32_t Compare2)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  
-  /* Set the Capture Compare2 Register value */
-  TIMx->CCR2 = Compare2;
-}
-
-/**
-  * @brief  Sets the TIMx Capture Compare3 Register value
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @param  Compare3: specifies the Capture Compare3 register new value.
-  * @retval None
-  */
-void TIM_SetCompare3(TIM_TypeDef* TIMx, uint32_t Compare3)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  
-  /* Set the Capture Compare3 Register value */
-  TIMx->CCR3 = Compare3;
-}
-
-/**
-  * @brief  Sets the TIMx Capture Compare4 Register value
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.    
-  * @param  Compare4: specifies the Capture Compare4 register new value.
-  * @retval None
-  */
-void TIM_SetCompare4(TIM_TypeDef* TIMx, uint32_t Compare4)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  
-  /* Set the Capture Compare4 Register value */
-  TIMx->CCR4 = Compare4;
-}
-
-/**
-  * @brief  Forces the TIMx output 1 waveform to active or inactive level.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ForcedAction: specifies the forced Action to be set to the output waveform.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ForcedAction_Active: Force active level on OC1REF
-  *            @arg TIM_ForcedAction_InActive: Force inactive level on OC1REF.
-  * @retval None
-  */
-void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction)
-{
-  uint16_t tmpccmr1 = 0;
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
-  tmpccmr1 = TIMx->CCMR1;
-  /* Reset the OC1M Bits */
-  tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1M);
-  /* Configure The Forced output Mode */
-  tmpccmr1 |= TIM_ForcedAction;
-  /* Write to TIMx CCMR1 register */
-  TIMx->CCMR1 = tmpccmr1;
-}
- 
-/**
-  * @brief  Forces the TIMx output 2 waveform to active or inactive level.
-  * @param  TIMx: where x can be 1, 2, 3, or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ForcedAction: specifies the forced Action to be set to the output waveform.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ForcedAction_Active: Force active level on OC2REF
-  *            @arg TIM_ForcedAction_InActive: Force inactive level on OC2REF.
-  * @retval None
-  */
-void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction)
-{
-  uint16_t tmpccmr1 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
-  
-  tmpccmr1 = TIMx->CCMR1;
-  /* Reset the OC2M Bits */
-  tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC2M);
-  /* Configure The Forced output Mode */
-  tmpccmr1 |= (uint16_t)(TIM_ForcedAction << 8);
-  /* Write to TIMx CCMR1 register */
-  TIMx->CCMR1 = tmpccmr1;
-}
-
-/**
-  * @brief  Forces the TIMx output 3 waveform to active or inactive level.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ForcedAction: specifies the forced Action to be set to the output waveform.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ForcedAction_Active: Force active level on OC3REF
-  *            @arg TIM_ForcedAction_InActive: Force inactive level on OC3REF.
-  * @retval None
-  */
-void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction)
-{
-  uint16_t tmpccmr2 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
-  
-  tmpccmr2 = TIMx->CCMR2;
-  /* Reset the OC1M Bits */
-  tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC3M);
-  /* Configure The Forced output Mode */
-  tmpccmr2 |= TIM_ForcedAction;
-  /* Write to TIMx CCMR2 register */
-  TIMx->CCMR2 = tmpccmr2;
-}
-
-/**
-  * @brief  Forces the TIMx output 4 waveform to active or inactive level.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ForcedAction: specifies the forced Action to be set to the output waveform.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ForcedAction_Active: Force active level on OC4REF
-  *            @arg TIM_ForcedAction_InActive: Force inactive level on OC4REF.
-  * @retval None
-  */
-void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction)
-{
-  uint16_t tmpccmr2 = 0;
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
-  
-  tmpccmr2 = TIMx->CCMR2;
-  /* Reset the OC2M Bits */
-  tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC4M);
-  /* Configure The Forced output Mode */
-  tmpccmr2 |= (uint16_t)(TIM_ForcedAction << 8);
-  /* Write to TIMx CCMR2 register */
-  TIMx->CCMR2 = tmpccmr2;
-}
-
-/**
-  * @brief  Sets or Resets the TIM peripheral Capture Compare Preload Control bit.
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIMx peripheral
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  NewState: new state of the Capture Compare Preload Control bit
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState)
-{ 
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Set the CCPC Bit */
-    TIMx->CR2 |= TIM_CR2_CCPC;
-  }
-  else
-  {
-    /* Reset the CCPC Bit */
-    TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_CCPC);
-  }
-}
-
-
-/**
-  * @brief  Enables or disables the TIMx peripheral Preload register on CCR1.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 and 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCPreload: new state of the TIMx peripheral Preload register
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCPreload_Enable
-  *            @arg TIM_OCPreload_Disable
-  * @retval None
-  */
-void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)
-{
-  uint16_t tmpccmr1 = 0;
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload));
-  
-  tmpccmr1 = TIMx->CCMR1;
-  /* Reset the OC1PE Bit */
-  tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1PE);
-  /* Enable or Disable the Output Compare Preload feature */
-  tmpccmr1 |= TIM_OCPreload;
-  /* Write to TIMx CCMR1 register */
-  TIMx->CCMR1 = tmpccmr1;
-}
-
-/**
-  * @brief  Enables or disables the TIMx peripheral Preload register on CCR2.
-  * @param  TIMx: where x can be 1, 2, 3 and 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCPreload: new state of the TIMx peripheral Preload register
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCPreload_Enable
-  *            @arg TIM_OCPreload_Disable
-  * @retval None
-  */
-void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)
-{
-  uint16_t tmpccmr1 = 0;
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload));
-  
-  tmpccmr1 = TIMx->CCMR1;
-  /* Reset the OC2PE Bit */
-  tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC2PE);
-  /* Enable or Disable the Output Compare Preload feature */
-  tmpccmr1 |= (uint16_t)(TIM_OCPreload << 8);
-  /* Write to TIMx CCMR1 register */
-  TIMx->CCMR1 = tmpccmr1;
-}
-
-/**
-  * @brief  Enables or disables the TIMx peripheral Preload register on CCR3.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCPreload: new state of the TIMx peripheral Preload register
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCPreload_Enable
-  *            @arg TIM_OCPreload_Disable
-  * @retval None
-  */
-void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)
-{
-  uint16_t tmpccmr2 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload));
-  
-  tmpccmr2 = TIMx->CCMR2;
-  /* Reset the OC3PE Bit */
-  tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC3PE);
-  /* Enable or Disable the Output Compare Preload feature */
-  tmpccmr2 |= TIM_OCPreload;
-  /* Write to TIMx CCMR2 register */
-  TIMx->CCMR2 = tmpccmr2;
-}
-
-/**
-  * @brief  Enables or disables the TIMx peripheral Preload register on CCR4.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCPreload: new state of the TIMx peripheral Preload register
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCPreload_Enable
-  *            @arg TIM_OCPreload_Disable
-  * @retval None
-  */
-void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)
-{
-  uint16_t tmpccmr2 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload));
-  
-  tmpccmr2 = TIMx->CCMR2;
-  /* Reset the OC4PE Bit */
-  tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC4PE);
-  /* Enable or Disable the Output Compare Preload feature */
-  tmpccmr2 |= (uint16_t)(TIM_OCPreload << 8);
-  /* Write to TIMx CCMR2 register */
-  TIMx->CCMR2 = tmpccmr2;
-}
-
-/**
-  * @brief  Configures the TIMx Output Compare 1 Fast feature.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_OCFast: new state of the Output Compare Fast Enable Bit.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCFast_Enable: TIM output compare fast enable
-  *            @arg TIM_OCFast_Disable: TIM output compare fast disable
-  * @retval None
-  */
-void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast)
-{
-  uint16_t tmpccmr1 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_OCFAST_STATE(TIM_OCFast));
-  
-  /* Get the TIMx CCMR1 register value */
-  tmpccmr1 = TIMx->CCMR1;
-  /* Reset the OC1FE Bit */
-  tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1FE);
-  /* Enable or Disable the Output Compare Fast Bit */
-  tmpccmr1 |= TIM_OCFast;
-  /* Write to TIMx CCMR1 */
-  TIMx->CCMR1 = tmpccmr1;
-}
-
-/**
-  * @brief  Configures the TIMx Output Compare 2 Fast feature.
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCFast: new state of the Output Compare Fast Enable Bit.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCFast_Enable: TIM output compare fast enable
-  *            @arg TIM_OCFast_Disable: TIM output compare fast disable
-  * @retval None
-  */
-void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast)
-{
-  uint16_t tmpccmr1 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_OCFAST_STATE(TIM_OCFast));
-  
-  /* Get the TIMx CCMR1 register value */
-  tmpccmr1 = TIMx->CCMR1;
-  /* Reset the OC2FE Bit */
-  tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC2FE);
-  /* Enable or Disable the Output Compare Fast Bit */
-  tmpccmr1 |= (uint16_t)(TIM_OCFast << 8);
-  /* Write to TIMx CCMR1 */
-  TIMx->CCMR1 = tmpccmr1;
-}
-
-/**
-  * @brief  Configures the TIMx Output Compare 3 Fast feature.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCFast: new state of the Output Compare Fast Enable Bit.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCFast_Enable: TIM output compare fast enable
-  *            @arg TIM_OCFast_Disable: TIM output compare fast disable
-  * @retval None
-  */
-void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast)
-{
-  uint16_t tmpccmr2 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_OCFAST_STATE(TIM_OCFast));
-  
-  /* Get the TIMx CCMR2 register value */
-  tmpccmr2 = TIMx->CCMR2;
-  /* Reset the OC3FE Bit */
-  tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC3FE);
-  /* Enable or Disable the Output Compare Fast Bit */
-  tmpccmr2 |= TIM_OCFast;
-  /* Write to TIMx CCMR2 */
-  TIMx->CCMR2 = tmpccmr2;
-}
-
-/**
-  * @brief  Configures the TIMx Output Compare 4 Fast feature.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCFast: new state of the Output Compare Fast Enable Bit.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCFast_Enable: TIM output compare fast enable
-  *            @arg TIM_OCFast_Disable: TIM output compare fast disable
-  * @retval None
-  */
-void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast)
-{
-  uint16_t tmpccmr2 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_OCFAST_STATE(TIM_OCFast));
-  
-  /* Get the TIMx CCMR2 register value */
-  tmpccmr2 = TIMx->CCMR2;
-  /* Reset the OC4FE Bit */
-  tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC4FE);
-  /* Enable or Disable the Output Compare Fast Bit */
-  tmpccmr2 |= (uint16_t)(TIM_OCFast << 8);
-  /* Write to TIMx CCMR2 */
-  TIMx->CCMR2 = tmpccmr2;
-}
-
-/**
-  * @brief  Clears or safeguards the OCREF1 signal on an external event
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCClear: new state of the Output Compare Clear Enable Bit.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCClear_Enable: TIM Output clear enable
-  *            @arg TIM_OCClear_Disable: TIM Output clear disable
-  * @retval None
-  */
-void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear)
-{
-  uint16_t tmpccmr1 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear));
-  
-  tmpccmr1 = TIMx->CCMR1;
-  /* Reset the OC1CE Bit */
-  tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1CE);
-  /* Enable or Disable the Output Compare Clear Bit */
-  tmpccmr1 |= TIM_OCClear;
-  /* Write to TIMx CCMR1 register */
-  TIMx->CCMR1 = tmpccmr1;
-}
-
-/**
-  * @brief  Clears or safeguards the OCREF2 signal on an external event
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCClear: new state of the Output Compare Clear Enable Bit.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCClear_Enable: TIM Output clear enable
-  *            @arg TIM_OCClear_Disable: TIM Output clear disable
-  * @retval None
-  */
-void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear)
-{
-  uint16_t tmpccmr1 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear));
-  
-  tmpccmr1 = TIMx->CCMR1;
-  /* Reset the OC2CE Bit */
-  tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC2CE);
-  /* Enable or Disable the Output Compare Clear Bit */
-  tmpccmr1 |= (uint16_t)(TIM_OCClear << 8);
-  /* Write to TIMx CCMR1 register */
-  TIMx->CCMR1 = tmpccmr1;
-}
-
-/**
-  * @brief  Clears or safeguards the OCREF3 signal on an external event
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCClear: new state of the Output Compare Clear Enable Bit.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCClear_Enable: TIM Output clear enable
-  *            @arg TIM_OCClear_Disable: TIM Output clear disable
-  * @retval None
-  */
-void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear)
-{
-  uint16_t tmpccmr2 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear));
-  
-  tmpccmr2 = TIMx->CCMR2;
-  /* Reset the OC3CE Bit */
-  tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC3CE);
-  /* Enable or Disable the Output Compare Clear Bit */
-  tmpccmr2 |= TIM_OCClear;
-  /* Write to TIMx CCMR2 register */
-  TIMx->CCMR2 = tmpccmr2;
-}
-
-/**
-  * @brief  Clears or safeguards the OCREF4 signal on an external event
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCClear: new state of the Output Compare Clear Enable Bit.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCClear_Enable: TIM Output clear enable
-  *            @arg TIM_OCClear_Disable: TIM Output clear disable
-  * @retval None
-  */
-void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear)
-{
-  uint16_t tmpccmr2 = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear));
-  
-  tmpccmr2 = TIMx->CCMR2;
-  /* Reset the OC4CE Bit */
-  tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC4CE);
-  /* Enable or Disable the Output Compare Clear Bit */
-  tmpccmr2 |= (uint16_t)(TIM_OCClear << 8);
-  /* Write to TIMx CCMR2 register */
-  TIMx->CCMR2 = tmpccmr2;
-}
-
-/**
-  * @brief  Configures the TIMx channel 1 polarity.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCPolarity: specifies the OC1 Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_OCPolarity_High: Output Compare active high
-  *            @arg TIM_OCPolarity_Low: Output Compare active low
-  * @retval None
-  */
-void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity)
-{
-  uint16_t tmpccer = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity));
-  
-  tmpccer = TIMx->CCER;
-  /* Set or Reset the CC1P Bit */
-  tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC1P);
-  tmpccer |= TIM_OCPolarity;
-  /* Write to TIMx CCER register */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configures the TIMx Channel 1N polarity.
-  * @param  TIMx: where x can be 1, 15, 16 or 17 to select the TIM peripheral.
-  * @param  TIM_OCNPolarity: specifies the OC1N Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_OCNPolarity_High: Output Compare active high
-  *            @arg TIM_OCNPolarity_Low: Output Compare active low
-  * @retval None
-  */
-void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity)
-{
-  uint16_t tmpccer = 0;
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST2_PERIPH(TIMx));
-  assert_param(IS_TIM_OCN_POLARITY(TIM_OCNPolarity));
-   
-  tmpccer = TIMx->CCER;
-  /* Set or Reset the CC1NP Bit */
-  tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC1NP);
-  tmpccer |= TIM_OCNPolarity;
-  /* Write to TIMx CCER register */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configures the TIMx channel 2 polarity.
-  * @param  TIMx: where x can be 1, 2, 3, or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCPolarity: specifies the OC2 Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_OCPolarity_High: Output Compare active high
-  *            @arg TIM_OCPolarity_Low: Output Compare active low
-  * @retval None
-  */
-void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity)
-{
-  uint16_t tmpccer = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity));
-  
-  tmpccer = TIMx->CCER;
-  /* Set or Reset the CC2P Bit */
-  tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC2P);
-  tmpccer |= (uint16_t)(TIM_OCPolarity << 4);
-  /* Write to TIMx CCER register */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configures the TIMx Channel 2N polarity.
-  * @param  TIMx: where x can be 1 to select the TIM peripheral.
-  * @param  TIM_OCNPolarity: specifies the OC2N Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_OCNPolarity_High: Output Compare active high
-  *            @arg TIM_OCNPolarity_Low: Output Compare active low
-  * @retval None
-  */
-void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity)
-{
-  uint16_t tmpccer = 0;
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST1_PERIPH(TIMx));
-  assert_param(IS_TIM_OCN_POLARITY(TIM_OCNPolarity));
-  
-  tmpccer = TIMx->CCER;
-  /* Set or Reset the CC2NP Bit */
-  tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC2NP);
-  tmpccer |= (uint16_t)(TIM_OCNPolarity << 4);
-  /* Write to TIMx CCER register */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configures the TIMx channel 3 polarity.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCPolarity: specifies the OC3 Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_OCPolarity_High: Output Compare active high
-  *            @arg TIM_OCPolarity_Low: Output Compare active low
-  * @retval None
-  */
-void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity)
-{
-  uint16_t tmpccer = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity));
-  
-  tmpccer = TIMx->CCER;
-  /* Set or Reset the CC3P Bit */
-  tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC3P);
-  tmpccer |= (uint16_t)(TIM_OCPolarity << 8);
-  /* Write to TIMx CCER register */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configures the TIMx Channel 3N polarity.
-  * @param  TIMx: where x can be 1 to select the TIM peripheral.
-  * @param  TIM_OCNPolarity: specifies the OC3N Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_OCNPolarity_High: Output Compare active high
-  *            @arg TIM_OCNPolarity_Low: Output Compare active low
-  * @retval None
-  */
-void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity)
-{
-  uint16_t tmpccer = 0;
- 
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST1_PERIPH(TIMx));
-  assert_param(IS_TIM_OCN_POLARITY(TIM_OCNPolarity));
-    
-  tmpccer = TIMx->CCER;
-  /* Set or Reset the CC3NP Bit */
-  tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC3NP);
-  tmpccer |= (uint16_t)(TIM_OCNPolarity << 8);
-  /* Write to TIMx CCER register */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configures the TIMx channel 4 polarity.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCPolarity: specifies the OC4 Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_OCPolarity_High: Output Compare active high
-  *            @arg TIM_OCPolarity_Low: Output Compare active low
-  * @retval None
-  */
-void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity)
-{
-  uint16_t tmpccer = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity));
-  
-  tmpccer = TIMx->CCER;
-  /* Set or Reset the CC4P Bit */
-  tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC4P);
-  tmpccer |= (uint16_t)(TIM_OCPolarity << 12);
-  /* Write to TIMx CCER register */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Selects the OCReference Clear source.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_OCReferenceClear: specifies the OCReference Clear source.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_OCReferenceClear_ETRF: The internal OCreference clear input is connected to ETRF.
-  *            @arg TIM_OCReferenceClear_OCREFCLR: The internal OCreference clear input is connected to OCREF_CLR input.  
-  * @retval None
-  */
-void TIM_SelectOCREFClear(TIM_TypeDef* TIMx, uint16_t TIM_OCReferenceClear)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(TIM_OCREFERENCECECLEAR_SOURCE(TIM_OCReferenceClear));
-
-  /* Set the TIM_OCReferenceClear source */
-  TIMx->SMCR &=  (uint16_t)~((uint16_t)TIM_SMCR_OCCS);
-  TIMx->SMCR |=  TIM_OCReferenceClear;
-}
-
-/**
-  * @brief  Enables or disables the TIM Capture Compare Channel x.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_Channel: specifies the TIM Channel
-  *          This parameter can be one of the following values:
-  *            @arg TIM_Channel_1: TIM Channel 1
-  *            @arg TIM_Channel_2: TIM Channel 2
-  *            @arg TIM_Channel_3: TIM Channel 3
-  *            @arg TIM_Channel_4: TIM Channel 4
-  * @param  TIM_CCx: specifies the TIM Channel CCxE bit new state.
-  *          This parameter can be: TIM_CCx_Enable or TIM_CCx_Disable. 
-  * @retval None
-  */
-void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx)
-{
-  uint16_t tmp = 0;
-
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx)); 
-  assert_param(IS_TIM_CCX(TIM_CCx));
-
-  tmp = CCER_CCE_SET << TIM_Channel;
-
-  /* Reset the CCxE Bit */
-  TIMx->CCER &= (uint16_t)~ tmp;
-
-  /* Set or reset the CCxE Bit */ 
-  TIMx->CCER |=  (uint16_t)(TIM_CCx << TIM_Channel);
-}
-
-/**
-  * @brief  Enables or disables the TIM Capture Compare Channel xN.
-  * @param  TIMx: where x can be 1, 15, 16 or 17 to select the TIM peripheral.
-  * @param  TIM_Channel: specifies the TIM Channel
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_Channel_1: TIM Channel 1
-  *            @arg TIM_Channel_2: TIM Channel 2
-  *            @arg TIM_Channel_3: TIM Channel 3
-  * @param  TIM_CCxN: specifies the TIM Channel CCxNE bit new state.
-  *          This parameter can be: TIM_CCxN_Enable or TIM_CCxN_Disable. 
-  * @retval None
-  */
-void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN)
-{
-  uint16_t tmp = 0;
-
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST2_PERIPH(TIMx));
-  assert_param(IS_TIM_COMPLEMENTARY_CHANNEL(TIM_Channel));
-  assert_param(IS_TIM_CCXN(TIM_CCxN));
-
-  tmp = CCER_CCNE_SET << TIM_Channel;
-
-  /* Reset the CCxNE Bit */
-  TIMx->CCER &= (uint16_t) ~tmp;
-
-  /* Set or reset the CCxNE Bit */ 
-  TIMx->CCER |=  (uint16_t)(TIM_CCxN << TIM_Channel);
-}
-
-/**
-  * @brief  Selects the TIM peripheral Commutation event.
-  * @param  TIMx: where x can be  1, 15, 16 or 17 to select the TIMx peripheral
-  * @param  NewState: new state of the Commutation event.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST2_PERIPH(TIMx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Set the COM Bit */
-    TIMx->CR2 |= TIM_CR2_CCUS;
-  }
-  else
-  {
-    /* Reset the COM Bit */
-    TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_CCUS);
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Group4 Input Capture management functions
- *  @brief    Input Capture management functions 
- *
-@verbatim
- ===============================================================================
-               ##### Input Capture management functions #####
- ===============================================================================
-   
-          *** TIM Driver: how to use it in Input Capture Mode ***
- ===============================================================================
-    [..] To use the Timer in Input Capture mode, the following steps are mandatory:
-         (#) Enable TIM clock using RCC_APBxPeriphClockCmd(RCC_APBxPeriph_TIMx, ENABLE) 
-             function.
-         (#) Configure the TIM pins by configuring the corresponding GPIO pins.
-         (#) Configure the Time base unit as described in the first part of this 
-             driver, if needed, else the Timer will run with the default configuration:
-             (++) Autoreload value = 0xFFFF.
-             (++) Prescaler value = 0x0000.
-             (++) Counter mode = Up counting.
-             (++) Clock Division = TIM_CKD_DIV1.
-         (#) Fill the TIM_ICInitStruct with the desired parameters including:
-             (++) TIM Channel: TIM_Channel.
-             (++) TIM Input Capture polarity: TIM_ICPolarity.
-             (++) TIM Input Capture selection: TIM_ICSelection.
-             (++) TIM Input Capture Prescaler: TIM_ICPrescaler.
-             (++) TIM Input CApture filter value: TIM_ICFilter.
-         (#) Call TIM_ICInit(TIMx, &TIM_ICInitStruct) to configure the desired 
-             channel with the corresponding configuration and to measure only 
-             frequency or duty cycle of the input signal,or, Call 
-             TIM_PWMIConfig(TIMx, &TIM_ICInitStruct) to configure the desired 
-             channels with the corresponding configuration and to measure the 
-             frequency and the duty cycle of the input signal.
-         (#) Enable the NVIC or the DMA to read the measured frequency.
-         (#) Enable the corresponding interrupt (or DMA request) to read 
-             the Captured value, using the function TIM_ITConfig(TIMx, TIM_IT_CCx)
-             (or TIM_DMA_Cmd(TIMx, TIM_DMA_CCx)).
-         (#) Call the TIM_Cmd(ENABLE) function to enable the TIM counter.
-         (#) Use TIM_GetCapturex(TIMx); to read the captured value.
-    [..]
-        (@) All other functions can be used separately to modify, if needed,
-            a specific feature of the Timer. 
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Initializes the TIM peripheral according to the specified
-  *         parameters in the TIM_ICInitStruct.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure
-  *         that contains the configuration information for the specified TIM 
-  *         peripheral.
-  * @retval None
-  */
-void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_CHANNEL(TIM_ICInitStruct->TIM_Channel));  
-  assert_param(IS_TIM_IC_SELECTION(TIM_ICInitStruct->TIM_ICSelection));
-  assert_param(IS_TIM_IC_PRESCALER(TIM_ICInitStruct->TIM_ICPrescaler));
-  assert_param(IS_TIM_IC_FILTER(TIM_ICInitStruct->TIM_ICFilter));
-  assert_param(IS_TIM_IC_POLARITY(TIM_ICInitStruct->TIM_ICPolarity));
-
-  if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1)
-  {
-    assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-    /* TI1 Configuration */
-    TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
-               TIM_ICInitStruct->TIM_ICSelection,
-               TIM_ICInitStruct->TIM_ICFilter);
-    /* Set the Input Capture Prescaler value */
-    TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
-  }
-  else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_2)
-  {
-    assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-    /* TI2 Configuration */
-    TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
-               TIM_ICInitStruct->TIM_ICSelection,
-               TIM_ICInitStruct->TIM_ICFilter);
-    /* Set the Input Capture Prescaler value */
-    TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
-  }
-  else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_3)
-  {
-    assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-    /* TI3 Configuration */
-    TI3_Config(TIMx,  TIM_ICInitStruct->TIM_ICPolarity,
-               TIM_ICInitStruct->TIM_ICSelection,
-               TIM_ICInitStruct->TIM_ICFilter);
-    /* Set the Input Capture Prescaler value */
-    TIM_SetIC3Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
-  }
-  else
-  {
-    assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-    /* TI4 Configuration */
-    TI4_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
-               TIM_ICInitStruct->TIM_ICSelection,
-               TIM_ICInitStruct->TIM_ICFilter);
-    /* Set the Input Capture Prescaler value */
-    TIM_SetIC4Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
-  }
-}
-
-/**
-  * @brief  Fills each TIM_ICInitStruct member with its default value.
-  * @param  TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure which will
-  *         be initialized.
-  * @retval None
-  */
-void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct)
-{
-  /* Set the default configuration */
-  TIM_ICInitStruct->TIM_Channel = TIM_Channel_1;
-  TIM_ICInitStruct->TIM_ICPolarity = TIM_ICPolarity_Rising;
-  TIM_ICInitStruct->TIM_ICSelection = TIM_ICSelection_DirectTI;
-  TIM_ICInitStruct->TIM_ICPrescaler = TIM_ICPSC_DIV1;
-  TIM_ICInitStruct->TIM_ICFilter = 0x00;
-}
-
-/**
-  * @brief  Configures the TIM peripheral according to the specified
-  *         parameters in the TIM_ICInitStruct to measure an external PWM signal.
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure
-  *         that contains the configuration information for the specified TIM 
-  *         peripheral.
-  * @retval None
-  */
-void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
-{
-  uint16_t icoppositepolarity = TIM_ICPolarity_Rising;
-  uint16_t icoppositeselection = TIM_ICSelection_DirectTI;
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  /* Select the Opposite Input Polarity */
-  if (TIM_ICInitStruct->TIM_ICPolarity == TIM_ICPolarity_Rising)
-  {
-    icoppositepolarity = TIM_ICPolarity_Falling;
-  }
-  else
-  {
-    icoppositepolarity = TIM_ICPolarity_Rising;
-  }
-  /* Select the Opposite Input */
-  if (TIM_ICInitStruct->TIM_ICSelection == TIM_ICSelection_DirectTI)
-  {
-    icoppositeselection = TIM_ICSelection_IndirectTI;
-  }
-  else
-  {
-    icoppositeselection = TIM_ICSelection_DirectTI;
-  }
-  if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1)
-  {
-    /* TI1 Configuration */
-    TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection,
-               TIM_ICInitStruct->TIM_ICFilter);
-    /* Set the Input Capture Prescaler value */
-    TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
-    /* TI2 Configuration */
-    TI2_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter);
-    /* Set the Input Capture Prescaler value */
-    TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
-  }
-  else
-  { 
-    /* TI2 Configuration */
-    TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection,
-               TIM_ICInitStruct->TIM_ICFilter);
-    /* Set the Input Capture Prescaler value */
-    TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
-    /* TI1 Configuration */
-    TI1_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter);
-    /* Set the Input Capture Prescaler value */
-    TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
-  }
-}
-
-/**
-  * @brief  Gets the TIMx Input Capture 1 value.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @retval Capture Compare 1 Register value.
-  */
-uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  
-  /* Get the Capture 1 Register value */
-  return TIMx->CCR1;
-}
-
-/**
-  * @brief  Gets the TIMx Input Capture 2 value.
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @retval Capture Compare 2 Register value.
-  */
-uint32_t TIM_GetCapture2(TIM_TypeDef* TIMx)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  
-  /* Get the Capture 2 Register value */
-  return TIMx->CCR2;
-}
-
-/**
-  * @brief  Gets the TIMx Input Capture 3 value.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @retval Capture Compare 3 Register value.
-  */
-uint32_t TIM_GetCapture3(TIM_TypeDef* TIMx)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx)); 
-  
-  /* Get the Capture 3 Register value */
-  return TIMx->CCR3;
-}
-
-/**
-  * @brief  Gets the TIMx Input Capture 4 value.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @retval Capture Compare 4 Register value.
-  */
-uint32_t TIM_GetCapture4(TIM_TypeDef* TIMx)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  
-  /* Get the Capture 4 Register value */
-  return TIMx->CCR4;
-}
-
-/**
-  * @brief  Sets the TIMx Input Capture 1 prescaler.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ICPSC: specifies the Input Capture1 prescaler new value.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPSC_DIV1: no prescaler
-  *            @arg TIM_ICPSC_DIV2: capture is done once every 2 events
-  *            @arg TIM_ICPSC_DIV4: capture is done once every 4 events
-  *            @arg TIM_ICPSC_DIV8: capture is done once every 8 events
-  * @retval None
-  */
-void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_IC_PRESCALER(TIM_ICPSC));
-  
-  /* Reset the IC1PSC Bits */
-  TIMx->CCMR1 &= (uint16_t)~((uint16_t)TIM_CCMR1_IC1PSC);
-  /* Set the IC1PSC value */
-  TIMx->CCMR1 |= TIM_ICPSC;
-}
-
-/**
-  * @brief  Sets the TIMx Input Capture 2 prescaler.
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ICPSC: specifies the Input Capture2 prescaler new value.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPSC_DIV1: no prescaler
-  *            @arg TIM_ICPSC_DIV2: capture is done once every 2 events
-  *            @arg TIM_ICPSC_DIV4: capture is done once every 4 events
-  *            @arg TIM_ICPSC_DIV8: capture is done once every 8 events
-  * @retval None
-  */
-void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_IC_PRESCALER(TIM_ICPSC));
-  
-  /* Reset the IC2PSC Bits */
-  TIMx->CCMR1 &= (uint16_t)~((uint16_t)TIM_CCMR1_IC2PSC);
-  /* Set the IC2PSC value */
-  TIMx->CCMR1 |= (uint16_t)(TIM_ICPSC << 8);
-}
-
-/**
-  * @brief  Sets the TIMx Input Capture 3 prescaler.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ICPSC: specifies the Input Capture3 prescaler new value.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPSC_DIV1: no prescaler
-  *            @arg TIM_ICPSC_DIV2: capture is done once every 2 events
-  *            @arg TIM_ICPSC_DIV4: capture is done once every 4 events
-  *            @arg TIM_ICPSC_DIV8: capture is done once every 8 events
-  * @retval None
-  */
-void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_IC_PRESCALER(TIM_ICPSC));
-  
-  /* Reset the IC3PSC Bits */
-  TIMx->CCMR2 &= (uint16_t)~((uint16_t)TIM_CCMR2_IC3PSC);
-  /* Set the IC3PSC value */
-  TIMx->CCMR2 |= TIM_ICPSC;
-}
-
-/**
-  * @brief  Sets the TIMx Input Capture 4 prescaler.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ICPSC: specifies the Input Capture4 prescaler new value.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPSC_DIV1: no prescaler
-  *            @arg TIM_ICPSC_DIV2: capture is done once every 2 events
-  *            @arg TIM_ICPSC_DIV4: capture is done once every 4 events
-  *            @arg TIM_ICPSC_DIV8: capture is done once every 8 events
-  * @retval None
-  */
-void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC)
-{  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_IC_PRESCALER(TIM_ICPSC));
-  
-  /* Reset the IC4PSC Bits */
-  TIMx->CCMR2 &= (uint16_t)~((uint16_t)TIM_CCMR2_IC4PSC);
-  /* Set the IC4PSC value */
-  TIMx->CCMR2 |= (uint16_t)(TIM_ICPSC << 8);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Group5 Interrupts DMA and flags management functions
- *  @brief    Interrupts, DMA and flags management functions 
- *
-@verbatim
- ===============================================================================
-          ##### Interrupts, DMA and flags management functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified TIM interrupts.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 or 17 to select the TIMx peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_IT: specifies the TIM interrupts sources to be enabled or disabled.
-  *          This parameter can be any combination of the following values:
-  *            @arg TIM_IT_Update: TIM update Interrupt source
-  *            @arg TIM_IT_CC1: TIM Capture Compare 1 Interrupt source
-  *            @arg TIM_IT_CC2: TIM Capture Compare 2 Interrupt source
-  *            @arg TIM_IT_CC3: TIM Capture Compare 3 Interrupt source
-  *            @arg TIM_IT_CC4: TIM Capture Compare 4 Interrupt source
-  *            @arg TIM_IT_COM: TIM Commutation Interrupt source
-  *            @arg TIM_IT_Trigger: TIM Trigger Interrupt source
-  *            @arg TIM_IT_Break: TIM Break Interrupt source
-  * 
-  * @note   TIM6 and TIM7 can only generate an update interrupt.
-  * @note   TIM15 can have only TIM_IT_Update, TIM_IT_CC1,TIM_IT_CC2 or TIM_IT_Trigger. 
-  * @note   TIM14, TIM16 and TIM17 can have TIM_IT_Update or TIM_IT_CC1.   
-  * @note   TIM_IT_Break is used only with TIM1 and TIM15. 
-  * @note   TIM_IT_COM is used only with TIM1, TIM15, TIM16 and TIM17.
-  *       
-  * @param  NewState: new state of the TIM interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)
-{  
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_IT(TIM_IT));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the Interrupt sources */
-    TIMx->DIER |= TIM_IT;
-  }
-  else
-  {
-    /* Disable the Interrupt sources */
-    TIMx->DIER &= (uint16_t)~TIM_IT;
-  }
-}
-
-/**
-  * @brief  Configures the TIMx event to be generate by software.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 or 17 to select the 
-  *         TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_EventSource: specifies the event source.
-  *          This parameter can be one or more of the following values:  
-  *            @arg TIM_EventSource_Update: Timer update Event source
-  *            @arg TIM_EventSource_CC1: Timer Capture Compare 1 Event source
-  *            @arg TIM_EventSource_CC2: Timer Capture Compare 2 Event source
-  *            @arg TIM_EventSource_CC3: Timer Capture Compare 3 Event source
-  *            @arg TIM_EventSource_CC4: Timer Capture Compare 4 Event source
-  *            @arg TIM_EventSource_COM: Timer COM event source  
-  *            @arg TIM_EventSource_Trigger: Timer Trigger Event source
-  *            @arg TIM_EventSource_Break: Timer Break event source
-  *
-  * @note   TIM6 and TIM7 can only generate an update event.  
-  * @note   TIM_EventSource_COM and TIM_EventSource_Break are used only with TIM1.
-  *             
-  * @retval None
-  */
-void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource)
-{ 
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_EVENT_SOURCE(TIM_EventSource)); 
-  /* Set the event sources */
-  TIMx->EGR = TIM_EventSource;
-}
-
-/**
-  * @brief  Checks whether the specified TIM flag is set or not.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_FLAG_Update: TIM update Flag
-  *            @arg TIM_FLAG_CC1: TIM Capture Compare 1 Flag
-  *            @arg TIM_FLAG_CC2: TIM Capture Compare 2 Flag
-  *            @arg TIM_FLAG_CC3: TIM Capture Compare 3 Flag
-  *            @arg TIM_FLAG_CC4: TIM Capture Compare 4 Flag
-  *            @arg TIM_FLAG_COM: TIM Commutation Flag
-  *            @arg TIM_FLAG_Trigger: TIM Trigger Flag
-  *            @arg TIM_FLAG_Break: TIM Break Flag
-  *            @arg TIM_FLAG_CC1OF: TIM Capture Compare 1 overcapture Flag
-  *            @arg TIM_FLAG_CC2OF: TIM Capture Compare 2 overcapture Flag
-  *            @arg TIM_FLAG_CC3OF: TIM Capture Compare 3 overcapture Flag
-  *            @arg TIM_FLAG_CC4OF: TIM Capture Compare 4 overcapture Flag
-  *
-  * @note   TIM6 and TIM7 can have only one update flag. 
-  * @note   TIM15 can have only TIM_FLAG_Update, TIM_FLAG_CC1, TIM_FLAG_CC2 or TIM_FLAG_Trigger.
-  * @note   TIM14, TIM16 and TIM17 can have TIM_FLAG_Update or TIM_FLAG_CC1.   
-  * @note   TIM_FLAG_Break is used only with TIM1 and TIM15. 
-  * @note   TIM_FLAG_COM is used only with TIM1 TIM15, TIM16 and TIM17.
-  *
-  * @retval The new state of TIM_FLAG (SET or RESET).
-  */
-FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)
-{ 
-  ITStatus bitstatus = RESET; 
-   
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_GET_FLAG(TIM_FLAG));
-  
-  if ((TIMx->SR & TIM_FLAG) != (uint16_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the TIMx's pending flags.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_FLAG: specifies the flag bit to clear.
-  *          This parameter can be any combination of the following values:
-  *            @arg TIM_FLAG_Update: TIM update Flag
-  *            @arg TIM_FLAG_CC1: TIM Capture Compare 1 Flag
-  *            @arg TIM_FLAG_CC2: TIM Capture Compare 2 Flag
-  *            @arg TIM_FLAG_CC3: TIM Capture Compare 3 Flag
-  *            @arg TIM_FLAG_CC4: TIM Capture Compare 4 Flag
-  *            @arg TIM_FLAG_COM: TIM Commutation Flag
-  *            @arg TIM_FLAG_Trigger: TIM Trigger Flag
-  *            @arg TIM_FLAG_Break: TIM Break Flag
-  *            @arg TIM_FLAG_CC1OF: TIM Capture Compare 1 overcapture Flag
-  *            @arg TIM_FLAG_CC2OF: TIM Capture Compare 2 overcapture Flag
-  *            @arg TIM_FLAG_CC3OF: TIM Capture Compare 3 overcapture Flag
-  *            @arg TIM_FLAG_CC4OF: TIM Capture Compare 4 overcapture Flag
-  *
-  * @note   TIM6 and TIM7 can have only one update flag. 
-  * @note   TIM15 can have only TIM_FLAG_Update, TIM_FLAG_CC1,TIM_FLAG_CC2 or 
-  *         TIM_FLAG_Trigger. 
-  * @note   TIM14, TIM16 and TIM17 can have TIM_FLAG_Update or TIM_FLAG_CC1.   
-  * @note   TIM_FLAG_Break is used only with TIM1 and TIM15. 
-  * @note   TIM_FLAG_COM is used only with TIM1, TIM15, TIM16 and TIM17.
-  *
-  * @retval None
-  */
-void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)
-{  
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_CLEAR_FLAG(TIM_FLAG));
-   
-  /* Clear the flags */
-  TIMx->SR = (uint16_t)~TIM_FLAG;
-}
-
-/**
-  * @brief  Checks whether the TIM interrupt has occurred or not.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_IT: specifies the TIM interrupt source to check.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_IT_Update: TIM update Interrupt source
-  *            @arg TIM_IT_CC1: TIM Capture Compare 1 Interrupt source
-  *            @arg TIM_IT_CC2: TIM Capture Compare 2 Interrupt source
-  *            @arg TIM_IT_CC3: TIM Capture Compare 3 Interrupt source
-  *            @arg TIM_IT_CC4: TIM Capture Compare 4 Interrupt source
-  *            @arg TIM_IT_COM: TIM Commutation Interrupt source
-  *            @arg TIM_IT_Trigger: TIM Trigger Interrupt source
-  *            @arg TIM_IT_Break: TIM Break Interrupt source
-  *
-  * @note   TIM6 and TIM7 can generate only an update interrupt.
-  * @note   TIM15 can have only TIM_IT_Update, TIM_IT_CC1, TIM_IT_CC2 or TIM_IT_Trigger. 
-  * @note   TIM14, TIM16 and TIM17 can have TIM_IT_Update or TIM_IT_CC1.   
-  * @note   TIM_IT_Break is used only with TIM1 and TIM15. 
-  * @note   TIM_IT_COM is used only with TIM1, TIM15, TIM16 and TIM17.
-  *
-  * @retval The new state of the TIM_IT(SET or RESET).
-  */
-ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT)
-{
-  ITStatus bitstatus = RESET;  
-  uint16_t itstatus = 0x0, itenable = 0x0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_GET_IT(TIM_IT));
-   
-  itstatus = TIMx->SR & TIM_IT;
-  
-  itenable = TIMx->DIER & TIM_IT;
-  if ((itstatus != (uint16_t)RESET) && (itenable != (uint16_t)RESET))
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the TIMx's interrupt pending bits.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_IT: specifies the pending bit to clear.
-  *          This parameter can be any combination of the following values:
-  *            @arg TIM_IT_Update: TIM1 update Interrupt source
-  *            @arg TIM_IT_CC1: TIM Capture Compare 1 Interrupt source
-  *            @arg TIM_IT_CC2: TIM Capture Compare 2 Interrupt source
-  *            @arg TIM_IT_CC3: TIM Capture Compare 3 Interrupt source
-  *            @arg TIM_IT_CC4: TIM Capture Compare 4 Interrupt source
-  *            @arg TIM_IT_COM: TIM Commutation Interrupt source
-  *            @arg TIM_IT_Trigger: TIM Trigger Interrupt source
-  *            @arg TIM_IT_Break: TIM Break Interrupt source
-  *
-  * @note   TIM6 and TIM7 can generate only an update interrupt.
-  * @note   TIM15 can have only TIM_IT_Update, TIM_IT_CC1, TIM_IT_CC2 or TIM_IT_Trigger. 
-  * @note   TIM14, TIM16 and TIM17 can have TIM_IT_Update or TIM_IT_CC1.   
-  * @note   TIM_IT_Break is used only with TIM1 and TIM15. 
-  * @note   TIM_IT_COM is used only with TIM1, TIM15, TIM16 and TIM17.
-  *
-  * @retval None
-  */
-void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_ALL_PERIPH(TIMx));
-  assert_param(IS_TIM_IT(TIM_IT));
-   
-  /* Clear the IT pending Bit */
-  TIMx->SR = (uint16_t)~TIM_IT;
-}
-
-/**
-  * @brief  Configures the TIMx's DMA interface.
-  * @param  TIMx: where x can be 1, 2, 3, 15, 16 or 17  to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_DMABase: DMA Base address.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_DMABase_CR1
-  *            @arg TIM_DMABase_CR2
-  *            @arg TIM_DMABase_SMCR
-  *            @arg TIM_DMABase_DIER
-  *            @arg TIM_DMABase_SR
-  *            @arg TIM_DMABase_EGR
-  *            @arg TIM_DMABase_CCMR1
-  *            @arg TIM_DMABase_CCMR2
-  *            @arg TIM_DMABase_CCER
-  *            @arg TIM_DMABase_CNT
-  *            @arg TIM_DMABase_PSC
-  *            @arg TIM_DMABase_ARR
-  *            @arg TIM_DMABase_CCR1
-  *            @arg TIM_DMABase_CCR2
-  *            @arg TIM_DMABase_CCR3 
-  *            @arg TIM_DMABase_CCR4
-  *            @arg TIM_DMABase_DCR
-  *            @arg TIM_DMABase_OR
-  * @param  TIM_DMABurstLength: DMA Burst length. This parameter can be one value
-  *         between: TIM_DMABurstLength_1Transfer and TIM_DMABurstLength_18Transfers.
-  * @retval None
-  */
-void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
-  assert_param(IS_TIM_DMA_BASE(TIM_DMABase)); 
-  assert_param(IS_TIM_DMA_LENGTH(TIM_DMABurstLength));
-  /* Set the DMA Base and the DMA Burst Length */
-  TIMx->DCR = TIM_DMABase | TIM_DMABurstLength;
-}
-
-/**
-  * @brief  Enables or disables the TIMx's DMA Requests.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, 15, 16 or 17 to select the TIM peripheral. 
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  TIM_DMASource: specifies the DMA Request sources.
-  *          This parameter can be any combination of the following values:
-  *            @arg TIM_DMA_Update: TIM update Interrupt source
-  *            @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source
-  *            @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source
-  *            @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source
-  *            @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source
-  *            @arg TIM_DMA_COM: TIM Commutation DMA source
-  *            @arg TIM_DMA_Trigger: TIM Trigger DMA source
-  * @param  NewState: new state of the DMA Request sources.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState)
-{ 
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST10_PERIPH(TIMx));
-  assert_param(IS_TIM_DMA_SOURCE(TIM_DMASource));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the DMA sources */
-    TIMx->DIER |= TIM_DMASource; 
-  }
-  else
-  {
-    /* Disable the DMA sources */
-    TIMx->DIER &= (uint16_t)~TIM_DMASource;
-  }
-}
-
-/**
-  * @brief  Selects the TIMx peripheral Capture Compare DMA source.
-  * @param  TIMx: where x can be 1, 2, 3, 15, 16 or 17  to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.
-  * @param  NewState: new state of the Capture Compare DMA source
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST5_PERIPH(TIMx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Set the CCDS Bit */
-    TIMx->CR2 |= TIM_CR2_CCDS;
-  }
-  else
-  {
-    /* Reset the CCDS Bit */
-    TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_CCDS);
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Group6 Clocks management functions
- *  @brief    Clocks management functions
- *
-@verbatim
- ===============================================================================
-                     ##### Clocks management functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the TIMx internal Clock
-  * @param  TIMx: where x can be 1, 2, 3, or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @retval None
-  */
-void TIM_InternalClockConfig(TIM_TypeDef* TIMx)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  /* Disable slave mode to clock the prescaler directly with the internal clock */
-  TIMx->SMCR &=  (uint16_t)(~((uint16_t)TIM_SMCR_SMS));
-}
-
-/**
-  * @brief  Configures the TIMx Internal Trigger as External Clock
-  * @param  TIMx: where x can be 1, 2, 3, or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ITRSource: Trigger source.
-  *          This parameter can be one of the following values:
-  *            @arg  TIM_TS_ITR0: Internal Trigger 0
-  *            @arg  TIM_TS_ITR1: Internal Trigger 1
-  *            @arg  TIM_TS_ITR2: Internal Trigger 2
-  *            @arg  TIM_TS_ITR3: Internal Trigger 3
-  * @retval None
-  */
-void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_INTERNAL_TRIGGER_SELECTION(TIM_InputTriggerSource));
-  /* Select the Internal Trigger */
-  TIM_SelectInputTrigger(TIMx, TIM_InputTriggerSource);
-  /* Select the External clock mode1 */
-  TIMx->SMCR |= TIM_SlaveMode_External1;
-}
-
-/**
-  * @brief  Configures the TIMx Trigger as External Clock
-  * @param  TIMx: where x can be 1, 2, 3, or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_TIxExternalCLKSource: Trigger source.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_TIxExternalCLK1Source_TI1ED: TI1 Edge Detector
-  *            @arg TIM_TIxExternalCLK1Source_TI1: Filtered Timer Input 1
-  *            @arg TIM_TIxExternalCLK1Source_TI2: Filtered Timer Input 2
-  * @param  TIM_ICPolarity: specifies the TIx Polarity.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPolarity_Rising
-  *            @arg TIM_ICPolarity_Falling
-  * @param  ICFilter: specifies the filter value.
-  *          This parameter must be a value between 0x0 and 0xF.
-  * @retval None
-  */
-void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,
-                                uint16_t TIM_ICPolarity, uint16_t ICFilter)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_IC_POLARITY(TIM_ICPolarity));
-  assert_param(IS_TIM_IC_FILTER(ICFilter));
-  
-  /* Configure the Timer Input Clock Source */
-  if (TIM_TIxExternalCLKSource == TIM_TIxExternalCLK1Source_TI2)
-  {
-    TI2_Config(TIMx, TIM_ICPolarity, TIM_ICSelection_DirectTI, ICFilter);
-  }
-  else
-  {
-    TI1_Config(TIMx, TIM_ICPolarity, TIM_ICSelection_DirectTI, ICFilter);
-  }
-  /* Select the Trigger source */
-  TIM_SelectInputTrigger(TIMx, TIM_TIxExternalCLKSource);
-  /* Select the External clock mode1 */
-  TIMx->SMCR |= TIM_SlaveMode_External1;
-}
-
-/**
-  * @brief  Configures the External clock Mode1
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ExtTRGPrescaler: The external Trigger Prescaler.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF.
-  *            @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2.
-  *            @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4.
-  *            @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8.
-  * @param  TIM_ExtTRGPolarity: The external Trigger Polarity.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active.
-  *            @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active.
-  * @param  ExtTRGFilter: External Trigger Filter.
-  *          This parameter must be a value between 0x00 and 0x0F
-  * @retval None
-  */
-void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
-                             uint16_t ExtTRGFilter)
-{
-  uint16_t tmpsmcr = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler));
-  assert_param(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity));
-  assert_param(IS_TIM_EXT_FILTER(ExtTRGFilter));
-  
-  /* Configure the ETR Clock source */
-  TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter);
-  
-  /* Get the TIMx SMCR register value */
-  tmpsmcr = TIMx->SMCR;
-  /* Reset the SMS Bits */
-  tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_SMS));
-  /* Select the External clock mode1 */
-  tmpsmcr |= TIM_SlaveMode_External1;
-  /* Select the Trigger selection : ETRF */
-  tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_TS));
-  tmpsmcr |= TIM_TS_ETRF;
-  /* Write to TIMx SMCR */
-  TIMx->SMCR = tmpsmcr;
-}
-
-/**
-  * @brief  Configures the External clock Mode2
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ExtTRGPrescaler: The external Trigger Prescaler.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF.
-  *            @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2.
-  *            @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4.
-  *            @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8.
-  * @param  TIM_ExtTRGPolarity: The external Trigger Polarity.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active.
-  *            @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active.
-  * @param  ExtTRGFilter: External Trigger Filter.
-  *          This parameter must be a value between 0x00 and 0x0F
-  * @retval None
-  */
-void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, 
-                             uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler));
-  assert_param(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity));
-  assert_param(IS_TIM_EXT_FILTER(ExtTRGFilter));
-  
-  /* Configure the ETR Clock source */
-  TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter);
-  /* Enable the External clock mode2 */
-  TIMx->SMCR |= TIM_SMCR_ECE;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Group7 Synchronization management functions
- *  @brief    Synchronization management functions 
- *
-@verbatim
- ===============================================================================
-               ##### Synchronization management functions #####
- ===============================================================================
-        *** TIM Driver: how to use it in synchronization Mode ***
- ===============================================================================
-    [..] Case of two/several Timers
-         (#) Configure the Master Timers using the following functions:
-             (++) void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx,
-                  uint16_t TIM_TRGOSource).
-             (++) void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx,
-                  uint16_t TIM_MasterSlaveMode);  
-         (#) Configure the Slave Timers using the following functions: 
-             (++) void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, 
-                  uint16_t TIM_InputTriggerSource);  
-             (++) void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
-    [..] Case of Timers and external trigger(ETR pin)
-         (#) Configure the Etrenal trigger using this function:
-             (++) void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler,
-                  uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
-         (#) Configure the Slave Timers using the following functions:
-             (++) void TIM_SelectInputTrigger(TIM_TypeDef* TIMx,
-                  uint16_t TIM_InputTriggerSource);
-             (++) void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
-
-@endverbatim
-  * @{
-  */
-/**
-  * @brief  Selects the Input Trigger source
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_InputTriggerSource: The Input Trigger source.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_TS_ITR0: Internal Trigger 0
-  *            @arg TIM_TS_ITR1: Internal Trigger 1
-  *            @arg TIM_TS_ITR2: Internal Trigger 2
-  *            @arg TIM_TS_ITR3: Internal Trigger 3
-  *            @arg TIM_TS_TI1F_ED: TI1 Edge Detector
-  *            @arg TIM_TS_TI1FP1: Filtered Timer Input 1
-  *            @arg TIM_TS_TI2FP2: Filtered Timer Input 2
-  *            @arg TIM_TS_ETRF: External Trigger input
-  * @retval None
-  */
-void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource)
-{
-  uint16_t tmpsmcr = 0;
-
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx)); 
-  assert_param(IS_TIM_TRIGGER_SELECTION(TIM_InputTriggerSource));
-
-  /* Get the TIMx SMCR register value */
-  tmpsmcr = TIMx->SMCR;
-  /* Reset the TS Bits */
-  tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_TS));
-  /* Set the Input Trigger source */
-  tmpsmcr |= TIM_InputTriggerSource;
-  /* Write to TIMx SMCR */
-  TIMx->SMCR = tmpsmcr;
-}
-
-/**
-  * @brief  Selects the TIMx Trigger Output Mode.
-  * @param  TIMx: where x can be 1, 2, 3, 6, 7, or 15 to select the TIM peripheral.
-  * @note   TIM7 is applicable only for STM32F072 devices
-  * @note   TIM6 is not applivable for STM32F031 devices.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_TRGOSource: specifies the Trigger Output source.
-  *          This parameter can be one of the following values:
-  *
-  *   - For all TIMx
-  *            @arg TIM_TRGOSource_Reset:  The UG bit in the TIM_EGR register is used as the trigger output (TRGO).
-  *            @arg TIM_TRGOSource_Enable: The Counter Enable CEN is used as the trigger output (TRGO).
-  *            @arg TIM_TRGOSource_Update: The update event is selected as the trigger output (TRGO).
-  *
-  *   - For all TIMx except TIM6 and TIM7
-  *            @arg TIM_TRGOSource_OC1: The trigger output sends a positive pulse when the CC1IF flag
-  *                                     is to be set, as soon as a capture or compare match occurs (TRGO).
-  *            @arg TIM_TRGOSource_OC1Ref: OC1REF signal is used as the trigger output (TRGO).
-  *            @arg TIM_TRGOSource_OC2Ref: OC2REF signal is used as the trigger output (TRGO).
-  *            @arg TIM_TRGOSource_OC3Ref: OC3REF signal is used as the trigger output (TRGO).
-  *            @arg TIM_TRGOSource_OC4Ref: OC4REF signal is used as the trigger output (TRGO).
-  *
-  * @retval None
-  */
-void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST9_PERIPH(TIMx));
-  assert_param(IS_TIM_TRGO_SOURCE(TIM_TRGOSource));
-
-  /* Reset the MMS Bits */
-  TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_MMS);
-  /* Select the TRGO source */
-  TIMx->CR2 |=  TIM_TRGOSource;
-}
-
-/**
-  * @brief  Selects the TIMx Slave Mode.
-  * @param  TIMx: where x can be 1, 2, 3 or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_SlaveMode: specifies the Timer Slave Mode.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_SlaveMode_Reset: Rising edge of the selected trigger signal (TRGI) re-initializes
-  *                                      the counter and triggers an update of the registers.
-  *            @arg TIM_SlaveMode_Gated:     The counter clock is enabled when the trigger signal (TRGI) is high.
-  *            @arg TIM_SlaveMode_Trigger:   The counter starts at a rising edge of the trigger TRGI.
-  *            @arg TIM_SlaveMode_External1: Rising edges of the selected trigger (TRGI) clock the counter.
-  * @retval None
-  */
-void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx)); 
-  assert_param(IS_TIM_SLAVE_MODE(TIM_SlaveMode));
-  
-  /* Reset the SMS Bits */
-  TIMx->SMCR &= (uint16_t)~((uint16_t)TIM_SMCR_SMS);
-  /* Select the Slave Mode */
-  TIMx->SMCR |= TIM_SlaveMode;
-}
-
-/**
-  * @brief  Sets or Resets the TIMx Master/Slave Mode.
-  * @param  TIMx: where x can be 1, 2, 3, or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_MasterSlaveMode: specifies the Timer Master Slave Mode.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_MasterSlaveMode_Enable: synchronization between the current timer
-  *                                             and its slaves (through TRGO).
-  *            @arg TIM_MasterSlaveMode_Disable: No action
-  * @retval None
-  */
-void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
-  assert_param(IS_TIM_MSM_STATE(TIM_MasterSlaveMode));
-  
-  /* Reset the MSM Bit */
-  TIMx->SMCR &= (uint16_t)~((uint16_t)TIM_SMCR_MSM);
-  
-  /* Set or Reset the MSM Bit */
-  TIMx->SMCR |= TIM_MasterSlaveMode;
-}
-
-/**
-  * @brief  Configures the TIMx External Trigger (ETR).
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.   
-  * @param  TIM_ExtTRGPrescaler: The external Trigger Prescaler.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF.
-  *            @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2.
-  *            @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4.
-  *            @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8.
-  * @param  TIM_ExtTRGPolarity: The external Trigger Polarity.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active.
-  *            @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active.
-  * @param  ExtTRGFilter: External Trigger Filter.
-  *          This parameter must be a value between 0x00 and 0x0F
-  * @retval None
-  */
-void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
-                   uint16_t ExtTRGFilter)
-{
-  uint16_t tmpsmcr = 0;
-  
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler));
-  assert_param(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity));
-  assert_param(IS_TIM_EXT_FILTER(ExtTRGFilter));
-  
-  tmpsmcr = TIMx->SMCR;
-  /* Reset the ETR Bits */
-  tmpsmcr &= SMCR_ETR_MASK;
-  /* Set the Prescaler, the Filter value and the Polarity */
-  tmpsmcr |= (uint16_t)(TIM_ExtTRGPrescaler | (uint16_t)(TIM_ExtTRGPolarity | (uint16_t)(ExtTRGFilter << (uint16_t)8)));
-  /* Write to TIMx SMCR */
-  TIMx->SMCR = tmpsmcr;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Group8 Specific interface management functions
- *  @brief    Specific interface management functions 
- *
-@verbatim
- ===============================================================================
-             ##### Specific interface management functions #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the TIMx Encoder Interface.
-  * @param  TIMx: where x can be  1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.   
-  * @param  TIM_EncoderMode: specifies the TIMx Encoder Mode.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_EncoderMode_TI1: Counter counts on TI1FP1 edge depending on TI2FP2 level.
-  *            @arg TIM_EncoderMode_TI2: Counter counts on TI2FP2 edge depending on TI1FP1 level.
-  *            @arg TIM_EncoderMode_TI12: Counter counts on both TI1FP1 and TI2FP2 edges depending
-  *                                       on the level of the other input.
-  * @param  TIM_IC1Polarity: specifies the IC1 Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_ICPolarity_Falling: IC Falling edge.
-  *            @arg TIM_ICPolarity_Rising: IC Rising edge.
-  * @param  TIM_IC2Polarity: specifies the IC2 Polarity
-  *          This parmeter can be one of the following values:
-  *            @arg TIM_ICPolarity_Falling: IC Falling edge.
-  *            @arg TIM_ICPolarity_Rising: IC Rising edge.
-  * @retval None
-  */
-void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,
-                                uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity)
-{
-  uint16_t tmpsmcr = 0;
-  uint16_t tmpccmr1 = 0;
-  uint16_t tmpccer = 0;
-    
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_TIM_ENCODER_MODE(TIM_EncoderMode));
-  assert_param(IS_TIM_IC_POLARITY(TIM_IC1Polarity));
-  assert_param(IS_TIM_IC_POLARITY(TIM_IC2Polarity));
-  
-  /* Get the TIMx SMCR register value */
-  tmpsmcr = TIMx->SMCR;
-  /* Get the TIMx CCMR1 register value */
-  tmpccmr1 = TIMx->CCMR1;
-  /* Get the TIMx CCER register value */
-  tmpccer = TIMx->CCER;
-  /* Set the encoder Mode */
-  tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_SMS));
-  tmpsmcr |= TIM_EncoderMode;
-  /* Select the Capture Compare 1 and the Capture Compare 2 as input */
-  tmpccmr1 &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCMR1_CC1S)) & (uint16_t)(~((uint16_t)TIM_CCMR1_CC2S)));
-  tmpccmr1 |= TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0;
-  /* Set the TI1 and the TI2 Polarities */
-  tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC1P | TIM_CCER_CC1NP)) & (uint16_t)~((uint16_t)(TIM_CCER_CC2P | TIM_CCER_CC2NP));
-  tmpccer |= (uint16_t)(TIM_IC1Polarity | (uint16_t)(TIM_IC2Polarity << (uint16_t)4));
-  /* Write to TIMx SMCR */
-  TIMx->SMCR = tmpsmcr;
-  /* Write to TIMx CCMR1 */
-  TIMx->CCMR1 = tmpccmr1;
-  /* Write to TIMx CCER */
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Enables or disables the TIMx's Hall sensor interface.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.   
-  * @param  NewState: new state of the TIMx Hall sensor interface.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Set the TI1S Bit */
-    TIMx->CR2 |= TIM_CR2_TI1S;
-  }
-  else
-  {
-    /* Reset the TI1S Bit */
-    TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_TI1S);
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup TIM_Group9 Specific remapping management function
- *  @brief   Specific remapping management function
- *
-@verbatim
- ===============================================================================
-               ##### Specific remapping management function #####
- ===============================================================================
-
-@endverbatim
-  * @{
-  */
-/**
-  * @brief  Configures the TIM14 Remapping input Capabilities.
-  * @param  TIMx: where x can be 14 to select the TIM peripheral.
-  * @param  TIM_Remap: specifies the TIM input reampping source.
-  *          This parameter can be one of the following values:
-  *            @arg TIM14_GPIO: TIM14 Channel 1 is connected to GPIO.
-  *            @arg TIM14_RTC_CLK: TIM14 Channel 1 is connected to RTC input clock.
-  *                                RTC input clock can be LSE, LSI or HSE/div128.
-  *            @arg TIM14_HSE_DIV32: TIM14 Channel 1 is connected to HSE/32 clock.  
-  *            @arg TIM14_MCO: TIM14 Channel 1 is connected to MCO clock.  
-  *                            MCO clock can be HSI14, SYSCLK, HSI, HSE or PLL/2.  
-  * @retval None
-  */
-void TIM_RemapConfig(TIM_TypeDef* TIMx, uint16_t TIM_Remap)
-{
- /* Check the parameters */
-  assert_param(IS_TIM_LIST11_PERIPH(TIMx));
-  assert_param(IS_TIM_REMAP(TIM_Remap));
-
-  /* Set the Timer remapping configuration */
-  TIMx->OR =  TIM_Remap;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @brief  Configure the TI1 as Input.
-  * @param  TIMx: where x can be 1, 2, 3, 14, 15, 16 or 17 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.   
-  * @param  TIM_ICPolarity: The Input Polarity.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPolarity_Rising
-  *            @arg TIM_ICPolarity_Falling
-  * @param  TIM_ICSelection: specifies the input to be used.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICSelection_DirectTI: TIM Input 1 is selected to be connected to IC1.
-  *            @arg TIM_ICSelection_IndirectTI: TIM Input 1 is selected to be connected to IC2.
-  *            @arg TIM_ICSelection_TRC: TIM Input 1 is selected to be connected to TRC.
-  * @param  TIM_ICFilter: Specifies the Input Capture Filter.
-  *          This parameter must be a value between 0x00 and 0x0F.
-  * @retval None
-  */
-static void TI1_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
-                       uint16_t TIM_ICFilter)
-{
-  uint16_t tmpccmr1 = 0, tmpccer = 0;
-  /* Disable the Channel 1: Reset the CC1E Bit */
-  TIMx->CCER &= (uint16_t)~((uint16_t)TIM_CCER_CC1E);
-  tmpccmr1 = TIMx->CCMR1;
-  tmpccer = TIMx->CCER;
-  /* Select the Input and set the filter */
-  tmpccmr1 &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCMR1_CC1S)) & ((uint16_t)~((uint16_t)TIM_CCMR1_IC1F)));
-  tmpccmr1 |= (uint16_t)(TIM_ICSelection | (uint16_t)(TIM_ICFilter << (uint16_t)4));
- 
-  /* Select the Polarity and set the CC1E Bit */
-  tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC1P | TIM_CCER_CC1NP));
-  tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CCER_CC1E);
-  /* Write to TIMx CCMR1 and CCER registers */
-  TIMx->CCMR1 = tmpccmr1;
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configure the TI2 as Input.
-  * @param  TIMx: where x can be 1, 2, 3, or 15 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ICPolarity: The Input Polarity.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPolarity_Rising
-  *            @arg TIM_ICPolarity_Falling
-  * @param  TIM_ICSelection: specifies the input to be used.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICSelection_DirectTI: TIM Input 2 is selected to be connected to IC2.
-  *            @arg TIM_ICSelection_IndirectTI: TIM Input 2 is selected to be connected to IC1.
-  *            @arg TIM_ICSelection_TRC: TIM Input 2 is selected to be connected to TRC.
-  * @param  TIM_ICFilter: Specifies the Input Capture Filter.
-  *          This parameter must be a value between 0x00 and 0x0F.
-  * @retval None
-  */
-static void TI2_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
-                       uint16_t TIM_ICFilter)
-{
-  uint16_t tmpccmr1 = 0, tmpccer = 0, tmp = 0;
-  /* Disable the Channel 2: Reset the CC2E Bit */
-  TIMx->CCER &= (uint16_t)~((uint16_t)TIM_CCER_CC2E);
-  tmpccmr1 = TIMx->CCMR1;
-  tmpccer = TIMx->CCER;
-  tmp = (uint16_t)(TIM_ICPolarity << 4);
-  /* Select the Input and set the filter */
-  tmpccmr1 &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCMR1_CC2S)) & ((uint16_t)~((uint16_t)TIM_CCMR1_IC2F)));
-  tmpccmr1 |= (uint16_t)(TIM_ICFilter << 12);
-  tmpccmr1 |= (uint16_t)(TIM_ICSelection << 8); 
-  /* Select the Polarity and set the CC2E Bit */
-  tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC2P | TIM_CCER_CC2NP));
-  tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CCER_CC2E);  
-  /* Write to TIMx CCMR1 and CCER registers */
-  TIMx->CCMR1 = tmpccmr1 ;
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configure the TI3 as Input.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.   
-  * @param  TIM_ICPolarity: The Input Polarity.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPolarity_Rising
-  *            @arg TIM_ICPolarity_Falling
-  * @param  TIM_ICSelection: specifies the input to be used.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICSelection_DirectTI: TIM Input 3 is selected to be connected to IC3.
-  *            @arg TIM_ICSelection_IndirectTI: TIM Input 3 is selected to be connected to IC4.
-  *            @arg TIM_ICSelection_TRC: TIM Input 3 is selected to be connected to TRC.
-  * @param  TIM_ICFilter: Specifies the Input Capture Filter.
-  *          This parameter must be a value between 0x00 and 0x0F.
-  * @retval None
-  */
-static void TI3_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
-                       uint16_t TIM_ICFilter)
-{
-  uint16_t tmpccmr2 = 0, tmpccer = 0, tmp = 0;
-  /* Disable the Channel 3: Reset the CC3E Bit */
-  TIMx->CCER &= (uint16_t)~((uint16_t)TIM_CCER_CC3E);
-  tmpccmr2 = TIMx->CCMR2;
-  tmpccer = TIMx->CCER;
-  tmp = (uint16_t)(TIM_ICPolarity << 8);
-  /* Select the Input and set the filter */
-  tmpccmr2 &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCMR2_CC3S)) & ((uint16_t)~((uint16_t)TIM_CCMR2_IC3F)));
-  tmpccmr2 |= (uint16_t)(TIM_ICSelection | (uint16_t)(TIM_ICFilter << (uint16_t)4));
-  /* Select the Polarity and set the CC3E Bit */
-  tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC3P | TIM_CCER_CC3NP));
-  tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CCER_CC3E);  
-  /* Write to TIMx CCMR2 and CCER registers */
-  TIMx->CCMR2 = tmpccmr2;
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @brief  Configure the TI4 as Input.
-  * @param  TIMx: where x can be 1, 2 or 3 to select the TIM peripheral.
-  * @note   TIM2 is not applicable for STM32F030 devices.  
-  * @param  TIM_ICPolarity: The Input Polarity.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICPolarity_Rising
-  *            @arg TIM_ICPolarity_Falling
-  * @param  TIM_ICSelection: specifies the input to be used.
-  *          This parameter can be one of the following values:
-  *            @arg TIM_ICSelection_DirectTI: TIM Input 4 is selected to be connected to IC4.
-  *            @arg TIM_ICSelection_IndirectTI: TIM Input 4 is selected to be connected to IC3.
-  *            @arg TIM_ICSelection_TRC: TIM Input 4 is selected to be connected to TRC.
-  * @param  TIM_ICFilter: Specifies the Input Capture Filter.
-  *          This parameter must be a value between 0x00 and 0x0F.
-  * @retval None
-  */
-static void TI4_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
-                       uint16_t TIM_ICFilter)
-{
-  uint16_t tmpccmr2 = 0, tmpccer = 0, tmp = 0;
-
-   /* Disable the Channel 4: Reset the CC4E Bit */
-  TIMx->CCER &= (uint16_t)~((uint16_t)TIM_CCER_CC4E);
-  tmpccmr2 = TIMx->CCMR2;
-  tmpccer = TIMx->CCER;
-  tmp = (uint16_t)(TIM_ICPolarity << 12);
-  /* Select the Input and set the filter */
-  tmpccmr2 &= (uint16_t)((uint16_t)(~(uint16_t)TIM_CCMR2_CC4S) & ((uint16_t)~((uint16_t)TIM_CCMR2_IC4F)));
-  tmpccmr2 |= (uint16_t)(TIM_ICSelection << 8);
-  tmpccmr2 |= (uint16_t)(TIM_ICFilter << 12);  
-  /* Select the Polarity and set the CC4E Bit */
-  tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC4P | TIM_CCER_CC4NP));
-  tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CCER_CC4E);
-  /* Write to TIMx CCMR2 and CCER registers */
-  TIMx->CCMR2 = tmpccmr2;
-  TIMx->CCER = tmpccer;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_usart.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_usart.c
deleted file mode 100644
index 43392f0..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_usart.c	
+++ /dev/null
@@ -1,2096 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_usart.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Universal synchronous asynchronous receiver
-  *          transmitter (USART):
-  *           + Initialization and Configuration
-  *           + STOP Mode
-  *           + AutoBaudRate
-  *           + Data transfers
-  *           + Multi-Processor Communication
-  *           + LIN mode
-  *           + Half-duplex mode
-  *           + Smartcard mode
-  *           + IrDA mode
-  *           + RS485 mode  
-  *           + DMA transfers management
-  *           + Interrupts and flags management
-  *           
-  *  @verbatim
- ===============================================================================
-                       ##### How to use this driver #####
- ===============================================================================
-    [..]
-        (#) Enable peripheral clock using RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE)
-            function for USART1 or using RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTx, ENABLE)
-            function for USART2 and USART3.
-        (#) According to the USART mode, enable the GPIO clocks using 
-            RCC_AHBPeriphClockCmd() function. (The I/O can be TX, RX, CTS, 
-            or and SCLK). 
-        (#) Peripheral's alternate function: 
-            (++) Connect the pin to the desired peripherals' Alternate 
-                 Function (AF) using GPIO_PinAFConfig() function.
-            (++) Configure the desired pin in alternate function by:
-                 GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF.
-            (++) Select the type, pull-up/pull-down and output speed via 
-                 GPIO_PuPd, GPIO_OType and GPIO_Speed members.
-            (++) Call GPIO_Init() function.        
-        (#) Program the Baud Rate, Word Length , Stop Bit, Parity, Hardware 
-            flow control and Mode(Receiver/Transmitter) using the SPI_Init()
-            function.  
-        (#) For synchronous mode, enable the clock and program the polarity,
-            phase and last bit using the USART_ClockInit() function.  
-        (#) Enable the NVIC and the corresponding interrupt using the function 
-            USART_ITConfig() if you need to use interrupt mode.   
-        (#) When using the DMA mode: 
-            (++) Configure the DMA using DMA_Init() function.
-            (++) Active the needed channel Request using USART_DMACmd() function.   
-        (#) Enable the USART using the USART_Cmd() function.   
-        (#) Enable the DMA using the DMA_Cmd() function, when using DMA mode.   
-    [..]
-            Refer to Multi-Processor, LIN, half-duplex, Smartcard, IrDA sub-sections
-            for more details.
-            
-@endverbatim
-       
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_usart.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup USART 
-  * @brief USART driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-
-/*!< USART CR1 register clear Mask ((~(uint32_t)0xFFFFE6F3)) */
-#define CR1_CLEAR_MASK            ((uint32_t)(USART_CR1_M | USART_CR1_PCE | \
-                                              USART_CR1_PS | USART_CR1_TE | \
-                                              USART_CR1_RE))
-
-/*!< USART CR2 register clock bits clear Mask ((~(uint32_t)0xFFFFF0FF)) */
-#define CR2_CLOCK_CLEAR_MASK      ((uint32_t)(USART_CR2_CLKEN | USART_CR2_CPOL | \
-                                              USART_CR2_CPHA | USART_CR2_LBCL))
-
-/*!< USART CR3 register clear Mask ((~(uint32_t)0xFFFFFCFF)) */
-#define CR3_CLEAR_MASK            ((uint32_t)(USART_CR3_RTSE | USART_CR3_CTSE))
-
-/*!< USART Interrupts mask */
-#define IT_MASK                   ((uint32_t)0x000000FF)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup USART_Private_Functions
-  * @{
-  */
-
-/** @defgroup USART_Group1 Initialization and Configuration functions
- *  @brief   Initialization and Configuration functions 
- *
-@verbatim   
- ===============================================================================
-          ##### Initialization and Configuration functions #####
- ===============================================================================
-    [..]
-        This subsection provides a set of functions allowing to initialize the USART 
-        in asynchronous and in synchronous modes.
-        (+) For the asynchronous mode only these parameters can be configured: 
-          (++) Baud Rate.
-          (++) Word Length.
-          (++) Stop Bit.
-          (++) Parity: If the parity is enabled, then the MSB bit of the data written
-               in the data register is transmitted but is changed by the parity bit.
-               Depending on the frame length defined by the M bit (8-bits or 9-bits),
-               the possible USART frame formats are as listed in the following table:
-
-   +-------------------------------------------------------------+     
-   |   M bit |  PCE bit  |            USART frame                |
-   |---------------------|---------------------------------------|             
-   |    0    |    0      |    | SB | 8 bit data | STB |          |
-   |---------|-----------|---------------------------------------|  
-   |    0    |    1      |    | SB | 7 bit data | PB | STB |     |
-   |---------|-----------|---------------------------------------|  
-   |    1    |    0      |    | SB | 9 bit data | STB |          |
-   |---------|-----------|---------------------------------------|  
-   |    1    |    1      |    | SB | 8 bit data | PB | STB |     |
-   +-------------------------------------------------------------+            
-
-          (++) Hardware flow control.
-          (++) Receiver/transmitter modes.
-    [..] The USART_Init() function follows the USART  asynchronous configuration 
-         procedure(details for the procedure are available in reference manual.
-        (+) For the synchronous mode in addition to the asynchronous mode parameters
-            these parameters should be also configured:
-            (++) USART Clock Enabled.
-            (++) USART polarity.
-            (++) USART phase.
-            (++) USART LastBit.
-    [..] These parameters can be configured using the USART_ClockInit() function.
-
-@endverbatim
-  * @{
-  */
-  
-/**
-  * @brief  Deinitializes the USARTx peripheral registers to their default reset values.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.
-  * @retval None
-  */
-void USART_DeInit(USART_TypeDef* USARTx)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-
-  if (USARTx == USART1)
-  {
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);
-    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE);
-  }
-  else if (USARTx == USART2)
-  {
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE);
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE);
-  }
-  else if (USARTx == USART3)
-  {
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE);
-    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE);
-  }
-  else 
-  {
-    if  (USARTx == USART4)
-    {
-      RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART4, ENABLE);
-      RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART4, DISABLE);
-    }
-  }
-}
-
-/**
-  * @brief  Initializes the USARTx peripheral according to the specified
-  *         parameters in the USART_InitStruct .
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.    
-  * @param  USART_InitStruct: pointer to a USART_InitTypeDef structure that contains
-  *         the configuration information for the specified USART peripheral.
-  * @retval None
-  */
-void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)
-{
-  uint32_t divider = 0, apbclock = 0, tmpreg = 0;
-  RCC_ClocksTypeDef RCC_ClocksStatus;
-  
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_BAUDRATE(USART_InitStruct->USART_BaudRate));  
-  assert_param(IS_USART_WORD_LENGTH(USART_InitStruct->USART_WordLength));
-  assert_param(IS_USART_STOPBITS(USART_InitStruct->USART_StopBits));
-  assert_param(IS_USART_PARITY(USART_InitStruct->USART_Parity));
-  assert_param(IS_USART_MODE(USART_InitStruct->USART_Mode));
-  assert_param(IS_USART_HARDWARE_FLOW_CONTROL(USART_InitStruct->USART_HardwareFlowControl));
-  
-  /* Disable USART */
-  USARTx->CR1 &= (uint32_t)~((uint32_t)USART_CR1_UE);
-  
-  /*---------------------------- USART CR2 Configuration -----------------------*/
-  tmpreg = USARTx->CR2;
-  /* Clear STOP[13:12] bits */
-  tmpreg &= (uint32_t)~((uint32_t)USART_CR2_STOP);
-  
-  /* Configure the USART Stop Bits, Clock, CPOL, CPHA and LastBit ------------*/
-  /* Set STOP[13:12] bits according to USART_StopBits value */
-  tmpreg |= (uint32_t)USART_InitStruct->USART_StopBits;
-  
-  /* Write to USART CR2 */
-  USARTx->CR2 = tmpreg;
-  
-  /*---------------------------- USART CR1 Configuration -----------------------*/
-  tmpreg = USARTx->CR1;
-  /* Clear M, PCE, PS, TE and RE bits */
-  tmpreg &= (uint32_t)~((uint32_t)CR1_CLEAR_MASK);
-  
-  /* Configure the USART Word Length, Parity and mode ----------------------- */
-  /* Set the M bits according to USART_WordLength value */
-  /* Set PCE and PS bits according to USART_Parity value */
-  /* Set TE and RE bits according to USART_Mode value */
-  tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity |
-    USART_InitStruct->USART_Mode;
-  
-  /* Write to USART CR1 */
-  USARTx->CR1 = tmpreg;
-  
-  /*---------------------------- USART CR3 Configuration -----------------------*/  
-  tmpreg = USARTx->CR3;
-  /* Clear CTSE and RTSE bits */
-  tmpreg &= (uint32_t)~((uint32_t)CR3_CLEAR_MASK);
-  
-  /* Configure the USART HFC -------------------------------------------------*/
-  /* Set CTSE and RTSE bits according to USART_HardwareFlowControl value */
-  tmpreg |= USART_InitStruct->USART_HardwareFlowControl;
-  
-  /* Write to USART CR3 */
-  USARTx->CR3 = tmpreg;
-  
-  /*---------------------------- USART BRR Configuration -----------------------*/
-  /* Configure the USART Baud Rate -------------------------------------------*/
-  RCC_GetClocksFreq(&RCC_ClocksStatus);
-  
-  if (USARTx == USART1)
-  {
-    apbclock = RCC_ClocksStatus.USART1CLK_Frequency;
-  }
-  else if (USARTx == USART2)
-  {
-    apbclock = RCC_ClocksStatus.USART2CLK_Frequency;
-  }
-  else
-  {
-    apbclock = RCC_ClocksStatus.PCLK_Frequency;
-  }
-  
-  /* Determine the integer part */
-  if ((USARTx->CR1 & USART_CR1_OVER8) != 0)
-  {
-    /* (divider * 10) computing in case Oversampling mode is 8 Samples */
-    divider = (uint32_t)((2 * apbclock) / (USART_InitStruct->USART_BaudRate));
-    tmpreg  = (uint32_t)((2 * apbclock) % (USART_InitStruct->USART_BaudRate));
-  }
-  else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */
-  {
-    /* (divider * 10) computing in case Oversampling mode is 16 Samples */
-    divider = (uint32_t)((apbclock) / (USART_InitStruct->USART_BaudRate));
-    tmpreg  = (uint32_t)((apbclock) % (USART_InitStruct->USART_BaudRate));
-  }
-  
-  /* round the divider : if fractional part i greater than 0.5 increment divider */
-  if (tmpreg >=  (USART_InitStruct->USART_BaudRate) / 2)
-  {
-    divider++;
-  } 
-  
-  /* Implement the divider in case Oversampling mode is 8 Samples */
-  if ((USARTx->CR1 & USART_CR1_OVER8) != 0)
-  {
-    /* get the LSB of divider and shift it to the right by 1 bit */
-    tmpreg = (divider & (uint16_t)0x000F) >> 1;
-    
-    /* update the divider value */
-    divider = (divider & (uint16_t)0xFFF0) | tmpreg;
-  }
-  
-  /* Write to USART BRR */
-  USARTx->BRR = (uint16_t)divider;
-}
-
-/**
-  * @brief  Fills each USART_InitStruct member with its default value.
-  * @param  USART_InitStruct: pointer to a USART_InitTypeDef structure
-  *         which will be initialized.
-  * @retval None
-  */
-void USART_StructInit(USART_InitTypeDef* USART_InitStruct)
-{
-  /* USART_InitStruct members default value */
-  USART_InitStruct->USART_BaudRate = 9600;
-  USART_InitStruct->USART_WordLength = USART_WordLength_8b;
-  USART_InitStruct->USART_StopBits = USART_StopBits_1;
-  USART_InitStruct->USART_Parity = USART_Parity_No ;
-  USART_InitStruct->USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
-  USART_InitStruct->USART_HardwareFlowControl = USART_HardwareFlowControl_None;  
-}
-
-/**
-  * @brief  Initializes the USARTx peripheral Clock according to the 
-  *         specified parameters in the USART_ClockInitStruct.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.   
-  * @param  USART_ClockInitStruct: pointer to a USART_ClockInitTypeDef
-  *         structure that contains the configuration information for the specified 
-  *         USART peripheral.  
-  * @retval None
-  */
-void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct)
-{
-  uint32_t tmpreg = 0;
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_CLOCK(USART_ClockInitStruct->USART_Clock));
-  assert_param(IS_USART_CPOL(USART_ClockInitStruct->USART_CPOL));
-  assert_param(IS_USART_CPHA(USART_ClockInitStruct->USART_CPHA));
-  assert_param(IS_USART_LASTBIT(USART_ClockInitStruct->USART_LastBit));
-/*---------------------------- USART CR2 Configuration -----------------------*/
-  tmpreg = USARTx->CR2;
-  /* Clear CLKEN, CPOL, CPHA, LBCL and SSM bits */
-  tmpreg &= (uint32_t)~((uint32_t)CR2_CLOCK_CLEAR_MASK);
-  /* Configure the USART Clock, CPOL, CPHA, LastBit and SSM ------------*/
-  /* Set CLKEN bit according to USART_Clock value */
-  /* Set CPOL bit according to USART_CPOL value */
-  /* Set CPHA bit according to USART_CPHA value */
-  /* Set LBCL bit according to USART_LastBit value */
-  tmpreg |= (uint32_t)(USART_ClockInitStruct->USART_Clock | USART_ClockInitStruct->USART_CPOL | 
-                       USART_ClockInitStruct->USART_CPHA | USART_ClockInitStruct->USART_LastBit);
-  /* Write to USART CR2 */
-  USARTx->CR2 = tmpreg;
-}
-
-/**
-  * @brief  Fills each USART_ClockInitStruct member with its default value.
-  * @param  USART_ClockInitStruct: pointer to a USART_ClockInitTypeDef
-  *         structure which will be initialized.
-  * @retval None
-  */
-void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct)
-{
-  /* USART_ClockInitStruct members default value */
-  USART_ClockInitStruct->USART_Clock = USART_Clock_Disable;
-  USART_ClockInitStruct->USART_CPOL = USART_CPOL_Low;
-  USART_ClockInitStruct->USART_CPHA = USART_CPHA_1Edge;
-  USART_ClockInitStruct->USART_LastBit = USART_LastBit_Disable;
-}
-
-/**
-  * @brief  Enables or disables the specified USART peripheral.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.    
-  * @param  NewState: new state of the USARTx peripheral.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected USART by setting the UE bit in the CR1 register */
-    USARTx->CR1 |= USART_CR1_UE;
-  }
-  else
-  {
-    /* Disable the selected USART by clearing the UE bit in the CR1 register */
-    USARTx->CR1 &= (uint32_t)~((uint32_t)USART_CR1_UE);
-  }
-}
-
-/**
-  * @brief  Enables or disables the USART's transmitter or receiver.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_Direction: specifies the USART direction.
-  *          This parameter can be any combination of the following values:
-  *            @arg USART_Mode_Tx: USART Transmitter
-  *            @arg USART_Mode_Rx: USART Receiver
-  * @param  NewState: new state of the USART transfer direction.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void USART_DirectionModeCmd(USART_TypeDef* USARTx, uint32_t USART_DirectionMode, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_MODE(USART_DirectionMode));
-  assert_param(IS_FUNCTIONAL_STATE(NewState)); 
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the USART's transfer interface by setting the TE and/or RE bits 
-       in the USART CR1 register */
-    USARTx->CR1 |= USART_DirectionMode;
-  }
-  else
-  {
-    /* Disable the USART's transfer interface by clearing the TE and/or RE bits
-       in the USART CR3 register */
-    USARTx->CR1 &= (uint32_t)~USART_DirectionMode;
-  }
-}
-
-/**
-  * @brief  Enables or disables the USART's 8x oversampling mode.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  NewState: new state of the USART 8x oversampling mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   This function has to be called before calling USART_Init() function
-  *         in order to have correct baudrate Divider value.
-  * @retval None
-  */
-void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the 8x Oversampling mode by setting the OVER8 bit in the CR1 register */
-    USARTx->CR1 |= USART_CR1_OVER8;
-  }
-  else
-  {
-    /* Disable the 8x Oversampling mode by clearing the OVER8 bit in the CR1 register */
-    USARTx->CR1 &= (uint32_t)~((uint32_t)USART_CR1_OVER8);
-  }
-}  
-
-/**
-  * @brief  Enables or disables the USART's one bit sampling method.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  NewState: new state of the USART one bit sampling method.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   This function has to be called before calling USART_Cmd() function.  
-  * @retval None
-  */
-void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the one bit method by setting the ONEBITE bit in the CR3 register */
-    USARTx->CR3 |= USART_CR3_ONEBIT;
-  }
-  else
-  {
-    /* Disable the one bit method by clearing the ONEBITE bit in the CR3 register */
-    USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT);
-  }
-}
-
-/**
-  * @brief  Enables or disables the USART's most significant bit first 
-  *         transmitted/received following the start bit.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  NewState: new state of the USART most significant bit first
-  *         transmitted/received following the start bit.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   This function has to be called before calling USART_Cmd() function.  
-  * @retval None
-  */
-void USART_MSBFirstCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the most significant bit first transmitted/received following the 
-       start bit by setting the MSBFIRST bit in the CR2 register */
-    USARTx->CR2 |= USART_CR2_MSBFIRST;
-  }
-  else
-  {
-    /* Disable the most significant bit first transmitted/received following the 
-       start bit by clearing the MSBFIRST bit in the CR2 register */
-    USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_MSBFIRST);
-  }
-}
-
-/**
-  * @brief  Enables or disables the binary data inversion.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  NewState: new defined levels for the USART data.
-  *          This parameter can be:
-  *            @arg ENABLE: Logical data from the data register are send/received in negative
-  *                          logic (1=L, 0=H). The parity bit is also inverted.
-  *            @arg DISABLE: Logical data from the data register are send/received in positive
-  *                          logic (1=H, 0=L) 
-  * @note   This function has to be called before calling USART_Cmd() function.  
-  * @retval None
-  */
-void USART_DataInvCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the binary data inversion feature by setting the DATAINV bit in 
-       the CR2 register */
-    USARTx->CR2 |= USART_CR2_DATAINV;
-  }
-  else
-  {
-    /* Disable the binary data inversion feature by clearing the DATAINV bit in 
-       the CR2 register */
-    USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_DATAINV);
-  }
-}
-
-/**
-  * @brief  Enables or disables the Pin(s) active level inversion.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_InvPin: specifies the USART pin(s) to invert.
-  *          This parameter can be any combination of the following values:
-  *            @arg USART_InvPin_Tx: USART Tx pin active level inversion.
-  *            @arg USART_InvPin_Rx: USART Rx pin active level inversion.
-  * @param  NewState: new active level status for the USART pin(s).
-  *          This parameter can be:
-  *            @arg ENABLE: pin(s) signal values are inverted (Vdd =0, Gnd =1).
-  *            @arg DISABLE: pin(s) signal works using the standard logic levels (Vdd =1, Gnd =0).
-  * @note   This function has to be called before calling USART_Cmd() function.  
-  * @retval None
-  */
-void USART_InvPinCmd(USART_TypeDef* USARTx, uint32_t USART_InvPin, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_INVERSTION_PIN(USART_InvPin));  
-  assert_param(IS_FUNCTIONAL_STATE(NewState)); 
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the active level inversion for selected pins by setting the TXINV 
-       and/or RXINV bits in the USART CR2 register */
-    USARTx->CR2 |= USART_InvPin;
-  }
-  else
-  {
-    /* Disable the active level inversion for selected requests by clearing the 
-       TXINV and/or RXINV bits in the USART CR2 register */
-    USARTx->CR2 &= (uint32_t)~USART_InvPin;
-  }
-}
-
-/**
-  * @brief  Enables or disables the swap Tx/Rx pins.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  NewState: new state of the USARTx TX/RX pins pinout.
-  *          This parameter can be:
-  *            @arg ENABLE: The TX and RX pins functions are swapped.
-  *            @arg DISABLE: TX/RX pins are used as defined in standard pinout
-  * @note   This function has to be called before calling USART_Cmd() function.  
-  * @retval None
-  */
-void USART_SWAPPinCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the SWAP feature by setting the SWAP bit in the CR2 register */
-    USARTx->CR2 |= USART_CR2_SWAP;
-  }
-  else
-  {
-    /* Disable the SWAP feature by clearing the SWAP bit in the CR2 register */
-    USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_SWAP);
-  }
-}
-
-/**
-  * @brief  Enables or disables the receiver Time Out feature.
-  * @param  USARTx: where x can be 1 to select the USART peripheral.
-  * @param  NewState: new state of the USARTx receiver Time Out.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void USART_ReceiverTimeOutCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the receiver time out feature by setting the RTOEN bit in the CR2 
-       register */
-    USARTx->CR2 |= USART_CR2_RTOEN;
-  }
-  else
-  {
-    /* Disable the receiver time out feature by clearing the RTOEN bit in the CR2 
-       register */
-    USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_RTOEN);
-  }
-}
-
-/**
-  * @brief  Sets the receiver Time Out value.
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is available only for STM32F072 devices.  
-  * @param  USART_ReceiverTimeOut: specifies the Receiver Time Out value.
-  * @retval None
-  */
-void USART_SetReceiverTimeOut(USART_TypeDef* USARTx, uint32_t USART_ReceiverTimeOut)
-{    
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_USART_TIMEOUT(USART_ReceiverTimeOut));
-
-  /* Clear the receiver Time Out value by clearing the RTO[23:0] bits in the RTOR
-     register  */
-  USARTx->RTOR &= (uint32_t)~((uint32_t)USART_RTOR_RTO);
-  /* Set the receiver Time Out value by setting the RTO[23:0] bits in the RTOR
-     register  */
-  USARTx->RTOR |= USART_ReceiverTimeOut;
-}
-
-/**
-  * @brief  Sets the system clock prescaler.
-  * @note   This function is not available for STM32F030 devices.    
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is available only for STM32F072 devices. 
-  * @param  USART_Prescaler: specifies the prescaler clock.
-  * @note   This function has to be called before calling USART_Cmd() function.    
-  * @retval None
-  */
-void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler)
-{ 
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  
-  /* Clear the USART prescaler */
-  USARTx->GTPR &= USART_GTPR_GT;
-  /* Set the USART prescaler */
-  USARTx->GTPR |= USART_Prescaler;
-}
-
-/**
-  * @}
-  */
-
-
-/** @defgroup USART_Group2 STOP Mode functions
- *  @brief   STOP Mode functions
- *
-@verbatim
- ===============================================================================
-                        ##### STOP Mode functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage 
-         WakeUp from STOP mode.
-
-    [..] The USART is able to WakeUp from Stop Mode if USART clock is set to HSI
-         or LSI.
-         
-    [..] The WakeUp source is configured by calling USART_StopModeWakeUpSourceConfig()
-         function.
-         
-    [..] After configuring the source of WakeUp and before entering in Stop Mode 
-         USART_STOPModeCmd() function should be called to allow USART WakeUp.
-                           
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified USART peripheral in STOP Mode.
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is available only for STM32F072 devices.  
-  * @param  NewState: new state of the USARTx peripheral state in stop mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @note   This function has to be called when USART clock is set to HSI or LSE. 
-  * @retval None
-  */
-void USART_STOPModeCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the selected USART in STOP mode by setting the UESM bit in the CR1
-       register */
-    USARTx->CR1 |= USART_CR1_UESM;
-  }
-  else
-  {
-    /* Disable the selected USART in STOP mode by clearing the UE bit in the CR1
-       register */
-    USARTx->CR1 &= (uint32_t)~((uint32_t)USART_CR1_UESM);
-  }
-}
-
-/**
-  * @brief  Selects the USART WakeUp method form stop mode.
-  * @note   This function is not available for STM32F030 devices.   
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is available only for STM32F072 devices.  
-  * @param  USART_WakeUp: specifies the selected USART wakeup method.
-  *          This parameter can be one of the following values:
-  *            @arg USART_WakeUpSource_AddressMatch: WUF active on address match.
-  *            @arg USART_WakeUpSource_StartBit: WUF active on Start bit detection.
-  *            @arg USART_WakeUpSource_RXNE: WUF active on RXNE.
-  * @note   This function has to be called before calling USART_Cmd() function.   
-  * @retval None
-  */
-void USART_StopModeWakeUpSourceConfig(USART_TypeDef* USARTx, uint32_t USART_WakeUpSource)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_USART_STOPMODE_WAKEUPSOURCE(USART_WakeUpSource));
-
-  USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_WUS);
-  USARTx->CR3 |= USART_WakeUpSource;
-}
-
-/**
-  * @}
-  */
-
-
-/** @defgroup USART_Group3 AutoBaudRate functions
- *  @brief   AutoBaudRate functions 
- *
-@verbatim
- ===============================================================================
-                       ##### AutoBaudRate functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage 
-         the AutoBaudRate detections.
-         
-    [..] Before Enabling AutoBaudRate detection using USART_AutoBaudRateCmd ()
-         The character patterns used to calculate baudrate must be chosen by calling 
-         USART_AutoBaudRateConfig() function. These function take as parameter :
-        (#)USART_AutoBaudRate_StartBit : any character starting with a bit 1.
-        (#)USART_AutoBaudRate_FallingEdge : any character starting with a 10xx bit pattern. 
-                          
-    [..] At any later time, another request for AutoBaudRate detection can be performed
-         using USART_RequestCmd() function.
-         
-    [..] The AutoBaudRate detection is monitored by the status of ABRF flag which indicate
-         that the AutoBaudRate detection is completed. In addition to ABRF flag, the ABRE flag
-         indicate that this procedure is completed without success. USART_GetFlagStatus () 
-         function should be used to monitor the status of these flags.  
-             
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the Auto Baud Rate.
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is available only for STM32F072 devices.   
-  * @param  NewState: new state of the USARTx auto baud rate.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void USART_AutoBaudRateCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the auto baud rate feature by setting the ABREN bit in the CR2 
-       register */
-    USARTx->CR2 |= USART_CR2_ABREN;
-  }
-  else
-  {
-    /* Disable the auto baud rate feature by clearing the ABREN bit in the CR2 
-       register */
-    USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_ABREN);
-  }
-}
-
-/**
-  * @brief  Selects the USART auto baud rate method.
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is available only for STM32F072 devices.   
-  * @param  USART_AutoBaudRate: specifies the selected USART auto baud rate method.
-  *          This parameter can be one of the following values:
-  *            @arg USART_AutoBaudRate_StartBit: Start Bit duration measurement.
-  *            @arg USART_AutoBaudRate_FallingEdge: Falling edge to falling edge measurement.
-  * @note   This function has to be called before calling USART_Cmd() function.  
-  * @retval None
-  */
-void USART_AutoBaudRateConfig(USART_TypeDef* USARTx, uint32_t USART_AutoBaudRate)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_USART_AUTOBAUDRATE_MODE(USART_AutoBaudRate));
-
-  USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_ABRMODE);
-  USARTx->CR2 |= USART_AutoBaudRate;
-}
-
-/**
-  * @}
-  */
-
-
-/** @defgroup USART_Group4 Data transfers functions
- *  @brief   Data transfers functions 
- *
-@verbatim   
- ===============================================================================
-                    ##### Data transfers functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage 
-         the USART data transfers.
-    [..] During an USART reception, data shifts in least significant bit first 
-         through the RX pin. When a transmission is taking place, a write instruction to 
-         the USART_TDR register stores the data in the shift register.
-    [..] The read access of the USART_RDR register can be done using 
-         the USART_ReceiveData() function and returns the RDR value.
-         Whereas a write access to the USART_TDR can be done using USART_SendData()
-         function and stores the written data into TDR.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Transmits single data through the USARTx peripheral.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  Data: the data to transmit.
-  * @retval None
-  */
-void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_DATA(Data)); 
-    
-  /* Transmit Data */
-  USARTx->TDR = (Data & (uint16_t)0x01FF);
-}
-
-/**
-  * @brief  Returns the most recent received data by the USARTx peripheral.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.   
-  * @retval The received data.
-  */
-uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  
-  /* Receive Data */
-  return (uint16_t)(USARTx->RDR & (uint16_t)0x01FF);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup USART_Group5 MultiProcessor Communication functions
- *  @brief   Multi-Processor Communication functions 
- *
-@verbatim   
- ===============================================================================
-             ##### Multi-Processor Communication functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage the USART
-         multiprocessor communication.
-    [..] For instance one of the USARTs can be the master, its TX output is
-         connected to the RX input of the other USART. The others are slaves,
-         their respective TX outputs are logically ANDed together and connected 
-         to the RX input of the master. USART multiprocessor communication is 
-         possible through the following procedure:
-         (#) Program the Baud rate, Word length = 9 bits, Stop bits, Parity, 
-             Mode transmitter or Mode receiver and hardware flow control values 
-             using the USART_Init() function.
-         (#) Configures the USART address using the USART_SetAddress() function.
-         (#) Configures the wake up methode (USART_WakeUp_IdleLine or 
-             USART_WakeUp_AddressMark) using USART_WakeUpConfig() function only 
-             for the slaves.
-         (#) Enable the USART using the USART_Cmd() function.
-         (#) Enter the USART slaves in mute mode using USART_ReceiverWakeUpCmd() 
-             function.
-    [..] The USART Slave exit from mute mode when receive the wake up condition.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Sets the address of the USART node.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.   
-  * @param  USART_Address: Indicates the address of the USART node.
-  * @retval None
-  */
-void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  
-  /* Clear the USART address */
-  USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_ADD);
-  /* Set the USART address node */
-  USARTx->CR2 |=((uint32_t)USART_Address << (uint32_t)0x18);
-}
-
-/**
-  * @brief  Enables or disables the USART's mute mode.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  NewState: new state of the USART mute mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void USART_MuteModeCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState)); 
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the USART mute mode by setting the MME bit in the CR1 register */
-    USARTx->CR1 |= USART_CR1_MME;
-  }
-  else
-  {
-    /* Disable the USART mute mode by clearing the MME bit in the CR1 register */
-    USARTx->CR1 &= (uint32_t)~((uint32_t)USART_CR1_MME);
-  }
-}
-
-/**
-  * @brief  Selects the USART WakeUp method from mute mode.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral. 
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.   
-  * @param  USART_WakeUp: specifies the USART wakeup method.
-  *          This parameter can be one of the following values:
-  *            @arg USART_WakeUp_IdleLine: WakeUp by an idle line detection
-  *            @arg USART_WakeUp_AddressMark: WakeUp by an address mark
-  * @retval None
-  */
-void USART_MuteModeWakeUpConfig(USART_TypeDef* USARTx, uint32_t USART_WakeUp)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_MUTEMODE_WAKEUP(USART_WakeUp));
-
-  USARTx->CR1 &= (uint32_t)~((uint32_t)USART_CR1_WAKE);
-  USARTx->CR1 |= USART_WakeUp;
-}
-
-/**
-  * @brief  Configure the the USART Address detection length.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_AddressLength: specifies the USART address length detection.
-  *          This parameter can be one of the following values:
-  *            @arg USART_AddressLength_4b: 4-bit address length detection 
-  *            @arg USART_AddressLength_7b: 7-bit address length detection 
-  * @retval None
-  */
-void USART_AddressDetectionConfig(USART_TypeDef* USARTx, uint32_t USART_AddressLength)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_ADDRESS_DETECTION(USART_AddressLength));
-
-  USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_ADDM7);
-  USARTx->CR2 |= USART_AddressLength;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup USART_Group6 LIN mode functions
- *  @brief   LIN mode functions 
- *
-@verbatim   
- ===============================================================================
-                       ##### LIN mode functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage the USART 
-         LIN Mode communication.
-    [..] In LIN mode, 8-bit data format with 1 stop bit is required in accordance 
-         with the LIN standard.
-    [..] Only this LIN Feature is supported by the USART IP:
-         (+) LIN Master Synchronous Break send capability and LIN slave break 
-             detection capability :  13-bit break generation and 10/11 bit break 
-             detection.
-    [..] USART LIN Master transmitter communication is possible through the 
-         following procedure:
-         (#) Program the Baud rate, Word length = 8bits, Stop bits = 1bit, Parity, 
-             Mode transmitter or Mode receiver and hardware flow control values 
-             using the USART_Init() function.
-         (#) Enable the LIN mode using the USART_LINCmd() function.
-         (#) Enable the USART using the USART_Cmd() function.
-         (#) Send the break character using USART_SendBreak() function.
-    [..] USART LIN Master receiver communication is possible through the 
-         following procedure:
-         (#) Program the Baud rate, Word length = 8bits, Stop bits = 1bit, Parity, 
-             Mode transmitter or Mode receiver and hardware flow control values 
-             using the USART_Init() function.
-         (#) Configures the break detection length 
-             using the USART_LINBreakDetectLengthConfig() function.
-         (#) Enable the LIN mode using the USART_LINCmd() function.
-         -@- In LIN mode, the following bits must be kept cleared:
-             (+@) CLKEN in the USART_CR2 register.
-             (+@) STOP[1:0], SCEN, HDSEL and IREN in the USART_CR3 register.
-         (#) Enable the USART using the USART_Cmd() function.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Sets the USART LIN Break detection length.
-  * @note   This function is not available for STM32F030 devices.  
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is available only for STM32F072 devices.  
-  * @param  USART_LINBreakDetectLength: specifies the LIN break detection length.
-  *          This parameter can be one of the following values:
-  *            @arg USART_LINBreakDetectLength_10b: 10-bit break detection
-  *            @arg USART_LINBreakDetectLength_11b: 11-bit break detection
-  * @retval None
-  */
-void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint32_t USART_LINBreakDetectLength)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_USART_LIN_BREAK_DETECT_LENGTH(USART_LINBreakDetectLength));
-
-  USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_LBDL);
-  USARTx->CR2 |= USART_LINBreakDetectLength;  
-}
-
-/**
-  * @brief  Enables or disables the USART's LIN mode.
-  * @note   This function is not available for STM32F030 devices.
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is available only for STM32F072 devices.  
-  * @param  NewState: new state of the USART LIN mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the LIN mode by setting the LINEN bit in the CR2 register */
-    USARTx->CR2 |= USART_CR2_LINEN;
-  }
-  else
-  {
-    /* Disable the LIN mode by clearing the LINEN bit in the CR2 register */
-    USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_LINEN);
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup USART_Group7 Halfduplex mode function
- *  @brief   Half-duplex mode function 
- *
-@verbatim   
- ===============================================================================
-                   ##### Half-duplex mode function #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage the USART
-         Half-duplex communication.
-    [..] The USART can be configured to follow a single-wire half-duplex protocol 
-         where the TX and RX lines are internally connected.
-    [..] USART Half duplex communication is possible through the following procedure:
-         (#) Program the Baud rate, Word length, Stop bits, Parity, Mode transmitter 
-             or Mode receiver and hardware flow control values using the USART_Init()
-            function.
-         (#) Configures the USART address using the USART_SetAddress() function.
-         (#) Enable the half duplex mode using USART_HalfDuplexCmd() function.
-         (#) Enable the USART using the USART_Cmd() function.
-         -@- The RX pin is no longer used.
-         -@- In Half-duplex mode the following bits must be kept cleared:
-             (+@) LINEN and CLKEN bits in the USART_CR2 register.
-             (+@) SCEN and IREN bits in the USART_CR3 register.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the USART's Half Duplex communication.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.    
-  * @param  NewState: new state of the USART Communication.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  if (NewState != DISABLE)
-  {
-    /* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */
-    USARTx->CR3 |= USART_CR3_HDSEL;
-  }
-  else
-  {
-    /* Disable the Half-Duplex mode by clearing the HDSEL bit in the CR3 register */
-    USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_HDSEL);
-  }
-}
-
-/**
-  * @}
-  */
-
-
-/** @defgroup USART_Group8 Smartcard mode functions
- *  @brief   Smartcard mode functions 
- *
-@verbatim   
- ===============================================================================
-                     ##### Smartcard mode functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage the USART
-         Smartcard communication.
-    [..] The Smartcard interface is designed to support asynchronous protocol 
-         Smartcards as defined in the ISO 7816-3 standard. The USART can provide 
-         a clock to the smartcard through the SCLK output. In smartcard mode, 
-         SCLK is not associated to the communication but is simply derived from 
-         the internal peripheral input clock through a 5-bit prescaler.
-    [..] Smartcard communication is possible through the following procedure:
-         (#) Configures the Smartcard Prsecaler using the USART_SetPrescaler() 
-             function.
-         (#) Configures the Smartcard Guard Time using the USART_SetGuardTime() 
-             function.
-         (#) Program the USART clock using the USART_ClockInit() function as following:
-             (++) USART Clock enabled.
-             (++) USART CPOL Low.
-             (++) USART CPHA on first edge.
-             (++) USART Last Bit Clock Enabled.
-         (#) Program the Smartcard interface using the USART_Init() function as 
-             following:
-             (++) Word Length = 9 Bits.
-             (++) 1.5 Stop Bit.
-             (++) Even parity.
-             (++) BaudRate = 12096 baud.
-             (++) Hardware flow control disabled (RTS and CTS signals).
-             (++) Tx and Rx enabled
-         (#) Optionally you can enable the parity error interrupt using 
-             the USART_ITConfig() function.
-         (#) Enable the Smartcard NACK using the USART_SmartCardNACKCmd() function.
-         (#) Enable the Smartcard interface using the USART_SmartCardCmd() function.
-         (#) Enable the USART using the USART_Cmd() function.
-    [..] 
-  Please refer to the ISO 7816-3 specification for more details.
-    [..] 
-         (@) It is also possible to choose 0.5 stop bit for receiving but it is 
-             recommended to use 1.5 stop bits for both transmitting and receiving 
-             to avoid switching between the two configurations.
-         (@) In smartcard mode, the following bits must be kept cleared:
-             (+@) LINEN bit in the USART_CR2 register.
-             (+@) HDSEL and IREN bits in the USART_CR3 register.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Sets the specified USART guard time.
-  * @note   This function is not available for STM32F030 devices.  
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is applicable only for STM32F072 devices.  
-  * @param  USART_GuardTime: specifies the guard time.
-  * @retval None
-  */
-void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime)
-{    
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-
-  /* Clear the USART Guard time */
-  USARTx->GTPR &= USART_GTPR_PSC;
-  /* Set the USART guard time */
-  USARTx->GTPR |= (uint16_t)((uint16_t)USART_GuardTime << 0x08);
-}
-
-/**
-  * @brief  Enables or disables the USART's Smart Card mode.
-  * @note   This function is not available for STM32F030 devices.  
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is applicable only for STM32F072 devices. 
-  * @param  NewState: new state of the Smart Card mode.
-  *          This parameter can be: ENABLE or DISABLE.      
-  * @retval None
-  */
-void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Enable the SC mode by setting the SCEN bit in the CR3 register */
-    USARTx->CR3 |= USART_CR3_SCEN;
-  }
-  else
-  {
-    /* Disable the SC mode by clearing the SCEN bit in the CR3 register */
-    USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_SCEN);
-  }
-}
-
-/**
-  * @brief  Enables or disables NACK transmission.
-  * @note   This function is not available for STM32F030 devices.  
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is applicable only for STM32F072 devices. 
-  * @param  NewState: new state of the NACK transmission.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx)); 
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Enable the NACK transmission by setting the NACK bit in the CR3 register */
-    USARTx->CR3 |= USART_CR3_NACK;
-  }
-  else
-  {
-    /* Disable the NACK transmission by clearing the NACK bit in the CR3 register */
-    USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_NACK);
-  }
-}
-
-/**
-  * @brief  Sets the Smart Card number of retries in transmit and receive.
-  * @note   This function is not available for STM32F030 devices.  
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is applicable only for STM32F072 devices. 
-  * @param  USART_AutoCount: specifies the Smart Card auto retry count.
-  * @retval None
-  */
-void USART_SetAutoRetryCount(USART_TypeDef* USARTx, uint8_t USART_AutoCount)
-{    
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_USART_AUTO_RETRY_COUNTER(USART_AutoCount));
-  /* Clear the USART auto retry count */
-  USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_SCARCNT);
-  /* Set the USART auto retry count*/
-  USARTx->CR3 |= (uint32_t)((uint32_t)USART_AutoCount << 0x11);
-}
-
-/**
-  * @brief  Sets the Smart Card Block length.
-  * @note   This function is not available for STM32F030 devices.  
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is applicable only for STM32F072 devices. 
-  * @param  USART_BlockLength: specifies the Smart Card block length.
-  * @retval None
-  */
-void USART_SetBlockLength(USART_TypeDef* USARTx, uint8_t USART_BlockLength)
-{    
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-
-  /* Clear the Smart card block length */
-  USARTx->RTOR &= (uint32_t)~((uint32_t)USART_RTOR_BLEN);
-  /* Set the Smart Card block length */
-  USARTx->RTOR |= (uint32_t)((uint32_t)USART_BlockLength << 0x18);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup USART_Group9 IrDA mode functions
- *  @brief   IrDA mode functions 
- *
-@verbatim   
- ===============================================================================
-                        ##### IrDA mode functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage the USART
-         IrDA communication.
-    [..] IrDA is a half duplex communication protocol. If the Transmitter is busy, 
-         any data on the IrDA receive line will be ignored by the IrDA decoder 
-         and if the Receiver is busy, data on the TX from the USART to IrDA will 
-         not be encoded by IrDA. While receiving data, transmission should be 
-         avoided as the data to be transmitted could be corrupted.
-    [..] IrDA communication is possible through the following procedure:
-         (#) Program the Baud rate, Word length = 8 bits, Stop bits, Parity, 
-             Transmitter/Receiver modes and hardware flow control values using 
-             the USART_Init() function.
-         (#) Configures the IrDA pulse width by configuring the prescaler using  
-             the USART_SetPrescaler() function.
-         (#) Configures the IrDA  USART_IrDAMode_LowPower or USART_IrDAMode_Normal 
-             mode using the USART_IrDAConfig() function.
-         (#) Enable the IrDA using the USART_IrDACmd() function.
-         (#) Enable the USART using the USART_Cmd() function.         
-    [..]
-    (@) A pulse of width less than two and greater than one PSC period(s) may or 
-        may not be rejected.
-    (@) The receiver set up time should be managed by software. The IrDA physical 
-        layer specification specifies a minimum of 10 ms delay between 
-        transmission and reception (IrDA is a half duplex protocol).
-    (@) In IrDA mode, the following bits must be kept cleared:
-        (+@) LINEN, STOP and CLKEN bits in the USART_CR2 register.
-        (+@) SCEN and HDSEL bits in the USART_CR3 register.
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Configures the USART's IrDA interface.
-  * @note   This function is not available for STM32F030 devices.  
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is applicable only for STM32F072 devices.
-  * @param  USART_IrDAMode: specifies the IrDA mode.
-  *          This parameter can be one of the following values:
-  *            @arg USART_IrDAMode_LowPower
-  *            @arg USART_IrDAMode_Normal
-  * @retval None
-  */
-void USART_IrDAConfig(USART_TypeDef* USARTx, uint32_t USART_IrDAMode)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_USART_IRDA_MODE(USART_IrDAMode));
-
-  USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_IRLP);
-  USARTx->CR3 |= USART_IrDAMode;
-}
-
-/**
-  * @brief  Enables or disables the USART's IrDA interface.
-  * @note   This function is not available for STM32F030 devices.  
-  * @param  USARTx: where x can be 1or 2  to select the USART peripheral.
-  * @note   USART2 is applicable only for STM32F072 devices.
-  * @param  NewState: new state of the IrDA mode.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_12_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the IrDA mode by setting the IREN bit in the CR3 register */
-    USARTx->CR3 |= USART_CR3_IREN;
-  }
-  else
-  {
-    /* Disable the IrDA mode by clearing the IREN bit in the CR3 register */
-    USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_IREN);
-  }
-}
-/**
-  * @}
-  */
-
-/** @defgroup USART_Group10 RS485 mode function
- *  @brief  RS485 mode function 
- *
-@verbatim  
- ===============================================================================
-                        ##### RS485 mode functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to manage the USART
-         RS485 flow control.
-    [..] RS485 flow control (Driver enable feature) handling is possible through
-         the following procedure:
-         (#) Program the Baud rate, Word length = 8 bits, Stop bits, Parity, 
-             Transmitter/Receiver modes and hardware flow control values using 
-             the USART_Init() function.
-         (#) Enable the Driver Enable using the USART_DECmd() function.
-         (#) Configures the Driver Enable polarity using the USART_DEPolarityConfig()
-             function.
-         (#) Configures the Driver Enable assertion time using USART_SetDEAssertionTime() 
-             function and deassertion time using the USART_SetDEDeassertionTime()
-             function.    
-         (#) Enable the USART using the USART_Cmd() function.
-      -@-  
-       (+@) The assertion and dessertion times are expressed in sample time units (1/8 or 
-            1/16 bit time, depending on the oversampling rate).
-       
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the USART's DE functionality.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  NewState: new state of the driver enable mode.
-  *          This parameter can be: ENABLE or DISABLE.      
-  * @retval None
-  */
-void USART_DECmd(USART_TypeDef* USARTx, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  if (NewState != DISABLE)
-  {
-    /* Enable the DE functionality by setting the DEM bit in the CR3 register */
-    USARTx->CR3 |= USART_CR3_DEM;
-  }
-  else
-  {
-    /* Disable the DE functionality by clearing the DEM bit in the CR3 register */
-    USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_DEM);
-  }
-}
-
-/**
-  * @brief  Configures the USART's DE polarity
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_DEPolarity: specifies the DE polarity.
-  *          This parameter can be one of the following values:
-  *            @arg USART_DEPolarity_Low
-  *            @arg USART_DEPolarity_High
-  * @retval None
-  */
-void USART_DEPolarityConfig(USART_TypeDef* USARTx, uint32_t USART_DEPolarity)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_DE_POLARITY(USART_DEPolarity));
-
-  USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_DEP);
-  USARTx->CR3 |= USART_DEPolarity;
-}
-
-/**
-  * @brief  Sets the specified RS485 DE assertion time
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_DEAssertionTime: specifies the time between the activation of
-  *         the DE signal and the beginning of the start bit
-  * @retval None
-  */
-void USART_SetDEAssertionTime(USART_TypeDef* USARTx, uint32_t USART_DEAssertionTime)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_DE_ASSERTION_DEASSERTION_TIME(USART_DEAssertionTime)); 
-
-  /* Clear the DE assertion time */
-  USARTx->CR1 &= (uint32_t)~((uint32_t)USART_CR1_DEAT);
-  /* Set the new value for the DE assertion time */
-  USARTx->CR1 |=((uint32_t)USART_DEAssertionTime << (uint32_t)0x15);
-}
-
-/**
-  * @brief  Sets the specified RS485 DE deassertion time
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_DeassertionTime: specifies the time between the middle of the last 
-  *         stop bit in a transmitted message and the de-activation of the DE signal
-  * @retval None
-  */
-void USART_SetDEDeassertionTime(USART_TypeDef* USARTx, uint32_t USART_DEDeassertionTime)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_DE_ASSERTION_DEASSERTION_TIME(USART_DEDeassertionTime)); 
-
-  /* Clear the DE deassertion time */
-  USARTx->CR1 &= (uint32_t)~((uint32_t)USART_CR1_DEDT);
-  /* Set the new value for the DE deassertion time */
-  USARTx->CR1 |=((uint32_t)USART_DEDeassertionTime << (uint32_t)0x10);
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup USART_Group11 DMA transfers management functions
- *  @brief   DMA transfers management functions
- *
-@verbatim   
- ===============================================================================
-               ##### DMA transfers management functions #####
- ===============================================================================
-    [..] This section provides two functions that can be used only in DMA mode.
-    [..] In DMA Mode, the USART communication can be managed by 2 DMA Channel 
-         requests:
-         (#) USART_DMAReq_Tx: specifies the Tx buffer DMA transfer request.
-         (#) USART_DMAReq_Rx: specifies the Rx buffer DMA transfer request.
-    [..] In this Mode it is advised to use the following function:
-         (+) void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, 
-             FunctionalState NewState).
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the USART's DMA interface.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_DMAReq: specifies the DMA request.
-  *          This parameter can be any combination of the following values:
-  *            @arg USART_DMAReq_Tx: USART DMA transmit request
-  *            @arg USART_DMAReq_Rx: USART DMA receive request
-  * @param  NewState: new state of the DMA Request sources.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void USART_DMACmd(USART_TypeDef* USARTx, uint32_t USART_DMAReq, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_DMAREQ(USART_DMAReq));  
-  assert_param(IS_FUNCTIONAL_STATE(NewState)); 
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the DMA transfer for selected requests by setting the DMAT and/or
-       DMAR bits in the USART CR3 register */
-    USARTx->CR3 |= USART_DMAReq;
-  }
-  else
-  {
-    /* Disable the DMA transfer for selected requests by clearing the DMAT and/or
-       DMAR bits in the USART CR3 register */
-    USARTx->CR3 &= (uint32_t)~USART_DMAReq;
-  }
-}
-
-/**
-  * @brief  Enables or disables the USART's DMA interface when reception error occurs.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_DMAOnError: specifies the DMA status in case of reception error.
-  *          This parameter can be any combination of the following values:
-  *            @arg USART_DMAOnError_Enable: DMA receive request enabled when the USART DMA  
-  *                                          reception error is asserted.
-  *            @arg USART_DMAOnError_Disable: DMA receive request disabled when the USART DMA 
-  *                                           reception error is asserted.
-  * @retval None
-  */
-void USART_DMAReceptionErrorConfig(USART_TypeDef* USARTx, uint32_t USART_DMAOnError)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_DMAONERROR(USART_DMAOnError)); 
-  
-  /* Clear the DMA Reception error detection bit */
-  USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_DDRE);
-  /* Set the new value for the DMA Reception error detection bit */
-  USARTx->CR3 |= USART_DMAOnError;
-}
-
-/**
-  * @}
-  */
-  
-/** @defgroup USART_Group12 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions 
- *
-@verbatim   
- ===============================================================================
-            ##### Interrupts and flags management functions #####
- ===============================================================================
-    [..] This subsection provides a set of functions allowing to configure the 
-         USART Interrupts sources, Requests and check or clear the flags or pending bits status. 
-         The user should identify which mode will be used in his application to 
-         manage the communication: Polling mode, Interrupt mode.
-
- *** Polling Mode ***
- ====================
-    [..] In Polling Mode, the SPI communication can be managed by these flags:
-         (#) USART_FLAG_REACK: to indicate the status of the Receive Enable 
-             acknowledge flag
-         (#) USART_FLAG_TEACK: to indicate the status of the Transmit Enable 
-             acknowledge flag.
-         (#) USART_FLAG_WU: to indicate the status of the Wake up flag.
-         (#) USART_FLAG_RWU: to indicate the status of the Receive Wake up flag.
-         (#) USART_FLAG_SBK: to indicate the status of the Send Break flag.
-         (#) USART_FLAG_CM: to indicate the status of the Character match flag.
-         (#) USART_FLAG_BUSY: to indicate the status of the Busy flag.
-         (#) USART_FLAG_ABRF: to indicate the status of the Auto baud rate flag.
-         (#) USART_FLAG_ABRE: to indicate the status of the Auto baud rate error flag.
-         (#) USART_FLAG_EOB: to indicate the status of the End of block flag.
-         (#) USART_FLAG_RTO: to indicate the status of the Receive time out flag.
-         (#) USART_FLAG_nCTSS: to indicate the status of the Inverted nCTS input 
-             bit status.
-         (#) USART_FLAG_TXE: to indicate the status of the transmit buffer register.
-         (#) USART_FLAG_RXNE: to indicate the status of the receive buffer register.
-         (#) USART_FLAG_TC: to indicate the status of the transmit operation.
-         (#) USART_FLAG_IDLE: to indicate the status of the Idle Line.
-         (#) USART_FLAG_CTS: to indicate the status of the nCTS input.
-         (#) USART_FLAG_LBD: to indicate the status of the LIN break detection.
-         (#) USART_FLAG_NE: to indicate if a noise error occur.
-         (#) USART_FLAG_FE: to indicate if a frame error occur.
-         (#) USART_FLAG_PE: to indicate if a parity error occur.
-         (#) USART_FLAG_ORE: to indicate if an Overrun error occur.
-    [..] In this Mode it is advised to use the following functions:
-         (+) FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG).
-         (+) void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG).
-
- *** Interrupt Mode ***
- ======================
-    [..] In Interrupt Mode, the USART communication can be managed by 8 interrupt 
-         sources and 10 pending bits:
-         (+) Pending Bits:
-             (##) USART_IT_WU: to indicate the status of the Wake up interrupt.
-             (##) USART_IT_CM: to indicate the status of Character match interrupt.
-             (##) USART_IT_EOB: to indicate the status of End of block interrupt.
-             (##) USART_IT_RTO: to indicate the status of Receive time out interrupt.
-             (##) USART_IT_CTS: to indicate the status of CTS change interrupt.
-             (##) USART_IT_LBD: to indicate the status of LIN Break detection interrupt.
-             (##) USART_IT_TC: to indicate the status of Transmission complete interrupt.
-             (##) USART_IT_IDLE: to indicate the status of IDLE line detected interrupt.
-             (##) USART_IT_ORE: to indicate the status of OverRun Error interrupt.
-             (##) USART_IT_NE: to indicate the status of Noise Error interrupt.
-             (##) USART_IT_FE: to indicate the status of Framing Error interrupt.
-             (##) USART_IT_PE: to indicate the status of Parity Error interrupt.  
-
-         (+) Interrupt Source:
-             (##) USART_IT_WU: specifies the interrupt source for Wake up interrupt.
-             (##) USART_IT_CM: specifies the interrupt source for Character match 
-                  interrupt.
-             (##) USART_IT_EOB: specifies the interrupt source for End of block
-                  interrupt.
-             (##) USART_IT_RTO: specifies the interrupt source for Receive time-out
-                  interrupt.
-             (##) USART_IT_CTS: specifies the interrupt source for CTS change interrupt.
-             (##) USART_IT_LBD: specifies the interrupt source for LIN Break 
-                  detection interrupt.
-             (##) USART_IT_TXE: specifies the interrupt source for Tansmit Data 
-                  Register empty interrupt.
-             (##) USART_IT_TC: specifies the interrupt source for Transmission 
-                  complete interrupt.
-             (##) USART_IT_RXNE: specifies the interrupt source for Receive Data 
-                  register not empty interrupt.
-             (##) USART_IT_IDLE: specifies the interrupt source for Idle line 
-                  detection interrupt.
-             (##) USART_IT_PE: specifies the interrupt source for Parity Error interrupt.
-             (##) USART_IT_ERR: specifies the interrupt source for Error interrupt
-                  (Frame error, noise error, overrun error)
-             -@@- Some parameters are coded in order to use them as interrupt 
-                 source or as pending bits.
-    [..] In this Mode it is advised to use the following functions:
-         (+) void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState).
-         (+) ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT).
-         (+) void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT).
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables or disables the specified USART interrupts.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_IT: specifies the USART interrupt sources to be enabled or disabled.
-  *          This parameter can be one of the following values:
-  *            @arg USART_IT_WU:  Wake up interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_CM:  Character match interrupt.
-  *            @arg USART_IT_EOB:  End of block interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_RTO:  Receive time out interrupt.
-  *            @arg USART_IT_CTS:  CTS change interrupt.
-  *            @arg USART_IT_LBD:  LIN Break detection interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_TXE:  Tansmit Data Register empty interrupt.
-  *            @arg USART_IT_TC:  Transmission complete interrupt.
-  *            @arg USART_IT_RXNE:  Receive Data register not empty interrupt.
-  *            @arg USART_IT_IDLE:  Idle line detection interrupt.
-  *            @arg USART_IT_PE:  Parity Error interrupt.
-  *            @arg USART_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)
-  * @param  NewState: new state of the specified USARTx interrupts.
-  *          This parameter can be: ENABLE or DISABLE.
-  * @retval None
-  */
-void USART_ITConfig(USART_TypeDef* USARTx, uint32_t USART_IT, FunctionalState NewState)
-{
-  uint32_t usartreg = 0, itpos = 0, itmask = 0;
-  uint32_t usartxbase = 0;
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_CONFIG_IT(USART_IT));
-  assert_param(IS_FUNCTIONAL_STATE(NewState));
-  
-  usartxbase = (uint32_t)USARTx;
-  
-  /* Get the USART register index */
-  usartreg = (((uint16_t)USART_IT) >> 0x08);
-  
-  /* Get the interrupt position */
-  itpos = USART_IT & IT_MASK;
-  itmask = (((uint32_t)0x01) << itpos);
-  
-  if (usartreg == 0x02) /* The IT is in CR2 register */
-  {
-    usartxbase += 0x04;
-  }
-  else if (usartreg == 0x03) /* The IT is in CR3 register */
-  {
-    usartxbase += 0x08;
-  }
-  else /* The IT is in CR1 register */
-  {
-  }
-  if (NewState != DISABLE)
-  {
-    *(__IO uint32_t*)usartxbase  |= itmask;
-  }
-  else
-  {
-    *(__IO uint32_t*)usartxbase &= ~itmask;
-  }
-}
-
-/**
-  * @brief  Enables the specified USART's Request.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_Request: specifies the USART request.
-  *          This parameter can be any combination of the following values:
-  *            @arg USART_Request_TXFRQ: Transmit data flush ReQuest
-  *            @arg USART_Request_RXFRQ: Receive data flush ReQuest
-  *            @arg USART_Request_MMRQ: Mute Mode ReQuest
-  *            @arg USART_Request_SBKRQ: Send Break ReQuest
-  *            @arg USART_Request_ABRRQ: Auto Baud Rate ReQuest
-  * @param  NewState: new state of the DMA interface when reception error occurs.
-  *          This parameter can be: ENABLE or DISABLE.  
-  * @retval None
-  */
-void USART_RequestCmd(USART_TypeDef* USARTx, uint32_t USART_Request, FunctionalState NewState)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_REQUEST(USART_Request));
-  assert_param(IS_FUNCTIONAL_STATE(NewState)); 
-
-  if (NewState != DISABLE)
-  {
-    /* Enable the USART ReQuest by setting the dedicated request bit in the RQR
-       register.*/
-      USARTx->RQR |= USART_Request;
-  }
-  else
-  {
-    /* Disable the USART ReQuest by clearing the dedicated request bit in the RQR
-       register.*/
-    USARTx->RQR &= (uint32_t)~USART_Request;
-  }
-}
-
-/**
-  * @brief  Enables or disables the USART's Overrun detection.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_OVRDetection: specifies the OVR detection status in case of OVR error.
-  *          This parameter can be any combination of the following values:
-  *            @arg USART_OVRDetection_Enable: OVR error detection enabled when
-  *                                            the USART OVR error is asserted.
-  *            @arg USART_OVRDetection_Disable: OVR error detection disabled when
-  *                                             the USART OVR error is asserted.
-  * @retval None
-  */
-void USART_OverrunDetectionConfig(USART_TypeDef* USARTx, uint32_t USART_OVRDetection)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_OVRDETECTION(USART_OVRDetection));
-  
-  /* Clear the OVR detection bit */
-  USARTx->CR3 &= (uint32_t)~((uint32_t)USART_CR3_OVRDIS);
-  /* Set the new value for the OVR detection bit */
-  USARTx->CR3 |= USART_OVRDetection;
-}
-
-/**
-  * @brief  Checks whether the specified USART flag is set or not.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_FLAG: specifies the flag to check.
-  *          This parameter can be one of the following values:
-  *            @arg USART_FLAG_REACK:  Receive Enable acknowledge flag.
-  *            @arg USART_FLAG_TEACK:  Transmit Enable acknowledge flag.
-  *            @arg USART_FLAG_WU:  Wake up flag, not available for  STM32F030 devices.
-  *            @arg USART_FLAG_RWU:  Receive Wake up flag, not available for  STM32F030 devices.
-  *            @arg USART_FLAG_SBK:  Send Break flag.
-  *            @arg USART_FLAG_CM:  Character match flag.
-  *            @arg USART_FLAG_BUSY:  Busy flag.
-  *            @arg USART_FLAG_ABRF:  Auto baud rate flag.
-  *            @arg USART_FLAG_ABRE:  Auto baud rate error flag.
-  *            @arg USART_FLAG_EOB:  End of block flag, not available for  STM32F030 devices.
-  *            @arg USART_FLAG_RTO:  Receive time out flag.
-  *            @arg USART_FLAG_nCTSS:  Inverted nCTS input bit status.
-  *            @arg USART_FLAG_CTS:  CTS Change flag.
-  *            @arg USART_FLAG_LBD:  LIN Break detection flag, not available for  STM32F030 devices.
-  *            @arg USART_FLAG_TXE:  Transmit data register empty flag.
-  *            @arg USART_FLAG_TC:  Transmission Complete flag.
-  *            @arg USART_FLAG_RXNE:  Receive data register not empty flag.
-  *            @arg USART_FLAG_IDLE:  Idle Line detection flag.
-  *            @arg USART_FLAG_ORE:  OverRun Error flag.
-  *            @arg USART_FLAG_NE:  Noise Error flag.
-  *            @arg USART_FLAG_FE:  Framing Error flag.
-  *            @arg USART_FLAG_PE:  Parity Error flag.
-  * @retval The new state of USART_FLAG (SET or RESET).
-  */
-FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint32_t USART_FLAG)
-{
-  FlagStatus bitstatus = RESET;
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_FLAG(USART_FLAG));
-  
-  if ((USARTx->ISR & USART_FLAG) != (uint16_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears the USARTx's pending flags.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_FLAG: specifies the flag to clear.
-  *          This parameter can be any combination of the following values:
-  *            @arg USART_FLAG_WU:  Wake up flag, not available for  STM32F030 devices.
-  *            @arg USART_FLAG_CM:  Character match flag.
-  *            @arg USART_FLAG_EOB:  End of block flag, not available for  STM32F030 devices.
-  *            @arg USART_FLAG_RTO:  Receive time out flag.
-  *            @arg USART_FLAG_CTS:  CTS Change flag.
-  *            @arg USART_FLAG_LBD:  LIN Break detection flag, not available for  STM32F030 devices.
-  *            @arg USART_FLAG_TC:  Transmission Complete flag.
-  *            @arg USART_FLAG_IDLE:  IDLE line detected flag.
-  *            @arg USART_FLAG_ORE:  OverRun Error flag.
-  *            @arg USART_FLAG_NE: Noise Error flag.
-  *            @arg USART_FLAG_FE: Framing Error flag.
-  *            @arg USART_FLAG_PE:   Parity Errorflag.
-  *   
-  * @note     RXNE pending bit is cleared by a read to the USART_RDR register 
-  *           (USART_ReceiveData()) or by writing 1 to the RXFRQ in the register
-  *           USART_RQR (USART_RequestCmd()).
-  * @note     TC flag can be also cleared by software sequence: a read operation
-  *           to USART_SR register (USART_GetFlagStatus()) followed by a write 
-  *           operation to USART_TDR register (USART_SendData()).
-  * @note     TXE flag is cleared by a write to the USART_TDR register (USART_SendData())
-  *           or by writing 1 to the TXFRQ in the register USART_RQR (USART_RequestCmd()).
-  * @note     SBKF flag is cleared by 1 to the SBKRQ in the register USART_RQR
-  *           (USART_RequestCmd()).
-  * @retval None
-  */
-void USART_ClearFlag(USART_TypeDef* USARTx, uint32_t USART_FLAG)
-{
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_CLEAR_FLAG(USART_FLAG));
-     
-  USARTx->ICR = USART_FLAG;
-}
-
-/**
-  * @brief  Checks whether the specified USART interrupt has occurred or not.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_IT: specifies the USART interrupt source to check.
-  *          This parameter can be one of the following values:
-  *            @arg USART_IT_WU:  Wake up interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_CM:  Character match interrupt.
-  *            @arg USART_IT_EOB:  End of block interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_RTO:  Receive time out interrupt.
-  *            @arg USART_IT_CTS:  CTS change interrupt.
-  *            @arg USART_IT_LBD:  LIN Break detection interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_TXE:  Tansmit Data Register empty interrupt.
-  *            @arg USART_IT_TC:  Transmission complete interrupt.
-  *            @arg USART_IT_RXNE:  Receive Data register not empty interrupt.
-  *            @arg USART_IT_IDLE:  Idle line detection interrupt.
-  *            @arg USART_IT_ORE:  OverRun Error interrupt.
-  *            @arg USART_IT_NE:  Noise Error interrupt.
-  *            @arg USART_IT_FE:  Framing Error interrupt.
-  *            @arg USART_IT_PE:  Parity Error interrupt.
-  * @retval The new state of USART_IT (SET or RESET).
-  */
-ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint32_t USART_IT)
-{
-  uint32_t bitpos = 0, itmask = 0, usartreg = 0;
-  ITStatus bitstatus = RESET;
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_GET_IT(USART_IT)); 
-  
-  /* Get the USART register index */
-  usartreg = (((uint16_t)USART_IT) >> 0x08);
-  /* Get the interrupt position */
-  itmask = USART_IT & IT_MASK;
-  itmask = (uint32_t)0x01 << itmask;
-  
-  if (usartreg == 0x01) /* The IT  is in CR1 register */
-  {
-    itmask &= USARTx->CR1;
-  }
-  else if (usartreg == 0x02) /* The IT  is in CR2 register */
-  {
-    itmask &= USARTx->CR2;
-  }
-  else /* The IT  is in CR3 register */
-  {
-    itmask &= USARTx->CR3;
-  }
-  
-  bitpos = USART_IT >> 0x10;
-  bitpos = (uint32_t)0x01 << bitpos;
-  bitpos &= USARTx->ISR;
-  if ((itmask != (uint16_t)RESET)&&(bitpos != (uint16_t)RESET))
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  
-  return bitstatus;  
-}
-
-/**
-  * @brief  Clears the USARTx's interrupt pending bits.
-  * @param  USARTx: where x can be 1, 2, 3 or 4 to select the USART peripheral.
-  * @note   USART3 and USART4 are available only for STM32F072 devices.
-  * @note   USART2 is not available for STM32F031 devices.  
-  * @param  USART_IT: specifies the interrupt pending bit to clear.
-  *          This parameter can be one of the following values:
-  *            @arg USART_IT_WU:  Wake up interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_CM:  Character match interrupt.
-  *            @arg USART_IT_EOB:  End of block interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_RTO:  Receive time out interrupt.
-  *            @arg USART_IT_CTS:  CTS change interrupt.
-  *            @arg USART_IT_LBD:  LIN Break detection interrupt, not available for  STM32F030 devices.
-  *            @arg USART_IT_TC:  Transmission complete interrupt.
-  *            @arg USART_IT_IDLE:  IDLE line detected interrupt.
-  *            @arg USART_IT_ORE:  OverRun Error interrupt.
-  *            @arg USART_IT_NE:  Noise Error interrupt.
-  *            @arg USART_IT_FE:  Framing Error interrupt.
-  *            @arg USART_IT_PE:  Parity Error interrupt.
-  *
-  * @note     RXNE pending bit is cleared by a read to the USART_RDR register 
-  *           (USART_ReceiveData()) or by writing 1 to the RXFRQ in the register 
-  *           USART_RQR (USART_RequestCmd()).
-  * @note     TC pending bit can be also cleared by software sequence: a read 
-  *           operation to USART_SR register (USART_GetITStatus()) followed by  
-  *           a write operation to USART_TDR register (USART_SendData()).
-  * @note     TXE pending bit is cleared by a write to the USART_TDR register 
-  *           (USART_SendData()) or by writing 1 to the TXFRQ in the register 
-  *           USART_RQR (USART_RequestCmd()).
-  * @retval None
-  */
-void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint32_t USART_IT)
-{
-  uint32_t bitpos = 0, itmask = 0;
-  /* Check the parameters */
-  assert_param(IS_USART_ALL_PERIPH(USARTx));
-  assert_param(IS_USART_CLEAR_IT(USART_IT)); 
-  
-  bitpos = USART_IT >> 0x10;
-  itmask = ((uint32_t)0x01 << (uint32_t)bitpos);
-  USARTx->ICR = (uint32_t)itmask;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_wwdg.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_wwdg.c
deleted file mode 100644
index ab92920..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_wwdg.c	
+++ /dev/null
@@ -1,303 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32f0xx_wwdg.c
-  * @author  MCD Application Team
-  * @version V1.3.0
-  * @date    16-January-2014
-  * @brief   This file provides firmware functions to manage the following 
-  *          functionalities of the Window watchdog (WWDG) peripheral:
-  *           + Prescaler, Refresh window and Counter configuration
-  *           + WWDG activation
-  *           + Interrupts and flags management
-  *             
-  *  @verbatim
-  *    
-  ============================================================================== 
-                           ##### WWDG features ##### 
-  ============================================================================== 
-    [..] Once enabled the WWDG generates a system reset on expiry of a programmed
-        time period, unless the program refreshes the counter (downcounter) 
-        before to reach 0x3F value (i.e. a reset is generated when the counter
-        value rolls over from 0x40 to 0x3F). 
-    [..] An MCU reset is also generated if the counter value is refreshed
-         before the counter has reached the refresh window value. This 
-         implies that the counter must be refreshed in a limited window.
-
-    [..] Once enabled the WWDG cannot be disabled except by a system reset.
-
-    [..] WWDGRST flag in RCC_CSR register can be used to inform when a WWDG
-         reset occurs.
-
-    [..] The WWDG counter input clock is derived from the APB clock divided 
-         by a programmable prescaler.
-
-    [..] WWDG counter clock = PCLK1 / Prescaler.
-    [..] WWDG timeout = (WWDG counter clock) * (counter value).
-
-    [..] Min-max timeout value @32MHz (PCLK1): ~85us / ~43ms.
-
-                       ##### How to use this driver ##### 
-  ==============================================================================
-    [..]
-        (#) Enable WWDG clock using RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE) 
-            function.
-              
-        (#) Configure the WWDG prescaler using WWDG_SetPrescaler() function.
-                             
-        (#) Configure the WWDG refresh window using WWDG_SetWindowValue() function.
-              
-        (#) Set the WWDG counter value and start it using WWDG_Enable() function.
-            When the WWDG is enabled the counter value should be configured to 
-            a value greater than 0x40 to prevent generating an immediate reset.
-              
-        (#) Optionally you can enable the Early wakeup interrupt which is 
-            generated when the counter reach 0x40.
-            Once enabled this interrupt cannot be disabled except by a system reset.
-                   
-        (#) Then the application program must refresh the WWDG counter at regular
-            intervals during normal operation to prevent an MCU reset, using
-            WWDG_SetCounter() function. This operation must occur only when
-            the counter value is lower than the refresh window value, 
-            programmed using WWDG_SetWindowValue().
-  
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_wwdg.h"
-#include "stm32f0xx_rcc.h"
-
-/** @addtogroup STM32F0xx_StdPeriph_Driver
-  * @{
-  */
-
-/** @defgroup WWDG 
-  * @brief WWDG driver modules
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* --------------------- WWDG registers bit mask ---------------------------- */
-/* CFR register bit mask */
-#define CFR_WDGTB_MASK    ((uint32_t)0xFFFFFE7F)
-#define CFR_W_MASK        ((uint32_t)0xFFFFFF80)
-#define BIT_MASK          ((uint8_t)0x7F)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup WWDG_Private_Functions
-  * @{
-  */
-
-/** @defgroup WWDG_Group1 Prescaler, Refresh window and Counter configuration functions
- *  @brief   Prescaler, Refresh window and Counter configuration functions 
- *
-@verbatim   
-  ==============================================================================
-    ##### Prescaler, Refresh window and Counter configuration functions #####
-  ==============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Deinitializes the WWDG peripheral registers to their default reset values.
-  * @param  None
-  * @retval None
-  */
-void WWDG_DeInit(void)
-{
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, ENABLE);
-  RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, DISABLE);
-}
-
-/**
-  * @brief  Sets the WWDG Prescaler.
-  * @param  WWDG_Prescaler: specifies the WWDG Prescaler.
-  *          This parameter can be one of the following values:
-  *            @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1
-  *            @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2
-  *            @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4
-  *            @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8
-  * @retval None
-  */
-void WWDG_SetPrescaler(uint32_t WWDG_Prescaler)
-{
-  uint32_t tmpreg = 0;
-  /* Check the parameters */
-  assert_param(IS_WWDG_PRESCALER(WWDG_Prescaler));
-  /* Clear WDGTB[1:0] bits */
-  tmpreg = WWDG->CFR & CFR_WDGTB_MASK;
-  /* Set WDGTB[1:0] bits according to WWDG_Prescaler value */
-  tmpreg |= WWDG_Prescaler;
-  /* Store the new value */
-  WWDG->CFR = tmpreg;
-}
-
-/**
-  * @brief  Sets the WWDG window value.
-  * @param  WindowValue: specifies the window value to be compared to the downcounter.
-  *          This parameter value must be lower than 0x80.
-  * @retval None
-  */
-void WWDG_SetWindowValue(uint8_t WindowValue)
-{
-  __IO uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_WWDG_WINDOW_VALUE(WindowValue));
-  /* Clear W[6:0] bits */
-
-  tmpreg = WWDG->CFR & CFR_W_MASK;
-
-  /* Set W[6:0] bits according to WindowValue value */
-  tmpreg |= WindowValue & (uint32_t) BIT_MASK;
-
-  /* Store the new value */
-  WWDG->CFR = tmpreg;
-}
-
-/**
-  * @brief  Enables the WWDG Early Wakeup interrupt(EWI).
-  * @note   Once enabled this interrupt cannot be disabled except by a system reset. 
-  * @param  None
-  * @retval None
-  */
-void WWDG_EnableIT(void)
-{
-  WWDG->CFR |= WWDG_CFR_EWI;
-}
-
-/**
-  * @brief  Sets the WWDG counter value.
-  * @param  Counter: specifies the watchdog counter value.
-  *          This parameter must be a number between 0x40 and 0x7F (to prevent 
-  *          generating an immediate reset).
-  * @retval None
-  */
-void WWDG_SetCounter(uint8_t Counter)
-{
-  /* Check the parameters */
-  assert_param(IS_WWDG_COUNTER(Counter));
-  /* Write to T[6:0] bits to configure the counter value, no need to do
-     a read-modify-write; writing a 0 to WDGA bit does nothing */
-  WWDG->CR = Counter & BIT_MASK;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup WWDG_Group2 WWDG activation functions
- *  @brief   WWDG activation functions 
- *
-@verbatim   
-  ==============================================================================
-                     ##### WWDG activation function #####
-  ==============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Enables WWDG and load the counter value.                  
-  * @param  Counter: specifies the watchdog counter value.
-  *          This parameter must be a number between 0x40 and 0x7F (to prevent 
-  *          generating an immediate reset).
-  * @retval None
-  */
-void WWDG_Enable(uint8_t Counter)
-{
-  /* Check the parameters */
-  assert_param(IS_WWDG_COUNTER(Counter));
-  WWDG->CR = WWDG_CR_WDGA | Counter;
-}
-
-/**
-  * @}
-  */
-
-/** @defgroup WWDG_Group3 Interrupts and flags management functions
- *  @brief   Interrupts and flags management functions 
- *
-@verbatim   
-  ==============================================================================
-                ##### Interrupts and flags management functions #####
-  ==============================================================================  
-
-@endverbatim
-  * @{
-  */
-
-/**
-  * @brief  Checks whether the Early Wakeup interrupt flag is set or not.
-  * @param  None
-  * @retval The new state of the Early Wakeup interrupt flag (SET or RESET).
-  */
-FlagStatus WWDG_GetFlagStatus(void)
-{
-  FlagStatus bitstatus = RESET;
-    
-  if ((WWDG->SR) != (uint32_t)RESET)
-  {
-    bitstatus = SET;
-  }
-  else
-  {
-    bitstatus = RESET;
-  }
-  return bitstatus;
-}
-
-/**
-  * @brief  Clears Early Wakeup interrupt flag.
-  * @param  None
-  * @retval None
-  */
-void WWDG_ClearFlag(void)
-{
-  WWDG->SR = (uint32_t)RESET;
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_bsp.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_bsp.h
deleted file mode 100644
index f105636..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_bsp.h	
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_bsp.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Specific api's related to the used hardware platform
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_BSP__H__
-#define __USB_BSP__H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_dcd.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-void USB_BSP_Init (USB_CORE_HANDLE *pdev);
-void USB_BSP_EnableInterrupt (USB_CORE_HANDLE *pdev);
-void USB_BSP_uDelay (const uint32_t usec);
-void USB_BSP_mDelay (const uint32_t msec);
-
-#endif /* __USB_BSP__H__ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_conf_template.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_conf_template.h
deleted file mode 100644
index 2b8d174..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_conf_template.h	
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_conf_template.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   General low level driver configuration
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_CONF__H__
-#define __USB_CONF__H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx.h"
-#include "stm32072b_eval.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Select D+ pull up: internal or external */
-#ifdef USE_STM32072B_EVAL
- /* When using STM32072B_EVAL board the internal pull up must be enabled */
- #define INTERNAL_PULLUP
-#endif
-
-/* Define if Low power mode is enabled; it allows entering the device into STOP mode
-    following USB Suspend event, and wakes up after the USB wakeup event is received. */
-/* #define USB_DEVICE_LOW_PWR_MGMT_SUPPORT */
-
-/* Select the CRS using HSI48 internal clock as USB clock source.
-    If this define is commented, PLL will be used as USB clock source.
-    User need to ensure that the PLL output clock to USB is 48MHz  for proper 
-    USB functioning */
-#define USB_CLOCK_SOURCE_CRS
-
-/* Endpoints used by the device */
-#define EP_NUM    (3) /* EP0 + EP1 for MSC IN + EP2 for MSC OUT */
-
-/* Buffer table base address */
-#define BTABLE_ADDRESS    (0x00)
-
-/* EP0, RX/TX buffers base address */
-#define ENDP0_RX_ADDRESS    (0x18)
-#define ENDP0_TX_ADDRESS    (0x58)
-
-/* EP1, TX buffer base address */
-#define MSC_IN_TX_ADDRESS     (0x98)
-    
-/* EP2, Rx buffer base address */
-#define MSC_OUT_RX_ADDRESS    (0xD8)
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-#endif /* __USB_CONF__H__ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_core.h
deleted file mode 100644
index f3cee3c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_core.h	
+++ /dev/null
@@ -1,495 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides Interface prototype functions to USB cell registers
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_CORE_H__
-#define __USB_CORE_H__
-/* Includes ------------------------------------------------------------------*/
-#include "usb_conf.h"
-#include "usb_regs.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define EP_TYPE_CTRL                           0
-
-#define USB_EP0_IDLE                          0
-#define USB_EP0_SETUP                         1
-#define USB_EP0_DATA_IN                       2
-#define USB_EP0_DATA_OUT                      3
-#define USB_EP0_STATUS_IN                     4
-#define USB_EP0_STATUS_OUT                    5
-
-
-#define USB_MAX_EP0_SIZE                     64
-
-#define USB_SPEED_FULL                       1
-
-/* Exported types ------------------------------------------------------------*/
-typedef enum {
-  USB_OK = 0,
-  USB_FAIL
-}USB_STS;
-
-/* Exported macros -----------------------------------------------------------*/
-/* SetCNTR */
-#define _SetCNTR(wRegValue)  (*CNTR   = (uint16_t)wRegValue)
-
-/* SetISTR */
-#define _SetISTR(wRegValue)  (*ISTR   = (uint16_t)wRegValue)
-
-/* SetDADDR */
-#define _SetDADDR(wRegValue) (*DADDR  = (uint16_t)wRegValue)
-
-/* SetBCDR */
-#define _SetBCDR(wRegValue)  (*BCDR   = (uint16_t)wRegValue)
-
-/* SetBTABLE */
-#define _SetBTABLE(wRegValue)(*BTABLE = (uint16_t)(wRegValue & 0xFFF8))
-
-/*SetLPMCSR */
-#define _SetLPMCSR(wRegValue) (*LPMCSR = (uint16_t)wRegValue)
-
-/* GetCNTR */
-#define _GetCNTR()   ((uint16_t) *CNTR)
-
-/* GetISTR */
-#define _GetISTR()   ((uint16_t) *ISTR)
-
-/* GetFNR */
-#define _GetFNR()    ((uint16_t) *FNR)
-
-/* GetDADDR */
-#define _GetDADDR()  ((uint16_t) *DADDR)
-
-/* GetBTABLE */
-#define _GetBTABLE() ((uint16_t) *BTABLE)
-
-/*GetLPMCSR */
-#define _GetLPMCSR() ((uint16_t) *LPMCSR)
-
-
-/* SetENDPOINT */
-#define _SetENDPOINT(bEpNum,wRegValue)  (*(EP0REG + bEpNum)= \
-    (uint16_t)wRegValue)
-
-/* GetENDPOINT */
-#define _GetENDPOINT(bEpNum)        ((uint16_t)(*(EP0REG + bEpNum)))
-
-
-
-/**
-  * @brief  sets the type in the endpoint register(bits EP_TYPE[1:0])
-  * @param  bEpNum: Endpoint Number.
-  * @param  wType: Endpoint Type.
-  * @retval None
-  */
-#define _SetEPType(bEpNum,wType) (_SetENDPOINT(bEpNum,\
-                                  ((_GetENDPOINT(bEpNum) & EP_T_MASK) | wType )))
-
-/**
-  * @brief  gets the type in the endpoint register(bits EP_TYPE[1:0])
-  * @param  bEpNum: Endpoint Number.
-  * @retval Endpoint Type
-  */
-#define _GetEPType(bEpNum) (_GetENDPOINT(bEpNum) & EP_T_FIELD)
-
-
-/**
-  * @brief  sets the status for tx transfer (bits STAT_TX[1:0]).
-  * @param  bEpNum: Endpoint Number.
-  * @param  wState: new state
-  * @retval None
-  */
-#define _SetEPTxStatus(bEpNum,wState) {\
-register uint16_t _wRegVal;       \
-  _wRegVal = _GetENDPOINT(bEpNum) & EPTX_DTOGMASK;\
-    /* toggle first bit ? */     \
-      if((EPTX_DTOG1 & wState)!= 0)      \
-        _wRegVal ^= EPTX_DTOG1;        \
-          /* toggle second bit ?  */         \
-            if((EPTX_DTOG2 & wState)!= 0)      \
-              _wRegVal ^= EPTX_DTOG2;        \
-    _SetENDPOINT(bEpNum, (_wRegVal | EP_CTR_RX|EP_CTR_TX));    \
-  } /* _SetEPTxStatus */
-
-/**
-  * @brief  sets the status for rx transfer (bits STAT_TX[1:0])
-  * @param  bEpNum: Endpoint Number.
-  * @param  wState: new state
-  * @retval None
-  */
-#define _SetEPRxStatus(bEpNum,wState) {\
-    register uint16_t _wRegVal;   \
-    \
-    _wRegVal = _GetENDPOINT(bEpNum) & EPRX_DTOGMASK;\
-    /* toggle first bit ? */  \
-    if((EPRX_DTOG1 & wState)!= 0) \
-      _wRegVal ^= EPRX_DTOG1;  \
-    /* toggle second bit ? */  \
-    if((EPRX_DTOG2 & wState)!= 0) \
-      _wRegVal ^= EPRX_DTOG2;  \
-    _SetENDPOINT(bEpNum, (_wRegVal | EP_CTR_RX|EP_CTR_TX)); \
-  } /* _SetEPRxStatus */
-
-/**
-  * @brief  sets the status for rx & tx (bits STAT_TX[1:0] & STAT_RX[1:0])
-  * @param  bEpNum: Endpoint Number.
-  * @param  wStaterx: new state.
-  * @param  wStatetx: new state.
-  * @retval None
-  */
-#define _SetEPRxTxStatus(bEpNum,wStaterx,wStatetx) {\
-    register uint32_t _wRegVal;   \
-    \
-    _wRegVal = _GetENDPOINT(bEpNum) & (EPRX_DTOGMASK |EPTX_STAT) ;\
-    /* toggle first bit ? */  \
-    if((EPRX_DTOG1 & wStaterx)!= 0) \
-      _wRegVal ^= EPRX_DTOG1;  \
-    /* toggle second bit ? */  \
-    if((EPRX_DTOG2 & wStaterx)!= 0) \
-      _wRegVal ^= EPRX_DTOG2;  \
-    /* toggle first bit ? */     \
-    if((EPTX_DTOG1 & wStatetx)!= 0)      \
-      _wRegVal ^= EPTX_DTOG1;        \
-    /* toggle second bit ?  */         \
-    if((EPTX_DTOG2 & wStatetx)!= 0)      \
-      _wRegVal ^= EPTX_DTOG2;        \
-    _SetENDPOINT(bEpNum, _wRegVal | EP_CTR_RX|EP_CTR_TX);    \
-  } /* _SetEPRxTxStatus */
-
-/**
-  * @brief  gets the status for tx/rx transfer (bits STAT_TX[1:0]
-  *         /STAT_RX[1:0])
-  * @param  bEpNum: Endpoint Number.
-  * @retval status
-  */
-#define _GetEPTxStatus(bEpNum) ((uint16_t)_GetENDPOINT(bEpNum) & EPTX_STAT)
-
-#define _GetEPRxStatus(bEpNum) ((uint16_t)_GetENDPOINT(bEpNum) & EPRX_STAT)
-
-/**
-  * @brief  sets directly the VALID tx/rx-status into the endpoint register
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _SetEPTxValid(bEpNum)     (_SetEPTxStatus(bEpNum, EP_TX_VALID))
-
-#define _SetEPRxValid(bEpNum)     (_SetEPRxStatus(bEpNum, EP_RX_VALID))
-
-/**
-  * @brief  checks stall condition in an endpoint.
-  * @param  bEpNum: Endpoint Number.
-  * @retval TRUE = endpoint in stall condition.
-  */
-#define _GetTxStallStatus(bEpNum) (_GetEPTxStatus(bEpNum) \
-                                   == EP_TX_STALL)
-#define _GetRxStallStatus(bEpNum) (_GetEPRxStatus(bEpNum) \
-                                   == EP_RX_STALL)
-
-/**
-  * @brief  set & clear EP_KIND bit.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _SetEP_KIND(bEpNum)    (_SetENDPOINT(bEpNum, \
-                                (EP_CTR_RX|EP_CTR_TX|((_GetENDPOINT(bEpNum) | EP_KIND) & EPREG_MASK))))
-#define _ClearEP_KIND(bEpNum)  (_SetENDPOINT(bEpNum, \
-                                (EP_CTR_RX|EP_CTR_TX|(_GetENDPOINT(bEpNum) & EPKIND_MASK))))
-
-/**
-  * @brief  Sets/clears directly STATUS_OUT bit in the endpoint register.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _Set_Status_Out(bEpNum)    _SetEP_KIND(bEpNum)
-#define _Clear_Status_Out(bEpNum)  _ClearEP_KIND(bEpNum)
-
-/**
-  * @brief  Sets/clears directly EP_KIND bit in the endpoint register.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _SetEPDoubleBuff(bEpNum)   _SetEP_KIND(bEpNum)
-#define _ClearEPDoubleBuff(bEpNum) _ClearEP_KIND(bEpNum)
-
-/**
-  * @brief  Clears bit CTR_RX / CTR_TX in the endpoint register.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _ClearEP_CTR_RX(bEpNum)   (_SetENDPOINT(bEpNum,\
-                                   _GetENDPOINT(bEpNum) & 0x7FFF & EPREG_MASK))
-#define _ClearEP_CTR_TX(bEpNum)   (_SetENDPOINT(bEpNum,\
-                                   _GetENDPOINT(bEpNum) & 0xFF7F & EPREG_MASK))
-
-/**
-  * @brief  Toggles DTOG_RX / DTOG_TX bit in the endpoint register.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _ToggleDTOG_RX(bEpNum)    (_SetENDPOINT(bEpNum, \
-                                   EP_CTR_RX|EP_CTR_TX|EP_DTOG_RX | (_GetENDPOINT(bEpNum) & EPREG_MASK)))
-#define _ToggleDTOG_TX(bEpNum)    (_SetENDPOINT(bEpNum, \
-                                   EP_CTR_RX|EP_CTR_TX|EP_DTOG_TX | (_GetENDPOINT(bEpNum) & EPREG_MASK)))
-
-/**
-  * @brief  Clears DTOG_RX / DTOG_TX bit in the endpoint register.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _ClearDTOG_RX(bEpNum)  if((_GetENDPOINT(bEpNum) & EP_DTOG_RX) != 0)\
-    _ToggleDTOG_RX(bEpNum)
-#define _ClearDTOG_TX(bEpNum)  if((_GetENDPOINT(bEpNum) & EP_DTOG_TX) != 0)\
-    _ToggleDTOG_TX(bEpNum)
-      
-/**
-  * @brief  Sets address in an endpoint register.
-  * @param  bEpNum: Endpoint Number.
-  * @param  bAddr: Address.
-  * @retval None
-  */
-#define _SetEPAddress(bEpNum,bAddr) _SetENDPOINT(bEpNum,\
-    EP_CTR_RX|EP_CTR_TX|(_GetENDPOINT(bEpNum) & EPREG_MASK) | bAddr)
-
-/**
-  * @brief  Gets address in an endpoint register.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _GetEPAddress(bEpNum) ((uint8_t)(_GetENDPOINT(bEpNum) & EPADDR_FIELD))
-#define _pEPTxAddr(bEpNum) ((uint16_t *)((_GetBTABLE()+bEpNum*8) + PMAAddr))
-#define _pEPTxCount(bEpNum) ((uint16_t *)((_GetBTABLE()+bEpNum*8+2) + PMAAddr))
-#define _pEPRxAddr(bEpNum) ((uint16_t *)((_GetBTABLE()+bEpNum*8+4) + PMAAddr))
-#define _pEPRxCount(bEpNum) ((uint16_t *)((_GetBTABLE()+bEpNum*8+6) + PMAAddr))
-
-/**
-  * @brief  sets address of the tx/rx buffer.
-  * @param  bEpNum: Endpoint Number.
-  * @param  wAddr: address to be set (must be word aligned).
-  * @retval None
-  */
-#define _SetEPTxAddr(bEpNum,wAddr) (*_pEPTxAddr(bEpNum) = ((wAddr >> 1) << 1))
-#define _SetEPRxAddr(bEpNum,wAddr) (*_pEPRxAddr(bEpNum) = ((wAddr >> 1) << 1))
-
-/**
-  * @brief  Gets address of the tx/rx buffer.
-  * @param  bEpNum: Endpoint Number.
-  * @retval address of the buffer.
-  */
-#define _GetEPTxAddr(bEpNum) ((uint16_t)*_pEPTxAddr(bEpNum))
-#define _GetEPRxAddr(bEpNum) ((uint16_t)*_pEPRxAddr(bEpNum))
-
-/**
-  * @brief  Sets counter of rx buffer with no. of blocks.
-  * @param  bEpNum: Endpoint Number.
-  * @param  wCount: Counter.
-  * @retval None
-  */
-#define _BlocksOf32(dwReg,wCount,wNBlocks) {\
-    wNBlocks = wCount >> 5;\
-    if((wCount & 0x1f) == 0)\
-      wNBlocks--;\
-    *pdwReg = (uint16_t)((wNBlocks << 10) | 0x8000);\
-  }/* _BlocksOf32 */
-
-#define _BlocksOf2(dwReg,wCount,wNBlocks) {\
-    wNBlocks = wCount >> 1;\
-    if((wCount & 0x1) != 0)\
-      wNBlocks++;\
-    *pdwReg = (uint16_t)(wNBlocks << 10);\
-  }/* _BlocksOf2 */
-
-#define _SetEPCountRxReg(dwReg,wCount)  {\
-    uint16_t wNBlocks;\
-    if(wCount > 62){_BlocksOf32(dwReg,wCount,wNBlocks);}\
-    else {_BlocksOf2(dwReg,wCount,wNBlocks);}\
-  }/* _SetEPCountRxReg */
-
-#define _SetEPRxDblBuf0Count(bEpNum,wCount) {\
-    uint16_t *pdwReg = _pEPTxCount(bEpNum); \
-    _SetEPCountRxReg(pdwReg, wCount);\
-  }
-/**
-  * @brief  sets counter for the tx/rx buffer.
-  * @param  bEpNum: Endpoint Number.
-  * @param  wCount: Counter value.
-  * @retval None
-  */
-#define _SetEPTxCount(bEpNum,wCount) (*_pEPTxCount(bEpNum) = wCount)
-#define _SetEPRxCount(bEpNum,wCount) {\
-    uint16_t *pdwReg = _pEPRxCount(bEpNum); \
-    _SetEPCountRxReg(pdwReg, wCount);\
-  }
-
-/**
-  * @brief  gets counter of the tx buffer.
-  * @param  bEpNum: Endpoint Number.
-  * @retval Counter value
-  */
-#define _GetEPTxCount(bEpNum)((uint16_t)(*_pEPTxCount(bEpNum)) & 0x3ff)
-#define _GetEPRxCount(bEpNum)((uint16_t)(*_pEPRxCount(bEpNum)) & 0x3ff)
-
-/**
-  * @brief  Sets buffer 0/1 address in a double buffer endpoint.
-  * @param  bEpNum: Endpoint Number.
-  * @param  wBuf0Addr: buffer 0 address.
-  * @retval Counter value
-  */
-#define _SetEPDblBuf0Addr(bEpNum,wBuf0Addr) {_SetEPTxAddr(bEpNum, wBuf0Addr);}
-#define _SetEPDblBuf1Addr(bEpNum,wBuf1Addr) {_SetEPRxAddr(bEpNum, wBuf1Addr);}
-
-/**
-  * @brief  Sets addresses in a double buffer endpoint.
-  * @param  bEpNum: Endpoint Number.
-  * @param  wBuf0Addr: buffer 0 address.
-  * @param  wBuf1Addr = buffer 1 address.
-  * @retval None
-  */
-#define _SetEPDblBuffAddr(bEpNum,wBuf0Addr,wBuf1Addr) { \
-    _SetEPDblBuf0Addr(bEpNum, wBuf0Addr);\
-    _SetEPDblBuf1Addr(bEpNum, wBuf1Addr);\
-  } /* _SetEPDblBuffAddr */
-
-/**
-  * @brief  Gets buffer 0/1 address of a double buffer endpoint.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _GetEPDblBuf0Addr(bEpNum) (_GetEPTxAddr(bEpNum))
-#define _GetEPDblBuf1Addr(bEpNum) (_GetEPRxAddr(bEpNum))
-
-/**
-  * @brief  Gets buffer 0/1 address of a double buffer endpoint.
-  * @param  bEpNum: Endpoint Number.
-  *        bDir: endpoint dir  EP_DBUF_OUT = OUT 
-  *         EP_DBUF_IN  = IN 
-  * @param  wCount: Counter value 
-  * @retval None
-  */
-#define _SetEPDblBuf0Count(bEpNum, bDir, wCount)  { \
-    if(bDir == EP_DBUF_OUT)\
-      /* OUT endpoint */ \
-    {_SetEPRxDblBuf0Count(bEpNum,wCount);} \
-    else if(bDir == EP_DBUF_IN)\
-      /* IN endpoint */ \
-      *_pEPTxCount(bEpNum) = (uint32_t)wCount;  \
-  } /* SetEPDblBuf0Count*/
-
-#define _SetEPDblBuf1Count(bEpNum, bDir, wCount)  { \
-    if(bDir == EP_DBUF_OUT)\
-      /* OUT endpoint */ \
-    {_SetEPRxCount(bEpNum,wCount);}\
-    else if(bDir == EP_DBUF_IN)\
-      /* IN endpoint */\
-      *_pEPRxCount(bEpNum) = (uint32_t)wCount; \
-  } /* SetEPDblBuf1Count */
-
-#define _SetEPDblBuffCount(bEpNum, bDir, wCount) {\
-    _SetEPDblBuf0Count(bEpNum, bDir, wCount); \
-    _SetEPDblBuf1Count(bEpNum, bDir, wCount); \
-  } /* _SetEPDblBuffCount  */
-
-/**
-  * @brief  Gets buffer 0/1 rx/tx counter for double buffering.
-  * @param  bEpNum: Endpoint Number.
-  * @retval None
-  */
-#define _GetEPDblBuf0Count(bEpNum) (_GetEPTxCount(bEpNum))
-#define _GetEPDblBuf1Count(bEpNum) (_GetEPRxCount(bEpNum))
-
-/* Exported variables --------------------------------------------------------*/
-extern __IO uint16_t wIstr;  /* ISTR register last read value */
-
-/* Exported functions ------------------------------------------------------- */
-void SetCNTR(uint16_t /*wRegValue*/);
-void SetISTR(uint16_t /*wRegValue*/);
-void SetDADDR(uint16_t /*wRegValue*/);
-void SetBTABLE(uint16_t /*wRegValue*/);
-void SetBTABLE(uint16_t /*wRegValue*/);
-void SetLPMCSR(uint16_t /*wRegValue*/);
-uint16_t GetCNTR(void);
-uint16_t GetISTR(void);
-uint16_t GetFNR(void);
-uint16_t GetDADDR(void);
-uint16_t GetBTABLE(void);
-uint16_t GetLPMCSR(void);
-void SetENDPOINT(uint8_t /*bEpNum*/, uint16_t /*wRegValue*/);
-uint16_t GetENDPOINT(uint8_t /*bEpNum*/);
-void SetEPType(uint8_t /*bEpNum*/, uint16_t /*wType*/);
-uint16_t GetEPType(uint8_t /*bEpNum*/);
-void SetEPTxStatus(uint8_t /*bEpNum*/, uint16_t /*wState*/);
-void SetEPRxStatus(uint8_t /*bEpNum*/, uint16_t /*wState*/);
-void SetDouBleBuffEPStall(uint8_t /*bEpNum*/, uint8_t bDir);
-uint16_t GetEPTxStatus(uint8_t /*bEpNum*/);
-uint16_t GetEPRxStatus(uint8_t /*bEpNum*/);
-void SetEPTxValid(uint8_t /*bEpNum*/);
-void SetEPRxValid(uint8_t /*bEpNum*/);
-uint16_t GetTxStallStatus(uint8_t /*bEpNum*/);
-uint16_t GetRxStallStatus(uint8_t /*bEpNum*/);
-void SetEP_KIND(uint8_t /*bEpNum*/);
-void ClearEP_KIND(uint8_t /*bEpNum*/);
-void Set_Status_Out(uint8_t /*bEpNum*/);
-void Clear_Status_Out(uint8_t /*bEpNum*/);
-void SetEPDoubleBuff(uint8_t /*bEpNum*/);
-void ClearEPDoubleBuff(uint8_t /*bEpNum*/);
-void ClearEP_CTR_RX(uint8_t /*bEpNum*/);
-void ClearEP_CTR_TX(uint8_t /*bEpNum*/);
-void ToggleDTOG_RX(uint8_t /*bEpNum*/);
-void ToggleDTOG_TX(uint8_t /*bEpNum*/);
-void ClearDTOG_RX(uint8_t /*bEpNum*/);
-void ClearDTOG_TX(uint8_t /*bEpNum*/);
-void SetEPAddress(uint8_t /*bEpNum*/, uint8_t /*bAddr*/);
-uint8_t GetEPAddress(uint8_t /*bEpNum*/);
-void SetEPTxAddr(uint8_t /*bEpNum*/, uint16_t /*wAddr*/);
-void SetEPRxAddr(uint8_t /*bEpNum*/, uint16_t /*wAddr*/);
-uint16_t GetEPTxAddr(uint8_t /*bEpNum*/);
-uint16_t GetEPRxAddr(uint8_t /*bEpNum*/);
-void SetEPCountRxReg(uint16_t * /*pdwReg*/, uint16_t /*wCount*/);
-void SetEPTxCount(uint8_t /*bEpNum*/, uint16_t /*wCount*/);
-void SetEPRxCount(uint8_t /*bEpNum*/, uint16_t /*wCount*/);
-uint16_t GetEPTxCount(uint8_t /*bEpNum*/);
-uint16_t GetEPRxCount(uint8_t /*bEpNum*/);
-void SetEPDblBuf0Addr(uint8_t /*bEpNum*/, uint16_t /*wBuf0Addr*/);
-void SetEPDblBuf1Addr(uint8_t /*bEpNum*/, uint16_t /*wBuf1Addr*/);
-void SetEPDblBuffAddr(uint8_t /*bEpNum*/, uint16_t /*wBuf0Addr*/, uint16_t /*wBuf1Addr*/);
-uint16_t GetEPDblBuf0Addr(uint8_t /*bEpNum*/);
-uint16_t GetEPDblBuf1Addr(uint8_t /*bEpNum*/);
-void SetEPDblBuffCount(uint8_t /*bEpNum*/, uint8_t /*bDir*/, uint16_t /*wCount*/);
-void SetEPDblBuf0Count(uint8_t /*bEpNum*/, uint8_t /*bDir*/, uint16_t /*wCount*/);
-void SetEPDblBuf1Count(uint8_t /*bEpNum*/, uint8_t /*bDir*/, uint16_t /*wCount*/);
-uint16_t GetEPDblBuf0Count(uint8_t /*bEpNum*/);
-uint16_t GetEPDblBuf1Count(uint8_t /*bEpNum*/);
-EP_DBUF_DIR GetEPDblBufDir(uint8_t /*bEpNum*/);
-void FreeUserBuffer(uint8_t bEpNum/*bEpNum*/, uint8_t bDir);
-uint16_t ToWord(uint8_t, uint8_t);
-uint16_t ByteSwap(uint16_t);
-void SetDeviceAddress(uint8_t);
-void UserToPMABufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
-void PMAToUserBufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
-
-#endif /* __USB_CORE_H__ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_dcd.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_dcd.h
deleted file mode 100644
index a387a93..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_dcd.h	
+++ /dev/null
@@ -1,228 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_dcd.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Device Control Driver Header file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __DCD_H__
-#define __DCD_H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_core.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define USB_EP_CONTROL                       0
-#define USB_EP_ISOC                          1
-#define USB_EP_BULK                          2
-#define USB_EP_INT                           3
-
-/*  Endpoint Kind */
-#define USB_SNG_BUF                          0
-#define USB_DBL_BUF                          1
-
-/*  Device Status */
-#define USB_UNCONNECTED                      0
-#define USB_DEFAULT                          1
-#define USB_ADDRESSED                        2
-#define USB_CONFIGURED                       3
-#define USB_SUSPENDED                        4
-
-
-/* Exported types ------------------------------------------------------------*/
-/********************************************************************************
-Data structure type
-********************************************************************************/
-typedef struct
-{
-  uint8_t  bLength;
-  uint8_t  bDescriptorType;
-  uint8_t  bEndpointAddress;
-  uint8_t  bmAttributes;
-  uint16_t wMaxPacketSize;
-  uint8_t  bInterval;
-}
-EP_DESCRIPTOR , *PEP_DESCRIPTOR;
-
-typedef struct USB_ep
-{
-  uint8_t        num;
-  uint8_t        is_in;
-  uint8_t        is_stall;  
-  uint8_t        type;
-  uint16_t       pmaadress;
-  uint16_t       pmaaddr0;
-  uint16_t       pmaaddr1;
-  uint8_t        doublebuffer;      
-  uint32_t       maxpacket;
-  /* transaction level variables !!! up to one max packet per transaction !!! */
-  uint8_t        *xfer_buff;
-  uint32_t       xfer_len ;
-  uint32_t       xfer_count;
-  /* control transfer variables*/  
-  uint32_t       rem_data_len;
-  uint32_t       total_data_len;
-  uint32_t       ctl_data_len;  
-}
-USB_EP;
-
-typedef  struct  usb_setup_req {
-    
-    uint8_t   bmRequest;                      
-    uint8_t   bRequest;                           
-    uint16_t  wValue;                             
-    uint16_t  wIndex;                             
-    uint16_t  wLength;                            
-} USB_SETUP_REQ;
-
-typedef struct _Device_TypeDef
-{
-  uint8_t  *(*GetDeviceDescriptor)( uint8_t speed , uint16_t *length);  
-#ifdef LPM_ENABLED
-  uint8_t  *(*GetBOSDescriptor)( uint8_t speed , uint16_t *length);
-#endif
-  uint8_t  *(*GetLangIDStrDescriptor)( uint8_t speed , uint16_t *length); 
-  uint8_t  *(*GetManufacturerStrDescriptor)( uint8_t speed , uint16_t *length);  
-  uint8_t  *(*GetProductStrDescriptor)( uint8_t speed , uint16_t *length);  
-  uint8_t  *(*GetSerialStrDescriptor)( uint8_t speed , uint16_t *length);  
-  uint8_t  *(*GetConfigurationStrDescriptor)( uint8_t speed , uint16_t *length);  
-  uint8_t  *(*GetInterfaceStrDescriptor)( uint8_t speed , uint16_t *length);   
-} USBD_DEVICE, *pUSBD_DEVICE;
-
-
-
-
-typedef struct _Device_cb
-{
-  uint8_t  (*Init)         (void *pdev , uint8_t cfgidx);
-  uint8_t  (*DeInit)       (void *pdev , uint8_t cfgidx);
- /* Control Endpoints*/
-  uint8_t  (*Setup)        (void *pdev , USB_SETUP_REQ  *req);  
-  uint8_t  (*EP0_TxSent)   (void *pdev );    
-  uint8_t  (*EP0_RxReady)  (void *pdev);  
-  /* Class Specific Endpoints*/
-  uint8_t  (*DataIn)       (void *pdev , uint8_t epnum);   
-  uint8_t  (*DataOut)      (void *pdev , uint8_t epnum); 
-  uint8_t  (*SOF)          (void *pdev);   
-  uint8_t  *(*GetConfigDescriptor)( uint8_t speed , uint16_t *length); 
-
-#ifdef USB_SUPPORT_USER_STRING_DESC 
-  uint8_t  *(*GetUsrStrDescriptor)( uint8_t speed ,uint8_t index,  uint16_t *length);   
-#endif  
-  
-} USBD_Class_cb_TypeDef;
-
-
-
-typedef struct _USBD_USR_PROP
-{
-  void (*Init)(void);   
-  void (*DeviceReset)(uint8_t speed); 
-  void (*DeviceConfigured)(void);
-  void (*DeviceSuspended)(void);
-  void (*DeviceResumed)(void);      
-}
-USBD_Usr_cb_TypeDef;
-
-typedef struct _DCD
-{
-  uint8_t        device_config;
-  uint8_t        device_state;
-  uint8_t        device_status;
-  uint8_t        device_old_status;
-  uint8_t        device_address;
-  uint32_t       DevRemoteWakeup;
-  uint32_t       speed;
-  uint8_t        setup_packet [8];
-  USB_EP     in_ep   [EP_NUM];
-  USB_EP     out_ep  [EP_NUM];
-  USBD_Class_cb_TypeDef         *class_cb;
-  USBD_Usr_cb_TypeDef           *usr_cb;
-  USBD_DEVICE                   *usr_device;  
-  uint8_t        *pConfig_descriptor;
- }
-DCD_DEV , *DCD_PDEV;
-
-typedef struct USB_Device_handle
-{
-  DCD_DEV     dev;
-}
-USB_DEVICE_HANDLE, USB_CORE_HANDLE;
-
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-/********************************************************************************
-EXPORTED FUNCTION FROM THE USB-DEVICE LAYER
-********************************************************************************/
-void       DCD_Init(USB_CORE_HANDLE *pdev);
-
-void        DCD_DevConnect (USB_CORE_HANDLE *pdev);
-void        DCD_DevDisconnect (USB_CORE_HANDLE *pdev);
-void        DCD_EP_SetAddress (USB_CORE_HANDLE *pdev,
-                               uint8_t address);
-
-uint32_t DCD_PMA_Config(USB_CORE_HANDLE *pdev , 
-                        uint16_t ep_addr,
-                        uint16_t ep_kind,
-                        uint32_t pmaadress);
-
-uint32_t    DCD_EP_Open(USB_CORE_HANDLE *pdev , 
-                     uint16_t ep_addr,
-                     uint16_t ep_mps,
-                     uint8_t ep_type);
-
-uint32_t    DCD_EP_Close  (USB_CORE_HANDLE *pdev,
-                                uint8_t  ep_addr);
-
-
-uint32_t   DCD_EP_PrepareRx ( USB_CORE_HANDLE *pdev,
-                        uint8_t   ep_addr,                                  
-                        uint8_t *pbuf,                                  
-                        uint16_t  buf_len);
-  
-uint32_t    DCD_EP_Tx (USB_CORE_HANDLE *pdev,
-                               uint8_t  ep_addr,
-                               uint8_t  *pbuf,
-                               uint32_t   buf_len);
-uint32_t    DCD_EP_Stall (USB_CORE_HANDLE *pdev,
-                              uint8_t   epnum);
-uint32_t    DCD_EP_ClrStall (USB_CORE_HANDLE *pdev,
-                                  uint8_t epnum);
-
-uint32_t    DCD_Handle_ISR(USB_CORE_HANDLE *pdev);
-
-uint32_t DCD_GetEPStatus(USB_CORE_HANDLE *pdev ,
-                         uint8_t epnum);
-
-void DCD_SetEPStatus (USB_CORE_HANDLE *pdev , 
-                      uint8_t epnum , 
-                      uint32_t Status);
-
-void DCD_StopDevice(USB_CORE_HANDLE *pdev);
-
-#endif /* __DCD_H__ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_dcd_int.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_dcd_int.h
deleted file mode 100644
index 13155a8..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_dcd_int.h	
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_dcd_int.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Device Control driver Interrupt management Header file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef USB_DCD_INT_H__
-#define USB_DCD_INT_H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_pwr.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Mask defining which events has to be handled by the device application software */
-#define IMR_MSK (CNTR_CTRM  | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM  | CNTR_SOFM | \
-                 CNTR_ESOFM | CNTR_RESETM)
-#ifdef LPM_ENABLED
-#undef IMR_MSK
-#define IMR_MSK (CNTR_CTRM  | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM  | CNTR_SOFM | \
-                 CNTR_ESOFM | CNTR_RESETM | CNTR_L1REQM)
-#endif
-
-                    
-
-/* Exported types ------------------------------------------------------------*/
-typedef struct _USBD_DCD_INT
-{
-  uint8_t (* DataOutStage) (USB_CORE_HANDLE *pdev , uint8_t epnum);
-  uint8_t (* DataInStage)  (USB_CORE_HANDLE *pdev , uint8_t epnum);
-  uint8_t (* SetupStage) (USB_CORE_HANDLE *pdev);
-  uint8_t (* SOF) (USB_CORE_HANDLE *pdev);
-  uint8_t (* Reset) (USB_CORE_HANDLE *pdev);
-  uint8_t (* Suspend) (USB_CORE_HANDLE *pdev);
-  uint8_t (* Resume) (USB_CORE_HANDLE *pdev);   
-  
-}USBD_DCD_INT_cb_TypeDef;
-
-extern USBD_DCD_INT_cb_TypeDef *USBD_DCD_INT_fops;
-
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-void CTR(void);
-void USB_Istr(void);
-
-#endif /* USB_DCD_INT_H__ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_regs.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_regs.h
deleted file mode 100644
index befaa24..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/inc/usb_regs.h	
+++ /dev/null
@@ -1,233 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_regs.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Interface prototype functions to USB cell registers
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_REGS_H
-#define __USB_REGS_H
-
-/* Exported types ------------------------------------------------------------*/
-typedef enum _EP_DBUF_DIR
-{
-  /* double buffered endpoint direction */
-  EP_DBUF_OUT,
-  EP_DBUF_IN,
-  EP_DBUF_ERR,
-}EP_DBUF_DIR;
-
-/* endpoint buffer number */
-enum EP_BUF_NUM
-{
-  EP_NOBUF,
-  EP_BUF0,
-  EP_BUF1
-};
-
-/* Exported defines ----------------------------------------------------------*/
-#define RegBase  (0x40005C00L)  /* USB_IP Peripheral Registers base address */
-#define PMAAddr  (0x40006000L)  /* USB_IP Packet Memory Area base address   */
-
-/******************************************************************************/
-/*                         General registers                                  */
-/******************************************************************************/
-
-/* Control register */
-#define CNTR    ((__IO unsigned *)(RegBase + 0x40))
-/* Interrupt status register */
-#define ISTR    ((__IO unsigned *)(RegBase + 0x44))
-/* Frame number register */
-#define FNR     ((__IO unsigned *)(RegBase + 0x48))
-/* Device address register */
-#define DADDR   ((__IO unsigned *)(RegBase + 0x4C))
-/* Buffer Table address register */
-#define BTABLE  ((__IO unsigned *)(RegBase + 0x50))
-
-/* Battery Charging detector register*/
-#define BCDR    (( __IO unsigned *)(RegBase + 0x58))
-  /* LPM Control and Status register */
-#define LPMCSR    (( __IO unsigned *)(RegBase + 0x54))
-
-/******************************************************************************/
-/*                         Endpoint registers                                 */
-/******************************************************************************/
-#define EP0REG  ((__IO unsigned *)(RegBase)) /* endpoint 0 register address */
-
-/* Endpoint Addresses (w/direction) */
-#define EP0_OUT     ((uint8_t)0x00)  
-#define EP0_IN      ((uint8_t)0x80) 
-#define EP1_OUT     ((uint8_t)0x01)  
-#define EP1_IN      ((uint8_t)0x81)  
-#define EP2_OUT     ((uint8_t)0x02)  
-#define EP2_IN      ((uint8_t)0x82)  
-#define EP3_OUT     ((uint8_t)0x03)  
-#define EP3_IN      ((uint8_t)0x83) 
-#define EP4_OUT     ((uint8_t)0x04)  
-#define EP4_IN      ((uint8_t)0x84)
-#define EP5_OUT     ((uint8_t)0x05)  
-#define EP5_IN      ((uint8_t)0x85)
-#define EP6_OUT     ((uint8_t)0x06)  
-#define EP6_IN      ((uint8_t)0x86)
-#define EP7_OUT     ((uint8_t)0x07)  
-#define EP7_IN      ((uint8_t)0x87)
-
-/* endpoints enumeration */
-#define ENDP0       ((uint8_t)0)
-#define ENDP1       ((uint8_t)1)
-#define ENDP2       ((uint8_t)2)
-#define ENDP3       ((uint8_t)3)
-#define ENDP4       ((uint8_t)4)
-#define ENDP5       ((uint8_t)5)
-#define ENDP6       ((uint8_t)6)
-#define ENDP7       ((uint8_t)7)
-
-/******************************************************************************/
-/*                       ISTR interrupt events                                */
-/******************************************************************************/
-#define ISTR_CTR    (0x8000) /* Correct TRansfer (clear-only bit) */
-#define ISTR_DOVR   (0x4000) /* DMA OVeR/underrun (clear-only bit) */
-#define ISTR_ERR    (0x2000) /* ERRor (clear-only bit) */
-#define ISTR_WKUP   (0x1000) /* WaKe UP (clear-only bit) */
-#define ISTR_SUSP   (0x0800) /* SUSPend (clear-only bit) */
-#define ISTR_RESET  (0x0400) /* RESET (clear-only bit) */
-#define ISTR_SOF    (0x0200) /* Start Of Frame (clear-only bit) */
-#define ISTR_ESOF   (0x0100) /* Expected Start Of Frame (clear-only bit) */
-#define ISTR_L1REQ  (0x0080)  /* LPM L1 state request  */
-#define ISTR_DIR    (0x0010)  /* DIRection of transaction (read-only bit)  */
-#define ISTR_EP_ID  (0x000F)  /* EndPoint IDentifier (read-only bit)  */
-
-#define CLR_CTR    (~ISTR_CTR)   /* clear Correct TRansfer bit */
-#define CLR_DOVR   (~ISTR_DOVR)  /* clear DMA OVeR/underrun bit*/
-#define CLR_ERR    (~ISTR_ERR)   /* clear ERRor bit */
-#define CLR_WKUP   (~ISTR_WKUP)  /* clear WaKe UP bit     */
-#define CLR_SUSP   (~ISTR_SUSP)  /* clear SUSPend bit     */
-#define CLR_RESET  (~ISTR_RESET) /* clear RESET bit      */
-#define CLR_SOF    (~ISTR_SOF)   /* clear Start Of Frame bit   */
-#define CLR_ESOF   (~ISTR_ESOF)  /* clear Expected Start Of Frame bit */
-#define CLR_L1REQ  (~ISTR_L1REQ)  /* clear LPM L1  bit */
-
-/******************************************************************************/
-/*             CNTR control register bits definitions                         */
-/******************************************************************************/
-#define CNTR_CTRM   (0x8000) /* Correct TRansfer Mask */
-#define CNTR_DOVRM  (0x4000) /* DMA OVeR/underrun Mask */
-#define CNTR_ERRM   (0x2000) /* ERRor Mask */
-#define CNTR_WKUPM  (0x1000) /* WaKe UP Mask */
-#define CNTR_SUSPM  (0x0800) /* SUSPend Mask */
-#define CNTR_RESETM (0x0400) /* RESET Mask   */
-#define CNTR_SOFM   (0x0200) /* Start Of Frame Mask */
-#define CNTR_ESOFM  (0x0100) /* Expected Start Of Frame Mask */
-#define CNTR_L1REQM (0x0080)    /* LPM L1 state request interrupt mask */
-#define CNTR_L1RESUME (0x0020) /* LPM L1 Resume request */
-#define CNTR_RESUME (0x0010) /* RESUME request */
-#define CNTR_FSUSP  (0x0008) /* Force SUSPend */
-#define CNTR_LPMODE (0x0004) /* Low-power MODE */
-#define CNTR_PDWN   (0x0002) /* Power DoWN */
-#define CNTR_FRES   (0x0001) /* Force USB RESet */
-
-/******************************************************************************/
-/*             BCDR control register bits definitions                         */
-/******************************************************************************/
-#define  BCDR_DPPU      ((uint16_t)0x8000) /* DP Pull-up Enable       */  
-#define  BCDR_PS2DET    ((uint16_t)0x0080) /* PS2 port or proprietary charger detected */  
-#define  BCDR_SDET      ((uint16_t)0x0040) /* Secondary detection (SD) status   */  
-#define  BCDR_PDET      ((uint16_t)0x0020) /* Primary detection (PD) status    */ 
-#define  BCDR_DCDET     ((uint16_t)0x0010) /* Data contact detection (DCD) status  */ 
-#define  BCDR_SDEN      ((uint16_t)0x0008) /* Secondary detection (SD) mode enable */ 
-#define  BCDR_PDEN      ((uint16_t)0x0004) /* Primary detection (PD) mode enable */  
-#define  BCDR_DCDEN     ((uint16_t)0x0002) /* Data contact detection (DCD) mode enable*/
-#define  BCDR_BCDEN     ((uint16_t)0x0001) /* Battery charging detector (BCD) enable  */
-
-/******************************************************************************/
-/*             Bit definition for LPM register                         */
-/******************************************************************************/
-#define  LPMCSR_BESL    ((uint16_t)0x00F0) /* BESL value received with last ACKed LPM Token  */ 
-#define  LPMCSR_REMWAKE ((uint16_t)0x0008) /* bRemoteWake value received with last ACKed LPM Token */ 
-#define  LPMCSR_LPMACK  ((uint16_t)0x0002) /* LPM Token acknowledge enable*/
-#define  LPMCSR_LMPEN   ((uint16_t)0x0001) /* LPM support enable  */
-
-/******************************************************************************/
-/*                FNR Frame Number Register bit definitions                   */
-/******************************************************************************/
-#define FNR_RXDP (0x8000) /* status of D+ data line */
-#define FNR_RXDM (0x4000) /* status of D- data line */
-#define FNR_LCK  (0x2000) /* LoCKed */
-#define FNR_LSOF (0x1800) /* Lost SOF */
-#define FNR_FN  (0x07FF) /* Frame Number */
-/******************************************************************************/
-/*               DADDR Device ADDRess bit definitions                         */
-/******************************************************************************/
-#define DADDR_EF (0x80)
-#define DADDR_ADD (0x7F)
-/******************************************************************************/
-/*                            Endpoint register                               */
-/******************************************************************************/
-/* bit positions */
-#define EP_CTR_RX      (0x8000) /* EndPoint Correct TRansfer RX */
-#define EP_DTOG_RX     (0x4000) /* EndPoint Data TOGGLE RX */
-#define EPRX_STAT      (0x3000) /* EndPoint RX STATus bit field */
-#define EP_SETUP       (0x0800) /* EndPoint SETUP */
-#define EP_T_FIELD     (0x0600) /* EndPoint TYPE */
-#define EP_KIND        (0x0100) /* EndPoint KIND */
-#define EP_CTR_TX      (0x0080) /* EndPoint Correct TRansfer TX */
-#define EP_DTOG_TX     (0x0040) /* EndPoint Data TOGGLE TX */
-#define EPTX_STAT      (0x0030) /* EndPoint TX STATus bit field */
-#define EPADDR_FIELD   (0x000F) /* EndPoint ADDRess FIELD */
-
-/* EndPoint REGister MASK (no toggle fields) */
-#define EPREG_MASK     (EP_CTR_RX|EP_SETUP|EP_T_FIELD|EP_KIND|EP_CTR_TX|EPADDR_FIELD)
-
-/* EP_TYPE[1:0] EndPoint TYPE */
-#define EP_TYPE_MASK   (0x0600) /* EndPoint TYPE Mask */
-#define EP_BULK        (0x0000) /* EndPoint BULK */
-#define EP_CONTROL     (0x0200) /* EndPoint CONTROL */
-#define EP_ISOCHRONOUS (0x0400) /* EndPoint ISOCHRONOUS */
-#define EP_INTERRUPT   (0x0600) /* EndPoint INTERRUPT */
-#define EP_T_MASK      (~EP_T_FIELD & EPREG_MASK)
-
-/* EP_KIND EndPoint KIND */
-#define EPKIND_MASK    (~EP_KIND & EPREG_MASK)
-
-/* STAT_TX[1:0] STATus for TX transfer */
-#define EP_TX_DIS      (0x0000) /* EndPoint TX DISabled */
-#define EP_TX_STALL    (0x0010) /* EndPoint TX STALLed */
-#define EP_TX_NAK      (0x0020) /* EndPoint TX NAKed */
-#define EP_TX_VALID    (0x0030) /* EndPoint TX VALID */
-#define EPTX_DTOG1     (0x0010) /* EndPoint TX Data TOGgle bit1 */
-#define EPTX_DTOG2     (0x0020) /* EndPoint TX Data TOGgle bit2 */
-#define EPTX_DTOGMASK  (EPTX_STAT|EPREG_MASK)
-
-/* STAT_RX[1:0] STATus for RX transfer */
-#define EP_RX_DIS      (0x0000) /* EndPoint RX DISabled */
-#define EP_RX_STALL    (0x1000) /* EndPoint RX STALLed */
-#define EP_RX_NAK      (0x2000) /* EndPoint RX NAKed */
-#define EP_RX_VALID    (0x3000) /* EndPoint RX VALID */
-#define EPRX_DTOG1     (0x1000) /* EndPoint RX Data TOGgle bit1 */
-#define EPRX_DTOG2     (0x2000) /* EndPoint RX Data TOGgle bit1 */
-#define EPRX_DTOGMASK  (EPRX_STAT|EPREG_MASK)
-
-#endif /* __USB_REGS_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_bsp_template.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_bsp_template.c
deleted file mode 100644
index 27d8804..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_bsp_template.c	
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_bsp.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file Provides Device Core configuration Functions
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_bsp.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  USB_BSP_Init
-  *         Initialize BSP configurations
-  * @param  None
-  * @retval None
-  */
-
-void USB_BSP_Init(void)
-{
-
-}
-/**
-  * @brief  USB_BSP_EnableInterrupt
-  *         Enable USB Global interrupt
-  * @param  None
-  * @retval None
-  */
-void USB_BSP_EnableInterrupt(void)
-{
-
-}
-
-/**
-* @brief  Configure CRS peripheral to automatically trim the HSI 
-*         oscillator according to USB SOF
-* @param  None
-* @retval None
-*/
-void CRS_Config(void)
-{
-
-}
-
-/**
-* @brief  Set system clock to HSI48
-* @param  None
-* @param  None
-* @retval None
-*/
-void SetSystemClockHSI48(void)
-{
-
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_core.c
deleted file mode 100644
index 730da80..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_core.c	
+++ /dev/null
@@ -1,712 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the interface functions to USB cell registers
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_core.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief Set the CNTR register value 
-  * @param   wRegValue: new register value
-  * @retval None
-  */
-void SetCNTR(uint16_t wRegValue)
-{
-  _SetCNTR(wRegValue);
-}
-
-/**
-  * @brief returns the CNTR register value 
-  * @param   None
-  * @retval CNTR register Value
-  */
-uint16_t GetCNTR(void)
-{
-  return(_GetCNTR());
-}
-
-/**
-  * @brief Set the ISTR register value 
-  * @param   wRegValue: new register value
-  * @retval None
-  */
-void SetISTR(uint16_t wRegValue)
-{
-  _SetISTR(wRegValue);
-}
-
-/**
-  * @brief Returns the ISTR register value 
-  * @param   None
-  * @retval ISTR register Value
-  */
-uint16_t GetISTR(void)
-{
-  return(_GetISTR());
-}
-
-/**
-  * @brief Returns the FNR register value
-  * @param   None
-  * @retval FNR register Value
-  */
-uint16_t GetFNR(void)
-{
-  return(_GetFNR());
-}
-
-/**
-  * @brief Set the DADDR register value
-  * @param   wRegValue: new register value
-  * @retval None
-  */
-void SetDADDR(uint16_t wRegValue)
-{
-  _SetDADDR(wRegValue);
-}
-
-/**
-  * @brief Set the LPMCSR register value
-  * @param   wRegValue: new register value
-  * @retval None
-  */
-void SetLPMCSR(uint16_t wRegValue)
-{
-  _SetLPMCSR(wRegValue);
-}
-
-
-/**
-  * @brief Returns the LPMCSR register value
-  * @param   None
-  * @retval LPMCSR register Value
-  */
-uint16_t GetLPMCSR(void)
-{
-  return(_GetLPMCSR());
-}
-
-/**
-  * @brief Returns the DADDR register value
-  * @param   None
-  * @retval DADDR register Value
-  */
-uint16_t GetDADDR(void)
-{
-  return(_GetDADDR());
-}
-
-/**
-  * @brief Set the BTABLE.
-  * @param   wRegValue: New register value
-  * @retval None
-  */
-void SetBTABLE(uint16_t wRegValue)
-{
-  _SetBTABLE(wRegValue);
-}
-
-/**
-  * @brief Returns the BTABLE register value.
-  * @param   None
-  * @retval BTABLE address
-  */
-uint16_t GetBTABLE(void)
-{
-  return(_GetBTABLE());
-}
-
-/**
-  * @brief Set the Endpoint register value.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void SetENDPOINT(uint8_t bEpNum, uint16_t wRegValue)
-{
-  _SetENDPOINT(bEpNum, wRegValue);
-}
-
-/**
-  * @brief Return the Endpoint register value.
-  * @param   bEpNum: Endpoint Number
-  * @retval Endpoint register value.
-  */
-uint16_t GetENDPOINT(uint8_t bEpNum)
-{
-  return(_GetENDPOINT(bEpNum));
-}
-
-/**
-  * @brief sets the type in the endpoint register.
-  * @param   bEpNum: Endpoint Number
-  * @param   wType: type definition
-  * @retval None.
-  */
-void SetEPType(uint8_t bEpNum, uint16_t wType)
-{
-  _SetEPType(bEpNum, wType);
-}
-
-/**
-  * @brief Returns the endpoint type.
-  * @param   bEpNum: Endpoint Number
-  * @retval Endpoint Type.
-  */
-uint16_t GetEPType(uint8_t bEpNum)
-{
-  return(_GetEPType(bEpNum));
-}
-
-/**
-  * @brief Set the status of Tx endpoint.
-  * @param   bEpNum: Endpoint Number
-  * @param   wState: new state.
-  * @retval None
-  */
-void SetEPTxStatus(uint8_t bEpNum, uint16_t wState)
-{
-  _SetEPTxStatus(bEpNum, wState);   
-}
-
-/**
-  * @brief Set the status of Rx endpoint.
-  * @param   bEpNum: Endpoint Number
-  * @param   wState: new state.
-  * @retval None
-  */
-void SetEPRxStatus(uint8_t bEpNum, uint16_t wState)
-{
-  _SetEPRxStatus(bEpNum, wState);
-}
-
-/**
-  * @brief sets the status for Double Buffer Endpoint to STALL
-  * @param   bEpNum: Endpoint Number
-  * @param   bDir: Endpoint direction
-  * @retval None
-  */
-void SetDouBleBuffEPStall(uint8_t bEpNum, uint8_t bDir)
-{
-  uint16_t Endpoint_DTOG_Status;
-  Endpoint_DTOG_Status = GetENDPOINT(bEpNum);
-  if (bDir == EP_DBUF_OUT)
-  { /* OUT double buffered endpoint */
-    _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPRX_DTOG1);
-  }
-  else if (bDir == EP_DBUF_IN)
-  { /* IN double buffered endpoint */
-    _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPTX_DTOG1);
-  }
-}
-
-/**
-  * @brief Returns the endpoint Tx status
-  * @param   bEpNum: Endpoint Number
-  * @retval Endpoint TX Status
-  */
-uint16_t GetEPTxStatus(uint8_t bEpNum)
-{
-  return(_GetEPTxStatus(bEpNum));
-}
-
-/**
-  * @brief Returns the endpoint Rx status
-  * @param   bEpNum: Endpoint Number
-  * @retval Endpoint Endpoint RX Status
-  */
-uint16_t GetEPRxStatus(uint8_t bEpNum)
-{
-  return(_GetEPRxStatus(bEpNum));
-}
-
-/**
-  * @brief Valid the endpoint Tx Status.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void SetEPTxValid(uint8_t bEpNum)
-{
-  _SetEPTxStatus(bEpNum, EP_TX_VALID);
-}
-
-/**
-  * @brief Valid the endpoint Rx Status.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void SetEPRxValid(uint8_t bEpNum)
-{
-  _SetEPRxStatus(bEpNum, EP_RX_VALID);
-}
-
-/**
-  * @brief set the  EP_KIND bit.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void SetEP_KIND(uint8_t bEpNum)
-{
-  _SetEP_KIND(bEpNum);
-}
-
-/**
-  * @brief ClearEP_KIND
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void ClearEP_KIND(uint8_t bEpNum)
-{
-  _ClearEP_KIND(bEpNum);
-}
-
-/**
-  * @brief Clear the Status Out of the related Endpoint
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void Clear_Status_Out(uint8_t bEpNum)
-{
-  _ClearEP_KIND(bEpNum);
-}
-
-/**
-  * @brief Set the Status Out of the related Endpoint
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void Set_Status_Out(uint8_t bEpNum)
-{
-  _SetEP_KIND(bEpNum);
-}
-
-/**
-  * @brief Enable the double buffer feature for the endpoint.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void SetEPDoubleBuff(uint8_t bEpNum)
-{
-  _SetEP_KIND(bEpNum);
-}
-
-/**
-  * @brief Disable the double buffer feature for the endpoint
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void ClearEPDoubleBuff(uint8_t bEpNum)
-{
-  _ClearEP_KIND(bEpNum);
-}
-
-/**
-  * @brief Returns the Stall status of the Tx endpoint
-  * @param   bEpNum: Endpoint Number
-  * @retval Tx Stall status
-  */
-uint16_t GetTxStallStatus(uint8_t bEpNum)
-{
-  return(_GetTxStallStatus(bEpNum));
-}
-
-/**
-  * @brief Returns the Stall status of the Rx endpoint
-  * @param   bEpNum: Endpoint Number
-  * @retval Rx Stall status.
-  */
-uint16_t GetRxStallStatus(uint8_t bEpNum)
-{
-  return(_GetRxStallStatus(bEpNum));
-}
-
-/**
-  * @brief Returns the Stall status of the Rx endpoint
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void ClearEP_CTR_RX(uint8_t bEpNum)
-{
-  _ClearEP_CTR_RX(bEpNum);
-}
-
-/**
-  * @brief Clear the CTR_TX bit
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void ClearEP_CTR_TX(uint8_t bEpNum)
-{
-  _ClearEP_CTR_TX(bEpNum);
-}
-
-/**
-  * @brief Toggle the DTOG_RX bit.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void ToggleDTOG_RX(uint8_t bEpNum)
-{
-  _ToggleDTOG_RX(bEpNum);
-}
-
-/**
-  * @brief Toggle the DTOG_TX bit.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void ToggleDTOG_TX(uint8_t bEpNum)
-{
-  _ToggleDTOG_TX(bEpNum);
-}
-
-/**
-  * @brief Clear the DTOG_RX bit.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void ClearDTOG_RX(uint8_t bEpNum)
-{
-  _ClearDTOG_RX(bEpNum);
-}
-
-/**
-  * @brief Clear the DTOG_TX bit.
-  * @param   bEpNum: Endpoint Number
-  * @retval None
-  */
-void ClearDTOG_TX(uint8_t bEpNum)
-{
-  _ClearDTOG_TX(bEpNum);
-}
-
-/**
-  * @brief Set the endpoint address.
-  * @param   bEpNum: Endpoint Number
-  * @param   bAddr: New endpoint address.
-  * @retval None
-  */
-void SetEPAddress(uint8_t bEpNum, uint8_t bAddr)
-{
-  _SetEPAddress(bEpNum, bAddr);
-}
-
-/**
-  * @brief Get the endpoint address.
-  * @param   bEpNum: Endpoint Number
-  * @retval Endpoint address.
-  */
-uint8_t GetEPAddress(uint8_t bEpNum)
-{
-  return(_GetEPAddress(bEpNum));
-}
-
-/**
-  * @brief Set the endpoint Tx buffer address.
-  * @param   bEpNum: Endpoint Number
-  * @param   wAddr: new address.
-  * @retval Endpoint address.
-  */
-void SetEPTxAddr(uint8_t bEpNum, uint16_t wAddr)
-{
-  _SetEPTxAddr(bEpNum, wAddr);
-}
-
-/**
-  * @brief Set the endpoint Rx buffer address.
-  * @param   bEpNum: Endpoint Number
-  * @param   wAddr: new address.
-  * @retval Endpoint address.
-  */
-void SetEPRxAddr(uint8_t bEpNum, uint16_t wAddr)
-{
-  _SetEPRxAddr(bEpNum, wAddr);
-}
-
-/**
-  * @brief Returns the endpoint Tx buffer address.
-  * @param   bEpNum: Endpoint Number
-  * @retval Tx buffer address.
-  */
-uint16_t GetEPTxAddr(uint8_t bEpNum)
-{
-  return(_GetEPTxAddr(bEpNum));
-}
-
-/**
-  * @brief Returns the endpoint Rx buffer address.
-  * @param   bEpNum: Endpoint Number
-  * @retval Rx buffer address.
-  */
-uint16_t GetEPRxAddr(uint8_t bEpNum)
-{
-  return(_GetEPRxAddr(bEpNum));
-}
-
-/**
-  * @brief Set the Tx count.
-  * @param   bEpNum: Endpoint Number
-  * @param   wCount: new count value.
-  * @retval Rx buffer address.
-  */
-void SetEPTxCount(uint8_t bEpNum, uint16_t wCount)
-{
-  _SetEPTxCount(bEpNum, wCount);
-}
-
-/**
-  * @brief Set the Count Rx Register value.
-  * @param   *pdwReg: point to the register.
-  * @param   wCount: the new register value.
-  * @retval None
-  */
-void SetEPCountRxReg(uint16_t *pdwReg, uint16_t wCount)
-{
-  _SetEPCountRxReg(pdwReg, wCount);
-}
-
-/**
-  * @brief Set the Rx count.
-  * @param   bEpNum: Endpoint Number.
-  * @param   wCount: the new register value.
-  * @retval None
-  */
-void SetEPRxCount(uint8_t bEpNum, uint16_t wCount)
-{
-  _SetEPRxCount(bEpNum, wCount);
-}
-
-/**
-  * @brief Get the Tx count.
-  * @param   bEpNum: Endpoint Number.
-  * @retval Tx count value.
-  */
-uint16_t GetEPTxCount(uint8_t bEpNum)
-{
-  return(_GetEPTxCount(bEpNum));
-}
-
-/**
-  * @brief Get the Rx count.
-  * @param   bEpNum: Endpoint Number.
-  * @retval Rx count value.
-  */
-uint16_t GetEPRxCount(uint8_t bEpNum)
-{
-  return(_GetEPRxCount(bEpNum));
-}
-
-/**
-  * @brief Set the addresses of the buffer 0 and 1.
-  * @param   bEpNum: Endpoint Number.
-  * @param   wBuf0Addr: new address of buffer 0.
-  * @param   wBuf1Addr: new address of buffer 1.
-  * @retval None
-  */
-void SetEPDblBuffAddr(uint8_t bEpNum, uint16_t wBuf0Addr, uint16_t wBuf1Addr)
-{
-  _SetEPDblBuffAddr(bEpNum, wBuf0Addr, wBuf1Addr);
-}
-
-/**
-  * @brief Set the Buffer 1 address.
-  * @param   bEpNum: Endpoint Number.
-  * @param   wBuf0Addr: new address.
-  * @retval None
-  */
-void SetEPDblBuf0Addr(uint8_t bEpNum, uint16_t wBuf0Addr)
-{
-  _SetEPDblBuf0Addr(bEpNum, wBuf0Addr);
-}
-
-/**
-  * @brief Set the Buffer 1 address.
-  * @param   bEpNum: Endpoint Number.
-  * @param   wBuf1Addr: new address.
-  * @retval None
-  */
-void SetEPDblBuf1Addr(uint8_t bEpNum, uint16_t wBuf1Addr)
-{
-  _SetEPDblBuf1Addr(bEpNum, wBuf1Addr);
-}
-
-/**
-  * @brief Returns the address of the Buffer 0.
-  * @param   bEpNum: Endpoint Number.
-  * @retval None
-  */
-uint16_t GetEPDblBuf0Addr(uint8_t bEpNum)
-{
-  return(_GetEPDblBuf0Addr(bEpNum));
-}
-
-/**
-  * @brief Returns the address of the Buffer 1.
-  * @param   bEpNum: Endpoint Number.
-  * @retval Address of the Buffer 1.
-  */
-uint16_t GetEPDblBuf1Addr(uint8_t bEpNum)
-{
-  return(_GetEPDblBuf1Addr(bEpNum));
-}
-
-/**
-  * @brief Set the number of bytes for a double Buffer
-  * @param   bEpNum,bDir, wCount
-  * @retval Address of the Buffer 1.
-  */
-void SetEPDblBuffCount(uint8_t bEpNum, uint8_t bDir, uint16_t wCount)
-{
-  _SetEPDblBuffCount(bEpNum, bDir, wCount);
-}
-
-/**
-  * @brief Set the number of bytes in the buffer 0 of a double Buffer endpoint.
-  * @param   bEpNum,bDir, wCount
-  * @retval None
-  */
-void SetEPDblBuf0Count(uint8_t bEpNum, uint8_t bDir, uint16_t wCount)
-{
-  _SetEPDblBuf0Count(bEpNum, bDir, wCount);
-}
-
-/**
-  * @brief Set the number of bytes in the buffer 0 of a double Buffer
-  * @param   bEpNum,bDir, wCount
-  * @retval None
-  */
-void SetEPDblBuf1Count(uint8_t bEpNum, uint8_t bDir, uint16_t wCount)
-{
-  _SetEPDblBuf1Count(bEpNum, bDir, wCount);
-}
-
-/**
-  * @brief Returns the number of byte received in the buffer 0 of a double 
-  *         Buffer endpoint.
-  * @param   bEpNum: Endpoint Number.
-  * @retval Endpoint Buffer 0 count
-  */
-uint16_t GetEPDblBuf0Count(uint8_t bEpNum)
-{
-  return(_GetEPDblBuf0Count(bEpNum));
-}
-
-/**
-  * @brief Returns the number of data received in the buffer 1 of a double
-  * @param   bEpNum: Endpoint Number.
-  * @retval Endpoint Buffer 1 count
-  */
-uint16_t GetEPDblBuf1Count(uint8_t bEpNum)
-{
-  return(_GetEPDblBuf1Count(bEpNum));
-}
-
-/**
-  * @brief gets direction of the double buffered endpoint
-  * @param   bEpNum: Endpoint Number.
-  * @retval EP_DBUF_OUT, EP_DBUF_IN,
-  *         EP_DBUF_ERR if the endpoint counter not yet programmed.
-  */
-EP_DBUF_DIR GetEPDblBufDir(uint8_t bEpNum)
-{
-  if ((uint16_t)(*_pEPRxCount(bEpNum) & 0xFC00) != 0)
-    return(EP_DBUF_OUT);
-  else if (((uint16_t)(*_pEPTxCount(bEpNum)) & 0x03FF) != 0)
-    return(EP_DBUF_IN);
-  else
-    return(EP_DBUF_ERR);
-}
-
-/**
-  * @brief free buffer used from the application realizing it to the line
-          toggles bit SW_BUF in the double buffered endpoint register
-  * @param   bEpNum, bDir
-  * @retval None
-  */
-void FreeUserBuffer(uint8_t bEpNum, uint8_t bDir)
-{
-  if (bDir == EP_DBUF_OUT)
-  { /* OUT double buffered endpoint */
-    _ToggleDTOG_TX(bEpNum);
-  }
-  else if (bDir == EP_DBUF_IN)
-  { /* IN double buffered endpoint */
-    _ToggleDTOG_RX(bEpNum);
-  }
-}
-
-/**
-  * @brief Copy a buffer from user memory area to packet memory area (PMA)
-  * @param   pbUsrBuf: pointer to user memory area.
-  * @param   wPMABufAddr: address into PMA.
-  * @param   wNBytes: no. of bytes to be copied.
-  * @retval None
-  */
-void UserToPMABufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes)
-{
-  uint32_t n = (wNBytes + 1) >> 1; 
-  uint32_t i;
-  uint16_t temp1, temp2;
-  uint16_t *pdwVal;
-  pdwVal = (uint16_t *)(wPMABufAddr + PMAAddr);
-  
-  for (i = n; i != 0; i--)
-  {
-    temp1 = (uint16_t) * pbUsrBuf;
-    pbUsrBuf++;
-    temp2 = temp1 | (uint16_t) * pbUsrBuf << 8;
-    *pdwVal++ = temp2;
-    pbUsrBuf++;
-  }
-}
-
-/**
-  * @brief Copy a buffer from user memory area to packet memory area (PMA)
-  * @param   pbUsrBuf    = pointer to user memory area.
-  * @param   wPMABufAddr: address into PMA.
-  * @param   wNBytes: no. of bytes to be copied.
-  * @retval None
-  */
-void PMAToUserBufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes)
-{
-  uint32_t n = (wNBytes + 1) >> 1;
-  uint32_t i;
-  uint16_t *pdwVal;
-  pdwVal = (uint16_t *)(wPMABufAddr + PMAAddr);
-  for (i = n; i != 0; i--)
-  {
-    *(uint16_t*)pbUsrBuf++ = *pdwVal++;
-    pbUsrBuf++;
-  }
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_dcd.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_dcd.c
deleted file mode 100644
index 0544cbf..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_dcd.c	
+++ /dev/null
@@ -1,648 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_dcd.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Device interface layer used by the library to access the core.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_dcd.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-uint32_t wInterrupt_Mask=0;
-
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief Device Initialization
-  * @param  pdev: device instance
-  * @retval : None
-  */
-void DCD_Init(USB_CORE_HANDLE *pdev)
-{
-  /*Device is in Default State*/
-  pdev->dev.device_status = USB_DEFAULT;
-  pdev->dev.device_address = 0;
-  pdev->dev.DevRemoteWakeup = 0;
-  
-  pdev->dev.speed = USB_SPEED_FULL; /*kept for API compatibility reason*/
-  
-  /*CNTR_FRES = 1*/
-  SetCNTR(CNTR_FRES);
-  
-  /*CNTR_FRES = 0*/
-  SetCNTR(0);
-  
-  /*Clear pending interrupts*/
-  SetISTR(0);
-  
-  /*Set Btable Address*/
-  SetBTABLE(BTABLE_ADDRESS);
-  
-  /*set wInterrupt_Mask global variable*/
-  wInterrupt_Mask = CNTR_CTRM  | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM  | CNTR_SOFM \
-    | CNTR_ESOFM | CNTR_RESETM;
-  
-#ifdef LPM_ENABLED
-  /* enable L1REQ interrupt */
-  wInterrupt_Mask |= CNTR_L1REQM;
-  
-  /* Enable LPM support and enable ACK answer to LPM request*/
-  _SetLPMCSR(LPMCSR_LMPEN | LPMCSR_LPMACK);
-#endif
- 
-  /*Set interrupt mask*/
-  SetCNTR(wInterrupt_Mask); 
-}
-
-
-/**
-  * @brief Stop device
-  * @param  pdev: device instance
-  * @retval : None
-  */
-void DCD_StopDevice(USB_CORE_HANDLE *pdev)
-{
-    /* disable all interrupts and force USB reset */
-  _SetCNTR(CNTR_FRES);
-  
-  /* clear interrupt status register */
-  _SetISTR(0);
-  
-  /* switch-off device */
-  _SetCNTR(CNTR_FRES + CNTR_PDWN);
-  
-  /*Device is in default state*/
-  pdev->dev.device_status  = USB_DEFAULT;
-  
-}
-
-/**
-  * @brief Configure PMA for EP
-  * @param  pdev : Device instance
-  * @param  ep_addr: endpoint address
-  * @param  ep_Kind: endpoint Kind
-  *                @arg USB_SNG_BUF: Single Buffer used
-  *                @arg USB_DBL_BUF: Double Buffer used
-  * @param  pmaadress: EP address in The PMA: In case of single buffer endpoint
-  *                   this parameter is 16-bit value providing the address
-  *                   in PMA allocated to endpoint.
-  *                   In case of double buffer endpoint this parameter
-  *                   is a 32-bit value providing the endpoint buffer 0 address
-  *                   in the LSB part of 32-bit value and endpoint buffer 1 address
-  *                   in the MSB part of 32-bit value.
-  * @retval : status
-  */
-
-uint32_t DCD_PMA_Config(USB_CORE_HANDLE *pdev , 
-                        uint16_t ep_addr,
-                        uint16_t ep_kind,
-                        uint32_t pmaadress)
-
-{
-  USB_EP *ep;
-  /* initialize ep structure*/
-  if ((ep_addr & 0x80) == 0x80)
-  {
-    ep = &pdev->dev.in_ep[ep_addr & 0x7F];
-  }
-  else
-  {
-    ep = &pdev->dev.out_ep[ep_addr & 0x7F];
-  }
-  
-  /* Here we check if the endpoint is single or double Buffer*/
-  if (ep_kind == USB_SNG_BUF)
-  {
-    /*Single Buffer*/
-    ep->doublebuffer = 0;
-    /*Configure te PMA*/
-    ep->pmaadress = (uint16_t)pmaadress;
-  }
-  else /*USB_DBL_BUF*/
-  {
-    /*Double Buffer Endpoint*/
-    ep->doublebuffer = 1;
-    /*Configure the PMA*/
-    ep->pmaaddr0 =  pmaadress & 0xFFFF;
-    ep->pmaaddr1 =  (pmaadress & 0xFFFF0000) >> 16;
-  }
-  
-  return USB_OK; 
-}
-
-/**
-  * @brief Configure an EP
-  * @param  pdev : Device instance
-  * @param  ep_addr: endpoint address
-  * @param  ep_mps: endpoint max packet size
-  * @param  ep_type: endpoint Type
-  */
-uint32_t DCD_EP_Open(USB_CORE_HANDLE *pdev , 
-                     uint16_t ep_addr,
-                     uint16_t ep_mps,
-                     uint8_t ep_type)
-{
-  
-  USB_EP *ep;
-  
-  /* initialize ep structure*/
-  if ((ep_addr & 0x80) == 0x80)
-  {
-    ep = &pdev->dev.in_ep[ep_addr & 0x7F];
-    ep->is_in = 1;
-  }
-  else
-  {
-    ep = &pdev->dev.out_ep[ep_addr & 0x7F];
-    ep->is_in = 0;
-  }
-  
-  ep->maxpacket = ep_mps;
-  ep->type = ep_type;
-  ep->num   = ep_addr & 0x7F;
-  
-  if (ep->num == 0)
-  {
-    /* Initialize the control transfer variables*/ 
-    ep->ctl_data_len =0;
-    ep->rem_data_len = 0;
-    ep->total_data_len = 0;
-  }
-  
-  /* Initialize the transaction level variables */
-  ep->xfer_buff = 0;
-  ep->xfer_len = 0;
-  ep->xfer_count = 0;
-  ep->is_stall = 0;
-  
-  /* initialize HW */
-  switch (ep->type)
-  {
-  case USB_EP_CONTROL:
-    SetEPType(ep->num, EP_CONTROL);
-    break;
-  case USB_EP_BULK:
-    SetEPType(ep->num, EP_BULK);
-    break;
-  case USB_EP_INT:
-    SetEPType(ep->num, EP_INTERRUPT);
-    break;
-  case USB_EP_ISOC:
-    SetEPType(ep->num, EP_ISOCHRONOUS);
-    break;
-  } 
-  
-  if (ep->doublebuffer == 0) 
-  {
-    if (ep->is_in)
-    {
-      /*Set the endpoint Transmit buffer address */
-      SetEPTxAddr(ep->num, ep->pmaadress);
-      ClearDTOG_TX(ep->num);
-      /* Configure NAK status for the Endpoint*/
-      SetEPTxStatus(ep->num, EP_TX_NAK); 
-    }
-    else
-    {
-      /*Set the endpoint Receive buffer address */
-      SetEPRxAddr(ep->num, ep->pmaadress);
-      /*Set the endpoint Receive buffer counter*/
-      SetEPRxCount(ep->num, ep->maxpacket);
-      ClearDTOG_RX(ep->num);
-      /* Configure VALID status for the Endpoint*/
-      SetEPRxStatus(ep->num, EP_RX_VALID);
-    }
-  }
-  /*Double Buffer*/
-  else
-  {
-    /*Set the endpoint as double buffered*/
-    SetEPDoubleBuff(ep->num);
-    /*Set buffer address for double buffered mode*/
-    SetEPDblBuffAddr(ep->num,ep->pmaaddr0, ep->pmaaddr1);
-    
-    if (ep->is_in==0)
-    {
-      /* Clear the data toggle bits for the endpoint IN/OUT*/
-      ClearDTOG_RX(ep->num);
-      ClearDTOG_TX(ep->num);
-      
-      /* Reset value of the data toggle bits for the endpoint out*/
-      ToggleDTOG_TX(ep->num);
-      
-      SetEPRxStatus(ep->num, EP_RX_VALID);
-      SetEPTxStatus(ep->num, EP_TX_DIS);
-    }
-    else
-    {
-      /* Clear the data toggle bits for the endpoint IN/OUT*/
-      ClearDTOG_RX(ep->num);
-      ClearDTOG_TX(ep->num);
-      ToggleDTOG_RX(ep->num);
-      /* Configure DISABLE status for the Endpoint*/
-      SetEPTxStatus(ep->num, EP_TX_DIS);
-      SetEPRxStatus(ep->num, EP_RX_DIS);
-    }
-  } 
-  return USB_OK; 
-}
-/**
-  * @brief called when an EP is disabled
-  * @param  pdev: device instance
-  * @param  ep_addr: endpoint address
-  * @retval : status
-  */
-uint32_t DCD_EP_Close(USB_CORE_HANDLE *pdev , uint8_t  ep_addr)
-{
-  USB_EP *ep;
-  
-  if ((ep_addr&0x80) == 0x80)
-  {
-    ep = &pdev->dev.in_ep[ep_addr & 0x7F];
-  }
-  else
-  {
-    ep = &pdev->dev.out_ep[ep_addr & 0x7F];
-  }
-  
-  if (ep->doublebuffer == 0) 
-  {
-    if (ep->is_in)
-    {
-      ClearDTOG_TX(ep->num);
-      /* Configure DISABLE status for the Endpoint*/
-      SetEPTxStatus(ep->num, EP_TX_DIS); 
-    }
-    else
-    {
-      ClearDTOG_RX(ep->num);
-      /* Configure DISABLE status for the Endpoint*/
-      SetEPRxStatus(ep->num, EP_RX_DIS);
-    }
-  }
-  /*Double Buffer*/
-  else
-  { 
-    if (ep->is_in==0)
-    {
-      /* Clear the data toggle bits for the endpoint IN/OUT*/
-      ClearDTOG_RX(ep->num);
-      ClearDTOG_TX(ep->num);
-      
-      /* Reset value of the data toggle bits for the endpoint out*/
-      ToggleDTOG_TX(ep->num);
-      
-      SetEPRxStatus(ep->num, EP_RX_DIS);
-      SetEPTxStatus(ep->num, EP_TX_DIS);
-    }
-    else
-    {
-      /* Clear the data toggle bits for the endpoint IN/OUT*/
-      ClearDTOG_RX(ep->num);
-      ClearDTOG_TX(ep->num);
-      ToggleDTOG_RX(ep->num);
-      /* Configure DISABLE status for the Endpoint*/
-      SetEPTxStatus(ep->num, EP_TX_DIS);
-      SetEPRxStatus(ep->num, EP_RX_DIS);
-    }
-  } 
-  return USB_OK;
-}
-
-
-/**
-  * @brief DCD_EP_PrepareRx
-  * @param  pdev: device instance
-  * @param  ep_addr: endpoint address
-  * @param  pbuf: pointer to Rx buffer
-  * @param  buf_len: data length
-  * @retval : status
-  */
-uint32_t DCD_EP_PrepareRx( USB_CORE_HANDLE *pdev,
-                          uint8_t   ep_addr,
-                          uint8_t *pbuf,                        
-                          uint16_t  buf_len)
-{
-  __IO uint32_t len = 0; 
-  USB_EP *ep;
-  
-  ep = &pdev->dev.out_ep[ep_addr & 0x7F];
-  
-  /*setup and start the Xfer */
-  ep->xfer_buff = pbuf;  
-  ep->xfer_len = buf_len;
-  ep->xfer_count = 0; 
-  
-  /*Multi packet transfer*/
-  if (ep->xfer_len > ep->maxpacket)
-  {
-    len=ep->maxpacket;
-    ep->xfer_len-=len; 
-  }
-  else
-  {
-    len=ep->xfer_len;
-    ep->xfer_len =0;
-  }
-  
-  /* configure and validate Rx endpoint */
-  if (ep->doublebuffer == 0) 
-  {
-    /*Set RX buffer count*/
-    SetEPRxCount(ep->num, len);
-  }
-  else
-  {
-    /*Set the Double buffer counter*/
-    SetEPDblBuffCount(ep->num, ep->is_in, len);
-  } 
-  
-  SetEPRxStatus(ep->num, EP_RX_VALID);
-  
-  return USB_OK;
-}
-
-/**
-  * @brief Transmit data Buffer
-  * @param  pdev: device instance
-  * @param  ep_addr: endpoint address
-  * @param  pbuf: pointer to Tx buffer
-  * @param  buf_len: data length
-  * @retval : status
-  */
-uint32_t  DCD_EP_Tx ( USB_CORE_HANDLE *pdev,
-                     uint8_t   ep_addr,
-                     uint8_t   *pbuf,
-                     uint32_t   buf_len)
-{
-  __IO uint32_t len = 0; 
-  USB_EP *ep;
-  
-  ep = &pdev->dev.in_ep[ep_addr & 0x7F];
-  
-  /*setup and start the Xfer */
-  ep->num = ep_addr & 0x7F; 
-  ep->xfer_buff = pbuf;  
-  ep->xfer_len = buf_len;
-  ep->xfer_count = 0; 
-  
-  /*Multi packet transfer*/
-  if (ep->xfer_len > ep->maxpacket)
-  {
-    len=ep->maxpacket;
-    ep->xfer_len-=len; 
-  }
-  else
-  {
-    len=ep->xfer_len;
-    ep->xfer_len =0;
-  }
-  
-  /* configure and validate Tx endpoint */
-  if (ep->doublebuffer == 0) 
-  {
-    UserToPMABufferCopy(ep->xfer_buff, ep->pmaadress, len);
-    SetEPTxCount(ep->num, len);
-  }
-  else
-  {
-    uint16_t pmabuffer=0;
-    /*Set the Double buffer counter*/
-    SetEPDblBuffCount(ep->num, ep->is_in, len);
-    
-    /*Write the data to the USB endpoint*/
-    if (GetENDPOINT(ep->num)&EP_DTOG_TX)
-    {
-      pmabuffer = ep->pmaaddr1;
-    }
-    else
-    {
-      pmabuffer = ep->pmaaddr0;
-    }
-    UserToPMABufferCopy(ep->xfer_buff, pmabuffer, len);
-    FreeUserBuffer(ep->num, ep->is_in);
-  }
-  
-  SetEPTxStatus(ep->num, EP_TX_VALID);
-  
-  return USB_OK; 
-}
-
-
-/**
-  * @brief Stall an endpoint.
-  * @param  pdev: device instance
-  * @param  epnum: endpoint address
-  * @retval : status
-  */
-uint32_t  DCD_EP_Stall (USB_CORE_HANDLE *pdev, uint8_t   epnum)
-{
-  USB_EP *ep;
-  if ((0x80 & epnum) == 0x80)
-  {
-    ep = &pdev->dev.in_ep[epnum & 0x7F];    
-  }
-  else
-  {
-    ep = &pdev->dev.out_ep[epnum];
-  }
-  
-  if (ep->num ==0)
-  {
-    /* This macro sets STALL status for RX & TX*/ 
-    _SetEPRxTxStatus(ep->num,EP_RX_STALL,EP_TX_STALL); 
-    /*Endpoint is stalled */
-    ep->is_stall = 1;
-    return USB_OK;
-  }
-  if (ep->is_in)
-  {  
-    /* IN endpoint */
-    ep->is_stall = 1;
-    /* IN Endpoint stalled */
-   SetEPTxStatus(ep->num , EP_TX_STALL); 
-  }
-  else
-  { 
-    ep->is_stall = 1;
-    /* OUT Endpoint stalled */
-    SetEPRxStatus(ep->num , EP_RX_STALL);
-  }
-  
-  return USB_OK;
-}
-
-
-/**
-  * @brief Clear stall condition on endpoints.
-  * @param  pdev: device instance
-  * @param  epnum: endpoint address
-  * @retval : status
-  */
-uint32_t  DCD_EP_ClrStall (USB_CORE_HANDLE *pdev, uint8_t epnum)
-{
-  USB_EP *ep;
-  if ((0x80 & epnum) == 0x80)
-  {
-    ep = &pdev->dev.in_ep[epnum & 0x7F];    
-  }
-  else
-  {
-    ep = &pdev->dev.out_ep[epnum];
-  } 
-  
-  if (ep->is_in)
-  {
-    ClearDTOG_TX(ep->num);
-    SetEPTxStatus(ep->num, EP_TX_VALID);
-    ep->is_stall = 0;  
-  }
-  else
-  {
-    ClearDTOG_RX(ep->num);
-    SetEPRxStatus(ep->num, EP_RX_VALID);
-    ep->is_stall = 0;  
-  }
-  
-  return USB_OK;
-}
-
-/**
-  * @brief This Function set USB device address
-  * @param  pdev: device instance
-  * @param  address: new device address
-  */
-void  DCD_EP_SetAddress (USB_CORE_HANDLE *pdev, uint8_t address)
-{
-  uint32_t i=0;
-  pdev->dev.device_address = address;
-  
-  /* set address in every used endpoint */
-  for (i = 0; i < EP_NUM; i++)
-  {
-    _SetEPAddress((uint8_t)i, (uint8_t)i);
-  } /* set device address and enable function */
-  _SetDADDR(address | DADDR_EF); 
-}
-
-/**
-  * @brief Connect device (enable internal pull-up)
-  * @param  pdev: device instance
-  * @retval : None
-  */
-void  DCD_DevConnect (USB_CORE_HANDLE *pdev)
-{
-  /* Enabling DP Pull-Down bit to Connect internal pull-up on USB DP line */
-  *BCDR|=BCDR_DPPU;
-  /*Device is in default state*/
-  pdev->dev.device_status  = USB_DEFAULT;
-}
-
-/**
-  * @brief Disconnect device (disable internal pull-up)
-  * @param  pdev: device instance
-  * @retval : None
-  */
-void  DCD_DevDisconnect (USB_CORE_HANDLE *pdev)
-{
- 
-  /* Disable DP Pull-Down bit*/
-  *BCDR&=~BCDR_DPPU;
-  
-  /*Device is in unconnected state*/
-  pdev->dev.device_status  = USB_UNCONNECTED;
-}
-
-/**
-  * @brief returns the EP Status
-  * @param   pdev : Selected device
-  *         epnum : endpoint address
-  * @retval : EP status
-  */
-
-uint32_t DCD_GetEPStatus(USB_CORE_HANDLE *pdev ,uint8_t epnum)
-{
-  uint16_t Status=0; 
-  
-  USB_EP *ep;
-  if ((0x80 & epnum) == 0x80)
-  {
-    ep = &pdev->dev.in_ep[epnum & 0x7F];    
-  }
-  else
-  {
-    ep = &pdev->dev.out_ep[epnum];
-  } 
-  
-  if (ep->is_in)
-  {
-    Status = GetEPTxStatus(ep->num);
-  }
-  else
-  {
-    Status = GetEPRxStatus(ep->num);
-  }
-  
-  return Status; 
-}
-
-/**
-  * @brief Set the EP Status
-  * @param   pdev : Selected device
-  *         Status : new Status
-  *         epnum : EP address
-  * @retval : None
-  */
-void DCD_SetEPStatus (USB_CORE_HANDLE *pdev , uint8_t epnum , uint32_t Status)
-{
-  USB_EP *ep;
-  if ((0x80 & epnum) == 0x80)
-  {
-    ep = &pdev->dev.in_ep[epnum & 0x7F];    
-  }
-  else
-  {
-    ep = &pdev->dev.out_ep[epnum];
-  } 
-  
-  if (ep->is_in)
-  {
-    SetEPTxStatus(ep->num, (uint16_t)Status);
-  }
-  else
-  {
-    SetEPRxStatus(ep->num, (uint16_t)Status);
-  }
-    
-  if ((Status == EP_RX_STALL) || (Status == EP_TX_STALL))
-  {
-    ep->is_stall =1;
-  }
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_dcd_int.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_dcd_int.c
deleted file mode 100644
index 6ad48c7..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Driver/src/usb_dcd_int.c	
+++ /dev/null
@@ -1,369 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_dcd_int.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the interrupt subroutines for the Device
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_dcd_int.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-extern USB_CORE_HANDLE  USB_Device_dev;
-extern uint32_t wInterrupt_Mask;
-#ifdef LPM_ENABLED
-__IO uint32_t  L1_remote_wakeup =0;
-__IO uint32_t BESL = 0;
-#endif
-
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  Correct Transfer interrupt's service
-  * @param  None
-  * @retval None
-  */
-void CTR(void)
-{
-  USB_EP *ep;
-  uint16_t count=0;
-  uint8_t EPindex;
-  __IO uint16_t wIstr;  
-  __IO uint16_t wEPVal = 0;
-  /* stay in loop while pending interrupts */
-  while (((wIstr = _GetISTR()) & ISTR_CTR) != 0)
-  {
-    /* extract highest priority endpoint number */
-    EPindex = (uint8_t)(wIstr & ISTR_EP_ID);
-    
-    if (EPindex == 0)
-    {
-      /* Decode and service control endpoint interrupt */
-      
-      /* DIR bit = origin of the interrupt */   
-      if ((wIstr & ISTR_DIR) == 0)
-      {
-        /* DIR = 0 */
-        
-        /* DIR = 0      => IN  int */
-        /* DIR = 0 implies that (EP_CTR_TX = 1) always  */
-        _ClearEP_CTR_TX(ENDP0);
-        ep = &((&USB_Device_dev)->dev.in_ep[0]);
-        
-        ep->xfer_count = GetEPTxCount(ep->num);
-        ep->xfer_buff += ep->xfer_count;
- 
-        /* TX COMPLETE */
-        USBD_DCD_INT_fops->DataInStage(&USB_Device_dev, 0x00);
-      }
-      else
-      {
-        /* DIR = 1 */
-        
-        /* DIR = 1 & CTR_RX       => SETUP or OUT int */
-        /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */
-        ep = &((&USB_Device_dev)->dev.out_ep[0]);
-        wEPVal = _GetENDPOINT(ENDP0);
-        
-        if ((wEPVal &EP_SETUP) != 0)
-        {
-          /* Get SETUP Packet*/
-          ep->xfer_count = GetEPRxCount(ep->num);
-          PMAToUserBufferCopy(&((&USB_Device_dev)->dev.setup_packet[0]),ep->pmaadress , ep->xfer_count);       
-          /* SETUP bit kept frozen while CTR_RX = 1*/ 
-          _ClearEP_CTR_RX(ENDP0); 
-          
-          /* Process SETUP Packet*/
-          USBD_DCD_INT_fops->SetupStage(&USB_Device_dev);
-        }
-        
-        else if ((wEPVal & EP_CTR_RX) != 0)
-        {
-          _ClearEP_CTR_RX(ENDP0);
-          /* Get Control Data OUT Packet*/
-          ep->xfer_count = GetEPRxCount(ep->num);
-          
-          if (ep->xfer_count != 0)
-          {
-            PMAToUserBufferCopy(ep->xfer_buff, ep->pmaadress, ep->xfer_count);
-            ep->xfer_buff+=ep->xfer_count;
-          }
-          
-          /* Process Control Data OUT Packet*/
-          USBD_DCD_INT_fops->DataOutStage(&USB_Device_dev, 0x00);
-          
-          _SetEPRxCount(ENDP0, ep->maxpacket);
-          _SetEPRxStatus(ENDP0,EP_RX_VALID);
-        }
-      }
-    }/* if(EPindex == 0) */
-    else
-    {
-      
-      /* Decode and service non control endpoints interrupt  */
-      
-      /* process related endpoint register */
-      wEPVal = _GetENDPOINT(EPindex);
-      if ((wEPVal & EP_CTR_RX) != 0)
-      {  
-        /* clear int flag */
-        _ClearEP_CTR_RX(EPindex);
-        ep = &((&USB_Device_dev)->dev.out_ep[EPindex]);
-        
-        /* OUT double Buffering*/
-        if (ep->doublebuffer == 0)
-        {
-          count = GetEPRxCount(ep->num);
-          if (count != 0)
-          {
-            PMAToUserBufferCopy(ep->xfer_buff, ep->pmaadress, count);
-          }
-        }
-        else
-        {
-          if (GetENDPOINT(ep->num) & EP_DTOG_RX)
-          {
-            /*read from endpoint BUF0Addr buffer*/
-            count = GetEPDblBuf0Count(ep->num);
-            if (count != 0)
-            {
-              PMAToUserBufferCopy(ep->xfer_buff, ep->pmaaddr0, count);
-            }
-          }
-          else
-          {
-            /*read from endpoint BUF1Addr buffer*/
-            count = GetEPDblBuf1Count(ep->num);
-            if (count != 0)
-            {
-              PMAToUserBufferCopy(ep->xfer_buff, ep->pmaaddr1, count);
-            }
-          }
-          FreeUserBuffer(ep->num, EP_DBUF_OUT);  
-        }
-        /*multi-packet on the NON control OUT endpoint*/
-        ep->xfer_count+=count;
-        ep->xfer_buff+=count;
-       
-        if ((ep->xfer_len == 0) || (count < ep->maxpacket))
-        {
-          /* RX COMPLETE */
-          USBD_DCD_INT_fops->DataOutStage(&USB_Device_dev, ep->num);
-        }
-        else
-        {
-          DCD_EP_PrepareRx (&USB_Device_dev,ep->num, ep->xfer_buff, ep->xfer_len);
-        }
-        
-      } /* if((wEPVal & EP_CTR_RX) */
-      
-      if ((wEPVal & EP_CTR_TX) != 0)
-      {
-        ep = &((&USB_Device_dev)->dev.in_ep[EPindex]);
-        
-        /* clear int flag */
-        _ClearEP_CTR_TX(EPindex);
-        
-        /* IN double Buffering*/
-        if (ep->doublebuffer == 0)
-        {
-          ep->xfer_count = GetEPTxCount(ep->num);
-          if (ep->xfer_count != 0)
-          {
-            UserToPMABufferCopy(ep->xfer_buff, ep->pmaadress, ep->xfer_count);
-          }
-        }
-        else
-        {
-          if (GetENDPOINT(ep->num) & EP_DTOG_TX)
-          {
-            /*read from endpoint BUF0Addr buffer*/
-            ep->xfer_count = GetEPDblBuf0Count(ep->num);
-            if (ep->xfer_count != 0)
-            {
-              UserToPMABufferCopy(ep->xfer_buff, ep->pmaaddr0, ep->xfer_count);
-            }
-          }
-          else
-          {
-            /*read from endpoint BUF1Addr buffer*/
-            ep->xfer_count = GetEPDblBuf1Count(ep->num);
-            if (ep->xfer_count != 0)
-            {
-              UserToPMABufferCopy(ep->xfer_buff, ep->pmaaddr1, ep->xfer_count);
-            }
-          }
-          FreeUserBuffer(ep->num, EP_DBUF_IN);  
-        }
-        /*multi-packet on the NON control IN endpoint*/
-        ep->xfer_count =GetEPTxCount(ep->num);
-        ep->xfer_buff+=ep->xfer_count;
-       
-        /* Zero Length Packet? */
-        if (ep->xfer_len == 0)
-        {
-          /* TX COMPLETE */
-          USBD_DCD_INT_fops->DataInStage(&USB_Device_dev, ep->num);
-        }
-        else
-        {
-          DCD_EP_Tx  (&USB_Device_dev,ep->num, ep->xfer_buff, ep->xfer_len);
-        }
-        
-      } /* if((wEPVal & EP_CTR_TX) != 0) */
-      
-    }/* if(EPindex == 0) else */
-    
-  }/* while(...) */
-}
-
-/**
-  * @brief ISTR events interrupt service routine
-  * @param  None
-  * @retval None
-  */
-void USB_Istr(void)
-{
-  __IO uint16_t wIstr = 0; 
-  
-  wIstr = _GetISTR();
-  
-#if (IMR_MSK & ISTR_CTR)
-  if (wIstr & ISTR_CTR & wInterrupt_Mask)
-  {
-    /* servicing of the endpoint correct transfer interrupt */
-    /* clear of the CTR flag into the sub */
-    CTR();
-  }
-#endif  
-  /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
-#if (IMR_MSK & ISTR_RESET)
-  if (wIstr & ISTR_RESET & wInterrupt_Mask)
-  {
-    _SetISTR((uint16_t)CLR_RESET);
-    USBD_DCD_INT_fops->Reset(&USB_Device_dev);
-    DCD_EP_SetAddress(&USB_Device_dev, 0);
-  }
-#endif
-  /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
-#if (IMR_MSK & ISTR_DOVR)
-  if (wIstr & ISTR_DOVR & wInterrupt_Mask)
-  {
-    _SetISTR((uint16_t)CLR_DOVR);
-  }
-#endif
-  /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
-#if (IMR_MSK & ISTR_ERR)
-  if (wIstr & ISTR_ERR & wInterrupt_Mask)
-  {
-    _SetISTR((uint16_t)CLR_ERR);
-  }
-#endif
-  /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
-#if (IMR_MSK & ISTR_WKUP)
-  if (wIstr & ISTR_WKUP & wInterrupt_Mask)
-  {
-    _SetISTR((uint16_t)CLR_WKUP);
-    
-    USBD_DCD_INT_fops->Resume(&USB_Device_dev);
-     
-    /* Handle Resume state machine */  
-    Resume(RESUME_EXTERNAL);
-
-#ifdef LPM_ENABLED    
-    /* clear L1 remote wakeup flag */
-    L1_remote_wakeup = 0;
-#endif
-  }
-#endif
-  /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
-#if (IMR_MSK & ISTR_SUSP)
-  if (wIstr & ISTR_SUSP & wInterrupt_Mask)
-  {
-   /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */
-    _SetISTR((uint16_t)CLR_SUSP);
-    
-    /* process library core layer suspend routine*/
-    USBD_DCD_INT_fops->Suspend(&USB_Device_dev); 
-    
-    /* enter macrocell in suspend and system in low power mode when 
-       USB_DEVICE_LOW_PWR_MGMT_SUPPORT defined in usb_conf.h */
-    Suspend();   
-  }
-#endif
-  /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
-#if (IMR_MSK & ISTR_SOF)
-  if (wIstr & ISTR_SOF & wInterrupt_Mask)
-  {
-    _SetISTR((uint16_t)CLR_SOF);
-    USBD_DCD_INT_fops->SOF(&USB_Device_dev);
-  }
-#endif
-  /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
-#if (IMR_MSK & ISTR_ESOF)
-  if (wIstr & ISTR_ESOF & wInterrupt_Mask)
-  {
-    /* clear ESOF flag in ISTR */
-    _SetISTR((uint16_t)CLR_ESOF);
-    
-    /* resume handling timing is made with ESOFs */
-    Resume(RESUME_ESOF); /* request without change of the machine state */
-  }
-#endif
-
-#ifdef LPM_ENABLED  
-#if (IMR_MSK & ISTR_L1REQ)
-  if (wIstr & ISTR_L1REQ & wInterrupt_Mask)
-  {
-     /* clear L1REQ flag in ISTR */
-    _SetISTR((uint16_t)CLR_L1REQ);
-    
-    /* read BESL field which coressponds to HIRD parameter in LPM spec*/
-    /* In your application depending on BESL value, you can choose the right 
-    low power mode during L1 state, allowing wakeup time within the request time from host.*/
-    BESL = (_GetLPMCSR()&LPMCSR_BESL) >>4 ;
-    
-    /* read REMWAKE bit which corresponding to bRemoteWake bit in LPM request*/
-    /* if this bit is set then L1 remote wakeup is possible */
-    L1_remote_wakeup = (_GetLPMCSR()&LPMCSR_REMWAKE) >>3;
-    
-    /* process library core layer suspend routine*/
-    USBD_DCD_INT_fops->Suspend(&USB_Device_dev); 
-    
-    /* enter macrocell in suspend and system in low power mode (STOP mode) when 
-    USB_DEVICE_LOW_PWR_MGMT_SUPPORT defined in usb_conf.h.*/   
-    /* Please note that in this example we enter in STOP mode during L1 state independently
-    from value read in BESL (even for BESL= 0 which corresponds to 50us delay) because
-    STM32F072 can wakeup system from STOP mode in less than 50 us */
-    Suspend();
-  }
-#endif
-#endif
-} /* USB_Istr */
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h
deleted file mode 100644
index 414cc71..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h	
+++ /dev/null
@@ -1,141 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_audio_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_audio_core.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_AUDIO_CORE_H_
-#define __USB_AUDIO_CORE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_req.h"
-#include "stm32_audio_out_if.h"
-
-/** @addtogroup STM32_USB_DEVICE_LIBRARY
-  * @{
-  */
-
-/** @defgroup usbd_audio
-  * @brief This file is the Header file for USBD_audio.c
-  * @{
-  */ 
-
-/* Exported defines ----------------------------------------------------------*/
-
-/* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */
-#define DEFAULT_OUT_BIT_RESOLUTION                    16
-#define DEFAULT_OUT_CHANNEL_NBR                       2 /* Mono = 1, Stereo = 2 */
-#define AUDIO_OUT_PACKET                              (uint32_t)(((DEFAULT_OUT_AUDIO_FREQ * \
-                                                                  (DEFAULT_OUT_BIT_RESOLUTION/8) *\
-                                                                   DEFAULT_OUT_CHANNEL_NBR) /1000))
-
-/* Out endpoint max packet size (in Feedback Synchronization mode, this parameter should be set high enough
-   in order to tolerate the fluctuations of out packets size) */
-#define AUDIO_OUT_MPS                                 384
-
-#define AUDIO_CONFIG_DESC_SIZE                        109
-#define AUDIO_INTERFACE_DESC_SIZE                     0x09
-#define USB_AUDIO_DESC_SIZ                            0x09
-#define AUDIO_STANDARD_ENDPOINT_DESC_SIZE             0x09
-#define AUDIO_STREAMING_ENDPOINT_DESC_SIZE            0x07
-
-#define AUDIO_DESCRIPTOR_TYPE                         0x21
-#define USB_DEVICE_CLASS_AUDIO                        0x01
-#define AUDIO_SUBCLASS_AUDIOCONTROL                   0x01
-#define AUDIO_SUBCLASS_AUDIOSTREAMING                 0x02
-#define AUDIO_PROTOCOL_UNDEFINED                      0x00
-#define AUDIO_STREAMING_GENERAL                       0x01
-#define AUDIO_STREAMING_FORMAT_TYPE                   0x02
-
-/* Audio Descriptor Types */
-#define AUDIO_INTERFACE_DESCRIPTOR_TYPE               0x24
-#define AUDIO_ENDPOINT_DESCRIPTOR_TYPE                0x25
-
-/* Audio Control Interface Descriptor Subtypes */
-#define AUDIO_CONTROL_HEADER                          0x01
-#define AUDIO_CONTROL_INPUT_TERMINAL                  0x02
-#define AUDIO_CONTROL_OUTPUT_TERMINAL                 0x03
-#define AUDIO_CONTROL_FEATURE_UNIT                    0x06
-
-#define AUDIO_INPUT_TERMINAL_DESC_SIZE                0x0C
-#define AUDIO_OUTPUT_TERMINAL_DESC_SIZE               0x09
-#define AUDIO_STREAMING_INTERFACE_DESC_SIZE           0x07
-
-#define AUDIO_CONTROL_MUTE                            0x0001
-
-#define AUDIO_FORMAT_TYPE_I                           0x01
-#define AUDIO_FORMAT_TYPE_III                         0x03
-
-#define USB_ENDPOINT_TYPE_ISOCHRONOUS                 0x01
-#define AUDIO_ENDPOINT_GENERAL                        0x01
-
-#define AUDIO_REQ_GET_CUR                             0x81
-#define AUDIO_REQ_SET_CUR                             0x01
-
-#define AUDIO_OUT_STREAMING_CTRL                      0x02
-
-/* Buffering state definitions */
-#define STATE_IDLE                                    0
-#define STATE_BUFFERING                               1
-#define STATE_READY                                   2
-#define STATE_CLOSING                                 3
-#define STATE_RUN                                     4
-#define STATE_RUN_OVR                                 (STATE_RUN + 1)
-#define STATE_RUN_UDR                                 (STATE_RUN + 2)
-#define STATE_RUN_ERR                                 (STATE_RUN + 3)
-#define STATE_ERROR                                   8
-
-/* Number of empty frame after which the communication should be considered as closed. */
-#define EMPTY_FRAME_THRESHOLD                         3
-
-/* Exported types ------------------------------------------------------------*/
-typedef struct _Buff_Desc
-{
-  uint32_t  Size;
-  uint8_t*  Next;
-}BUFF_DESC_TypeDef;
-
-/* Exported macros -----------------------------------------------------------*/
-#define AUDIO_PACKET_SZE(frq)          (uint8_t)(AUDIO_OUT_PACKET & 0xFF), \
-                                       (uint8_t)((AUDIO_OUT_PACKET >> 8) & 0xFF)
-#define SAMPLE_FREQ(frq)               (uint8_t)(frq), (uint8_t)((frq >> 8)), (uint8_t)((frq >> 16))
-
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  AUDIO_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
-/* This function should be called by low layer functions when current buffer transfer is complete */
-void usbd_audio_BuffXferCplt (uint8_t** pbuf, uint32_t* pSize);
-
-#endif  /* __USB_AUDIO_CORE_H_ */
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c
deleted file mode 100644
index 924c778..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c	
+++ /dev/null
@@ -1,776 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_audio_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the high layer firmware functions to manage the 
-  *          following functionalities of the USB Audio Class:
-  *           - Initialization and Configuration of high and low layer
-  *           - Enumeration as Audio Streaming Device
-  *           - Audio Streaming data transfer
-  *           - AudioControl requests management
-  *           - Error management
-  *           
-  *  @verbatim
-  *      
-  *          ===================================================================      
-  *                                Audio Class Driver Description
-  *          =================================================================== 
-  *           This driver manages the Audio Class 1.0 following the "USB Device Class Definition for
-  *           Audio Devices V1.0 Mar 18, 98".
-  *           This driver implements the following aspects of the specification:
-  *             - Device descriptor management
-  *             - Configuration descriptor management
-  *             - Standard AC Interface Descriptor management
-  *             - 1 Audio Streaming Interface (with single channel, PCM, Stereo mode)
-  *             - 1 Audio Streaming Endpoint
-  *             - 1 Audio Terminal Input (1 channel)
-  *             - Audio Class-Specific AC Interfaces
-  *             - Audio Class-Specific AS Interfaces
-  *             - AudioControl Requests: only SET_CUR and GET_CUR requests are supported (for Mute)
-  *             - Audio Feature Unit (limited to Mute control)
-  *             - Audio Synchronization type: Asynchronous
-  *             - Single fixed audio sampling rate (configurable in usbd_conf.h file)
-  *          
-  *           @note
-  *            The Audio Class 1.0 is based on USB Specification 1.0 and thus supports only
-  *            Low and Full speed modes and does not allow High Speed transfers.
-  *            Please refer to "USB Device Class Definition for Audio Devices V1.0 Mar 18, 98"
-  *            for more details.
-  * 
-  *           These aspects may be enriched or modified for a specific user application.
-  *          
-  *            This driver doesn't implement the following aspects of the specification 
-  *            (but it is possible to manage these features with some modifications on this driver):
-  *             - AudioControl Endpoint management
-  *             - AudioControl requests other than SET_CUR and GET_CUR
-  *             - Abstraction layer for AudioControl requests (only Mute functionality is managed)
-  *             - Audio Synchronization type: Adaptive
-  *             - Audio Compression modules and interfaces
-  *             - MIDI interfaces and modules
-  *             - Mixer/Selector/Processing/Extension Units (Feature unit is limited to Mute control)
-  *             - Any other application-specific modules
-  *             - Multiple and Variable audio sampling rates
-  *             - Out Streaming Endpoint/Interface (microphone)
-  *      
-  *  @endverbatim
-  *                                  
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_audio_core.h"
-
-/** @addtogroup STM32_USB_DEVICE_LIBRARY
-  * @{
-  */
-
-
-/** @defgroup usbd_audio 
-  * @brief usbd core module
-  * @{
-  */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/*********************************************
-   AUDIO Device library callbacks
- *********************************************/
-static uint8_t  usbd_audio_Init       (void  *pdev, uint8_t cfgidx);
-static uint8_t  usbd_audio_DeInit     (void  *pdev, uint8_t cfgidx);
-static uint8_t  usbd_audio_Setup      (void  *pdev, USB_SETUP_REQ *req);
-static uint8_t  usbd_audio_EP0_RxReady(void *pdev);
-static uint8_t  usbd_audio_DataIn     (void *pdev, uint8_t epnum);
-static uint8_t  usbd_audio_DataOut    (void *pdev, uint8_t epnum);
-static uint8_t  usbd_audio_SOF        (void *pdev);
-
-static uint8_t  *USBD_audio_GetCfgDesc (uint8_t speed, uint16_t *length);
-
-/*********************************************
-   AUDIO Requests management functions
- *********************************************/
-static void AUDIO_Req_GetCurrent(void *pdev, USB_SETUP_REQ *req);
-static void AUDIO_Req_SetCurrent(void *pdev, USB_SETUP_REQ *req);
-
-/* Private variables ---------------------------------------------------------*/
- /* Main Buffer for Audio Data Out transfers and its related pointers */
-/* This is the main buffer where all out audio data are stored */
-uint8_t  IsocOutBuff [TOTAL_OUT_BUF_SIZE];
-/* This is the pointer used by the write process (from host to device) */
-uint8_t* IsocOutWrPtr         = IsocOutBuff; 
-/* This is the pointer used by the read process (from buffers to I2S) */
-uint8_t* IsocOutRdPtr         = IsocOutBuff;    
-
-uint8_t  OutEmptyFrameCount   = 0;
-
-BUFF_DESC_TypeDef IsocOutBufDesc[OUT_PACKET_NUM];
-uint32_t IsocOutWrBufDescIdx  = 0;
-uint32_t IsocOutRdBufDescIdx  = 0;
-uint8_t  IsocOutWrState       = STATE_IDLE;
-uint8_t  IsocOutRdState       = STATE_IDLE;
-
-/* Main Buffer for Audio Control Requests transfers and its related variables */
-uint8_t  AudioCtl[64];
-uint8_t  AudioCtlCmd          = 0;
-uint32_t AudioCtlLen          = 0;
-uint8_t  AudioCtlUnit         = 0;
-
-
-/* USB AUDIO device Configuration Descriptor */
-const uint8_t usbd_audio_CfgDesc[AUDIO_CONFIG_DESC_SIZE] =
-{
-  /* Configuration 1 */
-  0x09,                                 /* bLength */
-  USB_CONFIGURATION_DESCRIPTOR_TYPE,    /* bDescriptorType */
-  LOBYTE(AUDIO_CONFIG_DESC_SIZE),       /* wTotalLength  109 bytes*/
-  HIBYTE(AUDIO_CONFIG_DESC_SIZE),      
-  0x02,                                 /* bNumInterfaces */
-  0x01,                                 /* bConfigurationValue */
-  0x00,                                 /* iConfiguration */
-  0xC0,                                 /* bmAttributes  BUS Powred*/
-  0x32,                                 /* bMaxPower = 100 mA*/
-  /* 09 byte*/
-
-  /* USB Speaker Standard interface descriptor */
-  AUDIO_INTERFACE_DESC_SIZE,            /* bLength */
-  USB_INTERFACE_DESCRIPTOR_TYPE,        /* bDescriptorType */
-  0x00,                                 /* bInterfaceNumber */
-  0x00,                                 /* bAlternateSetting */
-  0x00,                                 /* bNumEndpoints */
-  USB_DEVICE_CLASS_AUDIO,               /* bInterfaceClass */
-  AUDIO_SUBCLASS_AUDIOCONTROL,          /* bInterfaceSubClass */
-  AUDIO_PROTOCOL_UNDEFINED,             /* bInterfaceProtocol */
-  0x00,                                 /* iInterface */
-  /* 09 byte*/
-
-  /* USB Speaker Class-specific AC Interface Descriptor */
-  AUDIO_INTERFACE_DESC_SIZE,            /* bLength */
-  AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
-  AUDIO_CONTROL_HEADER,                 /* bDescriptorSubtype */
-  0x00,          /* 1.00 */             /* bcdADC */
-  0x01,
-  0x27,                                 /* wTotalLength = 39*/
-  0x00,
-  0x01,                                 /* bInCollection */
-  0x01,                                 /* baInterfaceNr */
-  /* 09 byte*/
-
-  /* USB Speaker Input Terminal Descriptor */
-  AUDIO_INPUT_TERMINAL_DESC_SIZE,       /* bLength */
-  AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
-  AUDIO_CONTROL_INPUT_TERMINAL,         /* bDescriptorSubtype */
-  0x01,                                 /* bTerminalID */
-  0x01,                                 /* wTerminalType AUDIO_TERMINAL_USB_STREAMING   0x0101 */
-  0x01,
-  0x00,                                 /* bAssocTerminal */
-  0x01,                                 /* bNrChannels */
-  0x00,                                 /* wChannelConfig 0x0000  Mono */
-  0x00,
-  0x00,                                 /* iChannelNames */
-  0x00,                                 /* iTerminal */
-  /* 12 byte*/
-
-  /* USB Speaker Audio Feature Unit Descriptor */
-  0x09,                                 /* bLength */
-  AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
-  AUDIO_CONTROL_FEATURE_UNIT,           /* bDescriptorSubtype */
-  AUDIO_OUT_STREAMING_CTRL,             /* bUnitID */
-  0x01,                                 /* bSourceID */
-  0x01,                                 /* bControlSize */
-  AUDIO_CONTROL_MUTE,                   /* bmaControls(0) */
-  0x00,                                 /* bmaControls(1) */
-  0x00,                                 /* iTerminal */
-  /* 09 byte*/
-
-  /*USB Speaker Output Terminal Descriptor */
-  0x09,      /* bLength */
-  AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
-  AUDIO_CONTROL_OUTPUT_TERMINAL,        /* bDescriptorSubtype */
-  0x03,                                 /* bTerminalID */
-  0x01,                                 /* wTerminalType  0x0301*/
-  0x03,
-  0x00,                                 /* bAssocTerminal */
-  0x02,                                 /* bSourceID */
-  0x00,                                 /* iTerminal */
-  /* 09 byte*/
-
-  /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwidth */
-  /* Interface 1, Alternate Setting 0                                             */
-  AUDIO_INTERFACE_DESC_SIZE,            /* bLength */
-  USB_INTERFACE_DESCRIPTOR_TYPE,        /* bDescriptorType */
-  0x01,                                 /* bInterfaceNumber */
-  0x00,                                 /* bAlternateSetting */
-  0x00,                                 /* bNumEndpoints */
-  USB_DEVICE_CLASS_AUDIO,               /* bInterfaceClass */
-  AUDIO_SUBCLASS_AUDIOSTREAMING,        /* bInterfaceSubClass */
-  AUDIO_PROTOCOL_UNDEFINED,             /* bInterfaceProtocol */
-  0x00,                                 /* iInterface */
-  /* 09 byte*/
-
-  /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Operational */
-  /* Interface 1, Alternate Setting 1                                           */
-  AUDIO_INTERFACE_DESC_SIZE,            /* bLength */
-  USB_INTERFACE_DESCRIPTOR_TYPE,        /* bDescriptorType */
-  0x01,                                 /* bInterfaceNumber */
-  0x01,                                 /* bAlternateSetting */
-  0x01,                                 /* bNumEndpoints */
-  USB_DEVICE_CLASS_AUDIO,               /* bInterfaceClass */
-  AUDIO_SUBCLASS_AUDIOSTREAMING,        /* bInterfaceSubClass */
-  AUDIO_PROTOCOL_UNDEFINED,             /* bInterfaceProtocol */
-  0x00,                                 /* iInterface */
-  /* 09 byte*/
-
-  /* USB Speaker Audio Streaming Interface Descriptor */
-  AUDIO_STREAMING_INTERFACE_DESC_SIZE,  /* bLength */
-  AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
-  AUDIO_STREAMING_GENERAL,              /* bDescriptorSubtype */
-  0x01,                                 /* bTerminalLink */
-  0x01,                                 /* bDelay */
-  0x01,                                 /* wFormatTag AUDIO_FORMAT_PCM  0x0001 */
-  0x00,
-  /* 07 byte*/
-
-  /* USB Speaker Audio Type III Format Interface Descriptor */
-  (0x08 + (3 * SUPPORTED_FREQ_NBR)),    /* bLength */
-  AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
-  AUDIO_STREAMING_FORMAT_TYPE,          /* bDescriptorSubtype */
-  AUDIO_FORMAT_TYPE_I,                  /* bFormatType */
-
-  DEFAULT_OUT_CHANNEL_NBR,              /* bNrChannels */
-  DEFAULT_OUT_CHANNEL_NBR,              /* bSubFrameSize :  2 Bytes per frame (16bits) */
-  DEFAULT_OUT_BIT_RESOLUTION,           /* bBitResolution (16-bits per sample) */
-  SUPPORTED_FREQ_NBR,                    /* bSamFreqType only one frequency supported */
-  SAMPLE_FREQ(DEFAULT_OUT_AUDIO_FREQ),   /* Audio sampling frequency coded on 3 bytes */
-#if (SUPPORTED_FREQ_NBR > 1)
-  SAMPLE_FREQ(USBD_AUDIO_FREQ_2),       /* Audio sampling frequency coded on 3 bytes */
-#endif
-#if (SUPPORTED_FREQ_NBR > 2)
-  SAMPLE_FREQ(USBD_AUDIO_FREQ_3),       /* Audio sampling frequency coded on 3 bytes */
-#endif
-#if (SUPPORTED_FREQ_NBR > 3)
-  SAMPLE_FREQ(USBD_AUDIO_FREQ_4),       /* Audio sampling frequency coded on 3 bytes */
-#endif
-#if (SUPPORTED_FREQ_NBR > 4)
- #error "Error: Max nbr of frequencies exceeded, you have to modify the conf descriptor in usbd_audio_core.c file!"
-#endif
- /* 11 + 3*N byte */
-
-  /* USB Speaker Streaming Standard Endpoint Descriptor */
-  AUDIO_STANDARD_ENDPOINT_DESC_SIZE,    /* bLength */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,         /* bDescriptorType */
-  AUDIO_OUT_EP,                         /* bEndpointAddress 1 out endpoint*/
-  USB_ENDPOINT_TYPE_ISOCHRONOUS,        /* bmAttributes */
-  LOBYTE(AUDIO_OUT_MPS),                /* wMaxPacketSize */
-  HIBYTE(AUDIO_OUT_MPS),
-  0x01,                                 /* bInterval */
-  0x00,                                 /* bRefresh */
-  0x00,                                 /* bSynchAddress */
-  /* 09 byte*/
-
-  /* Endpoint - Audio Streaming Descriptor*/
-  AUDIO_STREAMING_ENDPOINT_DESC_SIZE,   /* bLength */
-  AUDIO_ENDPOINT_DESCRIPTOR_TYPE,       /* bDescriptorType */
-  AUDIO_ENDPOINT_GENERAL,               /* bDescriptor */
-#if (SUPPORTED_FREQ_NBR > 1)  
-  0x01,                                 /* bmAttributes: Freq selection */
-#else
-  0x00,                                 /* bmAttributes: None */
-#endif /* (SUPPORTED_FREQ_NBR > 1)  */
-  0x00,                                 /* bLockDelayUnits */
-  0x00,                                 /* wLockDelay */
-  0x00,
-  /* 07 byte*/
-};
-
-/* AUDIO interface class callbacks structure */
-USBD_Class_cb_TypeDef  AUDIO_cb =
-{
-  usbd_audio_Init,
-  usbd_audio_DeInit,
-  usbd_audio_Setup,
-  NULL, /* EP0_TxSent */
-  usbd_audio_EP0_RxReady,
-  usbd_audio_DataIn,
-  usbd_audio_DataOut,
-  usbd_audio_SOF,
-  USBD_audio_GetCfgDesc,
-};
-
-/* Private function ----------------------------------------------------------*/
-  
-/**
-  * @brief  usbd_audio_Init
-  *         Initializes the AUDIO interface.
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  usbd_audio_Init (void  *pdev, 
-                                 uint8_t cfgidx)
-{
-  /* Open EP OUT */
-  DCD_PMA_Config(pdev, AUDIO_OUT_EP, USB_DBL_BUF, Audio_IN_TX_ADRESS);
-
-  DCD_EP_Open(pdev, AUDIO_OUT_EP, AUDIO_OUT_PACKET, USB_EP_ISOC);
-
-  /* Initialize the Audio output Hardware layer */ 
-  if (AUDIO_OUT_fops.Init(DEFAULT_OUT_AUDIO_FREQ, DEFAULT_VOLUME, (DEFAULT_OUT_CHANNEL_NBR << 6 | DEFAULT_OUT_BIT_RESOLUTION)) != USBD_OK)
-  {
-    return USBD_FAIL;
-  }
-
-#if (DEFAULT_OUT_BIT_RESOLUTION == 16)
-  WAVADDON_Init((DEFAULT_OUT_CHANNEL_NBR<<6 | DEFAULT_OUT_BIT_RESOLUTION), 0);
-#endif /* DEFAULT_OUT_BIT_RESOLUTION */
-
-  /* Prepare Out endpoint to receive audio data */
-  DCD_EP_PrepareRx(pdev,
-                   AUDIO_OUT_EP,
-                   (uint8_t*)IsocOutBuff,
-                   AUDIO_OUT_PACKET);  
-
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_audio_DeInit
-  *         DeInitializes the AUDIO layer.
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  usbd_audio_DeInit (void  *pdev, 
-                                   uint8_t cfgidx)
-{
-  DCD_EP_Close (pdev , AUDIO_OUT_EP);
-
-  /* DeInitialize the Audio output Hardware layer */
-  if (AUDIO_OUT_fops.DeInit() != USBD_OK)
-  {
-    return USBD_FAIL;
-  }
-
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_audio_Setup
-  *         Handles the Audio control request parsing.
-  * @param  pdev: instance
-  * @param  req: usb requests
-  * @retval status
-  */
-static uint8_t  usbd_audio_Setup (void  *pdev, 
-                                  USB_SETUP_REQ *req)
-{
-  
-  __IO uint32_t  usbd_audio_AltSet = 0;
-  uint16_t len=USB_AUDIO_DESC_SIZ;
-  uint8_t  *pbuf= (uint8_t *) usbd_audio_CfgDesc + 18;
-
-  switch (req->bmRequest & USB_REQ_TYPE_MASK)
-  {
-    /* AUDIO Class Requests -------------------------------*/
-  case USB_REQ_TYPE_CLASS :    
-    switch (req->bRequest)
-    {
-    case AUDIO_REQ_GET_CUR:
-      AUDIO_Req_GetCurrent(pdev, req);
-      break;
-
-    case AUDIO_REQ_SET_CUR:
-      AUDIO_Req_SetCurrent(pdev, req);   
-      break;
-
-    default:
-      USBD_CtlError (pdev, req);
-      return USBD_FAIL;
-    }
-    break;
-
-    /* Standard Requests -------------------------------*/
-  case USB_REQ_TYPE_STANDARD:
-    switch (req->bRequest)
-    {
-    case USB_REQ_GET_DESCRIPTOR: 
-      if( (req->wValue >> 8) == AUDIO_DESCRIPTOR_TYPE)
-      {
-        pbuf = (uint8_t *)usbd_audio_CfgDesc + 18;
-        len = MIN(USB_AUDIO_DESC_SIZ , req->wLength);
-      }
-      
-      USBD_CtlSendData (pdev, 
-                        pbuf,
-                        len);
-      break;
-
-    case USB_REQ_GET_INTERFACE :
-      USBD_CtlSendData (pdev,
-                        (uint8_t *)&usbd_audio_AltSet,
-                        1);
-      break;
-
-    case USB_REQ_SET_INTERFACE :
-      if ((uint8_t)(req->wValue) < AUDIO_TOTAL_IF_NUM)
-      {
-        usbd_audio_AltSet = (uint8_t)(req->wValue);
-      }
-      else
-      {
-        /* Call the error management function (command will be nacked */
-        USBD_CtlError (pdev, req);
-      }
-      break;
-    }
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_audio_EP0_RxReady
-  *         Handles audio control requests data.
-  * @param  pdev: device device instance
-  * @retval status
-  */
-static uint8_t  usbd_audio_EP0_RxReady (void  *pdev)
-{
-  /* Check if an AudioControl request has been issued */
-  if (AudioCtlCmd == AUDIO_REQ_SET_CUR)
-  {
-    /* In this driver, to simplify code, only SET_CUR request is managed */
-    /* Check for which addressed unit the AudioControl request has been issued */
-    if (AudioCtlUnit == AUDIO_OUT_STREAMING_CTRL)
-    {
-      /* In this driver, to simplify code, only one unit is manage */
-      /* Call the audio interface mute function */
-      AUDIO_OUT_fops.MuteCtl(AudioCtl[0]);
-      
-      /* Reset the AudioCtlCmd variable to prevent re-entering this function */
-      AudioCtlCmd = 0;
-      AudioCtlLen = 0;
-    }
-  } 
-
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_audio_DataIn
-  *         Handles the audio IN data stage.
-  * @param  pdev: instance
-  * @param  epnum: endpoint number
-  * @retval status
-  */
-static uint8_t  usbd_audio_DataIn (void *pdev, uint8_t epnum)
-{
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_audio_DataOut
-  *         Handles the Audio Out data stage.
-  * @param  pdev: instance
-  * @param  epnum: endpoint number
-  * @retval status
-  */
-static uint8_t  usbd_audio_DataOut (void *pdev, uint8_t epnum)
-{
-  uint32_t IsocOutPacketSze = AUDIO_OUT_PACKET;
-  if (epnum == AUDIO_OUT_EP)
-  {
-    /* Set the Isochronous Buffer Out linked chain parameters */
-    IsocOutBufDesc[IsocOutWrBufDescIdx].Size = ((USB_CORE_HANDLE*)pdev)->dev.out_ep[epnum].xfer_count;
-    IsocOutBufDesc[IsocOutWrBufDescIdx].Next = (uint8_t*)(IsocOutWrPtr + IsocOutBufDesc[IsocOutWrBufDescIdx].Size);
-
-#if (DEFAULT_OUT_BIT_RESOLUTION == 16)
-    WAVADDON_AudioProcessing(IsocOutWrPtr, IsocOutBufDesc[IsocOutWrBufDescIdx].Size);
-#endif /* DEFAULT_OUT_BIT_RESOLUTION */
-
-    /* Increment the write buffer pointer */
-    IsocOutWrPtr += IsocOutBufDesc[IsocOutWrBufDescIdx].Size;
-
-    /* Increment the linked chain member index */
-    IsocOutWrBufDescIdx++;
-
-    /* Check if the end of the the buffer has been reached */
-    if (IsocOutWrBufDescIdx >= OUT_PACKET_NUM)
-    {
-      /* All buffers are full: roll back */
-      IsocOutWrPtr = IsocOutBuff;
-      IsocOutBufDesc[IsocOutWrBufDescIdx - 1].Next = IsocOutBuff;
-      IsocOutWrBufDescIdx = 0;
-    }
-
-    /* Check and update the buffering state machine */
-    switch (IsocOutWrState)
-    {
-    case STATE_IDLE:
-      IsocOutWrState = STATE_BUFFERING;
-      break;
-
-    case STATE_BUFFERING:
-      /* Check if the buffer index reached the half of total out buffer */
-      if (IsocOutWrBufDescIdx >= (OUT_PACKET_NUM / 2))
-      {
-        /* Switch current state to Ready: allow read operation from the buffer */
-        IsocOutWrState = STATE_READY;
-      }
-      break;
-
-    case STATE_READY:
-      /* Decrement the empty frame counter */
-      if (OutEmptyFrameCount)
-      {
-        OutEmptyFrameCount --;
-      }      
-      break;
-
-    case STATE_CLOSING:
-      break;
-
-    default:
-      break;
-    }
-
-    /* Prepare Out endpoint to receive next audio packet */
-    DCD_EP_PrepareRx(pdev,
-                     AUDIO_OUT_EP,
-                     IsocOutWrPtr,
-                     IsocOutPacketSze);
-  }
-
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_audio_SOF
-  *         Handles the SOF event (data buffer update and synchronization).
-  * @param  pdev: instance
-  * @param  epnum: endpoint number
-  * @retval status
-  */
-static uint8_t  usbd_audio_SOF (void *pdev)
-{
-  /*Uncomment this line to visualize the shift between SOF and audio clock*/
-  STM_EVAL_LEDToggle(LED1);
-  
-  /* Check on current state */
-  if (IsocOutWrState == STATE_READY)
-  {
-    /* Increment the empty frame counter */
-    OutEmptyFrameCount ++;
-
-    /* Check if the output read operation has been started */
-    if (IsocOutRdState == STATE_IDLE)
-    {
-      /* Start playing received packet */
-      AUDIO_OUT_fops.AudioCmd(IsocOutBuff,                               /* Samples buffer pointer */
-                              IsocOutBufDesc[IsocOutRdBufDescIdx].Size,  /* Number of samples in Bytes */
-                              AUDIO_CMD_PLAY);                           /* Command to be processed */   
-
-      /* Set the current read pointer */
-      IsocOutRdPtr = IsocOutBufDesc[IsocOutRdBufDescIdx].Next; 
-
-      /* Increment the read buffer descriptor index */
-      IsocOutRdBufDescIdx++;
-
-      /* Update the out read operation state */
-      IsocOutRdState = STATE_RUN;
-    }
-  }
-
-  /* Check if the empty frame counter reached the threshold (means audio streaming stopped) */
-  if (OutEmptyFrameCount >= EMPTY_FRAME_THRESHOLD)
-  {
-    IsocOutWrState = STATE_CLOSING;
-    OutEmptyFrameCount = 0;
-  }
-
-  /* Check if there are available data in stream buffer.
-  The play operation must be executed as soon as possible after the SOF detection. */
-  if (/*(IsocOutWrState == STATE_CLOSING) && */
-      (IsocOutRdPtr == IsocOutWrPtr) && 
-        (IsocOutRdState != STATE_IDLE))
-  {
-    /* Pause the audio stream */
-    AUDIO_OUT_fops.AudioCmd(IsocOutBufDesc[IsocOutRdBufDescIdx - 1].Next,  /* Samples buffer pointer */
-                            IsocOutBufDesc[IsocOutRdBufDescIdx].Size,      /* Number of samples in Bytes */
-                            AUDIO_CMD_PAUSE);                              /* Command to be processed */
-
-    IsocOutWrState = STATE_IDLE;
-    IsocOutRdState = STATE_IDLE;
-
-    /* Reset buffer pointers */
-    IsocOutRdPtr = IsocOutBuff;
-    IsocOutWrPtr = IsocOutBuff;
-    IsocOutRdBufDescIdx = 0;
-    IsocOutWrBufDescIdx = 0;
-  }
-
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_audio_BuffXferCplt
-  *         Manage end of buffer transfer for each device.
-  * @param  Direction: could be DIRECTION_IN or DIRECTION_OUT
-  * @param  pbuf: Pointer to the address of the current buffer
-  * @param  pSize: pointer to the variable which holds current buffer size
-  * @retval status
-  */
-void usbd_audio_BuffXferCplt (uint8_t** pbuf, uint32_t* pSize)
-{
-  uint8_t* pRdPtr = IsocOutRdPtr;
-  uint32_t currDistanceOut = 0;
-  
-  if (IsocOutRdState & STATE_RUN)
-  {
-    STM_EVAL_LEDToggle(LED2);
-    
-    if (IsocOutRdBufDescIdx == 0)
-    {
-      /* Start playing received packet */
-      AUDIO_OUT_fops.AudioCmd(IsocOutBufDesc[OUT_PACKET_NUM - 1].Next,       /* Samples buffer pointer */
-                              IsocOutBufDesc[IsocOutRdBufDescIdx].Size,      /* Number of samples in Bytes */
-                              AUDIO_CMD_PLAY);                               /* Command to be processed */
-      
-      /* Set the current read pointer */
-      IsocOutRdPtr = IsocOutBufDesc[OUT_PACKET_NUM - 1].Next;
-    }
-    else
-    {
-      /* Start playing received packet */
-      AUDIO_OUT_fops.AudioCmd(IsocOutBufDesc[IsocOutRdBufDescIdx - 1].Next,  /* Samples buffer pointer */
-                              IsocOutBufDesc[IsocOutRdBufDescIdx].Size,      /* Number of samples in Bytes */
-                              AUDIO_CMD_PLAY);                               /* Command to be processed */
-      
-      /* Set the current read pointer */
-      IsocOutRdPtr = IsocOutBufDesc[IsocOutRdBufDescIdx - 1].Next;
-    }    
-    
-    /* Check if roll-back has been detected */
-    if (((uint32_t)IsocOutWrPtr) >= (uint32_t)pRdPtr)
-    {/* No roll-back */
-      currDistanceOut = (uint32_t)(((uint32_t)IsocOutWrPtr) - (uint32_t)pRdPtr);
-    }
-    else
-    {/* Roll-back occured */
-      currDistanceOut = (uint32_t)(((uint32_t)(IsocOutBufDesc[OUT_PACKET_NUM-2].Next) +  \
-        IsocOutBufDesc[OUT_PACKET_NUM-1].Size) - \
-          (uint32_t)pRdPtr + ((uint32_t)IsocOutWrPtr) - \
-            (uint32_t)(IsocOutBufDesc[OUT_PACKET_NUM-1].Next));    
-    }
-    
-    /* Speed-up the timer (trigger of DAC) when the distance between write buffer
-    and read buffer pointers is higher than 3/4 buffer size */
-    if(currDistanceOut > 1176)/* 3/4 buffer size = 1568 * 3/4 = 1176 */
-    {
-      TIM6->ARR = 998;/* This value is hard-coded for 48KHz: 48MHz/48KHz - 2 */
-    }
-    /* Slow-down the timer (trigger of DAC) when the distance between write buffer
-    and read buffer pointers is lower than 1/4 buffer size */
-    else if(currDistanceOut < 392)/* 1/4 buffer size = 1568 * 1/4 = 392 */
-    {
-      TIM6->ARR = 1000;/* This value is hard-coded for 48KHz: 48MHz/48KHz */
-    }
-    /* Set the default timer frequency */
-    else
-    {
-      TIM6->ARR = 999;/* This value is hard-coded for 48KHz: 48MHz/48KHz - 1 */
-    }
-    /* Increment the read buffer descriptor index */
-    IsocOutRdBufDescIdx++;  
-    
-    /* Check if the end of the the buffer has been reached */
-    if (IsocOutRdBufDescIdx == OUT_PACKET_NUM)
-    {
-      /* All buffers are full: roll back */
-      IsocOutRdBufDescIdx = 0;
-    }
-  }
-}
-
-/******************************************************************************
-     AUDIO Class requests management
-******************************************************************************/
-/**
-  * @brief  AUDIO_Req_GetCurrent
-  *         Handles the GET_CUR Audio control request.
-  * @param  pdev: instance
-  * @param  req: setup class request
-  * @retval status
-  */
-static void AUDIO_Req_GetCurrent(void *pdev, USB_SETUP_REQ *req)
-{
-  /* Send the current mute state */
-  USBD_CtlSendData (pdev,
-                    AudioCtl,
-                    req->wLength);
-}
-
-/**
-  * @brief  AUDIO_Req_SetCurrent
-  *         Handles the SET_CUR Audio control request.
-  * @param  pdev: instance
-  * @param  req: setup class request
-  * @retval status
-  */
-static void AUDIO_Req_SetCurrent(void *pdev, USB_SETUP_REQ *req)
-{
-  if (req->wLength)
-  {
-    /* Prepare the reception of the buffer over EP0 */
-    USBD_CtlPrepareRx (pdev, 
-                       AudioCtl,
-                       req->wLength);
-
-    /* Set the global variables indicating current request and its length 
-    to the function usbd_audio_EP0_RxReady() which will process the request */
-    AudioCtlCmd = AUDIO_REQ_SET_CUR;     /* Set the request value */
-    AudioCtlLen = req->wLength;          /* Set the request data length */
-    AudioCtlUnit = HIBYTE(req->wIndex);  /* Set the request target unit */
-  }
-}
-
-/**
-  * @brief  USBD_audio_GetCfgDesc 
-  *         Returns configuration descriptor.
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-static uint8_t  *USBD_audio_GetCfgDesc (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (usbd_audio_CfgDesc);
-  return (uint8_t *)usbd_audio_CfgDesc;
-}
-
-/**
-  * @}
-  */ 
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_cmd.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_cmd.h
deleted file mode 100644
index f0e5114..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_cmd.h	
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_ccid_cmd.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   CCID Commands handling prototype
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_CCID_CMD_H
-#define __USBD_CCID_CMD_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_ccid_core.h"
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macro ------------------------------------------------------------*/
-
-/******************************************************************************/
-/*  ERROR CODES for USB Bulk In Messages : bError                   */
-/******************************************************************************/
-
-#define   SLOT_NO_ERROR         0x81
-#define   SLOTERROR_UNKNOWN     0x82
-
-/* Index of not supported / incorrect message parameter : 7Fh to 01h */
-/* These Values are used for Return Types between Firmware Layers    */
-/*
-Failure of a command 
-The CCID cannot parse one parameter or the ICC is not supporting one parameter. 
-Then the Slot Error register contains the index of the first bad parameter as a 
-positive number (1-127). For instance, if the CCID receives an ICC command to 
-an unimplemented slot, then the Slot Error register shall be set to 
-‘5’ (index of bSlot field).
-  */
-
-#define   SLOTERROR_BAD_LENTGH                    0x01
-#define   SLOTERROR_BAD_SLOT                      0x05
-#define   SLOTERROR_BAD_POWERSELECT               0x07
-#define   SLOTERROR_BAD_PROTOCOLNUM               0x07
-#define   SLOTERROR_BAD_CLOCKCOMMAND              0x07
-#define   SLOTERROR_BAD_ABRFU_3B                  0x07
-#define   SLOTERROR_BAD_BMCHANGES                 0x07
-#define   SLOTERROR_BAD_BFUNCTION_MECHANICAL      0x07
-#define   SLOTERROR_BAD_ABRFU_2B                  0x08
-#define   SLOTERROR_BAD_LEVELPARAMETER            0x08
-#define   SLOTERROR_BAD_FIDI                      0x0A
-#define   SLOTERROR_BAD_T01CONVCHECKSUM           0x0B
-#define   SLOTERROR_BAD_GUARDTIME                 0x0C
-#define   SLOTERROR_BAD_WAITINGINTEGER            0x0D
-#define   SLOTERROR_BAD_CLOCKSTOP                 0x0E
-#define   SLOTERROR_BAD_IFSC                      0x0F
-#define   SLOTERROR_BAD_NAD                       0x10
-#define   SLOTERROR_BAD_DWLENGTH                  0x08  /* Used in PC_to_RDR_XfrBlock*/
-
-/*----------  Table 6.2-2 Slot error register when bmCommandStatus = 1        */
-#define   SLOTERROR_CMD_ABORTED                    0xFF
-#define   SLOTERROR_ICC_MUTE                       0xFE
-#define   SLOTERROR_XFR_PARITY_ERROR               0xFD
-#define   SLOTERROR_XFR_OVERRUN                    0xFC
-#define   SLOTERROR_HW_ERROR                       0xFB
-#define   SLOTERROR_BAD_ATR_TS                     0xF8
-#define   SLOTERROR_BAD_ATR_TCK                    0xF7
-#define   SLOTERROR_ICC_PROTOCOL_NOT_SUPPORTED     0xF6
-#define   SLOTERROR_ICC_CLASS_NOT_SUPPORTED        0xF5
-#define   SLOTERROR_PROCEDURE_BYTE_CONFLICT        0xF4
-#define   SLOTERROR_DEACTIVATED_PROTOCOL           0xF3
-#define   SLOTERROR_BUSY_WITH_AUTO_SEQUENCE        0xF2
-#define   SLOTERROR_PIN_TIMEOUT                    0xF0
-#define   SLOTERROR_PIN_CANCELLED                  0xEF
-#define   SLOTERROR_CMD_SLOT_BUSY                  0xE0
-#define   SLOTERROR_CMD_NOT_SUPPORTED              0x00
-
-
-#define   DEFAULT_FIDI              0x11 /* DEFAULT_FIDI_VALUE */
-#define   DEFAULT_T01CONVCHECKSUM   0x00
-#define   DEFAULT_EXTRA_GUARDTIME   0x00
-#define   DEFAULT_WAITINGINTEGER    0x0A
-#define   DEFAULT_CLOCKSTOP         0x00
-#define   DEFAULT_IFSC              0x20
-#define   DEFAULT_NAD               0x00
-
-#define   DEFAULT_DATA_RATE    0x000025CD
-#define   DEFAULT_CLOCK_FREQ   0x00000E10
-
-
-/*
-Offset=0 bmICCStatus 2 bit  0, 1, 2
-    0 - An ICC is present and active (power is on and stable, RST is inactive)
-    1 - An ICC is present and inactive (not activated or shut down by hardware error)
-    2 - No ICC is present
-    3 - RFU
-Offset=0 bmRFU 4 bits 0 RFU
-Offset=6 bmCommandStatus 2 bits 0, 1, 2
-    0 - Processed without error
-    1 - Failed (error code provided by the error register)
-    2 - Time Extension is requested
-    3 - RFU
-  */
-
-#define BM_ICC_PRESENT_ACTIVE 0x00
-#define BM_ICC_PRESENT_INACTIVE 0x01
-#define BM_ICC_NO_ICC_PRESENT   0x02
-
-#define BM_COMMAND_STATUS_OFFSET 0x06
-#define BM_COMMAND_STATUS_NO_ERROR 0x00 
-#define BM_COMMAND_STATUS_FAILED   (0x01 << BM_COMMAND_STATUS_OFFSET)
-#define BM_COMMAND_STATUS_TIME_EXTN  (0x02 << BM_COMMAND_STATUS_OFFSET)
-
-/* defines for the CCID_CMD Layers */
-#define SIZE_OF_ATR 33
-#define LEN_RDR_TO_PC_SLOTSTATUS 10
-#define LEN_PROTOCOL_STRUCT_T0   5
-
-#define BPROTOCOL_NUM_T0  0
-#define BPROTOCOL_NUM_T1  1
-
-/************************************************************************************/
-/*   ERROR CODES for RDR_TO_PC_HARDWAREERROR Message : bHardwareErrorCode           */
-/************************************************************************************/
-
-#define   HARDWAREERRORCODE_OVERCURRENT       0x01
-#define   HARDWAREERRORCODE_VOLTAGEERROR      0x02
-#define   HARDWAREERRORCODE_OVERCURRENT_IT    0x04
-#define   HARDWAREERRORCODE_VOLTAGEERROR_IT   0x08
-
-typedef enum 
-{
-  CHK_PARAM_SLOT = 1,
-  CHK_PARAM_DWLENGTH = (1<<1),
-  CHK_PARAM_abRFU2 = (1<<2), 
-  CHK_PARAM_abRFU3 = (1<<3),
-  CHK_PARAM_CARD_PRESENT = (1<<4),
-  CHK_PARAM_ABORT = (1<<5),
-  CHK_ACTIVE_STATE = (1<<6)
-} ChkParam_t;
-
-
-/* Exported functions ------------------------------------------------------- */
-
-uint8_t  PC_to_RDR_IccPowerOn(void);
-uint8_t  PC_to_RDR_IccPowerOff(void);
-uint8_t  PC_to_RDR_GetSlotStatus(void);
-uint8_t  PC_to_RDR_XfrBlock(void);
-uint8_t  PC_to_RDR_GetParameters(void);
-uint8_t  PC_to_RDR_ResetParameters(void);
-uint8_t  PC_to_RDR_SetParameters(void);
-uint8_t  PC_to_RDR_Escape(void);
-uint8_t  PC_to_RDR_IccClock(void);
-uint8_t  PC_to_RDR_Abort(void);
-uint8_t  PC_TO_RDR_T0Apdu(void);
-uint8_t  PC_TO_RDR_Mechanical(void);
-uint8_t  PC_TO_RDR_SetDataRateAndClockFrequency(void);
-uint8_t  PC_TO_RDR_Secure(void);
-
-void RDR_to_PC_DataBlock(unsigned char );
-void RDR_to_PC_NotifySlotChange(void);
-void RDR_to_PC_SlotStatus(unsigned char );
-void RDR_to_PC_Parameters(unsigned char );
-void RDR_to_PC_Escape(unsigned char );
-void RDR_to_PC_DataRateAndClockFrequency(uint8_t  errorCode);
-
-
-void CCID_UpdSlotStatus (uint8_t );
-void CCID_UpdSlotChange (uint8_t );
-uint8_t CCID_IsSlotStatusChange (void);
-uint8_t CCID_CmdAbort(uint8_t slot, uint8_t seq);
-
-#endif /* __USBD_CCID_CMD_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_core.h
deleted file mode 100644
index 4ce1b06..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_core.h	
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_ccid_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the CCID core functions.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef _USB_CCID_CORE_H_
-#define _USB_CCID_CORE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_req.h"
-#include "sc_itf.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define TPDU_EXCHANGE                  0x01
-#define SHORT_APDU_EXCHANGE            0x02
-#define EXTENDED_APDU_EXCHANGE         0x04
-#define CHARACTER_EXCHANGE             0x00
-
-#define EXCHANGE_LEVEL_FEATURE         TPDU_EXCHANGE
-
-#define REQUEST_ABORT                  0x01
-#define REQUEST_GET_CLOCK_FREQUENCIES  0x02
-#define REQUEST_GET_DATA_RATES         0x03
-
-#define SMARTCARD_SIZ_CONFIG_DESC      93 
-
-#define CCID_BULK_EPIN_SIZE          CCID_BULK_EP_MAX_PACKET 
-#define CCID_BULK_EPOUT_SIZE         CCID_BULK_EP_MAX_PACKET  
-#define CCID_INTR_EPIN_SIZE          CCID_INTR_EP_MAX_PACKET
-#define CCID_EP0_BUFF_SIZ            64
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  USBD_CCID_cb;
-/* Exported functions ------------------------------------------------------- */
-
-#endif  /* _USB_CCID_CORE_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_if.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_if.h
deleted file mode 100644
index f4948e1..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/inc/usbd_ccid_if.h	
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_ccid_if.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the functions prototypes for USB CCID
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_CCID_IF_H
-#define __USBD_CCID_IF_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_ccid_core.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Bulk-only Command Block Wrapper */
-#define ABDATA_SIZE 261
-#define CCID_CMD_HEADER_SIZE 10
-#define CCID_RESPONSE_HEADER_SIZE 10
-
-
-#define CCID_INT_BUFF_SIZ 2
-
-#define CARD_SLOT_FITTED  1
-#define CARD_SLOT_REMOVED  0
-
-#define BULK_MAX_PACKET_SIZE 0x40
-#define CCID_IN_EP_SIZE   0x40
-#define INTR_MAX_PACKET_SIZE 8
-#define CCID_MESSAGE_HEADER_SIZE 10
-#define CCID_NUMBER_OF_SLOTS     1       
-                         /* Number of SLOTS. For single card, this value is 1 */
-
-/* Following Parameters used in PC_to_RDR_IccPowerOn */
-#define VOLTAGE_SELECTION_AUTOMATIC  0xFF
-#define VOLTAGE_SELECTION_3V  0x02
-#define VOLTAGE_SELECTION_5V  0x01
-#define VOLTAGE_SELECTION_1V8 0x03
-
-#define		PC_TO_RDR_ICCPOWERON		0x62
-#define		PC_TO_RDR_ICCPOWEROFF		0x63
-#define		PC_TO_RDR_GETSLOTSTATUS		0x65
-#define		PC_TO_RDR_XFRBLOCK	        0x6F
-#define		PC_TO_RDR_GETPARAMETERS		0x6C
-#define		PC_TO_RDR_RESETPARAMETERS	0x6D
-#define		PC_TO_RDR_SETPARAMETERS		0x61
-#define		PC_TO_RDR_ESCAPE		0x6B
-#define		PC_TO_RDR_ICCCLOCK		0x6E
-#define		PC_TO_RDR_T0APDU		0x6A
-#define		PC_TO_RDR_SECURE		0x69
-#define		PC_TO_RDR_MECHANICAL		0x71
-#define		PC_TO_RDR_ABORT			0x72
-#define		PC_TO_RDR_SETDATARATEANDCLOCKFREQUENCY		0x73
-
-#define		RDR_TO_PC_DATABLOCK		0x80
-#define		RDR_TO_PC_SLOTSTATUS		0x81
-#define		RDR_TO_PC_PARAMETERS		0x82
-#define		RDR_TO_PC_ESCAPE		0x83
-#define		RDR_TO_PC_DATARATEANDCLOCKFREQUENCY		0x84
-
-#define		RDR_TO_PC_NOTIFYSLOTCHANGE	0x50
-#define		RDR_TO_PC_HARDWAREERROR		0x51
-
-#define         OFFSET_INT_BMESSAGETYPE  0
-#define         OFFSET_INT_BMSLOTICCSTATE 1
-#define         SLOT_ICC_PRESENT 0x01  
-                /* LSb : (0b = no ICC present, 1b = ICC present) */
-
-#define         SLOT_ICC_CHANGE  0x02  /* MSb : (0b = no change, 1b = change) */
-/*****************************************************************************/
-/*********************** CCID Bulk Transfer State machine ********************/
-/*****************************************************************************/
-#define CCID_STATE_IDLE                      0       /* Idle state */
-#define CCID_STATE_DATA_OUT                  1       /* Data Out state */
-#define CCID_STATE_RECEIVE_DATA              2
-#define CCID_STATE_SEND_RESP                 3
-#define CCID_STATE_DATAIN                    4
-#define CCID_STATE_UNCORRECT_LENGTH          5
-
-#define DIR_IN                        0
-#define DIR_OUT                       1
-#define BOTH_DIR                      2
-
-/* Exported types ------------------------------------------------------------*/
-#pragma pack(1)
-typedef struct 
-{ 
-  uint8_t bMessageType; /* Offset = 0*/
-  uint32_t dwLength;    /* Offset = 1, The length field (dwLength) is the length  
-                          of the message not including the 10-byte header.*/
-  uint8_t bSlot;        /* Offset = 5*/
-  uint8_t bSeq;         /* Offset = 6*/
-  uint8_t bSpecific_0;  /* Offset = 7*/
-  uint8_t bSpecific_1;  /* Offset = 8*/
-  uint8_t bSpecific_2;  /* Offset = 9*/
-  uint8_t abData [ABDATA_SIZE]; /* Offset = 10, For reference, the absolute 
-                           maximum block size for a TPDU T=0 block is 260 bytes 
-                           (5 bytes command; 255 bytes data), 
-                           or for a TPDU T=1 block is 259 bytes, 
-                           or for a short APDU T=1 block is 261 bytes, 
-                           or for an extended APDU T=1 block is 65544 bytes.*/
-} Ccid_bulkout_data_t; 
-#pragma pack()
-
-#pragma pack(1)
-typedef struct 
-{ 
-  uint8_t bMessageType;   /* Offset = 0*/
-  uint32_t dwLength;      /* Offset = 1*/
-  uint8_t bSlot;          /* Offset = 5, Same as Bulk-OUT message */
-  uint8_t bSeq;           /* Offset = 6, Same as Bulk-OUT message */
-  uint8_t bStatus;        /* Offset = 7, Slot status as defined in § 6.2.6*/
-  uint8_t bError;         /* Offset = 8, Slot error  as defined in § 6.2.6*/
-  uint8_t bSpecific;      /* Offset = 9*/
-  uint8_t abData[ABDATA_SIZE]; /* Offset = 10*/
-  uint16_t u16SizeToSend; 
-} Ccid_bulkin_data_t; 
-#pragma pack()
-
-typedef struct 
-{ 
-  __IO uint8_t SlotStatus;
-  __IO uint8_t SlotStatusChange;
-} Ccid_SlotStatus_t; 
-
-
-typedef struct 
-{ 
-  __IO uint8_t bAbortRequestFlag; 
-  __IO uint8_t bSeq; 
-  __IO uint8_t bSlot;
-} usb_ccid_param_t; 
-
-extern usb_ccid_param_t usb_ccid_param;
-extern Ccid_bulkout_data_t Ccid_bulkout_data; /* Buffer for the Out Data */
-extern Ccid_bulkin_data_t Ccid_bulkin_data;   /* Buffer for the IN Data */
-extern Ccid_SlotStatus_t Ccid_SlotStatus;
-extern uint8_t UsbIntMessageBuffer[];
-extern uint8_t Ccid_BulkState;
-
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-void CCID_BulkMessage_In (USB_CORE_HANDLE  *pdev, 
-                     uint8_t epnum);
-
-void CCID_BulkMessage_Out (USB_CORE_HANDLE  *pdev, 
-                            uint8_t epnum);
-
-void CCID_ReceiveCmdHeader(uint8_t* pDst, uint8_t u8length);
-void CCID_CmdDecode(USB_CORE_HANDLE  *pdev);
-
-void CCID_IntMessage(USB_CORE_HANDLE  *pdev);
-void CCID_Init(USB_CORE_HANDLE  *pdev);
-void CCID_DeInit(USB_CORE_HANDLE  *pdev);
-
-uint8_t CCID_IsIntrTransferComplete(void);
-void CCID_SetIntrTransferStatus (uint8_t );
-void Transfer_Data_Request(uint8_t* dataPointer, uint16_t dataLen);
-void Set_CSW (uint8_t CSW_Status, uint8_t Send_Permission);
-
-#endif /* __USBD_CCID_IF_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_cmd.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_cmd.c
deleted file mode 100644
index 01df95c..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_cmd.c	
+++ /dev/null
@@ -1,1091 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_ccid_cmd.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   CCID Commands handling 
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_ccid_cmd.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-#define CCID_UpdateCommandStatus(cmd_status,icc_status)\
- Ccid_bulkin_data.bStatus=(cmd_status|icc_status)
-  /* 
-  The Above Macro can take any of following Values 
-  #define BM_ICC_PRESENT_ACTIVE 0x00
-  #define BM_ICC_PRESENT_INACTIVE 0x01
-  #define BM_ICC_NO_ICC_PRESENT   0x02
-
-  #define BM_COMMAND_STATUS_OFFSET 0x06
-  #define BM_COMMAND_STATUS_NO_ERROR 0x00 
-  #define BM_COMMAND_STATUS_FAILED   (0x01 << BM_COMMAND_STATUS_OFFSET)
-  #define BM_COMMAND_STATUS_TIME_EXTN  (0x02 << BM_COMMAND_STATUS_OFFSET)
-  */
-
-/* Private variables ---------------------------------------------------------*/
-Ccid_bulkin_data_t Ccid_resp_buff;
-
-/* Private function prototypes -----------------------------------------------*/
-static uint8_t CCID_CheckCommandParams (uint32_t param_type);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  PC_to_RDR_IccPowerOn
-  *         PC_TO_RDR_ICCPOWERON message execution, apply voltage and get ATR	
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t PC_to_RDR_IccPowerOn(void)
-{
-  /* Apply the ICC VCC
-     Fills the Response buffer with ICC ATR 
-     This Command is returned with RDR_to_PC_DataBlock(); 
-  */
-  
-  uint8_t voltage;
-  uint8_t sc_voltage = 0;
-  uint8_t index;
-  uint8_t error;
-  
-  Ccid_bulkin_data.dwLength = 0;  /* Reset Number of Bytes in abData */
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_DWLENGTH | \
-                                  CHK_PARAM_abRFU2 |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_ABORT );
-  if (error != 0) 
-  {
-    return error;
-  }
-  
-  /* Voltage that is applied to the ICC
-  00h – Automatic Voltage Selection
-  01h – 5.0 volts
-  02h – 3.0 volts
-  03h – 1.8 volts
-  */
-  /* Ccid_bulkout_data.bSpecific_0 Contains bPowerSelect */
-  voltage = Ccid_bulkout_data.bSpecific_0;
-  if (voltage >= VOLTAGE_SELECTION_1V8)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-    return SLOTERROR_BAD_POWERSELECT; /* The Voltage specified is out of Spec */
-  }
-  
-  /* Correct Voltage Requested by the Host */
-  if ((voltage == VOLTAGE_SELECTION_AUTOMATIC) || 
-      (voltage == VOLTAGE_SELECTION_3V))
-  {
-    /* voltage == 00 Voltage Automatic 
-    voltage == 01 Voltage Automatic = 5.0V
-    voltage == 02 Voltage Automatic = 3V
-    voltage == 03 Voltage Automatic = 1.8V
-    */
-    sc_voltage = SC_VOLTAGE_3V;
-  }
-  else if (voltage == VOLTAGE_SELECTION_5V)
-  {
-    sc_voltage = SC_VOLTAGE_5V;
-  }
-  
-  SC_AnswerToReset(sc_voltage);
-  
-  /* Check if the Card has come to Active State*/
-  error = CCID_CheckCommandParams(CHK_ACTIVE_STATE);
-  if (error != 0)
-  {
-    /* Check if Voltage is not Automatic */ 
-    if (voltage != 0)
-    { /* If Specific Voltage requested by Host i.e 3V or 5V*/
-      return error;
-    }
-    else
-    {/* Automatic Voltage selection requested by Host */
-      
-      if (sc_voltage != SC_VOLTAGE_5V)
-      { /* If voltage selected was Automatic and 5V is not yet tried */
-        sc_voltage = SC_VOLTAGE_5V;
-        SC_AnswerToReset(sc_voltage);
-  
-        /* Check again the State */      
-        error = CCID_CheckCommandParams(CHK_ACTIVE_STATE);
-        if (error != 0) 
-         return error;
-
-      }
-      else 
-      { /* Voltage requested from Host was 5V already*/
-        CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_INACTIVE);
-        return error;
-      }
-    } /* Voltage Selection was automatic */
-  } /* If Active State */  
-  
-  /* ATR is received, No Error Condition Found */
-  Ccid_bulkin_data.dwLength = SIZE_OF_ATR;
-  CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-
-  for (index=0; index < SIZE_OF_ATR ; index++)
-  {/* Copy the ATR to the Response Buffer */
-    Ccid_bulkin_data.abData[index] = SC_ATR_Table[index];
-  }
-  
-  return SLOT_NO_ERROR;
-}
-
-/**
-  * @brief  PC_to_RDR_IccPowerOff
-  *         Icc VCC is switched Off 
-  * @param  None 
-  * @retval uint8_t error: status of the command execution 
-  */
-uint8_t PC_to_RDR_IccPowerOff(void)
-{
-  /*  The response to this command message is the RDR_to_PC_SlotStatus 
-  response message. */
-  uint8_t error;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_abRFU3 |\
-                                  CHK_PARAM_DWLENGTH );
-  if (error != 0) 
-  {
-    return error;
-  }
-  
-  /* Command is ok, Check for Card Presence */ 
-  if (SC_Detect())
-  { 
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR,BM_ICC_PRESENT_INACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR,BM_ICC_NO_ICC_PRESENT);
-  }
-  
-  /* Power OFF the card */
-  SC_PowerCmd(DISABLE);
-  SC_SetState(SC_POWER_OFF);
-  
-  return SLOT_NO_ERROR;
-}
-
-/**
-  * @brief  PC_to_RDR_GetSlotStatus
-  *         Provides the Slot status to the host 
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_to_RDR_GetSlotStatus(void)
-{
-    uint8_t error;
-
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_DWLENGTH |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_abRFU3 );
-  if (error != 0) 
-  {
-    return error;
-  }
-  
-  CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR,BM_ICC_PRESENT_ACTIVE);
-  return SLOT_NO_ERROR;
-}
-
-
-/**
-  * @brief  PC_to_RDR_XfrBlock
-  *         Handles the Block transfer from Host. 
-  *         Response to this command message is the RDR_to_PC_DataBlock 
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_to_RDR_XfrBlock(void)
-{
-  uint16_t expectedLength;
-  
-      uint8_t error;
-
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_abRFU3 |\
-                                  CHK_PARAM_ABORT |\
-                                  CHK_ACTIVE_STATE );
-  if (error != 0) 
-    return error;
-    
-    if (Ccid_bulkout_data.dwLength > ABDATA_SIZE)
-    { /* Check amount of Data Sent by Host is > than memory allocated ? */
-     
-    return SLOTERROR_BAD_DWLENGTH;
-    }
-
-
-    /* wLevelParameter = Size of expected data to be returned by the 
-                          bulk-IN endpoint */
-    expectedLength = (Ccid_bulkout_data.bSpecific_2 << 8) | 
-                      Ccid_bulkout_data.bSpecific_1;   
-    
-    Ccid_bulkin_data.dwLength = (uint16_t)expectedLength;  
-
-
-    error = SC_XferBlock(&Ccid_bulkout_data.abData[0], 
-                     Ccid_bulkout_data.dwLength, 
-                     expectedLength); 
-
-   if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-    error = SLOT_NO_ERROR;
-  }
-  
-  return error;
-}
-
-
-/**
-  * @brief  PC_to_RDR_GetParameters
-  *         Provides the ICC parameters to the host 
-  *         Response to this command message is the RDR_to_PC_Parameters
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_to_RDR_GetParameters(void)
-{
-  uint8_t error;
-
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_DWLENGTH |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_abRFU3 );
-  if (error != 0) 
-    return error;
-      
-  CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-
-  return SLOT_NO_ERROR;
-}
-
-
-/**
-  * @brief  PC_to_RDR_ResetParameters
-  *         Set the ICC parameters to the default 
-  *         Response to this command message is the RDR_to_PC_Parameters
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_to_RDR_ResetParameters(void)
-{
-  uint8_t error;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_DWLENGTH |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_abRFU3 |\
-                                  CHK_ACTIVE_STATE);
-  if (error != 0) 
-    return error;
-  
-  /* This command resets the slot parameters to their default values */
-  Ccid_bulkout_data.abData[0] = DEFAULT_FIDI;
-  Ccid_bulkout_data.abData[1] = DEFAULT_T01CONVCHECKSUM;
-  Ccid_bulkout_data.abData[2] = DEFAULT_EXTRA_GUARDTIME;
-  Ccid_bulkout_data.abData[3] = DEFAULT_WAITINGINTEGER;
-  Ccid_bulkout_data.abData[4] = DEFAULT_CLOCKSTOP;
-  Ccid_bulkout_data.abData[5] = 0x00;
-  Ccid_bulkout_data.abData[6] = 0x00;
-  
-  error = SC_SetParams((Protocol0_DataStructure_t*)(&(Ccid_bulkout_data.abData[0])));
-  
-   if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-    error = SLOT_NO_ERROR;
-  }
-  
-  return error;
-}
-
-
-/**
-  * @brief  PC_to_RDR_SetParameters
-  *         Set the ICC parameters to the host defined parameters
-  *         Response to this command message is the RDR_to_PC_Parameters
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_to_RDR_SetParameters(void)
-{
-  uint8_t error;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_abRFU2 |\
-                                  CHK_ACTIVE_STATE);
-  if (error != 0) 
-    return error;
-  
-  error = SLOT_NO_ERROR;
-  
-  /* for Protocol T=0 (bProtocolNum=0) (dwLength=00000005h) */
-  if ( (Ccid_bulkout_data.dwLength == 5) &&
-      (Ccid_bulkout_data.bSpecific_0 != 0))
-    error = SLOTERROR_BAD_PROTOCOLNUM;
-  
-  /* for Protocol T=1 (bProtocolNum=1) (dwLength=00000007h) */
-  if ( (Ccid_bulkout_data.dwLength == 7) &&
-      (Ccid_bulkout_data.bSpecific_0 != 1))
-    error = SLOTERROR_CMD_NOT_SUPPORTED;
-    
-  /* For T0, Waiting Integer 0 supported */
-  if (Ccid_bulkout_data.abData[3] != 0)
-    error = SLOTERROR_BAD_WAITINGINTEGER;
-      
-  if (Ccid_bulkout_data.abData[4] != DEFAULT_CLOCKSTOP)
-     error = SLOTERROR_BAD_CLOCKSTOP;
-   
-  if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  } 
-  
-  error = SC_SetParams((Protocol0_DataStructure_t*)(&(Ccid_bulkout_data.abData[0])));
-  
-   if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-    error = SLOT_NO_ERROR;
-  }
-  
-  return error;
-}
-
-
-/**
-  * @brief  PC_to_RDR_Escape
-  *         Execute the Escape command. This is user specific Implementation
-  *         Response to this command message is the RDR_to_PC_Escape
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_to_RDR_Escape(void)
-{
-  uint8_t error;
-  uint16_t size;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_abRFU3 |\
-                                  CHK_PARAM_ABORT |\
-                                  CHK_ACTIVE_STATE);
-  
-  if (error != 0) 
-    return error;
-  
-  error = SC_ExecuteEscape(&Ccid_bulkout_data.abData[0],
-                           Ccid_bulkout_data.dwLength,
-                           &Ccid_bulkin_data.abData[0],
-                           &size);
-  
-  Ccid_bulkin_data.dwLength = size;
-  
-  if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-  }
-  
-  return error;
-}
-
-
-/**
-  * @brief  PC_to_RDR_IccClock
-  *         Execute the Clock specific command from host 
-  *         Response to this command message is the RDR_to_PC_SlotStatus
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_to_RDR_IccClock(void)
-{
-  uint8_t error;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_abRFU2 |\
-                                  CHK_PARAM_DWLENGTH|\
-                                  CHK_ACTIVE_STATE);
-  if (error != 0) 
-    return error;
-
-  /* bClockCommand • 00h restarts Clock
-                   • 01h Stops Clock in the state shown in the bClockStop 
-                       field of the PC_to_RDR_SetParameters command 
-                       and RDR_to_PC_Parameters message.*/
-  if (Ccid_bulkout_data.bSpecific_0 > 1)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-    return SLOTERROR_BAD_CLOCKCOMMAND;
-  }
-  
-  error = SC_SetClock(Ccid_bulkout_data.bSpecific_0);
-  
-  if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-  }
-  
-  return error;
-}
-
-
-/**
-  * @brief  PC_to_RDR_Abort
-  *         Execute the Abort command from host, This stops all Bulk transfers 
-  *         from host and ICC
-  *         Response to this command message is the RDR_to_PC_SlotStatus
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_to_RDR_Abort(void)
-{
-    uint8_t error;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_abRFU3 |\
-                                  CHK_PARAM_DWLENGTH);
-  if (error != 0) 
-    return error;
-  
-  CCID_CmdAbort (Ccid_bulkout_data.bSlot, Ccid_bulkout_data.bSeq);
-  CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR,BM_ICC_PRESENT_ACTIVE);               
-  return SLOT_NO_ERROR;
-}
-
-/**
-  * @brief  CCID_CmdAbort
-  *         Execute the Abort command from Bulk EP or from Control EP,
-  *          This stops all Bulk transfers from host and ICC
-  * @param  uint8_t slot: slot number that host wants to abort
-  * @param  uint8_t seq : Seq number for PC_to_RDR_Abort
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t CCID_CmdAbort(uint8_t slot, uint8_t seq)
-{
-   /* This function is called for REQUEST_ABORT & PC_to_RDR_Abort */
-  
-   if (slot >= CCID_NUMBER_OF_SLOTS)
-   { /* This error condition is possible only from CLASS_REQUEST, otherwise
-     Slot is already checked in parameters from PC_to_RDR_Abort request */
-     /* Slot requested is more than supported by Firmware */
-      CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_NO_ICC_PRESENT);
-      return SLOTERROR_BAD_SLOT;
-   }
-    
-  if ( usb_ccid_param.bAbortRequestFlag == 1)
-  { /* Abort Command was already received from ClassReq or PC_to_RDR */
-    if (( usb_ccid_param.bSeq == seq) && (usb_ccid_param.bSlot == slot))
-    {
-      /* CLASS Specific request is already Received, Reset the abort flag */
-      usb_ccid_param.bAbortRequestFlag = 0;
-    }
-  }
-  else
-  {
-    /* Abort Command was NOT received from ClassReq or PC_to_RDR, 
-       so save them for next ABORT command to verify */
-    usb_ccid_param.bAbortRequestFlag = 1;
-    usb_ccid_param.bSeq = seq ;
-    usb_ccid_param.bSlot = slot;
-  }
-  
-  return 0;
-}
-
-/**
-  * @brief  PC_TO_RDR_T0Apdu
-  *         Execute the PC_TO_RDR_T0APDU command from host
-  *         Response to this command message is the RDR_to_PC_SlotStatus
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_TO_RDR_T0Apdu(void)
-{
-  uint8_t error;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_DWLENGTH |
-                                  CHK_PARAM_ABORT );
-  if (error != 0) 
-    return error;
-  
-  if (Ccid_bulkout_data.bSpecific_0 > 0x03)
-  {/* Bit 0 is associated with field bClassGetResponse
-      Bit 1 is associated with field bClassEnvelope
-      Other bits are RFU.*/
-    
-   CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE); 
-   return SLOTERROR_BAD_BMCHANGES;
-  }
-  
-  error = SC_T0Apdu(Ccid_bulkout_data.bSpecific_0, 
-                    Ccid_bulkout_data.bSpecific_1, 
-                    Ccid_bulkout_data.bSpecific_2);
-  
-   if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-  }
-  
-  return error;
-}
-
-/**
-  * @brief  PC_TO_RDR_Mechanical
-  *         Execute the PC_TO_RDR_MECHANICAL command from host
-  *         Response to this command message is the RDR_to_PC_SlotStatus
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_TO_RDR_Mechanical(void)
-{
-  uint8_t error;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_abRFU2 |\
-                                  CHK_PARAM_DWLENGTH 
-                                   );
-  if (error != 0) 
-    return error;
-  
-  if (Ccid_bulkout_data.bSpecific_0 > 0x05)
-  {/* 01h – Accept Card
-      02h – Eject Card
-      03h – Capture Card
-      04h – Lock Card
-      05h – Unlock Card*/
-    
-   CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE); 
-   return SLOTERROR_BAD_BFUNCTION_MECHANICAL;
-  }
-  
-  error = SC_Mechanical(Ccid_bulkout_data.bSpecific_0);
-  
-   if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-  }
-  
-  return error;
-}
-
-/**
-  * @brief  PC_TO_RDR_SetDataRateAndClockFrequency
-  *         Set the required Card Frequency and Data rate from the host. 
-  *         Response to this command message is the 
-  *           RDR_to_PC_DataRateAndClockFrequency
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_TO_RDR_SetDataRateAndClockFrequency(void)
-{
-  uint8_t error;
-  uint32_t clockFrequency;
-  uint32_t dataRate;
-  uint32_t temp =0;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-    CHK_PARAM_CARD_PRESENT |\
-      CHK_PARAM_abRFU3);
-  if (error != 0) 
-    return error;
-  
-  if (Ccid_bulkout_data.dwLength != 0x08)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_PRESENT_ACTIVE);
-    return SLOTERROR_BAD_LENTGH;
-  } 
-  
-  /* HERE we avoiding to an unaligned memory access*/ 
-  temp = (Ccid_bulkout_data.abData[0]) & 0x000000FF;
-  clockFrequency = temp;
-  
-  temp= (Ccid_bulkout_data.abData[1]) & 0x000000FF;
-  clockFrequency |= temp << 8;
-  
-  temp= (Ccid_bulkout_data.abData[2]) & 0x000000FF;
-  clockFrequency |= temp << 16;
-  
-  temp= (Ccid_bulkout_data.abData[3]) & 0x000000FF;
-  clockFrequency |= temp << 24;
-  
-  temp = (Ccid_bulkout_data.abData[4]) & 0x000000FF;
-  dataRate = temp;
-  
-  temp= (Ccid_bulkout_data.abData[5]) & 0x000000FF;
-  dataRate |= temp << 8;
-  
-  temp= (Ccid_bulkout_data.abData[6]) & 0x000000FF;
-  dataRate |= temp << 16;
-  
-  temp= (Ccid_bulkout_data.abData[7]) & 0x000000FF;
-  dataRate |= temp << 24;
-  
-  error = SC_SetDataRateAndClockFrequency(clockFrequency, dataRate);
-  Ccid_bulkin_data.bError = error;
-  
-  if (error != SLOT_NO_ERROR)
-  {
-    Ccid_bulkin_data.dwLength = 0;
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    Ccid_bulkin_data.dwLength = 8;
-    
-    (Ccid_bulkin_data.abData[0])  = clockFrequency & 0x000000FF ;
-    
-    (Ccid_bulkin_data.abData[1])  =  (clockFrequency & 0x0000FF00) >> 8;
-    
-    (Ccid_bulkin_data.abData[2])  =  (clockFrequency & 0x00FF0000) >> 16;
-    
-    (Ccid_bulkin_data.abData[3])  =  (clockFrequency & 0xFF000000) >> 24;
-    
-    (Ccid_bulkin_data.abData[4])  =  dataRate & 0x000000FF ;
-    
-    (Ccid_bulkin_data.abData[5])  =  (dataRate & 0x0000FF00) >> 8;
-    
-    (Ccid_bulkin_data.abData[6])  =  (dataRate & 0x00FF0000) >> 16;
-    
-    (Ccid_bulkin_data.abData[7])  =  (dataRate & 0xFF000000) >> 24;
-    
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-  }
-  
-  return error;
-}
-
-/**
-  * @brief  PC_TO_RDR_Secure
-  *         Execute the Secure Command from the host. 
-  *         Response to this command message is the RDR_to_PC_DataBlock
-  * @param  None 
-  * @retval uint8_t status of the command execution 
-  */
-uint8_t  PC_TO_RDR_Secure(void)
-{
-  uint8_t error;
-  uint8_t bBWI;
-  uint16_t wLevelParameter;
-  uint32_t responseLen; 
-  
-  Ccid_bulkin_data.dwLength =0;
-  
-  error = CCID_CheckCommandParams(CHK_PARAM_SLOT |\
-                                  CHK_PARAM_CARD_PRESENT |\
-                                  CHK_PARAM_ABORT );
-  
-  if (error != 0) 
-    return error;
-  
-  bBWI = Ccid_bulkout_data.bSpecific_0;
-  wLevelParameter = (Ccid_bulkout_data.bSpecific_1 + ((uint16_t)Ccid_bulkout_data.bSpecific_2<<8));
-  
-  if ((EXCHANGE_LEVEL_FEATURE == TPDU_EXCHANGE) || 
-    (EXCHANGE_LEVEL_FEATURE == SHORT_APDU_EXCHANGE))
-  {
-    /* TPDU level & short APDU level, wLevelParameter is RFU, = 0000h */
-    if (wLevelParameter != 0 )
-    {
-      CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-      error = SLOTERROR_BAD_LEVELPARAMETER;
-      return error;
-    }
-  }
-
-  error = SC_Secure(Ccid_bulkout_data.dwLength, bBWI, wLevelParameter, 
-                    &Ccid_bulkout_data.abData[0], &responseLen);
-
-  Ccid_bulkin_data.dwLength = responseLen;
-  
-  if (error != SLOT_NO_ERROR)
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED, BM_ICC_PRESENT_ACTIVE);
-  }
-  else
-  {
-    CCID_UpdateCommandStatus(BM_COMMAND_STATUS_NO_ERROR, BM_ICC_PRESENT_ACTIVE);
-  }
-  
-  return error;
-}
-
-/******************************************************************************/
-/*		BULK IN ROUTINES															*/
-/******************************************************************************/
-
-/**
-  * @brief  RDR_to_PC_DataBlock
-  *         Provide the data block response to the host 
-  *         Response for PC_to_RDR_IccPowerOn, PC_to_RDR_XfrBlock 
-  * @param  uint8_t errorCode: code to be returned to the host
-  * @retval None 
-  */
-void RDR_to_PC_DataBlock(uint8_t  errorCode)
-{
-  uint16_t length = CCID_RESPONSE_HEADER_SIZE;
-  
-  Ccid_bulkin_data.bMessageType = RDR_TO_PC_DATABLOCK; 
-  Ccid_bulkin_data.bError = errorCode; 
-  Ccid_bulkin_data.bSpecific=0;    /* bChainParameter */
-  
-  if(errorCode == SLOT_NO_ERROR)
-  {
-    length += Ccid_bulkin_data.dwLength;   /* Length Specified in Command */
-  }
-  
-  Transfer_Data_Request( (uint8_t*) (&Ccid_bulkin_data), length);
-
-}
-
-
-/**
-  * @brief  RDR_to_PC_SlotStatus
-  *         Provide the Slot status response to the host 
-  *          Response for PC_to_RDR_IccPowerOff 
-  *                PC_to_RDR_GetSlotStatus
-  *                PC_to_RDR_IccClock
-  *                PC_to_RDR_T0APDU
-  *                PC_to_RDR_Mechanical
-  *         Also the device sends this response message when it has completed 
-  *         aborting a slot after receiving both the Class Specific ABORT request 
-  *          and PC_to_RDR_Abort command message.
-  * @param  uint8_t errorCode: code to be returned to the host
-  * @retval None 
-  */
-void RDR_to_PC_SlotStatus(uint8_t  errorCode)
-{
-  
-  Ccid_bulkin_data.bMessageType = RDR_TO_PC_SLOTSTATUS; 
-  Ccid_bulkin_data.dwLength =0;
-  Ccid_bulkin_data.bError = errorCode; 
-  Ccid_bulkin_data.bSpecific=0;    /* bClockStatus = 00h Clock running
-                                      01h Clock stopped in state L
-                                      02h Clock stopped in state H
-                                      03h Clock stopped in an unknown state
-                                      All other values are RFU. */                                                                            
-
-  Transfer_Data_Request( (uint8_t*) (&Ccid_bulkin_data), 
-                         LEN_RDR_TO_PC_SLOTSTATUS);
-
-}
-
-/**
-  * @brief  RDR_to_PC_Parameters
-  *         Provide the data block response to the host 
-  *         Response for PC_to_RDR_GetParameters, PC_to_RDR_ResetParameters
-  *                      PC_to_RDR_SetParameters
-  * @param  uint8_t errorCode: code to be returned to the host
-  * @retval None 
-  */
-void RDR_to_PC_Parameters(uint8_t  errorCode)
-{
-  uint16_t length = CCID_RESPONSE_HEADER_SIZE;
-  
-  Ccid_bulkin_data.bMessageType = RDR_TO_PC_PARAMETERS; 
-  Ccid_bulkin_data.bError = errorCode; 
-  
-  if(errorCode == SLOT_NO_ERROR)
-  { 
-   Ccid_bulkin_data.dwLength = LEN_PROTOCOL_STRUCT_T0;
-   length += LEN_PROTOCOL_STRUCT_T0;
-  }
-  else
-  {
-   Ccid_bulkin_data.dwLength = 0;
-  }
-    
-  Ccid_bulkin_data.abData[0] = Protocol0_DataStructure.bmFindexDindex ;
-  Ccid_bulkin_data.abData[1] = Protocol0_DataStructure.bmTCCKST0;
-  Ccid_bulkin_data.abData[2] = Protocol0_DataStructure.bGuardTimeT0;
-  Ccid_bulkin_data.abData[3] = Protocol0_DataStructure.bWaitingIntegerT0;
-  Ccid_bulkin_data.abData[4] = Protocol0_DataStructure.bClockStop;
-  
-  /* bProtocolNum */
-  Ccid_bulkin_data.bSpecific = BPROTOCOL_NUM_T0; 
-  
-  Transfer_Data_Request( (uint8_t*) (&Ccid_bulkin_data), length);
-}
-
-/**
-  * @brief  RDR_to_PC_Escape
-  *         Provide the Escaped data block response to the host 
-  *         Response for PC_to_RDR_Escape
-  * @param  uint8_t errorCode: code to be returned to the host
-  * @retval None 
-  */
-void RDR_to_PC_Escape(uint8_t  errorCode)
-{
-  uint16_t length = CCID_RESPONSE_HEADER_SIZE;
-  
-  Ccid_bulkin_data.bMessageType = RDR_TO_PC_ESCAPE; 
-  
-  Ccid_bulkin_data.bSpecific=0;    /* Reserved for Future Use */
-  Ccid_bulkin_data.bError = errorCode; 
-  
-  if(errorCode == SLOT_NO_ERROR)
-  {
-    length += Ccid_bulkin_data.dwLength;   /* Length Specified in Command */
-  }  
-  
-  Transfer_Data_Request( (uint8_t*) (&Ccid_bulkin_data), length);
-}
-
-
-
-/**
-  * @brief  RDR_to_PC_DataRateAndClockFrequency
-  *         Provide the Clock and Data Rate information to host 
-  *         Response for PC_TO_RDR_SetDataRateAndClockFrequency
-  * @param  uint8_t errorCode: code to be returned to the host
-  * @retval None 
-  */
-void RDR_to_PC_DataRateAndClockFrequency(uint8_t  errorCode)
-{
-  uint16_t length = CCID_RESPONSE_HEADER_SIZE;
-  
-  Ccid_bulkin_data.bMessageType = RDR_TO_PC_DATARATEANDCLOCKFREQUENCY; 
-  Ccid_bulkin_data.bError = errorCode; 
-  Ccid_bulkin_data.bSpecific=0;    /* Reserved for Future Use */
-  
-  if(errorCode == SLOT_NO_ERROR)
-  {
-    length += Ccid_bulkin_data.dwLength;   /* Length Specified in Command */
-  }  
-  
-  Transfer_Data_Request( (uint8_t*) (&Ccid_bulkin_data), length);
-}
-
-/**
-  * @brief  RDR_to_PC_NotifySlotChange
-  *         Interrupt message to be sent to the host, Checks the card presence 
-  *           status and update the buffer accordingly
-  * @param  None 
-  * @retval None
-  */
-void RDR_to_PC_NotifySlotChange(void)
-{
-  UsbIntMessageBuffer[OFFSET_INT_BMESSAGETYPE] = RDR_TO_PC_NOTIFYSLOTCHANGE;
-  
-  if (SC_Detect() )
-  {	
-    /* 
-    SLOT_ICC_PRESENT 0x01 : LSb : (0b = no ICC present, 1b = ICC present)
-    SLOT_ICC_CHANGE 0x02 : MSb : (0b = no change, 1b = change).
-    */
-    UsbIntMessageBuffer[OFFSET_INT_BMSLOTICCSTATE] = SLOT_ICC_PRESENT | 
-                                                     SLOT_ICC_CHANGE;	
-  }
-  else
-  {	
-    UsbIntMessageBuffer[OFFSET_INT_BMSLOTICCSTATE] = SLOT_ICC_CHANGE;
-    
-    /* Power OFF the card */
-    SC_PowerCmd(DISABLE);
-    SC_SetState(SC_POWER_OFF);
-  }
-}
-
-
-/**
-  * @brief  CCID_UpdSlotStatus
-  *         Updates the variable for the slot status 
-  * @param  uint8_t slotStatus : slot status from the calling function 
-  * @retval None
-  */
-void CCID_UpdSlotStatus (uint8_t slotStatus)
-{
-   Ccid_SlotStatus.SlotStatus = slotStatus;
-}
-
-/**
-  * @brief  CCID_UpdSlotChange
-  *         Updates the variable for the slot change status 
-  * @param  uint8_t changeStatus : slot change status from the calling function 
-  * @retval None
-  */
-void CCID_UpdSlotChange (uint8_t changeStatus)
-{
-   Ccid_SlotStatus.SlotStatusChange  = changeStatus;
-}
-
-/**
-  * @brief  CCID_IsSlotStatusChange
-  *         Provides the value of the variable for the slot change status 
-  * @param  None
-  * @retval uint8_t slot change status 
-  */
-uint8_t CCID_IsSlotStatusChange (void)
-{
-  return Ccid_SlotStatus.SlotStatusChange;
-}
-
-/**
-  * @brief  CCID_CheckCommandParams
-  *         Checks the specific parameters requested by the function and update 
-  *          status accordingly. This function is called from all 
-  *          PC_to_RDR functions
-  * @param  uint32_t param_type : Parameter enum to be checked by calling function
-  * @retval uint8_t status 
-  */
-static uint8_t CCID_CheckCommandParams (uint32_t param_type)
-{
-  uint32_t parameter;
-  
-  Ccid_bulkin_data.bStatus = BM_ICC_PRESENT_ACTIVE | BM_COMMAND_STATUS_NO_ERROR ;
-  
-  parameter = (uint32_t)param_type;
-  
-  if (parameter & CHK_PARAM_SLOT)
-  {
-    /* 
-    The slot number (bSlot) identifies which ICC slot is being addressed 
-    by the message, if the CCID supports multiple slots. 
-    The slot number is zero-relative, and is in the range of zero to FFh.
-    */
-    
-    /* SLOT Number is 0 onwards, so always < CCID_NUMBER_OF_SLOTs */
-    /* Error Condition !!! */
-    if (Ccid_bulkout_data.bSlot >= CCID_NUMBER_OF_SLOTS)
-    { /* Slot requested is more than supported by Firmware */
-      CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_NO_ICC_PRESENT);
-      return SLOTERROR_BAD_SLOT;
-    }
-  }
-  
-    if (parameter & CHK_PARAM_CARD_PRESENT)
-  {
-    /* Commands Parameters ok, Check the Card Status */  
-    if (SC_Detect() == 0)
-    { /* Card is Not detected */
-      CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_NO_ICC_PRESENT);
-      return SLOTERROR_ICC_MUTE;
-    }
-  }
-  
-  /* Check that DwLength is 0 */
-  if (parameter & CHK_PARAM_DWLENGTH)
-  {
-    if (Ccid_bulkout_data.dwLength != 0)
-    {
-      CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_PRESENT_ACTIVE);
-      return SLOTERROR_BAD_LENTGH;
-    } 
-  }
-  
-  /* abRFU 2 : Reserved for Future Use*/
-  if (parameter & CHK_PARAM_abRFU2)
-  {
-    
-    if ((Ccid_bulkout_data.bSpecific_1 != 0) ||
-        (Ccid_bulkout_data.bSpecific_2 != 0))
-    {
-      CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_PRESENT_ACTIVE);
-      return SLOTERROR_BAD_ABRFU_2B;        /* bSpecific_1 */
-    }
-  }
-  
-  if (parameter & CHK_PARAM_abRFU3)
-  {
-   /* abRFU 3 : Reserved for Future Use*/
-    if ((Ccid_bulkout_data.bSpecific_0 != 0) || 
-       (Ccid_bulkout_data.bSpecific_1 != 0) ||
-       (Ccid_bulkout_data.bSpecific_2 != 0))
-    {
-       CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_PRESENT_ACTIVE);    
-        return SLOTERROR_BAD_ABRFU_3B;    
-    }
-  }
-  
- 
-  if (parameter & CHK_PARAM_ABORT)
-  {
-    if( usb_ccid_param.bAbortRequestFlag )
-    {
-       CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_PRESENT_INACTIVE);    
-      return SLOTERROR_CMD_ABORTED; 
-    }
-  }
-  
-  if (parameter & CHK_ACTIVE_STATE)
-  {
-     /* Commands Parameters ok, Check the Card Status */  
-     /* Card is detected */
-    if (SC_GetState() != SC_ACTIVE_ON_T0)
-    {
-      /* Check that from Lower Layers, the SmartCard come to known state */
-      CCID_UpdateCommandStatus(BM_COMMAND_STATUS_FAILED,BM_ICC_PRESENT_INACTIVE);
-      return SLOTERROR_HW_ERROR;
-    }    
-  }
-  
-  return 0; 
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_core.c
deleted file mode 100644
index 45404b9..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_core.c	
+++ /dev/null
@@ -1,455 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_ccid_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the CCID core functions.
-  *
-  * @verbatim
-  *      
-  *          ===================================================================      
-  *                                CCID Class  Description
-  *          =================================================================== 
-  *           This module manages the Specification for Integrated Circuit(s) 
-  *             Cards Interface Revision 1.1
-  *           This driver implements the following aspects of the specification:
-  *             - Bulk Transfers 
-  *      
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_ccid_core.h"
-    
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/ 
-static uint8_t  USBD_CCID_Init (void  *pdev, 
-                            uint8_t cfgidx);
-
-static uint8_t  USBD_CCID_DeInit (void  *pdev, 
-                              uint8_t cfgidx);
-
-static uint8_t  USBD_CCID_Setup (void  *pdev, 
-                             USB_SETUP_REQ *req);
-
-static uint8_t  USBD_CCID_DataIn (void  *pdev, 
-                              uint8_t epnum);
-
-
-static uint8_t  USBD_CCID_DataOut (void  *pdev, 
-                               uint8_t epnum);
-
-static uint8_t  *USBD_CCID_GetCfgDesc (uint8_t speed, 
-                                      uint16_t *length);
-
-static uint8_t USBD_CCID_EP0_Buff[CCID_EP0_BUFF_SIZ] ;
-
-USBD_Class_cb_TypeDef  USBD_CCID_cb = 
-{
-  USBD_CCID_Init,
-  USBD_CCID_DeInit,
-  USBD_CCID_Setup,
-  NULL, /*EP0_TxSent*/  
-  NULL, /*EP0_RxReady*/
-  USBD_CCID_DataIn,
-  USBD_CCID_DataOut,
-  NULL, /*SOF */      
-  USBD_CCID_GetCfgDesc,
-};
-
-/* USB Mass storage device Configuration Descriptor */
-/*   All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
-const uint8_t USBD_CCID_CfgDesc[SMARTCARD_SIZ_CONFIG_DESC] =
-{
-  
-  0x09,   /* bLength: Configuration Descriptor size */
-  USB_DESC_TYPE_CONFIGURATION,   /* bDescriptorType: Configuration */
-  SMARTCARD_SIZ_CONFIG_DESC,
-  
-  0x00,
-  0x01,   /* bNumInterfaces: 1 interface */
-  0x01,   /* bConfigurationValue: */
-  0x04,   /* iConfiguration: */
-  0x80,         /*bmAttributes: bus powered */
-  0x32,   /* MaxPower 100 mA */
-  
-  /********************  CCID **** interface ********************/
-  0x09,   /* bLength: Interface Descriptor size */
-  0x04,   /* bDescriptorType: */
-  0x00,   /* bInterfaceNumber: Number of Interface */
-  0x00,   /* bAlternateSetting: Alternate setting */
-  0x03,   /* bNumEndpoints: 3 endpoints used */
-  0x0B,   /* bInterfaceClass: user's interface for CCID */
-  0x00,   /* bInterfaceSubClass : */
-  0x00,   /* nInterfaceProtocol : None */
-  0x05,   /* iInterface: */
-
-  /*******************  CCID class descriptor ********************/
-  0x36,   /* bLength: CCID Descriptor size */
-  0x21,	  /* bDescriptorType: Functional Descriptor type. */
-  0x10,	  /* bcdCCID(LSB): CCID Class Spec release number (1.00) */
-  0x01,   /* bcdCCID(MSB) */
-  
-  0x00,	  /* bMaxSlotIndex :highest available slot on this device */
-  0x03,	  /* bVoltageSupport: bit Wise OR for 01h-5.0V 02h-3.0V
-                                    04h 1.8V*/
-  
-  0x01,0x00,0x00,0x00,	/* dwProtocols: 0001h = Protocol T=0 */
-  0x10,0x0E,0x00,0x00,	/* dwDefaultClock: 3.6Mhz = 3600kHz = 0x0E10, 
-                             for 4 Mhz the value is (0x00000FA0) : 
-                            This is used in ETU and waiting time calculations*/
-  0x10,0x0E,0x00,0x00,	/* dwMaximumClock: Maximum supported ICC clock frequency 
-                             in KHz. So, 3.6Mhz = 3600kHz = 0x0E10, 
-                                           4 Mhz (0x00000FA0) : */
-  0x00,			/* bNumClockSupported : no setting from PC 
-                             If the value is 00h, the 
-                            supported clock frequencies are assumed to be the 
-                            default clock frequency defined by dwDefaultClock 
-                            and the maximum clock frequency defined by 
-                            dwMaximumClock */
-  
-  0xCD,0x25,0x00,0x00,	/* dwDataRate: Default ICC I/O data rate in bps
-                            9677 bps = 0x25CD 
-                            for example 10752 bps (0x00002A00) */
-                             
-  0xCD,0x25,0x00,0x00,	/* dwMaxDataRate: Maximum supported ICC I/O data 
-                            rate in bps */
-  0x00,                 /* bNumDataRatesSupported :
-                         The number of data rates that are supported by the CCID
-                         If the value is 00h, all data rates between the default 
-                         data rate dwDataRate and the maximum data rate 
-                         dwMaxDataRate are supported.
-                         Dont support GET_CLOCK_FREQUENCIES
-                        */     
-				
-  0x00,0x00,0x00,0x00,   /* dwMaxIFSD: 0 (T=0 only)   */
-  0x00,0x00,0x00,0x00,   /* dwSynchProtocols  */
-  0x00,0x00,0x00,0x00,   /* dwMechanical: no special characteristics */
-  
-  0x38,0x00,EXCHANGE_LEVEL_FEATURE,0x00,	 
-                         /* dwFeatures: clk, baud rate, voltage : automatic */
-                         /* 00000008h Automatic ICC voltage selection 
-                         00000010h Automatic ICC clock frequency change
-                         00000020h Automatic baud rate change according to 
-                         active parameters provided by the Host or self 
-                         determined 00000100h CCID can set 
-                         ICC in clock stop mode      
-                         
-                         Only one of the following values may be present to 
-                         select a level of exchange:
-                         00010000h TPDU level exchanges with CCID
-                         00020000h Short APDU level exchange with CCID
-                         00040000h Short and Extended APDU level exchange 
-                         If none of those values : character level of exchange*/
-  0x0F,0x01,0x00,0x00,  /* dwMaxCCIDMessageLength: Maximum block size + header*/
-                        /* 261 + 10   */
-  
-  0x00,			/* bClassGetResponse*/
-  0x00,			/* bClassEnvelope */
-  0x00,0x00,		/* wLcdLayout : 0000h no LCD. */
-  0x00,			/* bPINSupport : no PIN verif and modif  */
-  0x01,			/* bMaxCCIDBusySlots	*/
-
-  /********************  CCID   Endpoints ********************/
-  0x07,   /*Endpoint descriptor length = 7*/
-  0x05,   /*Endpoint descriptor type */
-  CCID_BULK_IN_EP,   /*Endpoint address (IN, address 1) */
-  0x02,   /*Bulk endpoint type */
-  LOBYTE(CCID_BULK_EPIN_SIZE),
-  HIBYTE(CCID_BULK_EPIN_SIZE),
-  0x00,   /*Polling interval in milliseconds */
-  
-  0x07,   /*Endpoint descriptor length = 7 */
-  0x05,   /*Endpoint descriptor type */
-  CCID_BULK_OUT_EP,   /*Endpoint address (OUT, address 1) */
-  0x02,   /*Bulk endpoint type */
-  LOBYTE(CCID_BULK_EPOUT_SIZE),
-  HIBYTE(CCID_BULK_EPOUT_SIZE),
-  0x00,   /*Polling interval in milliseconds*/
-    
-    
-  0x07,   /*bLength: Endpoint Descriptor size*/
-  0x05,   /*bDescriptorType:*/
-  CCID_INTR_IN_EP,    /*bEndpointAddress: Endpoint Address (IN)*/
-  0x03,   /* bmAttributes: Interrupt endpoint */
-  LOBYTE(CCID_INTR_EPIN_SIZE),
-  HIBYTE(CCID_INTR_EPIN_SIZE),
-  0x18    /*Polling interval in milliseconds */
-};
-
-/* Private function ----------------------------------------------------------*/ 
-
-/**
-  * @brief  USBD_CCID_Init
-  *         Initialize  the USB CCID Interface 
-  * @param  pdev: device instance
-  * @param  cfgidx: configuration index
-  * @retval status
-  */
-static uint8_t  USBD_CCID_Init (void  *pdev, 
-                            uint8_t cfgidx)
-{
-
-  DCD_PMA_Config(pdev , CCID_BULK_IN_EP,USB_SNG_BUF,CCID_BULK_TX_ADDRESS);
-  DCD_PMA_Config(pdev , CCID_INTR_IN_EP,USB_SNG_BUF,CCID_INT_TX_ADDRESS);
-  DCD_PMA_Config(pdev , CCID_BULK_OUT_EP,USB_SNG_BUF,CCID_BULK_RX_ADDRESS);
-
- 
-  /* Open EP IN */
-  DCD_EP_Open(pdev,
-              CCID_BULK_IN_EP,
-              CCID_BULK_EPIN_SIZE,
-              USB_EP_BULK);
-  
-  /* Open EP OUT */
-  DCD_EP_Open(pdev,
-              CCID_BULK_OUT_EP,
-              CCID_BULK_EPOUT_SIZE,
-              USB_EP_BULK);
- 
-    /* Open INTR EP IN */
-  DCD_EP_Open(pdev,
-              CCID_INTR_IN_EP,
-              CCID_INTR_EPIN_SIZE,
-              USB_EP_INT);
-  
-  /* Init the CCID  layer */
-  CCID_Init(pdev); 
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_CCID_DeInit
-  *         DeInitilaize the usb ccid configuration
-  * @param  pdev: device instance
-  * @param  cfgidx: configuration index
-  * @retval status
-  */
-static uint8_t  USBD_CCID_DeInit (void  *pdev, 
-                              uint8_t cfgidx)
-{
-  /* Close CCID EPs */
-  DCD_EP_Close (pdev , CCID_BULK_IN_EP);
-  DCD_EP_Close (pdev , CCID_BULK_OUT_EP);
-  DCD_EP_Close (pdev , CCID_INTR_IN_EP);
-    
-  /* Un Init the CCID layer */
-  CCID_DeInit(pdev);   
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_CCID_Setup
-  *         Handle the CCID specific requests
-  * @param  pdev: device instance
-  * @param  req: USB request
-  * @retval status
-  */
-static uint8_t  USBD_CCID_Setup (void  *pdev, USB_SETUP_REQ *req)
-{
-  uint8_t slot_nb;
-  uint8_t seq_nb;
-  uint16_t len;
-  
-  switch (req->bmRequest & USB_REQ_TYPE_MASK)
-  {
-  /* Class request */
-  case USB_REQ_TYPE_CLASS :
-    switch (req->bRequest)
-    {
-    case REQUEST_ABORT :
-
-        if ((req->wLength == 0) &&
-         ((req->bmRequest & 0x80) != 0x80))
-        { /* Check bmRequest : No Data-In stage. 0x80 is Data Direction */
-          
-          /* The wValue field contains the slot number (bSlot) in the low byte 
-          and the sequence number (bSeq) in the high byte.*/
-          slot_nb = (uint8_t) ((req->wValue) & 0x00ff);
-          seq_nb = (uint8_t) (((req->wValue) & 0xff00)>>8);
-          
-          if ( CCID_CmdAbort(slot_nb, seq_nb) != 0 )
-          { /* If error is returned by lower layer : 
-                 Generally Slot# may not have matched */
-            USBD_CtlError(pdev , req);
-            return USBD_FAIL; 
-          }
-        }
-      else
-      {
-         USBD_CtlError(pdev , req);
-         return USBD_FAIL; 
-      }
-      break;
-      
-    case REQUEST_GET_CLOCK_FREQUENCIES :
-      if((req->wValue  == 0) && 
-         (req->wLength != 0) &&
-        ((req->bmRequest & 0x80) == 0x80))
-        {   /* Check bmRequest : Data-In stage. 0x80 is Data Direction */
-        
-          if ( SC_Request_GetClockFrequencies(USBD_CCID_EP0_Buff, &len) != 0 )
-          { /* If error is returned by lower layer */
-            USBD_CtlError(pdev , req);
-            return USBD_FAIL; 
-          }
-          else
-          {
-            if (len > CCID_EP0_BUFF_SIZ)
-            {
-              len = CCID_EP0_BUFF_SIZ;
-            }
-            
-            USBD_CtlSendData (pdev,
-                              USBD_CCID_EP0_Buff,
-                              len);
-          }          
-      }
-      else
-      {
-         USBD_CtlError(pdev , req);
-         return USBD_FAIL; 
-      }
-      break;
-
-      case REQUEST_GET_DATA_RATES :
-      if((req->wValue  == 0) && 
-         (req->wLength != 0) &&
-        ((req->bmRequest & 0x80) == 0x80))
-       {  /* Check bmRequest : Data-In stage. 0x80 is Data Direction */
-         
-          if ( SC_Request_GetDataRates(USBD_CCID_EP0_Buff, &len) != 0 )
-          { /* If error is returned by lower layer */
-            USBD_CtlError(pdev , req);
-            return USBD_FAIL; 
-          }
-          else
-          {
-            if (len > CCID_EP0_BUFF_SIZ)
-            {
-              len = CCID_EP0_BUFF_SIZ;
-            }
-            
-            USBD_CtlSendData (pdev,
-                              USBD_CCID_EP0_Buff,
-                              len);
-          } 
-      }
-      else
-      {
-         USBD_CtlError(pdev , req);
-         return USBD_FAIL; 
-      }
-      break;
-      
-    default:
-       USBD_CtlError(pdev , req);
-       return USBD_FAIL; 
-    }
-    break;
-  /* Interface & Endpoint request */
-  case USB_REQ_TYPE_STANDARD:
-    switch (req->bRequest)
-    {
-    case USB_REQ_GET_INTERFACE :
-      break;
-      
-    case USB_REQ_SET_INTERFACE :
-      break;
-    
-    case USB_REQ_CLEAR_FEATURE:  
-
-      /* Re-activate the EP */      
-      DCD_EP_Close (pdev , (uint8_t)req->wIndex);
-      if((((uint8_t)req->wIndex) & 0x80) == 0x80)
-      {
-        DCD_EP_Open(pdev,
-                    ((uint8_t)req->wIndex),
-                    CCID_BULK_EPIN_SIZE,
-                    USB_EP_BULK);
-      }
-      else
-      {
-        DCD_EP_Open(pdev,
-                    ((uint8_t)req->wIndex),
-                    CCID_BULK_EPOUT_SIZE,
-                    USB_EP_BULK);
-      }
-      
-      break;
-      
-    }  
-    break;
-   
-  default:
-    break;
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_CCID_DataIn
-  *         handle data IN Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-static uint8_t  USBD_CCID_DataIn (void  *pdev, 
-                              uint8_t epnum)
-{
-  CCID_BulkMessage_In(pdev , epnum);
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_CCID_DataOut
-  *         handle data OUT Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-static uint8_t  USBD_CCID_DataOut (void  *pdev, 
-                               uint8_t epnum)
-{
-  CCID_BulkMessage_Out(pdev , epnum);
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_CCID_GetCfgDesc 
-  *         return configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-static uint8_t  *USBD_CCID_GetCfgDesc (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (USBD_CCID_CfgDesc);
-  return (uint8_t*)USBD_CCID_CfgDesc;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_if.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_if.c
deleted file mode 100644
index 2efa317..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/ccid/src/usbd_ccid_if.c	
+++ /dev/null
@@ -1,428 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_ccid_if.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the functions for USB Interface for CCID 
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_ccid_if.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-uint8_t Ccid_BulkState;
-uint8_t UsbIntMessageBuffer[INTR_MAX_PACKET_SIZE];  /* data buffer*/
-__IO uint8_t PrevXferComplete_IntrIn;
-usb_ccid_param_t usb_ccid_param;
-
-uint8_t* pUsbMessageBuffer;
-static uint32_t UsbMessageLength;
-Ccid_bulkin_data_t pCcid_resp_buff;
-Ccid_SlotStatus_t Ccid_SlotStatus;
-
-
-uint8_t BulkOut_Data_Buff[BULK_MAX_PACKET_SIZE] ;
-
-Ccid_bulkin_data_t Ccid_bulkin_data ;
-
-Ccid_bulkout_data_t Ccid_bulkout_data ;
-
-uint8_t UsbIntMessageBuffer[INTR_MAX_PACKET_SIZE] ;
-
-/* Private function prototypes -----------------------------------------------*/
-static void CCID_Response_SendData (USB_CORE_HANDLE  *pdev, 
-                              uint8_t* pbuf, 
-                              uint16_t len);
-/* Private function ----------------------------------------------------------*/
-/**
-  * @brief  CCID_Init
-  *         Initialize the CCID USB Layer
-  * @param  pdev: device instance
-  * @retval None
-  */
-void CCID_Init (USB_CORE_HANDLE  *pdev)
-{
-  /* CCID Related Initialization */
-  CCID_SetIntrTransferStatus(1);  /* Transfer Complete Status */
-  CCID_UpdSlotChange(1);
-  SC_InitParams();  
-  
-  /* Prepare EP to Receive First Cmd */
-  DCD_EP_PrepareRx (pdev,
-                    CCID_BULK_OUT_EP,
-                    (uint8_t *)&BulkOut_Data_Buff[0],
-                    CCID_BULK_EPOUT_SIZE);   
-}
-
-/**
-  * @brief  CCID_DeInit
-  *         Uninitialize the CCID Machine
-  * @param  pdev: device instance
-  * @retval None
-  */
-void CCID_DeInit (USB_CORE_HANDLE  *pdev)
-{
-   Ccid_BulkState = CCID_STATE_IDLE;
-}
-
-/**
-  * @brief  CCID_Message_In
-  *         Handle Bulk IN & Intr IN data stage 
-  * @param  pdev: device instance
-  * @param  uint8_t epnum: endpoint index
-  * @retval None
-  */
-void CCID_BulkMessage_In (USB_CORE_HANDLE  *pdev, 
-                     uint8_t epnum)
-{  
-  if (epnum == (CCID_BULK_IN_EP & 0x7F))
-  {/* Filter the epnum by masking with 0x7f (mask of IN Direction)  */
-    
-    /*************** Handle Bulk Transfer IN data completion  *****************/
-    
-    /* Toggle LED1 */
-    STM_EVAL_LEDToggle(LED1);
-    
-    switch (Ccid_BulkState)
-    {
-    case CCID_STATE_SEND_RESP:
-      
-      Ccid_BulkState = CCID_STATE_IDLE;
-      
-      /* Prepare EP to Receive First Cmd */
-      DCD_EP_PrepareRx (pdev,
-                        CCID_BULK_OUT_EP,
-                        (uint8_t *)&BulkOut_Data_Buff[0],
-                        CCID_BULK_EPOUT_SIZE);   
-      
-      break;
-      
-    default:
-      break;
-    }
-  }
-  else if (epnum == (CCID_INTR_IN_EP & 0x7F))
-  {
-    /* Filter the epnum by masking with 0x7f (mask of IN Direction)  */
-    CCID_SetIntrTransferStatus(1);  /* Transfer Complete Status */
-  }
-}
-
-/**
-  * @brief  CCID_BulkMessage_Out
-  *         Proccess CCID OUT data
-  * @param  pdev: device instance
-  * @param  uint8_t epnum: endpoint index
-  * @retval None
-  */
-void CCID_BulkMessage_Out (USB_CORE_HANDLE  *pdev, 
-                           uint8_t epnum)
-{
-  uint16_t dataLen;
-  dataLen = USBD_GetRxCount (pdev, CCID_BULK_OUT_EP);
-   
-  switch (Ccid_BulkState)
-  {
-  case CCID_STATE_IDLE:
-    if (dataLen == 0x00)
-    { /* Zero Length Packet Received */
-      Ccid_BulkState = CCID_STATE_IDLE;
-    }
-    else  if (dataLen >= CCID_MESSAGE_HEADER_SIZE)
-    {
-      UsbMessageLength = dataLen;   /* Store for future use */
-      
-      /* Expected Data Length Packet Received */
-      pUsbMessageBuffer = (uint8_t*) &Ccid_bulkout_data;
-      
-      /* Fill CCID_BulkOut Data Buffer from USB Buffer */
-      CCID_ReceiveCmdHeader(pUsbMessageBuffer, dataLen); 
-      
-      /*
-      Refer : 6 CCID Messages
-      The response messages always contain the exact same slot number, 
-      and sequence number fields from the header that was contained in 
-      the Bulk-OUT command message.
-      */
-      Ccid_bulkin_data.bSlot = Ccid_bulkout_data.bSlot;
-      Ccid_bulkin_data.bSeq = Ccid_bulkout_data.bSeq; 
-      
-      if (dataLen < CCID_BULK_EPOUT_SIZE)
-      {/* Short message, less than the EP Out Size, execute the command,
-        if parameter like dwLength is too big, the appropriate command will 
-        give an error */
-        CCID_CmdDecode(pdev);  
-      }
-      else
-      { /* Long message, receive additional data with command */
-        /* (u8dataLen == CCID_BULK_EPOUT_SIZE) */
-        
-        if (Ccid_bulkout_data.dwLength > ABDATA_SIZE)
-        { /* Check if length of data to be sent by host is > buffer size */
-          
-          /* Too long data received.... Error ! */
-          Ccid_BulkState = CCID_STATE_UNCORRECT_LENGTH;
-        }
-        
-        else 
-        { /* Expect more data on OUT EP */
-          Ccid_BulkState = CCID_STATE_RECEIVE_DATA;
-          pUsbMessageBuffer += dataLen;  /* Point to new offset */      
-          
-          /* Prepare EP to Receive next Cmd */
-          DCD_EP_PrepareRx (pdev,
-                            CCID_BULK_OUT_EP,
-                            (uint8_t *)&BulkOut_Data_Buff[0], 
-                            CCID_BULK_EPOUT_SIZE);  
-          
-        } /* if (dataLen == CCID_BULK_EPOUT_SIZE) ends */
-      } /*  if (dataLen >= CCID_BULK_EPOUT_SIZE) ends */
-    } /* if (dataLen >= CCID_MESSAGE_HEADER_SIZE) ends */
-    break;
-    
-  case CCID_STATE_RECEIVE_DATA:
-    
-    UsbMessageLength += dataLen;
-    
-    if (dataLen < CCID_BULK_EPOUT_SIZE)
-    {/* Short message, less than the EP Out Size, execute the command,
-        if parameter like dwLength is too big, the appropriate command will 
-        give an error */
-      
-      /* Full command is received, process the Command */
-      CCID_ReceiveCmdHeader(pUsbMessageBuffer, dataLen);
-      CCID_CmdDecode(pdev); 
-    }
-    else if (dataLen == CCID_BULK_EPOUT_SIZE)
-    {  
-      if (UsbMessageLength < (Ccid_bulkout_data.dwLength + CCID_CMD_HEADER_SIZE))
-      {
-        CCID_ReceiveCmdHeader(pUsbMessageBuffer, dataLen); /* Copy data */
-        pUsbMessageBuffer += dataLen; 
-        /* Increment the pointer to receive more data */
-        
-        /* Prepare EP to Receive next Cmd */
-        DCD_EP_PrepareRx (pdev,
-                          CCID_BULK_OUT_EP,
-                          (uint8_t *)&BulkOut_Data_Buff[0], 
-                          CCID_BULK_EPOUT_SIZE);  
-      }
-      else if (UsbMessageLength == (Ccid_bulkout_data.dwLength + CCID_CMD_HEADER_SIZE))
-      { 
-        /* Full command is received, process the Command */
-        CCID_ReceiveCmdHeader(pUsbMessageBuffer, dataLen);
-        CCID_CmdDecode(pdev);
-      }
-      else
-      {
-        /* Too long data received.... Error ! */
-        Ccid_BulkState = CCID_STATE_UNCORRECT_LENGTH;
-      }
-    }
-    
-    break;
-  
-  case CCID_STATE_UNCORRECT_LENGTH:
-    Ccid_BulkState = CCID_STATE_IDLE;
-    break;
-  
-  default:
-    break;
-  }
-}
-
-/**
-  * @brief  CCID_CmdDecode
-  *         Parse the commands and Proccess command
-  * @param  pdev: device instance
-  * @retval None
-  */
-void CCID_CmdDecode(USB_CORE_HANDLE  *pdev)
-{
-  uint8_t errorCode;
-  
-  switch (Ccid_bulkout_data.bMessageType)
-  {
-  case PC_TO_RDR_ICCPOWERON:
-    errorCode = PC_to_RDR_IccPowerOn();
-    RDR_to_PC_DataBlock(errorCode);
-    break;
-  case PC_TO_RDR_ICCPOWEROFF:
-    errorCode = PC_to_RDR_IccPowerOff();
-    RDR_to_PC_SlotStatus(errorCode);
-    break;
-  case PC_TO_RDR_GETSLOTSTATUS:
-    errorCode = PC_to_RDR_GetSlotStatus();
-    RDR_to_PC_SlotStatus(errorCode);
-    break;
-  case PC_TO_RDR_XFRBLOCK:
-    errorCode = PC_to_RDR_XfrBlock();
-    RDR_to_PC_DataBlock(errorCode);
-    break;
-  case PC_TO_RDR_GETPARAMETERS:
-    errorCode = PC_to_RDR_GetParameters();
-    RDR_to_PC_Parameters(errorCode);
-    break;
-  case PC_TO_RDR_RESETPARAMETERS:
-    errorCode = PC_to_RDR_ResetParameters();
-    RDR_to_PC_Parameters(errorCode);
-    break;
-  case PC_TO_RDR_SETPARAMETERS:
-    errorCode = PC_to_RDR_SetParameters();
-    RDR_to_PC_Parameters(errorCode);
-    break;
-  case PC_TO_RDR_ESCAPE:
-    errorCode = PC_to_RDR_Escape();
-    RDR_to_PC_Escape(errorCode);
-    break;
-  case PC_TO_RDR_ICCCLOCK:
-    errorCode = PC_to_RDR_IccClock();
-    RDR_to_PC_SlotStatus(errorCode);
-    break;
-  case PC_TO_RDR_ABORT:
-    errorCode = PC_to_RDR_Abort();
-    RDR_to_PC_SlotStatus(errorCode);
-    break;
-  case PC_TO_RDR_T0APDU:
-    errorCode = PC_TO_RDR_T0Apdu();
-    RDR_to_PC_SlotStatus(errorCode);
-    break;
-  case PC_TO_RDR_MECHANICAL:
-    errorCode = PC_TO_RDR_Mechanical();
-    RDR_to_PC_SlotStatus(errorCode);
-    break;   
-  case PC_TO_RDR_SETDATARATEANDCLOCKFREQUENCY:
-    errorCode = PC_TO_RDR_SetDataRateAndClockFrequency();
-    RDR_to_PC_DataRateAndClockFrequency(errorCode);
-    break;
-  case PC_TO_RDR_SECURE:
-    errorCode = PC_TO_RDR_Secure();
-    RDR_to_PC_DataBlock(errorCode);
-    break;
-  default:
-    RDR_to_PC_SlotStatus(SLOTERROR_CMD_NOT_SUPPORTED);
-    break;
-  }
-  
-     /********** Decide for all commands ***************/ 
-  if (Ccid_BulkState == CCID_STATE_SEND_RESP)
-  {
-    CCID_Response_SendData(pdev, (uint8_t*)&Ccid_bulkin_data, 
-                                  Ccid_bulkin_data.u16SizeToSend);
-  }
-}
-
-/**
-  * @brief  Transfer_Data_Request
-  *         Prepare the request response to be sent to the host
-  * @param  uint8_t* dataPointer: Pointer to the data buffer to send
-  * @param  uint16_t dataLen : number of bytes to send
-  * @retval None
-  */
-void Transfer_Data_Request(uint8_t* dataPointer, uint16_t dataLen)
-{
-   /**********  Update Global Variables ***************/
-   Ccid_bulkin_data.u16SizeToSend = dataLen;
-   Ccid_BulkState = CCID_STATE_SEND_RESP;    
-}   
-  
-  
-/**
-  * @brief  CCID_Response_SendData
-  *         Send the data on bulk-in EP 
-  * @param  pdev: device instance
-  * @param  uint8_t* buf: pointer to data buffer
-  * @param  uint16_t len: Data Length
-  * @retval None
-  */
-static void  CCID_Response_SendData(USB_CORE_HANDLE  *pdev,
-                              uint8_t* buf, 
-                              uint16_t len)
-{  
-  DCD_EP_Tx (pdev, CCID_BULK_IN_EP, buf, len);  
-}
-
-/**
-  * @brief  CCID_IntMessage
-  *         Send the Interrupt-IN data to the host
-  * @param  pdev: device instance
-  * @retval None
-  */
-void CCID_IntMessage(USB_CORE_HANDLE  *pdev)
-{
-  /* Check if there us change in Smartcard Slot status */  
-  if ( CCID_IsSlotStatusChange() && CCID_IsIntrTransferComplete() )
-  {
-    /* Check Slot Status is changed. Card is Removed/ Fitted  */
-    RDR_to_PC_NotifySlotChange();
-    
-    CCID_SetIntrTransferStatus(0);  /* Reset the Status */
-    CCID_UpdSlotChange(0);    /* Reset the Status of Slot Change */
-    
-    DCD_EP_Tx (pdev, CCID_INTR_IN_EP, UsbIntMessageBuffer, 2); 
-  }
-}  
-
-/**
-  * @brief  CCID_ReceiveCmdHeader
-  *         Receive the Data from USB BulkOut Buffer to Pointer 
-  * @param  uint8_t* pDst: destination address to copy the buffer
-  * @param  uint8_t u8length: length of data to copy
-  * @retval None
-  */
-void CCID_ReceiveCmdHeader(uint8_t* pDst, uint8_t u8length)
-{
-  uint32_t Counter;
-
-  for (Counter = 0; Counter < u8length; Counter++)
-  {
-    *pDst++ = BulkOut_Data_Buff[Counter];
-  }
-  
-}
-
-/**
-  * @brief  CCID_IsIntrTransferComplete
-  *         Provides the status of previous Interrupt transfer status
-  * @param  None 
-  * @retval uint8_t PrevXferComplete_IntrIn: Value of the previous transfer status
-  */
-uint8_t CCID_IsIntrTransferComplete (void)
-{
-  return PrevXferComplete_IntrIn;
-}
-
-/**
-  * @brief  CCID_IsIntrTransferComplete
-  *         Set the value of the Interrupt transfer status 
-  * @param  uint8_t xfer_Status: Value of the Interrupt transfer status to set
-  * @retval None 
-  */
-void CCID_SetIntrTransferStatus (uint8_t xfer_Status)
-{
-  PrevXferComplete_IntrIn = xfer_Status;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h
deleted file mode 100644
index c71b0a3..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h	
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_cdc_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_cdc_core.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_CDC_CORE_H_
-#define __USB_CDC_CORE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_desc.h"
-
-/* Exported defines ----------------------------------------------------------*/
-
-#define USB_CDC_CONFIG_DESC_SIZ                (67)
-#define USB_CDC_DESC_SIZ                       (67-9)
-
-#define CDC_DESCRIPTOR_TYPE                     0x21
-
-#define DEVICE_CLASS_CDC                        0x02
-#define DEVICE_SUBCLASS_CDC                     0x00
-
-
-#define USB_DEVICE_DESCRIPTOR_TYPE              0x01
-#define USB_CONFIGURATION_DESCRIPTOR_TYPE       0x02
-#define USB_STRING_DESCRIPTOR_TYPE              0x03
-#define USB_INTERFACE_DESCRIPTOR_TYPE           0x04
-#define USB_ENDPOINT_DESCRIPTOR_TYPE            0x05
-
-#define STANDARD_ENDPOINT_DESC_SIZE             0x09
-
-#define CDC_DATA_IN_PACKET_SIZE                CDC_DATA_MAX_PACKET_SIZE
-        
-#define CDC_DATA_OUT_PACKET_SIZE               CDC_DATA_MAX_PACKET_SIZE
-
-/*---------------------------------------------------------------------*/
-/*  CDC definitions                                                    */
-/*---------------------------------------------------------------------*/
-
-/**************************************************/
-/* CDC Requests                                   */
-/**************************************************/
-#define SEND_ENCAPSULATED_COMMAND               0x00
-#define GET_ENCAPSULATED_RESPONSE               0x01
-#define SET_COMM_FEATURE                        0x02
-#define GET_COMM_FEATURE                        0x03
-#define CLEAR_COMM_FEATURE                      0x04
-#define SET_LINE_CODING                         0x20
-#define GET_LINE_CODING                         0x21
-#define SET_CONTROL_LINE_STATE                  0x22
-#define SEND_BREAK                              0x23
-#define NO_CMD                                  0xFF
-
-/* Exported types ------------------------------------------------------------*/
-typedef struct _CDC_IF_PROP
-{
-  uint16_t (*pIf_Init)     (void);   
-  uint16_t (*pIf_DeInit)   (void);   
-  uint16_t (*pIf_Ctrl)     (uint32_t Cmd, uint8_t* Buf, uint32_t Len);
-  uint16_t (*pIf_DataTx)   (uint8_t* Buf, uint32_t Len);
-  uint16_t (*pIf_DataRx)   (uint8_t* Buf, uint32_t Len);
-}
-CDC_IF_Prop_TypeDef;
-
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  USBD_CDC_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
-
-#endif  /* __USB_CDC_CORE_H_ */
-  
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h
deleted file mode 100644
index 7cc95ef..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h	
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_cdc_if_template.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Header for usbd_cdc_if_template.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_CDC_IF_TEMPLATE_H
-#define __USBD_CDC_IF_TEMPLATE_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_conf.h"
-#include "usbd_conf.h"
-#include "usbd_cdc_core.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern CDC_IF_Prop_TypeDef  TEMPLATE_fops;
-
-/* Exported functions ------------------------------------------------------- */
-
-#endif /* __USBD_CDC_IF_TEMPLATE_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c
deleted file mode 100644
index cca1134..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c	
+++ /dev/null
@@ -1,600 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_cdc_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the high layer firmware functions to manage the 
-  *          following functionalities of the USB CDC Class:
-  *           - Initialization and Configuration of high and low layer
-  *           - Enumeration as CDC Device (and enumeration for each implemented memory interface)
-  *           - OUT/IN data transfer
-  *           - Command IN transfer (class requests management)
-  *           - Error management
-  *           
-  *  @verbatim
-  *      
-  *          ===================================================================      
-  *                                CDC Class Driver Description
-  *          =================================================================== 
-  *           This driver manages the "Universal Serial Bus Class Definitions for Communications Devices
-  *           Revision 1.2 November 16, 2007" and the sub-protocol specification of "Universal Serial Bus 
-  *           Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007"
-  *           This driver implements the following aspects of the specification:
-  *             - Device descriptor management
-  *             - Configuration descriptor management
-  *             - Enumeration as CDC device with 2 data endpoints (IN and OUT) and 1 command endpoint (IN)
-  *             - Requests management (as described in section 6.2 in specification)
-  *             - Abstract Control Model compliant
-  *             - Union Functional collection (using 1 IN endpoint for control)
-  *             - Data interface class
-
-  *           @note
-  *             For the Abstract Control Model, this core allows only transmitting the requests to
-  *             lower layer dispatcher (ie. usbd_cdc_vcp.c/.h) which should manage each request and
-  *             perform relative actions.
-  * 
-  *           These aspects may be enriched or modified for a specific user application.
-  *          
-  *            This driver doesn't implement the following aspects of the specification 
-  *            (but it is possible to manage these features with some modifications on this driver):
-  *             - Any class-specific aspect relative to communication classes should be managed by user application.
-  *             - All communication classes other than PSTN are not managed
-  *      
-  *  @endverbatim
-  *                                  
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_cdc_core.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/ 
-
-/*********************************************
-   CDC Device library callbacks
- *********************************************/
-uint8_t  usbd_cdc_Init        (void  *pdev, uint8_t cfgidx);
-uint8_t  usbd_cdc_DeInit      (void  *pdev, uint8_t cfgidx);
-uint8_t  usbd_cdc_Setup       (void  *pdev, USB_SETUP_REQ *req);
-uint8_t  usbd_cdc_EP0_RxReady  (void *pdev);
-uint8_t  usbd_cdc_DataIn      (void *pdev, uint8_t epnum);
-uint8_t  usbd_cdc_DataOut     (void *pdev, uint8_t epnum);
-uint8_t  usbd_cdc_SOF         (void *pdev);
-
-/*********************************************
-   CDC specific management functions
- *********************************************/
-static void Handle_USBAsynchXfer  (void *pdev);
-static uint8_t  *USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length);
-
-extern CDC_IF_Prop_TypeDef  APP_FOPS;
-extern uint8_t USBD_DeviceDesc   [USB_SIZ_DEVICE_DESC];
-
-uint8_t usbd_cdc_OtherCfgDesc  [USB_CDC_CONFIG_DESC_SIZ] ;
-
-static __IO uint32_t  usbd_cdc_AltSet  = 0;
-
-uint8_t USB_Rx_Buffer   [CDC_DATA_MAX_PACKET_SIZE] ;
-
-uint8_t APP_Rx_Buffer   [APP_RX_DATA_SIZE] ; 
-
-uint8_t CmdBuff[CDC_CMD_PACKET_SZE] ;
-__IO uint32_t last_packet = 0;
-uint32_t APP_Rx_ptr_in  = 0;
-uint32_t APP_Rx_ptr_out = 0;
-uint32_t APP_Rx_length  = 0;
-
-uint8_t  USB_Tx_State = 0;
-
-static uint32_t cdcCmd = 0xFF;
-static uint32_t cdcLen = 0;
-
-/* CDC interface class callbacks structure */
-USBD_Class_cb_TypeDef  USBD_CDC_cb = 
-{
-  usbd_cdc_Init,
-  usbd_cdc_DeInit,
-  usbd_cdc_Setup,
-  NULL,                 /* EP0_TxSent, */
-  usbd_cdc_EP0_RxReady,
-  usbd_cdc_DataIn,
-  usbd_cdc_DataOut,
-  usbd_cdc_SOF,    
-  USBD_cdc_GetCfgDesc,
-};
-
-/* USB CDC device Configuration Descriptor */
-const uint8_t usbd_cdc_CfgDesc[USB_CDC_CONFIG_DESC_SIZ] =
-{
-  /*Configuration Descriptor*/
-  0x09,   /* bLength: Configuration Descriptor size */
-  USB_CONFIGURATION_DESCRIPTOR_TYPE,      /* bDescriptorType: Configuration */
-  USB_CDC_CONFIG_DESC_SIZ,                /* wTotalLength:no of returned bytes */
-  0x00,
-  0x02,   /* bNumInterfaces: 2 interface */
-  0x01,   /* bConfigurationValue: Configuration value */
-  0x00,   /* iConfiguration: Index of string descriptor describing the configuration */
-  0xC0,   /* bmAttributes: self powered */
-  0x32,   /* MaxPower 0 mA */
-  
-  /*---------------------------------------------------------------------------*/
-  
-  /*Interface Descriptor */
-  0x09,   /* bLength: Interface Descriptor size */
-  USB_INTERFACE_DESCRIPTOR_TYPE,  /* bDescriptorType: Interface */
-  /* Interface descriptor type */
-  0x00,   /* bInterfaceNumber: Number of Interface */
-  0x00,   /* bAlternateSetting: Alternate setting */
-  0x01,   /* bNumEndpoints: One endpoints used */
-  0x02,   /* bInterfaceClass: Communication Interface Class */
-  0x02,   /* bInterfaceSubClass: Abstract Control Model */
-  0x01,   /* bInterfaceProtocol: Common AT commands */
-  0x00,   /* iInterface: */
-  
-  /*Header Functional Descriptor*/
-  0x05,   /* bLength: Endpoint Descriptor size */
-  0x24,   /* bDescriptorType: CS_INTERFACE */
-  0x00,   /* bDescriptorSubtype: Header Func Desc */
-  0x10,   /* bcdCDC: spec release number */
-  0x01,
-  
-  /*Call Management Functional Descriptor*/
-  0x05,   /* bFunctionLength */
-  0x24,   /* bDescriptorType: CS_INTERFACE */
-  0x01,   /* bDescriptorSubtype: Call Management Func Desc */
-  0x00,   /* bmCapabilities: D0+D1 */
-  0x01,   /* bDataInterface: 1 */
-  
-  /*ACM Functional Descriptor*/
-  0x04,   /* bFunctionLength */
-  0x24,   /* bDescriptorType: CS_INTERFACE */
-  0x02,   /* bDescriptorSubtype: Abstract Control Management desc */
-  0x02,   /* bmCapabilities */
-  
-  /*Union Functional Descriptor*/
-  0x05,   /* bFunctionLength */
-  0x24,   /* bDescriptorType: CS_INTERFACE */
-  0x06,   /* bDescriptorSubtype: Union func desc */
-  0x00,   /* bMasterInterface: Communication class interface */
-  0x01,   /* bSlaveInterface0: Data Class Interface */
-  
-  /*Endpoint 2 Descriptor*/
-  0x07,                           /* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,   /* bDescriptorType: Endpoint */
-  CDC_CMD_EP,                     /* bEndpointAddress */
-  0x03,                           /* bmAttributes: Interrupt */
-  LOBYTE(CDC_CMD_PACKET_SZE),     /* wMaxPacketSize: */
-  HIBYTE(CDC_CMD_PACKET_SZE),
-  0xFF,                           /* bInterval: */
-  
-  /*---------------------------------------------------------------------------*/
-  
-  /*Data class interface descriptor*/
-  0x09,   /* bLength: Endpoint Descriptor size */
-  USB_INTERFACE_DESCRIPTOR_TYPE,  /* bDescriptorType: */
-  0x01,   /* bInterfaceNumber: Number of Interface */
-  0x00,   /* bAlternateSetting: Alternate setting */
-  0x02,   /* bNumEndpoints: Two endpoints used */
-  0x0A,   /* bInterfaceClass: CDC */
-  0x00,   /* bInterfaceSubClass: */
-  0x00,   /* bInterfaceProtocol: */
-  0x00,   /* iInterface: */
-  
-  /*Endpoint OUT Descriptor*/
-  0x07,   /* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,      /* bDescriptorType: Endpoint */
-  CDC_OUT_EP,                        /* bEndpointAddress */
-  0x02,                              /* bmAttributes: Bulk */
-  LOBYTE(CDC_DATA_MAX_PACKET_SIZE),  /* wMaxPacketSize: */
-  HIBYTE(CDC_DATA_MAX_PACKET_SIZE),
-  0x00,                              /* bInterval: ignore for Bulk transfer */
-  
-  /*Endpoint IN Descriptor*/
-  0x07,   /* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,      /* bDescriptorType: Endpoint */
-  CDC_IN_EP,                         /* bEndpointAddress */
-  0x02,                              /* bmAttributes: Bulk */
-  LOBYTE(CDC_DATA_MAX_PACKET_SIZE),  /* wMaxPacketSize: */
-  HIBYTE(CDC_DATA_MAX_PACKET_SIZE),
-  0x00                               /* bInterval: ignore for Bulk transfer */
-} ;
-
-/* Private function ----------------------------------------------------------*/ 
-/**
-  * @brief  usbd_cdc_Init
-  *         Initialize the CDC interface
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-uint8_t  usbd_cdc_Init (void  *pdev, 
-                               uint8_t cfgidx)
-{
-  DCD_PMA_Config(pdev , CDC_IN_EP,USB_SNG_BUF,BULK_IN_TX_ADDRESS);
-  DCD_PMA_Config(pdev , CDC_CMD_EP,USB_SNG_BUF,INT_IN_TX_ADDRESS);
-  DCD_PMA_Config(pdev , CDC_OUT_EP,USB_SNG_BUF,BULK_OUT_RX_ADDRESS);
-
-  /* Open EP IN */
-  DCD_EP_Open(pdev,
-              CDC_IN_EP,
-              CDC_DATA_IN_PACKET_SIZE,
-              USB_EP_BULK);
-  
-  /* Open EP OUT */
-  DCD_EP_Open(pdev,
-              CDC_OUT_EP,
-              CDC_DATA_OUT_PACKET_SIZE,
-              USB_EP_BULK);
-  
-  /* Open Command IN EP */
-  DCD_EP_Open(pdev,
-              CDC_CMD_EP,
-              CDC_CMD_PACKET_SZE,
-              USB_EP_INT);
-  
-
-  
-  /* Initialize the Interface physical components */
-  APP_FOPS.pIf_Init();
-
-  /* Prepare Out endpoint to receive next packet */
-  DCD_EP_PrepareRx(pdev,
-                   CDC_OUT_EP,
-                   (uint8_t*)(USB_Rx_Buffer),
-                   CDC_DATA_OUT_PACKET_SIZE);
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_cdc_Init
-  *         DeInitialize the CDC layer
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-uint8_t  usbd_cdc_DeInit (void  *pdev, 
-                                 uint8_t cfgidx)
-{
-  /* Open EP IN */
-  DCD_EP_Close(pdev,
-              CDC_IN_EP);
-  
-  /* Open EP OUT */
-  DCD_EP_Close(pdev,
-              CDC_OUT_EP);
-  
-  /* Open Command IN EP */
-  DCD_EP_Close(pdev,
-              CDC_CMD_EP);
-
-  /* Restore default state of the Interface physical components */
-  APP_FOPS.pIf_DeInit();
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_cdc_Setup
-  *         Handle the CDC specific requests
-  * @param  pdev: instance
-  * @param  req: usb requests
-  * @retval status
-  */
-uint8_t  usbd_cdc_Setup (void  *pdev, 
-                                USB_SETUP_REQ *req)
-{
-  uint16_t len=USB_CDC_DESC_SIZ;
-  uint8_t  *pbuf= (uint8_t*)usbd_cdc_CfgDesc + 9;
-  
-  switch (req->bmRequest & USB_REQ_TYPE_MASK)
-  {
-    /* CDC Class Requests -------------------------------*/
-  case USB_REQ_TYPE_CLASS :
-      /* Check if the request is a data setup packet */
-      if (req->wLength)
-      {
-        /* Check if the request is Device-to-Host */
-        if (req->bmRequest & 0x80)
-        {
-          /* Get the data to be sent to Host from interface layer */
-          APP_FOPS.pIf_Ctrl(req->bRequest, CmdBuff, req->wLength);
-          
-          /* Send the data to the host */
-          USBD_CtlSendData (pdev, 
-                            CmdBuff,
-                            req->wLength);          
-        }
-        else /* Host-to-Device requeset */
-        {
-          /* Set the value of the current command to be processed */
-          cdcCmd = req->bRequest;
-          cdcLen = req->wLength;
-          
-          /* Prepare the reception of the buffer over EP0
-          Next step: the received data will be managed in usbd_cdc_EP0_TxSent() 
-          function. */
-          USBD_CtlPrepareRx (pdev,
-                             CmdBuff,
-                             req->wLength);          
-        }
-      }
-      else /* No Data request */
-      {
-        /* Transfer the command to the interface layer */
-        APP_FOPS.pIf_Ctrl(req->bRequest, NULL, 0);
-      }
-      
-      return USBD_OK;
-      
-    default:
-      USBD_CtlError (pdev, req);
-      return USBD_FAIL;
-    
-      
-      
-    /* Standard Requests -------------------------------*/
-  case USB_REQ_TYPE_STANDARD:
-    switch (req->bRequest)
-    {
-    case USB_REQ_GET_DESCRIPTOR: 
-      if( (req->wValue >> 8) == CDC_DESCRIPTOR_TYPE)
-      {
-        pbuf = (uint8_t*)usbd_cdc_CfgDesc + 9 + (9 * USBD_ITF_MAX_NUM);
-        len = MIN(USB_CDC_DESC_SIZ , req->wLength);
-      }
-      
-      USBD_CtlSendData (pdev, 
-                        pbuf,
-                        len);
-      break;
-      
-    case USB_REQ_GET_INTERFACE :
-      USBD_CtlSendData (pdev,
-                        (uint8_t *)&usbd_cdc_AltSet,
-                        1);
-      break;
-      
-    case USB_REQ_SET_INTERFACE :
-      if ((uint8_t)(req->wValue) < USBD_ITF_MAX_NUM)
-      {
-        usbd_cdc_AltSet = (uint8_t)(req->wValue);
-      }
-      else
-      {
-        /* Call the error management function (command will be nacked */
-        USBD_CtlError (pdev, req);
-      }
-      break;
-    }
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_cdc_EP0_RxReady
-  *         Data received on control endpoint
-  * @param  pdev: device device instance
-  * @retval status
-  */
-uint8_t  usbd_cdc_EP0_RxReady (void  *pdev)
-{ 
-  if (cdcCmd != NO_CMD)
-  {
-    /* Process the data */
-    APP_FOPS.pIf_Ctrl(cdcCmd, CmdBuff, cdcLen);
-    
-    /* Reset the command variable to default value */
-    cdcCmd = NO_CMD;
-  }
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_audio_DataIn
-  *         Data sent on non-control IN endpoint
-  * @param  pdev: device instance
-  * @param  epnum: endpoint number
-  * @retval status
-  */
-uint8_t  usbd_cdc_DataIn (void *pdev, uint8_t epnum)
-{
-  uint16_t USB_Tx_ptr;
-  uint16_t USB_Tx_length;
-  
-  if (USB_Tx_State == 1)
-  {
-    if (APP_Rx_length == 0) 
-    {
-      if (last_packet ==1)
-      {
-        last_packet =0;
-        
-        /*Send zero-length packet*/
-        DCD_EP_Tx (pdev, CDC_IN_EP, 0, 0);
-      }
-      else
-      {
-        USB_Tx_State = 0;
-      }
-    }
-    else 
-    {
-      if (APP_Rx_length > CDC_DATA_IN_PACKET_SIZE){
-        USB_Tx_ptr = APP_Rx_ptr_out;
-        USB_Tx_length = CDC_DATA_IN_PACKET_SIZE;
-        
-        APP_Rx_ptr_out += CDC_DATA_IN_PACKET_SIZE;
-        APP_Rx_length -= CDC_DATA_IN_PACKET_SIZE;    
-      }
-      else 
-      {
-        USB_Tx_ptr = APP_Rx_ptr_out;
-        USB_Tx_length = APP_Rx_length;
-        
-        APP_Rx_ptr_out += APP_Rx_length;
-        APP_Rx_length = 0;
-        if (APP_Rx_length == CDC_DATA_IN_PACKET_SIZE) last_packet = 1;
-      }
-      
-      /* Prepare the available data buffer to be sent on IN endpoint */
-      DCD_EP_Tx (pdev,
-                 CDC_IN_EP,
-                 (uint8_t*)&APP_Rx_Buffer[USB_Tx_ptr],
-                 USB_Tx_length);
-    }
-  }  
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_cdc_DataOut
-  *         Data received on non-control Out endpoint
-  * @param  pdev: device instance
-  * @param  epnum: endpoint number
-  * @retval status
-  */
-uint8_t  usbd_cdc_DataOut (void *pdev, uint8_t epnum)
-{      
-  uint16_t USB_Rx_Cnt;
-  
-  /* Get the received data buffer and update the counter */
-  USB_Rx_Cnt = ((USB_CORE_HANDLE*)pdev)->dev.out_ep[epnum].xfer_count;
-  
-  /* USB data will be immediately processed, this allow next USB traffic being 
-     NAKed till the end of the application Xfer */
-  APP_FOPS.pIf_DataRx(USB_Rx_Buffer, USB_Rx_Cnt);
-  
-  /* Prepare Out endpoint to receive next packet */
-  DCD_EP_PrepareRx(pdev,
-                   CDC_OUT_EP,
-                   (uint8_t*)(USB_Rx_Buffer),
-                   CDC_DATA_OUT_PACKET_SIZE);
-
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_CDC_SOF
-  *         Start Of Frame event management
-  * @param  pdev: instance
-  * @param  epnum: endpoint number
-  * @retval status
-  */
-uint8_t  usbd_cdc_SOF (void *pdev)
-{      
-  static uint32_t FrameCount = 0;
-  
-  if (FrameCount++ == CDC_IN_FRAME_INTERVAL)
-  {
-    /* Reset the frame counter */
-    FrameCount = 0;
-    
-    /* Check the data to be sent through IN pipe */
-    Handle_USBAsynchXfer(pdev);
-  }
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  Handle_USBAsynchXfer
-  *         Send data to USB
-  * @param  pdev: instance
-  * @retval None
-  */
-static void Handle_USBAsynchXfer (void *pdev)
-{
-  uint16_t USB_Tx_ptr;
-  uint16_t USB_Tx_length;
-  
-  if(USB_Tx_State != 1)
-  {
-    if (APP_Rx_ptr_out == APP_RX_DATA_SIZE)
-    {
-      APP_Rx_ptr_out = 0;
-    }
-    
-    if(APP_Rx_ptr_out == APP_Rx_ptr_in) 
-    {
-      USB_Tx_State = 0; 
-      return;
-    }
-    
-    if(APP_Rx_ptr_out > APP_Rx_ptr_in) /* rollback */
-    { 
-      APP_Rx_length = APP_RX_DATA_SIZE - APP_Rx_ptr_out;
-      
-    }
-    else 
-    {
-      APP_Rx_length = APP_Rx_ptr_in - APP_Rx_ptr_out;
-      
-    }
-    
-    if (APP_Rx_length > CDC_DATA_IN_PACKET_SIZE)
-    {
-      USB_Tx_ptr = APP_Rx_ptr_out;
-      USB_Tx_length = CDC_DATA_IN_PACKET_SIZE;
-      
-      APP_Rx_ptr_out += CDC_DATA_IN_PACKET_SIZE;	
-      APP_Rx_length -= CDC_DATA_IN_PACKET_SIZE;
-    }
-    else
-    {
-      USB_Tx_ptr = APP_Rx_ptr_out;
-      USB_Tx_length = APP_Rx_length;
-      
-      APP_Rx_ptr_out += APP_Rx_length;
-      APP_Rx_length = 0;
-      if (USB_Tx_length == CDC_DATA_IN_PACKET_SIZE) last_packet = 1; //IBA
-      if (APP_Rx_ptr_in == 64) APP_Rx_ptr_in=0;
-    }
-    USB_Tx_State = 1; 
-    
-    DCD_EP_Tx (pdev,
-               CDC_IN_EP,
-               (uint8_t*)&APP_Rx_Buffer[USB_Tx_ptr],
-               USB_Tx_length);
-  }  
-  
-}
-
-/**
-  * @brief  USBD_cdc_GetCfgDesc 
-  *         Return configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-static uint8_t  *USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (usbd_cdc_CfgDesc);
-  return (uint8_t*)usbd_cdc_CfgDesc;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c
deleted file mode 100644
index 76ddec5..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c	
+++ /dev/null
@@ -1,203 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_cdc_if_template.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Generic media access Layer.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_cdc_if_template.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* These are external variables imported from CDC core to be used for IN 
-   transfer management. */
-extern uint8_t  APP_Rx_Buffer []; /* Write CDC received data in this buffer.
-                                     These data will be sent over USB IN endpoint
-                                     in the CDC core functions. */
-extern uint32_t APP_Rx_ptr_in;    /* Increment this pointer or roll it back to
-                                     start address when writing received data
-                                     in the buffer APP_Rx_Buffer. */
-
-/* Private function prototypes -----------------------------------------------*/
-static uint16_t TEMPLATE_Init     (void);
-static uint16_t TEMPLATE_DeInit   (void);
-static uint16_t TEMPLATE_Ctrl     (uint32_t Cmd, uint8_t* Buf, uint32_t Len);
-static uint16_t TEMPLATE_DataTx   (uint8_t* Buf, uint32_t Len);
-static uint16_t TEMPLATE_DataRx (uint8_t* Buf, uint32_t Len);
-
-CDC_IF_Prop_TypeDef TEMPLATE_fops = 
-{
-  TEMPLATE_Init,
-  TEMPLATE_DeInit,
-  TEMPLATE_Ctrl,
-  TEMPLATE_DataTx,
-  TEMPLATE_DataRx
-};
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  TEMPLATE_Init
-  *         Initializes the CDC media low layer
-  * @param  None
-  * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
-  */
-static uint16_t TEMPLATE_Init(void)
-{
-  /*
-     Add your initialization code here 
-  */  
-  return USBD_OK;
-}
-
-/**
-  * @brief  TEMPLATE_DeInit
-  *         DeInitializes the CDC media low layer
-  * @param  None
-  * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
-  */
-static uint16_t TEMPLATE_DeInit(void)
-{
-  /*
-     Add your deinitialization code here 
-  */  
-  return USBD_OK;
-}
-
-
-/**
-  * @brief  TEMPLATE_Ctrl
-  *         Manage the CDC class requests
-  * @param  Cmd: Command code            
-  * @param  Buf: Buffer containing command data (request parameters)
-  * @param  Len: Number of data to be sent (in bytes)
-  * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
-  */
-static uint16_t TEMPLATE_Ctrl (uint32_t Cmd, uint8_t* Buf, uint32_t Len)
-{ 
-  switch (Cmd)
-  {
-  case SEND_ENCAPSULATED_COMMAND:
-    /* Add your code here */
-    break;
-
-  case GET_ENCAPSULATED_RESPONSE:
-    /* Add your code here */
-    break;
-
-  case SET_COMM_FEATURE:
-    /* Add your code here */
-    break;
-
-  case GET_COMM_FEATURE:
-    /* Add your code here */
-    break;
-
-  case CLEAR_COMM_FEATURE:
-    /* Add your code here */
-    break;
-
-  case SET_LINE_CODING:
-    /* Add your code here */
-    break;
-
-  case GET_LINE_CODING:
-    /* Add your code here */
-    break;
-
-  case SET_CONTROL_LINE_STATE:
-    /* Add your code here */
-    break;
-
-  case SEND_BREAK:
-     /* Add your code here */
-    break;    
-    
-  default:
-    break;
-  }
-
-  return USBD_OK;
-}
-
-/**
-  * @brief  TEMPLATE_DataTx
-  *         CDC received data to be send over USB IN endpoint are managed in 
-  *         this function.
-  * @param  Buf: Buffer of data to be sent
-  * @param  Len: Number of data to be sent (in bytes)
-  * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
-  */
-static uint16_t TEMPLATE_DataTx (uint8_t* Buf, uint32_t Len)
-{
-
-  /* Get the data to be sent */
-  for (i = 0; i < Len; i++)
-  {
-    /* APP_Rx_Buffer[APP_Rx_ptr_in] = XXX_ReceiveData(XXX); */
-  }
-
-  /* Increment the in pointer */
-  APP_Rx_ptr_in++;
-  
-  /* To avoid buffer overflow */
-  if(APP_Rx_ptr_in == APP_RX_DATA_SIZE)
-  {
-    APP_Rx_ptr_in = 0;
-  }  
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  TEMPLATE_DataRx
-  *         Data received over USB OUT endpoint are sent over CDC interface 
-  *         through this function.
-  *           
-  *         @note
-  *         This function will block any OUT packet reception on USB endpoint 
-  *         untill exiting this function. If you exit this function before transfer
-  *         is complete on CDC interface (ie. using DMA controller) it will result 
-  *         in receiving more data while previous ones are still not sent.
-  *                 
-  * @param  Buf: Buffer of data to be received
-  * @param  Len: Number of data received (in bytes)
-  * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
-  */
-static uint16_t TEMPLATE_DataRx (uint8_t* Buf, uint32_t Len)
-{
-  uint32_t i;
-  
-  /* Send the received buffer */
-  for (i = 0; i < Len; i++)
-  {
-    /* XXXX_SendData(XXXX, *(Buf + i) ); */
-  } 
- 
-  return USBD_OK;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h
deleted file mode 100644
index 56bb040..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h	
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_dfu_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_dfu_core.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_DFU_CORE_H_
-#define __USB_DFU_CORE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_dfu_mal.h"
-#include "usbd_req.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define USB_DFU_CONFIG_DESC_SIZ       (18 + (9 * USBD_ITF_MAX_NUM))
-#define USB_DFU_DESC_SIZ              9
-
-#define DFU_DESCRIPTOR_TYPE           0x21
-
-
-/*---------------------------------------------------------------------*/
-/*  DFU definitions                                                    */
-/*---------------------------------------------------------------------*/
-/**************************************************/
-/* DFU Requests  DFU states                       */
-/**************************************************/
-
-
-#define STATE_appIDLE                 0x00
-#define STATE_appDETACH               0x01
-#define STATE_dfuIDLE                 0x02
-#define STATE_dfuDNLOAD_SYNC          0x03
-#define STATE_dfuDNBUSY               0x04
-#define STATE_dfuDNLOAD_IDLE          0x05
-#define STATE_dfuMANIFEST_SYNC        0x06
-#define STATE_dfuMANIFEST             0x07
-#define STATE_dfuMANIFEST_WAIT_RESET  0x08
-#define STATE_dfuUPLOAD_IDLE          0x09
-#define STATE_dfuERROR                0x0A
-
-/**************************************************/
-/* DFU Requests  DFU status                       */
-/**************************************************/
-
-#define STATUS_OK                   0x00
-#define STATUS_ERRTARGET            0x01
-#define STATUS_ERRFILE              0x02
-#define STATUS_ERRWRITE             0x03
-#define STATUS_ERRERASE             0x04
-#define STATUS_ERRCHECK_ERASED      0x05
-#define STATUS_ERRPROG              0x06
-#define STATUS_ERRVERIFY            0x07
-#define STATUS_ERRADDRESS           0x08
-#define STATUS_ERRNOTDONE           0x09
-#define STATUS_ERRFIRMWARE          0x0A
-#define STATUS_ERRVENDOR            0x0B
-#define STATUS_ERRUSBR              0x0C
-#define STATUS_ERRPOR               0x0D
-#define STATUS_ERRUNKNOWN           0x0E
-#define STATUS_ERRSTALLEDPKT        0x0F
-
-/**************************************************/
-/* DFU Requests  DFU states Manifestation State   */
-/**************************************************/
-
-#define Manifest_complete           0x00
-#define Manifest_In_Progress        0x01
-
-
-/**************************************************/
-/* Special Commands  with Download Request        */
-/**************************************************/
-
-#define CMD_GETCOMMANDS              0x00
-#define CMD_SETADDRESSPOINTER        0x21
-#define CMD_ERASE                    0x41
-
-/**************************************************/
-/* Other defines                                  */
-/**************************************************/
-/* Bit Detach capable = bit 3 in bmAttributes field */
-#define DFU_DETACH_MASK              (uint8_t)(1 << 4)
-
-/* Exported types ------------------------------------------------------------*/
-/**************************************************/
-/* DFU Requests                                   */
-/**************************************************/
-
-typedef enum _DFU_REQUESTS {
-  DFU_DETACH = 0,
-  DFU_DNLOAD = 1,
-  DFU_UPLOAD,
-  DFU_GETSTATUS,
-  DFU_CLRSTATUS,
-  DFU_GETSTATE,
-  DFU_ABORT
-} DFU_REQUESTS;
-
-typedef  void (*pFunction)(void);
-
-/* Exported macros -----------------------------------------------------------*/
-/**********  Descriptor of DFU interface 0 Alternate setting n ****************/  
-#define USBD_DFU_IF_DESC(n)   0x09,   /* bLength: Interface Descriptor size */ \
-                              USB_INTERFACE_DESCRIPTOR_TYPE,   /* bDescriptorType */ \
-                              0x00,   /* bInterfaceNumber: Number of Interface */ \
-                              (n),      /* bAlternateSetting: Alternate setting */ \
-                              0x00,   /* bNumEndpoints*/ \
-                              0xFE,   /* bInterfaceClass: Application Specific Class Code */ \
-                              0x01,   /* bInterfaceSubClass : Device Firmware Upgrade Code */ \
-                              0x02,   /* nInterfaceProtocol: DFU mode protocol */ \
-                              USBD_IDX_INTERFACE_STR + (n) + 1 /* iInterface: Index of string descriptor */ \
-                              /* 18 */
-                              
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  DFU_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
-
-#endif  /* __USB_DFU_CORE_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h
deleted file mode 100644
index c0f1d48..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h	
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_dfu_mal.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Header for usbd_dfu_mal.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __DFU_MAL_H
-#define __DFU_MAL_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_conf.h"
-#include "usbd_dfu_core.h"
-
-/* Exported types ------------------------------------------------------------*/
-typedef struct _DFU_MAL_PROP
-{
-  const uint8_t* pStrDesc;
-  uint16_t (*pMAL_Init)     (void);   
-  uint16_t (*pMAL_DeInit)   (void);   
-  uint16_t (*pMAL_Erase)    (uint32_t Add);
-  uint16_t (*pMAL_Write)    (uint32_t Add, uint32_t Len);
-  uint8_t  *(*pMAL_Read)    (uint32_t Add, uint32_t Len);
-  uint16_t (*pMAL_CheckAdd) (uint32_t Add);
-  const uint32_t EraseTiming;
-  const uint32_t WriteTiming;
-}
-DFU_MAL_Prop_TypeDef;
-
-
-/* Exported defines --------------------------------------------------------*/
-#define MAL_OK                          0
-#define MAL_FAIL                        1
-
-/* Exported macro ------------------------------------------------------------*/
-#define _1st_BYTE(x)  (uint8_t)((x)&0xFF)             /* 1st addressing cycle */
-#define _2nd_BYTE(x)  (uint8_t)(((x)&0xFF00)>>8)      /* 2nd addressing cycle */
-#define _3rd_BYTE(x)  (uint8_t)(((x)&0xFF0000)>>16)   /* 3rd addressing cycle */
-#define _4th_BYTE(x)  (uint8_t)(((x)&0xFF000000)>>24) /* 4th addressing cycle */
-
-#define SET_POLLING_TIMING(x)   buffer[1] = _1st_BYTE(x);\
-                                buffer[2] = _2nd_BYTE(x);\
-                                buffer[3] = _3rd_BYTE(x);  
-
-/* Exported functions ------------------------------------------------------- */
-uint16_t MAL_Init (void);
-uint16_t MAL_DeInit (void);
-uint16_t MAL_Erase (uint32_t SectorAddress);
-uint16_t MAL_Write (uint32_t SectorAddress, uint32_t DataLength);
-uint8_t *MAL_Read  (uint32_t SectorAddress, uint32_t DataLength);
-uint16_t MAL_GetStatus(uint32_t SectorAddress ,uint8_t Cmd, uint8_t *buffer);
-
-extern uint8_t  MAL_Buffer[XFERSIZE]; /* RAM Buffer for Downloaded Data */
-
-#endif /* __DFU_MAL_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h
deleted file mode 100644
index a159240..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h	
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_flash_if.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Header for usbd_flash_if.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __FLASH_IF_MAL_H
-#define __FLASH_IF_MAL_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_dfu_mal.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define FLASH_START_ADD                  0x08000000
-
-#define FLASH_END_ADD                   0x08040000
-#define FLASH_IF_STRING    (uint8_t*) "@Internal Flash   /0x08000000/12*001Ka,116*001Kg"  
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macro ------------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern DFU_MAL_Prop_TypeDef DFU_Flash_cb;
-
-/* Exported functions ------------------------------------------------------- */
-
-#endif /* __FLASH_IF_MAL_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h
deleted file mode 100644
index afdb472..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h	
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_mem_if_template.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Header for usbd_mem_if_template.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __MEM_IF_MAL_H
-#define __MEM_IF_MAL_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_conf.h"
-#include "usbd_dfu_mal.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define MEM_START_ADD                 0x00000000 /* Dummy start address */
-#define MEM_END_ADD                   (uint32_t)(MEM_START_ADD + (5 * 1024)) /* Dummy Size = 5KB */
-
-#define MEM_IF_STRING                 "@Dummy Memory   /0x00000000/01*002Kg,03*001Kg"
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macro ------------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern DFU_MAL_Prop_TypeDef DFU_Mem_cb;
-
-/* Exported functions ------------------------------------------------------- */
-
-#endif /* __MEM_IF_MAL_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c
deleted file mode 100644
index a6f47ab..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c	
+++ /dev/null
@@ -1,842 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_dfu_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the high layer firmware functions to manage the 
-  *          following functionalities of the USB DFU Class:
-  *           - Initialization and Configuration of high and low layer
-  *           - Enumeration as DFU Device (and enumeration for each implemented memory interface)
-  *           - Transfers to/from memory interfaces
-  *           - Easy-to-customize "plug-in-like" modules for adding/removing memory interfaces.
-  *           - Error management
-  *           
-  *  @verbatim
-  *      
-  *          ===================================================================      
-  *                                DFU Class Driver Description
-  *          =================================================================== 
-  *           This driver manages the DFU class V1.1 following the "Device Class Specification for 
-  *           Device Firmware Upgrade Version 1.1 Aug 5, 2004".
-  *           This driver implements the following aspects of the specification:
-  *             - Device descriptor management
-  *             - Configuration descriptor management
-  *             - Enumeration as DFU device (in DFU mode only)
-  *             - Requests management (supporting ST DFU sub-protocol)
-  *             - Memory operations management (Download/Upload/Erase/Detach/GetState/GetStatus)
-  *             - DFU state machine implementation.
-  *          
-  *           @note
-  *            ST DFU sub-protocol is compliant with DFU protocol and use sub-requests to manage
-  *            memory addressing, commands processing, specific memories operations (ie. Erase) ...
-  *            As required by the DFU specification, only endpoint 0 is used in this application.
-  *            Other endpoints and functions may be added to the application (ie. DFU ...)
-  * 
-  *           These aspects may be enriched or modified for a specific user application.
-  *          
-  *           This driver doesn't implement the following aspects of the specification 
-  *           (but it is possible to manage these features with some modifications on this driver):
-  *             - Manifestation Tolerant mode
-  *      
-  *  @endverbatim
-  *                                  
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_dfu_core.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-uint8_t usbd_dfu_OtherCfgDesc[USB_DFU_CONFIG_DESC_SIZ] ;
-
-/* The list of Interface String descriptor pointers is defined in usbd_dfu_mal.c 
-  file. This list can be updated whenever a memory has to be added or removed */
-extern const uint8_t* usbd_dfu_StringDesc[];
-
-/* State Machine variables */
-uint8_t DeviceState;
-uint8_t DeviceStatus[6];
-uint32_t Manifest_State = Manifest_complete;
-/* Data Management variables */
-static uint32_t wBlockNum = 0, wlength = 0;
-static uint32_t Pointer = APP_DEFAULT_ADD;  /* Base Address to Erase, Program or Read */
-static __IO uint32_t  usbd_dfu_AltSet = 0;
-
-extern uint8_t MAL_Buffer[];
-
-/*********************************************
-   DFU Device library callbacks
- *********************************************/
-static uint8_t  usbd_dfu_Init     (void  *pdev, 
-                                  uint8_t cfgidx);
-
-static uint8_t  usbd_dfu_DeInit   (void  *pdev, 
-                                  uint8_t cfgidx);
-
-static uint8_t  usbd_dfu_Setup    (void  *pdev, 
-                                  USB_SETUP_REQ *req);
-
-static uint8_t  EP0_TxSent        (void  *pdev);
-
-static uint8_t  EP0_RxReady       (void  *pdev);
-
-
-static uint8_t  *USBD_DFU_GetCfgDesc (uint8_t speed, 
-                                      uint16_t *length);
-
-
-static uint8_t* USBD_DFU_GetUsrStringDesc (uint8_t speed, 
-                                           uint8_t index ,
-                                           uint16_t *length);
-
-
-/* DFU interface class callbacks structure */
-USBD_Class_cb_TypeDef  DFU_cb = 
-{
-  usbd_dfu_Init,
-  usbd_dfu_DeInit,
-  usbd_dfu_Setup,
-  EP0_TxSent,
-  EP0_RxReady,
-  NULL, /* DataIn, */
-  NULL, /* DataOut, */
-  NULL, /*SOF */     
-  USBD_DFU_GetCfgDesc,
-  USBD_DFU_GetUsrStringDesc,
-};
-
-/* USB DFU device Configuration Descriptor */
-const uint8_t usbd_dfu_CfgDesc[USB_DFU_CONFIG_DESC_SIZ] =
-{
-  0x09, /* bLength: Configuration Descriptor size */
-  USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
-  USB_DFU_CONFIG_DESC_SIZ,
-  /* wTotalLength: Bytes returned */
-  0x00,
-  0x01,         /*bNumInterfaces: 1 interface*/
-  0x01,         /*bConfigurationValue: Configuration value*/
-  0x02,         /*iConfiguration: Index of string descriptor describing the configuration*/
-  0xC0,         /*bmAttributes: bus powered and Supports Remote Wakeup */
-  0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/
-  /* 09 */
-  
-  /**********  Descriptor of DFU interface 0 Alternate setting 0 **************/  
-  USBD_DFU_IF_DESC(0), /* This interface is mandatory for all devices */
-  
-#if (USBD_ITF_MAX_NUM > 1)
-  /**********  Descriptor of DFU interface 0 Alternate setting 1 **************/ 
-  USBD_DFU_IF_DESC(1),
-#endif /* (USBD_ITF_MAX_NUM > 1) */
-
-#if (USBD_ITF_MAX_NUM > 2)
-  /**********  Descriptor of DFU interface 0 Alternate setting 2 **************/ 
-  USBD_DFU_IF_DESC(2),
-#endif /* (USBD_ITF_MAX_NUM > 2) */
-
-#if (USBD_ITF_MAX_NUM > 3)
-  /**********  Descriptor of DFU interface 0 Alternate setting 3 **************/ 
-  USBD_DFU_IF_DESC(3),
-#endif /* (USBD_ITF_MAX_NUM > 3) */
-
-#if (USBD_ITF_MAX_NUM > 4)
-  /**********  Descriptor of DFU interface 0 Alternate setting 4 **************/ 
-  USBD_DFU_IF_DESC(4),
-#endif /* (USBD_ITF_MAX_NUM > 4) */
-
-#if (USBD_ITF_MAX_NUM > 5)
-  /**********  Descriptor of DFU interface 0 Alternate setting 5 **************/ 
-  USBD_DFU_IF_DESC(5),
-#endif /* (USBD_ITF_MAX_NUM > 5) */
-
-#if (USBD_ITF_MAX_NUM > 6)
-#error "ERROR: usbd_dfu_core.c: Modify the file to support more descriptors!"
-#endif /* (USBD_ITF_MAX_NUM > 6) */
-
-  /******************** DFU Functional Descriptor********************/
-  0x09,   /*blength = 9 Bytes*/
-  DFU_DESCRIPTOR_TYPE,   /* DFU Functional Descriptor*/
-  0x0B,   /*bmAttribute
-                bitCanDnload             = 1      (bit 0)
-                bitCanUpload             = 1      (bit 1)
-                bitManifestationTolerant = 0      (bit 2)
-                bitWillDetach            = 1      (bit 3)
-                Reserved                          (bit4-6)
-                bitAcceleratedST         = 0      (bit 7)*/
-  0xFF,   /*DetachTimeOut= 255 ms*/
-  0x00,
-  TRANSFER_SIZE_BYTES(XFERSIZE),       /* TransferSize = 1024 Byte*/         
-  0x1A,                                /* bcdDFUVersion*/
-  0x01
-  /***********************************************************/
-  /* 9*/
-} ;
-/* Private function prototypes -----------------------------------------------*/
-
-/*********************************************
-   DFU Requests management functions
- *********************************************/
-static void DFU_Req_DETACH    (void *pdev, 
-                               USB_SETUP_REQ *req);
-
-static void DFU_Req_DNLOAD    (void *pdev,
-                               USB_SETUP_REQ *req);
-
-static void DFU_Req_UPLOAD    (void *pdev,
-                               USB_SETUP_REQ *req);
-
-static void DFU_Req_GETSTATUS (void *pdev);
-
-static void DFU_Req_CLRSTATUS (void *pdev);
-
-static void DFU_Req_GETSTATE  (void *pdev);
-
-static void DFU_Req_ABORT     (void *pdev);
-
-static void DFU_LeaveDFUMode  (void *pdev); 
-
-/* Private function ----------------------------------------------------------*/
-
-/**
-  * @brief  usbd_dfu_Init
-  *         Initializes the DFU interface.
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  usbd_dfu_Init (void  *pdev, 
-                               uint8_t cfgidx)
-{
-  /* Initialize the MAL(Media Access Layer) */
-  MAL_Init();
-  
-  /* Initialize the state of the DFU interface */
-  DeviceState = STATE_dfuIDLE;
-  DeviceStatus[0] = STATUS_OK;
-  DeviceStatus[4] = DeviceState;
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_dfu_Init
-  *         De-initializes the DFU layer.
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  usbd_dfu_DeInit (void  *pdev, 
-                                 uint8_t cfgidx)
-{
-  /* Restore default state */
-  DeviceState = STATE_dfuIDLE;
-  DeviceStatus[0] = STATUS_OK;
-  DeviceStatus[4] = DeviceState;
-  wBlockNum = 0;
-  wlength = 0;
-
-  /* DeInitilialize the MAL(Media Access Layer) */
-  MAL_DeInit();
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  usbd_dfu_Setup
-  *         Handles the DFU request parsing.
-  * @param  pdev: instance
-  * @param  req: usb requests
-  * @retval status
-  */
-static uint8_t  usbd_dfu_Setup (void  *pdev, 
-                                USB_SETUP_REQ *req)
-{
-  uint16_t len = 0;
-  uint8_t  *pbuf = NULL;
-  
-  switch (req->bmRequest & USB_REQ_TYPE_MASK)
-  {
-    /* DFU Class Requests -------------------------------*/
-  case USB_REQ_TYPE_CLASS :  
-    switch (req->bRequest)
-    {
-    case DFU_DNLOAD:
-      DFU_Req_DNLOAD(pdev, req);
-      break;
-      
-    case DFU_UPLOAD:
-      DFU_Req_UPLOAD(pdev, req);   
-      break;
-      
-    case DFU_GETSTATUS:
-      DFU_Req_GETSTATUS(pdev);
-      break;
-      
-    case DFU_CLRSTATUS:
-      DFU_Req_CLRSTATUS(pdev);
-      break;      
-
-    case DFU_GETSTATE:
-      DFU_Req_GETSTATE(pdev);
-      break;  
-
-    case DFU_ABORT:
-      DFU_Req_ABORT(pdev);
-      break;
-
-    case DFU_DETACH:
-      DFU_Req_DETACH(pdev, req);
-      break;
-
-    default:
-      USBD_CtlError (pdev, req);
-      return USBD_FAIL;
-    }
-    break;
-    
-    /* Standard Requests -------------------------------*/
-  case USB_REQ_TYPE_STANDARD:
-    switch (req->bRequest)
-    {
-    case USB_REQ_GET_DESCRIPTOR: 
-      if( (req->wValue >> 8) == DFU_DESCRIPTOR_TYPE)
-      {
-        pbuf = (uint8_t*)usbd_dfu_CfgDesc + 9 + (9 * USBD_ITF_MAX_NUM);
-        len = MIN(USB_DFU_DESC_SIZ , req->wLength);
-      }
-      
-      USBD_CtlSendData (pdev, 
-                        pbuf,
-                        len);
-      break;
-      
-    case USB_REQ_GET_INTERFACE :
-      USBD_CtlSendData (pdev,
-                        (uint8_t *)&usbd_dfu_AltSet,
-                        1);
-      break;
-      
-    case USB_REQ_SET_INTERFACE :
-      if ((uint8_t)(req->wValue) < USBD_ITF_MAX_NUM)
-      {
-        usbd_dfu_AltSet = (uint8_t)(req->wValue);
-      }
-      else
-      {
-        /* Call the error management function (command will be nacked */
-        USBD_CtlError (pdev, req);
-      }
-      break;
-    }
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  EP0_TxSent
-  *         Handles the DFU control endpoint data IN stage.
-  * @param  pdev: device instance
-  * @retval status
-  */
-static uint8_t  EP0_TxSent (void  *pdev)
-{
-  uint32_t Addr;
-  USB_SETUP_REQ req;  
-  
-  if (DeviceState == STATE_dfuDNBUSY)
-  {
-    /* Decode the Special Command*/
-    if (wBlockNum == 0)   
-    {
-      if ((MAL_Buffer[0] ==  CMD_GETCOMMANDS) && (wlength == 1))
-      {}
-      else if  (( MAL_Buffer[0] ==  CMD_SETADDRESSPOINTER ) && (wlength == 5))
-      {
-        Pointer  = MAL_Buffer[1];
-        Pointer += MAL_Buffer[2] << 8;
-        Pointer += MAL_Buffer[3] << 16;
-        Pointer += MAL_Buffer[4] << 24;
-      }
-      else if (( MAL_Buffer[0] ==  CMD_ERASE ) && (wlength == 5))
-      {
-        Pointer  = MAL_Buffer[1];
-        Pointer += MAL_Buffer[2] << 8;
-        Pointer += MAL_Buffer[3] << 16;
-        Pointer += MAL_Buffer[4] << 24;
-        MAL_Erase(Pointer);
-      }
-      else
-      {
-        /* Reset the global length and block number */
-        wlength = 0;
-        wBlockNum = 0;     
-        /* Call the error management function (command will be nacked) */
-        req.bmRequest = 0;
-        req.wLength = 1;
-        USBD_CtlError (pdev, &req);
-      }
-    }
-    /* Regular Download Command */
-    else if (wBlockNum > 1)  
-    {
-      /* Decode the required address */
-      Addr = ((wBlockNum - 2) * XFERSIZE) + Pointer;
-      
-      /* Preform the write operation */
-      MAL_Write(Addr, wlength);
-    }
-    /* Reset the global length and block number */
-    wlength = 0;
-    wBlockNum = 0;
-    
-    /* Update the state machine */
-    DeviceState =  STATE_dfuDNLOAD_SYNC;
-    DeviceStatus[4] = DeviceState;
-    DeviceStatus[1] = 0;
-    DeviceStatus[2] = 0;
-    DeviceStatus[3] = 0;
-    return USBD_OK;
-  }
-  else if (DeviceState == STATE_dfuMANIFEST)/* Manifestation in progress*/
-  {
-    /* Start leaving DFU mode */
-    DFU_LeaveDFUMode(pdev);
-  }
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  EP0_RxReady
-  *         Handles the DFU control endpoint data OUT stage.
-  * @param  pdev: device instance
-  * @retval status
-  */
-static uint8_t  EP0_RxReady (void  *pdev)
-{ 
-  return USBD_OK;
-}
-
-
-/******************************************************************************
-     DFU Class requests management
-******************************************************************************/
-/**
-  * @brief  DFU_Req_DETACH
-  *         Handles the DFU DETACH request.
-  * @param  pdev: device instance
-  * @param  req: pointer to the request structure.
-  * @retval None.
-  */
-static void DFU_Req_DETACH(void *pdev, USB_SETUP_REQ *req)
-{
-  if (DeviceState == STATE_dfuIDLE || DeviceState == STATE_dfuDNLOAD_SYNC
-      || DeviceState == STATE_dfuDNLOAD_IDLE || DeviceState == STATE_dfuMANIFEST_SYNC
-        || DeviceState == STATE_dfuUPLOAD_IDLE )
-  {
-    /* Update the state machine */
-    DeviceState = STATE_dfuIDLE;
-    DeviceStatus[0] = STATUS_OK;
-    DeviceStatus[1] = 0;
-    DeviceStatus[2] = 0;
-    DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/
-    DeviceStatus[4] = DeviceState;
-    DeviceStatus[5] = 0; /*iString*/
-    wBlockNum = 0;
-    wlength = 0;
-  } 
-  
-  /* Check the detach capability in the DFU functional descriptor */
-  if ((usbd_dfu_CfgDesc[12 + (9 * USBD_ITF_MAX_NUM)]) & DFU_DETACH_MASK)
-  {
-    /* Perform an Attach-Detach operation on USB bus */
-    DCD_DevDisconnect (pdev);
-    DCD_DevConnect (pdev);  
-  }
-  else
-  {
-    /* Wait for the period of time specified in Detach request */
-    USB_BSP_mDelay (req->wValue);  
-  }
-}
-
-/**
-  * @brief  DFU_Req_DNLOAD
-  *         Handles the DFU DNLOAD request.
-  * @param  pdev: device instance
-  * @param  req: pointer to the request structure
-  * @retval None
-  */
-static void DFU_Req_DNLOAD(void *pdev, USB_SETUP_REQ *req)
-{
-  /* Data setup request */
-  if (req->wLength > 0)
-  {
-    if ((DeviceState == STATE_dfuIDLE) || (DeviceState == STATE_dfuDNLOAD_IDLE))
-    {
-      /* Update the global length and block number */
-      wBlockNum = req->wValue;
-      wlength = req->wLength;
-      
-      /* Update the state machine */
-      DeviceState = STATE_dfuDNLOAD_SYNC;
-      DeviceStatus[4] = DeviceState;
-      
-      /* Prepare the reception of the buffer over EP0 */
-      USBD_CtlPrepareRx (pdev,
-                         (uint8_t*)MAL_Buffer,                                  
-                         wlength);
-    }
-    /* Unsupported state */
-    else
-    {
-      /* Call the error management function (command will be nacked */
-      USBD_CtlError (pdev, req);
-    }
-  }
-  /* 0 Data DNLOAD request */
-  else
-  {
-    /* End of DNLOAD operation*/
-    if (DeviceState == STATE_dfuDNLOAD_IDLE || DeviceState == STATE_dfuIDLE )
-    {
-      Manifest_State = Manifest_In_Progress;
-      DeviceState = STATE_dfuMANIFEST_SYNC;
-      DeviceStatus[1] = 0;
-      DeviceStatus[2] = 0;
-      DeviceStatus[3] = 0;
-      DeviceStatus[4] = DeviceState;
-    }
-    else
-    {
-      /* Call the error management function (command will be nacked */
-      USBD_CtlError (pdev, req);
-    }
-  }  
-}
-
-/**
-  * @brief  DFU_Req_UPLOAD
-  *         Handles the DFU UPLOAD request.
-  * @param  pdev: instance
-  * @param  req: pointer to the request structure
-  * @retval status
-  */
-static void DFU_Req_UPLOAD(void *pdev, USB_SETUP_REQ *req)
-{
-  uint8_t *Phy_Addr = NULL;
-  uint32_t Addr = 0;
-  
-  /* Data setup request */
-  if (req->wLength > 0)
-  {
-    if ((DeviceState == STATE_dfuIDLE) || (DeviceState == STATE_dfuUPLOAD_IDLE))
-    {
-      /* Update the global langth and block number */
-      wBlockNum = req->wValue;
-      wlength = req->wLength;
-      
-      /* DFU Get Command */
-      if (wBlockNum == 0)  
-      {
-        /* Update the state machine */
-        DeviceState = (wlength > 3)? STATE_dfuIDLE:STATE_dfuUPLOAD_IDLE;        
-        DeviceStatus[4] = DeviceState;
-        DeviceStatus[1] = 0;
-        DeviceStatus[2] = 0;
-        DeviceStatus[3] = 0;
-        
-        /* Store the values of all supported commands */
-        MAL_Buffer[0] = CMD_GETCOMMANDS;
-        MAL_Buffer[1] = CMD_SETADDRESSPOINTER;
-        MAL_Buffer[2] = CMD_ERASE;
-        
-        /* Send the status data over EP0 */
-        USBD_CtlSendData (pdev,
-                          (uint8_t *)(&(MAL_Buffer[0])),
-                          3);
-      }
-      else if (wBlockNum > 1)
-      {
-        DeviceState = STATE_dfuUPLOAD_IDLE ;
-        DeviceStatus[4] = DeviceState;
-        DeviceStatus[1] = 0;
-        DeviceStatus[2] = 0;
-        DeviceStatus[3] = 0;
-        Addr = ((wBlockNum - 2) * XFERSIZE) + Pointer;  /* Change is Accelerated*/
-        
-        /* Return the physical address where data are stored */
-        Phy_Addr = MAL_Read(Addr, wlength);
-        
-        /* Send the status data over EP0 */
-        USBD_CtlSendData (pdev,
-                          Phy_Addr,
-                          wlength);
-      }
-      else  /* unsupported wBlockNum */
-      {
-        DeviceState = STATUS_ERRSTALLEDPKT;
-        DeviceStatus[4] = DeviceState;
-        DeviceStatus[1] = 0;
-        DeviceStatus[2] = 0;
-        DeviceStatus[3] = 0;
-        
-        /* Call the error management function (command will be nacked */
-        USBD_CtlError (pdev, req); 
-      }
-    }
-    /* Unsupported state */
-    else
-    {
-      wlength = 0;
-      wBlockNum = 0;   
-      /* Call the error management function (command will be nacked */
-      USBD_CtlError (pdev, req);
-    }
-  }
-  /* No Data setup request */
-  else
-  {
-    DeviceState = STATE_dfuIDLE;
-    DeviceStatus[1] = 0;
-    DeviceStatus[2] = 0;
-    DeviceStatus[3] = 0;
-    DeviceStatus[4] = DeviceState;
-  }
-}
-
-/**
-  * @brief  DFU_Req_GETSTATUS
-  *         Handles the DFU GETSTATUS request.
-  * @param  pdev: instance
-  * @retval status
-  */
-static void DFU_Req_GETSTATUS(void *pdev)
-{
-  switch (DeviceState)
-  {
-  case   STATE_dfuDNLOAD_SYNC:
-    if (wlength != 0)
-    {
-      DeviceState = STATE_dfuDNBUSY;
-      DeviceStatus[4] = DeviceState;
-      if ((wBlockNum == 0) && (MAL_Buffer[0] == CMD_ERASE))
-      {
-        MAL_GetStatus(Pointer, 0, DeviceStatus);
-      }
-      else
-      {
-        MAL_GetStatus(Pointer, 1, DeviceStatus);
-      }
-    }
-    else  /* (wlength==0)*/
-    {
-      DeviceState = STATE_dfuDNLOAD_IDLE;
-      DeviceStatus[4] = DeviceState;
-      DeviceStatus[1] = 0;
-      DeviceStatus[2] = 0;
-      DeviceStatus[3] = 0;
-    }
-    break;
-    
-  case   STATE_dfuMANIFEST_SYNC :
-    if (Manifest_State == Manifest_In_Progress)
-    {
-      DeviceState = STATE_dfuMANIFEST;
-      DeviceStatus[4] = DeviceState;
-      DeviceStatus[1] = 1;             /*bwPollTimeout = 1ms*/
-      DeviceStatus[2] = 0;
-      DeviceStatus[3] = 0;
-      //break;
-    }
-    else if ((Manifest_State == Manifest_complete) && \
-      ((usbd_dfu_CfgDesc[(11 + (9 * USBD_ITF_MAX_NUM))]) & 0x04))
-    {
-      DeviceState = STATE_dfuIDLE;
-      DeviceStatus[4] = DeviceState;
-      DeviceStatus[1] = 0;
-      DeviceStatus[2] = 0;
-      DeviceStatus[3] = 0;
-      //break;
-    }
-    break;
-    
-  default :
-    break;
-  }
-  
-  /* Send the status data over EP0 */
-  USBD_CtlSendData (pdev,
-                    (uint8_t *)(&(DeviceStatus[0])),
-                    6);
-}
-
-/**
-  * @brief  DFU_Req_CLRSTATUS 
-  *         Handles the DFU CLRSTATUS request.
-  * @param  pdev: device instance
-  * @retval status
-  */
-static void DFU_Req_CLRSTATUS(void *pdev)
-{
-  if (DeviceState == STATE_dfuERROR)
-  {
-    DeviceState = STATE_dfuIDLE;
-    DeviceStatus[0] = STATUS_OK;/*bStatus*/
-    DeviceStatus[1] = 0;
-    DeviceStatus[2] = 0;
-    DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/
-    DeviceStatus[4] = DeviceState;/*bState*/
-    DeviceStatus[5] = 0;/*iString*/
-  }
-  else
-  {   /*State Error*/
-    DeviceState = STATE_dfuERROR;
-    DeviceStatus[0] = STATUS_ERRUNKNOWN;/*bStatus*/
-    DeviceStatus[1] = 0;
-    DeviceStatus[2] = 0;
-    DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/
-    DeviceStatus[4] = DeviceState;/*bState*/
-    DeviceStatus[5] = 0;/*iString*/
-  }
-}
-
-/**
-  * @brief  DFU_Req_GETSTATE
-  *         Handles the DFU GETSTATE request.
-  * @param  pdev: device instance
-  * @retval None
-  */
-static void DFU_Req_GETSTATE(void *pdev)
-{
-  /* Return the current state of the DFU interface */
-  USBD_CtlSendData (pdev, 
-                    &DeviceState,
-                    1);  
-}
-
-/**
-  * @brief  DFU_Req_ABORT
-  *         Handles the DFU ABORT request.
-  * @param  pdev: device instance
-  * @retval None
-  */
-static void DFU_Req_ABORT(void *pdev)
-{
-  if (DeviceState == STATE_dfuIDLE || DeviceState == STATE_dfuDNLOAD_SYNC
-      || DeviceState == STATE_dfuDNLOAD_IDLE || DeviceState == STATE_dfuMANIFEST_SYNC
-        || DeviceState == STATE_dfuUPLOAD_IDLE )
-  {
-    DeviceState = STATE_dfuIDLE;
-    DeviceStatus[0] = STATUS_OK;
-    DeviceStatus[1] = 0;
-    DeviceStatus[2] = 0;
-    DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/
-    DeviceStatus[4] = DeviceState;
-    DeviceStatus[5] = 0; /*iString*/
-    wBlockNum = 0;
-    wlength = 0;
-  }  
-}
-
-/**
-  * @brief  DFU_LeaveDFUMode
-  *         Handles the sub-protocol DFU leave DFU mode request (leaves DFU mode
-  *         and resets device to jump to user loaded code).
-  * @param  pdev: device instance
-  * @retval None
-  */
-void DFU_LeaveDFUMode(void *pdev)
-{
- Manifest_State = Manifest_complete;
-
-  if ((usbd_dfu_CfgDesc[(11 + (9 * USBD_ITF_MAX_NUM))]) & 0x04)
-  {
-    DeviceState = STATE_dfuMANIFEST_SYNC;
-    DeviceStatus[4] = DeviceState;
-    DeviceStatus[1] = 0;
-    DeviceStatus[2] = 0;
-    DeviceStatus[3] = 0;
-    return;
-  }
-  else
-  {
-    DeviceState = STATE_dfuMANIFEST_WAIT_RESET;
-    DeviceStatus[4] = DeviceState;
-    DeviceStatus[1] = 0;
-    DeviceStatus[2] = 0;
-    DeviceStatus[3] = 0;
-
-    /* Disconnect the USB device */
-    DCD_DevDisconnect (pdev);
-
-    /* DeInitilialize the MAL(Media Access Layer) */
-    MAL_DeInit();
-    
-    /* Generate system reset to allow jumping to the user code */
-    NVIC_SystemReset();
-   
-    /* This instruction will not be reached (system reset) */
-    return;
-  }  
-}
-
-/**
-  * @brief  USBD_DFU_GetCfgDesc 
-  *         Returns configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-static uint8_t  *USBD_DFU_GetCfgDesc (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (usbd_dfu_CfgDesc);
-  return (uint8_t*)usbd_dfu_CfgDesc;
-}
-
-/**
-  * @brief  USBD_DFU_GetUsrStringDesc
-  *         Manages the transfer of memory interfaces string descriptors.
-  * @param  speed : current device speed
-  * @param  index: descriptor index
-  * @param  length : pointer data length
-  * @retval pointer to the descriptor table or NULL if the descriptor is not supported.
-  */
-static uint8_t* USBD_DFU_GetUsrStringDesc (uint8_t speed, uint8_t index , uint16_t *length)
-{
-  /* Check if the requested string interface is supported */
-  if (index <= (USBD_IDX_INTERFACE_STR + USBD_ITF_MAX_NUM))
-  {
-    
-    
-    USBD_GetString ((uint8_t *)usbd_dfu_StringDesc[index - USBD_IDX_INTERFACE_STR - 1], USBD_StrDesc, length);
-    return USBD_StrDesc;  
-  }
-  /* Not supported Interface Descriptor index */
-  else
-  {
-    return NULL;
-  }
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c
deleted file mode 100644
index c1c4d2b..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c	
+++ /dev/null
@@ -1,256 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_dfu_mal.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Generic media access Layer.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_dfu_mal.h"
-#include "usbd_flash_if.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-
-/* Global Memories callback and string descriptors reference tables.
-   To add a new memory, modify the value of MAX_USED_MEDIA in usbd_dfu_mal.h
-   and add the pointer to the callback structure in this table.
-   Then add the pointer to the memory string descriptor in usbd_dfu_StringDesc table.
-   No other operation is required. */
-DFU_MAL_Prop_TypeDef* tMALTab[MAX_USED_MEDIA] = {
-    &DFU_Flash_cb
-};
-
-const uint8_t* usbd_dfu_StringDesc[MAX_USED_MEDIA] = {
-    FLASH_IF_STRING
-};
-
-/* RAM Buffer for Downloaded Data */
-uint8_t  MAL_Buffer[XFERSIZE] ; 
-
-/* Private function prototypes -----------------------------------------------*/
-static uint8_t  MAL_CheckAdd  (uint32_t Add);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  MAL_Init
-  *         Initializes the Media on the STM32
-  * @param  None
-  * @retval Result of the operation (MAL_OK in all cases)
-  */
-uint16_t MAL_Init(void)
-{
-  uint32_t memIdx = 0;
-  
-  /* Init all supported memories */
-  for(memIdx = 0; memIdx < MAX_USED_MEDIA; memIdx++)
-  {
-    /* If the check address is positive, exit with the memory index */
-    if (tMALTab[memIdx]->pMAL_Init != NULL)
-    {
-      tMALTab[memIdx]->pMAL_Init();
-    }
-  }
-
-  return MAL_OK;
-}
-
-/**
-  * @brief  MAL_DeInit
-  *         DeInitializes the Media on the STM32
-  * @param  None
-  * @retval Result of the operation (MAL_OK in all cases)
-  */
-uint16_t MAL_DeInit(void)
-{
-  uint32_t memIdx = 0;
-  
-  /* Init all supported memories */
-  for(memIdx = 0; memIdx < MAX_USED_MEDIA; memIdx++)
-  {
-    /* Check if the command is supported */
-    if (tMALTab[memIdx]->pMAL_DeInit != NULL)
-    {
-      tMALTab[memIdx]->pMAL_DeInit();
-    }
-  }
-
-  return MAL_OK;
-}
-
-/**
-  * @brief  MAL_Erase
-  *         Erase a sector of memory.
-  * @param  Add: Sector address/code
-  * @retval Result of the operation: MAL_OK if all operations are OK else MAL_FAIL
-  */
-uint16_t MAL_Erase(uint32_t Add)
-{
-  uint32_t memIdx = MAL_CheckAdd(Add);
- 
-  /* Check if the area is protected */
-  if (DFU_MAL_IS_PROTECTED_AREA(Add))
-  {
-    return MAL_FAIL;
-  }    
-  
-  if (memIdx < MAX_USED_MEDIA)
-  {
-    /* Check if the command is supported */
-    if (tMALTab[memIdx]->pMAL_Erase != NULL)
-    {
-      return tMALTab[memIdx]->pMAL_Erase(Add);
-    }
-    else
-    {
-      return MAL_FAIL;
-    }
-  }
-  else
-  {
-    return MAL_FAIL;
-  }
-}
-
-/**
-  * @brief  MAL_Write
-  *         Write sectors of memory.
-  * @param  Add: Sector address/code
-  * @param  Len: Number of data to be written (in bytes)
-  * @retval Result of the operation: MAL_OK if all operations are OK else MAL_FAIL
-  */
-uint16_t MAL_Write (uint32_t Add, uint32_t Len)
-{
-  uint32_t memIdx = MAL_CheckAdd(Add);
- 
-  /* Check if the area is protected */
-  if (DFU_MAL_IS_PROTECTED_AREA(Add))
-  {
-    return MAL_FAIL;
-  }   
-  
-  if (memIdx < MAX_USED_MEDIA)
-  {
-    /* Check if the command is supported */
-    if (tMALTab[memIdx]->pMAL_Write != NULL)
-    {
-      return tMALTab[memIdx]->pMAL_Write(Add, Len);
-    }
-    else
-    {
-      return MAL_FAIL;
-    }    
-  }
-  else
-  {
-    return MAL_FAIL;
-  }
-}
-
-/**
-  * @brief  MAL_Read
-  *         Read sectors of memory.
-  * @param  Add: Sector address/code
-  * @param  Len: Number of data to be written (in bytes)
-  * @retval Buffer pointer
-  */
-uint8_t *MAL_Read (uint32_t Add, uint32_t Len)
-{
-  uint32_t memIdx = MAL_CheckAdd(Add);
-  
-  if (memIdx < MAX_USED_MEDIA)
-  {
-    /* Check if the command is supported */
-    if (tMALTab[memIdx]->pMAL_Read != NULL)
-    {
-      return tMALTab[memIdx]->pMAL_Read(Add, Len);
-    }
-    else
-    {
-      return MAL_Buffer;
-    }     
-  }
-  else
-  {
-    return MAL_Buffer;
-  }
-}
-
-/**
-  * @brief  MAL_GetStatus
-  *         Get the status of a given memory.
-  * @param  Add: Sector address/code (allow to determine which memory will be addressed)
-  * @param  Cmd: 0 for erase and 1 for write
-  * @param  buffer: pointer to the buffer where the status data will be stored.
-  * @retval Buffer pointer
-  */
-uint16_t MAL_GetStatus(uint32_t Add , uint8_t Cmd, uint8_t *buffer)
-{
-  uint32_t memIdx = MAL_CheckAdd(Add);
-  
-  if (memIdx < MAX_USED_MEDIA)
-  {
-    if (Cmd & 0x01)
-    {
-      SET_POLLING_TIMING(tMALTab[memIdx]->EraseTiming);
-    }
-    else
-    {
-      SET_POLLING_TIMING(tMALTab[memIdx]->WriteTiming);
-    }
-    
-    return MAL_OK;
-  }
-  else
-  {
-    return MAL_FAIL;
-  }
-}
-
-/**
-  * @brief  MAL_CheckAdd
-  *         Determine which memory should be managed.
-  * @param  Add: Sector address/code (allow to determine which memory will be addressed)
-  * @retval Index of the addressed memory.
-  */
-static uint8_t  MAL_CheckAdd(uint32_t Add)
-{
-  uint32_t memIdx = 0;
-  
-  /* Check with all supported memories */
-  for(memIdx = 0; memIdx < MAX_USED_MEDIA; memIdx++)
-  {
-    /* If the check address is positive, exit with the memory index */
-    if (tMALTab[memIdx]->pMAL_CheckAdd(Add) == MAL_OK)
-    {
-      return memIdx;
-    }
-  }
-  /* If no memory found, return MAX_USED_MEDIA */
-  return (MAX_USED_MEDIA);
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c
deleted file mode 100644
index 9d45c19..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c	
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_flash_if.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Specific media access Layer for internal flash.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_flash_if.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-
-/* Private function prototypes -----------------------------------------------*/
-uint16_t FLASH_If_Init(void);
-uint16_t FLASH_If_Erase (uint32_t Add);
-uint16_t FLASH_If_Write (uint32_t Add, uint32_t Len);
-uint8_t *FLASH_If_Read  (uint32_t Add, uint32_t Len);
-uint16_t FLASH_If_DeInit(void);
-uint16_t FLASH_If_CheckAdd(uint32_t Add);
-
-
-/* Private variables ---------------------------------------------------------*/
-DFU_MAL_Prop_TypeDef DFU_Flash_cb =
-{
-  FLASH_IF_STRING,
-  FLASH_If_Init,
-  FLASH_If_DeInit,
-  FLASH_If_Erase,
-  FLASH_If_Write,
-  FLASH_If_Read,
-  FLASH_If_CheckAdd,
-  40, /* Erase Time in ms : extracted from flash memory datasheet Maximum 
-  timming value for Sector Erase*/
-  60  /* Programming Time in ms (60us * RAM Buffer size (1024 Bytes) 
-    extracted from flash memory datasheet Maximum timming value for  1024 bytes 
-    Write)*/
-};
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  FLASH_If_Init
-  *         Memory initialization routine.
-  * @param  None
-  * @retval MAL_OK if operation is successful, MAL_FAIL else.
-*/
-uint16_t FLASH_If_Init(void)
-{
-  /* Unlock the internal flash */
-  FLASH_Unlock();
-  
-  return MAL_OK;
-}
-
-/**
-  * @brief  FLASH_If_DeInit
-  *         Memory deinitialization routine.
-  * @param  None
-  * @retval MAL_OK if operation is successful, MAL_FAIL else.
-  */
-uint16_t FLASH_If_DeInit(void)
-{
-  /* Lock the internal flash */
-  FLASH_Lock();
-  
-  return MAL_OK;
-}
-
-/**
-  * @brief  FLASH_If_Erase
-  *         Erase sector.
-  * @param  Add: Address to be written to.
-  * @retval MAL_OK if operation is successful, MAL_FAIL else.
-  */
-uint16_t FLASH_If_Erase(uint32_t Add)
-{
-  /* Call the standard Flash erase function */
-  FLASH_ErasePage(Add);  
-  
-  return MAL_OK;
-}
-
-/**
-  * @brief  FLASH_If_Write
-  *         Memory write routine.
-  * @param  Add: Address to be written to.
-  * @param  Len: Number of data to be written (in bytes).
-  * @retval MAL_OK if operation is successful, MAL_FAIL else.
-  */
-uint16_t FLASH_If_Write(uint32_t Add, uint32_t Len)
-{
-  uint32_t idx = 0;
-  
-  if  (Len & 0x3) /* Not an aligned data */
-  {
-    for (idx = Len; idx < ((Len & 0xFFFC) + 4); idx++)
-    {
-      MAL_Buffer[idx] = 0xFF;
-    }
-  }
-  
-  /* Data received are Word multiple */
-  for (idx = 0; idx <  Len; idx = idx + 4)
-  {
-    FLASH_ProgramWord(Add, *(uint32_t *)(MAL_Buffer + idx));
-    Add += 4;
-  }
-  return MAL_OK;
-}
-
-/**
-  * @brief  FLASH_If_Read
-  *         Memory read routine.
-  * @param  Add: Address to be read from.
-  * @param  Len: Number of data to be read (in bytes).
-  * @retval Pointer to the physical address where data should be read.
-  */
-uint8_t *FLASH_If_Read (uint32_t Add, uint32_t Len)
-{
-  return  (uint8_t *)(Add);
-}
-
-/**
-  * @brief  FLASH_If_CheckAdd
-  *         Check if the address is an allowed address for this memory.
-  * @param  Add: Address to be checked.
-  * @param  Len: Number of data to be read (in bytes).
-  * @retval MAL_OK if the address is allowed, MAL_FAIL else.
-  */
-uint16_t FLASH_If_CheckAdd(uint32_t Add)
-{
-  if ((Add >= FLASH_START_ADD) && (Add < FLASH_END_ADD))
-  {
-    return MAL_OK;
-  }
-  else
-  {
-    return MAL_FAIL;
-  }
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c
deleted file mode 100644
index 2bf838e..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c	
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_mem_if_template.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Specific media access Layer for a template memory. This file is 
-             provided as template example showing how to implement a new memory
-             interface based on pre-defined API.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_mem_if_template.h"
-#include "usbd_dfu_mal.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-uint16_t MEM_If_Init(void);
-uint16_t MEM_If_Erase (uint32_t Add);
-uint16_t MEM_If_Write (uint32_t Add, uint32_t Len);
-uint8_t *MEM_If_Read  (uint32_t Add, uint32_t Len);
-uint16_t MEM_If_DeInit(void);
-uint16_t MEM_If_CheckAdd(uint32_t Add);
-
-/* Private variables ---------------------------------------------------------*/
-DFU_MAL_Prop_TypeDef DFU_Mem_cb =
-  {
-    MEM_IF_STRING,
-    MEM_If_Init,
-    MEM_If_DeInit,
-    MEM_If_Erase,
-    MEM_If_Write,
-    MEM_If_Read,
-    MEM_If_CheckAdd,
-    10, /* Erase Time in ms */
-    10  /* Programming Time in ms */
-  };
-  
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  MEM_If_Init
-  *         Memory initialization routine.
-  * @param  None
-  * @retval MAL_OK if operation is successful, MAL_FAIL else.
-  */
-uint16_t MEM_If_Init(void)
-{ 
-  return MAL_OK;
-}
-
-/**
-  * @brief  MEM_If_DeInit
-  *         Memory deinitialization routine.
-  * @param  None
-  * @retval MAL_OK if operation is successful, MAL_FAIL else.
-  */
-uint16_t MEM_If_DeInit(void)
-{ 
-  return MAL_OK;
-}
-
-/**
-  * @brief  MEM_If_Erase
-  *         Erase sector.
-  * @param  Add: Address of sector to be erased.
-  * @retval MAL_OK if operation is successful, MAL_FAIL else.
-  */
-uint16_t MEM_If_Erase(uint32_t Add)
-{
-  return MAL_OK;
-}
-
-/**
-  * @brief  MEM_If_Write
-  *         Memory write routine.
-  * @param  Add: Address to be written to.
-  * @param  Len: Number of data to be written (in bytes).
-  * @retval MAL_OK if operation is successful, MAL_FAIL else.
-  */
-uint16_t MEM_If_Write(uint32_t Add, uint32_t Len)
-{
-  return MAL_OK;
-}
-
-/**
-  * @brief  MEM_If_Read
-  *         Memory read routine.
-  * @param  Add: Address to be read from.
-  * @param  Len: Number of data to be read (in bytes).
-  * @retval Pointer to the physical address where data should be read.
-  */
-uint8_t *MEM_If_Read (uint32_t Add, uint32_t Len)
-{
-  /* Return a valid address to avoid HardFault */
-  return  (uint8_t*)(MAL_Buffer); 
-}
-
-/**
-  * @brief  MEM_If_CheckAdd
-  *         Check if the address is an allowed address for this memory.
-  * @param  Add: Address to be checked.
-  * @param  Len: Number of data to be read (in bytes).
-  * @retval MAL_OK if the address is allowed, MAL_FAIL else.
-  */
-uint16_t MEM_If_CheckAdd(uint32_t Add)
-{
-  if ((Add >= MEM_START_ADD) && (Add < MEM_END_ADD))
-  {
-    return MAL_OK;
-  }
-  else
-  {
-    return MAL_FAIL;
-  }
-}
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_custom_hid_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_custom_hid_core.h
deleted file mode 100644
index abe3f99..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_custom_hid_core.h	
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_hid_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_hid_core.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_HID_CORE_H_
-#define __USB_HID_CORE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_req.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define USB_HID_CONFIG_DESC_SIZ       34
-#define USB_HID_DESC_SIZ              9
-#define HID_MOUSE_REPORT_DESC_SIZE    74
-
-#define HID_DESCRIPTOR_TYPE           0x21
-#define HID_REPORT_DESC               0x22
-
-
-#define HID_REQ_SET_PROTOCOL          0x0B
-#define HID_REQ_GET_PROTOCOL          0x03
-
-#define HID_REQ_SET_IDLE              0x0A
-#define HID_REQ_GET_IDLE              0x02
-
-#define HID_REQ_SET_REPORT            0x09
-#define HID_REQ_GET_REPORT            0x01
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  USBD_HID_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
- 
-uint8_t USBD_HID_SendReport (USB_CORE_HANDLE  *pdev, 
-                                 uint8_t *report,
-                                 uint16_t len);
-
-#endif  /* __USB_HID_CORE_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h
deleted file mode 100644
index aa56024..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h	
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_hid_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_hid_core.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_HID_CORE_H_
-#define __USB_HID_CORE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_req.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define USB_HID_CONFIG_DESC_SIZ       34
-#define USB_HID_DESC_SIZ              9
-#define HID_MOUSE_REPORT_DESC_SIZE    74
-
-#define HID_DESCRIPTOR_TYPE           0x21
-#define HID_REPORT_DESC               0x22
-
-
-#define HID_REQ_SET_PROTOCOL          0x0B
-#define HID_REQ_GET_PROTOCOL          0x03
-
-#define HID_REQ_SET_IDLE              0x0A
-#define HID_REQ_GET_IDLE              0x02
-
-#define HID_REQ_SET_REPORT            0x09
-#define HID_REQ_GET_REPORT            0x01
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  USBD_HID_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
- 
-uint8_t USBD_HID_SendReport (USB_CORE_HANDLE  *pdev, 
-                                 uint8_t *report,
-                                 uint16_t len);
-#endif  /* __USB_HID_CORE_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_custom_hid_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_custom_hid_core.c
deleted file mode 100644
index 81e9dad..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_custom_hid_core.c	
+++ /dev/null
@@ -1,622 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_hid_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the HID core functions.
-  *
-  * @verbatim
-  *      
-  *          ===================================================================      
-  *                                HID Class  Description
-  *          =================================================================== 
-  *           This module manages the HID class V1.11 following the "Device Class Definition
-  *           for Human Interface Devices (HID) Version 1.11 Jun 27, 2001".
-  *           This driver implements the following aspects of the specification:
-  *             - The Boot Interface Subclass
-  *             - The Mouse protocol
-  *             - Usage Page : Generic Desktop
-  *             - Usage : Custom
-  *             - Collection : Application 
-  *           
-  *      
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_custom_hid_core.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/ 
-uint8_t  USBD_HID_Init (void  *pdev, 
-                               uint8_t cfgidx);
-
-uint8_t  USBD_HID_DeInit (void  *pdev, 
-                                 uint8_t cfgidx);
-
-uint8_t  USBD_HID_Setup (void  *pdev, 
-                                USB_SETUP_REQ *req);
-
-uint8_t  *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length);
-
-
-uint8_t  USBD_HID_DataIn (void  *pdev, uint8_t epnum);
-
-
-uint8_t  USBD_HID_DataOut (void  *pdev, uint8_t epnum);
-
-
-uint8_t  USBD_HID_EP0_RxReady (void  *pdev);
-
-USBD_Class_cb_TypeDef  USBD_HID_cb = 
-{
-  USBD_HID_Init,
-  USBD_HID_DeInit,
-  USBD_HID_Setup,
-  NULL, /*EP0_TxSent*/  
-  USBD_HID_EP0_RxReady, /*EP0_RxReady*/ /* STATUS STAGE IN */
-  USBD_HID_DataIn, /*DataIn*/
-  USBD_HID_DataOut, /*DataOut*/
-  NULL, /*SOF */    
-  USBD_HID_GetCfgDesc, 
-};
-  
-
-
-uint8_t Report_buf[2];
-uint8_t USBD_HID_Report_ID=0;
-uint8_t flag = 0;
-extern uint8_t PrevXferDone;
-
-static uint32_t  USBD_HID_AltSet = 0;
-    
-static uint32_t  USBD_HID_Protocol = 0;
- 
-static uint32_t  USBD_HID_IdleState = 0;
-
-/* USB HID device Configuration Descriptor */
-const uint8_t USBD_HID_CfgDesc[CUSTOMHID_SIZ_CONFIG_DESC] =
-{
-  0x09, /* bLength: Configuration Descriptor size */
-  USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
-  CUSTOMHID_SIZ_CONFIG_DESC,
-  /* wTotalLength: Bytes returned */
-  0x00,
-  0x01,         /*bNumInterfaces: 1 interface*/
-  0x01,         /*bConfigurationValue: Configuration value*/
-  0x00,         /*iConfiguration: Index of string descriptor describing
-  the configuration*/
-  0xC0,         /*bmAttributes: bus powered and Support Remote Wake-up */
-  0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/
-  
-  /************** Descriptor of Custom HID interface ****************/
-  /* 09 */
-  0x09,         /*bLength: Interface Descriptor size*/
-  USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/
-  0x00,         /*bInterfaceNumber: Number of Interface*/
-  0x00,         /*bAlternateSetting: Alternate setting*/
-  0x02,         /*bNumEndpoints*/
-  0x03,         /*bInterfaceClass: HID*/
-  0x00,         /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
-  0x00,         /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
-  0,            /*iInterface: Index of string descriptor*/
-  /******************** Descriptor of Custom HID ********************/
-  /* 18 */
-  0x09,         /*bLength: HID Descriptor size*/
-  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
-  0x11,         /*bcdHID: HID Class Spec release number*/
-  0x01,
-  0x00,         /*bCountryCode: Hardware target country*/
-  0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/
-  0x22,         /*bDescriptorType*/
-  CUSTOMHID_SIZ_REPORT_DESC,/*wItemLength: Total length of Report descriptor*/
-  0x00,
-  /******************** Descriptor of Custom HID endpoints ***********/
-  /* 27 */
-  0x07,          /* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */
-  
-  HID_IN_EP,     /* bEndpointAddress: Endpoint Address (IN) */
-  0x03,          /* bmAttributes: Interrupt endpoint */
-  HID_IN_PACKET, /* wMaxPacketSize: 2 Bytes max */
-  0x00,
-  0x20,          /* bInterval: Polling Interval (32 ms) */
-  /* 34 */
-  
-  0x07,	         /* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,	/* bDescriptorType: */
-  /*	Endpoint descriptor type */
-  HID_OUT_EP,	/* bEndpointAddress: */
-  /*	Endpoint Address (OUT) */
-  0x03,	/* bmAttributes: Interrupt endpoint */
-  HID_OUT_PACKET,	/* wMaxPacketSize: 2 Bytes max  */
-  0x00,
-  0x20,	/* bInterval: Polling Interval (20 ms) */
-  /* 41 */
-} ;
-
-const uint8_t CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC] =
-{
-  0x06, 0xFF, 0x00,      /* USAGE_PAGE (Vendor Page: 0xFF00) */                       
-  0x09, 0x01,            /* USAGE (Demo Kit)               */    
-  0xa1, 0x01,            /* COLLECTION (Application)       */            
-  /* 6 */
-  
-  /* Led 1 */        
-  0x85, 0x01,            /*     REPORT_ID (1)		     */
-  0x09, 0x01,            /*     USAGE (LED 1)	             */
-  0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */          
-  0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */           
-  0x75, 0x08,            /*     REPORT_SIZE (8)            */        
-  0x95, 0x01,            /*     REPORT_COUNT (1)           */       
-  0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vol) */     
-  
-  0x85, 0x01,            /*     REPORT_ID (1)              */
-  0x09, 0x01,            /*     USAGE (LED 1)              */
-  0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vol)  */
-  /* 26 */
-  
-  /* Led 2 */
-  0x85, 0x02,            /*     REPORT_ID 2		     */
-  0x09, 0x02,            /*     USAGE (LED 2)	             */
-  0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */          
-  0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */           
-  0x75, 0x08,            /*     REPORT_SIZE (8)            */        
-  0x95, 0x01,            /*     REPORT_COUNT (1)           */       
-  0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vol) */     
-  
-  0x85, 0x02,            /*     REPORT_ID (2)              */
-  0x09, 0x02,            /*     USAGE (LED 2)              */
-  0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vol)  */
-  /* 46 */
-  
-  /* Led 3 */        
-  0x85, 0x03,            /*     REPORT_ID (3)		     */
-  0x09, 0x03,            /*     USAGE (LED 3)	             */
-  0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */          
-  0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */           
-  0x75, 0x08,            /*     REPORT_SIZE (8)            */        
-  0x95, 0x01,            /*     REPORT_COUNT (1)           */       
-  0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vol) */     
-  
-  0x85, 0x03,            /*     REPORT_ID (3)              */
-  0x09, 0x03,            /*     USAGE (LED 3)              */
-  0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vol)  */
-  /* 66 */
-  
-  /* Led 4 */
-  0x85, 0x04,            /*     REPORT_ID 4)		     */
-  0x09, 0x04,            /*     USAGE (LED 4)	             */
-  0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */          
-  0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */           
-  0x75, 0x08,            /*     REPORT_SIZE (8)            */        
-  0x95, 0x01,            /*     REPORT_COUNT (1)           */       
-  0xB1, 0x82,            /*     FEATURE (Data,Var,Abs,Vol) */     
-  
-  0x85, 0x04,            /*     REPORT_ID (4)              */
-  0x09, 0x04,            /*     USAGE (LED 4)              */
-  0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vol)  */
-  /* 86 */
-  
-  /* key Push Button */  
-  0x85, 0x05,            /*     REPORT_ID (5)              */
-  0x09, 0x05,            /*     USAGE (Push Button)        */      
-  0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */      
-  0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */      
-  0x75, 0x01,            /*     REPORT_SIZE (1)            */  
-  0x81, 0x82,            /*     INPUT (Data,Var,Abs,Vol)   */   
-  
-  0x09, 0x05,            /*     USAGE (Push Button)        */               
-  0x75, 0x01,            /*     REPORT_SIZE (1)            */           
-  0xb1, 0x82,            /*     FEATURE (Data,Var,Abs,Vol) */  
-  
-  0x75, 0x07,            /*     REPORT_SIZE (7)            */           
-  0x81, 0x83,            /*     INPUT (Cnst,Var,Abs,Vol)   */                    
-  0x85, 0x05,            /*     REPORT_ID (2)              */         
-  
-  0x75, 0x07,            /*     REPORT_SIZE (7)            */           
-  0xb1, 0x83,            /*     FEATURE (Cnst,Var,Abs,Vol) */                      
-  /* 114 */
-  
-  /* Tamper Push Button */  
-  0x85, 0x06,            /*     REPORT_ID (6)              */
-  0x09, 0x06,            /*     USAGE (Tamper Push Button) */      
-  0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */      
-  0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */      
-  0x75, 0x01,            /*     REPORT_SIZE (1)            */  
-  0x81, 0x82,            /*     INPUT (Data,Var,Abs,Vol)   */   
-  
-  0x09, 0x06,            /*     USAGE (Tamper Push Button) */               
-  0x75, 0x01,            /*     REPORT_SIZE (1)            */           
-  0xb1, 0x82,            /*     FEATURE (Data,Var,Abs,Vol) */  
-  
-  0x75, 0x07,            /*     REPORT_SIZE (7)            */           
-  0x81, 0x83,            /*     INPUT (Cnst,Var,Abs,Vol)   */                    
-  0x85, 0x06,            /*     REPORT_ID (6)              */         
-  
-  0x75, 0x07,            /*     REPORT_SIZE (7)            */           
-  0xb1, 0x83,            /*     FEATURE (Cnst,Var,Abs,Vol) */  
-  /* 142 */
-  
-  /* ADC IN */
-  0x85, 0x07,            /*     REPORT_ID (7)              */         
-  0x09, 0x07,            /*     USAGE (ADC IN)             */          
-  0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */               
-  0x26, 0xff, 0x00,      /*     LOGICAL_MAXIMUM (255)      */                 
-  0x75, 0x08,            /*     REPORT_SIZE (8)            */           
-  0x81, 0x82,            /*     INPUT (Data,Var,Abs,Vol)   */                    
-  0x85, 0x07,            /*     REPORT_ID (7)              */                 
-  0x09, 0x07,            /*     USAGE (ADC in)             */                     
-  0xb1, 0x82,            /*     FEATURE (Data,Var,Abs,Vol) */                                 
-  /* 161 */
-  
-  0xc0 	          /*     END_COLLECTION	             */
-}; /* CustomHID_ReportDescriptor */
-
-/* Private function ----------------------------------------------------------*/ 
-/**
-  * @brief  USBD_HID_Init
-  *         Initialize the HID interface
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-uint8_t  USBD_HID_Init (void  *pdev, 
-                               uint8_t cfgidx)
-{
-  DCD_PMA_Config(pdev , HID_IN_EP,USB_SNG_BUF,HID_IN_TX_ADDRESS);
-  DCD_PMA_Config(pdev , HID_OUT_EP,USB_SNG_BUF,HID_OUT_RX_ADDRESS);
-
-  /* Open EP IN */
-  DCD_EP_Open(pdev,
-              HID_IN_EP,
-              HID_IN_PACKET,
-              USB_EP_INT);
-  
-  /* Open EP OUT */
-  DCD_EP_Open(pdev,
-              HID_OUT_EP,
-              HID_OUT_PACKET,
-              USB_EP_INT);
- 
-  /*Receive Data*/
-  DCD_EP_PrepareRx(pdev,HID_OUT_EP,Report_buf,2);
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_Init
-  *         DeInitialize the HID layer
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-uint8_t  USBD_HID_DeInit (void  *pdev, 
-                                 uint8_t cfgidx)
-{
-  /* Close HID EPs */
-  DCD_EP_Close (pdev , HID_IN_EP);
-  DCD_EP_Close (pdev , HID_OUT_EP);
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_Setup
-  *         Handle the HID specific requests
-  * @param  pdev: instance
-  * @param  req: usb requests
-  * @retval status
-  */
-uint8_t  USBD_HID_Setup (void  *pdev, 
-                                USB_SETUP_REQ *req)
-{
-  uint8_t USBD_HID_Report_LENGTH=0;
-  uint16_t len = 0;
-  uint8_t  *pbuf = NULL;
-
-  
-  switch (req->bmRequest & USB_REQ_TYPE_MASK)
-  {
-  case USB_REQ_TYPE_CLASS :  
-    switch (req->bRequest)
-    {
-    case HID_REQ_SET_PROTOCOL:
-      USBD_HID_Protocol = (uint8_t)(req->wValue);
-      break;
-      
-    case HID_REQ_GET_PROTOCOL:
-      USBD_CtlSendData (pdev, 
-                        (uint8_t *)&USBD_HID_Protocol,
-                        1);    
-      break;
-      
-    case HID_REQ_SET_IDLE:
-      USBD_HID_IdleState = (uint8_t)(req->wValue >> 8);
-      break;
-      
-    case HID_REQ_GET_IDLE:
-      USBD_CtlSendData (pdev, 
-                        (uint8_t *)&USBD_HID_IdleState,
-                        1);        
-      break;
-      
-    case HID_REQ_SET_REPORT:
-      flag = 1;
-      USBD_HID_Report_ID = (uint8_t)(req->wValue);
-      USBD_HID_Report_LENGTH = (uint8_t)(req->wLength);
-      USBD_CtlPrepareRx (pdev, Report_buf, USBD_HID_Report_LENGTH);
-      
-      break;
-   
-    default:
-      USBD_CtlError (pdev, req);
-      return USBD_FAIL; 
-    }
-    break;
-    
-  case USB_REQ_TYPE_STANDARD:
-    switch (req->bRequest)
-    {
-    case USB_REQ_GET_DESCRIPTOR: 
-      if( req->wValue >> 8 == HID_REPORT_DESC)
-      {
-        len = MIN(CUSTOMHID_SIZ_REPORT_DESC , req->wLength);
-        pbuf = (uint8_t*)CustomHID_ReportDescriptor;
-      }
-      else if( req->wValue >> 8 == HID_DESCRIPTOR_TYPE)
-      {
-        pbuf = (uint8_t*)USBD_HID_CfgDesc + 0x12;
-        len = MIN(USB_HID_DESC_SIZ , req->wLength);
-      }
-      
-      USBD_CtlSendData (pdev, 
-                        pbuf,
-                        len);
-      
-      break;
-      
-    case USB_REQ_GET_INTERFACE :
-      USBD_CtlSendData (pdev,
-                        (uint8_t *)&USBD_HID_AltSet,
-                        1);
-      break;
-      
-    case USB_REQ_SET_INTERFACE :
-      USBD_HID_AltSet = (uint8_t)(req->wValue);
-      break;
-    }
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_SendReport 
-  *         Send HID Report
-  * @param  pdev: device instance
-  * @param  buff: pointer to report
-  * @retval status
-  */
-uint8_t USBD_HID_SendReport     (USB_CORE_HANDLE  *pdev, 
-                                 uint8_t *report,
-                                 uint16_t len)
-{
-  /* Check if USB is configured */
-  if (pdev->dev.device_status == USB_CONFIGURED )
-  {
-    DCD_EP_Tx (pdev, HID_IN_EP, report, len);
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_GetCfgDesc 
-  *         return configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-uint8_t  *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (USBD_HID_CfgDesc);
-  return (uint8_t*)USBD_HID_CfgDesc;
-}
-
-/**
-  * @brief  USBD_HID_DataIn
-  *         handle data IN Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-uint8_t  USBD_HID_DataIn (void  *pdev, 
-                                 uint8_t epnum)
-{
-  if (epnum == 1) PrevXferDone = 1;
-
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_DataOut
-  *         handle data IN Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-uint8_t  USBD_HID_DataOut (void  *pdev, 
-                                  uint8_t epnum)
-{
-  
-  BitAction Led_State;
-  if (epnum == 1) 
-  {
-    if (Report_buf[1] == 0)
-    {
-      Led_State = Bit_RESET;
-    }
-    else 
-    {
-      Led_State = Bit_SET;
-    }
-    
-    switch (Report_buf[0])
-    {
-    case 1: /* Led 1 */
-      if (Led_State != Bit_RESET)
-      {
-        STM_EVAL_LEDOn(LED1);
-      }
-      else
-      {
-        STM_EVAL_LEDOff(LED1);
-      }
-      break;
-      
-    case 2: /* Led 2 */
-      if (Led_State != Bit_RESET)
-      {
-        STM_EVAL_LEDOn(LED2);
-      }
-      else
-      {
-        STM_EVAL_LEDOff(LED2);
-      }
-      break;
-    case 3: /* Led 3 */
-      if (Led_State != Bit_RESET)
-      {
-        STM_EVAL_LEDOn(LED3);
-      }
-      else
-      {
-        STM_EVAL_LEDOff(LED3);
-      }
-      break;
-    case 4: /* Led 4 */
-      if (Led_State != Bit_RESET)
-      {
-        STM_EVAL_LEDOn(LED4);
-      }
-      else
-      {
-        STM_EVAL_LEDOff(LED4);
-      }
-      break;
-    default:
-      STM_EVAL_LEDOff(LED1);
-      STM_EVAL_LEDOff(LED2);
-      STM_EVAL_LEDOff(LED3);
-      STM_EVAL_LEDOff(LED4); 
-      break;
-    }
-  }
-  
-  DCD_EP_PrepareRx(pdev,HID_IN_EP,Report_buf,2);
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_EP0_RxReady
-  *         Handles control request data.
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-
-uint8_t USBD_HID_EP0_RxReady(void *pdev)
-{
-  BitAction Led_State;
-  
-  if (flag == 1)
-  {
-    flag = 0;
-    if (Report_buf[1] == 0)
-    {
-      Led_State = Bit_RESET;
-    }
-    else 
-    {
-      Led_State = Bit_SET;
-    }
-    
-    switch (Report_buf[0])
-    {
-    case 1: /* Led 1 */
-      if (Led_State != Bit_RESET)
-      {
-        STM_EVAL_LEDOn(LED1);
-      }
-      else
-      {
-        STM_EVAL_LEDOff(LED1);
-      }
-      break;
-      
-    case 2: /* Led 2 */
-      if (Led_State != Bit_RESET)
-      {
-        STM_EVAL_LEDOn(LED2);
-      }
-      else
-      {
-        STM_EVAL_LEDOff(LED2);
-      }
-      break;
-    case 3: /* Led 3 */
-      if (Led_State != Bit_RESET)
-      {
-        STM_EVAL_LEDOn(LED3);
-      }
-      else
-      {
-        STM_EVAL_LEDOff(LED3);
-      }
-      break;
-    case 4: /* Led 4 */
-      if (Led_State != Bit_RESET)
-      {
-        STM_EVAL_LEDOn(LED4);
-      }
-      else
-      {
-        STM_EVAL_LEDOff(LED4);
-      }
-      break;
-    default:
-      STM_EVAL_LEDOff(LED1);
-      STM_EVAL_LEDOff(LED2);
-      STM_EVAL_LEDOff(LED3);
-      STM_EVAL_LEDOff(LED4); 
-      break;
-    }
-  }
-  return USBD_OK;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c
deleted file mode 100644
index a108423..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c	
+++ /dev/null
@@ -1,342 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_hid_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the HID core functions.
-  *
-  * @verbatim
-  *      
-  *          ===================================================================      
-  *                                HID Class  Description
-  *          =================================================================== 
-  *           This module manages the HID class V1.11 following the "Device Class Definition
-  *           for Human Interface Devices (HID) Version 1.11 Jun 27, 2001".
-  *           This driver implements the following aspects of the specification:
-  *             - The Boot Interface Subclass
-  *             - The Mouse protocol
-  *             - Usage Page : Generic Desktop
-  *             - Usage : Joystick
-  *             - Collection : Application 
-  *           
-  *      
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_hid_core.h"
-
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/ 
-static uint8_t  USBD_HID_Init (void  *pdev, 
-                               uint8_t cfgidx);
-
-static uint8_t  USBD_HID_DeInit (void  *pdev, 
-                                 uint8_t cfgidx);
-
-static uint8_t  USBD_HID_Setup (void  *pdev, 
-                                USB_SETUP_REQ *req);
-
-static uint8_t  *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length);
-
-USBD_Class_cb_TypeDef  USBD_HID_cb = 
-{
-  USBD_HID_Init,
-  USBD_HID_DeInit,
-  USBD_HID_Setup,
-  NULL, /*EP0_TxSent*/  
-  NULL, /*EP0_RxReady*/
-  NULL, /*DataIn*/
-  NULL, /*DataOut*/
-  NULL, /*SOF */    
-  USBD_HID_GetCfgDesc, 
-};
-      
-static uint32_t  USBD_HID_AltSet = 0;
-    
-static uint32_t  USBD_HID_Protocol = 0;
- 
-static uint32_t  USBD_HID_IdleState  = 0;
-
-/* USB HID device Configuration Descriptor */
-const uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] =
-{
-  0x09, /* bLength: Configuration Descriptor size */
-  USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
-  USB_HID_CONFIG_DESC_SIZ,
-  /* wTotalLength: Bytes returned */
-  0x00,
-  0x01,         /*bNumInterfaces: 1 interface*/
-  0x01,         /*bConfigurationValue: Configuration value*/
-  0x00,         /*iConfiguration: Index of string descriptor describing
-  the configuration*/
-  0xE0,         /*bmAttributes: bus powered and Support Remote Wake-up */
-  0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/
-  
-  /************** Descriptor of Joystick Mouse interface ****************/
-  /* 09 */
-  0x09,         /*bLength: Interface Descriptor size*/
-  USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/
-  0x00,         /*bInterfaceNumber: Number of Interface*/
-  0x00,         /*bAlternateSetting: Alternate setting*/
-  0x01,         /*bNumEndpoints*/
-  0x03,         /*bInterfaceClass: HID*/
-  0x01,         /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
-  0x02,         /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
-  0,            /*iInterface: Index of string descriptor*/
-  /******************** Descriptor of Joystick Mouse HID ********************/
-  /* 18 */
-  0x09,         /*bLength: HID Descriptor size*/
-  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
-  0x11,         /*bcdHID: HID Class Spec release number*/
-  0x01,
-  0x00,         /*bCountryCode: Hardware target country*/
-  0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/
-  0x22,         /*bDescriptorType*/
-  HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
-  0x00,
-  /******************** Descriptor of Mouse endpoint ********************/
-  /* 27 */
-  0x07,          /*bLength: Endpoint Descriptor size*/
-  USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/
-  
-  HID_IN_EP,     /*bEndpointAddress: Endpoint Address (IN)*/
-  0x03,          /*bmAttributes: Interrupt endpoint*/
-  HID_IN_PACKET, /*wMaxPacketSize: 4 Byte max */
-  0x00,
-  0x0A,          /*bInterval: Polling Interval (10 ms)*/
-  /* 34 */
-} ;
-
-const uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] =
-{
-  0x05,   0x01,
-  0x09,   0x02,
-  0xA1,   0x01,
-  0x09,   0x01,
-  
-  0xA1,   0x00,
-  0x05,   0x09,
-  0x19,   0x01,
-  0x29,   0x03,
-  
-  0x15,   0x00,
-  0x25,   0x01,
-  0x95,   0x03,
-  0x75,   0x01,
-  
-  0x81,   0x02,
-  0x95,   0x01,
-  0x75,   0x05,
-  0x81,   0x01,
-  
-  0x05,   0x01,
-  0x09,   0x30,
-  0x09,   0x31,
-  0x09,   0x38,
-  
-  0x15,   0x81,
-  0x25,   0x7F,
-  0x75,   0x08,
-  0x95,   0x03,
-  
-  0x81,   0x06,
-  0xC0,   0x09,
-  0x3c,   0x05,
-  0xff,   0x09,
-  
-  0x01,   0x15,
-  0x00,   0x25,
-  0x01,   0x75,
-  0x01,   0x95,
-  
-  0x02,   0xb1,
-  0x22,   0x75,
-  0x06,   0x95,
-  0x01,   0xb1,
-  
-  0x01,   0xc0
-}; 
-
-/* Private function ----------------------------------------------------------*/ 
-/**
-  * @brief  USBD_HID_Init
-  *         Initialize the HID interface
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  USBD_HID_Init (void  *pdev, 
-                               uint8_t cfgidx)
-{
-  DCD_PMA_Config(pdev , HID_IN_EP,USB_SNG_BUF,HID_IN_TX_ADDRESS);
- 
-  /* Open EP IN */
-  DCD_EP_Open(pdev,
-              HID_IN_EP,
-              HID_IN_PACKET,
-              USB_EP_INT);
-  
-  /* Open EP OUT */
-  DCD_EP_Open(pdev,
-              HID_OUT_EP,
-              HID_OUT_PACKET,
-              USB_EP_INT);
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_Init
-  *         DeInitialize the HID layer
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  USBD_HID_DeInit (void  *pdev, 
-                                 uint8_t cfgidx)
-{
-  /* Close HID EPs */
-  DCD_EP_Close (pdev , HID_IN_EP);
-  DCD_EP_Close (pdev , HID_OUT_EP);
-  
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_Setup
-  *         Handle the HID specific requests
-  * @param  pdev: instance
-  * @param  req: usb requests
-  * @retval status
-  */
-static uint8_t  USBD_HID_Setup (void  *pdev, 
-                                USB_SETUP_REQ *req)
-{
-  uint16_t len = 0;
-  uint8_t  *pbuf = NULL;
-  
-  switch (req->bmRequest & USB_REQ_TYPE_MASK)
-  {
-  case USB_REQ_TYPE_CLASS :  
-    switch (req->bRequest)
-    {
-    case HID_REQ_SET_PROTOCOL:
-      USBD_HID_Protocol = (uint8_t)(req->wValue);
-      break;
-      
-    case HID_REQ_GET_PROTOCOL:
-      USBD_CtlSendData (pdev, 
-                        (uint8_t *)&USBD_HID_Protocol,
-                        1);    
-      break;
-      
-    case HID_REQ_SET_IDLE:
-      USBD_HID_IdleState = (uint8_t)(req->wValue >> 8);
-      break;
-      
-    case HID_REQ_GET_IDLE:
-      USBD_CtlSendData (pdev, 
-                        (uint8_t *)&USBD_HID_IdleState,
-                        1);        
-      break;      
-      
-    default:
-      USBD_CtlError (pdev, req);
-      return USBD_FAIL; 
-    }
-    break;
-    
-  case USB_REQ_TYPE_STANDARD:
-    switch (req->bRequest)
-    {
-    case USB_REQ_GET_DESCRIPTOR: 
-      if( req->wValue >> 8 == HID_REPORT_DESC)
-      {
-        len = MIN(HID_MOUSE_REPORT_DESC_SIZE , req->wLength);
-        pbuf = (uint8_t *)HID_MOUSE_ReportDesc;
-      }
-      else if( req->wValue >> 8 == HID_DESCRIPTOR_TYPE)
-      {
-        pbuf = (uint8_t *)USBD_HID_CfgDesc + 0x12;
-        len = MIN(USB_HID_DESC_SIZ , req->wLength);
-      }
-      
-      USBD_CtlSendData (pdev, 
-                        pbuf,
-                        len);
-      
-      break;
-      
-    case USB_REQ_GET_INTERFACE :
-      USBD_CtlSendData (pdev,
-                        (uint8_t *)&USBD_HID_AltSet,
-                        1);
-      break;
-      
-    case USB_REQ_SET_INTERFACE :
-      USBD_HID_AltSet = (uint8_t)(req->wValue);
-      break;
-    }
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_SendReport 
-  *         Send HID Report
-  * @param  pdev: device instance
-  * @param  buff: pointer to report
-  * @retval status
-  */
-uint8_t USBD_HID_SendReport     (USB_CORE_HANDLE  *pdev, 
-                                 uint8_t *report,
-                                 uint16_t len)
-{
-  /* Check if USB is configured */
-  if (pdev->dev.device_status == USB_CONFIGURED )
-  {
-    DCD_EP_Tx (pdev, HID_IN_EP, report, len);
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_GetCfgDesc 
-  *         return configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-static uint8_t  *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (USBD_HID_CfgDesc);
-  return (uint8_t *)USBD_HID_CfgDesc;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/inc/usbd_hid_cdc_wrapper.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/inc/usbd_hid_cdc_wrapper.h
deleted file mode 100644
index 7f9358e..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/inc/usbd_hid_cdc_wrapper.h	
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_hid_cdc_wrapper.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_hid_cdc_wrapper.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */  
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_HID_CDC_WRAPPER_H_
-#define __USB_HID_CDC_WRAPPER_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_custom_hid_core.h"
-#include "usbd_cdc_core.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define HID_INTERFACE 0x0
-#define CDC_COM_INTERFACE 0x1
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-#define USB_HID_CDC_CONFIG_DESC_SIZ  (CUSTOMHID_SIZ_CONFIG_DESC -9 + USB_CDC_CONFIG_DESC_SIZ  + 8)
-
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  USBD_HID_CDC_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
-
-#endif  /* __USB_HID_CDC_WRAPPER_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/src/usbd_hid_cdc_wrapper.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/src/usbd_hid_cdc_wrapper.c
deleted file mode 100644
index f17ec25..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/src/usbd_hid_cdc_wrapper.c	
+++ /dev/null
@@ -1,404 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_cdc_hid_wrapper.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file calls to the separate CDC and HID class layer handlers.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  *******************************************************************************/ 
-  /*      
-  *    ===================================================================      
-  *                          composite CDC_HID
-  *    =================================================================== */     
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_hid_cdc_wrapper.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* USBD_CDC_HID_Private_Variables */
-static uint8_t  USBD_HID_CDC_Init         (void *pdev , uint8_t cfgidx);
-static uint8_t  USBD_HID_CDC_DeInit       (void *pdev , uint8_t cfgidx);
-
-/* Control Endpoints*/
-static uint8_t  USBD_HID_CDC_Setup        (void *pdev , USB_SETUP_REQ  *req);  
-static uint8_t  USBD_HID_CDC_EP0_RxReady  (void *pdev);  
-/* Class Specific Endpoints*/
-static uint8_t  USBD_HID_CDC_DataIn       (void *pdev , uint8_t epnum);   
-static uint8_t  USBD_HID_CDC_DataOut      (void *pdev , uint8_t epnum); 
-static uint8_t  USBD_HID_CDC_SOF          (void *pdev); 
-
-static uint8_t*  USBD_HID_CDC_GetConfigDescriptor( uint8_t speed , uint16_t *length); 
-
-/* HID_CDC_CORE_Private_Variables */
-USBD_Class_cb_TypeDef  USBD_HID_CDC_cb = 
-{
-  USBD_HID_CDC_Init,
-  USBD_HID_CDC_DeInit,
-  USBD_HID_CDC_Setup,
-  NULL,  
-  USBD_HID_CDC_EP0_RxReady, 
-  USBD_HID_CDC_DataIn, 
-  USBD_HID_CDC_DataOut,
-  USBD_HID_CDC_SOF, 
-  USBD_HID_CDC_GetConfigDescriptor, 
-};
-
-/* USB CDC_HID device Configuration Descriptor */
-const uint8_t USBD_HID_CDC_CfgDesc[USB_HID_CDC_CONFIG_DESC_SIZ] =
-{  
-  0x09, /* bLength: Configuration Descriptor size */
-  USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
-  USB_HID_CDC_CONFIG_DESC_SIZ,
-  /* wTotalLength: Bytes returned */
-  0x00,
-  0x03,         /*bNumInterfaces: 3 interfaces (2 for CDC, 1 for HID)*/
-  0x01,         /*bConfigurationValue: Configuration value*/
-  0x00,         /*iConfiguration: Index of string descriptor describing
-  the configuration*/
-  0xE0,         /*bmAttributes: bus powered and Support Remote Wake-up */
-  0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/
-  
-  /************** Descriptor of CUSTOM HID interface ****************/
-  /* 09 */
-  0x09,         /*bLength: Interface Descriptor size*/
-  USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/
-  HID_INTERFACE,         /*bInterfaceNumber: Number of Interface*/
-  0x00,         /*bAlternateSetting: Alternate setting*/
-  0x02,         /*bNumEndpoints*/
-  0x03,         /*bInterfaceClass: HID*/
-  0x00,         /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
-  0x00,         /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
-  0,            /*iInterface: Index of string descriptor*/
-  /******************** Descriptor of CUSTOM HID  **************************/
-  /* 18 */
-  0x09,         /*bLength: HID Descriptor size*/
-  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
-  0x11,         /*bcdHID: HID Class Spec release number*/
-  0x01,
-  0x00,         /*bCountryCode: Hardware target country*/
-  0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/
-  0x22,         /*bDescriptorType*/
-  CUSTOMHID_SIZ_REPORT_DESC,/*wItemLength: Total length of Report descriptor*/
-  0x00,
-  /******************** Descriptor of CUSTOM HID endpoint *********************/
-  /* 27 */
-  0x07,          /*bLength: Endpoint Descriptor size*/
-  USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/
-  
-  HID_IN_EP,      /*bEndpointAddress: Endpoint Address (IN)*/
-  0x03,          /*bmAttributes: Interrupt endpoint*/
-  HID_IN_PACKET, /*wMaxPacketSize: 2 Byte max */
-  0x00,
-  0x20,          /*bInterval: Polling Interval (32 ms)*/
-  /* 34 */
-  
-  0x07,	/* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,	/* bDescriptorType: */
-  /*	Endpoint descriptor type */
-  HID_OUT_EP,	/* bEndpointAddress: */
-  /*	Endpoint Address (OUT) */
-  0x03,	/* bmAttributes: Interrupt endpoint */
-  HID_OUT_PACKET,	/* wMaxPacketSize: 2 Bytes max  */
-  0x00,
-  0x20,	/* bInterval: Polling Interval (20 ms) */
-  /* 41 */
-  
-  /******** IAD should be positioned just before the CDC interfaces ******
-                IAD to associate the two CDC interfaces */
-  
-  0x08, /* bLength */
-  0x0B, /* bDescriptorType */
-  0x01, /* bFirstInterface */
-  0x02, /* bInterfaceCount */
-  0x02, /* bFunctionClass */
-  0x02, /* bFunctionSubClass */
-  0x01, /* bFunctionProtocol */
-  0x00, /* iFunction (Index of string descriptor describing this function) */
-  
-  /*************************** CDC interfaces *******************************/
-  
-   /*Interface Descriptor */
-  0x09,   /* bLength: Interface Descriptor size */
-  USB_INTERFACE_DESCRIPTOR_TYPE,  /* bDescriptorType: Interface */
-  /* Interface descriptor type */
-  CDC_COM_INTERFACE,   /* bInterfaceNumber: Number of Interface */
-  0x00,   /* bAlternateSetting: Alternate setting */
-  0x01,   /* bNumEndpoints: One endpoints used */
-  0x02,   /* bInterfaceClass: Communication Interface Class */
-  0x02,   /* bInterfaceSubClass: Abstract Control Model */
-  0x01,   /* bInterfaceProtocol: Common AT commands */
-  0x01,   /* iInterface: */
-  
-  /*Header Functional Descriptor*/
-  0x05,   /* bLength: Endpoint Descriptor size */
-  0x24,   /* bDescriptorType: CS_INTERFACE */
-  0x00,   /* bDescriptorSubtype: Header Func Desc */
-  0x10,   /* bcdCDC: spec release number */
-  0x01,
-  
-  /*Call Management Functional Descriptor*/
-  0x05,   /* bFunctionLength */
-  0x24,   /* bDescriptorType: CS_INTERFACE */
-  0x01,   /* bDescriptorSubtype: Call Management Func Desc */
-  0x00,   /* bmCapabilities: D0+D1 */
-  0x02,   /* bDataInterface: 2 */
-  
-  /*ACM Functional Descriptor*/
-  0x04,   /* bFunctionLength */
-  0x24,   /* bDescriptorType: CS_INTERFACE */
-  0x02,   /* bDescriptorSubtype: Abstract Control Management desc */
-  0x02,   /* bmCapabilities */
-  
-  /*Union Functional Descriptor*/
-  0x05,   /* bFunctionLength */
-  0x24,   /* bDescriptorType: CS_INTERFACE */
-  0x06,   /* bDescriptorSubtype: Union func desc */
-  0x01,   /* bMasterInterface: Communication class interface */
-  0x02,   /* bSlaveInterface0: Data Class Interface */
-  
-  /*Endpoint 2 Descriptor*/
-  0x07,                           /* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,   /* bDescriptorType: Endpoint */
-  CDC_CMD_EP,                     /* bEndpointAddress */
-  0x03,                           /* bmAttributes: Interrupt */
-  LOBYTE(CDC_CMD_PACKET_SZE),     /* wMaxPacketSize: */
-  HIBYTE(CDC_CMD_PACKET_SZE),
-  0xFF,                           /* bInterval: */
-  
-  /*---------------------------------------------------------------------------*/
-  
-  /*Data class interface descriptor*/
-  0x09,   /* bLength: Endpoint Descriptor size */
-  USB_INTERFACE_DESCRIPTOR_TYPE,  /* bDescriptorType: */
-  0x02,   /* bInterfaceNumber: Number of Interface */
-  0x00,   /* bAlternateSetting: Alternate setting */
-  0x02,   /* bNumEndpoints: Two endpoints used */
-  0x0A,   /* bInterfaceClass: CDC */
-  0x00,   /* bInterfaceSubClass: */
-  0x00,   /* bInterfaceProtocol: */
-  0x00,   /* iInterface: */
-  
-  /*Endpoint OUT Descriptor*/
-  0x07,   /* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,      /* bDescriptorType: Endpoint */
-  CDC_OUT_EP,                        /* bEndpointAddress */
-  0x02,                              /* bmAttributes: Bulk */
-  0x40,                              /* wMaxPacketSize: */
-  0x00,
-  0x00,                              /* bInterval: ignore for Bulk transfer */
-  
-  /*Endpoint IN Descriptor*/
-  0x07,   /* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,     /* bDescriptorType: Endpoint */
-  CDC_IN_EP,                        /* bEndpointAddress */
-  0x02,                             /* bmAttributes: Bulk */
-  0x40,                             /* wMaxPacketSize: */
-  0x00,
-  0x00,                              /* bInterval */ 
-     
-}; /* USBD_HID_CDC_CfgDesc */
-
-/* Private function prototypes -----------------------------------------------*/ 
-/*********************************************
-   CDC Device library callbacks
-*********************************************/
-extern uint8_t  usbd_cdc_Init        (void  *pdev, uint8_t cfgidx);
-extern uint8_t  usbd_cdc_DeInit      (void  *pdev, uint8_t cfgidx);
-extern uint8_t  usbd_cdc_Setup       (void  *pdev, USB_SETUP_REQ *req);
-extern uint8_t  usbd_cdc_EP0_RxReady  (void *pdev);
-extern uint8_t  usbd_cdc_DataIn      (void *pdev, uint8_t epnum);
-extern uint8_t  usbd_cdc_DataOut     (void *pdev, uint8_t epnum);
-extern uint8_t  usbd_cdc_SOF         (void *pdev);
-
-/*********************************************
-   HID Device library callbacks
-*********************************************/
-extern uint8_t  USBD_HID_Init (void  *pdev, uint8_t cfgidx);
-extern uint8_t  USBD_HID_DeInit (void  *pdev, uint8_t cfgidx);
-extern uint8_t  USBD_HID_Setup (void  *pdev, USB_SETUP_REQ *req);
-extern uint8_t  *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length);
-extern uint8_t  USBD_HID_DataIn (void  *pdev, uint8_t epnum);
-extern uint8_t  USBD_HID_DataOut (void  *pdev, uint8_t epnum);
-extern uint8_t  USBD_HID_EP0_RxReady (void  *pdev);
-
-/* Private function ----------------------------------------------------------*/ 
-/**
-  * @brief  USBD_HID_CDC_Init
-  *         Initialize the HID & CDC interfaces
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  USBD_HID_CDC_Init (void  *pdev, 
-                               uint8_t cfgidx)
-{
-  /* HID initialization */
-  USBD_HID_Init (pdev,cfgidx);
-  
-  /* CDC initialization */
-  usbd_cdc_Init (pdev,cfgidx);
-  
-  return USBD_OK;
-
-}
-
-/**
-  * @brief  USBD_HID_Init
-  *         DeInitialize the HID/CDC interfaces
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  USBD_HID_CDC_DeInit (void  *pdev, 
-                                 uint8_t cfgidx)
-{
-  /* HID De-initialization */
-  USBD_HID_DeInit (pdev,cfgidx);
-  
-  /* CDC De-initialization */
-  usbd_cdc_DeInit (pdev,cfgidx);
-  
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_Setup
-  *         Handle the HID specific requests
-  * @param  pdev: instance
-  * @param  req: usb requests
-  * @retval status
-  */
-static uint8_t  USBD_HID_CDC_Setup (void  *pdev, 
-                                    USB_SETUP_REQ *req)
-{
-  switch (req->bmRequest & USB_REQ_RECIPIENT_MASK)
-  {
-  case USB_REQ_RECIPIENT_INTERFACE:
-    if (req->wIndex == HID_INTERFACE)
-    {
-      return (USBD_HID_Setup (pdev, req));
-    }
-    else
-    {
-      return (usbd_cdc_Setup(pdev, req));
-    }
-  case USB_REQ_RECIPIENT_ENDPOINT:
-    if ((req->wIndex == HID_IN_EP) || (req->wIndex == HID_OUT_EP))
-    {
-      return (USBD_HID_Setup (pdev, req));   
-    }
-    else
-    {
-      return (usbd_cdc_Setup(pdev, req));
-    }
-  }
-    return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_CDC_GetCfgDesc 
-  *         return configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-uint8_t  *USBD_HID_CDC_GetConfigDescriptor (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (USBD_HID_CDC_CfgDesc);
-  return (uint8_t*)USBD_HID_CDC_CfgDesc;
-}
-
-/**
-  * @brief  USBD_HID_CDC_DataIn
-  *         handle data IN Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-static uint8_t  USBD_HID_CDC_DataIn (void  *pdev, 
-                              uint8_t epnum)
-{
-  /*DataIN can be for CDC or HID */
-  
-  if (epnum == (CDC_IN_EP&~0x80) )
-  {
-    return (usbd_cdc_DataIn(pdev, epnum));
-  }
-  else
-  {
-   return (USBD_HID_DataIn(pdev, epnum));
-  }
-}
-
-/**
-  * @brief  USBD_HID_CDC_DataOut
-  *         handle data OUT Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-uint8_t  USBD_HID_CDC_DataOut(void *pdev , uint8_t epnum)
-{
-  /*DataOut can be for CDC or HID */
-  
-  if (epnum == (CDC_OUT_EP&~0x80) )
-  {
-    return (usbd_cdc_DataOut(pdev, epnum));
-  }
-  else
-  {
-    return (USBD_HID_DataOut(pdev, epnum));
-  } 
-}
-
-/**
-  * @brief  USBD_HID_CDC_SOF
-  *         handle SOF processing
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-
-uint8_t  USBD_HID_CDC_SOF (void *pdev)
-{
-  /*SOF processing needed for CDC */
-  return (usbd_cdc_SOF(pdev));
-}
-
-/**
-  * @brief  USBD_HID_CDC_EP0_RxReady
-  *         handle RxReady processing
-  * @param  pdev: device istance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-static uint8_t  USBD_HID_CDC_EP0_RxReady  (void *pdev)
-{
-  /* RxReady processing needed for CDC or HID */
-  (usbd_cdc_EP0_RxReady(pdev));
-  (USBD_HID_EP0_RxReady(pdev));
-  return USBD_OK;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/inc/usbd_hid_msc_wrapper.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/inc/usbd_hid_msc_wrapper.h
deleted file mode 100644
index e3e60f2..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/inc/usbd_hid_msc_wrapper.h	
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_hid_wrapper.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_msc_hid_wrapper.c file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */  
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_HID_MSC_WRAPPER_H_
-#define __USB_HID_MSC_WRAPPER_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include  "usbd_ioreq.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define HID_INTERFACE 0x0
-#define MSC_INTERFACE 0x1
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-#define USB_HID_MSC_CONFIG_DESC_SIZ  (CUSTOMHID_SIZ_CONFIG_DESC -9 + USB_MSC_CONFIG_DESC_SIZ)
-
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  USBD_HID_MSC_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
-
-
-#endif  /* __USB_HID_MSC_WRAPPER_H_ */
-  
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/src/usbd_hid_msc_wrapper.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/src/usbd_hid_msc_wrapper.c
deleted file mode 100644
index 1344329..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/src/usbd_hid_msc_wrapper.c	
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_hid_wrapper.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file calls to the separate MSC and HID class layer handlers.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  *****************************************************************************/ 
-  /*      
-  *    ===================================================================      
-  *                          composite MSC_HID
-  *    =================================================================== */     
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_hid_msc_wrapper.h"
-#include "usbd_custom_hid_core.h"
-#include "usbd_msc_core.h"
-#include "usbd_desc.h"
-#include "usbd_req.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-static uint8_t  USBD_HID_MSC_Init         (void *pdev , uint8_t cfgidx);
-static uint8_t  USBD_HID_MSC_DeInit       (void *pdev , uint8_t cfgidx);
-
-/* Control Endpoints*/
-static uint8_t  USBD_HID_MSC_Setup        (void *pdev , USB_SETUP_REQ  *req);  
-static uint8_t  USBD_HID_MSC_EP0_RxReady  (void *pdev);  
-
-/* Class Specific Endpoints*/
-static uint8_t  USBD_HID_MSC_DataIn       (void *pdev , uint8_t epnum);   
-static uint8_t  USBD_HID_MSC_DataOut      (void *pdev , uint8_t epnum); 
-
-static uint8_t*  USBD_HID_MSC_GetConfigDescriptor( uint8_t speed , uint16_t *length); 
-
-USBD_Class_cb_TypeDef  USBD_HID_MSC_cb = 
-{
-  USBD_HID_MSC_Init,
-  USBD_HID_MSC_DeInit,
-  USBD_HID_MSC_Setup,
-  NULL, 
-  USBD_HID_MSC_EP0_RxReady, 
-  USBD_HID_MSC_DataIn, 
-  USBD_HID_MSC_DataOut,
-  NULL,   
-  USBD_HID_MSC_GetConfigDescriptor, 
-};
-
-
-/* USB MSC_HID device Configuration Descriptor */
-const uint8_t USBD_HID_MSC_CfgDesc[USB_HID_MSC_CONFIG_DESC_SIZ] =
-{  
-  0x09, /* bLength: Configuration Descriptor size */
-  USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
-  USB_HID_MSC_CONFIG_DESC_SIZ,
-  /* wTotalLength: Bytes returned */
-  0x00,
-  0x02,         /*bNumInterfaces: 2 interfaces (1 for MSC, 1 for HID)*/
-  0x01,         /*bConfigurationValue: Configuration value*/
-  0x00,         /*iConfiguration: Index of string descriptor describing
-  the configuration*/
-  0xE0,         /*bmAttributes: bus powered and Support Remote Wake-up */
-  0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/
-  
-  /************** Descriptor of CUSTOM HID interface ****************/
-  /* 09 */
-  0x09,         /*bLength: Interface Descriptor size*/
-  USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/
-  HID_INTERFACE,         /*bInterfaceNumber: Number of Interface*/
-  0x00,         /*bAlternateSetting: Alternate setting*/
-  0x02,         /*bNumEndpoints*/
-  0x03,         /*bInterfaceClass: HID*/
-  0x00,         /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
-  0x00,         /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
-  0,            /*iInterface: Index of string descriptor*/
-  /******************** Descriptor of CUSTOM HID  **************************/
-  /* 18 */
-  0x09,         /*bLength: HID Descriptor size*/
-  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
-  0x11,         /*bcdHID: HID Class Spec release number*/
-  0x01,
-  0x00,         /*bCountryCode: Hardware target country*/
-  0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/
-  0x22,         /*bDescriptorType*/
-  CUSTOMHID_SIZ_REPORT_DESC,/*wItemLength: Total length of Report descriptor*/
-  0x00,
-  /******************** Descriptor of CUSTOM HID endpoint *********************/
-  /* 27 */
-  0x07,          /*bLength: Endpoint Descriptor size*/
-  USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/
-  
-  HID_IN_EP,      /*bEndpointAddress: Endpoint Address (IN)*/
-  0x03,          /*bmAttributes: Interrupt endpoint*/
-  HID_IN_PACKET, /*wMaxPacketSize: 2 Byte max */
-  0x00,
-  0x20,          /*bInterval: Polling Interval (32 ms)*/
-  /* 34 */
-  
-  0x07,	/* bLength: Endpoint Descriptor size */
-  USB_ENDPOINT_DESCRIPTOR_TYPE,	/* bDescriptorType: */
-  /*	Endpoint descriptor type */
-  HID_OUT_EP,	/* bEndpointAddress: */
-  /*	Endpoint Address (OUT) */
-  0x03,	/* bmAttributes: Interrupt endpoint */
-  HID_OUT_PACKET,	/* wMaxPacketSize: 2 Bytes max  */
-  0x00,
-  0x20,	/* bInterval: Polling Interval (20 ms) */
-  /* 41 */
-  
-  /********************  Mass Storage interface ********************/
-  0x09,   /* bLength: Interface Descriptor size */
-  0x04,   /* bDescriptorType: */
-  MSC_INTERFACE,   /* bInterfaceNumber: Number of Interface */
-  0x00,   /* bAlternateSetting: Alternate setting */
-  0x02,   /* bNumEndpoints*/
-  0x08,   /* bInterfaceClass: MSC Class */
-  0x06,   /* bInterfaceSubClass : SCSI transparent*/
-  0x50,   /* nInterfaceProtocol */
-  0X01,          /* iInterface: */
-  /********************  Mass Storage Endpoints ********************/
-  0x07,   /*Endpoint descriptor length = 7*/
-  0x05,   /*Endpoint descriptor type */
-  MSC_IN_EP,   /*Endpoint address (IN, address 2) */
-  0x02,   /*Bulk endpoint type */
-  LOBYTE(MSC_MAX_PACKET),
-  HIBYTE(MSC_MAX_PACKET),
-  0x00,   /*Polling interval in milliseconds */
-  
-  0x07,   /*Endpoint descriptor length = 7 */
-  0x05,   /*Endpoint descriptor type */
-  MSC_OUT_EP,   /*Endpoint address (OUT, address 2) */
-  0x02,   /*Bulk endpoint type */
-  LOBYTE(MSC_MAX_PACKET),
-  HIBYTE(MSC_MAX_PACKET),
-  0x00     /*Polling interval in milliseconds*/
-     
-}; /* USBD_HID_MSC_CfgDesc */
-
-/* Private function prototypes -----------------------------------------------*/
-/*********************************************
-   MSC Device library callbacks
-*********************************************/
-extern uint8_t  USBD_MSC_Init (void  *pdev, uint8_t cfgidx);
-extern uint8_t  USBD_MSC_DeInit (void  *pdev, uint8_t cfgidx);
-extern uint8_t  USBD_MSC_Setup (void  *pdev, USB_SETUP_REQ *req);
-extern uint8_t  USBD_MSC_DataIn (void  *pdev, uint8_t epnum);
-extern uint8_t  USBD_MSC_DataOut (void  *pdev,  uint8_t epnum);
-extern uint8_t  *USBD_MSC_GetCfgDesc (uint8_t speed, uint16_t *length);
-extern uint8_t  USBD_MSC_CfgDesc[USB_MSC_CONFIG_DESC_SIZ];
-
-/*********************************************
-   HID Device library callbacks
-*********************************************/
-extern uint8_t  USBD_HID_Init (void  *pdev, uint8_t cfgidx);
-extern uint8_t  USBD_HID_DeInit (void  *pdev, uint8_t cfgidx);
-extern uint8_t  USBD_HID_Setup (void  *pdev, USB_SETUP_REQ *req);
-extern uint8_t  *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length);
-extern uint8_t  USBD_HID_DataIn (void  *pdev, uint8_t epnum);
-extern uint8_t  USBD_HID_DataOut (void  *pdev, uint8_t epnum);
-extern uint8_t  USBD_HID_EP0_RxReady (void  *pdev);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  USBD_HID_MSC_Init
-  *         Initialize the HID & MSC interfaces
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  USBD_HID_MSC_Init (void  *pdev, 
-                               uint8_t cfgidx)
-{
-  /* HID initialization */
-  USBD_HID_Init (pdev,cfgidx);
-  
-  /* MSC initialization */
-  USBD_MSC_Init (pdev,cfgidx);
-  
-  return USBD_OK;
-
-}
-
-/**
-  * @brief  USBD_HID_Init
-  *         DeInitialize the HID/CDC interfaces
-  * @param  pdev: device instance
-  * @param  cfgidx: Configuration index
-  * @retval status
-  */
-static uint8_t  USBD_HID_MSC_DeInit (void  *pdev, 
-                                 uint8_t cfgidx)
-{
-  /* HID De-initialization */
-  USBD_HID_DeInit (pdev,cfgidx);
-  
-  /* CDC De-initialization */
-  USBD_MSC_DeInit (pdev,cfgidx);
-  
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_Setup
-  *         Handle the HID specific requests
-  * @param  pdev: instance
-  * @param  req: usb requests
-  * @retval status
-  */
-static uint8_t  USBD_HID_MSC_Setup (void  *pdev, 
-                                    USB_SETUP_REQ *req)
-{
-  switch (req->bmRequest & USB_REQ_RECIPIENT_MASK)
-  {
-  case USB_REQ_RECIPIENT_INTERFACE:
-    if (req->wIndex == HID_INTERFACE)
-    {
-      return (USBD_HID_Setup (pdev, req));
-    }
-    else
-    {
-      return (USBD_MSC_Setup(pdev, req));
-    }
-  case USB_REQ_RECIPIENT_ENDPOINT:
-    if ((req->wIndex == HID_IN_EP) || (req->wIndex == HID_OUT_EP))
-    {
-      return (USBD_HID_Setup (pdev, req));   
-    }
-    else
-    {
-      return (USBD_MSC_Setup(pdev, req));
-    }
-  }   
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_HID_MSC_GetCfgDesc 
-  *         return configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-uint8_t  *USBD_HID_MSC_GetConfigDescriptor (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (USBD_HID_MSC_CfgDesc);
-  return (uint8_t*)USBD_HID_MSC_CfgDesc;
-}
-
-/**
-  * @brief  USBD_HID_MSC_DataIn
-  *         handle data IN Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-static uint8_t  USBD_HID_MSC_DataIn (void  *pdev, 
-                              uint8_t epnum)
-{
-  /*DataIN can be for MSC or HID */
-  
-  if (epnum == (MSC_IN_EP&~0x80) )
-  {
-    return (USBD_MSC_DataIn(pdev, epnum));
-  }
-  else
-  {
-   return (USBD_HID_DataIn(pdev, epnum));
-  }
-}
-
-/**
-  * @brief  USBD_HID_MSC_DataOut
-  *         handle data OUT Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-static uint8_t  USBD_HID_MSC_DataOut(void *pdev , uint8_t epnum)
-{
-  /*DataOut can be for MSC or HID */
-  
-  if (epnum == (MSC_OUT_EP&~0x80) )
-  {
-    return (USBD_MSC_DataOut(pdev, epnum));
-  }
-  else
-  {
-    return (USBD_HID_DataOut(pdev, epnum));
-  } 
-}
-
-/**
-  * @brief  USBD_HID_MSC_EP0_RxReady
-  *         handle RxReady processing
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-uint8_t  USBD_HID_MSC_EP0_RxReady  (void *pdev)
-{
-  /*RxReady processing needed for Custom HID only*/
-  return (USBD_HID_EP0_RxReady(pdev));
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h
deleted file mode 100644
index a76b96d..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h	
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_bot.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header for the usbd_msc_bot.c file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_MSC_BOT_H
-#define __USBD_MSC_BOT_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_core.h"
-#include "usbd_msc_scsi.h"
-#include "usbd_ioreq.h"
-#include "usbd_msc_mem.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define BOT_IDLE                      0       /* Idle state */
-#define BOT_DATA_OUT                  1       /* Data Out state */
-#define BOT_DATA_IN                   2       /* Data In state */
-#define BOT_LAST_DATA_IN              3       /* Last Data In Last */
-#define BOT_SEND_DATA                 4       /* Send Immediate data */
-
-#define BOT_CBW_SIGNATURE             0x43425355
-#define BOT_CSW_SIGNATURE             0x53425355
-#define BOT_CBW_LENGTH                31
-#define BOT_CSW_LENGTH                13
-
-/* CSW Status Definitions */
-#define CSW_CMD_PASSED                0x00
-#define CSW_CMD_FAILED                0x01
-#define CSW_PHASE_ERROR               0x02
-
-/* BOT Status */
-#define BOT_STATE_NORMAL              0
-#define BOT_STATE_RECOVERY            1
-#define BOT_STATE_ERROR               2
-
-
-#define DIR_IN                        0
-#define DIR_OUT                       1
-#define BOTH_DIR                      2
-
-/* Exported types ------------------------------------------------------------*/
-typedef struct _MSC_BOT_CBW
-{
-  uint32_t dSignature;
-  uint32_t dTag;
-  uint32_t dDataLength;
-  uint8_t  bmFlags;
-  uint8_t  bLUN;
-  uint8_t  bCBLength;
-  uint8_t  CB[16];
-}
-MSC_BOT_CBW_TypeDef;
-
-
-typedef struct _MSC_BOT_CSW
-{
-  uint32_t dSignature;
-  uint32_t dTag;
-  uint32_t dDataResidue;
-  uint8_t  bStatus;
-}
-MSC_BOT_CSW_TypeDef;
-
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern uint8_t              MSC_BOT_Data[];
-extern uint16_t             MSC_BOT_DataLen;
-extern uint8_t              MSC_BOT_State;
-extern uint8_t              MSC_BOT_BurstMode;
-extern MSC_BOT_CBW_TypeDef  MSC_BOT_cbw;
-extern MSC_BOT_CSW_TypeDef  MSC_BOT_csw;
-
-/* Exported functions ------------------------------------------------------- */ 
-void MSC_BOT_Init (USB_CORE_HANDLE  *pdev);
-void MSC_BOT_Reset (USB_CORE_HANDLE  *pdev);
-void MSC_BOT_DeInit (USB_CORE_HANDLE  *pdev);
-void MSC_BOT_DataIn (USB_CORE_HANDLE  *pdev, 
-                     uint8_t epnum);
-
-void MSC_BOT_DataOut (USB_CORE_HANDLE  *pdev, 
-                      uint8_t epnum);
-
-void MSC_BOT_SendCSW (USB_CORE_HANDLE  *pdev,
-                             uint8_t CSW_Status);
-
-void  MSC_BOT_CplClrFeature (USB_CORE_HANDLE  *pdev, 
-                             uint8_t epnum);
-
-#endif /* __USBD_MSC_BOT_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h
deleted file mode 100644
index 9ffc4a9..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h	
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header for the usbd_msc_core.c file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef _USB_MSC_CORE_H_
-#define _USB_MSC_CORE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_req.h"
-#include "usbd_msc_bot.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define BOT_GET_MAX_LUN              0xFE
-#define BOT_RESET                    0xFF
-#define USB_MSC_CONFIG_DESC_SIZ      32
-
-#define MSC_EPIN_SIZE                MSC_MAX_PACKET 
-#define MSC_EPOUT_SIZE               MSC_MAX_PACKET 
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern USBD_Class_cb_TypeDef  USBD_MSC_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
-
-#endif  /* _USB_MSC_CORE_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h
deleted file mode 100644
index 47885ed..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h	
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_data.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header for the usbd_msc_data.c file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef _USBD_MSC_DATA_H_
-#define _USBD_MSC_DATA_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_conf.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define MODE_SENSE6_LEN			 8
-#define MODE_SENSE10_LEN		 8
-#define LENGTH_INQUIRY_PAGE00		 7
-#define LENGTH_FORMAT_CAPACITIES    	20
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern const uint8_t MSC_Page00_Inquiry_Data[];  
-extern const uint8_t MSC_Mode_Sense6_data[];
-extern const uint8_t MSC_Mode_Sense10_data[]; 
-
-/* Exported functions ------------------------------------------------------- */ 
-
-#endif /* _USBD_MSC_DATA_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h
deleted file mode 100644
index 0b6bc74..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h	
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_mem.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header for the STORAGE DISK file file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_MEM_H
-#define __USBD_MEM_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_def.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define USBD_STD_INQUIRY_LENGTH		36
-
-/* Exported types ------------------------------------------------------------*/
-typedef struct _USBD_STORAGE
-{
-  int8_t (* Init) (uint8_t lun);
-  int8_t (* GetCapacity) (uint8_t lun, uint32_t *block_num, uint32_t *block_size);
-  int8_t (* IsReady) (uint8_t lun);
-  int8_t (* IsWriteProtected) (uint8_t lun);
-  int8_t (* Read) (uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
-  int8_t (* Write)(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
-  int8_t (* GetMaxLun)(void);
-  int8_t *pInquiry;
-  
-}USBD_STORAGE_cb_TypeDef;
-
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-extern USBD_STORAGE_cb_TypeDef *USBD_STORAGE_fops;
-
-
-#endif /* __USBD_MEM_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h
deleted file mode 100644
index ca6dded..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h	
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_scsi.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header for the usbd_msc_scsi.c file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_MSC_SCSI_H
-#define __USBD_MSC_SCSI_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_data.h"
-#include "usbd_msc_bot.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#define SENSE_LIST_DEEPTH                          4
-
-/* SCSI Commands */
-#define SCSI_FORMAT_UNIT                            0x04
-#define SCSI_INQUIRY                                0x12
-#define SCSI_MODE_SELECT6                           0x15
-#define SCSI_MODE_SELECT10                          0x55
-#define SCSI_MODE_SENSE6                            0x1A
-#define SCSI_MODE_SENSE10                           0x5A
-#define SCSI_ALLOW_MEDIUM_REMOVAL                   0x1E
-#define SCSI_READ6                                  0x08
-#define SCSI_READ10                                 0x28
-#define SCSI_READ12                                 0xA8
-#define SCSI_READ16                                 0x88
-
-#define SCSI_READ_CAPACITY10                        0x25
-#define SCSI_READ_CAPACITY16                        0x9E
-
-#define SCSI_REQUEST_SENSE                          0x03
-#define SCSI_START_STOP_UNIT                        0x1B
-#define SCSI_TEST_UNIT_READY                        0x00
-#define SCSI_WRITE6                                 0x0A
-#define SCSI_WRITE10                                0x2A
-#define SCSI_WRITE12                                0xAA
-#define SCSI_WRITE16                                0x8A
-
-#define SCSI_VERIFY10                               0x2F
-#define SCSI_VERIFY12                               0xAF
-#define SCSI_VERIFY16                               0x8F
-
-#define SCSI_SEND_DIAGNOSTIC                        0x1D
-#define SCSI_READ_FORMAT_CAPACITIES                 0x23
-
-#define NO_SENSE                                    0
-#define RECOVERED_ERROR                             1
-#define NOT_READY                                   2
-#define MEDIUM_ERROR                                3
-#define HARDWARE_ERROR                              4
-#define ILLEGAL_REQUEST                             5
-#define UNIT_ATTENTION                              6
-#define DATA_PROTECT                                7
-#define BLANK_CHECK                                 8
-#define VENDOR_SPECIFIC                             9
-#define COPY_ABORTED                               10
-#define ABORTED_COMMAND                            11
-#define VOLUME_OVERFLOW                            13
-#define MISCOMPARE                                 14
-
-
-#define INVALID_CDB                                 0x20
-#define INVALID_FIELED_IN_COMMAND                   0x24
-#define PARAMETER_LIST_LENGTH_ERROR                 0x1A
-#define INVALID_FIELD_IN_PARAMETER_LIST             0x26
-#define ADDRESS_OUT_OF_RANGE                        0x21
-#define MEDIUM_NOT_PRESENT                          0x3A
-#define MEDIUM_HAVE_CHANGED                         0x28
-#define WRITE_PROTECTED                             0x27 
-#define UNRECOVERED_READ_ERROR			    0x11
-#define WRITE_FAULT				    0x03 
-
-#define READ_FORMAT_CAPACITY_DATA_LEN               0x0C
-#define READ_CAPACITY10_DATA_LEN                    0x08
-#define MODE_SENSE10_DATA_LEN                       0x08
-#define MODE_SENSE6_DATA_LEN                        0x04
-#define REQUEST_SENSE_DATA_LEN                      0x12
-#define STANDARD_INQUIRY_DATA_LEN                   0x24
-#define BLKVFY                                      0x04
-
-/* Exported types ------------------------------------------------------------*/
-typedef struct _SENSE_ITEM {                
-  char Skey;
-  union {
-    struct _ASCs {
-      char ASC;
-      char ASCQ;
-    }b;
-    unsigned int	ASC;
-    char *pData;
-  } w;
-} SCSI_Sense_TypeDef; 
-
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern  uint8_t Page00_Inquiry_Data[];
-extern  uint8_t Standard_Inquiry_Data[];
-extern  uint8_t Standard_Inquiry_Data2[];
-extern  uint8_t Mode_Sense6_data[];
-extern  uint8_t Mode_Sense10_data[];
-extern  uint8_t Scsi_Sense_Data[];
-extern  uint8_t ReadCapacity10_Data[];
-extern  uint8_t ReadFormatCapacity_Data [];
-
-extern SCSI_Sense_TypeDef     SCSI_Sense [SENSE_LIST_DEEPTH]; 
-extern uint8_t   SCSI_Sense_Head;
-extern uint8_t   SCSI_Sense_Tail;
-/* Exported functions ------------------------------------------------------- */ 
-int8_t SCSI_ProcessCmd(USB_CORE_HANDLE  *pdev,
-                           uint8_t lun, 
-                           uint8_t *cmd);
-
-void   SCSI_SenseCode(uint8_t lun, 
-                    uint8_t sKey, 
-                    uint8_t ASC);
-
-
-#endif /* __USBD_MSC_SCSI_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c
deleted file mode 100644
index a362446..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c	
+++ /dev/null
@@ -1,319 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_bot.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the BOT protocol core functions.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_bot.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-uint16_t             MSC_BOT_DataLen;
-uint8_t              MSC_BOT_State;
-uint8_t              MSC_BOT_Status;
-
-uint8_t              MSC_BOT_Data[MSC_MEDIA_PACKET] ;
-
-MSC_BOT_CBW_TypeDef  MSC_BOT_cbw ;
-
-MSC_BOT_CSW_TypeDef  MSC_BOT_csw ;
-
-/* Private function prototypes -----------------------------------------------*/
-static void MSC_BOT_CBW_Decode (USB_CORE_HANDLE  *pdev);
-
-static void MSC_BOT_SendData (USB_CORE_HANDLE  *pdev, 
-                              uint8_t* pbuf, 
-                              uint16_t len);
-
-static void MSC_BOT_Abort(USB_CORE_HANDLE  *pdev);
-
-/* Private functions ---------------------------------------------------------*/
-/**
-  * @brief  MSC_BOT_Init
-  *         Initialize the BOT Process
-  * @param  pdev: device instance
-  * @retval None
-  */
-void MSC_BOT_Init (USB_CORE_HANDLE  *pdev)
-{
-  MSC_BOT_State = BOT_IDLE;
-  MSC_BOT_Status = BOT_STATE_NORMAL;
-  USBD_STORAGE_fops->Init(0);
-  
-  /* Prepare EP to Receive First BOT Cmd */
-  DCD_EP_PrepareRx (pdev,
-                    MSC_OUT_EP,
-                    (uint8_t *)&MSC_BOT_cbw,
-                    BOT_CBW_LENGTH);    
-}
-
-/**
-  * @brief  MSC_BOT_Reset
-  *         Reset the BOT Machine
-  * @param  pdev: device instance
-  * @retval  None
-  */
-void MSC_BOT_Reset (USB_CORE_HANDLE  *pdev)
-{
-  MSC_BOT_State = BOT_IDLE;
-  MSC_BOT_Status = BOT_STATE_RECOVERY;
-  /* Prepare EP to Receive First BOT Cmd */
-  DCD_EP_PrepareRx (pdev,
-                    MSC_OUT_EP,
-                    (uint8_t *)&MSC_BOT_cbw,
-                    BOT_CBW_LENGTH);    
-}
-
-/**
-  * @brief  MSC_BOT_DeInit
-  *         Uninitialize the BOT Machine
-  * @param  pdev: device instance
-  * @retval None
-  */
-void MSC_BOT_DeInit (USB_CORE_HANDLE  *pdev)
-{
-  MSC_BOT_State = BOT_IDLE;
-}
-
-/**
-  * @brief  MSC_BOT_DataIn
-  *         Handle BOT IN data stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval None
-  */
-void MSC_BOT_DataIn (USB_CORE_HANDLE  *pdev, 
-                     uint8_t epnum)
-{
-
-  switch (MSC_BOT_State)
-  {
-  case BOT_DATA_IN:
-    if(SCSI_ProcessCmd(pdev,
-                        MSC_BOT_cbw.bLUN,
-                        &MSC_BOT_cbw.CB[0]) < 0)
-    {
-      MSC_BOT_SendCSW (pdev, CSW_CMD_FAILED);
-    }
-    break;
-    
-  case BOT_SEND_DATA:
-  case BOT_LAST_DATA_IN:
-    MSC_BOT_SendCSW (pdev, CSW_CMD_PASSED);
-    
-    break;
-    
-  default:
-    break;
-  }
-}
-/**
-  * @brief  MSC_BOT_DataOut
-  *         Process MSC OUT data
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval None
-  */
-void MSC_BOT_DataOut (USB_CORE_HANDLE  *pdev, 
-                      uint8_t epnum)
-{
-  
-  switch (MSC_BOT_State)
-  {
-  case BOT_IDLE:
-    MSC_BOT_CBW_Decode(pdev);
-    break;
-    
-  case BOT_DATA_OUT:
-    
-    if(SCSI_ProcessCmd(pdev,
-                        MSC_BOT_cbw.bLUN,
-                        &MSC_BOT_cbw.CB[0]) < 0)
-    {
-      MSC_BOT_SendCSW (pdev, CSW_CMD_FAILED);
-    }
-
-    break;
-    
-  default:
-    break;
-  }
-  
-}
-
-/**
-  * @brief  MSC_BOT_CBW_Decode
-  *         Decode the CBW command and set the BOT state machine accordingly  
-  * @param  pdev: device instance
-  * @retval None
-  */
-static void  MSC_BOT_CBW_Decode (USB_CORE_HANDLE  *pdev)
-{
-
-  MSC_BOT_csw.dTag = MSC_BOT_cbw.dTag;
-  MSC_BOT_csw.dDataResidue = MSC_BOT_cbw.dDataLength;
-  
-  if ((USBD_GetRxCount (pdev ,MSC_OUT_EP) != BOT_CBW_LENGTH) ||
-      (MSC_BOT_cbw.dSignature != BOT_CBW_SIGNATURE)||
-        (MSC_BOT_cbw.bLUN > 1) || 
-          (MSC_BOT_cbw.bCBLength < 1) || 
-            (MSC_BOT_cbw.bCBLength > 16))
-  {
-    
-    SCSI_SenseCode(MSC_BOT_cbw.bLUN, 
-                   ILLEGAL_REQUEST, 
-                   INVALID_CDB);
-     MSC_BOT_Status = BOT_STATE_ERROR;   
-    MSC_BOT_Abort(pdev);
- 
-  }
-  else
-  {
-    if(SCSI_ProcessCmd(pdev,
-                              MSC_BOT_cbw.bLUN,
-                              &MSC_BOT_cbw.CB[0]) < 0)
-    {
-      MSC_BOT_Abort(pdev);
-    }
-    /*Burst xfer handled internally*/
-    else if ((MSC_BOT_State != BOT_DATA_IN) && 
-             (MSC_BOT_State != BOT_DATA_OUT) &&
-             (MSC_BOT_State != BOT_LAST_DATA_IN)) 
-    {
-      if (MSC_BOT_DataLen > 0)
-      {
-        MSC_BOT_SendData(pdev,
-                         MSC_BOT_Data, 
-                         MSC_BOT_DataLen);
-      }
-      else if (MSC_BOT_DataLen == 0) 
-      {
-        MSC_BOT_SendCSW (pdev,
-                         CSW_CMD_PASSED);
-      }
-    }
-  }
-}
-
-/**
-  * @brief  MSC_BOT_SendData
-  *         Send the requested data
-  * @param  pdev: device instance
-  * @param  buf: pointer to data buffer
-  * @param  len: Data Length
-  * @retval None
-  */
-static void  MSC_BOT_SendData(USB_CORE_HANDLE  *pdev,
-                              uint8_t* buf, 
-                              uint16_t len)
-{
-  
-  len = MIN (MSC_BOT_cbw.dDataLength, len);
-  MSC_BOT_csw.dDataResidue -= len;
-  MSC_BOT_csw.bStatus = CSW_CMD_PASSED;
-  MSC_BOT_State = BOT_SEND_DATA;
-  
-  DCD_EP_Tx (pdev, MSC_IN_EP, buf, len);  
-}
-
-/**
-  * @brief  MSC_BOT_SendCSW
-  *         Send the Command Status Wrapper
-  * @param  pdev: device instance
-  * @param  status : CSW status
-  * @retval None
-  */
-void  MSC_BOT_SendCSW (USB_CORE_HANDLE  *pdev,
-                              uint8_t CSW_Status)
-{
-  MSC_BOT_csw.dSignature = BOT_CSW_SIGNATURE;
-  MSC_BOT_csw.bStatus = CSW_Status;
-  MSC_BOT_State = BOT_IDLE;
-  
-  DCD_EP_Tx (pdev, 
-             MSC_IN_EP, 
-             (uint8_t *)&MSC_BOT_csw, 
-             BOT_CSW_LENGTH);
-  
-  /* Prepare EP to Receive next Cmd */
-  DCD_EP_PrepareRx (pdev,
-                    MSC_OUT_EP,
-                    (uint8_t *)&MSC_BOT_cbw, 
-                    BOT_CBW_LENGTH);  
-  
-}
-
-/**
-  * @brief  MSC_BOT_Abort
-  *         Abort the current transfer
-  * @param  pdev: device instance
-  * @retval status
-  */
-
-static void  MSC_BOT_Abort (USB_CORE_HANDLE  *pdev)
-{
-
-  if ((MSC_BOT_cbw.bmFlags == 0) && 
-      (MSC_BOT_cbw.dDataLength != 0) &&
-      (MSC_BOT_Status == BOT_STATE_NORMAL) )
-  {
-    DCD_EP_Stall(pdev, MSC_OUT_EP );
-  }
-  DCD_EP_Stall(pdev, MSC_IN_EP);
-  
-  if(MSC_BOT_Status == BOT_STATE_ERROR)
-  {
-    DCD_EP_PrepareRx (pdev,
-                      MSC_OUT_EP,
-                      (uint8_t *)&MSC_BOT_cbw, 
-                      BOT_CBW_LENGTH);    
-  }
-}
-
-/**
-  * @brief  MSC_BOT_CplClrFeature
-  *         Complete the clear feature request
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval None
-  */
-
-void  MSC_BOT_CplClrFeature (USB_CORE_HANDLE  *pdev, uint8_t epnum)
-{
-  if(MSC_BOT_Status == BOT_STATE_ERROR )/* Bad CBW Signature */
-  {
-    DCD_EP_Stall(pdev, MSC_IN_EP);
-    MSC_BOT_Status = BOT_STATE_NORMAL;    
-  }
-  else if(((epnum & 0x80) == 0x80) && ( MSC_BOT_Status != BOT_STATE_RECOVERY))
-  {
-    MSC_BOT_SendCSW (pdev, CSW_CMD_FAILED);
-  }
-  
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c
deleted file mode 100644
index b5c4169..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c	
+++ /dev/null
@@ -1,310 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the MSC core functions.
-  *
-  * @verbatim
-  *      
-  *          ===================================================================      
-  *                                MSC Class  Description
-  *          =================================================================== 
-  *           This module manages the MSC class V1.0 following the "Universal 
-  *           Serial Bus Mass Storage Class (MSC) Bulk-Only Transport (BOT) Version 1.0
-  *           Sep. 31, 1999".
-  *           This driver implements the following aspects of the specification:
-  *             - Bulk-Only Transport protocol
-  *             - Subclass : SCSI transparent command set (ref. SCSI Primary Commands - 3 (SPC-3))
-  *      
-  *  @endverbatim
-  *
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_core.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-uint8_t  USBD_MSC_Init (void  *pdev, 
-                            uint8_t cfgidx);
-
-uint8_t  USBD_MSC_DeInit (void  *pdev, 
-                              uint8_t cfgidx);
-
-uint8_t  USBD_MSC_Setup (void  *pdev, 
-                             USB_SETUP_REQ *req);
-
-uint8_t  USBD_MSC_DataIn (void  *pdev, 
-                              uint8_t epnum);
-
-
-uint8_t  USBD_MSC_DataOut (void  *pdev, 
-                               uint8_t epnum);
-
-uint8_t  *USBD_MSC_GetCfgDesc (uint8_t speed, 
-                                      uint16_t *length);
-
-USBD_Class_cb_TypeDef  USBD_MSC_cb = 
-{
-  USBD_MSC_Init,
-  USBD_MSC_DeInit,
-  USBD_MSC_Setup,
-  NULL, /*EP0_TxSent*/  
-  NULL, /*EP0_RxReady*/
-  USBD_MSC_DataIn,
-  USBD_MSC_DataOut,
-  NULL, /*SOF */      
-  USBD_MSC_GetCfgDesc,
-};
-
-/* USB Mass storage device Configuration Descriptor */
-/*   All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
-const uint8_t USBD_MSC_CfgDesc[USB_MSC_CONFIG_DESC_SIZ] =
-{ 
-  0x09,   /* bLength: Configuration Descriptor size */
-  USB_DESC_TYPE_CONFIGURATION,   /* bDescriptorType: Configuration */
-  USB_MSC_CONFIG_DESC_SIZ,
-  
-  0x00,
-  0x01,   /* bNumInterfaces: 1 interface */
-  0x01,   /* bConfigurationValue: */
-  0x04,   /* iConfiguration: */
-  0xC0,   /* bmAttributes: */
-  0x32,   /* MaxPower 100 mA */
-  
-  /********************  Mass Storage interface ********************/
-  0x09,   /* bLength: Interface Descriptor size */
-  0x04,   /* bDescriptorType: */
-  0x00,   /* bInterfaceNumber: Number of Interface */
-  0x00,   /* bAlternateSetting: Alternate setting */
-  0x02,   /* bNumEndpoints*/
-  0x08,   /* bInterfaceClass: MSC Class */
-  0x06,   /* bInterfaceSubClass : SCSI transparent*/
-  0x50,   /* nInterfaceProtocol */
-  0x05,          /* iInterface: */
-  /********************  Mass Storage Endpoints ********************/
-  0x07,   /*Endpoint descriptor length = 7*/
-  0x05,   /*Endpoint descriptor type */
-  MSC_IN_EP,   /*Endpoint address (IN, address 1) */
-  0x02,   /*Bulk endpoint type */
-  LOBYTE(MSC_MAX_PACKET),
-  HIBYTE(MSC_MAX_PACKET),
-  0x00,   /*Polling interval in milliseconds */ 
-  0x07,   /*Endpoint descriptor length = 7 */
-  0x05,   /*Endpoint descriptor type */
-  MSC_OUT_EP,   /*Endpoint address (OUT, address 1) */
-  0x02,   /*Bulk endpoint type */
-  LOBYTE(MSC_MAX_PACKET),
-  HIBYTE(MSC_MAX_PACKET),
-  0x00     /*Polling interval in milliseconds*/
-};
-static uint8_t  USBD_MSC_MaxLun = 0;
-
-static uint8_t  USBD_MSC_AltSet = 0;
-
-/* Private function ----------------------------------------------------------*/
-/**
-  * @brief  USBD_MSC_Init
-  *         Initialize  the mass storage configuration
-  * @param  pdev: device instance
-  * @param  cfgidx: configuration index
-  * @retval status
-  */
-uint8_t  USBD_MSC_Init (void  *pdev, 
-                            uint8_t cfgidx)
-{ 
-  DCD_PMA_Config(pdev , MSC_IN_EP,USB_SNG_BUF,MSC_IN_TX_ADDRESS);
-  DCD_PMA_Config(pdev , MSC_OUT_EP,USB_SNG_BUF,MSC_OUT_RX_ADDRESS);
- 
-  /* Open EP IN */
-  DCD_EP_Open(pdev,
-              MSC_IN_EP,
-              MSC_EPIN_SIZE,
-              USB_EP_BULK);
-  
-  /* Open EP OUT */
-  DCD_EP_Open(pdev,
-              MSC_OUT_EP,
-              MSC_EPOUT_SIZE,
-              USB_EP_BULK);
- 
-  /* Init the BOT  layer */
-  MSC_BOT_Init(pdev); 
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_MSC_DeInit
-  *         DeInitilaize  the mass storage configuration
-  * @param  pdev: device instance
-  * @param  cfgidx: configuration index
-  * @retval status
-  */
-uint8_t  USBD_MSC_DeInit (void  *pdev, 
-                              uint8_t cfgidx)
-{
-  /* Close MSC EPs */
-  DCD_EP_Close (pdev , MSC_IN_EP);
-  DCD_EP_Close (pdev , MSC_OUT_EP);
-  
-  /* Un Init the BOT layer */
-  MSC_BOT_DeInit(pdev);   
-  return USBD_OK;
-}
-/**
-  * @brief  USBD_MSC_Setup
-  *         Handle the MSC specific requests
-  * @param  pdev: device instance
-  * @param  req: USB request
-  * @retval status
-  */
-uint8_t  USBD_MSC_Setup (void  *pdev, USB_SETUP_REQ *req)
-{
-  
-  switch (req->bmRequest & USB_REQ_TYPE_MASK)
-  {
-
-  /* Class request */
-  case USB_REQ_TYPE_CLASS :
-    switch (req->bRequest)
-    {
-    case BOT_GET_MAX_LUN :
-
-      if((req->wValue  == 0) && 
-         (req->wLength == 1) &&
-         ((req->bmRequest & 0x80) == 0x80))
-      {
-        USBD_MSC_MaxLun = USBD_STORAGE_fops->GetMaxLun();
-        if(USBD_MSC_MaxLun > 0)
-        {
-           USBD_CtlSendData (pdev,
-                             &USBD_MSC_MaxLun,
-                              1);
-        }
-        else
-        {
-          USBD_CtlError(pdev , req);
-          return USBD_FAIL; 
-        }
-      }
-      else
-      {
-         USBD_CtlError(pdev , req);
-         return USBD_FAIL; 
-      }
-      break;
-      
-    case BOT_RESET :
-      if((req->wValue  == 0) && 
-         (req->wLength == 0) &&
-        ((req->bmRequest & 0x80) != 0x80))
-      {      
-         MSC_BOT_Reset(pdev);
-      }
-      else
-      {
-         USBD_CtlError(pdev , req);
-         return USBD_FAIL; 
-      }
-      break;
-
-    default:
-       USBD_CtlError(pdev , req);
-       return USBD_FAIL; 
-    }
-    break;
-  /* Interface & Endpoint request */
-  case USB_REQ_TYPE_STANDARD:
-    switch (req->bRequest)
-    {
-    case USB_REQ_GET_INTERFACE :
-      USBD_CtlSendData (pdev,
-                        &USBD_MSC_AltSet,
-                        1);
-      break;
-      
-    case USB_REQ_SET_INTERFACE :
-      USBD_MSC_AltSet = (uint8_t)(req->wValue);
-      break;
-    
-    case USB_REQ_CLEAR_FEATURE:  
-       
-      /* Handle BOT error */
-      MSC_BOT_CplClrFeature(pdev, (uint8_t)req->wIndex);
-      break;
-      
-    }  
-    break;
-   
-  default:
-    break;
-  }
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_MSC_DataIn
-  *         handle data IN Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-uint8_t  USBD_MSC_DataIn (void  *pdev, 
-                              uint8_t epnum)
-{
-  MSC_BOT_DataIn(pdev , epnum);
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_MSC_DataOut
-  *         handle data OUT Stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-uint8_t  USBD_MSC_DataOut (void  *pdev, 
-                               uint8_t epnum)
-{
-  MSC_BOT_DataOut(pdev , epnum);
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_MSC_GetCfgDesc 
-  *         return configuration descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer data length
-  * @retval pointer to descriptor buffer
-  */
-uint8_t  *USBD_MSC_GetCfgDesc (uint8_t speed, uint16_t *length)
-{
-  *length = sizeof (USBD_MSC_CfgDesc);
-  return (uint8_t *)USBD_MSC_CfgDesc;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c
deleted file mode 100644
index 716248a..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c	
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_data.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the vital inquiry pages and sense data.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_data.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* USB Mass storage Page 0 Inquiry Data */
-const uint8_t  MSC_Page00_Inquiry_Data[] = {//7						
-	0x00,		
-	0x00, 
-	0x00, 
-	(LENGTH_INQUIRY_PAGE00 - 4),
-	0x00, 
-	0x80, 
-	0x83 
-};  
-/* USB Mass storage sense 6  Data */
-const uint8_t  MSC_Mode_Sense6_data[] = {
-	0x00,
-	0x00,
-	0x00,
-	0x00,
-	0x00,
-	0x00, 
-	0x00,
-	0x00
-};	
-/* USB Mass storage sense 10  Data */
-const uint8_t  MSC_Mode_Sense10_data[] = {
-	0x00,
-	0x06, 
-	0x00, 
-	0x00, 
-	0x00, 
-	0x00, 
-	0x00, 
-	0x00
-};
-
-/* Private function prototypes -----------------------------------------------*/
-/* Private function ----------------------------------------------------------*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c
deleted file mode 100644
index e7d2900..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c	
+++ /dev/null
@@ -1,661 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_msc_scsi.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the USBD SCSI layer functions.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_scsi.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-SCSI_Sense_TypeDef     SCSI_Sense [SENSE_LIST_DEEPTH];
-uint8_t   SCSI_Sense_Head;
-uint8_t   SCSI_Sense_Tail;
-
-uint32_t  SCSI_blk_size;
-uint32_t  SCSI_blk_nbr;
-
-uint32_t  SCSI_blk_addr;
-uint32_t  SCSI_blk_len;
-
-USB_CORE_HANDLE  *cdev;
-
-/* Private function prototypes -----------------------------------------------*/
-static int8_t SCSI_TestUnitReady(uint8_t lun, uint8_t *params);
-static int8_t SCSI_Inquiry(uint8_t lun, uint8_t *params);
-static int8_t SCSI_ReadFormatCapacity(uint8_t lun, uint8_t *params);
-static int8_t SCSI_ReadCapacity10(uint8_t lun, uint8_t *params);
-static int8_t SCSI_RequestSense (uint8_t lun, uint8_t *params);
-static int8_t SCSI_StartStopUnit(uint8_t lun, uint8_t *params);
-static int8_t SCSI_ModeSense6 (uint8_t lun, uint8_t *params);
-static int8_t SCSI_ModeSense10 (uint8_t lun, uint8_t *params);
-static int8_t SCSI_Write10(uint8_t lun , uint8_t *params);
-static int8_t SCSI_Read10(uint8_t lun , uint8_t *params);
-static int8_t SCSI_Verify10(uint8_t lun, uint8_t *params);
-static int8_t SCSI_CheckAddressRange (uint8_t lun , 
-                                      uint32_t blk_offset , 
-                                      uint16_t blk_nbr);
-static int8_t SCSI_ProcessRead (uint8_t lun);
-
-static int8_t SCSI_ProcessWrite (uint8_t lun);
-
-/* Private function ----------------------------------------------------------*/
-/**
-  * @brief  SCSI_ProcessCmd
-  *         Process SCSI commands
-  * @param  pdev: device instance
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-int8_t SCSI_ProcessCmd(USB_CORE_HANDLE  *pdev,
-                           uint8_t lun, 
-                           uint8_t *params)
-{
-  cdev = pdev;
-  
-  switch (params[0])
-  {
-  case SCSI_TEST_UNIT_READY:
-    return SCSI_TestUnitReady(lun, params);
-    
-  case SCSI_REQUEST_SENSE:
-    return SCSI_RequestSense (lun, params);
-  case SCSI_INQUIRY:
-    return SCSI_Inquiry(lun, params);
-    
-  case SCSI_START_STOP_UNIT:
-    return SCSI_StartStopUnit(lun, params);
-    
-  case SCSI_ALLOW_MEDIUM_REMOVAL:
-    return SCSI_StartStopUnit(lun, params);
-    
-  case SCSI_MODE_SENSE6:
-    return SCSI_ModeSense6 (lun, params);
-    
-  case SCSI_MODE_SENSE10:
-    return SCSI_ModeSense10 (lun, params);
-    
-  case SCSI_READ_FORMAT_CAPACITIES:
-    return SCSI_ReadFormatCapacity(lun, params);
-    
-  case SCSI_READ_CAPACITY10:
-    return SCSI_ReadCapacity10(lun, params);
-    
-  case SCSI_READ10:
-    return SCSI_Read10(lun, params); 
-    
-  case SCSI_WRITE10:
-    return SCSI_Write10(lun, params);
-    
-  case SCSI_VERIFY10:
-    return SCSI_Verify10(lun, params);
-    
-  default:
-    SCSI_SenseCode(lun,
-                   ILLEGAL_REQUEST, 
-                   INVALID_CDB);    
-    return -1;
-  }
-}
-
-
-/**
-  * @brief  SCSI_TestUnitReady
-  *         Process SCSI Test Unit Ready Command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-static int8_t SCSI_TestUnitReady(uint8_t lun, uint8_t *params)
-{
-  
-  /* case 9 : Hi > D0 */
-  if (MSC_BOT_cbw.dDataLength != 0)
-  {
-    SCSI_SenseCode(MSC_BOT_cbw.bLUN, 
-                   ILLEGAL_REQUEST, 
-                   INVALID_CDB);
-    return -1;
-  }  
-  
-  if(USBD_STORAGE_fops->IsReady(lun) !=0 )
-  {
-    SCSI_SenseCode(lun,
-                   NOT_READY, 
-                   MEDIUM_NOT_PRESENT);
-    return -1;
-  } 
-  MSC_BOT_DataLen = 0;
-  return 0;
-}
-
-/**
-  * @brief  SCSI_Inquiry
-  *         Process Inquiry command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-static int8_t  SCSI_Inquiry(uint8_t lun, uint8_t *params)
-{
-  uint8_t* pPage;
-  uint16_t len;
-  
-  if (params[1] & 0x01)/*Evpd is set*/
-  {
-    pPage = (uint8_t *)MSC_Page00_Inquiry_Data;
-    len = LENGTH_INQUIRY_PAGE00;
-  }
-  else
-  {
-    
-    pPage = (uint8_t *)&USBD_STORAGE_fops->pInquiry[lun * USBD_STD_INQUIRY_LENGTH];
-    len = pPage[4] + 5;
-    
-    if (params[4] <= len)
-    {
-      len = params[4];
-    }
-  }
-  MSC_BOT_DataLen = len;
-  
-  while (len) 
-  {
-    len--;
-    MSC_BOT_Data[len] = pPage[len];
-  }
-  return 0;
-}
-
-/**
-  * @brief  SCSI_ReadCapacity10
-  *         Process Read Capacity 10 command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-static int8_t SCSI_ReadCapacity10(uint8_t lun, uint8_t *params)
-{
-  
-  if(USBD_STORAGE_fops->GetCapacity(lun, &SCSI_blk_nbr, &SCSI_blk_size) != 0)
-  {
-    SCSI_SenseCode(lun,
-                   NOT_READY, 
-                   MEDIUM_NOT_PRESENT);
-    return -1;
-  } 
-  else
-  {
-    
-    MSC_BOT_Data[0] = (uint8_t)((SCSI_blk_nbr - 1) >> 24);
-    MSC_BOT_Data[1] = (uint8_t)((SCSI_blk_nbr - 1) >> 16);
-    MSC_BOT_Data[2] = (uint8_t)((SCSI_blk_nbr - 1) >>  8);
-    MSC_BOT_Data[3] = (uint8_t)(SCSI_blk_nbr - 1);
-    
-    MSC_BOT_Data[4] = (uint8_t)(SCSI_blk_size >>  24);
-    MSC_BOT_Data[5] = (uint8_t)(SCSI_blk_size >>  16);
-    MSC_BOT_Data[6] = (uint8_t)(SCSI_blk_size >>  8);
-    MSC_BOT_Data[7] = (uint8_t)(SCSI_blk_size);
-    
-    MSC_BOT_DataLen = 8;
-    return 0;
-  }
-}
-/**
-  * @brief  SCSI_ReadFormatCapacity
-  *         Process Read Format Capacity command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-static int8_t SCSI_ReadFormatCapacity(uint8_t lun, uint8_t *params)
-{
-  
-  uint32_t blk_size;
-  uint32_t blk_nbr;
-  uint16_t i;
-  
-  for(i=0 ; i < 12 ; i++) 
-  {
-    MSC_BOT_Data[i] = 0;
-  }
-  
-  if(USBD_STORAGE_fops->GetCapacity(lun, &blk_nbr, &blk_size) != 0)
-  {
-    SCSI_SenseCode(lun,
-                   NOT_READY, 
-                   MEDIUM_NOT_PRESENT);
-    return (-1);
-  } 
-  else
-  {
-    MSC_BOT_Data[3] = 0x08;
-    MSC_BOT_Data[4] = (uint8_t)((blk_nbr - 1) >> 24);
-    MSC_BOT_Data[5] = (uint8_t)((blk_nbr - 1) >> 16);
-    MSC_BOT_Data[6] = (uint8_t)((blk_nbr - 1) >>  8);
-    MSC_BOT_Data[7] = (uint8_t)(blk_nbr - 1);
-    
-    MSC_BOT_Data[8] = 0x02;
-    MSC_BOT_Data[9] = (uint8_t)(blk_size >>  16);
-    MSC_BOT_Data[10] = (uint8_t)(blk_size >>  8);
-    MSC_BOT_Data[11] = (uint8_t)(blk_size);
-    
-    MSC_BOT_DataLen = 12;
-    return 0;
-  }
-}
-/**
-  * @brief  SCSI_ModeSense6
-  *         Process Mode Sense6 command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-static int8_t SCSI_ModeSense6 (uint8_t lun, uint8_t *params)
-{
-  
-  uint16_t len = 8 ;
-  MSC_BOT_DataLen = len;
-  
-  while (len) 
-  {
-    len--;
-    MSC_BOT_Data[len] = MSC_Mode_Sense6_data[len];
-  }
-  return 0;
-}
-
-/**
-  * @brief  SCSI_ModeSense10
-  *         Process Mode Sense10 command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-static int8_t SCSI_ModeSense10 (uint8_t lun, uint8_t *params)
-{
- uint16_t len = 8;
-
- MSC_BOT_DataLen = len;
-
- while (len) 
-  {
-    len--;
-    MSC_BOT_Data[len] = MSC_Mode_Sense10_data[len];
-  }
-  return 0;
-}
-
-/**
-  * @brief  SCSI_RequestSense
-  *         Process Request Sense command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-
-static int8_t SCSI_RequestSense (uint8_t lun, uint8_t *params)
-{
-  uint8_t i;
-  
-  for(i=0 ; i < REQUEST_SENSE_DATA_LEN ; i++) 
-  {
-    MSC_BOT_Data[i] = 0;
-  }
-  
-  MSC_BOT_Data[0]	= 0x70;		
-  MSC_BOT_Data[7]	= REQUEST_SENSE_DATA_LEN - 6;	
-  
-  if((SCSI_Sense_Head != SCSI_Sense_Tail)) {
-    
-    MSC_BOT_Data[2]     = SCSI_Sense[SCSI_Sense_Head].Skey;		
-    MSC_BOT_Data[12]    = SCSI_Sense[SCSI_Sense_Head].w.b.ASCQ;	
-    MSC_BOT_Data[13]    = SCSI_Sense[SCSI_Sense_Head].w.b.ASC;	
-    SCSI_Sense_Head++;
-    
-    if (SCSI_Sense_Head == SENSE_LIST_DEEPTH)
-    {
-      SCSI_Sense_Head = 0;
-    }
-  }
-  MSC_BOT_DataLen = REQUEST_SENSE_DATA_LEN;  
-  
-  if (params[4] <= REQUEST_SENSE_DATA_LEN)
-  {
-    MSC_BOT_DataLen = params[4];
-  }
-  return 0;
-}
-
-/**
-  * @brief  SCSI_SenseCode
-  *         Load the last error code in the error list
-  * @param  lun: Logical unit number
-  * @param  sKey: Sense Key
-  * @param  ASC: Additional Sense Key
-  * @retval none
-
-  */
-void SCSI_SenseCode(uint8_t lun, uint8_t sKey, uint8_t ASC)
-{
-  SCSI_Sense[SCSI_Sense_Tail].Skey  = sKey;
-  SCSI_Sense[SCSI_Sense_Tail].w.ASC = ASC << 8;
-  SCSI_Sense_Tail++;
-  if (SCSI_Sense_Tail == SENSE_LIST_DEEPTH)
-  {
-    SCSI_Sense_Tail = 0;
-  }
-}
-/**
-  * @brief  SCSI_StartStopUnit
-  *         Process Start Stop Unit command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-static int8_t SCSI_StartStopUnit(uint8_t lun, uint8_t *params)
-{
-  MSC_BOT_DataLen = 0;
-  return 0;
-}
-
-/**
-  * @brief  SCSI_Read10
-  *         Process Read10 command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-static int8_t SCSI_Read10(uint8_t lun , uint8_t *params)
-{
-  if(MSC_BOT_State == BOT_IDLE)  /* Idle */
-  {
-    
-    /* case 10 : Ho <> Di */
-    
-    if ((MSC_BOT_cbw.bmFlags & 0x80) != 0x80)
-    {
-      SCSI_SenseCode(MSC_BOT_cbw.bLUN, 
-                     ILLEGAL_REQUEST, 
-                     INVALID_CDB);
-      return -1;
-    }    
-    
-    if(USBD_STORAGE_fops->IsReady(lun) !=0 )
-    {
-      SCSI_SenseCode(lun,
-                     NOT_READY, 
-                     MEDIUM_NOT_PRESENT);
-      return -1;
-    } 
-    
-    SCSI_blk_addr = (params[2] << 24) | \
-      (params[3] << 16) | \
-        (params[4] <<  8) | \
-          params[5];
-    
-    SCSI_blk_len =  (params[7] <<  8) | \
-      params[8];  
-    
-    
-    
-    if( SCSI_CheckAddressRange(lun, SCSI_blk_addr, SCSI_blk_len) < 0)
-    {
-      return -1; /* error */
-    }
-    
-    MSC_BOT_State = BOT_DATA_IN;
-    SCSI_blk_addr *= SCSI_blk_size;
-    SCSI_blk_len  *= SCSI_blk_size;
-    
-    /* cases 4,5 : Hi <> Dn */
-    if (MSC_BOT_cbw.dDataLength != SCSI_blk_len)
-    {
-      SCSI_SenseCode(MSC_BOT_cbw.bLUN, 
-                     ILLEGAL_REQUEST, 
-                     INVALID_CDB);
-      return -1;
-    }
-  }
-  MSC_BOT_DataLen = MSC_MEDIA_PACKET;  
-  
-  return SCSI_ProcessRead(lun);
-}
-
-/**
-  * @brief  SCSI_Write10
-  *         Process Write10 command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-
-static int8_t SCSI_Write10 (uint8_t lun , uint8_t *params)
-{
-  if (MSC_BOT_State == BOT_IDLE) /* Idle */
-  {
-    
-    /* case 8 : Hi <> Do */
-    
-    if ((MSC_BOT_cbw.bmFlags & 0x80) == 0x80)
-    {
-      SCSI_SenseCode(MSC_BOT_cbw.bLUN, 
-                     ILLEGAL_REQUEST, 
-                     INVALID_CDB);
-      return -1;
-    }
-    
-    /* Check whether Media is ready */
-    if(USBD_STORAGE_fops->IsReady(lun) !=0 )
-    {
-      SCSI_SenseCode(lun,
-                     NOT_READY, 
-                     MEDIUM_NOT_PRESENT);
-      return -1;
-    } 
-    
-    /* Check If media is write-protected */
-    if(USBD_STORAGE_fops->IsWriteProtected(lun) !=0 )
-    {
-      SCSI_SenseCode(lun,
-                     NOT_READY, 
-                     WRITE_PROTECTED);
-      return -1;
-    } 
-    
-    
-    SCSI_blk_addr = (params[2] << 24) | \
-      (params[3] << 16) | \
-        (params[4] <<  8) | \
-          params[5];
-    SCSI_blk_len = (params[7] <<  8) | \
-      params[8];  
-    
-    /* check if LBA address is in the right range */
-    if(SCSI_CheckAddressRange(lun, SCSI_blk_addr, SCSI_blk_len) < 0)
-    {
-      return -1; /* error */      
-    }
-    
-    SCSI_blk_addr *= SCSI_blk_size;
-    SCSI_blk_len  *= SCSI_blk_size;
-    
-    /* cases 3,11,13 : Hn,Ho <> D0 */
-    if (MSC_BOT_cbw.dDataLength != SCSI_blk_len)
-    {
-      SCSI_SenseCode(MSC_BOT_cbw.bLUN, 
-                     ILLEGAL_REQUEST, 
-                     INVALID_CDB);
-      return -1;
-    }
-    
-    /* Prepare EP to receive first data packet */
-    MSC_BOT_State = BOT_DATA_OUT;  
-    DCD_EP_PrepareRx (cdev,
-                      MSC_OUT_EP,
-                      MSC_BOT_Data, 
-                      MIN (SCSI_blk_len, MSC_MEDIA_PACKET));  
-  }
-  else /* Write Process ongoing */
-  {
-    return SCSI_ProcessWrite(lun);
-  }
-  return 0;
-}
-
-
-/**
-  * @brief  SCSI_Verify10
-  *         Process Verify10 command
-  * @param  lun: Logical unit number
-  * @param  params: Command parameters
-  * @retval status
-  */
-
-static int8_t SCSI_Verify10(uint8_t lun , uint8_t *params){
-  if ((params[1]& 0x02) == 0x02) 
-  {
-    SCSI_SenseCode (lun, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
-    return -1; /* Error, Verify Mode Not supported*/
-  }
-  
-  if(SCSI_CheckAddressRange(lun, SCSI_blk_addr, SCSI_blk_len) < 0)
-  {
-    return -1; /* error */      
-  }
-  MSC_BOT_DataLen = 0;
-  return 0;
-}
-
-/**
-  * @brief  SCSI_CheckAddressRange
-  *         Check address range
-  * @param  lun: Logical unit number
-  * @param  blk_offset: first block address
-  * @param  blk_nbr: number of block to be processed
-  * @retval status
-  */
-static int8_t SCSI_CheckAddressRange (uint8_t lun , uint32_t blk_offset , uint16_t blk_nbr)
-{
-  
-  if ((blk_offset + blk_nbr) > SCSI_blk_nbr )
-  {
-    SCSI_SenseCode(lun, ILLEGAL_REQUEST, ADDRESS_OUT_OF_RANGE);
-    return -1;
-  }
-  return 0;
-}
-
-/**
-  * @brief  SCSI_ProcessRead
-  *         Handle Read Process
-  * @param  lun: Logical unit number
-  * @retval status
-  */
-static int8_t SCSI_ProcessRead (uint8_t lun)
-{
-  uint32_t len;
-  
-  len = MIN(SCSI_blk_len , MSC_MEDIA_PACKET); 
-  
-  if( USBD_STORAGE_fops->Read(lun ,
-                              MSC_BOT_Data, 
-                              SCSI_blk_addr / SCSI_blk_size, 
-                              len / SCSI_blk_size) < 0)
-  {
-    
-    SCSI_SenseCode(lun, HARDWARE_ERROR, UNRECOVERED_READ_ERROR);
-    return -1; 
-  }
-  
-  
-  DCD_EP_Tx (cdev, 
-             MSC_IN_EP,
-             MSC_BOT_Data,
-             len);
-  
-  
-  SCSI_blk_addr   += len; 
-  SCSI_blk_len    -= len;  
-  
-  /* case 6 : Hi = Di */
-  MSC_BOT_csw.dDataResidue -= len;
-  
-  if (SCSI_blk_len == 0)
-  {
-    MSC_BOT_State = BOT_LAST_DATA_IN;
-  }
-  return 0;
-}
-
-/**
-  * @brief  SCSI_ProcessWrite
-  *         Handle Write Process
-  * @param  lun: Logical unit number
-  * @retval status
-  */
-
-static int8_t SCSI_ProcessWrite (uint8_t lun)
-{
-  uint32_t len;
-  
-  len = MIN(SCSI_blk_len , MSC_MEDIA_PACKET); 
-  
-  if(USBD_STORAGE_fops->Write(lun ,
-                              MSC_BOT_Data, 
-                              SCSI_blk_addr / SCSI_blk_size, 
-                              len / SCSI_blk_size) < 0)
-  {
-    SCSI_SenseCode(lun, HARDWARE_ERROR, WRITE_FAULT);     
-    return -1; 
-  }
-  
-  
-  SCSI_blk_addr  += len; 
-  SCSI_blk_len   -= len; 
-  
-  /* case 12 : Ho = Do */
-  MSC_BOT_csw.dDataResidue -= len;
-  
-  if (SCSI_blk_len == 0)
-  {
-    MSC_BOT_SendCSW (cdev, CSW_CMD_PASSED);
-  }
-  else
-  {
-    /* Prepare EP to Receive next packet */
-    DCD_EP_PrepareRx (cdev,
-                      MSC_OUT_EP,
-                      MSC_BOT_Data, 
-                      MIN (SCSI_blk_len, MSC_MEDIA_PACKET)); 
-  }
-  
-  return 0;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_storage_template.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_storage_template.c
deleted file mode 100644
index 6b56841..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_storage_template.c	
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_storage_template.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Memory management layer
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_mem.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define STORAGE_LUN_NBR                  1   
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* USB Mass storage Standard Inquiry Data */
-const int8_t  STORAGE_Inquirydata[] = {//36
-  
-  /* LUN 0 */
-  0x00,		
-  0x80,		
-  0x02,		
-  0x02,
-  (USBD_STD_INQUIRY_LENGTH - 5),
-  0x00,
-  0x00,	
-  0x00,
-  'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */
-  'P', 'r', 'o', 'd', 'u', 't', ' ', ' ', /* Product      : 16 Bytes */
-  ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
-  '0', '.', '0' ,'1',                     /* Version      : 4 Bytes */
-}; 
-
-USBD_STORAGE_cb_TypeDef USBD_MICRO_SDIO_fops =
-{
-  STORAGE_Init,
-  STORAGE_GetCapacity,
-  STORAGE_IsReady,
-  STORAGE_IsWriteProtected,
-  STORAGE_Read,
-  STORAGE_Write,
-  STORAGE_GetMaxLun,
-  STORAGE_Inquirydata,
-  
-};
-
-USBD_STORAGE_cb_TypeDef  *USBD_STORAGE_fops = &USBD_MICRO_SDIO_fops;
-
-/* Private function prototypes -----------------------------------------------*/
-int8_t STORAGE_Init (uint8_t lun);
-
-int8_t STORAGE_GetCapacity (uint8_t lun, 
-                           uint32_t *block_num, 
-                           uint16_t *block_size);
-
-int8_t  STORAGE_IsReady (uint8_t lun);
-
-int8_t  STORAGE_IsWriteProtected (uint8_t lun);
-
-int8_t STORAGE_Read (uint8_t lun, 
-                        uint8_t *buf, 
-                        uint32_t blk_addr,
-                        uint16_t blk_len);
-
-int8_t STORAGE_Write (uint8_t lun, 
-                        uint8_t *buf, 
-                        uint32_t blk_addr,
-                        uint16_t blk_len);
-
-int8_t STORAGE_GetMaxLun (void);
-
-/* Private functions ---------------------------------------------------------*/
-/**
-  * @brief  Initialize the storage medium
-  * @param  lun : logical unit number
-  * @retval Status
-  */
-int8_t STORAGE_Init (uint8_t lun)
-{
-  return (0);
-}
-
-/**
-  * @brief  return medium capacity and block size
-  * @param  lun : logical unit number
-  * @param  block_num :  number of physical block
-  * @param  block_size : size of a physical block
-  * @retval Status
-  */
-int8_t STORAGE_GetCapacity (uint8_t lun, uint32_t *block_num, uint16_t *block_size)
-{
-  return (0);
-}
-
-/**
-  * @brief  check whether the medium is ready
-  * @param  lun : logical unit number
-  * @retval Status
-  */
-int8_t  STORAGE_IsReady (uint8_t lun)
-{
-  return (0);
-}
-
-/**
-  * @brief  check whether the medium is write-protected
-  * @param  lun : logical unit number
-  * @retval Status
-  */
-int8_t  STORAGE_IsWriteProtected (uint8_t lun)
-{
-  return  0;
-}
-
-/**
-  * @brief  Read data from the medium
-  * @param  lun : logical unit number
-  * @param  buf : Pointer to the buffer to save data
-  * @param  blk_addr :  address of 1st block to be read
-  * @param  blk_len : nmber of blocks to be read
-  * @retval Status
-  */
-int8_t STORAGE_Read (uint8_t lun, 
-                 uint8_t *buf, 
-                 uint32_t blk_addr,                       
-                 uint16_t blk_len)
-{
-  return 0;
-}
-/**
-  * @brief  Write data to the medium
-  * @param  lun : logical unit number
-  * @param  buf : Pointer to the buffer to write from
-  * @param  blk_addr :  address of 1st block to be written
-  * @param  blk_len : nmber of blocks to be read
-  * @retval Status
-  */
-int8_t STORAGE_Write (uint8_t lun, 
-                  uint8_t *buf, 
-                  uint32_t blk_addr,
-                  uint16_t blk_len)
-{
-  return (0);
-}
-/**
-  * @brief  Return number of supported logical unit
-  * @param  None
-  * @retval number of logical unit
-  */
-int8_t STORAGE_GetMaxLun (void)
-{
-  return (STORAGE_LUN_NBR - 1);
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h
deleted file mode 100644
index e225398..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h	
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_conf_template.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   usb device configuration template file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_CONF__H__
-#define __USBD_CONF__H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_conf.h"
-#include "audio_app_conf.h" /* Audio example Include*/
-
-/* Exported defines ----------------------------------------------------------*/
-/*Common Defines*/
-#define USBD_SELF_POWERED 
-#define USBD_CFG_MAX_NUM                1 
-
-/*Audio Class user defines*/
-#define AUDIO_TOTAL_IF_NUM              0x02
-#define USBD_ITF_MAX_NUM                1
-#define USB_MAX_STR_DESC_SIZ            200 
-#define AUDIO_OUT_EP                    0x01
-
-/*CCID Class user defines*/
-#define USBD_ITF_MAX_NUM                1
-#define USB_MAX_STR_DESC_SIZ            64               
-#define USB_SUPPORT_USER_STRING_DESC
-#define CCID_BULK_IN_EP              	0x81
-#define CCID_BULK_OUT_EP             	0x01
-#define CCID_INTR_IN_EP              	0x82
-#define CCID_BULK_EP_MAX_PACKET         64
-#define CCID_INTR_EP_MAX_PACKET         8
-
-/*Composite HID + CDC Classes user defines*/
-#define USBD_ITF_MAX_NUM           	1
-#define USB_MAX_STR_DESC_SIZ       	64               
-#define CUSTOMHID_SIZ_REPORT_DESC	163
-#define CUSTOMHID_SIZ_CONFIG_DESC	41
-#define HID_IN_EP                    	0x81
-#define HID_OUT_EP                   	0x01
-
-/*2 Bytes max*/
-#define HID_IN_PACKET                	2 
-#define HID_OUT_PACKET               	2 
-#define CDC_IN_EP                       0x83  /* EP1 for data IN */
-#define CDC_OUT_EP                      0x03  /* EP3 for data OUT */
-#define CDC_CMD_EP                      0x82  /* EP2 for CDC commands */
-
-/* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrate and performance. */
-#define CDC_DATA_MAX_PACKET_SIZE       	64   /* Endpoint IN & OUT Packet size */
-#define CDC_CMD_PACKET_SZE             	8    /* Control Endpoint Packet size */
-#define CDC_IN_FRAME_INTERVAL          	5    /* Number of frames between IN transfers */
-#define APP_RX_DATA_SIZE               	2048 /* Total size of IN buffer: APP_RX_DATA_SIZE*8/MAX_BAUDARATE*1000 
-                                                should be > CDC_IN_FRAME_INTERVAL */
-#define APP_FOPS                        VCP_fops
-
-/*Composite HID + MSC Class user defines*/
-#define USBD_ITF_MAX_NUM           	1
-#define USB_MAX_STR_DESC_SIZ       	64             
-#define CUSTOMHID_SIZ_REPORT_DESC	163
-#define CUSTOMHID_SIZ_CONFIG_DESC	41
-#define HID_IN_EP			0x81
-#define HID_OUT_EP			0x01
-/*2 Bytes max*/
-#define HID_IN_PACKET			2 
-#define HID_OUT_PACKET			2 
-#define MSC_IN_EP			0x82
-#define MSC_OUT_EP			0x02
-#define MSC_MAX_PACKET			64
-#define MSC_MEDIA_PACKET		512
-
-/*Custom HID Class user defines*/
-#define USBD_ITF_MAX_NUM		1
-#define USB_MAX_STR_DESC_SIZ		64              
-#define CUSTOMHID_SIZ_REPORT_DESC	163
-#define CUSTOMHID_SIZ_CONFIG_DESC	41
-#define HID_IN_EP			0x81
-#define HID_OUT_EP			0x01
-#define HID_IN_PACKET			2
-#define HID_OUT_PACKET			2
-
-/*DFU Class user defines*/
-#define USBD_ITF_MAX_NUM                MAX_USED_MEDIA
-#define USB_MAX_STR_DESC_SIZ            200 
-#define USB_SUPPORT_USER_STRING_DESC
-#define XFERSIZE                        1024   /* Max DFU Packet Size   = 1024 bytes */
-#define DFU_IN_EP                       0x80
-#define DFU_OUT_EP                      0x00
- /* Maximum number of supported media (Flash) */
-#define MAX_USED_MEDIA                  1
-/* Flash memory address from where user application will be loaded 
-   This address represents the DFU code protected against write and erase operations.*/
-#define APP_DEFAULT_ADD                 0x08003000
-#define DFU_MAL_IS_PROTECTED_AREA(add)    (uint8_t)(((add >= 0x08000000) && (add < (APP_DEFAULT_ADD)))? 1:0)
-#define TRANSFER_SIZE_BYTES(sze)          ((uint8_t)(sze)), /* XFERSIZEB0 */\
-                                          ((uint8_t)(sze >> 8)) /* XFERSIZEB1 */
-										  
-/*HID Class user defines*/	
-#define USBD_ITF_MAX_NUM           	1
-#define USB_MAX_STR_DESC_SIZ       	64               
-#define USB_SUPPORT_USER_STRING_DESC
-#define HID_IN_EP                    	0x81
-#define HID_OUT_EP                   	0x01
-#define HID_IN_PACKET                	4
-#define HID_OUT_PACKET               	4
-                                            
-/*MSC Class user defines*/	
-#define USBD_ITF_MAX_NUM           	1
-#define USB_MAX_STR_DESC_SIZ       	64 
-#define MSC_IN_EP                    	0x81
-#define MSC_OUT_EP                   	0x02
-#define MSC_MAX_PACKET			64
-#define MSC_MEDIA_PACKET              	512
-                                            
-/*VCP Class user defines*/	
-#define USBD_ITF_MAX_NUM                1
-#define USB_MAX_STR_DESC_SIZ            255 	
-#define CDC_IN_EP                       0x81  /* EP1 for data IN */
-#define CDC_OUT_EP                      0x03  /* EP3 for data OUT */
-#define CDC_CMD_EP                      0x82  /* EP2 for CDC commands */
-/* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrate and performance. */
-#define CDC_DATA_MAX_PACKET_SIZE	64   /* Endpoint IN & OUT Packet size */
-#define CDC_CMD_PACKET_SZE		8    /* Control Endpoint Packet size */
-#define CDC_IN_FRAME_INTERVAL		5    /* Number of frames between IN transfers */
-#define APP_RX_DATA_SIZE		2048 /* Total size of IN buffer: 
-                                    APP_RX_DATA_SIZE*8/MAX_BAUDARATE*1000 should be > CDC_IN_FRAME_INTERVAL */
-#define APP_FOPS                        VCP_fops					  
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-#endif /* __USBD_CONF__H__ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h
deleted file mode 100644
index 094c050..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h	
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_core.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Header file for usbd_core.c
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_CORE_H
-#define __USBD_CORE_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_dcd.h"
-#include "usb_dcd_int.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Exported types ------------------------------------------------------------*/
-typedef enum {
-  USBD_OK   = 0,
-  USBD_BUSY,
-  USBD_FAIL,
-}USBD_Status;
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-void USBD_Init(USB_CORE_HANDLE *pdev, 
-               USBD_DEVICE *pDevice,                  
-               USBD_Class_cb_TypeDef *class_cb, 
-               USBD_Usr_cb_TypeDef *usr_cb);
-
-USBD_Status USBD_DeInit(USB_CORE_HANDLE *pdev);
-
-USBD_Status USBD_ClrCfg(USB_CORE_HANDLE  *pdev, uint8_t cfgidx);
-
-USBD_Status USBD_SetCfg(USB_CORE_HANDLE  *pdev, uint8_t cfgidx);
-
-#endif /* __USBD_CORE_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h
deleted file mode 100644
index e993039..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h	
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_def.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   general defines for the usb device library 
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_DEF_H
-#define __USBD_DEF_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_conf.h"
-#include "stdbool.h"
-
-/* Exported defines ----------------------------------------------------------*/
-#ifndef NULL
- #define NULL    0
-#endif
-
-#define  USB_LEN_DEV_QUALIFIER_DESC                     0x0A
-#define  USB_LEN_CFG_DESC                               0x09
-
-#define  USBD_IDX_LANGID_STR                            0x00 
-#define  USBD_IDX_MFC_STR                               0x01 
-#define  USBD_IDX_PRODUCT_STR                           0x02
-#define  USBD_IDX_SERIAL_STR                            0x03 
-#define  USBD_IDX_CONFIG_STR                            0x04 
-#define  USBD_IDX_INTERFACE_STR                         0x05 
-
-#define  USB_REQ_TYPE_STANDARD                          0x00
-#define  USB_REQ_TYPE_CLASS                             0x20
-#define  USB_REQ_TYPE_MASK                              0x60
-
-#define  USB_REQ_RECIPIENT_DEVICE                       0x00
-#define  USB_REQ_RECIPIENT_INTERFACE                    0x01
-#define  USB_REQ_RECIPIENT_ENDPOINT                     0x02
-#define  USB_REQ_RECIPIENT_MASK                         0x03
-
-#define  USB_REQ_GET_STATUS                             0x00
-#define  USB_REQ_CLEAR_FEATURE                          0x01
-#define  USB_REQ_SET_FEATURE                            0x03
-#define  USB_REQ_SET_ADDRESS                            0x05
-#define  USB_REQ_GET_DESCRIPTOR                         0x06
-#define  USB_REQ_GET_CONFIGURATION                      0x08
-#define  USB_REQ_SET_CONFIGURATION                      0x09
-#define  USB_REQ_GET_INTERFACE                          0x0A
-#define  USB_REQ_SET_INTERFACE                          0x0B
-
-#define  USB_DESC_TYPE_DEVICE                              1
-#define  USB_DESC_TYPE_CONFIGURATION                       2
-#define  USB_DESC_TYPE_STRING                              3
-#define  USB_DESC_TYPE_DEVICE_QUALIFIER                    6
-#define  USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION           7
-#define  USB_DESC_TYPE_BOS                                 0xF
-
-
-#define USB_CONFIG_REMOTE_WAKEUP                           2
-#define USB_CONFIG_SELF_POWERED                            1
-
-#define USB_FEATURE_EP_HALT                                0
-#define USB_FEATURE_REMOTE_WAKEUP                          1
-#define USB_FEATURE_TEST_MODE                              2
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-#define  SWAPBYTE(addr)        (((uint16_t)(*((uint8_t *)(addr)))) + \
-                               (((uint16_t)(*(((uint8_t *)(addr)) + 1))) << 8))
-
-#define LOBYTE(x)  ((uint8_t)(x & 0x00FF))
-#define HIBYTE(x)  ((uint8_t)((x & 0xFF00) >>8))
-
-#define  MIN(a, b)      (((a) < (b)) ? (a) : (b))
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-
-#endif /* __USBD_DEF_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h
deleted file mode 100644
index ed9c29b..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h	
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_ioreq.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_ioreq.c file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_IOREQ_H_
-#define __USBD_IOREQ_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include  "usbd_def.h"
-#include  "usbd_core.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-
-USBD_Status  USBD_CtlSendData (USB_CORE_HANDLE  *pdev, 
-                               uint8_t *buf,
-                               uint16_t len);
-
-USBD_Status  USBD_CtlContinueSendData (USB_CORE_HANDLE  *pdev, 
-                               uint8_t *pbuf,
-                               uint16_t len);
-
-USBD_Status USBD_CtlPrepareRx (USB_CORE_HANDLE  *pdev, 
-                               uint8_t *pbuf,                                 
-                               uint16_t len);
-
-USBD_Status  USBD_CtlContinueRx (USB_CORE_HANDLE  *pdev, 
-                              uint8_t *pbuf,                                          
-                              uint16_t len);
-
-USBD_Status  USBD_CtlSendStatus (USB_CORE_HANDLE  *pdev);
-
-USBD_Status  USBD_CtlReceiveStatus (USB_CORE_HANDLE  *pdev);
-
-uint16_t  USBD_GetRxCount (USB_CORE_HANDLE  *pdev , 
-                           uint8_t epnum);
-
-
-#endif /* __USBD_IOREQ_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_pwr.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_pwr.h
deleted file mode 100644
index fc966af..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_pwr.h	
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_pwr.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Header file for usbd_pwr.c
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_PWR_H__
-#define __USBD_PWR_H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_core.h"
-#include "usb_bsp.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Exported types ------------------------------------------------------------*/
-typedef enum _RESUME_STATE
-{
-  RESUME_EXTERNAL,
-  RESUME_INTERNAL,
-#ifdef LPM_ENABLED  
-  L1_RESUME_INTERNAL,
-#endif
-  RESUME_LATER,
-  RESUME_WAIT,
-  RESUME_START,
-  RESUME_ON,
-  RESUME_OFF,
-  RESUME_ESOF
-} RESUME_STATE;
-
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern USB_CORE_HANDLE USB_Device_dev;
-
-/* Exported functions ------------------------------------------------------- */ 
-void Suspend(void);
-void Resume_Init(void);
-void Resume(RESUME_STATE eResumeSetVal);
-void Leave_LowPowerMode(void);
-
-#endif /*__USBD_PWR_H__*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h
deleted file mode 100644
index 7e53ea6..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h	
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_req.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   header file for the usbd_req.c file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef __USB_REQUEST_H_
-#define __USB_REQUEST_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_ioreq.h"
-#include "usbd_desc.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */ 
-USBD_Status  USBD_StdDevReq (USB_CORE_HANDLE  *pdev, USB_SETUP_REQ  *req);
-USBD_Status  USBD_StdItfReq (USB_CORE_HANDLE  *pdev, USB_SETUP_REQ  *req);
-USBD_Status  USBD_StdEPReq (USB_CORE_HANDLE  *pdev, USB_SETUP_REQ  *req);
-void USBD_ParseSetupRequest( USB_CORE_HANDLE  *pdev,
-                                    USB_SETUP_REQ *req);
-
-void USBD_CtlError( USB_CORE_HANDLE  *pdev,
-                            USB_SETUP_REQ *req);
-
-void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len);
-
-#endif /* __USB_REQUEST_H_ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h
deleted file mode 100644
index 6f9ada2..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h	
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_usr.h
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   Header file for usbd_usr.c
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_USR_H__
-#define __USBD_USR_H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_core.h"
-
-/* Exported defines ----------------------------------------------------------*/
-/* Exported types ------------------------------------------------------------*/
-/* Exported macros -----------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern  USBD_Usr_cb_TypeDef USR_cb;
-
-/* Exported functions ------------------------------------------------------- */ 
-void     USBD_USR_Init(void);
-void     USBD_USR_DeviceReset (uint8_t speed);
-void     USBD_USR_DeviceConfigured (void);
-void     USBD_USR_DeviceSuspended(void);
-void     USBD_USR_DeviceResumed(void);
-
-#endif /*__USBD_USR_H__*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c
deleted file mode 100644
index 5ae1d06..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c	
+++ /dev/null
@@ -1,366 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_core.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides all the USBD core functions.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_core.h"
-#include "usbd_req.h"
-#include "usbd_ioreq.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-extern uint32_t ADDRESS;
-
-/* Private function prototypes -----------------------------------------------*/
-static uint8_t USBD_SetupStage(USB_CORE_HANDLE *pdev);
-static uint8_t USBD_DataOutStage(USB_CORE_HANDLE *pdev , uint8_t epnum);
-static uint8_t USBD_DataInStage(USB_CORE_HANDLE *pdev , uint8_t epnum);
-static uint8_t USBD_SOF(USB_CORE_HANDLE  *pdev);
-static uint8_t USBD_Reset(USB_CORE_HANDLE  *pdev);
-static uint8_t USBD_Suspend(USB_CORE_HANDLE  *pdev);
-static uint8_t USBD_Resume(USB_CORE_HANDLE  *pdev);
-
-USBD_DCD_INT_cb_TypeDef USBD_DCD_INT_cb = 
-{
-  USBD_DataOutStage,
-  USBD_DataInStage,
-  USBD_SetupStage,
-  USBD_SOF,
-  USBD_Reset,
-  USBD_Suspend,
-  USBD_Resume,   
-  
-};
-
-USBD_DCD_INT_cb_TypeDef  *USBD_DCD_INT_fops = &USBD_DCD_INT_cb;
-
-/* Private functions ---------------------------------------------------------*/
-/**
-  * @brief  USBD_Init
-  *         Initializes the device stack and load the class driver
-  * @param  pdev: device instance
-  * @param  class_cb: Class callback structure address
-  * @param  usr_cb: User callback structure address
-  * @retval None
-  */
-void USBD_Init(USB_CORE_HANDLE *pdev,
-               USBD_DEVICE *pDevice,                  
-               USBD_Class_cb_TypeDef *class_cb, 
-               USBD_Usr_cb_TypeDef *usr_cb)
-{
-  /* Hardware Init */
-  USB_BSP_Init(pdev);  
-  
-  USBD_DeInit(pdev);
-  
-  /*Register class and user callbacks */
-  pdev->dev.class_cb = class_cb;
-  pdev->dev.usr_cb = usr_cb;  
-  pdev->dev.usr_device = pDevice;    
-  
-  /* Update the serial number string descriptor with the data from the unique ID*/
-  Get_SerialNum();
-  
-  /* set USB DEVICE core params */
-  DCD_Init(pdev);
-  
-  /* Upon Init call usr callback */
-  pdev->dev.usr_cb->Init();
-  
-  /* Enable Interrupts */
-  USB_BSP_EnableInterrupt(pdev);
-  
-  /* Enable the pull-up */
-#ifdef INTERNAL_PULLUP
-  DCD_DevConnect(pdev);
-#else
- USB_BSP_DevConnect(pdev);
-#endif
-}
-
-/**
-  * @brief  USBD_DeInit 
-  *         Re-Initialize th device library
-  * @param  pdev: device instance
-  * @retval status: status
-  */
-USBD_Status USBD_DeInit(USB_CORE_HANDLE *pdev)
-{
-  /* Software Init */
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_SetupStage 
-  *         Handle the setup stage
-  * @param  pdev: device instance
-  * @retval status
-  */
-static uint8_t USBD_SetupStage(USB_CORE_HANDLE *pdev)
-{
-  USB_SETUP_REQ req;
-  
-  USBD_ParseSetupRequest(pdev , &req);
-  
-  switch (req.bmRequest & 0x1F) 
-  {
-  case USB_REQ_RECIPIENT_DEVICE:   
-    USBD_StdDevReq (pdev, &req);
-    break;
-    
-  case USB_REQ_RECIPIENT_INTERFACE:     
-    USBD_StdItfReq(pdev, &req);
-    break;
-    
-  case USB_REQ_RECIPIENT_ENDPOINT:        
-    USBD_StdEPReq(pdev, &req);   
-    break;
-    
-  default:           
-    DCD_EP_Stall(pdev , req.bmRequest & 0x80);
-    break;
-  }  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_DataOutStage 
-  *         Handle data out stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-static uint8_t USBD_DataOutStage(USB_CORE_HANDLE *pdev , uint8_t epnum)
-{
-  USB_EP *ep;
-  
-  if(epnum == 0) 
-  {
-    ep = &pdev->dev.out_ep[0];
-    if ( pdev->dev.device_state == USB_EP0_DATA_OUT)
-    {
-      if(ep->rem_data_len > ep->maxpacket)
-      {
-        ep->rem_data_len -=  ep->maxpacket;
-                
-        USBD_CtlContinueRx (pdev, 
-                            ep->xfer_buff,
-                            MIN(ep->rem_data_len ,ep->maxpacket));
-      }
-      else
-      {
-        if((pdev->dev.class_cb->EP0_RxReady != NULL)&&
-           (pdev->dev.device_status == USB_CONFIGURED))
-        {
-          pdev->dev.class_cb->EP0_RxReady(pdev); 
-        }
-        USBD_CtlSendStatus(pdev);
-      }
-    }
-  }
-  else if((pdev->dev.class_cb->DataOut != NULL)&&
-          (pdev->dev.device_status == USB_CONFIGURED))
-  {
-    pdev->dev.class_cb->DataOut(pdev, epnum); 
-  }  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_DataInStage 
-  *         Handle data in stage
-  * @param  pdev: device instance
-  * @param  epnum: endpoint index
-  * @retval status
-  */
-static uint8_t USBD_DataInStage(USB_CORE_HANDLE *pdev , uint8_t epnum)
-{
-  USB_EP *ep;
-  
-  if(epnum == 0) 
-  {
-    ep = &pdev->dev.in_ep[0];
-    if ( pdev->dev.device_state == USB_EP0_DATA_IN)
-    {
-      if(ep->rem_data_len > ep->maxpacket)
-      {
-        ep->rem_data_len -=  ep->maxpacket;
-        USBD_CtlContinueSendData (pdev, 
-                                  ep->xfer_buff, 
-                                  ep->rem_data_len);
-      }
-      else
-      { /* last packet is MPS multiple, so send ZLP packet */
-        if((ep->total_data_len % ep->maxpacket == 0) &&
-           (ep->total_data_len >= ep->maxpacket) &&
-             (ep->total_data_len < ep->ctl_data_len ))
-        {
-          
-          USBD_CtlContinueSendData(pdev , NULL, 0);
-          ep->ctl_data_len = 0;
-        }
-        else
-        {
-          if((pdev->dev.class_cb->EP0_TxSent != NULL)&&
-             (pdev->dev.device_status == USB_CONFIGURED))
-          {
-            pdev->dev.class_cb->EP0_TxSent(pdev); 
-          }          
-          USBD_CtlReceiveStatus(pdev);
-        }
-      }
-    }
-    else  if ((pdev->dev.device_state == USB_EP0_STATUS_IN)&& (ADDRESS!=0))
-    {
-      
-      DCD_EP_SetAddress(pdev, ADDRESS); 
-      ADDRESS = 0;
-    }
-  }
-  else if((pdev->dev.class_cb->DataIn != NULL)&& 
-          (pdev->dev.device_status == USB_CONFIGURED))
-  {
-    pdev->dev.class_cb->DataIn(pdev, epnum); 
-  }  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_Reset 
-  *         Handle Reset event
-  * @param  pdev: device instance
-  * @retval status
-  */
-
-static uint8_t USBD_Reset(USB_CORE_HANDLE  *pdev)
-{
-
-  DCD_PMA_Config(pdev , 0x00 ,USB_SNG_BUF, ENDP0_RX_ADDRESS);
-  DCD_PMA_Config(pdev , 0x80 ,USB_SNG_BUF, ENDP0_TX_ADDRESS);
-
-  /* Open EP0 OUT */
-  DCD_EP_Open(pdev,
-              0x00,
-              USB_MAX_EP0_SIZE,
-              EP_TYPE_CTRL);
-  
-  /* Open EP0 IN */
-  DCD_EP_Open(pdev,
-              0x80,
-              USB_MAX_EP0_SIZE,
-              EP_TYPE_CTRL);
-  
-  /* Upon Reset call user call back */
-  pdev->dev.device_status = USB_DEFAULT;
-  pdev->dev.usr_cb->DeviceReset(pdev->dev.speed);
-  
-  return USBD_OK;
-}
-
-/**
-  * @brief  USBD_Resume 
-  *         Handle Resume event
-  * @param  pdev: device instance
-  * @retval status
-  */
-
-static uint8_t USBD_Resume(USB_CORE_HANDLE  *pdev)
-{
-  /* Upon Resume call user call back */
-  pdev->dev.usr_cb->DeviceResumed(); 
-  pdev->dev.device_status = pdev->dev.device_old_status;   
-  return USBD_OK;
-}
-
-
-/**
-  * @brief  USBD_Suspend 
-  *         Handle Suspend event
-  * @param  pdev: device instance
-  * @retval status
-  */
-
-static uint8_t USBD_Suspend(USB_CORE_HANDLE  *pdev)
-{
-  pdev->dev.device_old_status = pdev->dev.device_status;
-  /*Device is in Suspended State*/
-  pdev->dev.device_status  = USB_SUSPENDED;
-  /* Upon Resume call user call back */
-  pdev->dev.usr_cb->DeviceSuspended(); 
-  return USBD_OK;
-}
-
-
-/**
-  * @brief  USBD_SOF 
-  *         Handle SOF event
-  * @param  pdev: device instance
-  * @retval status
-  */
-
-static uint8_t USBD_SOF(USB_CORE_HANDLE  *pdev)
-{
-  if(pdev->dev.class_cb->SOF)
-  {
-    pdev->dev.class_cb->SOF(pdev); 
-  }
-  return USBD_OK;
-}
-/**
-  * @brief  USBD_SetCfg 
-  *        Configure device and start the interface
-  * @param  pdev: device instance
-  * @param  cfgidx: configuration index
-  * @retval status
-  */
-
-USBD_Status USBD_SetCfg(USB_CORE_HANDLE  *pdev, uint8_t cfgidx)
-{
-  pdev->dev.class_cb->Init(pdev, cfgidx); 
-  
-  /* Upon set config call user call back */
-  pdev->dev.usr_cb->DeviceConfigured();
-  return USBD_OK; 
-}
-
-/**
-  * @brief  USBD_ClrCfg 
-  *         Clear current configuration
-  * @param  pdev: device instance
-  * @param  cfgidx: configuration index
-  * @retval status: USBD_Status
-  */
-USBD_Status USBD_ClrCfg(USB_CORE_HANDLE  *pdev, uint8_t cfgidx)
-{
-  pdev->dev.class_cb->DeInit(pdev, cfgidx);   
-  return USBD_OK;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c
deleted file mode 100644
index 181c9dd..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c	
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_ioreq.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the IO requests APIs for control endpoints.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_ioreq.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-/**
-  * @brief  USBD_CtlSendData
-  *         send data on the ctl pipe
-  * @param  pdev: device instance
-  * @param  buff: pointer to data buffer
-  * @param  len: length of data to be sent
-  * @retval status
-  */
-USBD_Status  USBD_CtlSendData (USB_CORE_HANDLE  *pdev, 
-                               uint8_t *pbuf,
-                               uint16_t len)
-{
-  USBD_Status ret = USBD_OK;
-  
-  pdev->dev.in_ep[0].total_data_len = len;
-  pdev->dev.in_ep[0].rem_data_len   = len;
-  pdev->dev.device_state = USB_EP0_DATA_IN;
-
-  DCD_EP_Tx (pdev, 0, pbuf, len);
- 
-  return ret;
-}
-
-/**
-  * @brief  USBD_CtlContinueSendData
-  *         continue sending data on the ctl pipe
-  * @param  pdev: device instance
-  * @param  buff: pointer to data buffer
-  * @param  len: length of data to be sent
-  * @retval status
-  */
-USBD_Status  USBD_CtlContinueSendData (USB_CORE_HANDLE  *pdev, 
-                                       uint8_t *pbuf,
-                                       uint16_t len)
-{
-  USBD_Status ret = USBD_OK;
-  
-  DCD_EP_Tx (pdev, 0, pbuf, len);
-  
-  
-  return ret;
-}
-
-/**
-  * @brief  USBD_CtlPrepareRx
-  *         receive data on the ctl pipe
-  * @param  pdev: USB device instance
-  * @param  buff: pointer to data buffer
-  * @param  len: length of data to be received
-  * @retval status
-  */
-USBD_Status  USBD_CtlPrepareRx (USB_CORE_HANDLE  *pdev,
-                                  uint8_t *pbuf,                                  
-                                  uint16_t len)
-{
-  USBD_Status ret = USBD_OK;
-  
-  pdev->dev.out_ep[0].total_data_len = len;
-  pdev->dev.out_ep[0].rem_data_len   = len;
-  pdev->dev.device_state = USB_EP0_DATA_OUT;
-  
-  DCD_EP_PrepareRx (pdev,
-                    0,
-                    pbuf,
-                    len);
-  
-
-  return ret;
-}
-
-/**
-  * @brief  USBD_CtlContinueRx
-  *         continue receive data on the ctl pipe
-  * @param  pdev: USB device instance
-  * @param  buff: pointer to data buffer
-  * @param  len: length of data to be received
-  * @retval status
-  */
-USBD_Status  USBD_CtlContinueRx (USB_CORE_HANDLE  *pdev, 
-                                          uint8_t *pbuf,                                          
-                                          uint16_t len)
-{
-  USBD_Status ret = USBD_OK;
-  
-  DCD_EP_PrepareRx (pdev,
-                    0,                     
-                    pbuf,                         
-                    len);
-  return ret;
-}
-/**
-  * @brief  USBD_CtlSendStatus
-  *         send zero length packet on the ctl pipe
-  * @param  pdev: USB device instance
-  * @retval status
-  */
-USBD_Status  USBD_CtlSendStatus (USB_CORE_HANDLE  *pdev)
-{
-  USBD_Status ret = USBD_OK;
-  pdev->dev.device_state = USB_EP0_STATUS_IN;
-  DCD_EP_Tx (pdev,
-             0,
-             NULL, 
-             0); 
-  return ret;
-}
-
-/**
-  * @brief  USBD_CtlReceiveStatus
-  *         receive zero length packet on the ctl pipe
-  * @param  pdev: USB device instance
-  * @retval status
-  */
-USBD_Status  USBD_CtlReceiveStatus (USB_CORE_HANDLE  *pdev)
-{
-  USBD_Status ret = USBD_OK;
-  pdev->dev.device_state = USB_EP0_STATUS_OUT;  
-  DCD_EP_PrepareRx ( pdev,
-                    0,
-                    NULL,
-                    0); 
-  
-  return ret;
-}
-
-
-/**
-  * @brief  USBD_GetRxCount
-  *         returns the received data length
-  * @param  pdev: USB device instance
-  *         epnum: endpoint index
-  * @retval Rx Data blength
-  */
-uint16_t  USBD_GetRxCount (USB_CORE_HANDLE  *pdev , uint8_t epnum)
-{
-  return pdev->dev.out_ep[epnum].xfer_count;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c b/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c
deleted file mode 100644
index e75340b..0000000
--- a/attic/NHC-Link042/STM32F0x2_USB-FS-Device_Lib V1.0.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c	
+++ /dev/null
@@ -1,693 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_req.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    31-January-2014
-  * @brief   This file provides the standard USB requests following chapter 9.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_req.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-uint32_t ADDRESS=0;
-uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ] ;
-
-/* Private function prototypes -----------------------------------------------*/
-static void USBD_GetDescriptor(USB_CORE_HANDLE  *pdev, 
-                               USB_SETUP_REQ *req);
-
-static void USBD_SetAddress(USB_CORE_HANDLE  *pdev, 
-                            USB_SETUP_REQ *req);
-
-static void USBD_SetConfig(USB_CORE_HANDLE  *pdev, 
-                           USB_SETUP_REQ *req);
-
-static void USBD_GetConfig(USB_CORE_HANDLE  *pdev, 
-                           USB_SETUP_REQ *req);
-
-static void USBD_GetStatus(USB_CORE_HANDLE  *pdev, 
-                           USB_SETUP_REQ *req);
-
-static void USBD_SetFeature(USB_CORE_HANDLE  *pdev, 
-                            USB_SETUP_REQ *req);
-
-static void USBD_ClrFeature(USB_CORE_HANDLE  *pdev, 
-                            USB_SETUP_REQ *req);
-
-static uint8_t USBD_GetLen(uint8_t *buf);
-
-/* Private functions ---------------------------------------------------------*/
-/**
-  * @brief  USBD_StdDevReq
-  *         Handle standard usb device requests
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval status
-  */
-USBD_Status  USBD_StdDevReq (USB_CORE_HANDLE  *pdev, USB_SETUP_REQ  *req)
-{
-  USBD_Status ret = USBD_OK;  
-  
-  switch (req->bRequest) 
-  {
-  case USB_REQ_GET_DESCRIPTOR: 
-    
-    USBD_GetDescriptor (pdev, req) ;
-    break;
-    
-  case USB_REQ_SET_ADDRESS:                      
-    USBD_SetAddress(pdev, req);
-    break;
-    
-  case USB_REQ_SET_CONFIGURATION:                    
-    USBD_SetConfig (pdev , req);
-    break;
-    
-  case USB_REQ_GET_CONFIGURATION:                 
-    USBD_GetConfig (pdev , req);
-    break;
-    
-  case USB_REQ_GET_STATUS:                                  
-    USBD_GetStatus (pdev , req);
-    break;
-    
-    
-  case USB_REQ_SET_FEATURE:   
-    USBD_SetFeature (pdev , req);    
-    break;
-    
-  case USB_REQ_CLEAR_FEATURE:                                   
-    USBD_ClrFeature (pdev , req);
-    break;
-    
-  default:  
-    USBD_CtlError(pdev , req);
-    break;
-  }
-  
-  return ret;
-}
-
-/**
-  * @brief  USBD_StdItfReq
-  *         Handle standard usb interface requests
-  * @param  pdev: USB device instance
-  * @param  req: usb request
-  * @retval status
-  */
-USBD_Status  USBD_StdItfReq (USB_CORE_HANDLE  *pdev, USB_SETUP_REQ  *req)
-{
-  USBD_Status ret = USBD_OK; 
-  
-  switch (pdev->dev.device_status) 
-  {
-  case USB_CONFIGURED:
-    
-    if (LOBYTE(req->wIndex) <= USBD_ITF_MAX_NUM) 
-    {
-      ret = (USBD_Status) (pdev->dev.class_cb->Setup (pdev, req)); 
-      
-      if((req->wLength == 0)&& (ret == USBD_OK))
-      {
-         USBD_CtlSendStatus(pdev);
-      }
-    } 
-    else 
-    {                                               
-       USBD_CtlError(pdev , req);
-    }
-    break;
-    
-  default:
-     USBD_CtlError(pdev , req);
-    break;
-  }
-  return ret;
-}
-
-/**
-  * @brief  USBD_StdEPReq
-  *         Handle standard usb endpoint requests
-  * @param  pdev: USB device instance
-  * @param  req: usb request
-  * @retval status
-  */
-USBD_Status  USBD_StdEPReq (USB_CORE_HANDLE  *pdev, USB_SETUP_REQ  *req)
-{
-  
-  uint8_t   ep_addr;
-  uint32_t USBD_ep_status  = 0; 
-  USBD_Status ret = USBD_OK; 
-  
-  ep_addr  = LOBYTE(req->wIndex);   
-  
-  switch (req->bRequest) 
-  {  
-  case USB_REQ_SET_FEATURE :
-    
-    switch (pdev->dev.device_status) 
-    {
-    case USB_ADDRESSED:          
-      if ((ep_addr != 0x00) && (ep_addr != 0x80)) 
-      {
-        DCD_EP_Stall(pdev , ep_addr);
-      }
-      break;	
-      
-    case USB_CONFIGURED:   
-      if (req->wValue == USB_FEATURE_EP_HALT)
-      {
-        if ((ep_addr != 0x00) && (ep_addr != 0x80)) 
-        { 
-          DCD_EP_Stall(pdev , ep_addr);
-          
-        }
-      }
-      pdev->dev.class_cb->Setup (pdev, req);   
-      USBD_CtlSendStatus(pdev);
-      
-      break;
-      
-    default:                         
-      USBD_CtlError(pdev , req);
-      break;    
-    }
-    break;
-    
-  case USB_REQ_CLEAR_FEATURE :
-    
-    switch (pdev->dev.device_status) 
-    {
-    case USB_ADDRESSED:          
-      if ((ep_addr != 0x00) && (ep_addr != 0x80)) 
-      {
-        DCD_EP_Stall(pdev , ep_addr);
-      }
-      break;	
-      
-    case USB_CONFIGURED:   
-      if (req->wValue == USB_FEATURE_EP_HALT)
-      {
-        if ((ep_addr != 0x00) && (ep_addr != 0x80)) 
-        {        
-          DCD_EP_ClrStall(pdev , ep_addr);
-        }
-      }
-      pdev->dev.class_cb->Setup (pdev, req);
-      USBD_CtlSendStatus(pdev);
-      break;
-      
-    default:                         
-       USBD_CtlError(pdev , req);
-      break;    
-    }
-    break;
-    
-  case USB_REQ_GET_STATUS:                  
-    switch (pdev->dev.device_status) 
-    {
-    case USB_ADDRESSED:          
-      if ((ep_addr != 0x00) && (ep_addr != 0x80)) 
-      {
-        DCD_EP_Stall(pdev , ep_addr);
-      }
-      break;	
-      
-    case USB_CONFIGURED:         
-      
-      if ((ep_addr & 0x80)== 0x80)
-      {
-        if(pdev->dev.in_ep[ep_addr & 0x7F].is_stall)
-        {
-          USBD_ep_status = 0x0001;     
-        }
-        else
-        {
-          USBD_ep_status = 0x0000;  
-        }
-      }
-      else if ((ep_addr & 0x80)== 0x00)
-      {
-        if(pdev->dev.out_ep[ep_addr].is_stall)
-        {
-          USBD_ep_status = 0x0001;     
-        }
-        
-        else 
-        {
-          USBD_ep_status = 0x0000;     
-        }      
-      }
-      USBD_CtlSendData (pdev,
-                        (uint8_t *)&USBD_ep_status,
-                        2);
-      break;
-      
-    default:                         
-       USBD_CtlError(pdev , req);
-      break;
-    }
-    break;
-    
-  default:
-    break;
-  }
-  return ret;
-}
-/**
-  * @brief  USBD_GetDescriptor
-  *         Handle Get Descriptor requests
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval status
-  */
-static void USBD_GetDescriptor(USB_CORE_HANDLE  *pdev, 
-                               USB_SETUP_REQ *req)
-{
-  uint16_t len;
-  uint8_t *pbuf;
-  
-  switch (req->wValue >> 8)
-  {
-#ifdef LPM_ENABLED    
-  case USB_DESC_TYPE_BOS:
-    pbuf = pdev->dev.usr_device->GetBOSDescriptor(pdev->dev.speed, &len);
-    break;
-#endif    
-  case USB_DESC_TYPE_DEVICE:
-    pbuf = pdev->dev.usr_device->GetDeviceDescriptor(pdev->dev.speed, &len);
-    if (req->wLength == 64)   
-    {                  
-      len = 8;
-    }
-    break;
-    
-  case USB_DESC_TYPE_CONFIGURATION:
-      pbuf   = (uint8_t *)pdev->dev.class_cb->GetConfigDescriptor(pdev->dev.speed, &len);  
-      pdev->dev.pConfig_descriptor = pbuf;    
-    break;
-    
-  case USB_DESC_TYPE_STRING:
-    switch ((uint8_t)(req->wValue))
-    {
-    case USBD_IDX_LANGID_STR:
-     pbuf = pdev->dev.usr_device->GetLangIDStrDescriptor(pdev->dev.speed, &len);        
-      break;
-      
-    case USBD_IDX_MFC_STR:
-      pbuf = pdev->dev.usr_device->GetManufacturerStrDescriptor(pdev->dev.speed, &len);
-      break;
-      
-    case USBD_IDX_PRODUCT_STR:
-      pbuf = pdev->dev.usr_device->GetProductStrDescriptor(pdev->dev.speed, &len);
-      break;
-      
-    case USBD_IDX_SERIAL_STR:
-      pbuf = pdev->dev.usr_device->GetSerialStrDescriptor(pdev->dev.speed, &len);
-      break;
-      
-    case USBD_IDX_CONFIG_STR:
-      pbuf = pdev->dev.usr_device->GetConfigurationStrDescriptor(pdev->dev.speed, &len);
-      break;
-      
-    case USBD_IDX_INTERFACE_STR:
-      pbuf = pdev->dev.usr_device->GetInterfaceStrDescriptor(pdev->dev.speed, &len);
-      break;
-      
-    default:
-#ifdef USB_SUPPORT_USER_STRING_DESC
-      pbuf = pdev->dev.class_cb->GetUsrStrDescriptor(pdev->dev.speed, (req->wValue) , &len);
-      break;
-#else      
-       USBD_CtlError(pdev , req);
-      return;
-#endif /* USBD_CtlError(pdev , req); */      
-    }
-    break;
-  case USB_DESC_TYPE_DEVICE_QUALIFIER:                   
-       USBD_CtlError(pdev , req);
-      return;  
-
-  case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION:
-      USBD_CtlError(pdev , req);
-      return;  
-  default: 
-     USBD_CtlError(pdev , req);
-    return;
-  }
-  
-  if((len != 0)&& (req->wLength != 0))
-  {
-    
-    len = MIN(len , req->wLength);
-    
-    USBD_CtlSendData (pdev, 
-                      pbuf,
-                      len);
-  }
-  
-}
-
-/**
-  * @brief  USBD_SetAddress
-  *         Set device address
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval status
-  */
-static void USBD_SetAddress(USB_CORE_HANDLE  *pdev, 
-                            USB_SETUP_REQ *req)
-{
-  uint8_t  dev_addr; 
-  
-  if ((req->wIndex == 0) && (req->wLength == 0)) 
-  {
-    dev_addr = (uint8_t)(req->wValue) & 0x7F;     
-    
-    if (pdev->dev.device_status == USB_CONFIGURED) 
-    {
-      USBD_CtlError(pdev , req);
-    } 
-    else 
-    {
-      pdev->dev.device_address = dev_addr;              
-      ADDRESS = dev_addr;
-      USBD_CtlSendStatus(pdev);                         
-      
-      if (dev_addr != 0) 
-      {
-        pdev->dev.device_status  = USB_ADDRESSED;
-      } 
-      else 
-      {
-        pdev->dev.device_status  = USB_DEFAULT; 
-      }
-    }
-  } 
-  else 
-  {
-     USBD_CtlError(pdev , req);                        
-  } 
-}
-
-/**
-  * @brief  USBD_SetConfig
-  *         Handle Set device configuration request
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval status
-  */
-static void USBD_SetConfig(USB_CORE_HANDLE  *pdev, 
-                           USB_SETUP_REQ *req)
-{
-  
-  static uint8_t  cfgidx;
-  
-  cfgidx = (uint8_t)(req->wValue);                 
-  
-  if (cfgidx > USBD_CFG_MAX_NUM ) 
-  {            
-     USBD_CtlError(pdev , req);                              
-  } 
-  else 
-  {
-    switch (pdev->dev.device_status) 
-    {
-    case USB_ADDRESSED:
-      if (cfgidx) 
-      {                                			   							   							   				
-        pdev->dev.device_config = cfgidx;
-        pdev->dev.device_status = USB_CONFIGURED;
-        USBD_SetCfg(pdev , cfgidx);
-        USBD_CtlSendStatus(pdev);
-      }
-      else 
-      {
-         USBD_CtlSendStatus(pdev);
-      }
-      break;
-      
-    case USB_CONFIGURED:
-      if (cfgidx == 0) 
-      {                           
-        pdev->dev.device_status = USB_ADDRESSED;
-        pdev->dev.device_config = cfgidx;          
-        USBD_ClrCfg(pdev , cfgidx);
-        USBD_CtlSendStatus(pdev);
-      } 
-      else  if (cfgidx != pdev->dev.device_config) 
-      {
-        /* Clear old configuration */
-        USBD_ClrCfg(pdev , pdev->dev.device_config);
-        
-        /* set new configuration */
-        pdev->dev.device_config = cfgidx;
-        USBD_SetCfg(pdev , cfgidx);
-        USBD_CtlSendStatus(pdev);
-      }
-      else
-      {
-        USBD_CtlSendStatus(pdev);
-      }
-      break;
-      
-    default:					
-       USBD_CtlError(pdev , req);                     
-      break;
-    }
-  }
-}
-
-/**
-  * @brief  USBD_GetConfig
-  *         Handle Get device configuration request
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval status
-  */
-static void USBD_GetConfig(USB_CORE_HANDLE  *pdev, 
-                           USB_SETUP_REQ *req)
-{
-  uint32_t  USBD_default_cfg  = 0;
- 
-  if (req->wLength != 1) 
-  {                   
-     USBD_CtlError(pdev , req);
-  }
-  else 
-  {
-    switch (pdev->dev.device_status )  
-    {
-    case USB_ADDRESSED:                     
-      
-      USBD_CtlSendData (pdev, 
-                        (uint8_t *)&USBD_default_cfg,
-                        1);
-      break;
-      
-    case USB_CONFIGURED:                   
-      
-      USBD_CtlSendData (pdev, 
-                        &pdev->dev.device_config,
-                        1);
-      break;
-      
-    default:
-       USBD_CtlError(pdev , req);
-      break;
-    }
-  }
-}
-
-/**
-  * @brief  USBD_GetStatus
-  *         Handle Get Status request
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval status
-  */
-static void USBD_GetStatus(USB_CORE_HANDLE  *pdev, 
-                           USB_SETUP_REQ *req)
-{
-  uint32_t  USBD_cfg_status = 0;  
-  switch (pdev->dev.device_status) 
-  {
-  case USB_ADDRESSED:
-  case USB_CONFIGURED:
-    
-#ifdef USBD_SELF_POWERED
-    USBD_cfg_status = USB_CONFIG_SELF_POWERED;                                    
-#else
-    USBD_cfg_status = 0x00;                                    
-#endif
-                      
-    if (pdev->dev.DevRemoteWakeup) 
-    {
-      USBD_cfg_status |= USB_CONFIG_REMOTE_WAKEUP;                                
-    }
-    
-    USBD_CtlSendData (pdev, 
-                      (uint8_t *)&USBD_cfg_status,
-                      2);
-    break;
-    
-  default :
-    USBD_CtlError(pdev , req);                        
-    break;
-  }
-}
-
-
-/**
-  * @brief  USBD_SetFeature
-  *         Handle Set device feature request
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval status
-  */
-static void USBD_SetFeature(USB_CORE_HANDLE  *pdev, 
-                            USB_SETUP_REQ *req)
-{
- 
-  if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
-  {
-    pdev->dev.DevRemoteWakeup = 1;  
-    pdev->dev.class_cb->Setup (pdev, req);   
-    USBD_CtlSendStatus(pdev);
-  }
-}
-
-
-/**
-  * @brief  USBD_ClrFeature
-  *         Handle clear device feature request
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval status
-  */
-static void USBD_ClrFeature(USB_CORE_HANDLE  *pdev, 
-                            USB_SETUP_REQ *req)
-{
-  switch (pdev->dev.device_status)
-  {
-  case USB_ADDRESSED:
-  case USB_CONFIGURED:
-    if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) 
-    {
-      pdev->dev.DevRemoteWakeup = 0; 
-      pdev->dev.class_cb->Setup (pdev, req);   
-      USBD_CtlSendStatus(pdev);
-    }
-    break;
-    
-  default :
-     USBD_CtlError(pdev , req);
-    break;
-  }
-}
-
-/**
-  * @brief  USBD_ParseSetupRequest 
-  *         Copy buffer into setup structure
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval None
-  */
-
-void USBD_ParseSetupRequest( USB_CORE_HANDLE  *pdev,
-                            USB_SETUP_REQ *req)
-{
-  req->bmRequest     = *(uint8_t *)  (pdev->dev.setup_packet);
-  req->bRequest      = *(uint8_t *)  (pdev->dev.setup_packet +  1);
-  req->wValue        = SWAPBYTE      (pdev->dev.setup_packet +  2);
-  req->wIndex        = SWAPBYTE      (pdev->dev.setup_packet +  4);
-  req->wLength       = SWAPBYTE      (pdev->dev.setup_packet +  6);
-  
-  pdev->dev.in_ep[0].ctl_data_len = req->wLength  ;
-  pdev->dev.device_state = USB_EP0_SETUP;
-}
-
-/**
-  * @brief  USBD_CtlError 
-  *         Handle USB low level Error
-  * @param  pdev: device instance
-  * @param  req: usb request
-  * @retval None
-  */
-
-void USBD_CtlError( USB_CORE_HANDLE  *pdev,
-                            USB_SETUP_REQ *req)
-{
-  DCD_EP_Stall(pdev , 0);
-}
-
-
-/**
-  * @brief  USBD_GetString
-  *         Convert Ascii string into unicode one
-  * @param  desc : descriptor buffer
-  * @param  unicode : Formatted string buffer (unicode)
-  * @param  len : descriptor length
-  * @retval None
-  */
-void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len)
-{
-  uint8_t idx = 0;
-  
-  if (desc != NULL) 
-  {
-    *len =  USBD_GetLen(desc) * 2 + 2;    
-    unicode[idx++] = *len;
-    unicode[idx++] =  USB_DESC_TYPE_STRING;
-    
-    while (*desc != NULL) 
-    {
-      unicode[idx++] = *desc++;
-      unicode[idx++] =  0x00;
-    }
-  } 
-}
-
-/**
-  * @brief  USBD_GetLen
-  *         return the string length
-   * @param  buf : pointer to the ascii string buffer
-  * @retval string length
-  */
-static uint8_t USBD_GetLen(uint8_t *buf)
-{
-    uint8_t  len = 0;
-
-    while (*buf != NULL) 
-    {
-        len++;
-        buf++;
-    }
-
-    return len;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/NHC_WCH_SDI.c b/attic/NHC-Link042/User/NHC_WCH_SDI.c
deleted file mode 100644
index 8a94e80..0000000
--- a/attic/NHC-Link042/User/NHC_WCH_SDI.c
+++ /dev/null
@@ -1,430 +0,0 @@
-#include "NHC_WCH_SDI.h"
-
-/*
-	1-Wire WCH (CH32V003) debug protocol
-	Ngo Hung Cuong
-	http://vidieukhien.org
-	ngohungcuong@gmail.com
-	
-	Based on STM32F042
-*/
-
-static uint16_t u16Capture[100];
-static uint8_t u8Data[100];
-
-#define SDI_1 GPIOA->BSRR = 0x00002000
-#define SDI_0 GPIOA->BRR = 0x00002000
-#define SDI_IN (GPIOA->IDR & 0x00002000)
-
-#define H_VAL 1
-#define L_VAL 32
-#define IN_VAL 4
-
-void NHC_Delay_Us(uint16_t u16Delay);
-void NHC_Delay_Ms(uint32_t u32Delay);
-
-void NHC_Delay_Us(uint16_t u16Delay)
-{
-	uint16_t u16Tmp;
-	
-	u16Tmp = u16Delay * 48;
-	TIM16->CNT = 0;
-	while (TIM16->CNT < u16Tmp)
-	{
-	}
-}
-
-void NHC_Delay_Ms(uint32_t u32Delay)
-{
-	
-	while (u32Delay)
-	{
-		NHC_Delay_Us(500);
-		NHC_Delay_Us(500);
-		--u32Delay;
-	}
-}
-
-void NHC_WchSdi_Init(void)
-{
-	GPIO_InitTypeDef gpioInit;
-	TIM_TimeBaseInitTypeDef timInit;
-	
-	//RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
-	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
-	RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16, ENABLE);
-	
-	timInit.TIM_ClockDivision = TIM_CKD_DIV1;
-	timInit.TIM_CounterMode = TIM_CounterMode_Up;
-	timInit.TIM_Period = 0xffff;
-	timInit.TIM_Prescaler = 1 - 1;
-	timInit.TIM_RepetitionCounter = 0;
-	
-	TIM_TimeBaseInit(TIM16, &timInit);
-	TIM_Cmd(TIM16, ENABLE);
-	
-	GPIO_SetBits(GPIOA, GPIO_Pin_13);
-	gpioInit.GPIO_Mode = GPIO_Mode_OUT;
-	gpioInit.GPIO_OType = GPIO_OType_OD;
-	gpioInit.GPIO_PuPd = GPIO_PuPd_NOPULL;
-	gpioInit.GPIO_Pin = GPIO_Pin_13;
-	gpioInit.GPIO_Speed = GPIO_Speed_Level_3;
-	GPIO_Init(GPIOA, &gpioInit);
-	
-	SDI_1;
-	NHC_Delay_Ms(1);
-	SDI_0;
-	NHC_Delay_Us(36);
-	SDI_1;
-}
-
-void NHC_WchSdi_Exit(void)
-{
-	GPIO_InitTypeDef gpioInit;
-	
-	GPIO_SetBits(GPIOA, GPIO_Pin_13);
-	gpioInit.GPIO_Mode = GPIO_Mode_IN;
-	gpioInit.GPIO_OType = GPIO_OType_OD;
-	gpioInit.GPIO_PuPd = GPIO_PuPd_NOPULL;
-	gpioInit.GPIO_Pin = GPIO_Pin_13;
-	gpioInit.GPIO_Speed = GPIO_Speed_Level_3;
-	GPIO_Init(GPIOA, &gpioInit);
-	
-	TIM_DeInit(TIM16);
-	TIM_Cmd(TIM16, DISABLE);
-}
-
-void NHC_WchSdi_Write(uint8_t u8Address, uint32_t u32Data)
-{
-	uint32_t i;
-	uint8_t *p;
-	
-	u8Data[0] = 1;
-	
-	for (i = 0; i < 7; ++i)
-	{
-		if (u8Address & 0x40)
-		{
-			u8Data[i + 1] = 1;
-		}
-		else
-		{
-			u8Data[i + 1] = 0;
-		}
-		u8Address <<= 1;
-	}
-	
-	u8Data[8] = 1;
-	
-	for (i = 0; i < 32; ++i)
-	{
-		if (u32Data & 0x80000000)
-		{
-			u8Data[i + 9] = 1;
-		}
-		else
-		{
-			u8Data[i + 9] = 0;
-		}
-		u32Data <<= 1;
-	}
-	
-	p = u8Data;
-	
-	for (i = 0; i < 41; ++i)
-	{
-		if (*p++)
-		{
-			SDI_0;
-			TIM16->CNT = 0;
-			while (TIM16->CNT < H_VAL)
-			{
-			}
-			SDI_1;
-			TIM16->CNT = 0;
-			while (TIM16->CNT < H_VAL)
-			{
-			}
-		}
-		else
-		{
-			SDI_0;
-			TIM16->CNT = 0;
-			while (TIM16->CNT < L_VAL)
-			{
-			}
-			SDI_1;
-			TIM16->CNT = 0;
-			while (TIM16->CNT < H_VAL)
-			{
-			}
-		}
-	}
-
-    NHC_Delay_Us(2);
-}
-
-uint32_t NHC_WchSdi_Read(uint8_t u8Address, uint32_t *pu32Data)
-{
-	uint32_t i;
-	uint32_t u32Tmp;
-	uint8_t *p;
-	uint16_t *pu16;
-	
-	u8Data[0] = 1;
-	for (i = 0; i < 7; ++i)
-	{
-		if (u8Address & 0x40)
-		{
-			u8Data[i + 1] = 1;
-		}
-		else
-		{
-			u8Data[i + 1] = 0;
-		}
-		u8Address <<= 1;
-	}
-	u8Data[8] = 0;
-	
-	p = u8Data;
-	
-	for (i = 0; i < 9; ++i)
-	{
-		if (*p++)
-		{
-			SDI_0;
-			TIM16->CNT = 0;
-			while (TIM16->CNT < H_VAL)
-			{
-			}
-			SDI_1;
-			TIM16->CNT = 0;
-			while (TIM16->CNT < H_VAL)
-			{
-			}
-		}
-		else
-		{
-			SDI_0;
-			TIM16->CNT = 0;
-			while (TIM16->CNT < L_VAL)
-			{
-			}
-			SDI_1;
-			TIM16->CNT = 0;
-			while (TIM16->CNT < H_VAL)
-			{
-			}
-		}
-	}
-	
-	pu16 = u16Capture;
-	
-	for (i = 0; i < 32; ++i)
-	{
-		SDI_0;
-		TIM16->CNT = 0;
-		while (TIM16->CNT < H_VAL)
-		{
-		}
-		SDI_1;
-		TIM16->CNT = 0;
-		while (1)
-		{
-			if (SDI_IN)
-			{
-				*pu16++ = TIM16->CNT;
-				break;
-			}
-			if (TIM16->CNT > 144)
-			{
-				return 0;
-			}
-		}
-	}
-	
-	u32Tmp = 0;
-	
-	for (i = 0; i < 32; ++i)
-	{
-		u32Tmp <<= 1;
-		if (u16Capture[i] < IN_VAL)
-		{
-			u32Tmp |= 0x01;
-		}
-	}
-	
-	*pu32Data = u32Tmp;
-	
-    NHC_Delay_Us(2);
-	return 1;
-}
-
-uint32_t NHC_WchSdi_WriteMem(uint32_t u32Address, uint32_t u32Data, uint8_t u8Width)
-{
-	uint32_t u32Tmp;
-	uint32_t i;
-	
-	u32Tmp = 2;
-	
-	if(u8Width == 8)
-	{
-		u32Tmp = 0;
-	}
-	else if (u8Width == 16)
-	{
-		u32Tmp = 1;
-	}
-	else if (u8Width == 32)
-	{
-		u32Tmp = 2;
-	}
-	else if (u8Width == 64)
-	{
-		u32Tmp = 3;
-	}
-	else if (u8Width == 128)
-	{
-		u32Tmp = 4;
-	}
-	
-	u32Tmp <<= 12;
-	
-	NHC_WchSdi_Write(0x20, 0x00728023  | u32Tmp); //cho nay can thay doi
-	NHC_WchSdi_Write(0x21, 0x00100073);
-	NHC_WchSdi_Write(0x04, u32Address);
-	NHC_WchSdi_Write(0x17, 0x00231005);
-	for (i = 0; i < 1000; ++i)
-	{
-		if (NHC_WchSdi_Read(0x16, &u32Tmp))
-		{
-			if (!(u32Tmp & (1 << 12)))
-			{
-				break;
-			}
-		}
-	}
-	if (i == 1000)
-	{
-		return 0;
-	}
-	if (u32Tmp & (7 << 8))
-	{
-		return 0;
-	}
-	NHC_WchSdi_Write(0x04, u32Data);
-	NHC_WchSdi_Write(0x17, 0x00271007);
-	for (i = 0; i < 1000; ++i)
-	{
-		if (NHC_WchSdi_Read(0x16, &u32Tmp))
-		{
-			if (!(u32Tmp & (1 << 12)))
-			{
-				break;
-			}
-		}
-	}
-	if (i == 1000)
-	{
-		return 0;
-	}
-	if (u32Tmp & (7 << 8))
-	{
-		return 0;
-	}
-	
-	return 1;
-}
-
-uint32_t NHC_WchSdi_ReadMem(uint32_t u32Address, uint32_t *pu32Data, uint8_t u8Width)
-{
-	uint32_t u32Tmp;
-	uint32_t i;
-	
-	u32Tmp = 2;
-	
-	if(u8Width == 8)
-	{
-		u32Tmp = 0;
-	}
-	else if (u8Width == 16)
-	{
-		u32Tmp = 1;
-	}
-	else if (u8Width == 32)
-	{
-		u32Tmp = 2;
-	}
-	else if (u8Width == 64)
-	{
-		u32Tmp = 3;
-	}
-	else if (u8Width == 128)
-	{
-		u32Tmp = 4;
-	}
-	
-	u32Tmp <<= 12;
-	
-	//NHC_WchSdi_Write(0x10, 0x80000001);
-	//NHC_WchSdi_Write(0x10, 0x80000001);
-	//NHC_WchSdi_Write(0x10, 0x00000001);
-	NHC_WchSdi_Write(0x20, 0x00028303 | u32Tmp); //cho nay can thay doi
-	NHC_WchSdi_Write(0x21, 0x00100073);
-	NHC_WchSdi_Write(0x04, u32Address);
-	NHC_WchSdi_Write(0x17, 0x00271005);
-	for (i = 0; i < 1000; ++i)
-	{
-		if (NHC_WchSdi_Read(0x16, &u32Tmp))
-		{
-			if (!(u32Tmp & (1 << 12)))
-			{
-				break;
-			}
-		}
-	}
-	if (i == 1000)
-	{
-		//day loi len
-		*pu32Data = 0xffffffff;
-		return 0;
-	}
-	if (u32Tmp & (7 << 8))
-	{
-		//day loi len
-		*pu32Data = u32Tmp;
-		return 0;
-	}
-
-	NHC_WchSdi_Write(0x17, 0x00221006);
-	for (i = 0; i < 1000; ++i)
-	{
-		if (NHC_WchSdi_Read(0x16, &u32Tmp))
-		{
-			if (!(u32Tmp & (1 << 12)))
-			{
-				break;
-			}
-		}
-	}
-	if (i == 1000)
-	{
-		*pu32Data = 0xffffffff;
-		return 0;
-	}
-	if (u32Tmp & (7 << 8))
-	{
-		*pu32Data = u32Tmp;
-		return 0;
-	}
-	
-	if (!NHC_WchSdi_Read(0x04, &u32Tmp))
-	{
-		*pu32Data = 0x00000000;
-		return 0;
-	}
-	
-	*pu32Data = u32Tmp;
-	
-	return 1;
-}
diff --git a/attic/NHC-Link042/User/NHC_WCH_SDI.h b/attic/NHC-Link042/User/NHC_WCH_SDI.h
deleted file mode 100644
index dd6797c..0000000
--- a/attic/NHC-Link042/User/NHC_WCH_SDI.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef NHC_WCH_SDI_H_
-#define NHC_WCH_SDI_H_
-
-#include "stm32f0xx.h"
-
-/*
-	1-Wire WCH (CH32V003) debug protocol
-	Ngo Hung Cuong
-	http://vidieukhien.org
-	ngohungcuong@gmail.com
-	
-	Based on STM32F042
-*/
-
-#define WCH_SDI_DATA0 0x04
-#define WCH_SDI_DATA1 0x05
-#define WCH_SDI_DMCONTROL 0x10
-#define WCH_SDI_DMSTATUS 0x11
-#define WCH_SDI_HARTINFO 0x12
-#define WCH_SDI_ABSTRACTCS 0x16
-#define WCH_SDI_COMMAND 0x17
-#define WCH_SDI_ABSTRACTAUTO 0x18
-#define WCH_SDI_PROGBUFF0 0x20
-#define WCH_SDI_PROGBUFF1 0x21
-#define WCH_SDI_PROGBUFF2 0x22
-#define WCH_SDI_PROGBUFF3 0x23
-#define WCH_SDI_PROGBUFF4 0x24
-#define WCH_SDI_PROGBUFF5 0x25
-#define WCH_SDI_PROGBUFF6 0x26
-#define WCH_SDI_PROGBUFF7 0x27
-#define WCH_SDI_HALTSUM0 0x40
-
-#define WCH_SDI_CPBR 0x7C
-#define WCH_SDI_CFGR 0x7D
-#define WCH_SDI_SHDWCFGR 0x7E
-
-#define R32_FLASH_BASE 0x40022000
-#define R32_FLASH_ACTLR 0x40022000
-#define R32_FLASH_KEYR 0x40022004
-#define R32_FLASH_OBKEYR 0x40022008
-#define R32_FLASH_STATR 0x4002200C
-#define R32_FLASH_CTLR 0x40022010
-#define R32_FLASH_ADDR 0x40022014
-#define R32_FLASH_OBR 0x4002201C
-#define R32_FLASH_WPR 0x40022020
-#define R32_FLASH_MODEKEYR 0x40022024
-#define R32_FLASH_BOOT_MODEKEYR 0x40022028
-
-void NHC_WchSdi_Init(void);
-void NHC_WchSdi_Exit(void);
-void NHC_WchSdi_Write(uint8_t u8Address, uint32_t u32Data);
-uint32_t NHC_WchSdi_Read(uint8_t u8Address, uint32_t *pu32Data);
-
-uint32_t NHC_WchSdi_WriteMem(uint32_t u32Address, uint32_t u32Data, uint8_t u8Width);
-uint32_t NHC_WchSdi_ReadMem(uint32_t u32Address, uint32_t *pu32Data, uint8_t u8Width);
-
-#endif
diff --git a/attic/NHC-Link042/User/config.h b/attic/NHC-Link042/User/config.h
deleted file mode 100644
index 2485c65..0000000
--- a/attic/NHC-Link042/User/config.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#define TAMPER_BUTTON_PIN                GPIO_Pin_13
-#define TAMPER_BUTTON_GPIO_PORT          GPIOC
-#define TAMPER_BUTTON_GPIO_CLK           RCC_APB2Periph_GPIOC
-#define TAMPER_BUTTON_EXTI_LINE          EXTI_Line13
-#define TAMPER_BUTTON_EXTI_PORT_SOURCE   GPIO_PortSourceGPIOC
-#define TAMPER_BUTTON_EXTI_PIN_SOURCE    GPIO_PinSource13
-#define TAMPER_BUTTON_EXTI_IRQn          EXTI4_15_IRQn
diff --git a/attic/NHC-Link042/User/it.c b/attic/NHC-Link042/User/it.c
deleted file mode 100644
index e69de29..0000000
diff --git a/attic/NHC-Link042/User/main.c b/attic/NHC-Link042/User/main.c
deleted file mode 100644
index da605db..0000000
--- a/attic/NHC-Link042/User/main.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "stm32f0xx.h"
-#include  "usbd_usr.h"
-#include "usbd_desc.h"
-
-extern USBD_Class_cb_TypeDef  USBD_HID_cb;
-USB_CORE_HANDLE  USB_Device_dev ;
-
-GPIO_InitTypeDef gpioInit;
-
-int main(void) {
-	
-	RCC->APB2ENR |= RCC_APB2ENR_SYSCFGCOMPEN;	
-	// remap pins to enable USB
-	SYSCFG->CFGR1 |= SYSCFG_CFGR1_PA11_PA12_RMP;
-	
-	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
-	
-	USBD_Init(&USB_Device_dev,
-            &USR_desc, 
-            &USBD_HID_cb, 
-            &USR_cb);
-	
-	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
-	gpioInit.GPIO_Mode = GPIO_Mode_OUT;
-	gpioInit.GPIO_OType = GPIO_OType_PP;
-	gpioInit.GPIO_Pin = GPIO_Pin_1;
-	gpioInit.GPIO_PuPd = GPIO_PuPd_NOPULL;
-	gpioInit.GPIO_Speed = GPIO_Speed_Level_3;
-	
-	GPIO_Init(GPIOA, &gpioInit);
-	GPIO_ResetBits(GPIOA, GPIO_Pin_1);
-	
-	while(1) {
-		
-	}
-}
diff --git a/attic/NHC-Link042/User/stm32_it.c b/attic/NHC-Link042/User/stm32_it.c
deleted file mode 100644
index b1b432a..0000000
--- a/attic/NHC-Link042/User/stm32_it.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32_it.c
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   Main Interrupt Service Routines.
-  *          This file provides template for all exceptions handler and peripherals
-  *          interrupt service routine.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32_it.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/******************************************************************************/
-/*            Cortex-M0 Processor Exceptions Handlers                         */
-/******************************************************************************/
-
-/**
-  * @brief  This function handles NMI exception.
-  * @param  None
-  * @retval None
-  */
-void NMI_Handler(void)
-{
-}
-
-/**
-  * @brief  This function handles Hard Fault exception.
-  * @param  None
-  * @retval None
-  */
-void HardFault_Handler(void)
-{
-  /* Go to infinite loop when Hard Fault exception occurs */
-  while (1)
-  {
-  }
-}
-
-/**
-  * @brief  This function handles SVCall exception.
-  * @param  None
-  * @retval None
-  */
-void SVC_Handler(void)
-{
-}
-
-/**
-  * @brief  This function handles PendSVC exception.
-  * @param  None
-  * @retval None
-  */
-void PendSV_Handler(void)
-{
-}
-
-/**
-  * @brief  This function handles SysTick Handler.
-  * @param  None
-  * @retval None
-  */
-void SysTick_Handler(void)
-{ 
-} 
-
-/**
-  * @brief  This function handles USB FS Handler.
-  * @param  None
-  * @retval None
-  */
-void USB_IRQHandler(void)
-{
-  USB_Istr();
-}
-
-/**
-  * @brief  This function handles EXTI14_15_IRQ Handler.
-  * @param  None
-  * @retval None
-  */
-void EXTI4_15_IRQHandler(void)
-{
-  
-  if (EXTI_GetITStatus(TAMPER_BUTTON_EXTI_LINE) != RESET)
-  {
-    /*
-	  if((PrevXferDone)  && (USB_Device_dev.dev.device_status==USB_CONFIGURED))
-    {
-      Send_Buffer[0] = 0x06; 
-      
-      if (STM_EVAL_PBGetState(BUTTON_TAMPER) == Bit_RESET)
-      {
-        Send_Buffer[1] = 0x01;
-      }
-      else
-      {
-        Send_Buffer[1] = 0x00;
-      }
-
-      USBD_HID_SendReport (&USB_Device_dev, Send_Buffer, 2);  
-      PrevXferDone = 0;
-    }
-    */
-    /* Clear the EXTI line pending bit */
-    EXTI_ClearITPendingBit(TAMPER_BUTTON_EXTI_LINE);
-  }
-}
-
-/**
-  * @brief  This function handles DMA1_Channel1 Handler.
-  * @param  None
-  * @retval None
-  */
-void DMA1_Channel1_IRQHandler(void)
-{  
-  /*
-	Send_Buffer[0] = 0x07;
-  
-  if((ADC_ConvertedValueX >>4) - (ADC_ConvertedValueX_1 >>4) > 4)
-  {
-    if ((PrevXferDone) && (USB_Device_dev.dev.device_status == USB_CONFIGURED))
-    {
-      Send_Buffer[1] = (uint8_t)(ADC_ConvertedValueX >>4);
-      
-      //USBD_HID_SendReport (&USB_Device_dev, Send_Buffer, 2);
-      
-      ADC_ConvertedValueX_1 = ADC_ConvertedValueX;
-      PrevXferDone = 0;
-    }
-  }
-	*/
-    /* Test DMA1 TC flag */
-  //while((DMA_GetFlagStatus(DMA1_FLAG_TC1)) == RESET );
-  
-  //DMA_ClearFlag(DMA1_FLAG_TC1);
-}
-         
-/******************************************************************************/
-/*                 STM32F0xx Peripherals Interrupt Handlers                   */
-/*  Add here the Interrupt Handler for the used peripheral(s) (PPP), for the  */
-/*  available peripheral interrupt handler's name please refer to the startup */
-/*  file (startup_stm32f072.s).                                            */
-/******************************************************************************/
-
-/**
-  * @brief  This function handles PPP interrupt request.
-  * @param  None
-  * @retval None
-  */
-/*void PPP_IRQHandler(void)
-{
-}*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/stm32_it.h b/attic/NHC-Link042/User/stm32_it.h
deleted file mode 100644
index 6f6922c..0000000
--- a/attic/NHC-Link042/User/stm32_it.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32_it.h 
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   This file contains the headers of the interrupt handlers.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32_IT_H
-#define __STM32_IT_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif 
-
-/* Includes ------------------------------------------------------------------*/
-//#include "usbd_custom_hid_core.h"
-	 
-#include "stm32f0xx.h"
-#include "config.h"
-#include "usbd_usr.h"
-#include "usbd_desc.h"
-//#include "vdclass.h"
-	 
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-void NMI_Handler(void);
-void HardFault_Handler(void);
-void SVC_Handler(void);
-void PendSV_Handler(void);
-void SysTick_Handler(void);
-void USB_IRQHandler(void);
-void EXTI4_15_IRQHandler(void);
-void DMA1_Channel1_IRQHandler(void);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32_IT_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/stm32f0xx_conf.h b/attic/NHC-Link042/User/stm32f0xx_conf.h
deleted file mode 100644
index 4754231..0000000
--- a/attic/NHC-Link042/User/stm32f0xx_conf.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    Project/STM32F0xx_StdPeriph_Templates/stm32f0xx_conf.h 
-  * @author  MCD Application Team
-  * @version V1.4.0
-  * @date    24-July-2014
-  * @brief   Library configuration file.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0XX_CONF_H
-#define __STM32F0XX_CONF_H
-
-/* Includes ------------------------------------------------------------------*/
-/* Comment the line below to disable peripheral header file inclusion */
-#include "stm32f0xx_adc.h"
-#include "stm32f0xx_can.h"
-#include "stm32f0xx_cec.h"
-#include "stm32f0xx_crc.h"
-#include "stm32f0xx_crs.h"
-#include "stm32f0xx_comp.h"
-#include "stm32f0xx_dac.h"
-#include "stm32f0xx_dbgmcu.h"
-#include "stm32f0xx_dma.h"
-#include "stm32f0xx_exti.h"
-#include "stm32f0xx_flash.h"
-#include "stm32f0xx_gpio.h"
-#include "stm32f0xx_syscfg.h"
-#include "stm32f0xx_i2c.h"
-#include "stm32f0xx_iwdg.h"
-#include "stm32f0xx_pwr.h"
-#include "stm32f0xx_rcc.h"
-#include "stm32f0xx_rtc.h"
-#include "stm32f0xx_spi.h"
-#include "stm32f0xx_tim.h"
-#include "stm32f0xx_usart.h"
-#include "stm32f0xx_wwdg.h"
-#include "stm32f0xx_misc.h"  /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-/* Uncomment the line below to expanse the "assert_param" macro in the 
-   Standard Peripheral Library drivers code */
-/* #define USE_FULL_ASSERT    1 */
-
-/* Exported macro ------------------------------------------------------------*/
-#ifdef  USE_FULL_ASSERT
-
-/**
-  * @brief  The assert_param macro is used for function's parameters check.
-  * @param  expr: If expr is false, it calls assert_failed function which reports 
-  *         the name of the source file and the source line number of the call 
-  *         that failed. If expr is true, it returns no value.
-  * @retval None
-  */
-  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
-/* Exported functions ------------------------------------------------------- */
-  void assert_failed(uint8_t* file, uint32_t line);
-#else
-  #define assert_param(expr) ((void)0)
-#endif /* USE_FULL_ASSERT */
-
-#endif /* __STM32F0XX_CONF_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/system_stm32f0xx.c b/attic/NHC-Link042/User/system_stm32f0xx.c
deleted file mode 100644
index 4816ad9..0000000
--- a/attic/NHC-Link042/User/system_stm32f0xx.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    system_stm32f0xx.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    15-March-2015
-  * @brief   CMSIS Cortex-M0 Device Peripheral Access Layer System Source File.
-  *          This file contains the system clock configuration for STM32F0xx devices,
-  *          and is generated by the clock configuration tool  
-  *          STM32f0xx_Clock_Configuration_V1.0.1.xls
-  *
-  * 1.  This file provides two functions and one global variable to be called from 
-  *     user application:
-  *      - SystemInit(): Setups the system clock (System clock source, PLL Multiplier
-  *                      and Divider factors, AHB/APBx prescalers and Flash settings),
-  *                      depending on the configuration made in the clock xls tool.
-  *                      This function is called at startup just after reset and 
-  *                      before branch to main program. This call is made inside
-  *                      the "startup_stm32f0xx.s" file.
-  *
-  *      - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
-  *                                  by the user application to setup the SysTick 
-  *                                  timer or configure other parameters.
-  *
-  *      - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
-  *                                 be called whenever the core clock is changed
-  *                                 during program execution.
-  *
-  * 2. After each device reset the HSI (8 MHz Range) is used as system clock source.
-  *    Then SystemInit() function is called, in "startup_stm32f0xx.s" file, to
-  *    configure the system clock before to branch to main program.
-  *
-  * 3. If the system clock source selected by user fails to startup, the SystemInit()
-  *    function will do nothing and HSI still used as system clock source. User can 
-  *    add some code to deal with this issue inside the SetSysClock() function.
-  *
-  * 4. The default value of HSE crystal is set to 8MHz, refer to "HSE_VALUE" define
-  *    in "stm32f0xx.h" file. When HSE is used as system clock source, directly or
-  *    through PLL, and you are using different crystal you have to adapt the HSE
-  *    value to your own configuration.
-  *
-  * 5. This file configures the system clock as follows:
-  *=============================================================================
-  *=============================================================================
-  *        System Clock source                    | PLL(HSI)
-  *-----------------------------------------------------------------------------
-  *        SYSCLK(Hz)                             | 48000000
-  *-----------------------------------------------------------------------------
-  *        HCLK(Hz)                               | 48000000
-  *-----------------------------------------------------------------------------
-  *        AHB Prescaler                          | 1
-  *-----------------------------------------------------------------------------
-  *        APB Prescaler                          | 1
-  *-----------------------------------------------------------------------------
-  *        HSE Frequency(Hz)                      | NA
-  *----------------------------------------------------------------------------
-  *        PLLMUL                                 | 12
-  *-----------------------------------------------------------------------------
-  *        PREDIV                                 | 2
-  *-----------------------------------------------------------------------------
-  *        Flash Latency(WS)                      | 1
-  *-----------------------------------------------------------------------------
-  *        Prefetch Buffer                        | ON
-  *-----------------------------------------------------------------------------
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/** @addtogroup CMSIS
-  * @{
-  */
-
-/** @addtogroup stm32f0xx_system
-  * @{
-  */  
-  
-/** @addtogroup STM32F0xx_System_Private_Includes
-  * @{
-  */
-
-#include "stm32f0xx.h"
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_TypesDefinitions
-  * @{
-  */
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_Defines
-  * @{
-  */
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_Macros
-  * @{
-  */
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_Variables
-  * @{
-  */
-uint32_t SystemCoreClock    = 48000000;
-__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_FunctionPrototypes
-  * @{
-  */
-
-static void SetSysClock(void);
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32F0xx_System_Private_Functions
-  * @{
-  */
-
-/**
-  * @brief  Setup the microcontroller system.
-  *         Initialize the Embedded Flash Interface, the PLL and update the 
-  *         SystemCoreClock variable.
-  * @param  None
-  * @retval None
-  */
-void SystemInit (void)
-{    
-  /* Set HSION bit */
-  RCC->CR |= (uint32_t)0x00000001;
-
-  /* Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE and MCOSEL[2:0] bits */
-  RCC->CFGR &= (uint32_t)0xF8FFB80C;
-  
-  /* Reset HSEON, CSSON and PLLON bits */
-  RCC->CR &= (uint32_t)0xFEF6FFFF;
-
-  /* Reset HSEBYP bit */
-  RCC->CR &= (uint32_t)0xFFFBFFFF;
-
-  /* Reset PLLSRC, PLLXTPRE and PLLMUL[3:0] bits */
-  RCC->CFGR &= (uint32_t)0xFFC0FFFF;
-
-  /* Reset PREDIV1[3:0] bits */
-  RCC->CFGR2 &= (uint32_t)0xFFFFFFF0;
-
-  /* Reset USARTSW[1:0], I2CSW, CECSW and ADCSW bits */
-  RCC->CFGR3 &= (uint32_t)0xFFFFFEAC;
-
-  /* Reset HSI14 bit */
-  RCC->CR2 &= (uint32_t)0xFFFFFFFE;
-
-  /* Disable all interrupts */
-  RCC->CIR = 0x00000000;
-
-  /* Configure the System clock frequency, AHB/APBx prescalers and Flash settings */
-  SetSysClock();
-}
-
-/**
-  * @brief  Update SystemCoreClock according to Clock Register Values
-  *         The SystemCoreClock variable contains the core clock (HCLK), it can
-  *         be used by the user application to setup the SysTick timer or configure
-  *         other parameters.
-  *
-  * @note   Each time the core clock (HCLK) changes, this function must be called
-  *         to update SystemCoreClock variable value. Otherwise, any configuration
-  *         based on this variable will be incorrect.         
-  *
-  * @note   - The system frequency computed by this function is not the real 
-  *           frequency in the chip. It is calculated based on the predefined 
-  *           constant and the selected clock source:
-  *
-  *           - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
-  *                                              
-  *           - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
-  *                          
-  *           - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
-  *             or HSI_VALUE(*) multiplied/divided by the PLL factors.
-  *
-  *         (*) HSI_VALUE is a constant defined in stm32f0xx.h file (default value
-  *             8 MHz) but the real value may vary depending on the variations
-  *             in voltage and temperature.
-  *
-  *         (**) HSE_VALUE is a constant defined in stm32f0xx.h file (default value
-  *              8 MHz), user has to ensure that HSE_VALUE is same as the real
-  *              frequency of the crystal used. Otherwise, this function may
-  *              have wrong result.
-  *
-  *         - The result of this function could be not correct when using fractional
-  *           value for HSE crystal.
-  * @param  None
-  * @retval None
-  */
-void SystemCoreClockUpdate (void)
-{
-  uint32_t tmp = 0, pllmull = 0, pllsource = 0, prediv1factor = 0;
-
-  /* Get SYSCLK source -------------------------------------------------------*/
-  tmp = RCC->CFGR & RCC_CFGR_SWS;
-  
-  switch (tmp)
-  {
-    case 0x00:  /* HSI used as system clock */
-      SystemCoreClock = HSI_VALUE;
-      break;
-    case 0x04:  /* HSE used as system clock */
-      SystemCoreClock = HSE_VALUE;
-      break;
-    case 0x08:  /* PLL used as system clock */
-      /* Get PLL clock source and multiplication factor ----------------------*/
-      pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
-      pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
-      pllmull = ( pllmull >> 18) + 2;
-      
-      if (pllsource == 0x00)
-      {
-        /* HSI oscillator clock divided by 2 selected as PLL clock entry */
-        SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
-      }
-      else
-      {
-        prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1;
-        /* HSE oscillator clock selected as PREDIV1 clock entry */
-        SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; 
-      }      
-      break;
-    default: /* HSI used as system clock */
-      SystemCoreClock = HSI_VALUE;
-      break;
-  }
-  /* Compute HCLK clock frequency ----------------*/
-  /* Get HCLK prescaler */
-  tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
-  /* HCLK clock frequency */
-  SystemCoreClock >>= tmp;  
-}
-
-/**
-  * @brief  Configures the System clock frequency, AHB/APBx prescalers and Flash
-  *         settings.
-  * @note   This function should be called only once the RCC clock configuration
-  *         is reset to the default reset state (done in SystemInit() function).
-  * @param  None
-  * @retval None
-  */
-static void SetSysClock(void)
-{
-/******************************************************************************/
-/*            PLL (clocked by HSI) used as System clock source                */
-/******************************************************************************/
-
-  /* At this stage the HSI is already enabled and used as System clock source */
-  
-  /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/
-
-    /* Enable Prefetch Buffer and set Flash Latency */
-    FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;
-
-     /* HCLK = SYSCLK / 1 */
-     RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
-       
-     /* PCLK = HCLK / 1 */
-     RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;
-
-  /* PLL configuration */
-    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
-    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_Div2 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL12);
-            
-  /* Enable PLL */
-  RCC->CR |= RCC_CR_PLLON;
-
-  /* Wait till PLL is ready */
-  while((RCC->CR & RCC_CR_PLLRDY) == 0)
-  {
-  }
-
-  /* Select PLL as system clock source */
-  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
-  RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;    
-
-  /* Wait till PLL is used as system clock source */
-  while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
-  {
-  }
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/attic/NHC-Link042/User/usb_bsp.c b/attic/NHC-Link042/User/usb_bsp.c
deleted file mode 100644
index 287fec8..0000000
--- a/attic/NHC-Link042/User/usb_bsp.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_bsp.c
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   This file Provides Device Core configuration Functions
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_bsp.h"
-#include "config.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-#if defined USB_CLOCK_SOURCE_CRS
- static void CRS_Config(void);
-#endif /* USB_CLOCK_SOURCE_CRS */
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  Initialize BSP configurations
-  * @param  None
-  * @retval None
-  */
-
-void USB_BSP_Init(USB_CORE_HANDLE *pdev)
-{
-  //EXTI_InitTypeDef EXTI_InitStructure;
-
-  /* Enable USB clock */
-  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);
-  
-#if defined USB_CLOCK_SOURCE_CRS
-  
-  /*For using CRS, you need to do the following:
-  - Enable HSI48 (managed by the SystemInit() function at the application startup)
-  - Select HSI48 as USB clock
-  - Enable CRS clock
-  - Set AUTOTRIMEN
-  - Set CEN
-  */
-  
-  /* Select HSI48 as USB clock */
-  RCC_USBCLKConfig(RCC_USBCLK_HSI48);
-  
-  /* Configure the Clock Recovery System */
-  CRS_Config();  
-#else 
-  /* Configure PLL to be used as USB clock:
-     - Enable HSE external clock (for this example the system is clocked by HSI48
-       managed by the SystemInit() function at the application startup)
-     - Enable PLL
-     - Select PLL as USB clock */
-  /* Enable HSE */
-  RCC_HSEConfig(RCC_HSE_ON);
-  
-  /* Wait till HSE is ready */
-  while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET)
-  {}
-  
-  /* Enable PLL */
-  RCC_PLLCmd(ENABLE);
-  
-  /* Wait till PLL is ready */
-  while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
-  {}
-  
-  /* Configure USBCLK from PLL clock */
-  RCC_USBCLKConfig(RCC_USBCLK_PLLCLK); 
-#endif /*USB_CLOCK_SOURCE_CRS */ 
-  
-  /* Configure the Tamper button in EXTI mode */
-  //STM_EVAL_PBInit(BUTTON_TAMPER, Mode_EXTI);
-  //----------------------------------------------------------------------------
-	//ngo hung cuong
-  /* Configure Tamper EXTI line to generate an interrupt on rising & falling edges */ 
-  /*
-	  EXTI_InitStructure.EXTI_Line = TAMPER_BUTTON_EXTI_LINE;
-  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
-  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
-  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
-  EXTI_Init(&EXTI_InitStructure);
-  */
-  /* Clear the Tamper EXTI line pending bit */
-  EXTI_ClearITPendingBit(TAMPER_BUTTON_EXTI_LINE);
-  
-#ifdef USB_DEVICE_LOW_PWR_MGMT_SUPPORT  
-  
-  /* Enable the PWR clock */
-  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
-  
-  /* EXTI line 18 is connected to the USB Wakeup from suspend event   */
-  EXTI_ClearITPendingBit(EXTI_Line18);
-  EXTI_InitStructure.EXTI_Line = EXTI_Line18; 
-  /*Must Configure the EXTI Line 18 to be sensitive to rising edge*/
-  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
-  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
-  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
-  EXTI_Init(&EXTI_InitStructure);
-#endif /*USB_DEVICE_LOW_PWR_MGMT_SUPPORT */
-  
-}
-
-void USB_BSP_DevConnect(USB_CORE_HANDLE *pdev) {
-	//khoi tao chan keo USB
-}
-
-
-/**
-  * @brief  Enable USB Global interrupt
-  * @param  None
-  * @retval None
-  */
-void USB_BSP_EnableInterrupt(USB_CORE_HANDLE *pdev)
-{
-  NVIC_InitTypeDef NVIC_InitStructure;
-  
-    /* Enable the USB interrupt */
-  NVIC_InitStructure.NVIC_IRQChannel = USB_IRQn;
-  NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  NVIC_Init(&NVIC_InitStructure);
-  
-    /* Enable the Tamper EXTI line Interrupt */
-  NVIC_InitStructure.NVIC_IRQChannel = TAMPER_BUTTON_EXTI_IRQn;
-  NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  NVIC_Init(&NVIC_InitStructure);
-  
-    /* Enable the DMA1 Channel1 Interrupt */
-  NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
-  NVIC_InitStructure.NVIC_IRQChannelPriority = 2;
-  NVIC_Init(&NVIC_InitStructure);
-}
-
-#if defined USB_CLOCK_SOURCE_CRS
-
-/**
-  * @brief  Configure CRS peripheral to automatically trim the HSI 
-  *         oscillator according to USB SOF
-  * @param  None
-  * @retval None
-  */
-static void CRS_Config(void)
-{ 
-  /*Enable CRS Clock*/
-  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CRS, ENABLE);
-  
-  /* Select USB SOF as synchronization source */
-  CRS_SynchronizationSourceConfig(CRS_SYNCSource_USB);
-  
-  /*Enables the automatic hardware adjustment of TRIM bits: AUTOTRIMEN:*/
-  CRS_AutomaticCalibrationCmd(ENABLE);
-  
-  /*Enables the oscillator clock for frequency error counter CEN*/
-  CRS_FrequencyErrorCounterCmd(ENABLE);
-}
-#endif
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/usb_conf.h b/attic/NHC-Link042/User/usb_conf.h
deleted file mode 100644
index da72e7b..0000000
--- a/attic/NHC-Link042/User/usb_conf.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usb_conf.h
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   General low level driver configuration
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USB_CONF__H__
-#define __USB_CONF__H__
-
-/* Includes ------------------------------------------------------------------*/
-
-#include "stm32f0xx.h"
-//#include "stm32072b_eval.h"
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-/* Select D+ pullup: internal or external */
-#ifdef USE_STM32072B_EVAL
- /* When using STM32072B_EVAL board the internal pullup must be enabled */
- //#define INTERNAL_PULLUP
- //chu y da thay doi cho nay
- //vi dung tro treo ngoai nen khong can cho nay
- //=================================================
-#endif
-
-/* Define if Low power mode is enabled; it allows entering the device into STOP mode
-    following USB Suspend event, and wakes up after the USB wakeup event is received. */
-/* #define USB_DEVICE_LOW_PWR_MGMT_SUPPORT */
-
-/* Configure the USB clock source as HSI48 with Clock Recovery System(CRS)*/
-//#define USB_CLOCK_SOURCE_CRS
-//=======================================================================================
-//ngo hung cuong
-//=======================================================================================
-
-/* Endpoints used by the device */
-#define EP_NUM     (2)  /* EP0 + EP1 (IN/OUT) For HID */
-
-/* buffer table base address */
-#define BTABLE_ADDRESS      (0x000)
-
-/* EP0, RX/TX buffers base address */
-#define ENDP0_RX_ADDRESS   (0x40)
-#define ENDP0_TX_ADDRESS   (0x80)
-
-/* EP1 Tx buffer base address */
-#define HID_IN_TX_ADDRESS  (0x150)
-
-/* EP1 Rx buffer base address */
-#define HID_OUT_RX_ADDRESS (0x160)
-
-#define VD_IN_EP                    0x81
-#define VD_OUT_EP                   0x01
-
-#define VD_IN_PACKET                64
-#define VD_OUT_PACKET               64
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-#endif /* __USB_CONF__H__ */
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/usbd_conf.h b/attic/NHC-Link042/User/usbd_conf.h
deleted file mode 100644
index 16e1753..0000000
--- a/attic/NHC-Link042/User/usbd_conf.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_conf.h
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   USB Device configuration file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_CONF__H__
-#define __USBD_CONF__H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "usb_conf.h"
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-#define USBD_CFG_MAX_NUM           1
-#define USBD_ITF_MAX_NUM           1
-#define USB_MAX_STR_DESC_SIZ       64 
-#define USBD_SELF_POWERED               
-
-#define CUSTOMHID_SIZ_REPORT_DESC               163
-#define CUSTOMHID_SIZ_CONFIG_DESC               41
-
-#define HID_IN_EP                    0x81
-#define HID_OUT_EP                   0x01
-
-#define HID_IN_PACKET                2
-#define HID_OUT_PACKET               2
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-#endif /* __USBD_CONF__H__ */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
-
-/**
-* @}
-*/ 
-
diff --git a/attic/NHC-Link042/User/usbd_desc.c b/attic/NHC-Link042/User/usbd_desc.c
deleted file mode 100644
index f46dabf..0000000
--- a/attic/NHC-Link042/User/usbd_desc.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_desc.c
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   This file provides the USBD descriptors and string formating method.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_desc.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define USBD_VID                     0x1986
-#define USBD_PID                     0x0034
-
-#define USBD_LANGID_STRING            0x409
-#define USBD_MANUFACTURER_STRING      "Hung Cuong Electronics"
-
-#define USBD_PRODUCT_FS_STRING        "NHC-Link042"
-
-#define USBD_CONFIGURATION_FS_STRING  "NHC-Link042"
-#define USBD_INTERFACE_FS_STRING      "NHC-Link042"
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-char USBD_SERIALNUMBER_FS_STRING[26];
-
-USBD_DEVICE USR_desc =
-{
-  USBD_USR_DeviceDescriptor,
-  USBD_USR_LangIDStrDescriptor, 
-  USBD_USR_ManufacturerStrDescriptor,
-  USBD_USR_ProductStrDescriptor,
-  USBD_USR_SerialStrDescriptor,
-  USBD_USR_ConfigStrDescriptor,
-  USBD_USR_InterfaceStrDescriptor, 
-};
-
-/* USB Standard Device Descriptor */
-const uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] =
-{
-  0x12,                       /*bLength */
-  USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
-  0x00,                       /*bcdUSB */
-  0x02,
-  0x00,                       /*bDeviceClass*/
-  0x00,                       /*bDeviceSubClass*/
-  0x00,                       /*bDeviceProtocol*/
-  USB_MAX_EP0_SIZE,           /*bMaxPacketSize*/
-  LOBYTE(USBD_VID),           /*idVendor*/
-  HIBYTE(USBD_VID),           /*idVendor*/
-  LOBYTE(USBD_PID),           /*idVendor*/
-  HIBYTE(USBD_PID),           /*idVendor*/
-  0x00,                       /*bcdDevice rel. 2.00*/
-  0x02,
-  USBD_IDX_MFC_STR,           /*Index of manufacturer  string*/
-  USBD_IDX_PRODUCT_STR,       /*Index of product string*/
-  USBD_IDX_SERIAL_STR,        /*Index of serial number string*/
-  USBD_CFG_MAX_NUM            /*bNumConfigurations*/
-} ; /* USB_DeviceDescriptor */
-
-/* USB Standard Device Descriptor */
-const uint8_t USBD_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] =
-{
-  USB_LEN_DEV_QUALIFIER_DESC,
-  USB_DESC_TYPE_DEVICE_QUALIFIER,
-  0x00,
-  0x02,
-  0x00,
-  0x00,
-  0x00,
-  0x40,
-  0x01,
-  0x00,
-};
-
-/* USB Standard Device Descriptor */
-const uint8_t USBD_LangIDDesc[USB_SIZ_STRING_LANGID] =
-{
-  USB_SIZ_STRING_LANGID,         
-  USB_DESC_TYPE_STRING,       
-  LOBYTE(USBD_LANGID_STRING),
-  HIBYTE(USBD_LANGID_STRING), 
-};
-
-uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL] =
-{
-  USB_SIZ_STRING_SERIAL,       /* bLength */
-  USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType */
-  '0', 0, '9', 0, '8', 0, '9', 0, '6', 0, '9', 0, '6', 0, '9', 0, '7', 0, '1', 0
-};
-
-/* Private function prototypes -----------------------------------------------*/
-//static void IntToUnicode (uint32_t value , uint8_t *pbuf , uint8_t len);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief return the device descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer to data length variable
-  * @retval pointer to descriptor buffer
-  */
-uint8_t *  USBD_USR_DeviceDescriptor( uint8_t speed , uint16_t *length)
-{
-  *length = sizeof(USBD_DeviceDesc);
-  return (uint8_t*)USBD_DeviceDesc;
-}
-
-/**
-  * @brief  return the LangID string descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer to data length variable
-  * @retval pointer to descriptor buffer
-  */
-uint8_t *  USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  *length =  sizeof(USBD_LangIDDesc);  
-  return (uint8_t*)USBD_LangIDDesc;
-}
-
-/**
-  * @brief  return the product string descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer to data length variable
-  * @retval pointer to descriptor buffer
-  */
-uint8_t *  USBD_USR_ProductStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  USBD_GetString ( (uint8_t*)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length);    
-  return USBD_StrDesc;
-}
-
-/**
-  * @brief  return the manufacturer string descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer to data length variable
-  * @retval pointer to descriptor buffer
-  */
-uint8_t *  USBD_USR_ManufacturerStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  USBD_GetString ( (uint8_t*)USBD_MANUFACTURER_STRING, USBD_StrDesc, length);
-  return USBD_StrDesc;
-}
-
-/**
-  * @brief  return the serial number string descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer to data length variable
-  * @retval pointer to descriptor buffer
-  */
-uint8_t *  USBD_USR_SerialStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  *length = USB_SIZ_STRING_SERIAL; 
-  return USBD_StringSerial;
-}
-
-/**
-  * @brief return the configuration string descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer to data length variable
-  * @retval pointer to descriptor buffer
-  */
-uint8_t *  USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  USBD_GetString ( (uint8_t*)USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length); 
-  return USBD_StrDesc;  
-}
-
-
-/**
-  * @brief  return the interface string descriptor
-  * @param  speed : current device speed
-  * @param  length : pointer to data length variable
-  * @retval pointer to descriptor buffer
-  */
-uint8_t *  USBD_USR_InterfaceStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  USBD_GetString ( (uint8_t*)USBD_INTERFACE_FS_STRING, USBD_StrDesc, length);
-  return USBD_StrDesc;  
-}
-
-/**
-  * @brief  Create the serial number string descriptor 
-  * @param  None 
-  * @retval None
-  */
-void Get_SerialNum(void)
-{
-#if 0
-  uint32_t Device_Serial0, Device_Serial1, Device_Serial2;
-  
-  Device_Serial0 = *(uint32_t*)Device1_Identifier;
-  Device_Serial1 = *(uint32_t*)Device2_Identifier;
-  Device_Serial2 = *(uint32_t*)Device3_Identifier;
-  
-  Device_Serial0 += Device_Serial2;
-  
-  if (Device_Serial0 != 0)
-  {
-    IntToUnicode (Device_Serial0, &USBD_StringSerial[2] ,8);
-    IntToUnicode (Device_Serial1, &USBD_StringSerial[18] ,4);
-  }
-#endif	
-}
-
-/**
-  * @brief  Convert Hex 32Bits value into char 
-  * @param  value: value to convert
-  * @param  pbuf: pointer to the buffer 
-  * @param  len: buffer length
-  * @retval None
-  */
-#if 0
-static void IntToUnicode (uint32_t value , uint8_t *pbuf , uint8_t len)
-{
-  uint8_t idx = 0;
-  
-  for( idx = 0 ; idx < len ; idx ++)
-  {
-    if( ((value >> 28)) < 0xA )
-    {
-      pbuf[ 2* idx] = (value >> 28) + '0';
-    }
-    else
-    {
-      pbuf[2* idx] = (value >> 28) + 'A' - 10; 
-    }
-    
-    value = value << 4;
-    
-    pbuf[ 2* idx + 1] = 0;
-  }
-}
-#endif
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/usbd_desc.h b/attic/NHC-Link042/User/usbd_desc.h
deleted file mode 100644
index 7948aad..0000000
--- a/attic/NHC-Link042/User/usbd_desc.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_desc.h
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   header file for the usbd_desc.c file
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef __USB_DESC_H
-#define __USB_DESC_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_req.h"
-
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-#define USB_DEVICE_DESCRIPTOR_TYPE              0x01
-#define USB_CONFIGURATION_DESCRIPTOR_TYPE       0x02
-#define USB_STRING_DESCRIPTOR_TYPE              0x03
-#define USB_INTERFACE_DESCRIPTOR_TYPE           0x04
-#define USB_ENDPOINT_DESCRIPTOR_TYPE            0x05
-#define USB_SIZ_DEVICE_DESC                     18
-#define USB_SIZ_STRING_LANGID                   4
-#define USB_SIZ_STRING_SERIAL                   22
-
-#define         Device1_Identifier          (0x1FFFF7AC)
-#define         Device2_Identifier          (0x1FFFF7B0)
-#define         Device3_Identifier          (0x1FFFF7B4)
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported variables --------------------------------------------------------*/
-extern  uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ];
-extern  uint8_t USBD_OtherSpeedCfgDesc[USB_LEN_CFG_DESC]; 
-extern  USBD_DEVICE USR_desc; 
-extern  uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL];
-
-/* Exported functions ------------------------------------------------------- */
-void Get_SerialNum(void);
-uint8_t *     USBD_USR_DeviceDescriptor( uint8_t speed , uint16_t *length);
-uint8_t *     USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length);
-uint8_t *     USBD_USR_ManufacturerStrDescriptor ( uint8_t speed , uint16_t *length);
-uint8_t *     USBD_USR_ProductStrDescriptor ( uint8_t speed , uint16_t *length);
-uint8_t *     USBD_USR_SerialStrDescriptor( uint8_t speed , uint16_t *length);
-uint8_t *     USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length);
-uint8_t *     USBD_USR_InterfaceStrDescriptor( uint8_t speed , uint16_t *length);
-
-#ifdef USB_SUPPORT_USER_STRING_DESC
-uint8_t *     USBD_USR_USRStringDesc (uint8_t speed, uint8_t idx , uint16_t *length);  
-#endif /* USB_SUPPORT_USER_STRING_DESC */  
-
-#endif /* __USBD_DESC_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/usbd_pwr.c b/attic/NHC-Link042/User/usbd_pwr.c
deleted file mode 100644
index 89eecfa..0000000
--- a/attic/NHC-Link042/User/usbd_pwr.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_pwr.c
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   This file provides functions for power management
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_pwr.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-struct
-{
-  __IO RESUME_STATE eState;
-  __IO uint8_t bESOFcnt;
-}
-ResumeS;
-
- __IO uint32_t remotewakeupon=0;
- 
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  Sets suspend mode operating conditions
-  * @param  None
-  * @retval USB_SUCCESS
-  */
-void Suspend(void)
-{
-  uint16_t wCNTR;
-
-  /*Store CNTR value */
-  wCNTR = _GetCNTR();   
-  /* Set FSUSP bit in USB_CNTR register*/
-  wCNTR |= CNTR_FSUSP;
-  _SetCNTR(wCNTR);
-  
-  /* force low-power mode in the macrocell */
-  wCNTR = _GetCNTR();
-  wCNTR |= CNTR_LPMODE;
-  _SetCNTR(wCNTR);
-  
-#ifdef USB_DEVICE_LOW_PWR_MGMT_SUPPORT
-  
-  /* enter system in STOP mode, only when wakeup flag in not set */
-  if((_GetISTR()&ISTR_WKUP)==0)
-  { 
-    /*Enter STOP mode with SLEEPONEXIT*/
-    PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_SLEEPONEXIT);
-  }
-  else
-  {
-    /* Clear Wakeup flag */
-    _SetISTR(CLR_WKUP);
-    /* clear FSUSP to abort entry in suspend mode  */
-    wCNTR = _GetCNTR();
-    wCNTR&=~CNTR_FSUSP;
-    _SetCNTR(wCNTR);
-  }
-#endif
-}
-
-/**
-  * @brief  Handles wake-up restoring normal operations
-  * @param  None
-  * @retval USB_SUCCESS
-  */
-void Resume_Init(void)
-{
-  uint16_t wCNTR;
-  
-  /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */
-  /* restart the clocks */
-  /* ...  */
-
-  /* CNTR_LPMODE = 0 */
-  wCNTR = _GetCNTR();
-  wCNTR &= (~CNTR_LPMODE);
-  _SetCNTR(wCNTR);    
-#ifdef USB_DEVICE_LOW_PWR_MGMT_SUPPORT   
-  /* restore full power */
-  /* ... on connected devices */
-  Leave_LowPowerMode();
-#endif
-  /* reset FSUSP bit */
-  _SetCNTR(IMR_MSK);
-
-}
-
-
-/**
-  * @brief  Provides the state machine handling resume operations and
-  *         timing sequence. The control is based on the Resume structure
-  *         variables and on the ESOF interrupt calling this subroutine
-  *         without changing machine state.
-  * @param  a state machine value (RESUME_STATE)
-  *         RESUME_ESOF doesn't change ResumeS.eState allowing
-  *         decrementing of the ESOF counter in different states.
-  * @retval Status
-  */
-void Resume(RESUME_STATE eResumeSetVal)
-{
- uint16_t wCNTR;
-
-  if (eResumeSetVal != RESUME_ESOF)
-    ResumeS.eState = eResumeSetVal;
-  switch (ResumeS.eState)
-  {
-    case RESUME_EXTERNAL:
-      
-if (remotewakeupon ==0)
-      {
-        Resume_Init();
-        ResumeS.eState = RESUME_OFF;
-      }
-      else /* RESUME detected during the RemoteWAkeup signalling => keep RemoteWakeup handling*/
-      {
-        ResumeS.eState = RESUME_ON;
-      }
-      break;
-    case RESUME_INTERNAL:
-      Resume_Init();
-      ResumeS.eState = RESUME_START;
-      remotewakeupon = 1;
-      break;
-    case RESUME_LATER:
-      ResumeS.bESOFcnt = 2;
-      ResumeS.eState = RESUME_WAIT;
-      break;
-    case RESUME_WAIT:
-      ResumeS.bESOFcnt--;
-      if (ResumeS.bESOFcnt == 0)
-        ResumeS.eState = RESUME_START;
-      break;
-    case RESUME_START:
-      wCNTR = _GetCNTR();
-      wCNTR |= CNTR_RESUME;
-      _SetCNTR(wCNTR);
-      ResumeS.eState = RESUME_ON;
-      ResumeS.bESOFcnt = 10;
-      break;
-    case RESUME_ON:    
-      ResumeS.bESOFcnt--;
-      if (ResumeS.bESOFcnt == 0)
-      {
-        wCNTR = _GetCNTR();
-        wCNTR &= (~CNTR_RESUME);
-        _SetCNTR(wCNTR);
-        ResumeS.eState = RESUME_OFF;
-        remotewakeupon = 0;
-      }
-      break;
-    case RESUME_OFF:
-    case RESUME_ESOF:
-    default:
-      ResumeS.eState = RESUME_OFF;
-      break;
-  }
-}
-
-/**
-  * @brief  Restores system clocks and power while exiting suspend mode
-  * @param  None
-  * @retval None
-  */
-void Leave_LowPowerMode(void)
-{
-#if defined USB_CLOCK_SOURCE_CRS
-  /* Enable HSI48 oscillator */
-  RCC_HSI48Cmd(ENABLE);
-  
-  /* Wait till HSI48RDYF is set */
-  while(RCC_GetFlagStatus(RCC_FLAG_HSI48RDY) == RESET)
-  {
-  }
-  /* Select HSI48 as system clock source */
-  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI48);
-  
-#else
-
-  /* After wake-up from STOP mode restore system clock (system clock = PLL clock
-  from HSE source )*/
-  /* Enable HSE */
-  RCC_HSEConfig(RCC_HSE_ON);
-  
-  /* Wait till HSE is ready */
-  while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET)
-  {}
-  
-  /* Enable PLL */
-  RCC_PLLCmd(ENABLE);
-  
-  /* Wait till PLL is ready */
-  while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
-  {}
-  
-  /* Select PLL as system clock source */
-  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
-  
-  /* Wait till PLL is used as system clock source */
-  while (RCC_GetSYSCLKSource() != 0x08)
-  {} 
-#endif /* USB_CLOCK_SOURCE_CRS */
-  
-  /*Low Power Sleep on Exit Disabled*/
-  NVIC_SystemLPConfig(NVIC_LP_SLEEPONEXIT, DISABLE);
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/NHC-Link042/User/usbd_usr.c b/attic/NHC-Link042/User/usbd_usr.c
deleted file mode 100644
index 1aa74a5..0000000
--- a/attic/NHC-Link042/User/usbd_usr.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_usr.c
-  * @author  MCD Application Team
-  * @version V1.0.0
-  * @date    31-January-2014
-  * @brief   This file contains user callback structure for USB events Management
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_usr.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-//#define ADC1_DR_Address    0x40012440
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-
-USBD_Usr_cb_TypeDef USR_cb =
-{
-  USBD_USR_Init,
-  USBD_USR_DeviceReset,
-  USBD_USR_DeviceConfigured,
-  USBD_USR_DeviceSuspended,
-  USBD_USR_DeviceResumed,   
-};
-
-//uint32_t ADC_ConvertedValueX = 0;
-//uint32_t ADC_ConvertedValueX_1 = 0;
-
-/* Private function prototypes -----------------------------------------------*/
-//static void ADC_Configuration(void);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-  * @brief  Device lib initialization
-  * @param  None
-  * @retval None
-  */
-void USBD_USR_Init(void)
-{   
-  /* Initialize LEDs */
-  //STM_EVAL_LEDInit(LED1);
-  //STM_EVAL_LEDInit(LED2);
-  //STM_EVAL_LEDInit(LED3);
-  //STM_EVAL_LEDInit(LED4);
-  
-  /* Configure the ADC*/
-  //ADC_Configuration();
-  
-}
-
-/**
-  * @brief  Reset Event
-  * @param  speed : device speed
-  * @retval None
-  */
-void USBD_USR_DeviceReset(uint8_t speed )
-{
-}
-
-/**
-  * @brief  Configuration Event
-  * @param  None
-  * @retval None
-  */
-void USBD_USR_DeviceConfigured (void)
-{
-}
-
-/**
-  * @brief  Device suspend Event
-  * @param  None
-  * @retval None
-  */
-void USBD_USR_DeviceSuspended(void)
-{
-}
-
-
-/**
-  * @brief  Device resume Event
-  * @param  None
-  * @retval None
-  */
-void USBD_USR_DeviceResumed(void)
-{
-}
-
-/**
-  * @brief  ADC_Configuration
-*         Configure the ADC
-  * @param  None
-  * @retval None
-  */
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/attic/ch32v003evt/LICENSE b/attic/ch32v003evt/LICENSE
deleted file mode 100644
index e637ef0..0000000
--- a/attic/ch32v003evt/LICENSE
+++ /dev/null
@@ -1,12 +0,0 @@
-All documents from WCH are under the following license.  This works for any of
-their code.  I've done the best I can to extract only the definitions to put into
-this folder, but depending on jurisdiction, the code in this folder may actually
-taint MIT or BSD licsned code.
-
-/********************************** (C) COPYRIGHT  *******************************
- * Author             : WCH
- *********************************************************************************
- * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
- * Attention: This software (modified or not) and binary are used for 
- * microcontroller manufactured by Nanjing Qinheng Microelectronics.
- *******************************************************************************/
diff --git a/attic/ch32v003evt/ch32v003.ld b/attic/ch32v003evt/ch32v003.ld
deleted file mode 100644
index d3d2728..0000000
--- a/attic/ch32v003evt/ch32v003.ld
+++ /dev/null
@@ -1,159 +0,0 @@
-ENTRY( InterruptVector )
-
-__stack_size = 256;
-
-PROVIDE( _stack_size = __stack_size );
-
-MEMORY
-{
-	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 16K
-	RAM (xrw)  : ORIGIN = 0x20000000, LENGTH = 2K
-}
-
-SECTIONS
-{
-    .init :
-    { 
-      _sinit = .;
-      . = ALIGN(4);
-      KEEP(*(SORT_NONE(.init)))
-      . = ALIGN(4);
-      _einit = .;
-    } >FLASH AT>FLASH
-
-    .text :
-    {
-      . = ALIGN(4);
-      *(.text)
-      *(.text.*)
-      *(.rodata)
-      *(.rodata*)
-      *(.gnu.linkonce.t.*)
-      . = ALIGN(4);
-    } >FLASH AT>FLASH 
-
-    .fini :
-    {
-      KEEP(*(SORT_NONE(.fini)))
-      . = ALIGN(4);
-    } >FLASH AT>FLASH
-
-    PROVIDE( _etext = . );
-    PROVIDE( _eitcm = . );  
-
-    .preinit_array :
-    {
-      PROVIDE_HIDDEN (__preinit_array_start = .);
-      KEEP (*(.preinit_array))
-      PROVIDE_HIDDEN (__preinit_array_end = .);
-    } >FLASH AT>FLASH 
-  
-    .init_array :
-    {
-      PROVIDE_HIDDEN (__init_array_start = .);
-      KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
-      KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
-      PROVIDE_HIDDEN (__init_array_end = .);
-    } >FLASH AT>FLASH 
-  
-    .fini_array :
-    {
-      PROVIDE_HIDDEN (__fini_array_start = .);
-      KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
-      KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
-      PROVIDE_HIDDEN (__fini_array_end = .);
-    } >FLASH AT>FLASH 
-  
-    .ctors :
-    {
-      /* gcc uses crtbegin.o to find the start of
-         the constructors, so we make sure it is
-         first.  Because this is a wildcard, it
-         doesn't matter if the user does not
-         actually link against crtbegin.o; the
-         linker won't look for a file to match a
-         wildcard.  The wildcard also means that it
-         doesn't matter which directory crtbegin.o
-         is in.  */
-      KEEP (*crtbegin.o(.ctors))
-      KEEP (*crtbegin?.o(.ctors))
-      /* We don't want to include the .ctor section from
-         the crtend.o file until after the sorted ctors.
-         The .ctor section from the crtend file contains the
-         end of ctors marker and it must be last */
-      KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
-      KEEP (*(SORT(.ctors.*)))
-      KEEP (*(.ctors))
-    } >FLASH AT>FLASH 
-  
-    .dtors :
-    {
-      KEEP (*crtbegin.o(.dtors))
-      KEEP (*crtbegin?.o(.dtors))
-      KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
-      KEEP (*(SORT(.dtors.*)))
-      KEEP (*(.dtors))
-    } >FLASH AT>FLASH 
-
-    .dalign :
-    {
-      . = ALIGN(4);
-      PROVIDE(_data_vma = .);
-    } >RAM AT>FLASH  
-
-    .dlalign :
-    {
-      . = ALIGN(4); 
-      PROVIDE(_data_lma = .);
-    } >FLASH AT>FLASH
-
-    .data :
-    {
-      . = ALIGN(4);
-      *(.gnu.linkonce.r.*)
-      *(.data .data.*)
-      *(.gnu.linkonce.d.*)
-      . = ALIGN(8);
-      PROVIDE( __global_pointer$ = . + 0x800 );
-      *(.sdata .sdata.*)
-      *(.sdata2*)
-      *(.gnu.linkonce.s.*)
-      . = ALIGN(8);
-      *(.srodata.cst16)
-      *(.srodata.cst8)
-      *(.srodata.cst4)
-      *(.srodata.cst2)
-      *(.srodata .srodata.*)
-      . = ALIGN(4);
-      PROVIDE( _edata = .);
-    } >RAM AT>FLASH
-
-    .bss :
-    {
-      . = ALIGN(4);
-      PROVIDE( _sbss = .);
-      *(.sbss*)
-      *(.gnu.linkonce.sb.*)
-      *(.bss*)
-      *(.gnu.linkonce.b.*)    
-      *(COMMON*)
-      . = ALIGN(4);
-      PROVIDE( _ebss = .);
-    } >RAM AT>FLASH
-
-    PROVIDE( _end = _ebss);
-	PROVIDE( end = . );
-
-	.stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
-	{
-	    PROVIDE( _heap_end = . );
-	    . = ALIGN(4);
-	    PROVIDE(_susrstack = . );
-	    . = . + __stack_size;
-	    PROVIDE( _eusrstack = .);
-	} >RAM 
-	
-}
-
-
-
diff --git a/attic/ch32v003evt/ch32v00x.h b/attic/ch32v003evt/ch32v00x.h
deleted file mode 100644
index 915968b..0000000
--- a/attic/ch32v003evt/ch32v00x.h
+++ /dev/null
@@ -1,2402 +0,0 @@
-/********************************** (C) COPYRIGHT  *******************************
- * File Name          : ch32v00x.h
- * Author             : WCH
- * Version            : V1.0.0
- * Date               : 2022/08/08
- * Description        : CH32V00x Device Peripheral Access Layer Header File.
- *********************************************************************************
- * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
- * Attention: This software (modified or not) and binary are used for 
- * microcontroller manufactured by Nanjing Qinheng Microelectronics.
- *******************************************************************************/
-#ifndef __CH32V00x_H
-#define __CH32V00x_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define __MPU_PRESENT             0  /* Other CH32 devices does not provide an MPU */
-#define __Vendor_SysTickConfig    0  /* Set to 1 if different SysTick Config is used */
-
-#define HSE_VALUE                 ((uint32_t)24000000) /* Value of the External oscillator in Hz */
-
-/* In the following line adjust the External High Speed oscillator (HSE) Startup Timeout value */
-#define HSE_STARTUP_TIMEOUT       ((uint16_t)0x2000) /* Time out for HSE start up */
-
-#define HSI_VALUE                 ((uint32_t)24000000) /* Value of the Internal oscillator in Hz */
-
-
-/* Interrupt Number Definition, according to the selected device */
-typedef enum IRQn
-{
-    /******  RISC-V Processor Exceptions Numbers *******************************************************/
-    NonMaskableInt_IRQn = 2, /* 2 Non Maskable Interrupt                             */
-    EXC_IRQn = 3,            /* 3 Exception Interrupt                                */
-    SysTicK_IRQn = 12,       /* 12 System timer Interrupt                            */
-    Software_IRQn = 14,      /* 14 software Interrupt                                */
-
-    /******  RISC-V specific Interrupt Numbers *********************************************************/
-    WWDG_IRQn = 16,          /* Window WatchDog Interrupt                            */
-    PVD_IRQn = 17,           /* PVD through EXTI Line detection Interrupt            */
-    FLASH_IRQn = 18,         /* FLASH global Interrupt                               */
-    RCC_IRQn = 19,           /* RCC global Interrupt                                 */
-    EXTI7_0_IRQn = 20,       /* External Line[7:0] Interrupts                        */
-    AWU_IRQn = 21,           /* AWU global Interrupt                                 */
-    DMA1_Channel1_IRQn = 22, /* DMA1 Channel 1 global Interrupt                      */
-    DMA1_Channel2_IRQn = 23, /* DMA1 Channel 2 global Interrupt                      */
-    DMA1_Channel3_IRQn = 24, /* DMA1 Channel 3 global Interrupt                      */
-    DMA1_Channel4_IRQn = 25, /* DMA1 Channel 4 global Interrupt                      */
-    DMA1_Channel5_IRQn = 26, /* DMA1 Channel 5 global Interrupt                      */
-    DMA1_Channel6_IRQn = 27, /* DMA1 Channel 6 global Interrupt                      */
-    DMA1_Channel7_IRQn = 28, /* DMA1 Channel 7 global Interrupt                      */
-    ADC_IRQn = 29,           /* ADC global Interrupt                                 */
-    I2C1_EV_IRQn = 30,       /* I2C1 Event Interrupt                                 */
-    I2C1_ER_IRQn = 31,       /* I2C1 Error Interrupt                                 */
-    USART1_IRQn = 32,        /* USART1 global Interrupt                              */
-    SPI1_IRQn = 33,          /* SPI1 global Interrupt                                */
-    TIM1_BRK_IRQn = 34,      /* TIM1 Break Interrupt                                 */
-    TIM1_UP_IRQn = 35,       /* TIM1 Update Interrupt                                */
-    TIM1_TRG_COM_IRQn = 36,  /* TIM1 Trigger and Commutation Interrupt               */
-    TIM1_CC_IRQn = 37,       /* TIM1 Capture Compare Interrupt                       */
-    TIM2_IRQn = 38,          /* TIM2 global Interrupt                                */
-
-} IRQn_Type;
-
-#define HardFault_IRQn    EXC_IRQn
-
-#include <stdint.h>
-#include <core_riscv.h>
-#include <system_ch32v00x.h>
-
-/* Standard Peripheral Library old definitions (maintained for legacy purpose) */
-#define HSI_Value             HSI_VALUE
-#define HSE_Value             HSE_VALUE
-#define HSEStartUp_TimeOut    HSE_STARTUP_TIMEOUT
-
-/* Analog to Digital Converter */
-typedef struct
-{
-    __IO uint32_t STATR;
-    __IO uint32_t CTLR1;
-    __IO uint32_t CTLR2;
-    __IO uint32_t SAMPTR1;
-    __IO uint32_t SAMPTR2;
-    __IO uint32_t IOFR1;
-    __IO uint32_t IOFR2;
-    __IO uint32_t IOFR3;
-    __IO uint32_t IOFR4;
-    __IO uint32_t WDHTR;
-    __IO uint32_t WDLTR;
-    __IO uint32_t RSQR1;
-    __IO uint32_t RSQR2;
-    __IO uint32_t RSQR3;
-    __IO uint32_t ISQR;
-    __IO uint32_t IDATAR1;
-    __IO uint32_t IDATAR2;
-    __IO uint32_t IDATAR3;
-    __IO uint32_t IDATAR4;
-    __IO uint32_t RDATAR;
-    __IO uint32_t DLYR;
-} ADC_TypeDef;
-
-/* Debug MCU */
-typedef struct
-{
-    __IO uint32_t CFGR0;
-    __IO uint32_t CFGR1;
-} DBGMCU_TypeDef;
-
-/* DMA Controller */
-typedef struct
-{
-    __IO uint32_t CFGR;
-    __IO uint32_t CNTR;
-    __IO uint32_t PADDR;
-    __IO uint32_t MADDR;
-} DMA_Channel_TypeDef;
-
-typedef struct
-{
-    __IO uint32_t INTFR;
-    __IO uint32_t INTFCR;
-} DMA_TypeDef;
-
-/* External Interrupt/Event Controller */
-typedef struct
-{
-    __IO uint32_t INTENR;
-    __IO uint32_t EVENR;
-    __IO uint32_t RTENR;
-    __IO uint32_t FTENR;
-    __IO uint32_t SWIEVR;
-    __IO uint32_t INTFR;
-} EXTI_TypeDef;
-
-/* FLASH Registers */
-typedef struct
-{
-    __IO uint32_t ACTLR;
-    __IO uint32_t KEYR;
-    __IO uint32_t OBKEYR;
-    __IO uint32_t STATR;
-    __IO uint32_t CTLR;
-    __IO uint32_t ADDR;
-    __IO uint32_t RESERVED;
-    __IO uint32_t OBR;
-    __IO uint32_t WPR;
-    __IO uint32_t MODEKEYR;
-    __IO uint32_t BOOT_MODEKEYR;
-} FLASH_TypeDef;
-
-/* Option Bytes Registers */
-typedef struct
-{
-    __IO uint16_t RDPR;
-    __IO uint16_t USER;
-    __IO uint16_t Data0;
-    __IO uint16_t Data1;
-    __IO uint16_t WRPR0;
-    __IO uint16_t WRPR1;
-} OB_TypeDef;
-
-/* General Purpose I/O */
-typedef struct
-{
-    __IO uint32_t CFGLR;
-    __IO uint32_t CFGHR;
-    __IO uint32_t INDR;
-    __IO uint32_t OUTDR;
-    __IO uint32_t BSHR;
-    __IO uint32_t BCR;
-    __IO uint32_t LCKR;
-} GPIO_TypeDef;
-
-/* Alternate Function I/O */
-typedef struct
-{
-    uint32_t RESERVED0;
-    __IO uint32_t PCFR1;
-    __IO uint32_t EXTICR;
-} AFIO_TypeDef;
-
-/* Inter Integrated Circuit Interface */
-typedef struct
-{
-    __IO uint16_t CTLR1;
-    uint16_t      RESERVED0;
-    __IO uint16_t CTLR2;
-    uint16_t      RESERVED1;
-    __IO uint16_t OADDR1;
-    uint16_t      RESERVED2;
-    __IO uint16_t OADDR2;
-    uint16_t      RESERVED3;
-    __IO uint16_t DATAR;
-    uint16_t      RESERVED4;
-    __IO uint16_t STAR1;
-    uint16_t      RESERVED5;
-    __IO uint16_t STAR2;
-    uint16_t      RESERVED6;
-    __IO uint16_t CKCFGR;
-    uint16_t      RESERVED7;
-} I2C_TypeDef;
-
-/* Independent WatchDog */
-typedef struct
-{
-    __IO uint32_t CTLR;
-    __IO uint32_t PSCR;
-    __IO uint32_t RLDR;
-    __IO uint32_t STATR;
-} IWDG_TypeDef;
-
-/* Power Control */
-typedef struct
-{
-    __IO uint32_t CTLR;
-    __IO uint32_t CSR;
-    __IO uint32_t AWUCSR;
-    __IO uint32_t AWUWR;
-    __IO uint32_t AWUPSC;
-} PWR_TypeDef;
-
-/* Reset and Clock Control */
-typedef struct
-{
-    __IO uint32_t CTLR;
-    __IO uint32_t CFGR0;
-    __IO uint32_t INTR;
-    __IO uint32_t APB2PRSTR;
-    __IO uint32_t APB1PRSTR;
-    __IO uint32_t AHBPCENR;
-    __IO uint32_t APB2PCENR;
-    __IO uint32_t APB1PCENR;
-    __IO uint32_t RESERVED0;
-    __IO uint32_t RSTSCKR;
-} RCC_TypeDef;
-
-/* Serial Peripheral Interface */
-typedef struct
-{
-    __IO uint16_t CTLR1;
-    uint16_t      RESERVED0;
-    __IO uint16_t CTLR2;
-    uint16_t      RESERVED1;
-    __IO uint16_t STATR;
-    uint16_t      RESERVED2;
-    __IO uint16_t DATAR;
-    uint16_t      RESERVED3;
-    __IO uint16_t CRCR;
-    uint16_t      RESERVED4;
-    __IO uint16_t RCRCR;
-    uint16_t      RESERVED5;
-    __IO uint16_t TCRCR;
-    uint16_t      RESERVED6;
-    uint32_t      RESERVED7;
-    uint32_t      RESERVED8;
-    __IO uint16_t HSCR;
-    uint16_t      RESERVED9;
-} SPI_TypeDef;
-
-/* TIM */
-typedef struct
-{
-    __IO uint16_t CTLR1;
-    uint16_t      RESERVED0;
-    __IO uint16_t CTLR2;
-    uint16_t      RESERVED1;
-    __IO uint16_t SMCFGR;
-    uint16_t      RESERVED2;
-    __IO uint16_t DMAINTENR;
-    uint16_t      RESERVED3;
-    __IO uint16_t INTFR;
-    uint16_t      RESERVED4;
-    __IO uint16_t SWEVGR;
-    uint16_t      RESERVED5;
-    __IO uint16_t CHCTLR1;
-    uint16_t      RESERVED6;
-    __IO uint16_t CHCTLR2;
-    uint16_t      RESERVED7;
-    __IO uint16_t CCER;
-    uint16_t      RESERVED8;
-    __IO uint16_t CNT;
-    uint16_t      RESERVED9;
-    __IO uint16_t PSC;
-    uint16_t      RESERVED10;
-    __IO uint16_t ATRLR;
-    uint16_t      RESERVED11;
-    __IO uint16_t RPTCR;
-    uint16_t      RESERVED12;
-    __IO uint32_t CH1CVR;
-    __IO uint32_t CH2CVR;
-    __IO uint32_t CH3CVR;
-    __IO uint32_t CH4CVR;
-    __IO uint16_t BDTR;
-    uint16_t      RESERVED13;
-    __IO uint16_t DMACFGR;
-    uint16_t      RESERVED14;
-    __IO uint16_t DMAADR;
-    uint16_t      RESERVED15;
-} TIM_TypeDef;
-
-/* Universal Synchronous Asynchronous Receiver Transmitter */
-typedef struct
-{
-    __IO uint16_t STATR;
-    uint16_t      RESERVED0;
-    __IO uint16_t DATAR;
-    uint16_t      RESERVED1;
-    __IO uint16_t BRR;
-    uint16_t      RESERVED2;
-    __IO uint16_t CTLR1;
-    uint16_t      RESERVED3;
-    __IO uint16_t CTLR2;
-    uint16_t      RESERVED4;
-    __IO uint16_t CTLR3;
-    uint16_t      RESERVED5;
-    __IO uint16_t GPR;
-    uint16_t      RESERVED6;
-} USART_TypeDef;
-
-/* Window WatchDog */
-typedef struct
-{
-    __IO uint32_t CTLR;
-    __IO uint32_t CFGR;
-    __IO uint32_t STATR;
-} WWDG_TypeDef;
-
-/* Enhanced Registers */
-typedef struct
-{
-    __IO uint32_t EXTEN_CTR;
-} EXTEN_TypeDef;
-
-/* Peripheral memory map */
-#define FLASH_BASE                              ((uint32_t)0x08000000) /* FLASH base address in the alias region */
-#define SRAM_BASE                               ((uint32_t)0x20000000) /* SRAM base address in the alias region */
-#define PERIPH_BASE                             ((uint32_t)0x40000000) /* Peripheral base address in the alias region */
-
-#define APB1PERIPH_BASE                         (PERIPH_BASE)
-#define APB2PERIPH_BASE                         (PERIPH_BASE + 0x10000)
-#define AHBPERIPH_BASE                          (PERIPH_BASE + 0x20000)
-
-#define TIM2_BASE                               (APB1PERIPH_BASE + 0x0000)
-#define WWDG_BASE                               (APB1PERIPH_BASE + 0x2C00)
-#define IWDG_BASE                               (APB1PERIPH_BASE + 0x3000)
-#define I2C1_BASE                               (APB1PERIPH_BASE + 0x5400)
-#define PWR_BASE                                (APB1PERIPH_BASE + 0x7000)
-
-#define AFIO_BASE                               (APB2PERIPH_BASE + 0x0000)
-#define EXTI_BASE                               (APB2PERIPH_BASE + 0x0400)
-#define GPIOA_BASE                              (APB2PERIPH_BASE + 0x0800)
-#define GPIOC_BASE                              (APB2PERIPH_BASE + 0x1000)
-#define GPIOD_BASE                              (APB2PERIPH_BASE + 0x1400)
-#define ADC1_BASE                               (APB2PERIPH_BASE + 0x2400)
-#define TIM1_BASE                               (APB2PERIPH_BASE + 0x2C00)
-#define SPI1_BASE                               (APB2PERIPH_BASE + 0x3000)
-#define USART1_BASE                             (APB2PERIPH_BASE + 0x3800)
-
-#define DMA1_BASE                               (AHBPERIPH_BASE + 0x0000)
-#define DMA1_Channel1_BASE                      (AHBPERIPH_BASE + 0x0008)
-#define DMA1_Channel2_BASE                      (AHBPERIPH_BASE + 0x001C)
-#define DMA1_Channel3_BASE                      (AHBPERIPH_BASE + 0x0030)
-#define DMA1_Channel4_BASE                      (AHBPERIPH_BASE + 0x0044)
-#define DMA1_Channel5_BASE                      (AHBPERIPH_BASE + 0x0058)
-#define DMA1_Channel6_BASE                      (AHBPERIPH_BASE + 0x006C)
-#define DMA1_Channel7_BASE                      (AHBPERIPH_BASE + 0x0080)
-#define RCC_BASE                                (AHBPERIPH_BASE + 0x1000)
-
-#define FLASH_R_BASE                            (AHBPERIPH_BASE + 0x2000) /* Flash registers base address */
-#define OB_BASE                                 ((uint32_t)0x1FFFF800)    /* Flash Option Bytes base address */
-#define EXTEN_BASE                              ((uint32_t)0x40023800)
-
-/* Peripheral declaration */
-#define TIM2                                    ((TIM_TypeDef *)TIM2_BASE)
-#define WWDG                                    ((WWDG_TypeDef *)WWDG_BASE)
-#define IWDG                                    ((IWDG_TypeDef *)IWDG_BASE)
-#define I2C1                                    ((I2C_TypeDef *)I2C1_BASE)
-#define PWR                                     ((PWR_TypeDef *)PWR_BASE)
-#define AFIO                                    ((AFIO_TypeDef *)AFIO_BASE)
-#define EXTI                                    ((EXTI_TypeDef *)EXTI_BASE)
-#define GPIOA                                   ((GPIO_TypeDef *)GPIOA_BASE)
-#define GPIOC                                   ((GPIO_TypeDef *)GPIOC_BASE)
-#define GPIOD                                   ((GPIO_TypeDef *)GPIOD_BASE)
-#define ADC1                                    ((ADC_TypeDef *)ADC1_BASE)
-#define TIM1                                    ((TIM_TypeDef *)TIM1_BASE)
-#define SPI1                                    ((SPI_TypeDef *)SPI1_BASE)
-#define USART1                                  ((USART_TypeDef *)USART1_BASE)
-#define DMA1                                    ((DMA_TypeDef *)DMA1_BASE)
-#define DMA1_Channel1                           ((DMA_Channel_TypeDef *)DMA1_Channel1_BASE)
-#define DMA1_Channel2                           ((DMA_Channel_TypeDef *)DMA1_Channel2_BASE)
-#define DMA1_Channel3                           ((DMA_Channel_TypeDef *)DMA1_Channel3_BASE)
-#define DMA1_Channel4                           ((DMA_Channel_TypeDef *)DMA1_Channel4_BASE)
-#define DMA1_Channel5                           ((DMA_Channel_TypeDef *)DMA1_Channel5_BASE)
-#define DMA1_Channel6                           ((DMA_Channel_TypeDef *)DMA1_Channel6_BASE)
-#define DMA1_Channel7                           ((DMA_Channel_TypeDef *)DMA1_Channel7_BASE)
-#define RCC                                     ((RCC_TypeDef *)RCC_BASE)
-#define FLASH                                   ((FLASH_TypeDef *)FLASH_R_BASE)
-#define OB                                      ((OB_TypeDef *)OB_BASE)
-#define EXTEN                                   ((EXTEN_TypeDef *)EXTEN_BASE)
-
-/******************************************************************************/
-/*                         Peripheral Registers Bits Definition               */
-/******************************************************************************/
-
-/******************************************************************************/
-/*                        Analog to Digital Converter                         */
-/******************************************************************************/
-
-/********************  Bit definition for ADC_STATR register  ********************/
-#define ADC_AWD                                 ((uint8_t)0x01) /* Analog watchdog flag */
-#define ADC_EOC                                 ((uint8_t)0x02) /* End of conversion */
-#define ADC_JEOC                                ((uint8_t)0x04) /* Injected channel end of conversion */
-#define ADC_JSTRT                               ((uint8_t)0x08) /* Injected channel Start flag */
-#define ADC_STRT                                ((uint8_t)0x10) /* Regular channel Start flag */
-
-/*******************  Bit definition for ADC_CTLR1 register  ********************/
-#define ADC_AWDCH                               ((uint32_t)0x0000001F) /* AWDCH[4:0] bits (Analog watchdog channel select bits) */
-#define ADC_AWDCH_0                             ((uint32_t)0x00000001) /* Bit 0 */
-#define ADC_AWDCH_1                             ((uint32_t)0x00000002) /* Bit 1 */
-#define ADC_AWDCH_2                             ((uint32_t)0x00000004) /* Bit 2 */
-#define ADC_AWDCH_3                             ((uint32_t)0x00000008) /* Bit 3 */
-#define ADC_AWDCH_4                             ((uint32_t)0x00000010) /* Bit 4 */
-
-#define ADC_EOCIE                               ((uint32_t)0x00000020) /* Interrupt enable for EOC */
-#define ADC_AWDIE                               ((uint32_t)0x00000040) /* Analog Watchdog interrupt enable */
-#define ADC_JEOCIE                              ((uint32_t)0x00000080) /* Interrupt enable for injected channels */
-#define ADC_SCAN                                ((uint32_t)0x00000100) /* Scan mode */
-#define ADC_AWDSGL                              ((uint32_t)0x00000200) /* Enable the watchdog on a single channel in scan mode */
-#define ADC_JAUTO                               ((uint32_t)0x00000400) /* Automatic injected group conversion */
-#define ADC_DISCEN                              ((uint32_t)0x00000800) /* Discontinuous mode on regular channels */
-#define ADC_JDISCEN                             ((uint32_t)0x00001000) /* Discontinuous mode on injected channels */
-
-#define ADC_DISCNUM                             ((uint32_t)0x0000E000) /* DISCNUM[2:0] bits (Discontinuous mode channel count) */
-#define ADC_DISCNUM_0                           ((uint32_t)0x00002000) /* Bit 0 */
-#define ADC_DISCNUM_1                           ((uint32_t)0x00004000) /* Bit 1 */
-#define ADC_DISCNUM_2                           ((uint32_t)0x00008000) /* Bit 2 */
-
-#define ADC_DUALMOD                             ((uint32_t)0x000F0000) /* DUALMOD[3:0] bits (Dual mode selection) */
-#define ADC_DUALMOD_0                           ((uint32_t)0x00010000) /* Bit 0 */
-#define ADC_DUALMOD_1                           ((uint32_t)0x00020000) /* Bit 1 */
-#define ADC_DUALMOD_2                           ((uint32_t)0x00040000) /* Bit 2 */
-#define ADC_DUALMOD_3                           ((uint32_t)0x00080000) /* Bit 3 */
-
-#define ADC_JAWDEN                              ((uint32_t)0x00400000) /* Analog watchdog enable on injected channels */
-#define ADC_AWDEN                               ((uint32_t)0x00800000) /* Analog watchdog enable on regular channels */
-
-/*******************  Bit definition for ADC_CTLR2 register  ********************/
-#define ADC_ADON                                ((uint32_t)0x00000001) /* A/D Converter ON / OFF */
-#define ADC_CONT                                ((uint32_t)0x00000002) /* Continuous Conversion */
-#define ADC_CAL                                 ((uint32_t)0x00000004) /* A/D Calibration */
-#define ADC_RSTCAL                              ((uint32_t)0x00000008) /* Reset Calibration */
-#define ADC_DMA                                 ((uint32_t)0x00000100) /* Direct Memory access mode */
-#define ADC_ALIGN                               ((uint32_t)0x00000800) /* Data Alignment */
-
-#define ADC_JEXTSEL                             ((uint32_t)0x00007000) /* JEXTSEL[2:0] bits (External event select for injected group) */
-#define ADC_JEXTSEL_0                           ((uint32_t)0x00001000) /* Bit 0 */
-#define ADC_JEXTSEL_1                           ((uint32_t)0x00002000) /* Bit 1 */
-#define ADC_JEXTSEL_2                           ((uint32_t)0x00004000) /* Bit 2 */
-
-#define ADC_JEXTTRIG                            ((uint32_t)0x00008000) /* External Trigger Conversion mode for injected channels */
-
-#define ADC_EXTSEL                              ((uint32_t)0x000E0000) /* EXTSEL[2:0] bits (External Event Select for regular group) */
-#define ADC_EXTSEL_0                            ((uint32_t)0x00020000) /* Bit 0 */
-#define ADC_EXTSEL_1                            ((uint32_t)0x00040000) /* Bit 1 */
-#define ADC_EXTSEL_2                            ((uint32_t)0x00080000) /* Bit 2 */
-
-#define ADC_EXTTRIG                             ((uint32_t)0x00100000) /* External Trigger Conversion mode for regular channels */
-#define ADC_JSWSTART                            ((uint32_t)0x00200000) /* Start Conversion of injected channels */
-#define ADC_SWSTART                             ((uint32_t)0x00400000) /* Start Conversion of regular channels */
-#define ADC_TSVREFE                             ((uint32_t)0x00800000) /* Temperature Sensor and VREFINT Enable */
-
-/******************  Bit definition for ADC_SAMPTR1 register  *******************/
-#define ADC_SMP10                               ((uint32_t)0x00000007) /* SMP10[2:0] bits (Channel 10 Sample time selection) */
-#define ADC_SMP10_0                             ((uint32_t)0x00000001) /* Bit 0 */
-#define ADC_SMP10_1                             ((uint32_t)0x00000002) /* Bit 1 */
-#define ADC_SMP10_2                             ((uint32_t)0x00000004) /* Bit 2 */
-
-#define ADC_SMP11                               ((uint32_t)0x00000038) /* SMP11[2:0] bits (Channel 11 Sample time selection) */
-#define ADC_SMP11_0                             ((uint32_t)0x00000008) /* Bit 0 */
-#define ADC_SMP11_1                             ((uint32_t)0x00000010) /* Bit 1 */
-#define ADC_SMP11_2                             ((uint32_t)0x00000020) /* Bit 2 */
-
-#define ADC_SMP12                               ((uint32_t)0x000001C0) /* SMP12[2:0] bits (Channel 12 Sample time selection) */
-#define ADC_SMP12_0                             ((uint32_t)0x00000040) /* Bit 0 */
-#define ADC_SMP12_1                             ((uint32_t)0x00000080) /* Bit 1 */
-#define ADC_SMP12_2                             ((uint32_t)0x00000100) /* Bit 2 */
-
-#define ADC_SMP13                               ((uint32_t)0x00000E00) /* SMP13[2:0] bits (Channel 13 Sample time selection) */
-#define ADC_SMP13_0                             ((uint32_t)0x00000200) /* Bit 0 */
-#define ADC_SMP13_1                             ((uint32_t)0x00000400) /* Bit 1 */
-#define ADC_SMP13_2                             ((uint32_t)0x00000800) /* Bit 2 */
-
-#define ADC_SMP14                               ((uint32_t)0x00007000) /* SMP14[2:0] bits (Channel 14 Sample time selection) */
-#define ADC_SMP14_0                             ((uint32_t)0x00001000) /* Bit 0 */
-#define ADC_SMP14_1                             ((uint32_t)0x00002000) /* Bit 1 */
-#define ADC_SMP14_2                             ((uint32_t)0x00004000) /* Bit 2 */
-
-#define ADC_SMP15                               ((uint32_t)0x00038000) /* SMP15[2:0] bits (Channel 15 Sample time selection) */
-#define ADC_SMP15_0                             ((uint32_t)0x00008000) /* Bit 0 */
-#define ADC_SMP15_1                             ((uint32_t)0x00010000) /* Bit 1 */
-#define ADC_SMP15_2                             ((uint32_t)0x00020000) /* Bit 2 */
-
-#define ADC_SMP16                               ((uint32_t)0x001C0000) /* SMP16[2:0] bits (Channel 16 Sample time selection) */
-#define ADC_SMP16_0                             ((uint32_t)0x00040000) /* Bit 0 */
-#define ADC_SMP16_1                             ((uint32_t)0x00080000) /* Bit 1 */
-#define ADC_SMP16_2                             ((uint32_t)0x00100000) /* Bit 2 */
-
-#define ADC_SMP17                               ((uint32_t)0x00E00000) /* SMP17[2:0] bits (Channel 17 Sample time selection) */
-#define ADC_SMP17_0                             ((uint32_t)0x00200000) /* Bit 0 */
-#define ADC_SMP17_1                             ((uint32_t)0x00400000) /* Bit 1 */
-#define ADC_SMP17_2                             ((uint32_t)0x00800000) /* Bit 2 */
-
-/******************  Bit definition for ADC_SAMPTR2 register  *******************/
-#define ADC_SMP0                                ((uint32_t)0x00000007) /* SMP0[2:0] bits (Channel 0 Sample time selection) */
-#define ADC_SMP0_0                              ((uint32_t)0x00000001) /* Bit 0 */
-#define ADC_SMP0_1                              ((uint32_t)0x00000002) /* Bit 1 */
-#define ADC_SMP0_2                              ((uint32_t)0x00000004) /* Bit 2 */
-
-#define ADC_SMP1                                ((uint32_t)0x00000038) /* SMP1[2:0] bits (Channel 1 Sample time selection) */
-#define ADC_SMP1_0                              ((uint32_t)0x00000008) /* Bit 0 */
-#define ADC_SMP1_1                              ((uint32_t)0x00000010) /* Bit 1 */
-#define ADC_SMP1_2                              ((uint32_t)0x00000020) /* Bit 2 */
-
-#define ADC_SMP2                                ((uint32_t)0x000001C0) /* SMP2[2:0] bits (Channel 2 Sample time selection) */
-#define ADC_SMP2_0                              ((uint32_t)0x00000040) /* Bit 0 */
-#define ADC_SMP2_1                              ((uint32_t)0x00000080) /* Bit 1 */
-#define ADC_SMP2_2                              ((uint32_t)0x00000100) /* Bit 2 */
-
-#define ADC_SMP3                                ((uint32_t)0x00000E00) /* SMP3[2:0] bits (Channel 3 Sample time selection) */
-#define ADC_SMP3_0                              ((uint32_t)0x00000200) /* Bit 0 */
-#define ADC_SMP3_1                              ((uint32_t)0x00000400) /* Bit 1 */
-#define ADC_SMP3_2                              ((uint32_t)0x00000800) /* Bit 2 */
-
-#define ADC_SMP4                                ((uint32_t)0x00007000) /* SMP4[2:0] bits (Channel 4 Sample time selection) */
-#define ADC_SMP4_0                              ((uint32_t)0x00001000) /* Bit 0 */
-#define ADC_SMP4_1                              ((uint32_t)0x00002000) /* Bit 1 */
-#define ADC_SMP4_2                              ((uint32_t)0x00004000) /* Bit 2 */
-
-#define ADC_SMP5                                ((uint32_t)0x00038000) /* SMP5[2:0] bits (Channel 5 Sample time selection) */
-#define ADC_SMP5_0                              ((uint32_t)0x00008000) /* Bit 0 */
-#define ADC_SMP5_1                              ((uint32_t)0x00010000) /* Bit 1 */
-#define ADC_SMP5_2                              ((uint32_t)0x00020000) /* Bit 2 */
-
-#define ADC_SMP6                                ((uint32_t)0x001C0000) /* SMP6[2:0] bits (Channel 6 Sample time selection) */
-#define ADC_SMP6_0                              ((uint32_t)0x00040000) /* Bit 0 */
-#define ADC_SMP6_1                              ((uint32_t)0x00080000) /* Bit 1 */
-#define ADC_SMP6_2                              ((uint32_t)0x00100000) /* Bit 2 */
-
-#define ADC_SMP7                                ((uint32_t)0x00E00000) /* SMP7[2:0] bits (Channel 7 Sample time selection) */
-#define ADC_SMP7_0                              ((uint32_t)0x00200000) /* Bit 0 */
-#define ADC_SMP7_1                              ((uint32_t)0x00400000) /* Bit 1 */
-#define ADC_SMP7_2                              ((uint32_t)0x00800000) /* Bit 2 */
-
-#define ADC_SMP8                                ((uint32_t)0x07000000) /* SMP8[2:0] bits (Channel 8 Sample time selection) */
-#define ADC_SMP8_0                              ((uint32_t)0x01000000) /* Bit 0 */
-#define ADC_SMP8_1                              ((uint32_t)0x02000000) /* Bit 1 */
-#define ADC_SMP8_2                              ((uint32_t)0x04000000) /* Bit 2 */
-
-#define ADC_SMP9                                ((uint32_t)0x38000000) /* SMP9[2:0] bits (Channel 9 Sample time selection) */
-#define ADC_SMP9_0                              ((uint32_t)0x08000000) /* Bit 0 */
-#define ADC_SMP9_1                              ((uint32_t)0x10000000) /* Bit 1 */
-#define ADC_SMP9_2                              ((uint32_t)0x20000000) /* Bit 2 */
-
-/******************  Bit definition for ADC_IOFR1 register  *******************/
-#define ADC_JOFFSET1                            ((uint16_t)0x0FFF) /* Data offset for injected channel 1 */
-
-/******************  Bit definition for ADC_IOFR2 register  *******************/
-#define ADC_JOFFSET2                            ((uint16_t)0x0FFF) /* Data offset for injected channel 2 */
-
-/******************  Bit definition for ADC_IOFR3 register  *******************/
-#define ADC_JOFFSET3                            ((uint16_t)0x0FFF) /* Data offset for injected channel 3 */
-
-/******************  Bit definition for ADC_IOFR4 register  *******************/
-#define ADC_JOFFSET4                            ((uint16_t)0x0FFF) /* Data offset for injected channel 4 */
-
-/*******************  Bit definition for ADC_WDHTR register  ********************/
-#define ADC_HT                                  ((uint16_t)0x0FFF) /* Analog watchdog high threshold */
-
-/*******************  Bit definition for ADC_WDLTR register  ********************/
-#define ADC_LT                                  ((uint16_t)0x0FFF) /* Analog watchdog low threshold */
-
-/*******************  Bit definition for ADC_RSQR1 register  *******************/
-#define ADC_SQ13                                ((uint32_t)0x0000001F) /* SQ13[4:0] bits (13th conversion in regular sequence) */
-#define ADC_SQ13_0                              ((uint32_t)0x00000001) /* Bit 0 */
-#define ADC_SQ13_1                              ((uint32_t)0x00000002) /* Bit 1 */
-#define ADC_SQ13_2                              ((uint32_t)0x00000004) /* Bit 2 */
-#define ADC_SQ13_3                              ((uint32_t)0x00000008) /* Bit 3 */
-#define ADC_SQ13_4                              ((uint32_t)0x00000010) /* Bit 4 */
-
-#define ADC_SQ14                                ((uint32_t)0x000003E0) /* SQ14[4:0] bits (14th conversion in regular sequence) */
-#define ADC_SQ14_0                              ((uint32_t)0x00000020) /* Bit 0 */
-#define ADC_SQ14_1                              ((uint32_t)0x00000040) /* Bit 1 */
-#define ADC_SQ14_2                              ((uint32_t)0x00000080) /* Bit 2 */
-#define ADC_SQ14_3                              ((uint32_t)0x00000100) /* Bit 3 */
-#define ADC_SQ14_4                              ((uint32_t)0x00000200) /* Bit 4 */
-
-#define ADC_SQ15                                ((uint32_t)0x00007C00) /* SQ15[4:0] bits (15th conversion in regular sequence) */
-#define ADC_SQ15_0                              ((uint32_t)0x00000400) /* Bit 0 */
-#define ADC_SQ15_1                              ((uint32_t)0x00000800) /* Bit 1 */
-#define ADC_SQ15_2                              ((uint32_t)0x00001000) /* Bit 2 */
-#define ADC_SQ15_3                              ((uint32_t)0x00002000) /* Bit 3 */
-#define ADC_SQ15_4                              ((uint32_t)0x00004000) /* Bit 4 */
-
-#define ADC_SQ16                                ((uint32_t)0x000F8000) /* SQ16[4:0] bits (16th conversion in regular sequence) */
-#define ADC_SQ16_0                              ((uint32_t)0x00008000) /* Bit 0 */
-#define ADC_SQ16_1                              ((uint32_t)0x00010000) /* Bit 1 */
-#define ADC_SQ16_2                              ((uint32_t)0x00020000) /* Bit 2 */
-#define ADC_SQ16_3                              ((uint32_t)0x00040000) /* Bit 3 */
-#define ADC_SQ16_4                              ((uint32_t)0x00080000) /* Bit 4 */
-
-#define ADC_L                                   ((uint32_t)0x00F00000) /* L[3:0] bits (Regular channel sequence length) */
-#define ADC_L_0                                 ((uint32_t)0x00100000) /* Bit 0 */
-#define ADC_L_1                                 ((uint32_t)0x00200000) /* Bit 1 */
-#define ADC_L_2                                 ((uint32_t)0x00400000) /* Bit 2 */
-#define ADC_L_3                                 ((uint32_t)0x00800000) /* Bit 3 */
-
-/*******************  Bit definition for ADC_RSQR2 register  *******************/
-#define ADC_SQ7                                 ((uint32_t)0x0000001F) /* SQ7[4:0] bits (7th conversion in regular sequence) */
-#define ADC_SQ7_0                               ((uint32_t)0x00000001) /* Bit 0 */
-#define ADC_SQ7_1                               ((uint32_t)0x00000002) /* Bit 1 */
-#define ADC_SQ7_2                               ((uint32_t)0x00000004) /* Bit 2 */
-#define ADC_SQ7_3                               ((uint32_t)0x00000008) /* Bit 3 */
-#define ADC_SQ7_4                               ((uint32_t)0x00000010) /* Bit 4 */
-
-#define ADC_SQ8                                 ((uint32_t)0x000003E0) /* SQ8[4:0] bits (8th conversion in regular sequence) */
-#define ADC_SQ8_0                               ((uint32_t)0x00000020) /* Bit 0 */
-#define ADC_SQ8_1                               ((uint32_t)0x00000040) /* Bit 1 */
-#define ADC_SQ8_2                               ((uint32_t)0x00000080) /* Bit 2 */
-#define ADC_SQ8_3                               ((uint32_t)0x00000100) /* Bit 3 */
-#define ADC_SQ8_4                               ((uint32_t)0x00000200) /* Bit 4 */
-
-#define ADC_SQ9                                 ((uint32_t)0x00007C00) /* SQ9[4:0] bits (9th conversion in regular sequence) */
-#define ADC_SQ9_0                               ((uint32_t)0x00000400) /* Bit 0 */
-#define ADC_SQ9_1                               ((uint32_t)0x00000800) /* Bit 1 */
-#define ADC_SQ9_2                               ((uint32_t)0x00001000) /* Bit 2 */
-#define ADC_SQ9_3                               ((uint32_t)0x00002000) /* Bit 3 */
-#define ADC_SQ9_4                               ((uint32_t)0x00004000) /* Bit 4 */
-
-#define ADC_SQ10                                ((uint32_t)0x000F8000) /* SQ10[4:0] bits (10th conversion in regular sequence) */
-#define ADC_SQ10_0                              ((uint32_t)0x00008000) /* Bit 0 */
-#define ADC_SQ10_1                              ((uint32_t)0x00010000) /* Bit 1 */
-#define ADC_SQ10_2                              ((uint32_t)0x00020000) /* Bit 2 */
-#define ADC_SQ10_3                              ((uint32_t)0x00040000) /* Bit 3 */
-#define ADC_SQ10_4                              ((uint32_t)0x00080000) /* Bit 4 */
-
-#define ADC_SQ11                                ((uint32_t)0x01F00000) /* SQ11[4:0] bits (11th conversion in regular sequence) */
-#define ADC_SQ11_0                              ((uint32_t)0x00100000) /* Bit 0 */
-#define ADC_SQ11_1                              ((uint32_t)0x00200000) /* Bit 1 */
-#define ADC_SQ11_2                              ((uint32_t)0x00400000) /* Bit 2 */
-#define ADC_SQ11_3                              ((uint32_t)0x00800000) /* Bit 3 */
-#define ADC_SQ11_4                              ((uint32_t)0x01000000) /* Bit 4 */
-
-#define ADC_SQ12                                ((uint32_t)0x3E000000) /* SQ12[4:0] bits (12th conversion in regular sequence) */
-#define ADC_SQ12_0                              ((uint32_t)0x02000000) /* Bit 0 */
-#define ADC_SQ12_1                              ((uint32_t)0x04000000) /* Bit 1 */
-#define ADC_SQ12_2                              ((uint32_t)0x08000000) /* Bit 2 */
-#define ADC_SQ12_3                              ((uint32_t)0x10000000) /* Bit 3 */
-#define ADC_SQ12_4                              ((uint32_t)0x20000000) /* Bit 4 */
-
-/*******************  Bit definition for ADC_RSQR3 register  *******************/
-#define ADC_SQ1                                 ((uint32_t)0x0000001F) /* SQ1[4:0] bits (1st conversion in regular sequence) */
-#define ADC_SQ1_0                               ((uint32_t)0x00000001) /* Bit 0 */
-#define ADC_SQ1_1                               ((uint32_t)0x00000002) /* Bit 1 */
-#define ADC_SQ1_2                               ((uint32_t)0x00000004) /* Bit 2 */
-#define ADC_SQ1_3                               ((uint32_t)0x00000008) /* Bit 3 */
-#define ADC_SQ1_4                               ((uint32_t)0x00000010) /* Bit 4 */
-
-#define ADC_SQ2                                 ((uint32_t)0x000003E0) /* SQ2[4:0] bits (2nd conversion in regular sequence) */
-#define ADC_SQ2_0                               ((uint32_t)0x00000020) /* Bit 0 */
-#define ADC_SQ2_1                               ((uint32_t)0x00000040) /* Bit 1 */
-#define ADC_SQ2_2                               ((uint32_t)0x00000080) /* Bit 2 */
-#define ADC_SQ2_3                               ((uint32_t)0x00000100) /* Bit 3 */
-#define ADC_SQ2_4                               ((uint32_t)0x00000200) /* Bit 4 */
-
-#define ADC_SQ3                                 ((uint32_t)0x00007C00) /* SQ3[4:0] bits (3rd conversion in regular sequence) */
-#define ADC_SQ3_0                               ((uint32_t)0x00000400) /* Bit 0 */
-#define ADC_SQ3_1                               ((uint32_t)0x00000800) /* Bit 1 */
-#define ADC_SQ3_2                               ((uint32_t)0x00001000) /* Bit 2 */
-#define ADC_SQ3_3                               ((uint32_t)0x00002000) /* Bit 3 */
-#define ADC_SQ3_4                               ((uint32_t)0x00004000) /* Bit 4 */
-
-#define ADC_SQ4                                 ((uint32_t)0x000F8000) /* SQ4[4:0] bits (4th conversion in regular sequence) */
-#define ADC_SQ4_0                               ((uint32_t)0x00008000) /* Bit 0 */
-#define ADC_SQ4_1                               ((uint32_t)0x00010000) /* Bit 1 */
-#define ADC_SQ4_2                               ((uint32_t)0x00020000) /* Bit 2 */
-#define ADC_SQ4_3                               ((uint32_t)0x00040000) /* Bit 3 */
-#define ADC_SQ4_4                               ((uint32_t)0x00080000) /* Bit 4 */
-
-#define ADC_SQ5                                 ((uint32_t)0x01F00000) /* SQ5[4:0] bits (5th conversion in regular sequence) */
-#define ADC_SQ5_0                               ((uint32_t)0x00100000) /* Bit 0 */
-#define ADC_SQ5_1                               ((uint32_t)0x00200000) /* Bit 1 */
-#define ADC_SQ5_2                               ((uint32_t)0x00400000) /* Bit 2 */
-#define ADC_SQ5_3                               ((uint32_t)0x00800000) /* Bit 3 */
-#define ADC_SQ5_4                               ((uint32_t)0x01000000) /* Bit 4 */
-
-#define ADC_SQ6                                 ((uint32_t)0x3E000000) /* SQ6[4:0] bits (6th conversion in regular sequence) */
-#define ADC_SQ6_0                               ((uint32_t)0x02000000) /* Bit 0 */
-#define ADC_SQ6_1                               ((uint32_t)0x04000000) /* Bit 1 */
-#define ADC_SQ6_2                               ((uint32_t)0x08000000) /* Bit 2 */
-#define ADC_SQ6_3                               ((uint32_t)0x10000000) /* Bit 3 */
-#define ADC_SQ6_4                               ((uint32_t)0x20000000) /* Bit 4 */
-
-/*******************  Bit definition for ADC_ISQR register  *******************/
-#define ADC_JSQ1                                ((uint32_t)0x0000001F) /* JSQ1[4:0] bits (1st conversion in injected sequence) */
-#define ADC_JSQ1_0                              ((uint32_t)0x00000001) /* Bit 0 */
-#define ADC_JSQ1_1                              ((uint32_t)0x00000002) /* Bit 1 */
-#define ADC_JSQ1_2                              ((uint32_t)0x00000004) /* Bit 2 */
-#define ADC_JSQ1_3                              ((uint32_t)0x00000008) /* Bit 3 */
-#define ADC_JSQ1_4                              ((uint32_t)0x00000010) /* Bit 4 */
-
-#define ADC_JSQ2                                ((uint32_t)0x000003E0) /* JSQ2[4:0] bits (2nd conversion in injected sequence) */
-#define ADC_JSQ2_0                              ((uint32_t)0x00000020) /* Bit 0 */
-#define ADC_JSQ2_1                              ((uint32_t)0x00000040) /* Bit 1 */
-#define ADC_JSQ2_2                              ((uint32_t)0x00000080) /* Bit 2 */
-#define ADC_JSQ2_3                              ((uint32_t)0x00000100) /* Bit 3 */
-#define ADC_JSQ2_4                              ((uint32_t)0x00000200) /* Bit 4 */
-
-#define ADC_JSQ3                                ((uint32_t)0x00007C00) /* JSQ3[4:0] bits (3rd conversion in injected sequence) */
-#define ADC_JSQ3_0                              ((uint32_t)0x00000400) /* Bit 0 */
-#define ADC_JSQ3_1                              ((uint32_t)0x00000800) /* Bit 1 */
-#define ADC_JSQ3_2                              ((uint32_t)0x00001000) /* Bit 2 */
-#define ADC_JSQ3_3                              ((uint32_t)0x00002000) /* Bit 3 */
-#define ADC_JSQ3_4                              ((uint32_t)0x00004000) /* Bit 4 */
-
-#define ADC_JSQ4                                ((uint32_t)0x000F8000) /* JSQ4[4:0] bits (4th conversion in injected sequence) */
-#define ADC_JSQ4_0                              ((uint32_t)0x00008000) /* Bit 0 */
-#define ADC_JSQ4_1                              ((uint32_t)0x00010000) /* Bit 1 */
-#define ADC_JSQ4_2                              ((uint32_t)0x00020000) /* Bit 2 */
-#define ADC_JSQ4_3                              ((uint32_t)0x00040000) /* Bit 3 */
-#define ADC_JSQ4_4                              ((uint32_t)0x00080000) /* Bit 4 */
-
-#define ADC_JL                                  ((uint32_t)0x00300000) /* JL[1:0] bits (Injected Sequence length) */
-#define ADC_JL_0                                ((uint32_t)0x00100000) /* Bit 0 */
-#define ADC_JL_1                                ((uint32_t)0x00200000) /* Bit 1 */
-
-/*******************  Bit definition for ADC_IDATAR1 register  *******************/
-#define ADC_IDATAR1_JDATA                       ((uint16_t)0xFFFF) /* Injected data */
-
-/*******************  Bit definition for ADC_IDATAR2 register  *******************/
-#define ADC_IDATAR2_JDATA                       ((uint16_t)0xFFFF) /* Injected data */
-
-/*******************  Bit definition for ADC_IDATAR3 register  *******************/
-#define ADC_IDATAR3_JDATA                       ((uint16_t)0xFFFF) /* Injected data */
-
-/*******************  Bit definition for ADC_IDATAR4 register  *******************/
-#define ADC_IDATAR4_JDATA                       ((uint16_t)0xFFFF) /* Injected data */
-
-/********************  Bit definition for ADC_RDATAR register  ********************/
-#define ADC_RDATAR_DATA                         ((uint32_t)0x0000FFFF) /* Regular data */
-#define ADC_RDATAR_ADC2DATA                     ((uint32_t)0xFFFF0000) /* ADC2 data */
-
-/******************************************************************************/
-/*                             DMA Controller                                 */
-/******************************************************************************/
-
-/*******************  Bit definition for DMA_INTFR register  ********************/
-#define DMA_GIF1                                ((uint32_t)0x00000001) /* Channel 1 Global interrupt flag */
-#define DMA_TCIF1                               ((uint32_t)0x00000002) /* Channel 1 Transfer Complete flag */
-#define DMA_HTIF1                               ((uint32_t)0x00000004) /* Channel 1 Half Transfer flag */
-#define DMA_TEIF1                               ((uint32_t)0x00000008) /* Channel 1 Transfer Error flag */
-#define DMA_GIF2                                ((uint32_t)0x00000010) /* Channel 2 Global interrupt flag */
-#define DMA_TCIF2                               ((uint32_t)0x00000020) /* Channel 2 Transfer Complete flag */
-#define DMA_HTIF2                               ((uint32_t)0x00000040) /* Channel 2 Half Transfer flag */
-#define DMA_TEIF2                               ((uint32_t)0x00000080) /* Channel 2 Transfer Error flag */
-#define DMA_GIF3                                ((uint32_t)0x00000100) /* Channel 3 Global interrupt flag */
-#define DMA_TCIF3                               ((uint32_t)0x00000200) /* Channel 3 Transfer Complete flag */
-#define DMA_HTIF3                               ((uint32_t)0x00000400) /* Channel 3 Half Transfer flag */
-#define DMA_TEIF3                               ((uint32_t)0x00000800) /* Channel 3 Transfer Error flag */
-#define DMA_GIF4                                ((uint32_t)0x00001000) /* Channel 4 Global interrupt flag */
-#define DMA_TCIF4                               ((uint32_t)0x00002000) /* Channel 4 Transfer Complete flag */
-#define DMA_HTIF4                               ((uint32_t)0x00004000) /* Channel 4 Half Transfer flag */
-#define DMA_TEIF4                               ((uint32_t)0x00008000) /* Channel 4 Transfer Error flag */
-#define DMA_GIF5                                ((uint32_t)0x00010000) /* Channel 5 Global interrupt flag */
-#define DMA_TCIF5                               ((uint32_t)0x00020000) /* Channel 5 Transfer Complete flag */
-#define DMA_HTIF5                               ((uint32_t)0x00040000) /* Channel 5 Half Transfer flag */
-#define DMA_TEIF5                               ((uint32_t)0x00080000) /* Channel 5 Transfer Error flag */
-#define DMA_GIF6                                ((uint32_t)0x00100000) /* Channel 6 Global interrupt flag */
-#define DMA_TCIF6                               ((uint32_t)0x00200000) /* Channel 6 Transfer Complete flag */
-#define DMA_HTIF6                               ((uint32_t)0x00400000) /* Channel 6 Half Transfer flag */
-#define DMA_TEIF6                               ((uint32_t)0x00800000) /* Channel 6 Transfer Error flag */
-#define DMA_GIF7                                ((uint32_t)0x01000000) /* Channel 7 Global interrupt flag */
-#define DMA_TCIF7                               ((uint32_t)0x02000000) /* Channel 7 Transfer Complete flag */
-#define DMA_HTIF7                               ((uint32_t)0x04000000) /* Channel 7 Half Transfer flag */
-#define DMA_TEIF7                               ((uint32_t)0x08000000) /* Channel 7 Transfer Error flag */
-
-/*******************  Bit definition for DMA_INTFCR register  *******************/
-#define DMA_CGIF1                               ((uint32_t)0x00000001) /* Channel 1 Global interrupt clear */
-#define DMA_CTCIF1                              ((uint32_t)0x00000002) /* Channel 1 Transfer Complete clear */
-#define DMA_CHTIF1                              ((uint32_t)0x00000004) /* Channel 1 Half Transfer clear */
-#define DMA_CTEIF1                              ((uint32_t)0x00000008) /* Channel 1 Transfer Error clear */
-#define DMA_CGIF2                               ((uint32_t)0x00000010) /* Channel 2 Global interrupt clear */
-#define DMA_CTCIF2                              ((uint32_t)0x00000020) /* Channel 2 Transfer Complete clear */
-#define DMA_CHTIF2                              ((uint32_t)0x00000040) /* Channel 2 Half Transfer clear */
-#define DMA_CTEIF2                              ((uint32_t)0x00000080) /* Channel 2 Transfer Error clear */
-#define DMA_CGIF3                               ((uint32_t)0x00000100) /* Channel 3 Global interrupt clear */
-#define DMA_CTCIF3                              ((uint32_t)0x00000200) /* Channel 3 Transfer Complete clear */
-#define DMA_CHTIF3                              ((uint32_t)0x00000400) /* Channel 3 Half Transfer clear */
-#define DMA_CTEIF3                              ((uint32_t)0x00000800) /* Channel 3 Transfer Error clear */
-#define DMA_CGIF4                               ((uint32_t)0x00001000) /* Channel 4 Global interrupt clear */
-#define DMA_CTCIF4                              ((uint32_t)0x00002000) /* Channel 4 Transfer Complete clear */
-#define DMA_CHTIF4                              ((uint32_t)0x00004000) /* Channel 4 Half Transfer clear */
-#define DMA_CTEIF4                              ((uint32_t)0x00008000) /* Channel 4 Transfer Error clear */
-#define DMA_CGIF5                               ((uint32_t)0x00010000) /* Channel 5 Global interrupt clear */
-#define DMA_CTCIF5                              ((uint32_t)0x00020000) /* Channel 5 Transfer Complete clear */
-#define DMA_CHTIF5                              ((uint32_t)0x00040000) /* Channel 5 Half Transfer clear */
-#define DMA_CTEIF5                              ((uint32_t)0x00080000) /* Channel 5 Transfer Error clear */
-#define DMA_CGIF6                               ((uint32_t)0x00100000) /* Channel 6 Global interrupt clear */
-#define DMA_CTCIF6                              ((uint32_t)0x00200000) /* Channel 6 Transfer Complete clear */
-#define DMA_CHTIF6                              ((uint32_t)0x00400000) /* Channel 6 Half Transfer clear */
-#define DMA_CTEIF6                              ((uint32_t)0x00800000) /* Channel 6 Transfer Error clear */
-#define DMA_CGIF7                               ((uint32_t)0x01000000) /* Channel 7 Global interrupt clear */
-#define DMA_CTCIF7                              ((uint32_t)0x02000000) /* Channel 7 Transfer Complete clear */
-#define DMA_CHTIF7                              ((uint32_t)0x04000000) /* Channel 7 Half Transfer clear */
-#define DMA_CTEIF7                              ((uint32_t)0x08000000) /* Channel 7 Transfer Error clear */
-
-/*******************  Bit definition for DMA_CFGR1 register  *******************/
-#define DMA_CFGR1_EN                            ((uint16_t)0x0001) /* Channel enable*/
-#define DMA_CFGR1_TCIE                          ((uint16_t)0x0002) /* Transfer complete interrupt enable */
-#define DMA_CFGR1_HTIE                          ((uint16_t)0x0004) /* Half Transfer interrupt enable */
-#define DMA_CFGR1_TEIE                          ((uint16_t)0x0008) /* Transfer error interrupt enable */
-#define DMA_CFGR1_DIR                           ((uint16_t)0x0010) /* Data transfer direction */
-#define DMA_CFGR1_CIRC                          ((uint16_t)0x0020) /* Circular mode */
-#define DMA_CFGR1_PINC                          ((uint16_t)0x0040) /* Peripheral increment mode */
-#define DMA_CFGR1_MINC                          ((uint16_t)0x0080) /* Memory increment mode */
-
-#define DMA_CFGR1_PSIZE                         ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */
-#define DMA_CFGR1_PSIZE_0                       ((uint16_t)0x0100) /* Bit 0 */
-#define DMA_CFGR1_PSIZE_1                       ((uint16_t)0x0200) /* Bit 1 */
-
-#define DMA_CFGR1_MSIZE                         ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */
-#define DMA_CFGR1_MSIZE_0                       ((uint16_t)0x0400) /* Bit 0 */
-#define DMA_CFGR1_MSIZE_1                       ((uint16_t)0x0800) /* Bit 1 */
-
-#define DMA_CFGR1_PL                            ((uint16_t)0x3000) /* PL[1:0] bits(Channel Priority level) */
-#define DMA_CFGR1_PL_0                          ((uint16_t)0x1000) /* Bit 0 */
-#define DMA_CFGR1_PL_1                          ((uint16_t)0x2000) /* Bit 1 */
-
-#define DMA_CFGR1_MEM2MEM                       ((uint16_t)0x4000) /* Memory to memory mode */
-
-/*******************  Bit definition for DMA_CFGR2 register  *******************/
-#define DMA_CFGR2_EN                            ((uint16_t)0x0001) /* Channel enable */
-#define DMA_CFGR2_TCIE                          ((uint16_t)0x0002) /* Transfer complete interrupt enable */
-#define DMA_CFGR2_HTIE                          ((uint16_t)0x0004) /* Half Transfer interrupt enable */
-#define DMA_CFGR2_TEIE                          ((uint16_t)0x0008) /* Transfer error interrupt enable */
-#define DMA_CFGR2_DIR                           ((uint16_t)0x0010) /* Data transfer direction */
-#define DMA_CFGR2_CIRC                          ((uint16_t)0x0020) /* Circular mode */
-#define DMA_CFGR2_PINC                          ((uint16_t)0x0040) /* Peripheral increment mode */
-#define DMA_CFGR2_MINC                          ((uint16_t)0x0080) /* Memory increment mode */
-
-#define DMA_CFGR2_PSIZE                         ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */
-#define DMA_CFGR2_PSIZE_0                       ((uint16_t)0x0100) /* Bit 0 */
-#define DMA_CFGR2_PSIZE_1                       ((uint16_t)0x0200) /* Bit 1 */
-
-#define DMA_CFGR2_MSIZE                         ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */
-#define DMA_CFGR2_MSIZE_0                       ((uint16_t)0x0400) /* Bit 0 */
-#define DMA_CFGR2_MSIZE_1                       ((uint16_t)0x0800) /* Bit 1 */
-
-#define DMA_CFGR2_PL                            ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */
-#define DMA_CFGR2_PL_0                          ((uint16_t)0x1000) /* Bit 0 */
-#define DMA_CFGR2_PL_1                          ((uint16_t)0x2000) /* Bit 1 */
-
-#define DMA_CFGR2_MEM2MEM                       ((uint16_t)0x4000) /* Memory to memory mode */
-
-/*******************  Bit definition for DMA_CFGR3 register  *******************/
-#define DMA_CFGR3_EN                            ((uint16_t)0x0001) /* Channel enable */
-#define DMA_CFGR3_TCIE                          ((uint16_t)0x0002) /* Transfer complete interrupt enable */
-#define DMA_CFGR3_HTIE                          ((uint16_t)0x0004) /* Half Transfer interrupt enable */
-#define DMA_CFGR3_TEIE                          ((uint16_t)0x0008) /* Transfer error interrupt enable */
-#define DMA_CFGR3_DIR                           ((uint16_t)0x0010) /* Data transfer direction */
-#define DMA_CFGR3_CIRC                          ((uint16_t)0x0020) /* Circular mode */
-#define DMA_CFGR3_PINC                          ((uint16_t)0x0040) /* Peripheral increment mode */
-#define DMA_CFGR3_MINC                          ((uint16_t)0x0080) /* Memory increment mode */
-
-#define DMA_CFGR3_PSIZE                         ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */
-#define DMA_CFGR3_PSIZE_0                       ((uint16_t)0x0100) /* Bit 0 */
-#define DMA_CFGR3_PSIZE_1                       ((uint16_t)0x0200) /* Bit 1 */
-
-#define DMA_CFGR3_MSIZE                         ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */
-#define DMA_CFGR3_MSIZE_0                       ((uint16_t)0x0400) /* Bit 0 */
-#define DMA_CFGR3_MSIZE_1                       ((uint16_t)0x0800) /* Bit 1 */
-
-#define DMA_CFGR3_PL                            ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */
-#define DMA_CFGR3_PL_0                          ((uint16_t)0x1000) /* Bit 0 */
-#define DMA_CFGR3_PL_1                          ((uint16_t)0x2000) /* Bit 1 */
-
-#define DMA_CFGR3_MEM2MEM                       ((uint16_t)0x4000) /* Memory to memory mode */
-
-/*******************  Bit definition for DMA_CFG4 register  *******************/
-#define DMA_CFG4_EN                             ((uint16_t)0x0001) /* Channel enable */
-#define DMA_CFG4_TCIE                           ((uint16_t)0x0002) /* Transfer complete interrupt enable */
-#define DMA_CFG4_HTIE                           ((uint16_t)0x0004) /* Half Transfer interrupt enable */
-#define DMA_CFG4_TEIE                           ((uint16_t)0x0008) /* Transfer error interrupt enable */
-#define DMA_CFG4_DIR                            ((uint16_t)0x0010) /* Data transfer direction */
-#define DMA_CFG4_CIRC                           ((uint16_t)0x0020) /* Circular mode */
-#define DMA_CFG4_PINC                           ((uint16_t)0x0040) /* Peripheral increment mode */
-#define DMA_CFG4_MINC                           ((uint16_t)0x0080) /* Memory increment mode */
-
-#define DMA_CFG4_PSIZE                          ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */
-#define DMA_CFG4_PSIZE_0                        ((uint16_t)0x0100) /* Bit 0 */
-#define DMA_CFG4_PSIZE_1                        ((uint16_t)0x0200) /* Bit 1 */
-
-#define DMA_CFG4_MSIZE                          ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */
-#define DMA_CFG4_MSIZE_0                        ((uint16_t)0x0400) /* Bit 0 */
-#define DMA_CFG4_MSIZE_1                        ((uint16_t)0x0800) /* Bit 1 */
-
-#define DMA_CFG4_PL                             ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */
-#define DMA_CFG4_PL_0                           ((uint16_t)0x1000) /* Bit 0 */
-#define DMA_CFG4_PL_1                           ((uint16_t)0x2000) /* Bit 1 */
-
-#define DMA_CFG4_MEM2MEM                        ((uint16_t)0x4000) /* Memory to memory mode */
-
-/******************  Bit definition for DMA_CFG5 register  *******************/
-#define DMA_CFG5_EN                             ((uint16_t)0x0001) /* Channel enable */
-#define DMA_CFG5_TCIE                           ((uint16_t)0x0002) /* Transfer complete interrupt enable */
-#define DMA_CFG5_HTIE                           ((uint16_t)0x0004) /* Half Transfer interrupt enable */
-#define DMA_CFG5_TEIE                           ((uint16_t)0x0008) /* Transfer error interrupt enable */
-#define DMA_CFG5_DIR                            ((uint16_t)0x0010) /* Data transfer direction */
-#define DMA_CFG5_CIRC                           ((uint16_t)0x0020) /* Circular mode */
-#define DMA_CFG5_PINC                           ((uint16_t)0x0040) /* Peripheral increment mode */
-#define DMA_CFG5_MINC                           ((uint16_t)0x0080) /* Memory increment mode */
-
-#define DMA_CFG5_PSIZE                          ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */
-#define DMA_CFG5_PSIZE_0                        ((uint16_t)0x0100) /* Bit 0 */
-#define DMA_CFG5_PSIZE_1                        ((uint16_t)0x0200) /* Bit 1 */
-
-#define DMA_CFG5_MSIZE                          ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */
-#define DMA_CFG5_MSIZE_0                        ((uint16_t)0x0400) /* Bit 0 */
-#define DMA_CFG5_MSIZE_1                        ((uint16_t)0x0800) /* Bit 1 */
-
-#define DMA_CFG5_PL                             ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */
-#define DMA_CFG5_PL_0                           ((uint16_t)0x1000) /* Bit 0 */
-#define DMA_CFG5_PL_1                           ((uint16_t)0x2000) /* Bit 1 */
-
-#define DMA_CFG5_MEM2MEM                        ((uint16_t)0x4000) /* Memory to memory mode enable */
-
-/*******************  Bit definition for DMA_CFG6 register  *******************/
-#define DMA_CFG6_EN                             ((uint16_t)0x0001) /* Channel enable */
-#define DMA_CFG6_TCIE                           ((uint16_t)0x0002) /* Transfer complete interrupt enable */
-#define DMA_CFG6_HTIE                           ((uint16_t)0x0004) /* Half Transfer interrupt enable */
-#define DMA_CFG6_TEIE                           ((uint16_t)0x0008) /* Transfer error interrupt enable */
-#define DMA_CFG6_DIR                            ((uint16_t)0x0010) /* Data transfer direction */
-#define DMA_CFG6_CIRC                           ((uint16_t)0x0020) /* Circular mode */
-#define DMA_CFG6_PINC                           ((uint16_t)0x0040) /* Peripheral increment mode */
-#define DMA_CFG6_MINC                           ((uint16_t)0x0080) /* Memory increment mode */
-
-#define DMA_CFG6_PSIZE                          ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */
-#define DMA_CFG6_PSIZE_0                        ((uint16_t)0x0100) /* Bit 0 */
-#define DMA_CFG6_PSIZE_1                        ((uint16_t)0x0200) /* Bit 1 */
-
-#define DMA_CFG6_MSIZE                          ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */
-#define DMA_CFG6_MSIZE_0                        ((uint16_t)0x0400) /* Bit 0 */
-#define DMA_CFG6_MSIZE_1                        ((uint16_t)0x0800) /* Bit 1 */
-
-#define DMA_CFG6_PL                             ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */
-#define DMA_CFG6_PL_0                           ((uint16_t)0x1000) /* Bit 0 */
-#define DMA_CFG6_PL_1                           ((uint16_t)0x2000) /* Bit 1 */
-
-#define DMA_CFG6_MEM2MEM                        ((uint16_t)0x4000) /* Memory to memory mode */
-
-/*******************  Bit definition for DMA_CFG7 register  *******************/
-#define DMA_CFG7_EN                             ((uint16_t)0x0001) /* Channel enable */
-#define DMA_CFG7_TCIE                           ((uint16_t)0x0002) /* Transfer complete interrupt enable */
-#define DMA_CFG7_HTIE                           ((uint16_t)0x0004) /* Half Transfer interrupt enable */
-#define DMA_CFG7_TEIE                           ((uint16_t)0x0008) /* Transfer error interrupt enable */
-#define DMA_CFG7_DIR                            ((uint16_t)0x0010) /* Data transfer direction */
-#define DMA_CFG7_CIRC                           ((uint16_t)0x0020) /* Circular mode */
-#define DMA_CFG7_PINC                           ((uint16_t)0x0040) /* Peripheral increment mode */
-#define DMA_CFG7_MINC                           ((uint16_t)0x0080) /* Memory increment mode */
-
-#define DMA_CFG7_PSIZE                          ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */
-#define DMA_CFG7_PSIZE_0                        ((uint16_t)0x0100) /* Bit 0 */
-#define DMA_CFG7_PSIZE_1                        ((uint16_t)0x0200) /* Bit 1 */
-
-#define DMA_CFG7_MSIZE                          ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */
-#define DMA_CFG7_MSIZE_0                        ((uint16_t)0x0400) /* Bit 0 */
-#define DMA_CFG7_MSIZE_1                        ((uint16_t)0x0800) /* Bit 1 */
-
-#define DMA_CFG7_PL                             ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */
-#define DMA_CFG7_PL_0                           ((uint16_t)0x1000) /* Bit 0 */
-#define DMA_CFG7_PL_1                           ((uint16_t)0x2000) /* Bit 1 */
-
-#define DMA_CFG7_MEM2MEM                        ((uint16_t)0x4000) /* Memory to memory mode enable */
-
-/******************  Bit definition for DMA_CNTR1 register  ******************/
-#define DMA_CNTR1_NDT                           ((uint16_t)0xFFFF) /* Number of data to Transfer */
-
-/******************  Bit definition for DMA_CNTR2 register  ******************/
-#define DMA_CNTR2_NDT                           ((uint16_t)0xFFFF) /* Number of data to Transfer */
-
-/******************  Bit definition for DMA_CNTR3 register  ******************/
-#define DMA_CNTR3_NDT                           ((uint16_t)0xFFFF) /* Number of data to Transfer */
-
-/******************  Bit definition for DMA_CNTR4 register  ******************/
-#define DMA_CNTR4_NDT                           ((uint16_t)0xFFFF) /* Number of data to Transfer */
-
-/******************  Bit definition for DMA_CNTR5 register  ******************/
-#define DMA_CNTR5_NDT                           ((uint16_t)0xFFFF) /* Number of data to Transfer */
-
-/******************  Bit definition for DMA_CNTR6 register  ******************/
-#define DMA_CNTR6_NDT                           ((uint16_t)0xFFFF) /* Number of data to Transfer */
-
-/******************  Bit definition for DMA_CNTR7 register  ******************/
-#define DMA_CNTR7_NDT                           ((uint16_t)0xFFFF) /* Number of data to Transfer */
-
-/******************  Bit definition for DMA_PADDR1 register  *******************/
-#define DMA_PADDR1_PA                           ((uint32_t)0xFFFFFFFF) /* Peripheral Address */
-
-/******************  Bit definition for DMA_PADDR2 register  *******************/
-#define DMA_PADDR2_PA                           ((uint32_t)0xFFFFFFFF) /* Peripheral Address */
-
-/******************  Bit definition for DMA_PADDR3 register  *******************/
-#define DMA_PADDR3_PA                           ((uint32_t)0xFFFFFFFF) /* Peripheral Address */
-
-/******************  Bit definition for DMA_PADDR4 register  *******************/
-#define DMA_PADDR4_PA                           ((uint32_t)0xFFFFFFFF) /* Peripheral Address */
-
-/******************  Bit definition for DMA_PADDR5 register  *******************/
-#define DMA_PADDR5_PA                           ((uint32_t)0xFFFFFFFF) /* Peripheral Address */
-
-/******************  Bit definition for DMA_PADDR6 register  *******************/
-#define DMA_PADDR6_PA                           ((uint32_t)0xFFFFFFFF) /* Peripheral Address */
-
-/******************  Bit definition for DMA_PADDR7 register  *******************/
-#define DMA_PADDR7_PA                           ((uint32_t)0xFFFFFFFF) /* Peripheral Address */
-
-/******************  Bit definition for DMA_MADDR1 register  *******************/
-#define DMA_MADDR1_MA                           ((uint32_t)0xFFFFFFFF) /* Memory Address */
-
-/******************  Bit definition for DMA_MADDR2 register  *******************/
-#define DMA_MADDR2_MA                           ((uint32_t)0xFFFFFFFF) /* Memory Address */
-
-/******************  Bit definition for DMA_MADDR3 register  *******************/
-#define DMA_MADDR3_MA                           ((uint32_t)0xFFFFFFFF) /* Memory Address */
-
-/******************  Bit definition for DMA_MADDR4 register  *******************/
-#define DMA_MADDR4_MA                           ((uint32_t)0xFFFFFFFF) /* Memory Address */
-
-/******************  Bit definition for DMA_MADDR5 register  *******************/
-#define DMA_MADDR5_MA                           ((uint32_t)0xFFFFFFFF) /* Memory Address */
-
-/******************  Bit definition for DMA_MADDR6 register  *******************/
-#define DMA_MADDR6_MA                           ((uint32_t)0xFFFFFFFF) /* Memory Address */
-
-/******************  Bit definition for DMA_MADDR7 register  *******************/
-#define DMA_MADDR7_MA                           ((uint32_t)0xFFFFFFFF) /* Memory Address */
-
-/******************************************************************************/
-/*                    External Interrupt/Event Controller                     */
-/******************************************************************************/
-
-/*******************  Bit definition for EXTI_INTENR register  *******************/
-#define EXTI_INTENR_MR0                         ((uint32_t)0x00000001) /* Interrupt Mask on line 0 */
-#define EXTI_INTENR_MR1                         ((uint32_t)0x00000002) /* Interrupt Mask on line 1 */
-#define EXTI_INTENR_MR2                         ((uint32_t)0x00000004) /* Interrupt Mask on line 2 */
-#define EXTI_INTENR_MR3                         ((uint32_t)0x00000008) /* Interrupt Mask on line 3 */
-#define EXTI_INTENR_MR4                         ((uint32_t)0x00000010) /* Interrupt Mask on line 4 */
-#define EXTI_INTENR_MR5                         ((uint32_t)0x00000020) /* Interrupt Mask on line 5 */
-#define EXTI_INTENR_MR6                         ((uint32_t)0x00000040) /* Interrupt Mask on line 6 */
-#define EXTI_INTENR_MR7                         ((uint32_t)0x00000080) /* Interrupt Mask on line 7 */
-#define EXTI_INTENR_MR8                         ((uint32_t)0x00000100) /* Interrupt Mask on line 8 */
-#define EXTI_INTENR_MR9                         ((uint32_t)0x00000200) /* Interrupt Mask on line 9 */
-
-/*******************  Bit definition for EXTI_EVENR register  *******************/
-#define EXTI_EVENR_MR0                          ((uint32_t)0x00000001) /* Event Mask on line 0 */
-#define EXTI_EVENR_MR1                          ((uint32_t)0x00000002) /* Event Mask on line 1 */
-#define EXTI_EVENR_MR2                          ((uint32_t)0x00000004) /* Event Mask on line 2 */
-#define EXTI_EVENR_MR3                          ((uint32_t)0x00000008) /* Event Mask on line 3 */
-#define EXTI_EVENR_MR4                          ((uint32_t)0x00000010) /* Event Mask on line 4 */
-#define EXTI_EVENR_MR5                          ((uint32_t)0x00000020) /* Event Mask on line 5 */
-#define EXTI_EVENR_MR6                          ((uint32_t)0x00000040) /* Event Mask on line 6 */
-#define EXTI_EVENR_MR7                          ((uint32_t)0x00000080) /* Event Mask on line 7 */
-#define EXTI_EVENR_MR8                          ((uint32_t)0x00000100) /* Event Mask on line 8 */
-#define EXTI_EVENR_MR9                          ((uint32_t)0x00000200) /* Event Mask on line 9 */
-
-/******************  Bit definition for EXTI_RTENR register  *******************/
-#define EXTI_RTENR_TR0                          ((uint32_t)0x00000001) /* Rising trigger event configuration bit of line 0 */
-#define EXTI_RTENR_TR1                          ((uint32_t)0x00000002) /* Rising trigger event configuration bit of line 1 */
-#define EXTI_RTENR_TR2                          ((uint32_t)0x00000004) /* Rising trigger event configuration bit of line 2 */
-#define EXTI_RTENR_TR3                          ((uint32_t)0x00000008) /* Rising trigger event configuration bit of line 3 */
-#define EXTI_RTENR_TR4                          ((uint32_t)0x00000010) /* Rising trigger event configuration bit of line 4 */
-#define EXTI_RTENR_TR5                          ((uint32_t)0x00000020) /* Rising trigger event configuration bit of line 5 */
-#define EXTI_RTENR_TR6                          ((uint32_t)0x00000040) /* Rising trigger event configuration bit of line 6 */
-#define EXTI_RTENR_TR7                          ((uint32_t)0x00000080) /* Rising trigger event configuration bit of line 7 */
-#define EXTI_RTENR_TR8                          ((uint32_t)0x00000100) /* Rising trigger event configuration bit of line 8 */
-#define EXTI_RTENR_TR9                          ((uint32_t)0x00000200) /* Rising trigger event configuration bit of line 9 */
-
-/******************  Bit definition for EXTI_FTENR register  *******************/
-#define EXTI_FTENR_TR0                          ((uint32_t)0x00000001) /* Falling trigger event configuration bit of line 0 */
-#define EXTI_FTENR_TR1                          ((uint32_t)0x00000002) /* Falling trigger event configuration bit of line 1 */
-#define EXTI_FTENR_TR2                          ((uint32_t)0x00000004) /* Falling trigger event configuration bit of line 2 */
-#define EXTI_FTENR_TR3                          ((uint32_t)0x00000008) /* Falling trigger event configuration bit of line 3 */
-#define EXTI_FTENR_TR4                          ((uint32_t)0x00000010) /* Falling trigger event configuration bit of line 4 */
-#define EXTI_FTENR_TR5                          ((uint32_t)0x00000020) /* Falling trigger event configuration bit of line 5 */
-#define EXTI_FTENR_TR6                          ((uint32_t)0x00000040) /* Falling trigger event configuration bit of line 6 */
-#define EXTI_FTENR_TR7                          ((uint32_t)0x00000080) /* Falling trigger event configuration bit of line 7 */
-#define EXTI_FTENR_TR8                          ((uint32_t)0x00000100) /* Falling trigger event configuration bit of line 8 */
-#define EXTI_FTENR_TR9                          ((uint32_t)0x00000200) /* Falling trigger event configuration bit of line 9 */
-
-/******************  Bit definition for EXTI_SWIEVR register  ******************/
-#define EXTI_SWIEVR_SWIEVR0                     ((uint32_t)0x00000001) /* Software Interrupt on line 0 */
-#define EXTI_SWIEVR_SWIEVR1                     ((uint32_t)0x00000002) /* Software Interrupt on line 1 */
-#define EXTI_SWIEVR_SWIEVR2                     ((uint32_t)0x00000004) /* Software Interrupt on line 2 */
-#define EXTI_SWIEVR_SWIEVR3                     ((uint32_t)0x00000008) /* Software Interrupt on line 3 */
-#define EXTI_SWIEVR_SWIEVR4                     ((uint32_t)0x00000010) /* Software Interrupt on line 4 */
-#define EXTI_SWIEVR_SWIEVR5                     ((uint32_t)0x00000020) /* Software Interrupt on line 5 */
-#define EXTI_SWIEVR_SWIEVR6                     ((uint32_t)0x00000040) /* Software Interrupt on line 6 */
-#define EXTI_SWIEVR_SWIEVR7                     ((uint32_t)0x00000080) /* Software Interrupt on line 7 */
-#define EXTI_SWIEVR_SWIEVR8                     ((uint32_t)0x00000100) /* Software Interrupt on line 8 */
-#define EXTI_SWIEVR_SWIEVR9                     ((uint32_t)0x00000200) /* Software Interrupt on line 9 */
-
-/*******************  Bit definition for EXTI_INTFR register  ********************/
-#define EXTI_INTF_INTF0                         ((uint32_t)0x00000001) /* Pending bit for line 0 */
-#define EXTI_INTF_INTF1                         ((uint32_t)0x00000002) /* Pending bit for line 1 */
-#define EXTI_INTF_INTF2                         ((uint32_t)0x00000004) /* Pending bit for line 2 */
-#define EXTI_INTF_INTF3                         ((uint32_t)0x00000008) /* Pending bit for line 3 */
-#define EXTI_INTF_INTF4                         ((uint32_t)0x00000010) /* Pending bit for line 4 */
-#define EXTI_INTF_INTF5                         ((uint32_t)0x00000020) /* Pending bit for line 5 */
-#define EXTI_INTF_INTF6                         ((uint32_t)0x00000040) /* Pending bit for line 6 */
-#define EXTI_INTF_INTF7                         ((uint32_t)0x00000080) /* Pending bit for line 7 */
-#define EXTI_INTF_INTF8                         ((uint32_t)0x00000100) /* Pending bit for line 8 */
-#define EXTI_INTF_INTF9                         ((uint32_t)0x00000200) /* Pending bit for line 9 */
-
-/******************************************************************************/
-/*                      FLASH and Option Bytes Registers                      */
-/******************************************************************************/
-
-/*******************  Bit definition for FLASH_ACTLR register  ******************/
-#define FLASH_ACTLR_LATENCY                     ((uint8_t)0x03) /* LATENCY[2:0] bits (Latency) */
-#define FLASH_ACTLR_LATENCY_0                   ((uint8_t)0x00) /* Bit 0 */
-#define FLASH_ACTLR_LATENCY_1                   ((uint8_t)0x01) /* Bit 0 */
-#define FLASH_ACTLR_LATENCY_2                   ((uint8_t)0x02) /* Bit 1 */
-
-/******************  Bit definition for FLASH_KEYR register  ******************/
-#define FLASH_KEYR_FKEYR                        ((uint32_t)0xFFFFFFFF) /* FPEC Key */
-
-/*****************  Bit definition for FLASH_OBKEYR register  ****************/
-#define FLASH_OBKEYR_OBKEYR                     ((uint32_t)0xFFFFFFFF) /* Option Byte Key */
-
-/******************  Bit definition for FLASH_STATR register  *******************/
-#define FLASH_STATR_BSY                         ((uint8_t)0x01) /* Busy */
-#define FLASH_STATR_WRPRTERR                    ((uint8_t)0x10) /* Write Protection Error */
-#define FLASH_STATR_EOP                         ((uint8_t)0x20) /* End of operation */
-
-/*******************  Bit definition for FLASH_CTLR register  *******************/
-#define FLASH_CTLR_PG                           ((uint16_t)0x0001)     /* Programming */
-#define FLASH_CTLR_PER                          ((uint16_t)0x0002)     /* Page Erase 1KByte*/
-#define FLASH_CTLR_MER                          ((uint16_t)0x0004)     /* Mass Erase */
-#define FLASH_CTLR_OPTPG                        ((uint16_t)0x0010)     /* Option Byte Programming */
-#define FLASH_CTLR_OPTER                        ((uint16_t)0x0020)     /* Option Byte Erase */
-#define FLASH_CTLR_STRT                         ((uint16_t)0x0040)     /* Start */
-#define FLASH_CTLR_LOCK                         ((uint16_t)0x0080)     /* Lock */
-#define FLASH_CTLR_OPTWRE                       ((uint16_t)0x0200)     /* Option Bytes Write Enable */
-#define FLASH_CTLR_ERRIE                        ((uint16_t)0x0400)     /* Error Interrupt Enable */
-#define FLASH_CTLR_EOPIE                        ((uint16_t)0x1000)     /* End of operation interrupt enable */
-#define FLASH_CTLR_PAGE_PG                      ((uint16_t)0x00010000) /* Page Programming 64Byte */
-#define FLASH_CTLR_PAGE_ER                      ((uint16_t)0x00020000) /* Page Erase 64Byte */
-#define FLASH_CTLR_BUF_LOAD                     ((uint16_t)0x00040000) /* Buffer Load */
-#define FLASH_CTLR_BUF_RST                      ((uint16_t)0x00080000) /* Buffer Reset */
-
-/*******************  Bit definition for FLASH_ADDR register  *******************/
-#define FLASH_ADDR_FAR                          ((uint32_t)0xFFFFFFFF) /* Flash Address */
-
-/******************  Bit definition for FLASH_OBR register  *******************/
-#define FLASH_OBR_OPTERR                        ((uint16_t)0x0001) /* Option Byte Error */
-#define FLASH_OBR_RDPRT                         ((uint16_t)0x0002) /* Read protection */
-
-#define FLASH_OBR_USER                          ((uint16_t)0x03FC) /* User Option Bytes */
-#define FLASH_OBR_WDG_SW                        ((uint16_t)0x0004) /* WDG_SW */
-#define FLASH_OBR_nRST_STOP                     ((uint16_t)0x0008) /* nRST_STOP */
-#define FLASH_OBR_nRST_STDBY                    ((uint16_t)0x0010) /* nRST_STDBY */
-#define FLASH_OBR_RST_MODE                      ((uint16_t)0x0060) /* RST_MODE */
-
-/******************  Bit definition for FLASH_WPR register  ******************/
-#define FLASH_WPR_WRP                           ((uint32_t)0xFFFFFFFF) /* Write Protect */
-
-/******************  Bit definition for FLASH_RDPR register  *******************/
-#define FLASH_RDPR_RDPR                         ((uint32_t)0x000000FF) /* Read protection option byte */
-#define FLASH_RDPR_nRDPR                        ((uint32_t)0x0000FF00) /* Read protection complemented option byte */
-
-/******************  Bit definition for FLASH_USER register  ******************/
-#define FLASH_USER_USER                         ((uint32_t)0x00FF0000) /* User option byte */
-#define FLASH_USER_nUSER                        ((uint32_t)0xFF000000) /* User complemented option byte */
-
-/******************  Bit definition for FLASH_Data0 register  *****************/
-#define FLASH_Data0_Data0                       ((uint32_t)0x000000FF) /* User data storage option byte */
-#define FLASH_Data0_nData0                      ((uint32_t)0x0000FF00) /* User data storage complemented option byte */
-
-/******************  Bit definition for FLASH_Data1 register  *****************/
-#define FLASH_Data1_Data1                       ((uint32_t)0x00FF0000) /* User data storage option byte */
-#define FLASH_Data1_nData1                      ((uint32_t)0xFF000000) /* User data storage complemented option byte */
-
-/******************  Bit definition for FLASH_WRPR0 register  ******************/
-#define FLASH_WRPR0_WRPR0                       ((uint32_t)0x000000FF) /* Flash memory write protection option bytes */
-#define FLASH_WRPR0_nWRPR0                      ((uint32_t)0x0000FF00) /* Flash memory write protection complemented option bytes */
-
-/******************  Bit definition for FLASH_WRPR1 register  ******************/
-#define FLASH_WRPR1_WRPR1                       ((uint32_t)0x00FF0000) /* Flash memory write protection option bytes */
-#define FLASH_WRPR1_nWRPR1                      ((uint32_t)0xFF000000) /* Flash memory write protection complemented option bytes */
-
-
-/******************************************************************************/
-/*                General Purpose and Alternate Function I/O                  */
-/******************************************************************************/
-
-/*******************  Bit definition for GPIO_CFGLR register  *******************/
-#define GPIO_CFGLR_MODE                         ((uint32_t)0x33333333) /* Port x mode bits */
-
-#define GPIO_CFGLR_MODE0                        ((uint32_t)0x00000003) /* MODE0[1:0] bits (Port x mode bits, pin 0) */
-#define GPIO_CFGLR_MODE0_0                      ((uint32_t)0x00000001) /* Bit 0 */
-#define GPIO_CFGLR_MODE0_1                      ((uint32_t)0x00000002) /* Bit 1 */
-
-#define GPIO_CFGLR_MODE1                        ((uint32_t)0x00000030) /* MODE1[1:0] bits (Port x mode bits, pin 1) */
-#define GPIO_CFGLR_MODE1_0                      ((uint32_t)0x00000010) /* Bit 0 */
-#define GPIO_CFGLR_MODE1_1                      ((uint32_t)0x00000020) /* Bit 1 */
-
-#define GPIO_CFGLR_MODE2                        ((uint32_t)0x00000300) /* MODE2[1:0] bits (Port x mode bits, pin 2) */
-#define GPIO_CFGLR_MODE2_0                      ((uint32_t)0x00000100) /* Bit 0 */
-#define GPIO_CFGLR_MODE2_1                      ((uint32_t)0x00000200) /* Bit 1 */
-
-#define GPIO_CFGLR_MODE3                        ((uint32_t)0x00003000) /* MODE3[1:0] bits (Port x mode bits, pin 3) */
-#define GPIO_CFGLR_MODE3_0                      ((uint32_t)0x00001000) /* Bit 0 */
-#define GPIO_CFGLR_MODE3_1                      ((uint32_t)0x00002000) /* Bit 1 */
-
-#define GPIO_CFGLR_MODE4                        ((uint32_t)0x00030000) /* MODE4[1:0] bits (Port x mode bits, pin 4) */
-#define GPIO_CFGLR_MODE4_0                      ((uint32_t)0x00010000) /* Bit 0 */
-#define GPIO_CFGLR_MODE4_1                      ((uint32_t)0x00020000) /* Bit 1 */
-
-#define GPIO_CFGLR_MODE5                        ((uint32_t)0x00300000) /* MODE5[1:0] bits (Port x mode bits, pin 5) */
-#define GPIO_CFGLR_MODE5_0                      ((uint32_t)0x00100000) /* Bit 0 */
-#define GPIO_CFGLR_MODE5_1                      ((uint32_t)0x00200000) /* Bit 1 */
-
-#define GPIO_CFGLR_MODE6                        ((uint32_t)0x03000000) /* MODE6[1:0] bits (Port x mode bits, pin 6) */
-#define GPIO_CFGLR_MODE6_0                      ((uint32_t)0x01000000) /* Bit 0 */
-#define GPIO_CFGLR_MODE6_1                      ((uint32_t)0x02000000) /* Bit 1 */
-
-#define GPIO_CFGLR_MODE7                        ((uint32_t)0x30000000) /* MODE7[1:0] bits (Port x mode bits, pin 7) */
-#define GPIO_CFGLR_MODE7_0                      ((uint32_t)0x10000000) /* Bit 0 */
-#define GPIO_CFGLR_MODE7_1                      ((uint32_t)0x20000000) /* Bit 1 */
-
-#define GPIO_CFGLR_CNF                          ((uint32_t)0xCCCCCCCC) /* Port x configuration bits */
-
-#define GPIO_CFGLR_CNF0                         ((uint32_t)0x0000000C) /* CNF0[1:0] bits (Port x configuration bits, pin 0) */
-#define GPIO_CFGLR_CNF0_0                       ((uint32_t)0x00000004) /* Bit 0 */
-#define GPIO_CFGLR_CNF0_1                       ((uint32_t)0x00000008) /* Bit 1 */
-
-#define GPIO_CFGLR_CNF1                         ((uint32_t)0x000000C0) /* CNF1[1:0] bits (Port x configuration bits, pin 1) */
-#define GPIO_CFGLR_CNF1_0                       ((uint32_t)0x00000040) /* Bit 0 */
-#define GPIO_CFGLR_CNF1_1                       ((uint32_t)0x00000080) /* Bit 1 */
-
-#define GPIO_CFGLR_CNF2                         ((uint32_t)0x00000C00) /* CNF2[1:0] bits (Port x configuration bits, pin 2) */
-#define GPIO_CFGLR_CNF2_0                       ((uint32_t)0x00000400) /* Bit 0 */
-#define GPIO_CFGLR_CNF2_1                       ((uint32_t)0x00000800) /* Bit 1 */
-
-#define GPIO_CFGLR_CNF3                         ((uint32_t)0x0000C000) /* CNF3[1:0] bits (Port x configuration bits, pin 3) */
-#define GPIO_CFGLR_CNF3_0                       ((uint32_t)0x00004000) /* Bit 0 */
-#define GPIO_CFGLR_CNF3_1                       ((uint32_t)0x00008000) /* Bit 1 */
-
-#define GPIO_CFGLR_CNF4                         ((uint32_t)0x000C0000) /* CNF4[1:0] bits (Port x configuration bits, pin 4) */
-#define GPIO_CFGLR_CNF4_0                       ((uint32_t)0x00040000) /* Bit 0 */
-#define GPIO_CFGLR_CNF4_1                       ((uint32_t)0x00080000) /* Bit 1 */
-
-#define GPIO_CFGLR_CNF5                         ((uint32_t)0x00C00000) /* CNF5[1:0] bits (Port x configuration bits, pin 5) */
-#define GPIO_CFGLR_CNF5_0                       ((uint32_t)0x00400000) /* Bit 0 */
-#define GPIO_CFGLR_CNF5_1                       ((uint32_t)0x00800000) /* Bit 1 */
-
-#define GPIO_CFGLR_CNF6                         ((uint32_t)0x0C000000) /* CNF6[1:0] bits (Port x configuration bits, pin 6) */
-#define GPIO_CFGLR_CNF6_0                       ((uint32_t)0x04000000) /* Bit 0 */
-#define GPIO_CFGLR_CNF6_1                       ((uint32_t)0x08000000) /* Bit 1 */
-
-#define GPIO_CFGLR_CNF7                         ((uint32_t)0xC0000000) /* CNF7[1:0] bits (Port x configuration bits, pin 7) */
-#define GPIO_CFGLR_CNF7_0                       ((uint32_t)0x40000000) /* Bit 0 */
-#define GPIO_CFGLR_CNF7_1                       ((uint32_t)0x80000000) /* Bit 1 */
-
-/*******************  Bit definition for GPIO_CFGHR register  *******************/
-#define GPIO_CFGHR_MODE                         ((uint32_t)0x33333333) /* Port x mode bits */
-
-#define GPIO_CFGHR_MODE8                        ((uint32_t)0x00000003) /* MODE8[1:0] bits (Port x mode bits, pin 8) */
-#define GPIO_CFGHR_MODE8_0                      ((uint32_t)0x00000001) /* Bit 0 */
-#define GPIO_CFGHR_MODE8_1                      ((uint32_t)0x00000002) /* Bit 1 */
-
-#define GPIO_CFGHR_MODE9                        ((uint32_t)0x00000030) /* MODE9[1:0] bits (Port x mode bits, pin 9) */
-#define GPIO_CFGHR_MODE9_0                      ((uint32_t)0x00000010) /* Bit 0 */
-#define GPIO_CFGHR_MODE9_1                      ((uint32_t)0x00000020) /* Bit 1 */
-
-#define GPIO_CFGHR_MODE10                       ((uint32_t)0x00000300) /* MODE10[1:0] bits (Port x mode bits, pin 10) */
-#define GPIO_CFGHR_MODE10_0                     ((uint32_t)0x00000100) /* Bit 0 */
-#define GPIO_CFGHR_MODE10_1                     ((uint32_t)0x00000200) /* Bit 1 */
-
-#define GPIO_CFGHR_MODE11                       ((uint32_t)0x00003000) /* MODE11[1:0] bits (Port x mode bits, pin 11) */
-#define GPIO_CFGHR_MODE11_0                     ((uint32_t)0x00001000) /* Bit 0 */
-#define GPIO_CFGHR_MODE11_1                     ((uint32_t)0x00002000) /* Bit 1 */
-
-#define GPIO_CFGHR_MODE12                       ((uint32_t)0x00030000) /* MODE12[1:0] bits (Port x mode bits, pin 12) */
-#define GPIO_CFGHR_MODE12_0                     ((uint32_t)0x00010000) /* Bit 0 */
-#define GPIO_CFGHR_MODE12_1                     ((uint32_t)0x00020000) /* Bit 1 */
-
-#define GPIO_CFGHR_MODE13                       ((uint32_t)0x00300000) /* MODE13[1:0] bits (Port x mode bits, pin 13) */
-#define GPIO_CFGHR_MODE13_0                     ((uint32_t)0x00100000) /* Bit 0 */
-#define GPIO_CFGHR_MODE13_1                     ((uint32_t)0x00200000) /* Bit 1 */
-
-#define GPIO_CFGHR_MODE14                       ((uint32_t)0x03000000) /* MODE14[1:0] bits (Port x mode bits, pin 14) */
-#define GPIO_CFGHR_MODE14_0                     ((uint32_t)0x01000000) /* Bit 0 */
-#define GPIO_CFGHR_MODE14_1                     ((uint32_t)0x02000000) /* Bit 1 */
-
-#define GPIO_CFGHR_MODE15                       ((uint32_t)0x30000000) /* MODE15[1:0] bits (Port x mode bits, pin 15) */
-#define GPIO_CFGHR_MODE15_0                     ((uint32_t)0x10000000) /* Bit 0 */
-#define GPIO_CFGHR_MODE15_1                     ((uint32_t)0x20000000) /* Bit 1 */
-
-#define GPIO_CFGHR_CNF                          ((uint32_t)0xCCCCCCCC) /* Port x configuration bits */
-
-#define GPIO_CFGHR_CNF8                         ((uint32_t)0x0000000C) /* CNF8[1:0] bits (Port x configuration bits, pin 8) */
-#define GPIO_CFGHR_CNF8_0                       ((uint32_t)0x00000004) /* Bit 0 */
-#define GPIO_CFGHR_CNF8_1                       ((uint32_t)0x00000008) /* Bit 1 */
-
-#define GPIO_CFGHR_CNF9                         ((uint32_t)0x000000C0) /* CNF9[1:0] bits (Port x configuration bits, pin 9) */
-#define GPIO_CFGHR_CNF9_0                       ((uint32_t)0x00000040) /* Bit 0 */
-#define GPIO_CFGHR_CNF9_1                       ((uint32_t)0x00000080) /* Bit 1 */
-
-#define GPIO_CFGHR_CNF10                        ((uint32_t)0x00000C00) /* CNF10[1:0] bits (Port x configuration bits, pin 10) */
-#define GPIO_CFGHR_CNF10_0                      ((uint32_t)0x00000400) /* Bit 0 */
-#define GPIO_CFGHR_CNF10_1                      ((uint32_t)0x00000800) /* Bit 1 */
-
-#define GPIO_CFGHR_CNF11                        ((uint32_t)0x0000C000) /* CNF11[1:0] bits (Port x configuration bits, pin 11) */
-#define GPIO_CFGHR_CNF11_0                      ((uint32_t)0x00004000) /* Bit 0 */
-#define GPIO_CFGHR_CNF11_1                      ((uint32_t)0x00008000) /* Bit 1 */
-
-#define GPIO_CFGHR_CNF12                        ((uint32_t)0x000C0000) /* CNF12[1:0] bits (Port x configuration bits, pin 12) */
-#define GPIO_CFGHR_CNF12_0                      ((uint32_t)0x00040000) /* Bit 0 */
-#define GPIO_CFGHR_CNF12_1                      ((uint32_t)0x00080000) /* Bit 1 */
-
-#define GPIO_CFGHR_CNF13                        ((uint32_t)0x00C00000) /* CNF13[1:0] bits (Port x configuration bits, pin 13) */
-#define GPIO_CFGHR_CNF13_0                      ((uint32_t)0x00400000) /* Bit 0 */
-#define GPIO_CFGHR_CNF13_1                      ((uint32_t)0x00800000) /* Bit 1 */
-
-#define GPIO_CFGHR_CNF14                        ((uint32_t)0x0C000000) /* CNF14[1:0] bits (Port x configuration bits, pin 14) */
-#define GPIO_CFGHR_CNF14_0                      ((uint32_t)0x04000000) /* Bit 0 */
-#define GPIO_CFGHR_CNF14_1                      ((uint32_t)0x08000000) /* Bit 1 */
-
-#define GPIO_CFGHR_CNF15                        ((uint32_t)0xC0000000) /* CNF15[1:0] bits (Port x configuration bits, pin 15) */
-#define GPIO_CFGHR_CNF15_0                      ((uint32_t)0x40000000) /* Bit 0 */
-#define GPIO_CFGHR_CNF15_1                      ((uint32_t)0x80000000) /* Bit 1 */
-
-/*******************  Bit definition for GPIO_INDR register  *******************/
-#define GPIO_INDR_IDR0                          ((uint16_t)0x0001) /* Port input data, bit 0 */
-#define GPIO_INDR_IDR1                          ((uint16_t)0x0002) /* Port input data, bit 1 */
-#define GPIO_INDR_IDR2                          ((uint16_t)0x0004) /* Port input data, bit 2 */
-#define GPIO_INDR_IDR3                          ((uint16_t)0x0008) /* Port input data, bit 3 */
-#define GPIO_INDR_IDR4                          ((uint16_t)0x0010) /* Port input data, bit 4 */
-#define GPIO_INDR_IDR5                          ((uint16_t)0x0020) /* Port input data, bit 5 */
-#define GPIO_INDR_IDR6                          ((uint16_t)0x0040) /* Port input data, bit 6 */
-#define GPIO_INDR_IDR7                          ((uint16_t)0x0080) /* Port input data, bit 7 */
-#define GPIO_INDR_IDR8                          ((uint16_t)0x0100) /* Port input data, bit 8 */
-#define GPIO_INDR_IDR9                          ((uint16_t)0x0200) /* Port input data, bit 9 */
-#define GPIO_INDR_IDR10                         ((uint16_t)0x0400) /* Port input data, bit 10 */
-#define GPIO_INDR_IDR11                         ((uint16_t)0x0800) /* Port input data, bit 11 */
-#define GPIO_INDR_IDR12                         ((uint16_t)0x1000) /* Port input data, bit 12 */
-#define GPIO_INDR_IDR13                         ((uint16_t)0x2000) /* Port input data, bit 13 */
-#define GPIO_INDR_IDR14                         ((uint16_t)0x4000) /* Port input data, bit 14 */
-#define GPIO_INDR_IDR15                         ((uint16_t)0x8000) /* Port input data, bit 15 */
-
-/*******************  Bit definition for GPIO_OUTDR register  *******************/
-#define GPIO_OUTDR_ODR0                         ((uint16_t)0x0001) /* Port output data, bit 0 */
-#define GPIO_OUTDR_ODR1                         ((uint16_t)0x0002) /* Port output data, bit 1 */
-#define GPIO_OUTDR_ODR2                         ((uint16_t)0x0004) /* Port output data, bit 2 */
-#define GPIO_OUTDR_ODR3                         ((uint16_t)0x0008) /* Port output data, bit 3 */
-#define GPIO_OUTDR_ODR4                         ((uint16_t)0x0010) /* Port output data, bit 4 */
-#define GPIO_OUTDR_ODR5                         ((uint16_t)0x0020) /* Port output data, bit 5 */
-#define GPIO_OUTDR_ODR6                         ((uint16_t)0x0040) /* Port output data, bit 6 */
-#define GPIO_OUTDR_ODR7                         ((uint16_t)0x0080) /* Port output data, bit 7 */
-#define GPIO_OUTDR_ODR8                         ((uint16_t)0x0100) /* Port output data, bit 8 */
-#define GPIO_OUTDR_ODR9                         ((uint16_t)0x0200) /* Port output data, bit 9 */
-#define GPIO_OUTDR_ODR10                        ((uint16_t)0x0400) /* Port output data, bit 10 */
-#define GPIO_OUTDR_ODR11                        ((uint16_t)0x0800) /* Port output data, bit 11 */
-#define GPIO_OUTDR_ODR12                        ((uint16_t)0x1000) /* Port output data, bit 12 */
-#define GPIO_OUTDR_ODR13                        ((uint16_t)0x2000) /* Port output data, bit 13 */
-#define GPIO_OUTDR_ODR14                        ((uint16_t)0x4000) /* Port output data, bit 14 */
-#define GPIO_OUTDR_ODR15                        ((uint16_t)0x8000) /* Port output data, bit 15 */
-
-/******************  Bit definition for GPIO_BSHR register  *******************/
-#define GPIO_BSHR_BS0                           ((uint32_t)0x00000001) /* Port x Set bit 0 */
-#define GPIO_BSHR_BS1                           ((uint32_t)0x00000002) /* Port x Set bit 1 */
-#define GPIO_BSHR_BS2                           ((uint32_t)0x00000004) /* Port x Set bit 2 */
-#define GPIO_BSHR_BS3                           ((uint32_t)0x00000008) /* Port x Set bit 3 */
-#define GPIO_BSHR_BS4                           ((uint32_t)0x00000010) /* Port x Set bit 4 */
-#define GPIO_BSHR_BS5                           ((uint32_t)0x00000020) /* Port x Set bit 5 */
-#define GPIO_BSHR_BS6                           ((uint32_t)0x00000040) /* Port x Set bit 6 */
-#define GPIO_BSHR_BS7                           ((uint32_t)0x00000080) /* Port x Set bit 7 */
-#define GPIO_BSHR_BS8                           ((uint32_t)0x00000100) /* Port x Set bit 8 */
-#define GPIO_BSHR_BS9                           ((uint32_t)0x00000200) /* Port x Set bit 9 */
-#define GPIO_BSHR_BS10                          ((uint32_t)0x00000400) /* Port x Set bit 10 */
-#define GPIO_BSHR_BS11                          ((uint32_t)0x00000800) /* Port x Set bit 11 */
-#define GPIO_BSHR_BS12                          ((uint32_t)0x00001000) /* Port x Set bit 12 */
-#define GPIO_BSHR_BS13                          ((uint32_t)0x00002000) /* Port x Set bit 13 */
-#define GPIO_BSHR_BS14                          ((uint32_t)0x00004000) /* Port x Set bit 14 */
-#define GPIO_BSHR_BS15                          ((uint32_t)0x00008000) /* Port x Set bit 15 */
-
-#define GPIO_BSHR_BR0                           ((uint32_t)0x00010000) /* Port x Reset bit 0 */
-#define GPIO_BSHR_BR1                           ((uint32_t)0x00020000) /* Port x Reset bit 1 */
-#define GPIO_BSHR_BR2                           ((uint32_t)0x00040000) /* Port x Reset bit 2 */
-#define GPIO_BSHR_BR3                           ((uint32_t)0x00080000) /* Port x Reset bit 3 */
-#define GPIO_BSHR_BR4                           ((uint32_t)0x00100000) /* Port x Reset bit 4 */
-#define GPIO_BSHR_BR5                           ((uint32_t)0x00200000) /* Port x Reset bit 5 */
-#define GPIO_BSHR_BR6                           ((uint32_t)0x00400000) /* Port x Reset bit 6 */
-#define GPIO_BSHR_BR7                           ((uint32_t)0x00800000) /* Port x Reset bit 7 */
-#define GPIO_BSHR_BR8                           ((uint32_t)0x01000000) /* Port x Reset bit 8 */
-#define GPIO_BSHR_BR9                           ((uint32_t)0x02000000) /* Port x Reset bit 9 */
-#define GPIO_BSHR_BR10                          ((uint32_t)0x04000000) /* Port x Reset bit 10 */
-#define GPIO_BSHR_BR11                          ((uint32_t)0x08000000) /* Port x Reset bit 11 */
-#define GPIO_BSHR_BR12                          ((uint32_t)0x10000000) /* Port x Reset bit 12 */
-#define GPIO_BSHR_BR13                          ((uint32_t)0x20000000) /* Port x Reset bit 13 */
-#define GPIO_BSHR_BR14                          ((uint32_t)0x40000000) /* Port x Reset bit 14 */
-#define GPIO_BSHR_BR15                          ((uint32_t)0x80000000) /* Port x Reset bit 15 */
-
-/*******************  Bit definition for GPIO_BCR register  *******************/
-#define GPIO_BCR_BR0                            ((uint16_t)0x0001) /* Port x Reset bit 0 */
-#define GPIO_BCR_BR1                            ((uint16_t)0x0002) /* Port x Reset bit 1 */
-#define GPIO_BCR_BR2                            ((uint16_t)0x0004) /* Port x Reset bit 2 */
-#define GPIO_BCR_BR3                            ((uint16_t)0x0008) /* Port x Reset bit 3 */
-#define GPIO_BCR_BR4                            ((uint16_t)0x0010) /* Port x Reset bit 4 */
-#define GPIO_BCR_BR5                            ((uint16_t)0x0020) /* Port x Reset bit 5 */
-#define GPIO_BCR_BR6                            ((uint16_t)0x0040) /* Port x Reset bit 6 */
-#define GPIO_BCR_BR7                            ((uint16_t)0x0080) /* Port x Reset bit 7 */
-#define GPIO_BCR_BR8                            ((uint16_t)0x0100) /* Port x Reset bit 8 */
-#define GPIO_BCR_BR9                            ((uint16_t)0x0200) /* Port x Reset bit 9 */
-#define GPIO_BCR_BR10                           ((uint16_t)0x0400) /* Port x Reset bit 10 */
-#define GPIO_BCR_BR11                           ((uint16_t)0x0800) /* Port x Reset bit 11 */
-#define GPIO_BCR_BR12                           ((uint16_t)0x1000) /* Port x Reset bit 12 */
-#define GPIO_BCR_BR13                           ((uint16_t)0x2000) /* Port x Reset bit 13 */
-#define GPIO_BCR_BR14                           ((uint16_t)0x4000) /* Port x Reset bit 14 */
-#define GPIO_BCR_BR15                           ((uint16_t)0x8000) /* Port x Reset bit 15 */
-
-/******************  Bit definition for GPIO_LCKR register  *******************/
-#define GPIO_LCK0                               ((uint32_t)0x00000001) /* Port x Lock bit 0 */
-#define GPIO_LCK1                               ((uint32_t)0x00000002) /* Port x Lock bit 1 */
-#define GPIO_LCK2                               ((uint32_t)0x00000004) /* Port x Lock bit 2 */
-#define GPIO_LCK3                               ((uint32_t)0x00000008) /* Port x Lock bit 3 */
-#define GPIO_LCK4                               ((uint32_t)0x00000010) /* Port x Lock bit 4 */
-#define GPIO_LCK5                               ((uint32_t)0x00000020) /* Port x Lock bit 5 */
-#define GPIO_LCK6                               ((uint32_t)0x00000040) /* Port x Lock bit 6 */
-#define GPIO_LCK7                               ((uint32_t)0x00000080) /* Port x Lock bit 7 */
-#define GPIO_LCK8                               ((uint32_t)0x00000100) /* Port x Lock bit 8 */
-#define GPIO_LCK9                               ((uint32_t)0x00000200) /* Port x Lock bit 9 */
-#define GPIO_LCK10                              ((uint32_t)0x00000400) /* Port x Lock bit 10 */
-#define GPIO_LCK11                              ((uint32_t)0x00000800) /* Port x Lock bit 11 */
-#define GPIO_LCK12                              ((uint32_t)0x00001000) /* Port x Lock bit 12 */
-#define GPIO_LCK13                              ((uint32_t)0x00002000) /* Port x Lock bit 13 */
-#define GPIO_LCK14                              ((uint32_t)0x00004000) /* Port x Lock bit 14 */
-#define GPIO_LCK15                              ((uint32_t)0x00008000) /* Port x Lock bit 15 */
-#define GPIO_LCKK                               ((uint32_t)0x00010000) /* Lock key */
-
-/******************  Bit definition for AFIO_PCFR1register  *******************/
-#define AFIO_PCFR1_SPI1_REMAP                   ((uint32_t)0x00000001) /* SPI1 remapping */
-#define AFIO_PCFR1_I2C1_REMAP                   ((uint32_t)0x00000002) /* I2C1 remapping */
-#define AFIO_PCFR1_USART1_REMAP                 ((uint32_t)0x00000004) /* USART1 remapping */
-#define AFIO_PCFR1_USART2_REMAP                 ((uint32_t)0x00000008) /* USART2 remapping */
-
-#define AFIO_PCFR1_USART3_REMAP                 ((uint32_t)0x00000030) /* USART3_REMAP[1:0] bits (USART3 remapping) */
-#define AFIO_PCFR1_USART3_REMAP_0               ((uint32_t)0x00000010) /* Bit 0 */
-#define AFIO_PCFR1_USART3_REMAP_1               ((uint32_t)0x00000020) /* Bit 1 */
-
-#define AFIO_PCFR1_USART3_REMAP_NOREMAP         ((uint32_t)0x00000000) /* No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */
-#define AFIO_PCFR1_USART3_REMAP_PARTIALREMAP    ((uint32_t)0x00000010) /* Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */
-#define AFIO_PCFR1_USART3_REMAP_FULLREMAP       ((uint32_t)0x00000030) /* Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */
-
-#define AFIO_PCFR1_TIM1_REMAP                   ((uint32_t)0x000000C0) /* TIM1_REMAP[1:0] bits (TIM1 remapping) */
-#define AFIO_PCFR1_TIM1_REMAP_0                 ((uint32_t)0x00000040) /* Bit 0 */
-#define AFIO_PCFR1_TIM1_REMAP_1                 ((uint32_t)0x00000080) /* Bit 1 */
-
-#define AFIO_PCFR1_TIM1_REMAP_NOREMAP           ((uint32_t)0x00000000) /* No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */
-#define AFIO_PCFR1_TIM1_REMAP_PARTIALREMAP      ((uint32_t)0x00000040) /* Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */
-#define AFIO_PCFR1_TIM1_REMAP_FULLREMAP         ((uint32_t)0x000000C0) /* Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */
-
-#define AFIO_PCFR1_TIM2_REMAP                   ((uint32_t)0x00000300) /* TIM2_REMAP[1:0] bits (TIM2 remapping) */
-#define AFIO_PCFR1_TIM2_REMAP_0                 ((uint32_t)0x00000100) /* Bit 0 */
-#define AFIO_PCFR1_TIM2_REMAP_1                 ((uint32_t)0x00000200) /* Bit 1 */
-
-#define AFIO_PCFR1_TIM2_REMAP_NOREMAP           ((uint32_t)0x00000000) /* No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */
-#define AFIO_PCFR1_TIM2_REMAP_PARTIALREMAP1     ((uint32_t)0x00000100) /* Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */
-#define AFIO_PCFR1_TIM2_REMAP_PARTIALREMAP2     ((uint32_t)0x00000200) /* Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */
-#define AFIO_PCFR1_TIM2_REMAP_FULLREMAP         ((uint32_t)0x00000300) /* Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */
-
-#define AFIO_PCFR1_TIM3_REMAP                   ((uint32_t)0x00000C00) /* TIM3_REMAP[1:0] bits (TIM3 remapping) */
-#define AFIO_PCFR1_TIM3_REMAP_0                 ((uint32_t)0x00000400) /* Bit 0 */
-#define AFIO_PCFR1_TIM3_REMAP_1                 ((uint32_t)0x00000800) /* Bit 1 */
-
-#define AFIO_PCFR1_TIM3_REMAP_NOREMAP           ((uint32_t)0x00000000) /* No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */
-#define AFIO_PCFR1_TIM3_REMAP_PARTIALREMAP      ((uint32_t)0x00000800) /* Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */
-#define AFIO_PCFR1_TIM3_REMAP_FULLREMAP         ((uint32_t)0x00000C00) /* Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */
-
-#define AFIO_PCFR1_TIM4_REMAP                   ((uint32_t)0x00001000) /* TIM4_REMAP bit (TIM4 remapping) */
-
-#define AFIO_PCFR1_CAN_REMAP                    ((uint32_t)0x00006000) /* CAN_REMAP[1:0] bits (CAN Alternate function remapping) */
-#define AFIO_PCFR1_CAN_REMAP_0                  ((uint32_t)0x00002000) /* Bit 0 */
-#define AFIO_PCFR1_CAN_REMAP_1                  ((uint32_t)0x00004000) /* Bit 1 */
-
-#define AFIO_PCFR1_CAN_REMAP_REMAP1             ((uint32_t)0x00000000) /* CANRX mapped to PA11, CANTX mapped to PA12 */
-#define AFIO_PCFR1_CAN_REMAP_REMAP2             ((uint32_t)0x00004000) /* CANRX mapped to PB8, CANTX mapped to PB9 */
-#define AFIO_PCFR1_CAN_REMAP_REMAP3             ((uint32_t)0x00006000) /* CANRX mapped to PD0, CANTX mapped to PD1 */
-
-#define AFIO_PCFR1_PA12_REMAP                   ((uint32_t)0x00008000) /* Port D0/Port D1 mapping on OSC_IN/OSC_OUT */
-#define AFIO_PCFR1_TIM5CH4_IREMAP               ((uint32_t)0x00010000) /* TIM5 Channel4 Internal Remap */
-#define AFIO_PCFR1_ADC1_ETRGINJ_REMAP           ((uint32_t)0x00020000) /* ADC 1 External Trigger Injected Conversion remapping */
-#define AFIO_PCFR1_ADC1_ETRGREG_REMAP           ((uint32_t)0x00040000) /* ADC 1 External Trigger Regular Conversion remapping */
-#define AFIO_PCFR1_ADC2_ETRGINJ_REMAP           ((uint32_t)0x00080000) /* ADC 2 External Trigger Injected Conversion remapping */
-#define AFIO_PCFR1_ADC2_ETRGREG_REMAP           ((uint32_t)0x00100000) /* ADC 2 External Trigger Regular Conversion remapping */
-
-#define AFIO_PCFR1_SWJ_CFG                      ((uint32_t)0x07000000) /* SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */
-#define AFIO_PCFR1_SWJ_CFG_0                    ((uint32_t)0x01000000) /* Bit 0 */
-#define AFIO_PCFR1_SWJ_CFG_1                    ((uint32_t)0x02000000) /* Bit 1 */
-#define AFIO_PCFR1_SWJ_CFG_2                    ((uint32_t)0x04000000) /* Bit 2 */
-
-#define AFIO_PCFR1_SWJ_CFG_RESET                ((uint32_t)0x00000000) /* Full SWJ (JTAG-DP + SW-DP) : Reset State */
-#define AFIO_PCFR1_SWJ_CFG_NOJNTRST             ((uint32_t)0x01000000) /* Full SWJ (JTAG-DP + SW-DP) but without JNTRST */
-#define AFIO_PCFR1_SWJ_CFG_JTAGDISABLE          ((uint32_t)0x02000000) /* JTAG-DP Disabled and SW-DP Enabled */
-#define AFIO_PCFR1_SWJ_CFG_DISABLE              ((uint32_t)0x04000000) /* JTAG-DP Disabled and SW-DP Disabled */
-
-/*****************  Bit definition for AFIO_EXTICR1 register  *****************/
-#define AFIO_EXTICR1_EXTI0                      ((uint16_t)0x000F) /* EXTI 0 configuration */
-#define AFIO_EXTICR1_EXTI1                      ((uint16_t)0x00F0) /* EXTI 1 configuration */
-#define AFIO_EXTICR1_EXTI2                      ((uint16_t)0x0F00) /* EXTI 2 configuration */
-#define AFIO_EXTICR1_EXTI3                      ((uint16_t)0xF000) /* EXTI 3 configuration */
-
-#define AFIO_EXTICR1_EXTI0_PA                   ((uint16_t)0x0000) /* PA[0] pin */
-#define AFIO_EXTICR1_EXTI0_PB                   ((uint16_t)0x0001) /* PB[0] pin */
-#define AFIO_EXTICR1_EXTI0_PC                   ((uint16_t)0x0002) /* PC[0] pin */
-#define AFIO_EXTICR1_EXTI0_PD                   ((uint16_t)0x0003) /* PD[0] pin */
-#define AFIO_EXTICR1_EXTI0_PE                   ((uint16_t)0x0004) /* PE[0] pin */
-#define AFIO_EXTICR1_EXTI0_PF                   ((uint16_t)0x0005) /* PF[0] pin */
-#define AFIO_EXTICR1_EXTI0_PG                   ((uint16_t)0x0006) /* PG[0] pin */
-
-#define AFIO_EXTICR1_EXTI1_PA                   ((uint16_t)0x0000) /* PA[1] pin */
-#define AFIO_EXTICR1_EXTI1_PB                   ((uint16_t)0x0010) /* PB[1] pin */
-#define AFIO_EXTICR1_EXTI1_PC                   ((uint16_t)0x0020) /* PC[1] pin */
-#define AFIO_EXTICR1_EXTI1_PD                   ((uint16_t)0x0030) /* PD[1] pin */
-#define AFIO_EXTICR1_EXTI1_PE                   ((uint16_t)0x0040) /* PE[1] pin */
-#define AFIO_EXTICR1_EXTI1_PF                   ((uint16_t)0x0050) /* PF[1] pin */
-#define AFIO_EXTICR1_EXTI1_PG                   ((uint16_t)0x0060) /* PG[1] pin */
-
-#define AFIO_EXTICR1_EXTI2_PA                   ((uint16_t)0x0000) /* PA[2] pin */
-#define AFIO_EXTICR1_EXTI2_PB                   ((uint16_t)0x0100) /* PB[2] pin */
-#define AFIO_EXTICR1_EXTI2_PC                   ((uint16_t)0x0200) /* PC[2] pin */
-#define AFIO_EXTICR1_EXTI2_PD                   ((uint16_t)0x0300) /* PD[2] pin */
-#define AFIO_EXTICR1_EXTI2_PE                   ((uint16_t)0x0400) /* PE[2] pin */
-#define AFIO_EXTICR1_EXTI2_PF                   ((uint16_t)0x0500) /* PF[2] pin */
-#define AFIO_EXTICR1_EXTI2_PG                   ((uint16_t)0x0600) /* PG[2] pin */
-
-#define AFIO_EXTICR1_EXTI3_PA                   ((uint16_t)0x0000) /* PA[3] pin */
-#define AFIO_EXTICR1_EXTI3_PB                   ((uint16_t)0x1000) /* PB[3] pin */
-#define AFIO_EXTICR1_EXTI3_PC                   ((uint16_t)0x2000) /* PC[3] pin */
-#define AFIO_EXTICR1_EXTI3_PD                   ((uint16_t)0x3000) /* PD[3] pin */
-#define AFIO_EXTICR1_EXTI3_PE                   ((uint16_t)0x4000) /* PE[3] pin */
-#define AFIO_EXTICR1_EXTI3_PF                   ((uint16_t)0x5000) /* PF[3] pin */
-#define AFIO_EXTICR1_EXTI3_PG                   ((uint16_t)0x6000) /* PG[3] pin */
-
-/******************************************************************************/
-/*                           Independent WATCHDOG                             */
-/******************************************************************************/
-
-/*******************  Bit definition for IWDG_CTLR register  ********************/
-#define IWDG_KEY                                ((uint16_t)0xFFFF) /* Key value (write only, read 0000h) */
-
-/*******************  Bit definition for IWDG_PSCR register  ********************/
-#define IWDG_PR                                 ((uint8_t)0x07) /* PR[2:0] (Prescaler divider) */
-#define IWDG_PR_0                               ((uint8_t)0x01) /* Bit 0 */
-#define IWDG_PR_1                               ((uint8_t)0x02) /* Bit 1 */
-#define IWDG_PR_2                               ((uint8_t)0x04) /* Bit 2 */
-
-/*******************  Bit definition for IWDG_RLDR register  *******************/
-#define IWDG_RL                                 ((uint16_t)0x0FFF) /* Watchdog counter reload value */
-
-/*******************  Bit definition for IWDG_STATR register  ********************/
-#define IWDG_PVU                                ((uint8_t)0x01) /* Watchdog prescaler value update */
-#define IWDG_RVU                                ((uint8_t)0x02) /* Watchdog counter reload value update */
-
-/******************************************************************************/
-/*                      Inter-integrated Circuit Interface                    */
-/******************************************************************************/
-
-/*******************  Bit definition for I2C_CTLR1 register  ********************/
-#define I2C_CTLR1_PE                            ((uint16_t)0x0001) /* Peripheral Enable */
-#define I2C_CTLR1_SMBUS                         ((uint16_t)0x0002) /* SMBus Mode */
-#define I2C_CTLR1_SMBTYPE                       ((uint16_t)0x0008) /* SMBus Type */
-#define I2C_CTLR1_ENARP                         ((uint16_t)0x0010) /* ARP Enable */
-#define I2C_CTLR1_ENPEC                         ((uint16_t)0x0020) /* PEC Enable */
-#define I2C_CTLR1_ENGC                          ((uint16_t)0x0040) /* General Call Enable */
-#define I2C_CTLR1_NOSTRETCH                     ((uint16_t)0x0080) /* Clock Stretching Disable (Slave mode) */
-#define I2C_CTLR1_START                         ((uint16_t)0x0100) /* Start Generation */
-#define I2C_CTLR1_STOP                          ((uint16_t)0x0200) /* Stop Generation */
-#define I2C_CTLR1_ACK                           ((uint16_t)0x0400) /* Acknowledge Enable */
-#define I2C_CTLR1_POS                           ((uint16_t)0x0800) /* Acknowledge/PEC Position (for data reception) */
-#define I2C_CTLR1_PEC                           ((uint16_t)0x1000) /* Packet Error Checking */
-#define I2C_CTLR1_ALERT                         ((uint16_t)0x2000) /* SMBus Alert */
-#define I2C_CTLR1_SWRST                         ((uint16_t)0x8000) /* Software Reset */
-
-/*******************  Bit definition for I2C_CTLR2 register  ********************/
-#define I2C_CTLR2_FREQ                          ((uint16_t)0x003F) /* FREQ[5:0] bits (Peripheral Clock Frequency) */
-#define I2C_CTLR2_FREQ_0                        ((uint16_t)0x0001) /* Bit 0 */
-#define I2C_CTLR2_FREQ_1                        ((uint16_t)0x0002) /* Bit 1 */
-#define I2C_CTLR2_FREQ_2                        ((uint16_t)0x0004) /* Bit 2 */
-#define I2C_CTLR2_FREQ_3                        ((uint16_t)0x0008) /* Bit 3 */
-#define I2C_CTLR2_FREQ_4                        ((uint16_t)0x0010) /* Bit 4 */
-#define I2C_CTLR2_FREQ_5                        ((uint16_t)0x0020) /* Bit 5 */
-
-#define I2C_CTLR2_ITERREN                       ((uint16_t)0x0100) /* Error Interrupt Enable */
-#define I2C_CTLR2_ITEVTEN                       ((uint16_t)0x0200) /* Event Interrupt Enable */
-#define I2C_CTLR2_ITBUFEN                       ((uint16_t)0x0400) /* Buffer Interrupt Enable */
-#define I2C_CTLR2_DMAEN                         ((uint16_t)0x0800) /* DMA Requests Enable */
-#define I2C_CTLR2_LAST                          ((uint16_t)0x1000) /* DMA Last Transfer */
-
-/*******************  Bit definition for I2C_OADDR1 register  *******************/
-#define I2C_OADDR1_ADD1_7                       ((uint16_t)0x00FE) /* Interface Address */
-#define I2C_OADDR1_ADD8_9                       ((uint16_t)0x0300) /* Interface Address */
-
-#define I2C_OADDR1_ADD0                         ((uint16_t)0x0001) /* Bit 0 */
-#define I2C_OADDR1_ADD1                         ((uint16_t)0x0002) /* Bit 1 */
-#define I2C_OADDR1_ADD2                         ((uint16_t)0x0004) /* Bit 2 */
-#define I2C_OADDR1_ADD3                         ((uint16_t)0x0008) /* Bit 3 */
-#define I2C_OADDR1_ADD4                         ((uint16_t)0x0010) /* Bit 4 */
-#define I2C_OADDR1_ADD5                         ((uint16_t)0x0020) /* Bit 5 */
-#define I2C_OADDR1_ADD6                         ((uint16_t)0x0040) /* Bit 6 */
-#define I2C_OADDR1_ADD7                         ((uint16_t)0x0080) /* Bit 7 */
-#define I2C_OADDR1_ADD8                         ((uint16_t)0x0100) /* Bit 8 */
-#define I2C_OADDR1_ADD9                         ((uint16_t)0x0200) /* Bit 9 */
-
-#define I2C_OADDR1_ADDMODE                      ((uint16_t)0x8000) /* Addressing Mode (Slave mode) */
-
-/*******************  Bit definition for I2C_OADDR2 register  *******************/
-#define I2C_OADDR2_ENDUAL                       ((uint8_t)0x01) /* Dual addressing mode enable */
-#define I2C_OADDR2_ADD2                         ((uint8_t)0xFE) /* Interface address */
-
-/********************  Bit definition for I2C_DATAR register  ********************/
-#define I2C_DR_DATAR                            ((uint8_t)0xFF) /* 8-bit Data Register */
-
-/*******************  Bit definition for I2C_STAR1 register  ********************/
-#define I2C_STAR1_SB                            ((uint16_t)0x0001) /* Start Bit (Master mode) */
-#define I2C_STAR1_ADDR                          ((uint16_t)0x0002) /* Address sent (master mode)/matched (slave mode) */
-#define I2C_STAR1_BTF                           ((uint16_t)0x0004) /* Byte Transfer Finished */
-#define I2C_STAR1_ADD10                         ((uint16_t)0x0008) /* 10-bit header sent (Master mode) */
-#define I2C_STAR1_STOPF                         ((uint16_t)0x0010) /* Stop detection (Slave mode) */
-#define I2C_STAR1_RXNE                          ((uint16_t)0x0040) /* Data Register not Empty (receivers) */
-#define I2C_STAR1_TXE                           ((uint16_t)0x0080) /* Data Register Empty (transmitters) */
-#define I2C_STAR1_BERR                          ((uint16_t)0x0100) /* Bus Error */
-#define I2C_STAR1_ARLO                          ((uint16_t)0x0200) /* Arbitration Lost (master mode) */
-#define I2C_STAR1_AF                            ((uint16_t)0x0400) /* Acknowledge Failure */
-#define I2C_STAR1_OVR                           ((uint16_t)0x0800) /* Overrun/Underrun */
-#define I2C_STAR1_PECERR                        ((uint16_t)0x1000) /* PEC Error in reception */
-#define I2C_STAR1_TIMEOUT                       ((uint16_t)0x4000) /* Timeout or Tlow Error */
-#define I2C_STAR1_SMBALERT                      ((uint16_t)0x8000) /* SMBus Alert */
-
-/*******************  Bit definition for I2C_STAR2 register  ********************/
-#define I2C_STAR2_MSL                           ((uint16_t)0x0001) /* Master/Slave */
-#define I2C_STAR2_BUSY                          ((uint16_t)0x0002) /* Bus Busy */
-#define I2C_STAR2_TRA                           ((uint16_t)0x0004) /* Transmitter/Receiver */
-#define I2C_STAR2_GENCALL                       ((uint16_t)0x0010) /* General Call Address (Slave mode) */
-#define I2C_STAR2_SMBDEFAULT                    ((uint16_t)0x0020) /* SMBus Device Default Address (Slave mode) */
-#define I2C_STAR2_SMBHOST                       ((uint16_t)0x0040) /* SMBus Host Header (Slave mode) */
-#define I2C_STAR2_DUALF                         ((uint16_t)0x0080) /* Dual Flag (Slave mode) */
-#define I2C_STAR2_PEC                           ((uint16_t)0xFF00) /* Packet Error Checking Register */
-
-/*******************  Bit definition for I2C_CKCFGR register  ********************/
-#define I2C_CKCFGR_CCR                          ((uint16_t)0x0FFF) /* Clock Control Register in Fast/Standard mode (Master mode) */
-#define I2C_CKCFGR_DUTY                         ((uint16_t)0x4000) /* Fast Mode Duty Cycle */
-#define I2C_CKCFGR_FS                           ((uint16_t)0x8000) /* I2C Master Mode Selection */
-
-/******************************************************************************/
-/*                             Power Control                                  */
-/******************************************************************************/
-
-/********************  Bit definition for PWR_CTLR register  ********************/
-#define PWR_CTLR_LPDS                           ((uint16_t)0x0001) /* Low-Power Deepsleep */
-#define PWR_CTLR_PDDS                           ((uint16_t)0x0002) /* Power Down Deepsleep */
-#define PWR_CTLR_CWUF                           ((uint16_t)0x0004) /* Clear Wakeup Flag */
-#define PWR_CTLR_CSBF                           ((uint16_t)0x0008) /* Clear Standby Flag */
-#define PWR_CTLR_PVDE                           ((uint16_t)0x0010) /* Power Voltage Detector Enable */
-
-#define PWR_CTLR_PLS                            ((uint16_t)0x00E0) /* PLS[2:0] bits (PVD Level Selection) */
-#define PWR_CTLR_PLS_0                          ((uint16_t)0x0020) /* Bit 0 */
-#define PWR_CTLR_PLS_1                          ((uint16_t)0x0040) /* Bit 1 */
-#define PWR_CTLR_PLS_2                          ((uint16_t)0x0080) /* Bit 2 */
-
-#define PWR_CTLR_PLS_2V2                        ((uint16_t)0x0000) /* PVD level 2.2V */
-#define PWR_CTLR_PLS_2V3                        ((uint16_t)0x0020) /* PVD level 2.3V */
-#define PWR_CTLR_PLS_2V4                        ((uint16_t)0x0040) /* PVD level 2.4V */
-#define PWR_CTLR_PLS_2V5                        ((uint16_t)0x0060) /* PVD level 2.5V */
-#define PWR_CTLR_PLS_2V6                        ((uint16_t)0x0080) /* PVD level 2.6V */
-#define PWR_CTLR_PLS_2V7                        ((uint16_t)0x00A0) /* PVD level 2.7V */
-#define PWR_CTLR_PLS_2V8                        ((uint16_t)0x00C0) /* PVD level 2.8V */
-#define PWR_CTLR_PLS_2V9                        ((uint16_t)0x00E0) /* PVD level 2.9V */
-
-#define PWR_CTLR_DBP                            ((uint16_t)0x0100) /* Disable Backup Domain write protection */
-
-/*******************  Bit definition for PWR_CSR register  ********************/
-#define PWR_CSR_WUF                             ((uint16_t)0x0001) /* Wakeup Flag */
-#define PWR_CSR_SBF                             ((uint16_t)0x0002) /* Standby Flag */
-#define PWR_CSR_PVDO                            ((uint16_t)0x0004) /* PVD Output */
-#define PWR_CSR_EWUP                            ((uint16_t)0x0100) /* Enable WKUP pin */
-
-/******************************************************************************/
-/*                         Reset and Clock Control                            */
-/******************************************************************************/
-
-/********************  Bit definition for RCC_CTLR register  ********************/
-#define RCC_HSION                               ((uint32_t)0x00000001) /* Internal High Speed clock enable */
-#define RCC_HSIRDY                              ((uint32_t)0x00000002) /* Internal High Speed clock ready flag */
-#define RCC_HSITRIM                             ((uint32_t)0x000000F8) /* Internal High Speed clock trimming */
-#define RCC_HSICAL                              ((uint32_t)0x0000FF00) /* Internal High Speed clock Calibration */
-#define RCC_HSEON                               ((uint32_t)0x00010000) /* External High Speed clock enable */
-#define RCC_HSERDY                              ((uint32_t)0x00020000) /* External High Speed clock ready flag */
-#define RCC_HSEBYP                              ((uint32_t)0x00040000) /* External High Speed clock Bypass */
-#define RCC_CSSON                               ((uint32_t)0x00080000) /* Clock Security System enable */
-#define RCC_PLLON                               ((uint32_t)0x01000000) /* PLL enable */
-#define RCC_PLLRDY                              ((uint32_t)0x02000000) /* PLL clock ready flag */
-
-/*******************  Bit definition for RCC_CFGR0 register  *******************/
-#define RCC_SW                                  ((uint32_t)0x00000003) /* SW[1:0] bits (System clock Switch) */
-#define RCC_SW_0                                ((uint32_t)0x00000001) /* Bit 0 */
-#define RCC_SW_1                                ((uint32_t)0x00000002) /* Bit 1 */
-
-#define RCC_SW_HSI                              ((uint32_t)0x00000000) /* HSI selected as system clock */
-#define RCC_SW_HSE                              ((uint32_t)0x00000001) /* HSE selected as system clock */
-#define RCC_SW_PLL                              ((uint32_t)0x00000002) /* PLL selected as system clock */
-
-#define RCC_SWS                                 ((uint32_t)0x0000000C) /* SWS[1:0] bits (System Clock Switch Status) */
-#define RCC_SWS_0                               ((uint32_t)0x00000004) /* Bit 0 */
-#define RCC_SWS_1                               ((uint32_t)0x00000008) /* Bit 1 */
-
-#define RCC_SWS_HSI                             ((uint32_t)0x00000000) /* HSI oscillator used as system clock */
-#define RCC_SWS_HSE                             ((uint32_t)0x00000004) /* HSE oscillator used as system clock */
-#define RCC_SWS_PLL                             ((uint32_t)0x00000008) /* PLL used as system clock */
-
-#define RCC_HPRE                                ((uint32_t)0x000000F0) /* HPRE[3:0] bits (AHB prescaler) */
-#define RCC_HPRE_0                              ((uint32_t)0x00000010) /* Bit 0 */
-#define RCC_HPRE_1                              ((uint32_t)0x00000020) /* Bit 1 */
-#define RCC_HPRE_2                              ((uint32_t)0x00000040) /* Bit 2 */
-#define RCC_HPRE_3                              ((uint32_t)0x00000080) /* Bit 3 */
-
-#define RCC_HPRE_DIV1                           ((uint32_t)0x00000000) /* SYSCLK not divided */
-#define RCC_HPRE_DIV2                           ((uint32_t)0x00000010) /* SYSCLK divided by 2 */
-#define RCC_HPRE_DIV3                           ((uint32_t)0x00000020) /* SYSCLK divided by 3 */
-#define RCC_HPRE_DIV4                           ((uint32_t)0x00000030) /* SYSCLK divided by 4 */
-#define RCC_HPRE_DIV5                           ((uint32_t)0x00000040) /* SYSCLK divided by 5 */
-#define RCC_HPRE_DIV6                           ((uint32_t)0x00000050) /* SYSCLK divided by 6 */
-#define RCC_HPRE_DIV7                           ((uint32_t)0x00000060) /* SYSCLK divided by 7 */
-#define RCC_HPRE_DIV8                           ((uint32_t)0x00000070) /* SYSCLK divided by 8 */
-#define RCC_HPRE_DIV16                          ((uint32_t)0x000000B0) /* SYSCLK divided by 16 */
-#define RCC_HPRE_DIV32                          ((uint32_t)0x000000C0) /* SYSCLK divided by 32 */
-#define RCC_HPRE_DIV64                          ((uint32_t)0x000000D0) /* SYSCLK divided by 64 */
-#define RCC_HPRE_DIV128                         ((uint32_t)0x000000E0) /* SYSCLK divided by 128 */
-#define RCC_HPRE_DIV256                         ((uint32_t)0x000000F0) /* SYSCLK divided by 256 */
-
-#define RCC_PPRE1                               ((uint32_t)0x00000700) /* PRE1[2:0] bits (APB1 prescaler) */
-#define RCC_PPRE1_0                             ((uint32_t)0x00000100) /* Bit 0 */
-#define RCC_PPRE1_1                             ((uint32_t)0x00000200) /* Bit 1 */
-#define RCC_PPRE1_2                             ((uint32_t)0x00000400) /* Bit 2 */
-
-#define RCC_PPRE1_DIV1                          ((uint32_t)0x00000000) /* HCLK not divided */
-#define RCC_PPRE1_DIV2                          ((uint32_t)0x00000400) /* HCLK divided by 2 */
-#define RCC_PPRE1_DIV4                          ((uint32_t)0x00000500) /* HCLK divided by 4 */
-#define RCC_PPRE1_DIV8                          ((uint32_t)0x00000600) /* HCLK divided by 8 */
-#define RCC_PPRE1_DIV16                         ((uint32_t)0x00000700) /* HCLK divided by 16 */
-
-#define RCC_PPRE2                               ((uint32_t)0x00003800) /* PRE2[2:0] bits (APB2 prescaler) */
-#define RCC_PPRE2_0                             ((uint32_t)0x00000800) /* Bit 0 */
-#define RCC_PPRE2_1                             ((uint32_t)0x00001000) /* Bit 1 */
-#define RCC_PPRE2_2                             ((uint32_t)0x00002000) /* Bit 2 */
-
-#define RCC_PPRE2_DIV1                          ((uint32_t)0x00000000) /* HCLK not divided */
-#define RCC_PPRE2_DIV2                          ((uint32_t)0x00002000) /* HCLK divided by 2 */
-#define RCC_PPRE2_DIV4                          ((uint32_t)0x00002800) /* HCLK divided by 4 */
-#define RCC_PPRE2_DIV8                          ((uint32_t)0x00003000) /* HCLK divided by 8 */
-#define RCC_PPRE2_DIV16                         ((uint32_t)0x00003800) /* HCLK divided by 16 */
-
-#define RCC_ADCPRE                              ((uint32_t)0x0000C000) /* ADCPRE[1:0] bits (ADC prescaler) */
-#define RCC_ADCPRE_0                            ((uint32_t)0x00004000) /* Bit 0 */
-#define RCC_ADCPRE_1                            ((uint32_t)0x00008000) /* Bit 1 */
-
-#define RCC_ADCPRE_DIV2                         ((uint32_t)0x00000000) /* PCLK2 divided by 2 */
-#define RCC_ADCPRE_DIV4                         ((uint32_t)0x00004000) /* PCLK2 divided by 4 */
-#define RCC_ADCPRE_DIV6                         ((uint32_t)0x00008000) /* PCLK2 divided by 6 */
-#define RCC_ADCPRE_DIV8                         ((uint32_t)0x0000C000) /* PCLK2 divided by 8 */
-
-#define RCC_PLLSRC                              ((uint32_t)0x00010000) /* PLL entry clock source */
-
-#define RCC_PLLXTPRE                            ((uint32_t)0x00020000) /* HSE divider for PLL entry */
-
-#define RCC_PLLMULL                             ((uint32_t)0x003C0000) /* PLLMUL[3:0] bits (PLL multiplication factor) */
-#define RCC_PLLMULL_0                           ((uint32_t)0x00040000) /* Bit 0 */
-#define RCC_PLLMULL_1                           ((uint32_t)0x00080000) /* Bit 1 */
-#define RCC_PLLMULL_2                           ((uint32_t)0x00100000) /* Bit 2 */
-#define RCC_PLLMULL_3                           ((uint32_t)0x00200000) /* Bit 3 */
-
-#define RCC_PLLSRC_HSI_Mul2                     ((uint32_t)0x00000000) /* HSI clock*2 selected as PLL entry clock source */
-#define RCC_PLLSRC_HSE_Mul2                     ((uint32_t)0x00010000) /* HSE clock*2 selected as PLL entry clock source */
-
-#define RCC_PLLXTPRE_HSE                        ((uint32_t)0x00000000) /* HSE clock not divided for PLL entry */
-#define RCC_PLLXTPRE_HSE_Div2                   ((uint32_t)0x00020000) /* HSE clock divided by 2 for PLL entry */
-
-#define RCC_PLLMULL2                            ((uint32_t)0x00000000) /* PLL input clock*2 */
-#define RCC_PLLMULL3                            ((uint32_t)0x00040000) /* PLL input clock*3 */
-#define RCC_PLLMULL4                            ((uint32_t)0x00080000) /* PLL input clock*4 */
-#define RCC_PLLMULL5                            ((uint32_t)0x000C0000) /* PLL input clock*5 */
-#define RCC_PLLMULL6                            ((uint32_t)0x00100000) /* PLL input clock*6 */
-#define RCC_PLLMULL7                            ((uint32_t)0x00140000) /* PLL input clock*7 */
-#define RCC_PLLMULL8                            ((uint32_t)0x00180000) /* PLL input clock*8 */
-#define RCC_PLLMULL9                            ((uint32_t)0x001C0000) /* PLL input clock*9 */
-#define RCC_PLLMULL10                           ((uint32_t)0x00200000) /* PLL input clock10 */
-#define RCC_PLLMULL11                           ((uint32_t)0x00240000) /* PLL input clock*11 */
-#define RCC_PLLMULL12                           ((uint32_t)0x00280000) /* PLL input clock*12 */
-#define RCC_PLLMULL13                           ((uint32_t)0x002C0000) /* PLL input clock*13 */
-#define RCC_PLLMULL14                           ((uint32_t)0x00300000) /* PLL input clock*14 */
-#define RCC_PLLMULL15                           ((uint32_t)0x00340000) /* PLL input clock*15 */
-#define RCC_PLLMULL16                           ((uint32_t)0x00380000) /* PLL input clock*16 */
-#define RCC_USBPRE                              ((uint32_t)0x00400000) /* USB Device prescaler */
-
-#define RCC_CFGR0_MCO                           ((uint32_t)0x07000000) /* MCO[2:0] bits (Microcontroller Clock Output) */
-#define RCC_MCO_0                               ((uint32_t)0x01000000) /* Bit 0 */
-#define RCC_MCO_1                               ((uint32_t)0x02000000) /* Bit 1 */
-#define RCC_MCO_2                               ((uint32_t)0x04000000) /* Bit 2 */
-
-#define RCC_MCO_NOCLOCK                         ((uint32_t)0x00000000) /* No clock */
-#define RCC_CFGR0_MCO_SYSCLK                    ((uint32_t)0x04000000) /* System clock selected as MCO source */
-#define RCC_CFGR0_MCO_HSI                       ((uint32_t)0x05000000) /* HSI clock selected as MCO source */
-#define RCC_CFGR0_MCO_HSE                       ((uint32_t)0x06000000) /* HSE clock selected as MCO source  */
-#define RCC_CFGR0_MCO_PLL                       ((uint32_t)0x07000000) /* PLL clock divided by 2 selected as MCO source */
-
-/*******************  Bit definition for RCC_INTR register  ********************/
-#define RCC_LSIRDYF                             ((uint32_t)0x00000001) /* LSI Ready Interrupt flag */
-#define RCC_LSERDYF                             ((uint32_t)0x00000002) /* LSE Ready Interrupt flag */
-#define RCC_HSIRDYF                             ((uint32_t)0x00000004) /* HSI Ready Interrupt flag */
-#define RCC_HSERDYF                             ((uint32_t)0x00000008) /* HSE Ready Interrupt flag */
-#define RCC_PLLRDYF                             ((uint32_t)0x00000010) /* PLL Ready Interrupt flag */
-#define RCC_CSSF                                ((uint32_t)0x00000080) /* Clock Security System Interrupt flag */
-#define RCC_LSIRDYIE                            ((uint32_t)0x00000100) /* LSI Ready Interrupt Enable */
-#define RCC_LSERDYIE                            ((uint32_t)0x00000200) /* LSE Ready Interrupt Enable */
-#define RCC_HSIRDYIE                            ((uint32_t)0x00000400) /* HSI Ready Interrupt Enable */
-#define RCC_HSERDYIE                            ((uint32_t)0x00000800) /* HSE Ready Interrupt Enable */
-#define RCC_PLLRDYIE                            ((uint32_t)0x00001000) /* PLL Ready Interrupt Enable */
-#define RCC_LSIRDYC                             ((uint32_t)0x00010000) /* LSI Ready Interrupt Clear */
-#define RCC_LSERDYC                             ((uint32_t)0x00020000) /* LSE Ready Interrupt Clear */
-#define RCC_HSIRDYC                             ((uint32_t)0x00040000) /* HSI Ready Interrupt Clear */
-#define RCC_HSERDYC                             ((uint32_t)0x00080000) /* HSE Ready Interrupt Clear */
-#define RCC_PLLRDYC                             ((uint32_t)0x00100000) /* PLL Ready Interrupt Clear */
-#define RCC_CSSC                                ((uint32_t)0x00800000) /* Clock Security System Interrupt Clear */
-
-/*****************  Bit definition for RCC_APB2PRSTR register  *****************/
-#define RCC_AFIORST                             ((uint32_t)0x00000001) /* Alternate Function I/O reset */
-#define RCC_IOPARST                             ((uint32_t)0x00000004) /* I/O port A reset */
-#define RCC_IOPBRST                             ((uint32_t)0x00000008) /* I/O port B reset */
-#define RCC_IOPCRST                             ((uint32_t)0x00000010) /* I/O port C reset */
-#define RCC_IOPDRST                             ((uint32_t)0x00000020) /* I/O port D reset */
-#define RCC_ADC1RST                             ((uint32_t)0x00000200) /* ADC 1 interface reset */
-
-#define RCC_ADC2RST                             ((uint32_t)0x00000400) /* ADC 2 interface reset */
-
-#define RCC_TIM1RST                             ((uint32_t)0x00000800) /* TIM1 Timer reset */
-#define RCC_SPI1RST                             ((uint32_t)0x00001000) /* SPI 1 reset */
-#define RCC_USART1RST                           ((uint32_t)0x00004000) /* USART1 reset */
-
-#define RCC_IOPERST                             ((uint32_t)0x00000040) /* I/O port E reset */
-
-/*****************  Bit definition for RCC_APB1PRSTR register  *****************/
-#define RCC_TIM2RST                             ((uint32_t)0x00000001) /* Timer 2 reset */
-#define RCC_TIM3RST                             ((uint32_t)0x00000002) /* Timer 3 reset */
-#define RCC_WWDGRST                             ((uint32_t)0x00000800) /* Window Watchdog reset */
-#define RCC_USART2RST                           ((uint32_t)0x00020000) /* USART 2 reset */
-#define RCC_I2C1RST                             ((uint32_t)0x00200000) /* I2C 1 reset */
-
-#define RCC_CAN1RST                             ((uint32_t)0x02000000) /* CAN1 reset */
-
-#define RCC_BKPRST                              ((uint32_t)0x08000000) /* Backup interface reset */
-#define RCC_PWRRST                              ((uint32_t)0x10000000) /* Power interface reset */
-
-#define RCC_TIM4RST                             ((uint32_t)0x00000004) /* Timer 4 reset */
-#define RCC_SPI2RST                             ((uint32_t)0x00004000) /* SPI 2 reset */
-#define RCC_USART3RST                           ((uint32_t)0x00040000) /* USART 3 reset */
-#define RCC_I2C2RST                             ((uint32_t)0x00400000) /* I2C 2 reset */
-
-#define RCC_USBRST                              ((uint32_t)0x00800000) /* USB Device reset */
-
-/******************  Bit definition for RCC_AHBPCENR register  ******************/
-#define RCC_DMA1EN                              ((uint16_t)0x0001) /* DMA1 clock enable */
-#define RCC_SRAMEN                              ((uint16_t)0x0004) /* SRAM interface clock enable */
-#define RCC_FLITFEN                             ((uint16_t)0x0010) /* FLITF clock enable */
-#define RCC_CRCEN                               ((uint16_t)0x0040) /* CRC clock enable */
-#define RCC_USBHD                               ((uint16_t)0x1000)
-
-/******************  Bit definition for RCC_APB2PCENR register  *****************/
-#define RCC_AFIOEN                              ((uint32_t)0x00000001) /* Alternate Function I/O clock enable */
-#define RCC_IOPAEN                              ((uint32_t)0x00000004) /* I/O port A clock enable */
-#define RCC_IOPBEN                              ((uint32_t)0x00000008) /* I/O port B clock enable */
-#define RCC_IOPCEN                              ((uint32_t)0x00000010) /* I/O port C clock enable */
-#define RCC_IOPDEN                              ((uint32_t)0x00000020) /* I/O port D clock enable */
-#define RCC_ADC1EN                              ((uint32_t)0x00000200) /* ADC 1 interface clock enable */
-
-#define RCC_ADC2EN                              ((uint32_t)0x00000400) /* ADC 2 interface clock enable */
-
-#define RCC_TIM1EN                              ((uint32_t)0x00000800) /* TIM1 Timer clock enable */
-#define RCC_SPI1EN                              ((uint32_t)0x00001000) /* SPI 1 clock enable */
-#define RCC_USART1EN                            ((uint32_t)0x00004000) /* USART1 clock enable */
-
-/*****************  Bit definition for RCC_APB1PCENR register  ******************/
-#define RCC_TIM2EN                              ((uint32_t)0x00000001) /* Timer 2 clock enabled*/
-#define RCC_TIM3EN                              ((uint32_t)0x00000002) /* Timer 3 clock enable */
-#define RCC_WWDGEN                              ((uint32_t)0x00000800) /* Window Watchdog clock enable */
-#define RCC_USART2EN                            ((uint32_t)0x00020000) /* USART 2 clock enable */
-#define RCC_I2C1EN                              ((uint32_t)0x00200000) /* I2C 1 clock enable */
-
-#define RCC_BKPEN                               ((uint32_t)0x08000000) /* Backup interface clock enable */
-#define RCC_PWREN                               ((uint32_t)0x10000000) /* Power interface clock enable */
-
-#define RCC_USBEN                               ((uint32_t)0x00800000) /* USB Device clock enable */
-
-/*******************  Bit definition for RCC_RSTSCKR register  ********************/
-#define RCC_LSION                               ((uint32_t)0x00000001) /* Internal Low Speed oscillator enable */
-#define RCC_LSIRDY                              ((uint32_t)0x00000002) /* Internal Low Speed oscillator Ready */
-#define RCC_RMVF                                ((uint32_t)0x01000000) /* Remove reset flag */
-#define RCC_PINRSTF                             ((uint32_t)0x04000000) /* PIN reset flag */
-#define RCC_PORRSTF                             ((uint32_t)0x08000000) /* POR/PDR reset flag */
-#define RCC_SFTRSTF                             ((uint32_t)0x10000000) /* Software Reset flag */
-#define RCC_IWDGRSTF                            ((uint32_t)0x20000000) /* Independent Watchdog reset flag */
-#define RCC_WWDGRSTF                            ((uint32_t)0x40000000) /* Window watchdog reset flag */
-#define RCC_LPWRRSTF                            ((uint32_t)0x80000000) /* Low-Power reset flag */
-
-/******************************************************************************/
-/*                        Serial Peripheral Interface                         */
-/******************************************************************************/
-
-/*******************  Bit definition for SPI_CTLR1 register  ********************/
-#define SPI_CTLR1_CPHA                          ((uint16_t)0x0001) /* Clock Phase */
-#define SPI_CTLR1_CPOL                          ((uint16_t)0x0002) /* Clock Polarity */
-#define SPI_CTLR1_MSTR                          ((uint16_t)0x0004) /* Master Selection */
-
-#define SPI_CTLR1_BR                            ((uint16_t)0x0038) /* BR[2:0] bits (Baud Rate Control) */
-#define SPI_CTLR1_BR_0                          ((uint16_t)0x0008) /* Bit 0 */
-#define SPI_CTLR1_BR_1                          ((uint16_t)0x0010) /* Bit 1 */
-#define SPI_CTLR1_BR_2                          ((uint16_t)0x0020) /* Bit 2 */
-
-#define SPI_CTLR1_SPE                           ((uint16_t)0x0040) /* SPI Enable */
-#define SPI_CTLR1_SSI                           ((uint16_t)0x0100) /* Internal slave select */
-#define SPI_CTLR1_SSM                           ((uint16_t)0x0200) /* Software slave management */
-#define SPI_CTLR1_RXONLY                        ((uint16_t)0x0400) /* Receive only */
-#define SPI_CTLR1_DFF                           ((uint16_t)0x0800) /* Data Frame Format */
-#define SPI_CTLR1_CRCNEXT                       ((uint16_t)0x1000) /* Transmit CRC next */
-#define SPI_CTLR1_CRCEN                         ((uint16_t)0x2000) /* Hardware CRC calculation enable */
-#define SPI_CTLR1_BIDIOE                        ((uint16_t)0x4000) /* Output enable in bidirectional mode */
-#define SPI_CTLR1_BIDIMODE                      ((uint16_t)0x8000) /* Bidirectional data mode enable */
-
-/*******************  Bit definition for SPI_CTLR2 register  ********************/
-#define SPI_CTLR2_RXDMAEN                       ((uint8_t)0x01) /* Rx Buffer DMA Enable */
-#define SPI_CTLR2_TXDMAEN                       ((uint8_t)0x02) /* Tx Buffer DMA Enable */
-#define SPI_CTLR2_SSOE                          ((uint8_t)0x04) /* SS Output Enable */
-#define SPI_CTLR2_ERRIE                         ((uint8_t)0x20) /* Error Interrupt Enable */
-#define SPI_CTLR2_RXNEIE                        ((uint8_t)0x40) /* RX buffer Not Empty Interrupt Enable */
-#define SPI_CTLR2_TXEIE                         ((uint8_t)0x80) /* Tx buffer Empty Interrupt Enable */
-
-/********************  Bit definition for SPI_STATR register  ********************/
-#define SPI_STATR_RXNE                          ((uint8_t)0x01) /* Receive buffer Not Empty */
-#define SPI_STATR_TXE                           ((uint8_t)0x02) /* Transmit buffer Empty */
-#define SPI_STATR_CHSIDE                        ((uint8_t)0x04) /* Channel side */
-#define SPI_STATR_UDR                           ((uint8_t)0x08) /* Underrun flag */
-#define SPI_STATR_CRCERR                        ((uint8_t)0x10) /* CRC Error flag */
-#define SPI_STATR_MODF                          ((uint8_t)0x20) /* Mode fault */
-#define SPI_STATR_OVR                           ((uint8_t)0x40) /* Overrun flag */
-#define SPI_STATR_BSY                           ((uint8_t)0x80) /* Busy flag */
-
-/********************  Bit definition for SPI_DATAR register  ********************/
-#define SPI_DATAR_DR                            ((uint16_t)0xFFFF) /* Data Register */
-
-/*******************  Bit definition for SPI_CRCR register  ******************/
-#define SPI_CRCR_CRCPOLY                        ((uint16_t)0xFFFF) /* CRC polynomial register */
-
-/******************  Bit definition for SPI_RCRCR register  ******************/
-#define SPI_RCRCR_RXCRC                         ((uint16_t)0xFFFF) /* Rx CRC Register */
-
-/******************  Bit definition for SPI_TCRCR register  ******************/
-#define SPI_TCRCR_TXCRC                         ((uint16_t)0xFFFF) /* Tx CRC Register */
-
-/******************************************************************************/
-/*                                    TIM                                     */
-/******************************************************************************/
-
-/*******************  Bit definition for TIM_CTLR1 register  ********************/
-#define TIM_CEN                                 ((uint16_t)0x0001) /* Counter enable */
-#define TIM_UDIS                                ((uint16_t)0x0002) /* Update disable */
-#define TIM_URS                                 ((uint16_t)0x0004) /* Update request source */
-#define TIM_OPM                                 ((uint16_t)0x0008) /* One pulse mode */
-#define TIM_DIR                                 ((uint16_t)0x0010) /* Direction */
-
-#define TIM_CMS                                 ((uint16_t)0x0060) /* CMS[1:0] bits (Center-aligned mode selection) */
-#define TIM_CMS_0                               ((uint16_t)0x0020) /* Bit 0 */
-#define TIM_CMS_1                               ((uint16_t)0x0040) /* Bit 1 */
-
-#define TIM_ARPE                                ((uint16_t)0x0080) /* Auto-reload preload enable */
-
-#define TIM_CTLR1_CKD                           ((uint16_t)0x0300) /* CKD[1:0] bits (clock division) */
-#define TIM_CKD_0                               ((uint16_t)0x0100) /* Bit 0 */
-#define TIM_CKD_1                               ((uint16_t)0x0200) /* Bit 1 */
-
-/*******************  Bit definition for TIM_CTLR2 register  ********************/
-#define TIM_CCPC                                ((uint16_t)0x0001) /* Capture/Compare Preloaded Control */
-#define TIM_CCUS                                ((uint16_t)0x0004) /* Capture/Compare Control Update Selection */
-#define TIM_CCDS                                ((uint16_t)0x0008) /* Capture/Compare DMA Selection */
-
-#define TIM_MMS                                 ((uint16_t)0x0070) /* MMS[2:0] bits (Master Mode Selection) */
-#define TIM_MMS_0                               ((uint16_t)0x0010) /* Bit 0 */
-#define TIM_MMS_1                               ((uint16_t)0x0020) /* Bit 1 */
-#define TIM_MMS_2                               ((uint16_t)0x0040) /* Bit 2 */
-
-#define TIM_TI1S                                ((uint16_t)0x0080) /* TI1 Selection */
-#define TIM_OIS1                                ((uint16_t)0x0100) /* Output Idle state 1 (OC1 output) */
-#define TIM_OIS1N                               ((uint16_t)0x0200) /* Output Idle state 1 (OC1N output) */
-#define TIM_OIS2                                ((uint16_t)0x0400) /* Output Idle state 2 (OC2 output) */
-#define TIM_OIS2N                               ((uint16_t)0x0800) /* Output Idle state 2 (OC2N output) */
-#define TIM_OIS3                                ((uint16_t)0x1000) /* Output Idle state 3 (OC3 output) */
-#define TIM_OIS3N                               ((uint16_t)0x2000) /* Output Idle state 3 (OC3N output) */
-#define TIM_OIS4                                ((uint16_t)0x4000) /* Output Idle state 4 (OC4 output) */
-
-/*******************  Bit definition for TIM_SMCFGR register  *******************/
-#define TIM_SMS                                 ((uint16_t)0x0007) /* SMS[2:0] bits (Slave mode selection) */
-#define TIM_SMS_0                               ((uint16_t)0x0001) /* Bit 0 */
-#define TIM_SMS_1                               ((uint16_t)0x0002) /* Bit 1 */
-#define TIM_SMS_2                               ((uint16_t)0x0004) /* Bit 2 */
-
-#define TIM_TS                                  ((uint16_t)0x0070) /* TS[2:0] bits (Trigger selection) */
-#define TIM_TS_0                                ((uint16_t)0x0010) /* Bit 0 */
-#define TIM_TS_1                                ((uint16_t)0x0020) /* Bit 1 */
-#define TIM_TS_2                                ((uint16_t)0x0040) /* Bit 2 */
-
-#define TIM_MSM                                 ((uint16_t)0x0080) /* Master/slave mode */
-
-#define TIM_ETF                                 ((uint16_t)0x0F00) /* ETF[3:0] bits (External trigger filter) */
-#define TIM_ETF_0                               ((uint16_t)0x0100) /* Bit 0 */
-#define TIM_ETF_1                               ((uint16_t)0x0200) /* Bit 1 */
-#define TIM_ETF_2                               ((uint16_t)0x0400) /* Bit 2 */
-#define TIM_ETF_3                               ((uint16_t)0x0800) /* Bit 3 */
-
-#define TIM_ETPS                                ((uint16_t)0x3000) /* ETPS[1:0] bits (External trigger prescaler) */
-#define TIM_ETPS_0                              ((uint16_t)0x1000) /* Bit 0 */
-#define TIM_ETPS_1                              ((uint16_t)0x2000) /* Bit 1 */
-
-#define TIM_ECE                                 ((uint16_t)0x4000) /* External clock enable */
-#define TIM_ETP                                 ((uint16_t)0x8000) /* External trigger polarity */
-
-/*******************  Bit definition for TIM_DMAINTENR register  *******************/
-#define TIM_UIE                                 ((uint16_t)0x0001) /* Update interrupt enable */
-#define TIM_CC1IE                               ((uint16_t)0x0002) /* Capture/Compare 1 interrupt enable */
-#define TIM_CC2IE                               ((uint16_t)0x0004) /* Capture/Compare 2 interrupt enable */
-#define TIM_CC3IE                               ((uint16_t)0x0008) /* Capture/Compare 3 interrupt enable */
-#define TIM_CC4IE                               ((uint16_t)0x0010) /* Capture/Compare 4 interrupt enable */
-#define TIM_COMIE                               ((uint16_t)0x0020) /* COM interrupt enable */
-#define TIM_TIE                                 ((uint16_t)0x0040) /* Trigger interrupt enable */
-#define TIM_BIE                                 ((uint16_t)0x0080) /* Break interrupt enable */
-#define TIM_UDE                                 ((uint16_t)0x0100) /* Update DMA request enable */
-#define TIM_CC1DE                               ((uint16_t)0x0200) /* Capture/Compare 1 DMA request enable */
-#define TIM_CC2DE                               ((uint16_t)0x0400) /* Capture/Compare 2 DMA request enable */
-#define TIM_CC3DE                               ((uint16_t)0x0800) /* Capture/Compare 3 DMA request enable */
-#define TIM_CC4DE                               ((uint16_t)0x1000) /* Capture/Compare 4 DMA request enable */
-#define TIM_COMDE                               ((uint16_t)0x2000) /* COM DMA request enable */
-#define TIM_TDE                                 ((uint16_t)0x4000) /* Trigger DMA request enable */
-
-/********************  Bit definition for TIM_INTFR register  ********************/
-#define TIM_UIF                                 ((uint16_t)0x0001) /* Update interrupt Flag */
-#define TIM_CC1IF                               ((uint16_t)0x0002) /* Capture/Compare 1 interrupt Flag */
-#define TIM_CC2IF                               ((uint16_t)0x0004) /* Capture/Compare 2 interrupt Flag */
-#define TIM_CC3IF                               ((uint16_t)0x0008) /* Capture/Compare 3 interrupt Flag */
-#define TIM_CC4IF                               ((uint16_t)0x0010) /* Capture/Compare 4 interrupt Flag */
-#define TIM_COMIF                               ((uint16_t)0x0020) /* COM interrupt Flag */
-#define TIM_TIF                                 ((uint16_t)0x0040) /* Trigger interrupt Flag */
-#define TIM_BIF                                 ((uint16_t)0x0080) /* Break interrupt Flag */
-#define TIM_CC1OF                               ((uint16_t)0x0200) /* Capture/Compare 1 Overcapture Flag */
-#define TIM_CC2OF                               ((uint16_t)0x0400) /* Capture/Compare 2 Overcapture Flag */
-#define TIM_CC3OF                               ((uint16_t)0x0800) /* Capture/Compare 3 Overcapture Flag */
-#define TIM_CC4OF                               ((uint16_t)0x1000) /* Capture/Compare 4 Overcapture Flag */
-
-/*******************  Bit definition for TIM_SWEVGR register  ********************/
-#define TIM_UG                                  ((uint8_t)0x01) /* Update Generation */
-#define TIM_CC1G                                ((uint8_t)0x02) /* Capture/Compare 1 Generation */
-#define TIM_CC2G                                ((uint8_t)0x04) /* Capture/Compare 2 Generation */
-#define TIM_CC3G                                ((uint8_t)0x08) /* Capture/Compare 3 Generation */
-#define TIM_CC4G                                ((uint8_t)0x10) /* Capture/Compare 4 Generation */
-#define TIM_COMG                                ((uint8_t)0x20) /* Capture/Compare Control Update Generation */
-#define TIM_TG                                  ((uint8_t)0x40) /* Trigger Generation */
-#define TIM_BG                                  ((uint8_t)0x80) /* Break Generation */
-
-/******************  Bit definition for TIM_CHCTLR1 register  *******************/
-#define TIM_CC1S                                ((uint16_t)0x0003) /* CC1S[1:0] bits (Capture/Compare 1 Selection) */
-#define TIM_CC1S_0                              ((uint16_t)0x0001) /* Bit 0 */
-#define TIM_CC1S_1                              ((uint16_t)0x0002) /* Bit 1 */
-
-#define TIM_OC1FE                               ((uint16_t)0x0004) /* Output Compare 1 Fast enable */
-#define TIM_OC1PE                               ((uint16_t)0x0008) /* Output Compare 1 Preload enable */
-
-#define TIM_OC1M                                ((uint16_t)0x0070) /* OC1M[2:0] bits (Output Compare 1 Mode) */
-#define TIM_OC1M_0                              ((uint16_t)0x0010) /* Bit 0 */
-#define TIM_OC1M_1                              ((uint16_t)0x0020) /* Bit 1 */
-#define TIM_OC1M_2                              ((uint16_t)0x0040) /* Bit 2 */
-
-#define TIM_OC1CE                               ((uint16_t)0x0080) /* Output Compare 1Clear Enable */
-
-#define TIM_CC2S                                ((uint16_t)0x0300) /* CC2S[1:0] bits (Capture/Compare 2 Selection) */
-#define TIM_CC2S_0                              ((uint16_t)0x0100) /* Bit 0 */
-#define TIM_CC2S_1                              ((uint16_t)0x0200) /* Bit 1 */
-
-#define TIM_OC2FE                               ((uint16_t)0x0400) /* Output Compare 2 Fast enable */
-#define TIM_OC2PE                               ((uint16_t)0x0800) /* Output Compare 2 Preload enable */
-
-#define TIM_OC2M                                ((uint16_t)0x7000) /* OC2M[2:0] bits (Output Compare 2 Mode) */
-#define TIM_OC2M_0                              ((uint16_t)0x1000) /* Bit 0 */
-#define TIM_OC2M_1                              ((uint16_t)0x2000) /* Bit 1 */
-#define TIM_OC2M_2                              ((uint16_t)0x4000) /* Bit 2 */
-
-#define TIM_OC2CE                               ((uint16_t)0x8000) /* Output Compare 2 Clear Enable */
-
-#define TIM_IC1PSC                              ((uint16_t)0x000C) /* IC1PSC[1:0] bits (Input Capture 1 Prescaler) */
-#define TIM_IC1PSC_0                            ((uint16_t)0x0004) /* Bit 0 */
-#define TIM_IC1PSC_1                            ((uint16_t)0x0008) /* Bit 1 */
-
-#define TIM_IC1F                                ((uint16_t)0x00F0) /* IC1F[3:0] bits (Input Capture 1 Filter) */
-#define TIM_IC1F_0                              ((uint16_t)0x0010) /* Bit 0 */
-#define TIM_IC1F_1                              ((uint16_t)0x0020) /* Bit 1 */
-#define TIM_IC1F_2                              ((uint16_t)0x0040) /* Bit 2 */
-#define TIM_IC1F_3                              ((uint16_t)0x0080) /* Bit 3 */
-
-#define TIM_IC2PSC                              ((uint16_t)0x0C00) /* IC2PSC[1:0] bits (Input Capture 2 Prescaler) */
-#define TIM_IC2PSC_0                            ((uint16_t)0x0400) /* Bit 0 */
-#define TIM_IC2PSC_1                            ((uint16_t)0x0800) /* Bit 1 */
-
-#define TIM_IC2F                                ((uint16_t)0xF000) /* IC2F[3:0] bits (Input Capture 2 Filter) */
-#define TIM_IC2F_0                              ((uint16_t)0x1000) /* Bit 0 */
-#define TIM_IC2F_1                              ((uint16_t)0x2000) /* Bit 1 */
-#define TIM_IC2F_2                              ((uint16_t)0x4000) /* Bit 2 */
-#define TIM_IC2F_3                              ((uint16_t)0x8000) /* Bit 3 */
-
-/******************  Bit definition for TIM_CHCTLR2 register  *******************/
-#define TIM_CC3S                                ((uint16_t)0x0003) /* CC3S[1:0] bits (Capture/Compare 3 Selection) */
-#define TIM_CC3S_0                              ((uint16_t)0x0001) /* Bit 0 */
-#define TIM_CC3S_1                              ((uint16_t)0x0002) /* Bit 1 */
-
-#define TIM_OC3FE                               ((uint16_t)0x0004) /* Output Compare 3 Fast enable */
-#define TIM_OC3PE                               ((uint16_t)0x0008) /* Output Compare 3 Preload enable */
-
-#define TIM_OC3M                                ((uint16_t)0x0070) /* OC3M[2:0] bits (Output Compare 3 Mode) */
-#define TIM_OC3M_0                              ((uint16_t)0x0010) /* Bit 0 */
-#define TIM_OC3M_1                              ((uint16_t)0x0020) /* Bit 1 */
-#define TIM_OC3M_2                              ((uint16_t)0x0040) /* Bit 2 */
-
-#define TIM_OC3CE                               ((uint16_t)0x0080) /* Output Compare 3 Clear Enable */
-
-#define TIM_CC4S                                ((uint16_t)0x0300) /* CC4S[1:0] bits (Capture/Compare 4 Selection) */
-#define TIM_CC4S_0                              ((uint16_t)0x0100) /* Bit 0 */
-#define TIM_CC4S_1                              ((uint16_t)0x0200) /* Bit 1 */
-
-#define TIM_OC4FE                               ((uint16_t)0x0400) /* Output Compare 4 Fast enable */
-#define TIM_OC4PE                               ((uint16_t)0x0800) /* Output Compare 4 Preload enable */
-
-#define TIM_OC4M                                ((uint16_t)0x7000) /* OC4M[2:0] bits (Output Compare 4 Mode) */
-#define TIM_OC4M_0                              ((uint16_t)0x1000) /* Bit 0 */
-#define TIM_OC4M_1                              ((uint16_t)0x2000) /* Bit 1 */
-#define TIM_OC4M_2                              ((uint16_t)0x4000) /* Bit 2 */
-
-#define TIM_OC4CE                               ((uint16_t)0x8000) /* Output Compare 4 Clear Enable */
-
-#define TIM_IC3PSC                              ((uint16_t)0x000C) /* IC3PSC[1:0] bits (Input Capture 3 Prescaler) */
-#define TIM_IC3PSC_0                            ((uint16_t)0x0004) /* Bit 0 */
-#define TIM_IC3PSC_1                            ((uint16_t)0x0008) /* Bit 1 */
-
-#define TIM_IC3F                                ((uint16_t)0x00F0) /* IC3F[3:0] bits (Input Capture 3 Filter) */
-#define TIM_IC3F_0                              ((uint16_t)0x0010) /* Bit 0 */
-#define TIM_IC3F_1                              ((uint16_t)0x0020) /* Bit 1 */
-#define TIM_IC3F_2                              ((uint16_t)0x0040) /* Bit 2 */
-#define TIM_IC3F_3                              ((uint16_t)0x0080) /* Bit 3 */
-
-#define TIM_IC4PSC                              ((uint16_t)0x0C00) /* IC4PSC[1:0] bits (Input Capture 4 Prescaler) */
-#define TIM_IC4PSC_0                            ((uint16_t)0x0400) /* Bit 0 */
-#define TIM_IC4PSC_1                            ((uint16_t)0x0800) /* Bit 1 */
-
-#define TIM_IC4F                                ((uint16_t)0xF000) /* IC4F[3:0] bits (Input Capture 4 Filter) */
-#define TIM_IC4F_0                              ((uint16_t)0x1000) /* Bit 0 */
-#define TIM_IC4F_1                              ((uint16_t)0x2000) /* Bit 1 */
-#define TIM_IC4F_2                              ((uint16_t)0x4000) /* Bit 2 */
-#define TIM_IC4F_3                              ((uint16_t)0x8000) /* Bit 3 */
-
-/*******************  Bit definition for TIM_CCER register  *******************/
-#define TIM_CC1E                                ((uint16_t)0x0001) /* Capture/Compare 1 output enable */
-#define TIM_CC1P                                ((uint16_t)0x0002) /* Capture/Compare 1 output Polarity */
-#define TIM_CC1NE                               ((uint16_t)0x0004) /* Capture/Compare 1 Complementary output enable */
-#define TIM_CC1NP                               ((uint16_t)0x0008) /* Capture/Compare 1 Complementary output Polarity */
-#define TIM_CC2E                                ((uint16_t)0x0010) /* Capture/Compare 2 output enable */
-#define TIM_CC2P                                ((uint16_t)0x0020) /* Capture/Compare 2 output Polarity */
-#define TIM_CC2NE                               ((uint16_t)0x0040) /* Capture/Compare 2 Complementary output enable */
-#define TIM_CC2NP                               ((uint16_t)0x0080) /* Capture/Compare 2 Complementary output Polarity */
-#define TIM_CC3E                                ((uint16_t)0x0100) /* Capture/Compare 3 output enable */
-#define TIM_CC3P                                ((uint16_t)0x0200) /* Capture/Compare 3 output Polarity */
-#define TIM_CC3NE                               ((uint16_t)0x0400) /* Capture/Compare 3 Complementary output enable */
-#define TIM_CC3NP                               ((uint16_t)0x0800) /* Capture/Compare 3 Complementary output Polarity */
-#define TIM_CC4E                                ((uint16_t)0x1000) /* Capture/Compare 4 output enable */
-#define TIM_CC4P                                ((uint16_t)0x2000) /* Capture/Compare 4 output Polarity */
-#define TIM_CC4NP                               ((uint16_t)0x8000) /* Capture/Compare 4 Complementary output Polarity */
-
-/*******************  Bit definition for TIM_CNT register  ********************/
-#define TIM_CNT                                 ((uint16_t)0xFFFF) /* Counter Value */
-
-/*******************  Bit definition for TIM_PSC register  ********************/
-#define TIM_PSC                                 ((uint16_t)0xFFFF) /* Prescaler Value */
-
-/*******************  Bit definition for TIM_ATRLR register  ********************/
-#define TIM_ARR                                 ((uint16_t)0xFFFF) /* actual auto-reload Value */
-
-/*******************  Bit definition for TIM_RPTCR register  ********************/
-#define TIM_REP                                 ((uint8_t)0xFF) /* Repetition Counter Value */
-
-/*******************  Bit definition for TIM_CH1CVR register  *******************/
-#define TIM_CCR1                                ((uint16_t)0xFFFF) /* Capture/Compare 1 Value */
-
-/*******************  Bit definition for TIM_CH2CVR register  *******************/
-#define TIM_CCR2                                ((uint16_t)0xFFFF) /* Capture/Compare 2 Value */
-
-/*******************  Bit definition for TIM_CH3CVR register  *******************/
-#define TIM_CCR3                                ((uint16_t)0xFFFF) /* Capture/Compare 3 Value */
-
-/*******************  Bit definition for TIM_CH4CVR register  *******************/
-#define TIM_CCR4                                ((uint16_t)0xFFFF) /* Capture/Compare 4 Value */
-
-/*******************  Bit definition for TIM_BDTR register  *******************/
-#define TIM_DTG                                 ((uint16_t)0x00FF) /* DTG[0:7] bits (Dead-Time Generator set-up) */
-#define TIM_DTG_0                               ((uint16_t)0x0001) /* Bit 0 */
-#define TIM_DTG_1                               ((uint16_t)0x0002) /* Bit 1 */
-#define TIM_DTG_2                               ((uint16_t)0x0004) /* Bit 2 */
-#define TIM_DTG_3                               ((uint16_t)0x0008) /* Bit 3 */
-#define TIM_DTG_4                               ((uint16_t)0x0010) /* Bit 4 */
-#define TIM_DTG_5                               ((uint16_t)0x0020) /* Bit 5 */
-#define TIM_DTG_6                               ((uint16_t)0x0040) /* Bit 6 */
-#define TIM_DTG_7                               ((uint16_t)0x0080) /* Bit 7 */
-
-#define TIM_LOCK                                ((uint16_t)0x0300) /* LOCK[1:0] bits (Lock Configuration) */
-#define TIM_LOCK_0                              ((uint16_t)0x0100) /* Bit 0 */
-#define TIM_LOCK_1                              ((uint16_t)0x0200) /* Bit 1 */
-
-#define TIM_OSSI                                ((uint16_t)0x0400) /* Off-State Selection for Idle mode */
-#define TIM_OSSR                                ((uint16_t)0x0800) /* Off-State Selection for Run mode */
-#define TIM_BKE                                 ((uint16_t)0x1000) /* Break enable */
-#define TIM_BKP                                 ((uint16_t)0x2000) /* Break Polarity */
-#define TIM_AOE                                 ((uint16_t)0x4000) /* Automatic Output enable */
-#define TIM_MOE                                 ((uint16_t)0x8000) /* Main Output enable */
-
-/*******************  Bit definition for TIM_DMACFGR register  ********************/
-#define TIM_DBA                                 ((uint16_t)0x001F) /* DBA[4:0] bits (DMA Base Address) */
-#define TIM_DBA_0                               ((uint16_t)0x0001) /* Bit 0 */
-#define TIM_DBA_1                               ((uint16_t)0x0002) /* Bit 1 */
-#define TIM_DBA_2                               ((uint16_t)0x0004) /* Bit 2 */
-#define TIM_DBA_3                               ((uint16_t)0x0008) /* Bit 3 */
-#define TIM_DBA_4                               ((uint16_t)0x0010) /* Bit 4 */
-
-#define TIM_DBL                                 ((uint16_t)0x1F00) /* DBL[4:0] bits (DMA Burst Length) */
-#define TIM_DBL_0                               ((uint16_t)0x0100) /* Bit 0 */
-#define TIM_DBL_1                               ((uint16_t)0x0200) /* Bit 1 */
-#define TIM_DBL_2                               ((uint16_t)0x0400) /* Bit 2 */
-#define TIM_DBL_3                               ((uint16_t)0x0800) /* Bit 3 */
-#define TIM_DBL_4                               ((uint16_t)0x1000) /* Bit 4 */
-
-/*******************  Bit definition for TIM_DMAADR register  *******************/
-#define TIM_DMAR_DMAB                           ((uint16_t)0xFFFF) /* DMA register for burst accesses */
-
-/******************************************************************************/
-/*         Universal Synchronous Asynchronous Receiver Transmitter            */
-/******************************************************************************/
-
-/*******************  Bit definition for USART_STATR register  *******************/
-#define USART_STATR_PE                          ((uint16_t)0x0001) /* Parity Error */
-#define USART_STATR_FE                          ((uint16_t)0x0002) /* Framing Error */
-#define USART_STATR_NE                          ((uint16_t)0x0004) /* Noise Error Flag */
-#define USART_STATR_ORE                         ((uint16_t)0x0008) /* OverRun Error */
-#define USART_STATR_IDLE                        ((uint16_t)0x0010) /* IDLE line detected */
-#define USART_STATR_RXNE                        ((uint16_t)0x0020) /* Read Data Register Not Empty */
-#define USART_STATR_TC                          ((uint16_t)0x0040) /* Transmission Complete */
-#define USART_STATR_TXE                         ((uint16_t)0x0080) /* Transmit Data Register Empty */
-#define USART_STATR_LBD                         ((uint16_t)0x0100) /* LIN Break Detection Flag */
-#define USART_STATR_CTS                         ((uint16_t)0x0200) /* CTS Flag */
-
-/*******************  Bit definition for USART_DATAR register  *******************/
-#define USART_DATAR_DR                          ((uint16_t)0x01FF) /* Data value */
-
-/******************  Bit definition for USART_BRR register  *******************/
-#define USART_BRR_DIV_Fraction                  ((uint16_t)0x000F) /* Fraction of USARTDIV */
-#define USART_BRR_DIV_Mantissa                  ((uint16_t)0xFFF0) /* Mantissa of USARTDIV */
-
-/******************  Bit definition for USART_CTLR1 register  *******************/
-#define USART_CTLR1_SBK                         ((uint16_t)0x0001) /* Send Break */
-#define USART_CTLR1_RWU                         ((uint16_t)0x0002) /* Receiver wakeup */
-#define USART_CTLR1_RE                          ((uint16_t)0x0004) /* Receiver Enable */
-#define USART_CTLR1_TE                          ((uint16_t)0x0008) /* Transmitter Enable */
-#define USART_CTLR1_IDLEIE                      ((uint16_t)0x0010) /* IDLE Interrupt Enable */
-#define USART_CTLR1_RXNEIE                      ((uint16_t)0x0020) /* RXNE Interrupt Enable */
-#define USART_CTLR1_TCIE                        ((uint16_t)0x0040) /* Transmission Complete Interrupt Enable */
-#define USART_CTLR1_TXEIE                       ((uint16_t)0x0080) /* PE Interrupt Enable */
-#define USART_CTLR1_PEIE                        ((uint16_t)0x0100) /* PE Interrupt Enable */
-#define USART_CTLR1_PS                          ((uint16_t)0x0200) /* Parity Selection */
-#define USART_CTLR1_PCE                         ((uint16_t)0x0400) /* Parity Control Enable */
-#define USART_CTLR1_WAKE                        ((uint16_t)0x0800) /* Wakeup method */
-#define USART_CTLR1_M                           ((uint16_t)0x1000) /* Word length */
-#define USART_CTLR1_UE                          ((uint16_t)0x2000) /* USART Enable */
-#define USART_CTLR1_OVER8                       ((uint16_t)0x8000) /* USART Oversmapling 8-bits */
-
-/******************  Bit definition for USART_CTLR2 register  *******************/
-#define USART_CTLR2_ADD                         ((uint16_t)0x000F) /* Address of the USART node */
-#define USART_CTLR2_LBDL                        ((uint16_t)0x0020) /* LIN Break Detection Length */
-#define USART_CTLR2_LBDIE                       ((uint16_t)0x0040) /* LIN Break Detection Interrupt Enable */
-#define USART_CTLR2_LBCL                        ((uint16_t)0x0100) /* Last Bit Clock pulse */
-#define USART_CTLR2_CPHA                        ((uint16_t)0x0200) /* Clock Phase */
-#define USART_CTLR2_CPOL                        ((uint16_t)0x0400) /* Clock Polarity */
-#define USART_CTLR2_CLKEN                       ((uint16_t)0x0800) /* Clock Enable */
-
-#define USART_CTLR2_STOP                        ((uint16_t)0x3000) /* STOP[1:0] bits (STOP bits) */
-#define USART_CTLR2_STOP_0                      ((uint16_t)0x1000) /* Bit 0 */
-#define USART_CTLR2_STOP_1                      ((uint16_t)0x2000) /* Bit 1 */
-
-#define USART_CTLR2_LINEN                       ((uint16_t)0x4000) /* LIN mode enable */
-
-/******************  Bit definition for USART_CTLR3 register  *******************/
-#define USART_CTLR3_EIE                         ((uint16_t)0x0001) /* Error Interrupt Enable */
-#define USART_CTLR3_IREN                        ((uint16_t)0x0002) /* IrDA mode Enable */
-#define USART_CTLR3_IRLP                        ((uint16_t)0x0004) /* IrDA Low-Power */
-#define USART_CTLR3_HDSEL                       ((uint16_t)0x0008) /* Half-Duplex Selection */
-#define USART_CTLR3_NACK                        ((uint16_t)0x0010) /* Smartcard NACK enable */
-#define USART_CTLR3_SCEN                        ((uint16_t)0x0020) /* Smartcard mode enable */
-#define USART_CTLR3_DMAR                        ((uint16_t)0x0040) /* DMA Enable Receiver */
-#define USART_CTLR3_DMAT                        ((uint16_t)0x0080) /* DMA Enable Transmitter */
-#define USART_CTLR3_RTSE                        ((uint16_t)0x0100) /* RTS Enable */
-#define USART_CTLR3_CTSE                        ((uint16_t)0x0200) /* CTS Enable */
-#define USART_CTLR3_CTSIE                       ((uint16_t)0x0400) /* CTS Interrupt Enable */
-#define USART_CTLR3_ONEBIT                      ((uint16_t)0x0800) /* One Bit method */
-
-/******************  Bit definition for USART_GPR register  ******************/
-#define USART_GPR_PSC                           ((uint16_t)0x00FF) /* PSC[7:0] bits (Prescaler value) */
-#define USART_GPR_PSC_0                         ((uint16_t)0x0001) /* Bit 0 */
-#define USART_GPR_PSC_1                         ((uint16_t)0x0002) /* Bit 1 */
-#define USART_GPR_PSC_2                         ((uint16_t)0x0004) /* Bit 2 */
-#define USART_GPR_PSC_3                         ((uint16_t)0x0008) /* Bit 3 */
-#define USART_GPR_PSC_4                         ((uint16_t)0x0010) /* Bit 4 */
-#define USART_GPR_PSC_5                         ((uint16_t)0x0020) /* Bit 5 */
-#define USART_GPR_PSC_6                         ((uint16_t)0x0040) /* Bit 6 */
-#define USART_GPR_PSC_7                         ((uint16_t)0x0080) /* Bit 7 */
-
-#define USART_GPR_GT                            ((uint16_t)0xFF00) /* Guard time value */
-
-/******************************************************************************/
-/*                            Window WATCHDOG                                 */
-/******************************************************************************/
-
-/*******************  Bit definition for WWDG_CTLR register  ********************/
-#define WWDG_CTLR_T                             ((uint8_t)0x7F) /* T[6:0] bits (7-Bit counter (MSB to LSB)) */
-#define WWDG_CTLR_T0                            ((uint8_t)0x01) /* Bit 0 */
-#define WWDG_CTLR_T1                            ((uint8_t)0x02) /* Bit 1 */
-#define WWDG_CTLR_T2                            ((uint8_t)0x04) /* Bit 2 */
-#define WWDG_CTLR_T3                            ((uint8_t)0x08) /* Bit 3 */
-#define WWDG_CTLR_T4                            ((uint8_t)0x10) /* Bit 4 */
-#define WWDG_CTLR_T5                            ((uint8_t)0x20) /* Bit 5 */
-#define WWDG_CTLR_T6                            ((uint8_t)0x40) /* Bit 6 */
-
-#define WWDG_CTLR_WDGA                          ((uint8_t)0x80) /* Activation bit */
-
-/*******************  Bit definition for WWDG_CFGR register  *******************/
-#define WWDG_CFGR_W                             ((uint16_t)0x007F) /* W[6:0] bits (7-bit window value) */
-#define WWDG_CFGR_W0                            ((uint16_t)0x0001) /* Bit 0 */
-#define WWDG_CFGR_W1                            ((uint16_t)0x0002) /* Bit 1 */
-#define WWDG_CFGR_W2                            ((uint16_t)0x0004) /* Bit 2 */
-#define WWDG_CFGR_W3                            ((uint16_t)0x0008) /* Bit 3 */
-#define WWDG_CFGR_W4                            ((uint16_t)0x0010) /* Bit 4 */
-#define WWDG_CFGR_W5                            ((uint16_t)0x0020) /* Bit 5 */
-#define WWDG_CFGR_W6                            ((uint16_t)0x0040) /* Bit 6 */
-
-#define WWDG_CFGR_WDGTB                         ((uint16_t)0x0180) /* WDGTB[1:0] bits (Timer Base) */
-#define WWDG_CFGR_WDGTB0                        ((uint16_t)0x0080) /* Bit 0 */
-#define WWDG_CFGR_WDGTB1                        ((uint16_t)0x0100) /* Bit 1 */
-
-#define WWDG_CFGR_EWI                           ((uint16_t)0x0200) /* Early Wakeup Interrupt */
-
-/*******************  Bit definition for WWDG_STATR register  ********************/
-#define WWDG_STATR_EWIF                         ((uint8_t)0x01) /* Early Wakeup Interrupt Flag */
-
-/******************************************************************************/
-/*                          ENHANCED FUNNCTION                                */
-/******************************************************************************/
-
-/****************************  Enhanced register  *****************************/
-#define EXTEN_LOCKUP_EN                         ((uint32_t)0x00000040) /* Bit 6 */
-#define EXTEN_LOCKUP_RSTF                       ((uint32_t)0x00000080) /* Bit 7 */
-
-#define EXTEN_LDO_TRIM                          ((uint32_t)0x00000400) /* Bit 10 */
-
-#define EXTEN_OPA_EN                            ((uint32_t)0x00010000)
-#define EXTEN_OPA_NSEL                          ((uint32_t)0x00020000)
-#define EXTEN_OPA_PSEL                          ((uint32_t)0x00040000)
-
-#include <ch32v00x_conf.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __CH32V00x_H */
diff --git a/attic/ch32v003evt/ch32v00x_conf.h b/attic/ch32v003evt/ch32v00x_conf.h
deleted file mode 100644
index 217af40..0000000
--- a/attic/ch32v003evt/ch32v00x_conf.h
+++ /dev/null
@@ -1,1813 +0,0 @@
-/*
- * This file contains the contents of various parts of the evt.
- * 
- * The collection of this file was generated by cnlohr, 2023-02-18
- *
- * Contents subject to below copyright where applicable by law. 
- *
- * (IANAL, BUT Because it is an interface, it is unlikely protected by copyright)
- *
- *********************************** (C) COPYRIGHT *******************************
- * File Name          : ------------------
- * Author             : WCH
- * Version            : V1.0.0
- * Date               : 2020/08/08
- * Description        : Library configuration file.
-*********************************************************************************
-* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
-* Attention: This software (modified or not) and binary are used for 
-* microcontroller manufactured by Nanjing Qinheng Microelectronics.
-*******************************************************************************/
-#ifndef __CH32V00x_CONF_H
-#define __CH32V00x_CONF_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-// Tricky: We need to make sure main and SystemInit() are preserved.
-int main() __attribute__((used));
-void SystemInit(void) __attribute__((used));
-
-// Useful functions
-void SystemInit48HSI( void );
-
-#define UART_BAUD_RATE 115200
-#define OVER8DIV 4
-#define INTEGER_DIVIDER (((25 * (APB_CLOCK)) / ((OVER8DIV) * (UART_BAUD_RATE))))
-#define FRACTIONAL_DIVIDER ((INTEGER_DIVIDER)%100)
-#define UART_BRR ((((INTEGER_DIVIDER) / 100) << 4) | (((((FRACTIONAL_DIVIDER) * ((OVER8DIV)*2)) + 50)/100)&7))
-// Put an output debug UART on Pin D5.
-// You can write to this with printf(...) or puts(...)
-// Call with SetupUART( UART_BRR )
-void SetupUART( int uartBRR );
-
-
-/* ch32v00x_gpio.c -----------------------------------------------------------*/
-/* MASK */
-#define LSB_MASK                  ((uint16_t)0xFFFF)
-#define DBGAFR_POSITION_MASK      ((uint32_t)0x000F0000)
-#define DBGAFR_SDI_MASK           ((uint32_t)0xF8FFFFFF)
-#define DBGAFR_LOCATION_MASK      ((uint32_t)0x00200000)
-#define DBGAFR_NUMBITS_MASK       ((uint32_t)0x00100000)
-
-
-/* ch32v00x_adc.c ------------------------------------------------------------*/
-/*
-/* ADC DISCNUM mask */
-#define CTLR1_DISCNUM_Reset              ((uint32_t)0xFFFF1FFF)
-
-/* ADC DISCEN mask */
-#define CTLR1_DISCEN_Set                 ((uint32_t)0x00000800)
-#define CTLR1_DISCEN_Reset               ((uint32_t)0xFFFFF7FF)
-
-/* ADC JAUTO mask */
-#define CTLR1_JAUTO_Set                  ((uint32_t)0x00000400)
-#define CTLR1_JAUTO_Reset                ((uint32_t)0xFFFFFBFF)
-
-/* ADC JDISCEN mask */
-#define CTLR1_JDISCEN_Set                ((uint32_t)0x00001000)
-#define CTLR1_JDISCEN_Reset              ((uint32_t)0xFFFFEFFF)
-
-/* ADC AWDCH mask */
-#define CTLR1_AWDCH_Reset                ((uint32_t)0xFFFFFFE0)
-
-/* ADC Analog watchdog enable mode mask */
-#define CTLR1_AWDMode_Reset              ((uint32_t)0xFF3FFDFF)
-
-///* CTLR1 register Mask */
-//Editor's Note: Overloaded Definition
-#define ADC_CTLR1_CLEAR_Mask                 ((uint32_t)0xFFF0FEFF)
-
-/* ADC ADON mask */
-#define CTLR2_ADON_Set                   ((uint32_t)0x00000001)
-#define CTLR2_ADON_Reset                 ((uint32_t)0xFFFFFFFE)
-
-/* ADC DMA mask */
-#define CTLR2_DMA_Set                    ((uint32_t)0x00000100)
-#define CTLR2_DMA_Reset                  ((uint32_t)0xFFFFFEFF)
-
-/* ADC RSTCAL mask */
-#define CTLR2_RSTCAL_Set                 ((uint32_t)0x00000008)
-
-/* ADC CAL mask */
-#define CTLR2_CAL_Set                    ((uint32_t)0x00000004)
-
-/* ADC SWSTART mask */
-#define CTLR2_SWSTART_Set                ((uint32_t)0x00400000)
-
-/* ADC EXTTRIG mask */
-#define CTLR2_EXTTRIG_Set                ((uint32_t)0x00100000)
-#define CTLR2_EXTTRIG_Reset              ((uint32_t)0xFFEFFFFF)
-
-/* ADC Software start mask */
-#define CTLR2_EXTTRIG_SWSTART_Set        ((uint32_t)0x00500000)
-#define CTLR2_EXTTRIG_SWSTART_Reset      ((uint32_t)0xFFAFFFFF)
-
-/* ADC JEXTSEL mask */
-#define CTLR2_JEXTSEL_Reset              ((uint32_t)0xFFFF8FFF)
-
-/* ADC JEXTTRIG mask */
-#define CTLR2_JEXTTRIG_Set               ((uint32_t)0x00008000)
-#define CTLR2_JEXTTRIG_Reset             ((uint32_t)0xFFFF7FFF)
-
-/* ADC JSWSTART mask */
-#define CTLR2_JSWSTART_Set               ((uint32_t)0x00200000)
-
-/* ADC injected software start mask */
-#define CTLR2_JEXTTRIG_JSWSTART_Set      ((uint32_t)0x00208000)
-#define CTLR2_JEXTTRIG_JSWSTART_Reset    ((uint32_t)0xFFDF7FFF)
-
-/* ADC TSPD mask */
-#define CTLR2_TSVREFE_Set                ((uint32_t)0x00800000)
-#define CTLR2_TSVREFE_Reset              ((uint32_t)0xFF7FFFFF)
-
-/* CTLR2 register Mask */
-#define CTLR2_CLEAR_Mask                 ((uint32_t)0xFFF1F7FD)
-
-/* ADC SQx mask */
-#define RSQR3_SQ_Set                     ((uint32_t)0x0000001F)
-#define RSQR2_SQ_Set                     ((uint32_t)0x0000001F)
-#define RSQR1_SQ_Set                     ((uint32_t)0x0000001F)
-
-/* RSQR1 register Mask */
-#define RSQR1_CLEAR_Mask                 ((uint32_t)0xFF0FFFFF)
-
-/* ADC JSQx mask */
-#define ISQR_JSQ_Set                     ((uint32_t)0x0000001F)
-
-/* ADC JL mask */
-#define ISQR_JL_Set                      ((uint32_t)0x00300000)
-#define ISQR_JL_Reset                    ((uint32_t)0xFFCFFFFF)
-
-/* ADC SMPx mask */
-#define SAMPTR1_SMP_Set                  ((uint32_t)0x00000007)
-#define SAMPTR2_SMP_Set                  ((uint32_t)0x00000007)
-
-/* ADC IDATARx registers offset */
-#define IDATAR_Offset                    ((uint8_t)0x28)
-
-
-/* ch32v00x_dbgmcu.c ---------------------------------------------------------*/
-#define IDCODE_DEVID_MASK    ((uint32_t)0x0000FFFF)
-
-
-/* ch32v00x_dma.c ------------------------------------------------------------*/
-
-/* DMA1 Channelx interrupt pending bit masks */
-#define DMA1_Channel1_IT_Mask    ((uint32_t)(DMA_GIF1 | DMA_TCIF1 | DMA_HTIF1 | DMA_TEIF1))
-#define DMA1_Channel2_IT_Mask    ((uint32_t)(DMA_GIF2 | DMA_TCIF2 | DMA_HTIF2 | DMA_TEIF2))
-#define DMA1_Channel3_IT_Mask    ((uint32_t)(DMA_GIF3 | DMA_TCIF3 | DMA_HTIF3 | DMA_TEIF3))
-#define DMA1_Channel4_IT_Mask    ((uint32_t)(DMA_GIF4 | DMA_TCIF4 | DMA_HTIF4 | DMA_TEIF4))
-#define DMA1_Channel5_IT_Mask    ((uint32_t)(DMA_GIF5 | DMA_TCIF5 | DMA_HTIF5 | DMA_TEIF5))
-#define DMA1_Channel6_IT_Mask    ((uint32_t)(DMA_GIF6 | DMA_TCIF6 | DMA_HTIF6 | DMA_TEIF6))
-#define DMA1_Channel7_IT_Mask    ((uint32_t)(DMA_GIF7 | DMA_TCIF7 | DMA_HTIF7 | DMA_TEIF7))
-
-/* DMA2 FLAG mask */
-// Editor's note: Overloaded Definition.
-#define DMA2_FLAG_Mask                ((uint32_t)0x10000000)
-
-/* DMA registers Masks */
-#define CFGR_CLEAR_Mask          ((uint32_t)0xFFFF800F)
-
-/* ch32v00x_exti.c -----------------------------------------------------------*/
-
-
-/* No interrupt selected */
-#define EXTI_LINENONE    ((uint32_t)0x00000)
-
-/* ch32v00x_flash.c ----------------------------------------------------------*/
-
-/* Flash Access Control Register bits */
-#define ACR_LATENCY_Mask           ((uint32_t)0x00000038)
-
-/* Flash Control Register bits */
-#define CR_PG_Set                  ((uint32_t)0x00000001)
-#define CR_PG_Reset                ((uint32_t)0xFFFFFFFE)
-#define CR_PER_Set                 ((uint32_t)0x00000002)
-#define CR_PER_Reset               ((uint32_t)0xFFFFFFFD)
-#define CR_MER_Set                 ((uint32_t)0x00000004)
-#define CR_MER_Reset               ((uint32_t)0xFFFFFFFB)
-#define CR_OPTPG_Set               ((uint32_t)0x00000010)
-#define CR_OPTPG_Reset             ((uint32_t)0xFFFFFFEF)
-#define CR_OPTER_Set               ((uint32_t)0x00000020)
-#define CR_OPTER_Reset             ((uint32_t)0xFFFFFFDF)
-#define CR_STRT_Set                ((uint32_t)0x00000040)
-#define CR_LOCK_Set                ((uint32_t)0x00000080)
-#define CR_PAGE_PG                 ((uint32_t)0x00010000)
-#define CR_PAGE_ER                 ((uint32_t)0x00020000)
-#define CR_BUF_LOAD                ((uint32_t)0x00040000)
-#define CR_BUF_RST                 ((uint32_t)0x00080000)
-
-/* FLASH Status Register bits */
-#define SR_BSY                     ((uint32_t)0x00000001)
-#define SR_WRPRTERR                ((uint32_t)0x00000010)
-#define SR_EOP                     ((uint32_t)0x00000020)
-
-/* FLASH Mask */
-#define RDPRT_Mask                 ((uint32_t)0x00000002)
-#define WRP0_Mask                  ((uint32_t)0x000000FF)
-#define WRP1_Mask                  ((uint32_t)0x0000FF00)
-#define WRP2_Mask                  ((uint32_t)0x00FF0000)
-#define WRP3_Mask                  ((uint32_t)0xFF000000)
-
-/* FLASH Keys */
-#define RDP_Key                    ((uint16_t)0x00A5)
-#define FLASH_KEY1                 ((uint32_t)0x45670123)
-#define FLASH_KEY2                 ((uint32_t)0xCDEF89AB)
-
-/* FLASH BANK address */
-#define FLASH_BANK1_END_ADDRESS    ((uint32_t)0x807FFFF)
-
-/* Delay definition */
-#define EraseTimeout               ((uint32_t)0x000B0000)
-#define ProgramTimeout             ((uint32_t)0x00002000)
-
-/* Flash Program Vaild Address */
-#define ValidAddrStart             (FLASH_BASE)
-#define ValidAddrEnd               (FLASH_BASE + 0x4000)
-
-/* ch32v00x_i2c.c ------------------------------------------------------------*/
-
-
-/* I2C SPE mask */
-#define CTLR1_PE_Set             ((uint16_t)0x0001)
-#define CTLR1_PE_Reset           ((uint16_t)0xFFFE)
-
-/* I2C START mask */
-#define CTLR1_START_Set          ((uint16_t)0x0100)
-#define CTLR1_START_Reset        ((uint16_t)0xFEFF)
-
-/* I2C STOP mask */
-#define CTLR1_STOP_Set           ((uint16_t)0x0200)
-#define CTLR1_STOP_Reset         ((uint16_t)0xFDFF)
-
-/* I2C ACK mask */
-#define CTLR1_ACK_Set            ((uint16_t)0x0400)
-#define CTLR1_ACK_Reset          ((uint16_t)0xFBFF)
-
-/* I2C ENGC mask */
-#define CTLR1_ENGC_Set           ((uint16_t)0x0040)
-#define CTLR1_ENGC_Reset         ((uint16_t)0xFFBF)
-
-/* I2C SWRST mask */
-#define CTLR1_SWRST_Set          ((uint16_t)0x8000)
-#define CTLR1_SWRST_Reset        ((uint16_t)0x7FFF)
-
-/* I2C PEC mask */
-#define CTLR1_PEC_Set            ((uint16_t)0x1000)
-#define CTLR1_PEC_Reset          ((uint16_t)0xEFFF)
-
-/* I2C ENPEC mask */
-#define CTLR1_ENPEC_Set          ((uint16_t)0x0020)
-#define CTLR1_ENPEC_Reset        ((uint16_t)0xFFDF)
-
-/* I2C ENARP mask */
-#define CTLR1_ENARP_Set          ((uint16_t)0x0010)
-#define CTLR1_ENARP_Reset        ((uint16_t)0xFFEF)
-
-/* I2C NOSTRETCH mask */
-#define CTLR1_NOSTRETCH_Set      ((uint16_t)0x0080)
-#define CTLR1_NOSTRETCH_Reset    ((uint16_t)0xFF7F)
-
-////* I2C registers Masks */
-// Editor's note: Overloaded Definition.
-#define I2C_CTLR1_CLEAR_Mask         ((uint16_t)0xFBF5)
-
-/* I2C DMAEN mask */
-#define CTLR2_DMAEN_Set          ((uint16_t)0x0800)
-#define CTLR2_DMAEN_Reset        ((uint16_t)0xF7FF)
-
-/* I2C LAST mask */
-#define CTLR2_LAST_Set           ((uint16_t)0x1000)
-#define CTLR2_LAST_Reset         ((uint16_t)0xEFFF)
-
-/* I2C FREQ mask */
-#define CTLR2_FREQ_Reset         ((uint16_t)0xFFC0)
-
-/* I2C ADD0 mask */
-#define OADDR1_ADD0_Set          ((uint16_t)0x0001)
-#define OADDR1_ADD0_Reset        ((uint16_t)0xFFFE)
-
-/* I2C ENDUAL mask */
-#define OADDR2_ENDUAL_Set        ((uint16_t)0x0001)
-#define OADDR2_ENDUAL_Reset      ((uint16_t)0xFFFE)
-
-/* I2C ADD2 mask */
-#define OADDR2_ADD2_Reset        ((uint16_t)0xFF01)
-
-/* I2C F/S mask */
-#define CKCFGR_FS_Set            ((uint16_t)0x8000)
-
-/* I2C CCR mask */
-#define CKCFGR_CCR_Set           ((uint16_t)0x0FFF)
-
-/* I2C FLAG mask */
-//Editor's Note: Overloaded Definition
-#define I2c_FLAG_Mask                ((uint32_t)0x00FFFFFF)
-
-/* I2C Interrupt Enable mask */
-#define ITEN_Mask                ((uint32_t)0x07000000)
-
-/* ch32v00x_iwdg.c -----------------------------------------------------------*/
-
-/* CTLR register bit mask */
-#define CTLR_KEY_Reload    ((uint16_t)0xAAAA)
-#define CTLR_KEY_Enable    ((uint16_t)0xCCCC)
-
-/* ch32v00x_pwr.c ------------------------------------------------------------*/
-
-
-/* PWR registers bit mask */
-/* CTLR register bit mask */
-#define CTLR_DS_MASK     ((uint32_t)0xFFFFFFFD)
-#define CTLR_PLS_MASK    ((uint32_t)0xFFFFFF1F)
-#define AWUPSC_MASK      ((uint32_t)0xFFFFFFF0)
-#define AWUWR_MASK       ((uint32_t)0xFFFFFFC0)
-
-/* ch32v00x_rcc.c ------------------------------------------------------------*/
-
-/* RCC registers bit address in the alias region */
-#define RCC_OFFSET                 (RCC_BASE - PERIPH_BASE)
-
-/* BDCTLR Register */
-#define BDCTLR_OFFSET              (RCC_OFFSET + 0x20)
-
-/* RCC registers bit mask */
-
-/* CTLR register bit mask */
-#define CTLR_HSEBYP_Reset          ((uint32_t)0xFFFBFFFF)
-#define CTLR_HSEBYP_Set            ((uint32_t)0x00040000)
-#define CTLR_HSEON_Reset           ((uint32_t)0xFFFEFFFF)
-#define CTLR_HSEON_Set             ((uint32_t)0x00010000)
-#define CTLR_HSITRIM_Mask          ((uint32_t)0xFFFFFF07)
-
-#define CFGR0_PLL_Mask             ((uint32_t)0xFFC0FFFF)
-#define CFGR0_PLLMull_Mask         ((uint32_t)0x003C0000)
-#define CFGR0_PLLSRC_Mask          ((uint32_t)0x00010000)
-#define CFGR0_PLLXTPRE_Mask        ((uint32_t)0x00020000)
-#define CFGR0_SWS_Mask             ((uint32_t)0x0000000C)
-#define CFGR0_SW_Mask              ((uint32_t)0xFFFFFFFC)
-#define CFGR0_HPRE_Reset_Mask      ((uint32_t)0xFFFFFF0F)
-#define CFGR0_HPRE_Set_Mask        ((uint32_t)0x000000F0)
-#define CFGR0_PPRE1_Reset_Mask     ((uint32_t)0xFFFFF8FF)
-#define CFGR0_PPRE1_Set_Mask       ((uint32_t)0x00000700)
-#define CFGR0_PPRE2_Reset_Mask     ((uint32_t)0xFFFFC7FF)
-#define CFGR0_PPRE2_Set_Mask       ((uint32_t)0x00003800)
-#define CFGR0_ADCPRE_Reset_Mask    ((uint32_t)0xFFFF07FF)
-#define CFGR0_ADCPRE_Set_Mask      ((uint32_t)0x0000F800)
-
-/* RSTSCKR register bit mask */
-#define RSTSCKR_RMVF_Set           ((uint32_t)0x01000000)
-
-/* RCC Flag Mask */
-//Editor's Note: Overloaded Definition
-#define RCC_FLAG_Mask                  ((uint8_t)0x1F)
-
-/* INTR register byte 2 (Bits[15:8]) base address */
-#define INTR_BYTE2_ADDRESS         ((uint32_t)0x40021009)
-
-/* INTR register byte 3 (Bits[23:16]) base address */
-#define INTR_BYTE3_ADDRESS         ((uint32_t)0x4002100A)
-
-/* CFGR0 register byte 4 (Bits[31:24]) base address */
-#define CFGR0_BYTE4_ADDRESS        ((uint32_t)0x40021007)
-
-/* BDCTLR register base address */
-#define BDCTLR_ADDRESS             (PERIPH_BASE + BDCTLR_OFFSET)
-
-static __I uint8_t APBAHBPrescTable[16] = {1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8};
-static __I uint8_t ADCPrescTable[20] = {2, 4, 6, 8, 4, 8, 12, 16, 8, 16, 24, 32, 16, 32, 48, 64, 32, 64, 96, 128};
-
-
-/* ch32v00x_spi.c ------------------------------------------------------------*/
-
-
-/* SPI SPE mask */
-#define CTLR1_SPE_Set         ((uint16_t)0x0040)
-#define CTLR1_SPE_Reset       ((uint16_t)0xFFBF)
-
-/* SPI CRCNext mask */
-#define CTLR1_CRCNext_Set     ((uint16_t)0x1000)
-
-/* SPI CRCEN mask */
-#define CTLR1_CRCEN_Set       ((uint16_t)0x2000)
-#define CTLR1_CRCEN_Reset     ((uint16_t)0xDFFF)
-
-/* SPI SSOE mask */
-#define CTLR2_SSOE_Set        ((uint16_t)0x0004)
-#define CTLR2_SSOE_Reset      ((uint16_t)0xFFFB)
-
-/* SPI registers Masks */
-//Editor's Note: Overloaded Definition
-#define SPI_CTLR1_CLEAR_Mask      ((uint16_t)0x3040)
-#define I2SCFGR_CLEAR_Mask    ((uint16_t)0xF040)
-
-
-/* ch32v00x_tim.c ------------------------------------------------------------*/
-
-/* TIM registers bit mask */
-#define SMCFGR_ETR_Mask    ((uint16_t)0x00FF)
-#define CHCTLR_Offset      ((uint16_t)0x0018)
-#define CCER_CCE_Set       ((uint16_t)0x0001)
-#define CCER_CCNE_Set      ((uint16_t)0x0004)
-
-/* ch32v00x_usart.c ----------------------------------------------------------*/
-
-/* USART_Private_Defines */
-#define CTLR1_UE_Set              ((uint16_t)0x2000) /* USART Enable Mask */
-#define CTLR1_UE_Reset            ((uint16_t)0xDFFF) /* USART Disable Mask */
-
-#define CTLR1_WAKE_Mask           ((uint16_t)0xF7FF) /* USART WakeUp Method Mask */
-
-#define CTLR1_RWU_Set             ((uint16_t)0x0002) /* USART mute mode Enable Mask */
-#define CTLR1_RWU_Reset           ((uint16_t)0xFFFD) /* USART mute mode Enable Mask */
-#define CTLR1_SBK_Set             ((uint16_t)0x0001) /* USART Break Character send Mask */
-//Editor's Note: Overloaded Definition
-#define USART_CTLR1_CLEAR_Mask          ((uint16_t)0xE9F3) /* USART CR1 Mask */
-#define CTLR2_Address_Mask        ((uint16_t)0xFFF0) /* USART address Mask */
-
-#define CTLR2_LINEN_Set           ((uint16_t)0x4000) /* USART LIN Enable Mask */
-#define CTLR2_LINEN_Reset         ((uint16_t)0xBFFF) /* USART LIN Disable Mask */
-
-#define CTLR2_LBDL_Mask           ((uint16_t)0xFFDF) /* USART LIN Break detection Mask */
-#define CTLR2_STOP_CLEAR_Mask     ((uint16_t)0xCFFF) /* USART CR2 STOP Bits Mask */
-#define CTLR2_CLOCK_CLEAR_Mask    ((uint16_t)0xF0FF) /* USART CR2 Clock Mask */
-
-#define CTLR3_SCEN_Set            ((uint16_t)0x0020) /* USART SC Enable Mask */
-#define CTLR3_SCEN_Reset          ((uint16_t)0xFFDF) /* USART SC Disable Mask */
-
-#define CTLR3_NACK_Set            ((uint16_t)0x0010) /* USART SC NACK Enable Mask */
-#define CTLR3_NACK_Reset          ((uint16_t)0xFFEF) /* USART SC NACK Disable Mask */
-
-#define CTLR3_HDSEL_Set           ((uint16_t)0x0008) /* USART Half-Duplex Enable Mask */
-#define CTLR3_HDSEL_Reset         ((uint16_t)0xFFF7) /* USART Half-Duplex Disable Mask */
-
-#define CTLR3_IRLP_Mask           ((uint16_t)0xFFFB) /* USART IrDA LowPower mode Mask */
-#define CTLR3_CLEAR_Mask          ((uint16_t)0xFCFF) /* USART CR3 Mask */
-
-#define CTLR3_IREN_Set            ((uint16_t)0x0002) /* USART IrDA Enable Mask */
-#define CTLR3_IREN_Reset          ((uint16_t)0xFFFD) /* USART IrDA Disable Mask */
-#define GPR_LSB_Mask              ((uint16_t)0x00FF) /* Guard Time Register LSB Mask */
-#define GPR_MSB_Mask              ((uint16_t)0xFF00) /* Guard Time Register MSB Mask */
-#define IT_Mask                   ((uint16_t)0x001F) /* USART Interrupt Mask */
-
-/* USART OverSampling-8 Mask */
-#define CTLR1_OVER8_Set           ((uint16_t)0x8000) /* USART OVER8 mode Enable Mask */
-#define CTLR1_OVER8_Reset         ((uint16_t)0x7FFF) /* USART OVER8 mode Disable Mask */
-
-/* USART One Bit Sampling Mask */
-#define CTLR3_ONEBITE_Set         ((uint16_t)0x0800) /* USART ONEBITE mode Enable Mask */
-#define CTLR3_ONEBITE_Reset       ((uint16_t)0xF7FF) /* USART ONEBITE mode Disable Mask */
-
-/* ch32v00x_wwdg.c ------------------------------------------------------------*/
-
-
-/* CTLR register bit mask */
-#define CTLR_WDGA_Set      ((uint32_t)0x00000080)
-
-/* CFGR register bit mask */
-#define CFGR_WDGTB_Mask    ((uint32_t)0xFFFFFE7F)
-#define CFGR_W_Mask        ((uint32_t)0xFFFFFF80)
-#define BIT_Mask           ((uint8_t)0x7F)
-
-
-/* ch32v00x_adc.h ------------------------------------------------------------*/
-
-
-
-/* ADC_mode */
-#define ADC_Mode_Independent                           ((uint32_t)0x00000000)
-
-/* ADC_external_trigger_sources_for_regular_channels_conversion */
-#define ADC_ExternalTrigConv_T1_TRGO                   ((uint32_t)0x00000000)
-#define ADC_ExternalTrigConv_T1_CC1                    ((uint32_t)0x00020000)
-#define ADC_ExternalTrigConv_T1_CC2                    ((uint32_t)0x00040000)
-#define ADC_ExternalTrigConv_T2_TRGO                   ((uint32_t)0x00060000)
-#define ADC_ExternalTrigConv_T2_CC1                    ((uint32_t)0x00080000)
-#define ADC_ExternalTrigConv_T2_CC2                    ((uint32_t)0x000A0000)
-#define ADC_ExternalTrigConv_Ext_PD3_PC2               ((uint32_t)0x000C0000)
-#define ADC_ExternalTrigConv_None                      ((uint32_t)0x000E0000)
-
-/* ADC_data_align */
-#define ADC_DataAlign_Right                            ((uint32_t)0x00000000)
-#define ADC_DataAlign_Left                             ((uint32_t)0x00000800)
-
-/* ADC_channels */
-#define ADC_Channel_0                                  ((uint8_t)0x00)
-#define ADC_Channel_1                                  ((uint8_t)0x01)
-#define ADC_Channel_2                                  ((uint8_t)0x02)
-#define ADC_Channel_3                                  ((uint8_t)0x03)
-#define ADC_Channel_4                                  ((uint8_t)0x04)
-#define ADC_Channel_5                                  ((uint8_t)0x05)
-#define ADC_Channel_6                                  ((uint8_t)0x06)
-#define ADC_Channel_7                                  ((uint8_t)0x07)
-#define ADC_Channel_8                                  ((uint8_t)0x08)
-#define ADC_Channel_9                                  ((uint8_t)0x09)
-
-#define ADC_Channel_Vrefint                            ((uint8_t)ADC_Channel_8)
-#define ADC_Channel_Vcalint                            ((uint8_t)ADC_Channel_9)
-
-/* ADC_sampling_time */
-#define ADC_SampleTime_3Cycles                         ((uint8_t)0x00)
-#define ADC_SampleTime_9Cycles                         ((uint8_t)0x01)
-#define ADC_SampleTime_15Cycles                        ((uint8_t)0x02)
-#define ADC_SampleTime_30Cycles                        ((uint8_t)0x03)
-#define ADC_SampleTime_43Cycles                        ((uint8_t)0x04)
-#define ADC_SampleTime_57Cycles                        ((uint8_t)0x05)
-#define ADC_SampleTime_73Cycles                        ((uint8_t)0x06)
-#define ADC_SampleTime_241Cycles                       ((uint8_t)0x07)
-
-/* ADC_external_trigger_sources_for_injected_channels_conversion */
-#define ADC_ExternalTrigInjecConv_T1_CC3               ((uint32_t)0x00000000)
-#define ADC_ExternalTrigInjecConv_T1_CC4               ((uint32_t)0x00001000)
-#define ADC_ExternalTrigInjecConv_T2_CC3               ((uint32_t)0x00002000)
-#define ADC_ExternalTrigInjecConv_T2_CC4               ((uint32_t)0x00003000)
-#define ADC_ExternalTrigInjecConv_Ext_PD1_PA2          ((uint32_t)0x00006000)
-#define ADC_ExternalTrigInjecConv_None                 ((uint32_t)0x00007000)
-
-/* ADC_injected_channel_selection */
-#define ADC_InjectedChannel_1                          ((uint8_t)0x14)
-#define ADC_InjectedChannel_2                          ((uint8_t)0x18)
-#define ADC_InjectedChannel_3                          ((uint8_t)0x1C)
-#define ADC_InjectedChannel_4                          ((uint8_t)0x20)
-
-/* ADC_analog_watchdog_selection */
-#define ADC_AnalogWatchdog_SingleRegEnable             ((uint32_t)0x00800200)
-#define ADC_AnalogWatchdog_SingleInjecEnable           ((uint32_t)0x00400200)
-#define ADC_AnalogWatchdog_SingleRegOrInjecEnable      ((uint32_t)0x00C00200)
-#define ADC_AnalogWatchdog_AllRegEnable                ((uint32_t)0x00800000)
-#define ADC_AnalogWatchdog_AllInjecEnable              ((uint32_t)0x00400000)
-#define ADC_AnalogWatchdog_AllRegAllInjecEnable        ((uint32_t)0x00C00000)
-#define ADC_AnalogWatchdog_None                        ((uint32_t)0x00000000)
-
-/* ADC_interrupts_definition */
-#define ADC_IT_EOC                                     ((uint16_t)0x0220)
-#define ADC_IT_AWD                                     ((uint16_t)0x0140)
-#define ADC_IT_JEOC                                    ((uint16_t)0x0480)
-
-/* ADC_flags_definition */
-#define ADC_FLAG_AWD                                   ((uint8_t)0x01)
-#define ADC_FLAG_EOC                                   ((uint8_t)0x02)
-#define ADC_FLAG_JEOC                                  ((uint8_t)0x04)
-#define ADC_FLAG_JSTRT                                 ((uint8_t)0x08)
-#define ADC_FLAG_STRT                                  ((uint8_t)0x10)
-
-/* ADC_calibration_voltage_definition */
-#define ADC_CALVOL_50PERCENT                           ((uint32_t)0x02000000)
-#define ADC_CALVOL_75PERCENT                           ((uint32_t)0x04000000)
-
-/* ADC_external_trigger_sources_delay_channels_definition */
-#define ADC_ExternalTrigRegul_DLY                      ((uint32_t)0x00000000)
-#define ADC_ExternalTrigInjec_DLY                      ((uint32_t)0x00020000)
-
-
-
-/* ch32v00x_dbgmcu.h ---------------------------------------------------------*/
-
-/* CFGR0 Register */
-#define DBGMCU_IWDG_STOP             ((uint32_t)0x00000001)
-#define DBGMCU_WWDG_STOP             ((uint32_t)0x00000002)
-#define DBGMCU_TIM1_STOP             ((uint32_t)0x00000010)
-#define DBGMCU_TIM2_STOP             ((uint32_t)0x00000020)
-
-/* ch32v00x_dma.h ------------------------------------------------------------*/
-
-/* DMA_data_transfer_direction */
-#define DMA_DIR_PeripheralDST              ((uint32_t)0x00000010)
-#define DMA_DIR_PeripheralSRC              ((uint32_t)0x00000000)
-
-/* DMA_peripheral_incremented_mode */
-#define DMA_PeripheralInc_Enable           ((uint32_t)0x00000040)
-#define DMA_PeripheralInc_Disable          ((uint32_t)0x00000000)
-
-/* DMA_memory_incremented_mode */
-#define DMA_MemoryInc_Enable               ((uint32_t)0x00000080)
-#define DMA_MemoryInc_Disable              ((uint32_t)0x00000000)
-
-/* DMA_peripheral_data_size */
-#define DMA_PeripheralDataSize_Byte        ((uint32_t)0x00000000)
-#define DMA_PeripheralDataSize_HalfWord    ((uint32_t)0x00000100)
-#define DMA_PeripheralDataSize_Word        ((uint32_t)0x00000200)
-
-/* DMA_memory_data_size */
-#define DMA_MemoryDataSize_Byte            ((uint32_t)0x00000000)
-#define DMA_MemoryDataSize_HalfWord        ((uint32_t)0x00000400)
-#define DMA_MemoryDataSize_Word            ((uint32_t)0x00000800)
-
-/* DMA_circular_normal_mode */
-#define DMA_Mode_Circular                  ((uint32_t)0x00000020)
-#define DMA_Mode_Normal                    ((uint32_t)0x00000000)
-
-/* DMA_priority_level */
-#define DMA_Priority_VeryHigh              ((uint32_t)0x00003000)
-#define DMA_Priority_High                  ((uint32_t)0x00002000)
-#define DMA_Priority_Medium                ((uint32_t)0x00001000)
-#define DMA_Priority_Low                   ((uint32_t)0x00000000)
-
-/* DMA_memory_to_memory */
-#define DMA_M2M_Enable                     ((uint32_t)0x00004000)
-#define DMA_M2M_Disable                    ((uint32_t)0x00000000)
-
-/* DMA_interrupts_definition */
-#define DMA_IT_TC                          ((uint32_t)0x00000002)
-#define DMA_IT_HT                          ((uint32_t)0x00000004)
-#define DMA_IT_TE                          ((uint32_t)0x00000008)
-
-#define DMA1_IT_GL1                        ((uint32_t)0x00000001)
-#define DMA1_IT_TC1                        ((uint32_t)0x00000002)
-#define DMA1_IT_HT1                        ((uint32_t)0x00000004)
-#define DMA1_IT_TE1                        ((uint32_t)0x00000008)
-#define DMA1_IT_GL2                        ((uint32_t)0x00000010)
-#define DMA1_IT_TC2                        ((uint32_t)0x00000020)
-#define DMA1_IT_HT2                        ((uint32_t)0x00000040)
-#define DMA1_IT_TE2                        ((uint32_t)0x00000080)
-#define DMA1_IT_GL3                        ((uint32_t)0x00000100)
-#define DMA1_IT_TC3                        ((uint32_t)0x00000200)
-#define DMA1_IT_HT3                        ((uint32_t)0x00000400)
-#define DMA1_IT_TE3                        ((uint32_t)0x00000800)
-#define DMA1_IT_GL4                        ((uint32_t)0x00001000)
-#define DMA1_IT_TC4                        ((uint32_t)0x00002000)
-#define DMA1_IT_HT4                        ((uint32_t)0x00004000)
-#define DMA1_IT_TE4                        ((uint32_t)0x00008000)
-#define DMA1_IT_GL5                        ((uint32_t)0x00010000)
-#define DMA1_IT_TC5                        ((uint32_t)0x00020000)
-#define DMA1_IT_HT5                        ((uint32_t)0x00040000)
-#define DMA1_IT_TE5                        ((uint32_t)0x00080000)
-#define DMA1_IT_GL6                        ((uint32_t)0x00100000)
-#define DMA1_IT_TC6                        ((uint32_t)0x00200000)
-#define DMA1_IT_HT6                        ((uint32_t)0x00400000)
-#define DMA1_IT_TE6                        ((uint32_t)0x00800000)
-#define DMA1_IT_GL7                        ((uint32_t)0x01000000)
-#define DMA1_IT_TC7                        ((uint32_t)0x02000000)
-#define DMA1_IT_HT7                        ((uint32_t)0x04000000)
-#define DMA1_IT_TE7                        ((uint32_t)0x08000000)
-
-/* DMA_flags_definition */
-#define DMA1_FLAG_GL1                      ((uint32_t)0x00000001)
-#define DMA1_FLAG_TC1                      ((uint32_t)0x00000002)
-#define DMA1_FLAG_HT1                      ((uint32_t)0x00000004)
-#define DMA1_FLAG_TE1                      ((uint32_t)0x00000008)
-#define DMA1_FLAG_GL2                      ((uint32_t)0x00000010)
-#define DMA1_FLAG_TC2                      ((uint32_t)0x00000020)
-#define DMA1_FLAG_HT2                      ((uint32_t)0x00000040)
-#define DMA1_FLAG_TE2                      ((uint32_t)0x00000080)
-#define DMA1_FLAG_GL3                      ((uint32_t)0x00000100)
-#define DMA1_FLAG_TC3                      ((uint32_t)0x00000200)
-#define DMA1_FLAG_HT3                      ((uint32_t)0x00000400)
-#define DMA1_FLAG_TE3                      ((uint32_t)0x00000800)
-#define DMA1_FLAG_GL4                      ((uint32_t)0x00001000)
-#define DMA1_FLAG_TC4                      ((uint32_t)0x00002000)
-#define DMA1_FLAG_HT4                      ((uint32_t)0x00004000)
-#define DMA1_FLAG_TE4                      ((uint32_t)0x00008000)
-#define DMA1_FLAG_GL5                      ((uint32_t)0x00010000)
-#define DMA1_FLAG_TC5                      ((uint32_t)0x00020000)
-#define DMA1_FLAG_HT5                      ((uint32_t)0x00040000)
-#define DMA1_FLAG_TE5                      ((uint32_t)0x00080000)
-#define DMA1_FLAG_GL6                      ((uint32_t)0x00100000)
-#define DMA1_FLAG_TC6                      ((uint32_t)0x00200000)
-#define DMA1_FLAG_HT6                      ((uint32_t)0x00400000)
-#define DMA1_FLAG_TE6                      ((uint32_t)0x00800000)
-#define DMA1_FLAG_GL7                      ((uint32_t)0x01000000)
-#define DMA1_FLAG_TC7                      ((uint32_t)0x02000000)
-#define DMA1_FLAG_HT7                      ((uint32_t)0x04000000)
-#define DMA1_FLAG_TE7                      ((uint32_t)0x08000000)
-
-/* ch32v00x_exti.h -----------------------------------------------------------*/
-
-/* EXTI mode enumeration */
-typedef enum
-{
-    EXTI_Mode_Interrupt = 0x00,
-    EXTI_Mode_Event = 0x04
-} EXTIMode_TypeDef;
-
-/* EXTI Trigger enumeration */
-typedef enum
-{
-    EXTI_Trigger_Rising = 0x08,
-    EXTI_Trigger_Falling = 0x0C,
-    EXTI_Trigger_Rising_Falling = 0x10
-} EXTITrigger_TypeDef;
-
-/* EXTI_Lines */
-#define EXTI_Line0     ((uint32_t)0x00001) /* External interrupt line 0 */
-#define EXTI_Line1     ((uint32_t)0x00002) /* External interrupt line 1 */
-#define EXTI_Line2     ((uint32_t)0x00004) /* External interrupt line 2 */
-#define EXTI_Line3     ((uint32_t)0x00008) /* External interrupt line 3 */
-#define EXTI_Line4     ((uint32_t)0x00010) /* External interrupt line 4 */
-#define EXTI_Line5     ((uint32_t)0x00020) /* External interrupt line 5 */
-#define EXTI_Line6     ((uint32_t)0x00040) /* External interrupt line 6 */
-#define EXTI_Line7     ((uint32_t)0x00080) /* External interrupt line 7 */
-#define EXTI_Line8     ((uint32_t)0x00100) /* External interrupt line 8 Connected to the PVD Output */
-#define EXTI_Line9     ((uint32_t)0x00200) /* External interrupt line 9 Connected to the PWR Auto Wake-up event*/
-
-
-/* ch32v00x_flash.h ----------------------------------------------------------*/
-
-
-/* FLASH Status */
-typedef enum
-{
-    FLASH_BUSY = 1,
-    FLASH_ERROR_PG,
-    FLASH_ERROR_WRP,
-    FLASH_COMPLETE,
-    FLASH_TIMEOUT
-} FLASH_Status;
-
-
-/* Flash_Latency */
-#define FLASH_Latency_0                  ((uint32_t)0x00000000) /* FLASH Zero Latency cycle */
-#define FLASH_Latency_1                  ((uint32_t)0x00000001) /* FLASH One Latency cycle */
-#define FLASH_Latency_2                  ((uint32_t)0x00000002) /* FLASH Two Latency cycles */
-
-/* Values to be used with CH32V00x devices (1page = 64Byte) */
-#define FLASH_WRProt_Pages0to15          ((uint32_t)0x00000001) /* CH32 Low and Medium density devices: Write protection of page 0 to 15 */
-#define FLASH_WRProt_Pages16to31         ((uint32_t)0x00000002) /* CH32 Low and Medium density devices: Write protection of page 16 to 31 */
-#define FLASH_WRProt_Pages32to47         ((uint32_t)0x00000004) /* CH32 Low and Medium density devices: Write protection of page 32 to 47 */
-#define FLASH_WRProt_Pages48to63         ((uint32_t)0x00000008) /* CH32 Low and Medium density devices: Write protection of page 48 to 63 */
-#define FLASH_WRProt_Pages64to79         ((uint32_t)0x00000010) /* CH32 Low and Medium density devices: Write protection of page 64 to 79 */
-#define FLASH_WRProt_Pages80to95         ((uint32_t)0x00000020) /* CH32 Low and Medium density devices: Write protection of page 80 to 95 */
-#define FLASH_WRProt_Pages96to111        ((uint32_t)0x00000040) /* CH32 Low and Medium density devices: Write protection of page 96 to 111 */
-#define FLASH_WRProt_Pages112to127       ((uint32_t)0x00000080) /* CH32 Low and Medium density devices: Write protection of page 112 to 127 */
-#define FLASH_WRProt_Pages128to143       ((uint32_t)0x00000100) /* CH32 Medium-density devices: Write protection of page 128 to 143 */
-#define FLASH_WRProt_Pages144to159       ((uint32_t)0x00000200) /* CH32 Medium-density devices: Write protection of page 144 to 159 */
-#define FLASH_WRProt_Pages160to175       ((uint32_t)0x00000400) /* CH32 Medium-density devices: Write protection of page 160 to 175 */
-#define FLASH_WRProt_Pages176to191       ((uint32_t)0x00000800) /* CH32 Medium-density devices: Write protection of page 176 to 191 */
-#define FLASH_WRProt_Pages192to207       ((uint32_t)0x00001000) /* CH32 Medium-density devices: Write protection of page 192 to 207 */
-#define FLASH_WRProt_Pages208to223       ((uint32_t)0x00002000) /* CH32 Medium-density devices: Write protection of page 208 to 223 */
-#define FLASH_WRProt_Pages224to239       ((uint32_t)0x00004000) /* CH32 Medium-density devices: Write protection of page 224 to 239 */
-#define FLASH_WRProt_Pages240to255       ((uint32_t)0x00008000) /* CH32 Medium-density devices: Write protection of page 240 to 255 */
-
-#define FLASH_WRProt_AllPages            ((uint32_t)0x0000FFFF) /* Write protection of all Pages */
-
-/* Option_Bytes_IWatchdog */
-#define OB_IWDG_SW                       ((uint16_t)0x0001) /* Software IWDG selected */
-#define OB_IWDG_HW                       ((uint16_t)0x0000) /* Hardware IWDG selected */
-
-/* Option_Bytes_nRST_STOP */
-#define OB_STOP_NoRST                    ((uint16_t)0x0002) /* No reset generated when entering in STOP */
-#define OB_STOP_RST                      ((uint16_t)0x0000) /* Reset generated when entering in STOP */
-
-/* Option_Bytes_nRST_STDBY */
-#define OB_STDBY_NoRST                   ((uint16_t)0x0004) /* No reset generated when entering in STANDBY */
-#define OB_STDBY_RST                     ((uint16_t)0x0000) /* Reset generated when entering in STANDBY */
-
-/* Option_Bytes_RST_ENandDT */
-#define OB_RST_NoEN                      ((uint16_t)0x0018) /* Reset IO disable (PD7)*/
-#define OB_RST_EN_DT12ms                 ((uint16_t)0x0010) /* Reset IO enable (PD7) and  Ignore delay time 12ms */
-#define OB_RST_EN_DT1ms                  ((uint16_t)0x0008) /* Reset IO enable (PD7) and  Ignore delay time 1ms */
-#define OB_RST_EN_DT128ms                ((uint16_t)0x0000) /* Reset IO enable (PD7) and  Ignore delay time 128ms */
-
-/* FLASH_Interrupts */
-#define FLASH_IT_ERROR                   ((uint32_t)0x00000400) /* FPEC error interrupt source */
-#define FLASH_IT_EOP                     ((uint32_t)0x00001000) /* End of FLASH Operation Interrupt source */
-#define FLASH_IT_BANK1_ERROR             FLASH_IT_ERROR         /* FPEC BANK1 error interrupt source */
-#define FLASH_IT_BANK1_EOP               FLASH_IT_EOP           /* End of FLASH BANK1 Operation Interrupt source */
-
-/* FLASH_Flags */
-#define FLASH_FLAG_BSY                   ((uint32_t)0x00000001) /* FLASH Busy flag */
-#define FLASH_FLAG_EOP                   ((uint32_t)0x00000020) /* FLASH End of Operation flag */
-#define FLASH_FLAG_WRPRTERR              ((uint32_t)0x00000010) /* FLASH Write protected error flag */
-#define FLASH_FLAG_OPTERR                ((uint32_t)0x00000001) /* FLASH Option Byte error flag */
-
-#define FLASH_FLAG_BANK1_BSY             FLASH_FLAG_BSY       /* FLASH BANK1 Busy flag*/
-#define FLASH_FLAG_BANK1_EOP             FLASH_FLAG_EOP       /* FLASH BANK1 End of Operation flag */
-#define FLASH_FLAG_BANK1_WRPRTERR        FLASH_FLAG_WRPRTERR  /* FLASH BANK1 Write protected error flag */
-
-/* System_Reset_Start_Mode */
-#define Start_Mode_USER                  ((uint32_t)0x00000000)
-#define Start_Mode_BOOT                  ((uint32_t)0x00004000)
-
-
-/* ch32v00x_gpio.h ------------------------------------------------------------*/
-
-/* Output Maximum frequency selection */
-typedef enum
-{
-    GPIO_Speed_10MHz = 1,
-    GPIO_Speed_2MHz,
-    GPIO_Speed_50MHz
-} GPIOSpeed_TypeDef;
-
-#define GPIO_SPEED_IN 0
-
-#define GPIO_CNF_IN_ANALOG   0
-#define GPIO_CNF_IN_FLOATING 4
-#define GPIO_CNF_IN_PUPD     8
-#define GPIO_CNF_OUT_PP      0
-#define GPIO_CNF_OUT_OD      4
-#define GPIO_CNF_OUT_PP_AF   8
-#define GPIO_CNF_OUT_OD_AF   12
-
-/* Configuration Mode enumeration */
-/*
-typedef enum
-{
-    GPIO_Mode_AIN = 0x0,
-    GPIO_Mode_IN_FLOATING = 0x04,
-    GPIO_Mode_IPD = 0x28,
-    GPIO_Mode_IPU = 0x48,
-    GPIO_Mode_Out_OD = 0x14,
-    GPIO_Mode_Out_PP = 0x10,
-    GPIO_Mode_AF_OD = 0x1C,
-    GPIO_Mode_AF_PP = 0x18
-} GPIOMode_TypeDef;
-*/
-
-
-/* Bit_SET and Bit_RESET enumeration */
-typedef enum
-{
-    Bit_RESET = 0,
-    Bit_SET
-} BitAction;
-
-/* GPIO_pins_define */
-#define GPIO_Pin_0                     ((uint16_t)0x0001) /* Pin 0 selected */
-#define GPIO_Pin_1                     ((uint16_t)0x0002) /* Pin 1 selected */
-#define GPIO_Pin_2                     ((uint16_t)0x0004) /* Pin 2 selected */
-#define GPIO_Pin_3                     ((uint16_t)0x0008) /* Pin 3 selected */
-#define GPIO_Pin_4                     ((uint16_t)0x0010) /* Pin 4 selected */
-#define GPIO_Pin_5                     ((uint16_t)0x0020) /* Pin 5 selected */
-#define GPIO_Pin_6                     ((uint16_t)0x0040) /* Pin 6 selected */
-#define GPIO_Pin_7                     ((uint16_t)0x0080) /* Pin 7 selected */
-#define GPIO_Pin_All                   ((uint16_t)0xFFFF) /* All pins selected */
-
-/* GPIO_Remap_define */
-#define GPIO_Remap_SPI1                ((uint32_t)0x00000001) /* SPI1 Alternate Function mapping */
-#define GPIO_PartialRemap_I2C1         ((uint32_t)0x10000002) /* I2C1 Partial Alternate Function mapping */
-#define GPIO_FullRemap_I2C1            ((uint32_t)0x10400002) /* I2C1 Full Alternate Function mapping */
-#define GPIO_PartialRemap1_USART1      ((uint32_t)0x80000004) /* USART1 Partial1 Alternate Function mapping */
-#define GPIO_PartialRemap2_USART1      ((uint32_t)0x80200000) /* USART1 Partial2 Alternate Function mapping */
-#define GPIO_FullRemap_USART1          ((uint32_t)0x80200004) /* USART1 Full Alternate Function mapping */
-#define GPIO_PartialRemap1_TIM1        ((uint32_t)0x00160040) /* TIM1 Partial1 Alternate Function mapping */
-#define GPIO_PartialRemap2_TIM1        ((uint32_t)0x00160080) /* TIM1 Partial2 Alternate Function mapping */
-#define GPIO_FullRemap_TIM1            ((uint32_t)0x001600C0) /* TIM1 Full Alternate Function mapping */
-#define GPIO_PartialRemap1_TIM2        ((uint32_t)0x00180100) /* TIM2 Partial1 Alternate Function mapping */
-#define GPIO_PartialRemap2_TIM2        ((uint32_t)0x00180200) /* TIM2 Partial2 Alternate Function mapping */
-#define GPIO_FullRemap_TIM2            ((uint32_t)0x00180300) /* TIM2 Full Alternate Function mapping */
-#define GPIO_Remap_PA1_2               ((uint32_t)0x00008000) /* PA1 and PA2 Alternate Function mapping */
-#define GPIO_Remap_ADC1_ETRGINJ        ((uint32_t)0x00200002) /* ADC1 External Trigger Injected Conversion remapping */
-#define GPIO_Remap_ADC1_ETRGREG        ((uint32_t)0x00200004) /* ADC1 External Trigger Regular Conversion remapping */
-#define GPIO_Remap_LSI_CAL             ((uint32_t)0x00200080) /* LSI calibration Alternate Function mapping */
-#define GPIO_Remap_SDI_Disable         ((uint32_t)0x00300400) /* SDI Disabled */
-
-/* GPIO_Port_Sources */
-#define GPIO_PortSourceGPIOA           ((uint8_t)0x00)
-#define GPIO_PortSourceGPIOC           ((uint8_t)0x02)
-#define GPIO_PortSourceGPIOD           ((uint8_t)0x03)
-
-/* GPIO_Pin_sources */
-#define GPIO_PinSource0                ((uint8_t)0x00)
-#define GPIO_PinSource1                ((uint8_t)0x01)
-#define GPIO_PinSource2                ((uint8_t)0x02)
-#define GPIO_PinSource3                ((uint8_t)0x03)
-#define GPIO_PinSource4                ((uint8_t)0x04)
-#define GPIO_PinSource5                ((uint8_t)0x05)
-#define GPIO_PinSource6                ((uint8_t)0x06)
-#define GPIO_PinSource7                ((uint8_t)0x07)
-
-/* ch32v00x_i2c.h ------------------------------------------------------------*/
-
-/* I2C_mode */
-#define I2C_Mode_I2C                                         ((uint16_t)0x0000)
-
-/* I2C_duty_cycle_in_fast_mode */
-#define I2C_DutyCycle_16_9                                   ((uint16_t)0x4000) /* I2C fast mode Tlow/Thigh = 16/9 */
-#define I2C_DutyCycle_2                                      ((uint16_t)0xBFFF) /* I2C fast mode Tlow/Thigh = 2 */
-
-/* I2C_acknowledgement */
-#define I2C_Ack_Enable                                       ((uint16_t)0x0400)
-#define I2C_Ack_Disable                                      ((uint16_t)0x0000)
-
-/* I2C_transfer_direction */
-#define I2C_Direction_Transmitter                            ((uint8_t)0x00)
-#define I2C_Direction_Receiver                               ((uint8_t)0x01)
-
-/* I2C_acknowledged_address */
-#define I2C_AcknowledgedAddress_7bit                         ((uint16_t)0x4000)
-#define I2C_AcknowledgedAddress_10bit                        ((uint16_t)0xC000)
-
-/* I2C_registers */
-#define I2C_Register_CTLR1                                   ((uint8_t)0x00)
-#define I2C_Register_CTLR2                                   ((uint8_t)0x04)
-#define I2C_Register_OADDR1                                  ((uint8_t)0x08)
-#define I2C_Register_OADDR2                                  ((uint8_t)0x0C)
-#define I2C_Register_DATAR                                   ((uint8_t)0x10)
-#define I2C_Register_STAR1                                   ((uint8_t)0x14)
-#define I2C_Register_STAR2                                   ((uint8_t)0x18)
-#define I2C_Register_CKCFGR                                  ((uint8_t)0x1C)
-
-/* I2C_PEC_position */
-#define I2C_PECPosition_Next                                 ((uint16_t)0x0800)
-#define I2C_PECPosition_Current                              ((uint16_t)0xF7FF)
-
-/* I2C_NACK_position */
-#define I2C_NACKPosition_Next                                ((uint16_t)0x0800)
-#define I2C_NACKPosition_Current                             ((uint16_t)0xF7FF)
-
-/* I2C_interrupts_definition */
-#define I2C_IT_BUF                                           ((uint16_t)0x0400)
-#define I2C_IT_EVT                                           ((uint16_t)0x0200)
-#define I2C_IT_ERR                                           ((uint16_t)0x0100)
-
-/* I2C_interrupts_definition */
-#define I2C_IT_PECERR                                        ((uint32_t)0x01001000)
-#define I2C_IT_OVR                                           ((uint32_t)0x01000800)
-#define I2C_IT_AF                                            ((uint32_t)0x01000400)
-#define I2C_IT_ARLO                                          ((uint32_t)0x01000200)
-#define I2C_IT_BERR                                          ((uint32_t)0x01000100)
-#define I2C_IT_TXE                                           ((uint32_t)0x06000080)
-#define I2C_IT_RXNE                                          ((uint32_t)0x06000040)
-#define I2C_IT_STOPF                                         ((uint32_t)0x02000010)
-#define I2C_IT_ADD10                                         ((uint32_t)0x02000008)
-#define I2C_IT_BTF                                           ((uint32_t)0x02000004)
-#define I2C_IT_ADDR                                          ((uint32_t)0x02000002)
-#define I2C_IT_SB                                            ((uint32_t)0x02000001)
-
-/* SR2 register flags  */
-#define I2C_FLAG_DUALF                                       ((uint32_t)0x00800000)
-#define I2C_FLAG_GENCALL                                     ((uint32_t)0x00100000)
-#define I2C_FLAG_TRA                                         ((uint32_t)0x00040000)
-#define I2C_FLAG_BUSY                                        ((uint32_t)0x00020000)
-#define I2C_FLAG_MSL                                         ((uint32_t)0x00010000)
-
-/* SR1 register flags */
-#define I2C_FLAG_PECERR                                      ((uint32_t)0x10001000)
-#define I2C_FLAG_OVR                                         ((uint32_t)0x10000800)
-#define I2C_FLAG_AF                                          ((uint32_t)0x10000400)
-#define I2C_FLAG_ARLO                                        ((uint32_t)0x10000200)
-#define I2C_FLAG_BERR                                        ((uint32_t)0x10000100)
-#define I2C_FLAG_TXE                                         ((uint32_t)0x10000080)
-#define I2C_FLAG_RXNE                                        ((uint32_t)0x10000040)
-#define I2C_FLAG_STOPF                                       ((uint32_t)0x10000010)
-#define I2C_FLAG_ADD10                                       ((uint32_t)0x10000008)
-#define I2C_FLAG_BTF                                         ((uint32_t)0x10000004)
-#define I2C_FLAG_ADDR                                        ((uint32_t)0x10000002)
-#define I2C_FLAG_SB                                          ((uint32_t)0x10000001)
-
-/****************I2C Master Events (Events grouped in order of communication)********************/
-
-/******************************************************************************************************************** 
-  * @brief  Start communicate
-  * 
-  * After master use I2C_GenerateSTART() function sending the START condition,the master 
-  * has to wait for event 5(the Start condition has been correctly 
-  * released on the I2C bus ).
-  * 
-  */
-/* EVT5 */
-#define  I2C_EVENT_MASTER_MODE_SELECT                      ((uint32_t)0x00030001)  /* BUSY, MSL and SB flag */
-
-/********************************************************************************************************************
-  * @brief  Address Acknowledge
-  * 
-  * When start condition correctly released on the bus(check EVT5), the 
-  * master use I2C_Send7bitAddress() function sends the address of the slave(s) with which it will communicate 
-  * it also determines master as transmitter or Receiver. Then the master has to wait that a slave acknowledges 
-  * his address. If an acknowledge is sent on the bus, one of the following events will be set:
-  * 
-  *
-  * 
-  *  1) In case of Master Receiver (7-bit addressing): the I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED 
-  *     event is set.
-  *  
-  *  2) In case of Master Transmitter (7-bit addressing): the I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED 
-  *     is set
-  *  
-  *  3) In case of 10-Bit addressing mode, the master (after generating the START 
-  *  and checking on EVT5) use I2C_SendData() function send the header of 10-bit addressing mode.  
-  *  Then master wait EVT9. EVT9 means that the 10-bit addressing header has been correctly sent 
-  *  on the bus. Then master should use the function I2C_Send7bitAddress() to send the second part 
-  *  of the 10-bit address (LSB) . Then master should wait for event 6. 
-  *
-  *     
-  */
-
-/* EVT6 */
-#define  I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED        ((uint32_t)0x00070082)  /* BUSY, MSL, ADDR, TXE and TRA flags */
-#define  I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED           ((uint32_t)0x00030002)  /* BUSY, MSL and ADDR flags */
-/*EVT9 */
-#define  I2C_EVENT_MASTER_MODE_ADDRESS10                   ((uint32_t)0x00030008)  /* BUSY, MSL and ADD10 flags */
-
-/******************************************************************************************************************** 
-  * @brief Communication events
-  * 
-  * If START condition has generated and slave address 
-  * been acknowledged. then the master has to check one of the following events for 
-  * communication procedures:
-  *  
-  * 1) Master Receiver mode: The master has to wait on the event EVT7 then use  
-  *   I2C_ReceiveData() function to read the data received from the slave .
-  * 
-  * 2) Master Transmitter mode: The master use I2C_SendData() function to send data  
-  *     then to wait on event EVT8 or EVT8_2.
-  *    These two events are similar: 
-  *     - EVT8 means that the data has been written in the data register and is 
-  *       being shifted out.
-  *     - EVT8_2 means that the data has been physically shifted out and output 
-  *       on the bus.
-  *     In most cases, using EVT8 is sufficient for the application.
-  *     Using EVT8_2  will leads to a slower communication  speed but will more reliable .
-  *     EVT8_2 is also more suitable than EVT8 for testing on the last data transmission 
-  *    
-  *     
-  *  Note:
-  *  In case the  user software does not guarantee that this event EVT7 is managed before 
-  *  the current byte end of transfer, then user may check on I2C_EVENT_MASTER_BYTE_RECEIVED 
-  *  and I2C_FLAG_BTF flag at the same time .But in this case the communication may be slower.
-  *
-  * 
-  */
-
-/* Master Receive mode */ 
-/* EVT7 */
-#define  I2C_EVENT_MASTER_BYTE_RECEIVED                    ((uint32_t)0x00030040)  /* BUSY, MSL and RXNE flags */
-
-/* Master Transmitter mode*/
-/* EVT8 */
-#define I2C_EVENT_MASTER_BYTE_TRANSMITTING                 ((uint32_t)0x00070080) /* TRA, BUSY, MSL, TXE flags */
-/* EVT8_2 */
-#define  I2C_EVENT_MASTER_BYTE_TRANSMITTED                 ((uint32_t)0x00070084)  /* TRA, BUSY, MSL, TXE and BTF flags */
-
-/******************I2C Slave Events (Events grouped in order of communication)******************/
-
-/******************************************************************************************************************** 
-  * @brief  Start Communicate events
-  * 
-  * Wait on one of these events at the start of the communication. It means that 
-  * the I2C peripheral detected a start condition of master device generate on the bus.  
-  * If the acknowledge feature is enabled through function I2C_AcknowledgeConfig()),The peripheral generates an ACK condition on the bus. 
-  *    
-  *
-  *
-  * a) In normal case (only one address managed by the slave), when the address 
-  *   sent by the master matches the own address of the peripheral (configured by 
-  *   I2C_OwnAddress1 field) the I2C_EVENT_SLAVE_XXX_ADDRESS_MATCHED event is set 
-  *   (where XXX could be TRANSMITTER or RECEIVER).
-  *    
-  * b) In case the address sent by the master matches the second address of the 
-  *   peripheral (configured by the function I2C_OwnAddress2Config() and enabled 
-  *   by the function I2C_DualAddressCmd()) the events I2C_EVENT_SLAVE_XXX_SECONDADDRESS_MATCHED 
-  *   (where XXX could be TRANSMITTER or RECEIVER) are set.
-  *   
-  * c) In case the address sent by the master is General Call (address 0x00) and 
-  *   if the General Call is enabled for the peripheral (using function I2C_GeneralCallCmd()) 
-  *   the following event is set I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED.   
-  * 
-  */
-
-/* EVT1 */   
-/* a) Case of One Single Address managed by the slave */
-#define  I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED          ((uint32_t)0x00020002) /* BUSY and ADDR flags */
-#define  I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED       ((uint32_t)0x00060082) /* TRA, BUSY, TXE and ADDR flags */
-
-/* b) Case of Dual address managed by the slave */
-#define  I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED    ((uint32_t)0x00820000)  /* DUALF and BUSY flags */
-#define  I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED ((uint32_t)0x00860080)  /* DUALF, TRA, BUSY and TXE flags */
-
-/* c) Case of General Call enabled for the slave */
-#define  I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED        ((uint32_t)0x00120000)  /* GENCALL and BUSY flags */
-
-/******************************************************************************************************************** 
-  * @brief  Communication events
-  * 
-  * Wait on one of these events when EVT1 has already been checked : 
-  * 
-  * - Slave Receiver mode:
-  *     - EVT2--The device is expecting to receive a data byte . 
-  *     - EVT4--The device is expecting the end of the communication: master 
-  *       sends a stop condition and data transmission is stopped.
-  *    
-  * - Slave Transmitter mode:
-  *    - EVT3--When a byte has been transmitted by the slave and the Master is expecting 
-  *      the end of the byte transmission. The two events I2C_EVENT_SLAVE_BYTE_TRANSMITTED and
-  *      I2C_EVENT_SLAVE_BYTE_TRANSMITTING are similar. If the user software doesn't guarantee 
-  *      the EVT3 is managed before the current byte end of transfer The second one can optionally
-  *      be used. 
-  *    - EVT3_2--When the master sends a NACK  to tell slave device that data transmission 
-  *      shall end . The slave device has to stop sending 
-  *      data bytes and wait a Stop condition from bus.
-  *      
-  *  Note:
-  *  If the  user software does not guarantee that the event 2 is 
-  *  managed before the current byte end of transfer, User may check on I2C_EVENT_SLAVE_BYTE_RECEIVED 
-  *  and I2C_FLAG_BTF flag at the same time .
-  *  In this case the communication will be slower.
-  *
-  */
-
-/* Slave Receiver mode*/ 
-/* EVT2 */
-#define  I2C_EVENT_SLAVE_BYTE_RECEIVED                     ((uint32_t)0x00020040)  /* BUSY and RXNE flags */
-/* EVT4  */
-#define  I2C_EVENT_SLAVE_STOP_DETECTED                     ((uint32_t)0x00000010)  /* STOPF flag */
-
-/* Slave Transmitter mode -----------------------*/
-/* EVT3 */
-#define  I2C_EVENT_SLAVE_BYTE_TRANSMITTED                  ((uint32_t)0x00060084)  /* TRA, BUSY, TXE and BTF flags */
-#define  I2C_EVENT_SLAVE_BYTE_TRANSMITTING                 ((uint32_t)0x00060080)  /* TRA, BUSY and TXE flags */
-/*EVT3_2 */
-#define  I2C_EVENT_SLAVE_ACK_FAILURE                       ((uint32_t)0x00000400)  /* AF flag */
-
-
-/* ch32v00x_iwdg.h -----------------------------------------------------------*/
-
-/* IWDG_WriteAccess */
-#define IWDG_WriteAccess_Enable     ((uint16_t)0x5555)
-#define IWDG_WriteAccess_Disable    ((uint16_t)0x0000)
-
-/* IWDG_prescaler */
-#define IWDG_Prescaler_4            ((uint8_t)0x00)
-#define IWDG_Prescaler_8            ((uint8_t)0x01)
-#define IWDG_Prescaler_16           ((uint8_t)0x02)
-#define IWDG_Prescaler_32           ((uint8_t)0x03)
-#define IWDG_Prescaler_64           ((uint8_t)0x04)
-#define IWDG_Prescaler_128          ((uint8_t)0x05)
-#define IWDG_Prescaler_256          ((uint8_t)0x06)
-
-/* IWDG_Flag */
-#define IWDG_FLAG_PVU               ((uint16_t)0x0001)
-#define IWDG_FLAG_RVU               ((uint16_t)0x0002)
-
-
-/* ch32v00x_misc.h -----------------------------------------------------------*/
-
-/* Preemption_Priority_Group */
-#define NVIC_PriorityGroup_0           ((uint32_t)0x00)
-#define NVIC_PriorityGroup_1           ((uint32_t)0x01)
-#define NVIC_PriorityGroup_2           ((uint32_t)0x02)
-#define NVIC_PriorityGroup_3           ((uint32_t)0x03)
-#define NVIC_PriorityGroup_4           ((uint32_t)0x04)
-
-
-/* ch32v00x_opa.h ------------------------------------------------------------*/
-
-/* Editor's note: I don't know if this is actually useful */
-
-/* OPA PSEL enumeration */
-typedef enum
-{
-    CHP0 = 0,
-    CHP1
-} OPA_PSEL_TypeDef;
-
-/* OPA NSEL enumeration */
-typedef enum
-{
-    CHN0 = 0,
-    CHN1
-} OPA_NSEL_TypeDef;
-
-
-/* OPA Init Structure definition */
-typedef struct
-{
-    OPA_PSEL_TypeDef PSEL;    /* Specifies the positive channel of OPA */
-    OPA_NSEL_TypeDef NSEL;    /* Specifies the negative channel of OPA */
-} OPA_InitTypeDef;
-
-
-/* ch32v00x_pwr.h ------------------------------------------------------------*/
-
-
-/* PVD_detection_level  */
-#define PWR_PVDLevel_2V9          ((uint32_t)0x00000000)
-#define PWR_PVDLevel_3V1          ((uint32_t)0x00000020)
-#define PWR_PVDLevel_3V3          ((uint32_t)0x00000040)
-#define PWR_PVDLevel_3V5          ((uint32_t)0x00000060)
-#define PWR_PVDLevel_3V7          ((uint32_t)0x00000080)
-#define PWR_PVDLevel_3V9          ((uint32_t)0x000000A0)
-#define PWR_PVDLevel_4V1          ((uint32_t)0x000000C0)
-#define PWR_PVDLevel_4V4          ((uint32_t)0x000000E0)
-
-/* PWR_AWU_Prescaler */
-#define PWR_AWU_Prescaler_1       ((uint32_t)0x00000000)
-#define PWR_AWU_Prescaler_2       ((uint32_t)0x00000002)
-#define PWR_AWU_Prescaler_4       ((uint32_t)0x00000003)
-#define PWR_AWU_Prescaler_8       ((uint32_t)0x00000004)
-#define PWR_AWU_Prescaler_16      ((uint32_t)0x00000005)
-#define PWR_AWU_Prescaler_32      ((uint32_t)0x00000006)
-#define PWR_AWU_Prescaler_64      ((uint32_t)0x00000007)
-#define PWR_AWU_Prescaler_128     ((uint32_t)0x00000008)
-#define PWR_AWU_Prescaler_256     ((uint32_t)0x00000009)
-#define PWR_AWU_Prescaler_512     ((uint32_t)0x0000000A)
-#define PWR_AWU_Prescaler_1024    ((uint32_t)0x0000000B)
-#define PWR_AWU_Prescaler_2048    ((uint32_t)0x0000000C)
-#define PWR_AWU_Prescaler_4096    ((uint32_t)0x0000000D)
-#define PWR_AWU_Prescaler_10240   ((uint32_t)0x0000000E)
-#define PWR_AWU_Prescaler_61440   ((uint32_t)0x0000000F)
-
-/* STOP_mode_entry */
-#define PWR_STANDBYEntry_WFI      ((uint8_t)0x01)
-#define PWR_STANDBYEntry_WFE      ((uint8_t)0x02)
-
-/* PWR_Flag */
-#define PWR_FLAG_PVDO             ((uint32_t)0x00000004)
-
-
-/* ch32v00x_rcc.h ------------------------------------------------------------*/
-
-
-/* HSE_configuration */
-#define RCC_HSE_OFF                      ((uint32_t)0x00000000)
-#define RCC_HSE_ON                       ((uint32_t)0x00010000)
-#define RCC_HSE_Bypass                   ((uint32_t)0x00040000)
-
-/* PLL_entry_clock_source */
-#define RCC_PLLSource_HSI_MUL2           ((uint32_t)0x00000000)
-#define RCC_PLLSource_HSE_MUL2           ((uint32_t)0x00030000)
-
-/* System_clock_source */
-#define RCC_SYSCLKSource_HSI             ((uint32_t)0x00000000)
-#define RCC_SYSCLKSource_HSE             ((uint32_t)0x00000001)
-#define RCC_SYSCLKSource_PLLCLK          ((uint32_t)0x00000002)
-
-/* AHB_clock_source */
-#define RCC_SYSCLK_Div1                  ((uint32_t)0x00000000)
-#define RCC_SYSCLK_Div2                  ((uint32_t)0x00000010)
-#define RCC_SYSCLK_Div3                  ((uint32_t)0x00000020)
-#define RCC_SYSCLK_Div4                  ((uint32_t)0x00000030)
-#define RCC_SYSCLK_Div5                  ((uint32_t)0x00000040)
-#define RCC_SYSCLK_Div6                  ((uint32_t)0x00000050)
-#define RCC_SYSCLK_Div7                  ((uint32_t)0x00000060)
-#define RCC_SYSCLK_Div8                  ((uint32_t)0x00000070)
-#define RCC_SYSCLK_Div16                 ((uint32_t)0x000000B0)
-#define RCC_SYSCLK_Div32                 ((uint32_t)0x000000C0)
-#define RCC_SYSCLK_Div64                 ((uint32_t)0x000000D0)
-#define RCC_SYSCLK_Div128                ((uint32_t)0x000000E0)
-#define RCC_SYSCLK_Div256                ((uint32_t)0x000000F0)
-
-/* RCC_Interrupt_source */
-#define RCC_IT_LSIRDY                    ((uint8_t)0x01)
-#define RCC_IT_HSIRDY                    ((uint8_t)0x04)
-#define RCC_IT_HSERDY                    ((uint8_t)0x08)
-#define RCC_IT_PLLRDY                    ((uint8_t)0x10)
-#define RCC_IT_CSS                       ((uint8_t)0x80)
-
-/* ADC_clock_source */
-#define RCC_PCLK2_Div2                   ((uint32_t)0x00000000)
-#define RCC_PCLK2_Div4                   ((uint32_t)0x00004000)
-#define RCC_PCLK2_Div6                   ((uint32_t)0x00008000)
-#define RCC_PCLK2_Div8                   ((uint32_t)0x0000C000)
-#define RCC_PCLK2_Div12                  ((uint32_t)0x0000A000)
-#define RCC_PCLK2_Div16                  ((uint32_t)0x0000E000)
-#define RCC_PCLK2_Div24                  ((uint32_t)0x0000A800)
-#define RCC_PCLK2_Div32                  ((uint32_t)0x0000E800)
-#define RCC_PCLK2_Div48                  ((uint32_t)0x0000B000)
-#define RCC_PCLK2_Div64                  ((uint32_t)0x0000F000)
-#define RCC_PCLK2_Div96                  ((uint32_t)0x0000B800)
-#define RCC_PCLK2_Div128                 ((uint32_t)0x0000F800)
-
-/* AHB_peripheral */
-#define RCC_AHBPeriph_DMA1               ((uint32_t)0x00000001)
-#define RCC_AHBPeriph_SRAM               ((uint32_t)0x00000004)
-
-/* APB2_peripheral */
-#define RCC_APB2Periph_AFIO              ((uint32_t)0x00000001)
-#define RCC_APB2Periph_GPIOA             ((uint32_t)0x00000004)
-#define RCC_APB2Periph_GPIOC             ((uint32_t)0x00000010)
-#define RCC_APB2Periph_GPIOD             ((uint32_t)0x00000020)
-#define RCC_APB2Periph_ADC1              ((uint32_t)0x00000200)
-#define RCC_APB2Periph_TIM1              ((uint32_t)0x00000800)
-#define RCC_APB2Periph_SPI1              ((uint32_t)0x00001000)
-#define RCC_APB2Periph_USART1            ((uint32_t)0x00004000)
-
-/* APB1_peripheral */
-#define RCC_APB1Periph_TIM2              ((uint32_t)0x00000001)
-#define RCC_APB1Periph_WWDG              ((uint32_t)0x00000800)
-#define RCC_APB1Periph_I2C1              ((uint32_t)0x00200000)
-#define RCC_APB1Periph_PWR               ((uint32_t)0x10000000)
-
-/* Clock_source_to_output_on_MCO_pin */
-#define RCC_MCO_NoClock                  ((uint8_t)0x00)
-#define RCC_MCO_SYSCLK                   ((uint8_t)0x04)
-#define RCC_MCO_HSI                      ((uint8_t)0x05)
-#define RCC_MCO_HSE                      ((uint8_t)0x06)
-#define RCC_MCO_PLLCLK                   ((uint8_t)0x07)
-
-/* RCC_Flag */
-#define RCC_FLAG_HSIRDY                  ((uint8_t)0x21)
-#define RCC_FLAG_HSERDY                  ((uint8_t)0x31)
-#define RCC_FLAG_PLLRDY                  ((uint8_t)0x39)
-#define RCC_FLAG_LSIRDY                  ((uint8_t)0x61)
-#define RCC_FLAG_PINRST                  ((uint8_t)0x7A)
-#define RCC_FLAG_PORRST                  ((uint8_t)0x7B)
-#define RCC_FLAG_SFTRST                  ((uint8_t)0x7C)
-#define RCC_FLAG_IWDGRST                 ((uint8_t)0x7D)
-#define RCC_FLAG_WWDGRST                 ((uint8_t)0x7E)
-#define RCC_FLAG_LPWRRST                 ((uint8_t)0x7F)
-
-/* SysTick_clock_source */
-#define SysTick_CLKSource_HCLK_Div8      ((uint32_t)0xFFFFFFFB)
-#define SysTick_CLKSource_HCLK           ((uint32_t)0x00000004)
-
-
-/* ch32v00x_spi.h ------------------------------------------------------------*/
-
-
-/* SPI_data_direction */
-#define SPI_Direction_2Lines_FullDuplex    ((uint16_t)0x0000)
-#define SPI_Direction_2Lines_RxOnly        ((uint16_t)0x0400)
-#define SPI_Direction_1Line_Rx             ((uint16_t)0x8000)
-#define SPI_Direction_1Line_Tx             ((uint16_t)0xC000)
-
-/* SPI_mode */
-#define SPI_Mode_Master                    ((uint16_t)0x0104)
-#define SPI_Mode_Slave                     ((uint16_t)0x0000)
-
-/* SPI_data_size */
-#define SPI_DataSize_16b                   ((uint16_t)0x0800)
-#define SPI_DataSize_8b                    ((uint16_t)0x0000)
-
-/* SPI_Clock_Polarity */
-#define SPI_CPOL_Low                       ((uint16_t)0x0000)
-#define SPI_CPOL_High                      ((uint16_t)0x0002)
-
-/* SPI_Clock_Phase */
-#define SPI_CPHA_1Edge                     ((uint16_t)0x0000)
-#define SPI_CPHA_2Edge                     ((uint16_t)0x0001)
-
-/* SPI_Slave_Select_management */
-#define SPI_NSS_Soft                       ((uint16_t)0x0200)
-#define SPI_NSS_Hard                       ((uint16_t)0x0000)
-
-/* SPI_BaudRate_Prescaler */
-#define SPI_BaudRatePrescaler_2            ((uint16_t)0x0000)
-#define SPI_BaudRatePrescaler_4            ((uint16_t)0x0008)
-#define SPI_BaudRatePrescaler_8            ((uint16_t)0x0010)
-#define SPI_BaudRatePrescaler_16           ((uint16_t)0x0018)
-#define SPI_BaudRatePrescaler_32           ((uint16_t)0x0020)
-#define SPI_BaudRatePrescaler_64           ((uint16_t)0x0028)
-#define SPI_BaudRatePrescaler_128          ((uint16_t)0x0030)
-#define SPI_BaudRatePrescaler_256          ((uint16_t)0x0038)
-
-/* SPI_MSB transmission */
-#define SPI_FirstBit_MSB                   ((uint16_t)0x0000)
-
-/* SPI_I2S_DMA_transfer_requests */
-#define SPI_I2S_DMAReq_Tx                  ((uint16_t)0x0002)
-#define SPI_I2S_DMAReq_Rx                  ((uint16_t)0x0001)
-
-/* SPI_NSS_internal_software_management */
-#define SPI_NSSInternalSoft_Set            ((uint16_t)0x0100)
-#define SPI_NSSInternalSoft_Reset          ((uint16_t)0xFEFF)
-
-/* SPI_CRC_Transmit_Receive */
-#define SPI_CRC_Tx                         ((uint8_t)0x00)
-#define SPI_CRC_Rx                         ((uint8_t)0x01)
-
-/* SPI_direction_transmit_receive */
-#define SPI_Direction_Rx                   ((uint16_t)0xBFFF)
-#define SPI_Direction_Tx                   ((uint16_t)0x4000)
-
-/* SPI_I2S_interrupts_definition */
-#define SPI_I2S_IT_TXE                     ((uint8_t)0x71)
-#define SPI_I2S_IT_RXNE                    ((uint8_t)0x60)
-#define SPI_I2S_IT_ERR                     ((uint8_t)0x50)
-#define SPI_I2S_IT_OVR                     ((uint8_t)0x56)
-#define SPI_IT_MODF                        ((uint8_t)0x55)
-#define SPI_IT_CRCERR                      ((uint8_t)0x54)
-#define I2S_IT_UDR                         ((uint8_t)0x53)
-
-/* SPI_I2S_flags_definition */
-#define SPI_I2S_FLAG_RXNE                  ((uint16_t)0x0001)
-#define SPI_I2S_FLAG_TXE                   ((uint16_t)0x0002)
-#define I2S_FLAG_CHSIDE                    ((uint16_t)0x0004)
-#define I2S_FLAG_UDR                       ((uint16_t)0x0008)
-#define SPI_FLAG_CRCERR                    ((uint16_t)0x0010)
-#define SPI_FLAG_MODF                      ((uint16_t)0x0020)
-#define SPI_I2S_FLAG_OVR                   ((uint16_t)0x0040)
-#define SPI_I2S_FLAG_BSY                   ((uint16_t)0x0080)
-
-
-/* ch32v00x_tim.h ------------------------------------------------------------*/
-
-/* TIM_Output_Compare_and_PWM_modes */
-#define TIM_OCMode_Timing                  ((uint16_t)0x0000)
-#define TIM_OCMode_Active                  ((uint16_t)0x0010)
-#define TIM_OCMode_Inactive                ((uint16_t)0x0020)
-#define TIM_OCMode_Toggle                  ((uint16_t)0x0030)
-#define TIM_OCMode_PWM1                    ((uint16_t)0x0060)
-#define TIM_OCMode_PWM2                    ((uint16_t)0x0070)
-
-/* TIM_One_Pulse_Mode */
-#define TIM_OPMode_Single                  ((uint16_t)0x0008)
-#define TIM_OPMode_Repetitive              ((uint16_t)0x0000)
-
-/* TIM_Channel */
-#define TIM_Channel_1                      ((uint16_t)0x0000)
-#define TIM_Channel_2                      ((uint16_t)0x0004)
-#define TIM_Channel_3                      ((uint16_t)0x0008)
-#define TIM_Channel_4                      ((uint16_t)0x000C)
-
-/* TIM_Clock_Division_CKD */
-#define TIM_CKD_DIV1                       ((uint16_t)0x0000)
-#define TIM_CKD_DIV2                       ((uint16_t)0x0100)
-#define TIM_CKD_DIV4                       ((uint16_t)0x0200)
-
-/* TIM_Counter_Mode */
-#define TIM_CounterMode_Up                 ((uint16_t)0x0000)
-#define TIM_CounterMode_Down               ((uint16_t)0x0010)
-#define TIM_CounterMode_CenterAligned1     ((uint16_t)0x0020)
-#define TIM_CounterMode_CenterAligned2     ((uint16_t)0x0040)
-#define TIM_CounterMode_CenterAligned3     ((uint16_t)0x0060)
-
-/* TIM_Output_Compare_Polarity */
-#define TIM_OCPolarity_High                ((uint16_t)0x0000)
-#define TIM_OCPolarity_Low                 ((uint16_t)0x0002)
-
-/* TIM_Output_Compare_N_Polarity */
-#define TIM_OCNPolarity_High               ((uint16_t)0x0000)
-#define TIM_OCNPolarity_Low                ((uint16_t)0x0008)
-
-/* TIM_Output_Compare_state */
-#define TIM_OutputState_Disable            ((uint16_t)0x0000)
-#define TIM_OutputState_Enable             ((uint16_t)0x0001)
-
-/* TIM_Output_Compare_N_state */
-#define TIM_OutputNState_Disable           ((uint16_t)0x0000)
-#define TIM_OutputNState_Enable            ((uint16_t)0x0004)
-
-/* TIM_Capture_Compare_state */
-#define TIM_CCx_Enable                     ((uint16_t)0x0001)
-#define TIM_CCx_Disable                    ((uint16_t)0x0000)
-
-/* TIM_Capture_Compare_N_state */
-#define TIM_CCxN_Enable                    ((uint16_t)0x0004)
-#define TIM_CCxN_Disable                   ((uint16_t)0x0000)
-
-/* Break_Input_enable_disable */
-#define TIM_Break_Enable                   ((uint16_t)0x1000)
-#define TIM_Break_Disable                  ((uint16_t)0x0000)
-
-/* Break_Polarity */
-#define TIM_BreakPolarity_Low              ((uint16_t)0x0000)
-#define TIM_BreakPolarity_High             ((uint16_t)0x2000)
-
-/* TIM_AOE_Bit_Set_Reset */
-#define TIM_AutomaticOutput_Enable         ((uint16_t)0x4000)
-#define TIM_AutomaticOutput_Disable        ((uint16_t)0x0000)
-
-/* Lock_level */
-#define TIM_LOCKLevel_OFF                  ((uint16_t)0x0000)
-#define TIM_LOCKLevel_1                    ((uint16_t)0x0100)
-#define TIM_LOCKLevel_2                    ((uint16_t)0x0200)
-#define TIM_LOCKLevel_3                    ((uint16_t)0x0300)
-
-/* OSSI_Off_State_Selection_for_Idle_mode_state */
-#define TIM_OSSIState_Enable               ((uint16_t)0x0400)
-#define TIM_OSSIState_Disable              ((uint16_t)0x0000)
-
-/* OSSR_Off_State_Selection_for_Run_mode_state */
-#define TIM_OSSRState_Enable               ((uint16_t)0x0800)
-#define TIM_OSSRState_Disable              ((uint16_t)0x0000)
-
-/* TIM_Output_Compare_Idle_State */
-#define TIM_OCIdleState_Set                ((uint16_t)0x0100)
-#define TIM_OCIdleState_Reset              ((uint16_t)0x0000)
-
-/* TIM_Output_Compare_N_Idle_State */
-#define TIM_OCNIdleState_Set               ((uint16_t)0x0200)
-#define TIM_OCNIdleState_Reset             ((uint16_t)0x0000)
-
-/* TIM_Input_Capture_Polarity */
-#define TIM_ICPolarity_Rising              ((uint16_t)0x0000)
-#define TIM_ICPolarity_Falling             ((uint16_t)0x0002)
-#define TIM_ICPolarity_BothEdge            ((uint16_t)0x000A)
-
-/* TIM_Input_Capture_Selection */
-#define TIM_ICSelection_DirectTI           ((uint16_t)0x0001) /* TIM Input 1, 2, 3 or 4 is selected to be \
-                                                                 connected to IC1, IC2, IC3 or IC4, respectively */
-#define TIM_ICSelection_IndirectTI         ((uint16_t)0x0002) /* TIM Input 1, 2, 3 or 4 is selected to be \
-                                                                 connected to IC2, IC1, IC4 or IC3, respectively. */
-#define TIM_ICSelection_TRC                ((uint16_t)0x0003) /* TIM Input 1, 2, 3 or 4 is selected to be connected to TRC. */
-
-/* TIM_Input_Capture_Prescaler */
-#define TIM_ICPSC_DIV1                     ((uint16_t)0x0000) /* Capture performed each time an edge is detected on the capture input. */
-#define TIM_ICPSC_DIV2                     ((uint16_t)0x0004) /* Capture performed once every 2 events. */
-#define TIM_ICPSC_DIV4                     ((uint16_t)0x0008) /* Capture performed once every 4 events. */
-#define TIM_ICPSC_DIV8                     ((uint16_t)0x000C) /* Capture performed once every 8 events. */
-
-/* TIM_interrupt_sources */
-#define TIM_IT_Update                      ((uint16_t)0x0001)
-#define TIM_IT_CC1                         ((uint16_t)0x0002)
-#define TIM_IT_CC2                         ((uint16_t)0x0004)
-#define TIM_IT_CC3                         ((uint16_t)0x0008)
-#define TIM_IT_CC4                         ((uint16_t)0x0010)
-#define TIM_IT_COM                         ((uint16_t)0x0020)
-#define TIM_IT_Trigger                     ((uint16_t)0x0040)
-#define TIM_IT_Break                       ((uint16_t)0x0080)
-
-/* TIM_DMA_Base_address */
-#define TIM_DMABase_CR1                    ((uint16_t)0x0000)
-#define TIM_DMABase_CR2                    ((uint16_t)0x0001)
-#define TIM_DMABase_SMCR                   ((uint16_t)0x0002)
-#define TIM_DMABase_DIER                   ((uint16_t)0x0003)
-#define TIM_DMABase_SR                     ((uint16_t)0x0004)
-#define TIM_DMABase_EGR                    ((uint16_t)0x0005)
-#define TIM_DMABase_CCMR1                  ((uint16_t)0x0006)
-#define TIM_DMABase_CCMR2                  ((uint16_t)0x0007)
-#define TIM_DMABase_CCER                   ((uint16_t)0x0008)
-#define TIM_DMABase_CNT                    ((uint16_t)0x0009)
-#define TIM_DMABase_PSC                    ((uint16_t)0x000A)
-#define TIM_DMABase_ARR                    ((uint16_t)0x000B)
-#define TIM_DMABase_RCR                    ((uint16_t)0x000C)
-#define TIM_DMABase_CCR1                   ((uint16_t)0x000D)
-#define TIM_DMABase_CCR2                   ((uint16_t)0x000E)
-#define TIM_DMABase_CCR3                   ((uint16_t)0x000F)
-#define TIM_DMABase_CCR4                   ((uint16_t)0x0010)
-#define TIM_DMABase_BDTR                   ((uint16_t)0x0011)
-#define TIM_DMABase_DCR                    ((uint16_t)0x0012)
-
-/* TIM_DMA_Burst_Length */
-#define TIM_DMABurstLength_1Transfer       ((uint16_t)0x0000)
-#define TIM_DMABurstLength_2Transfers      ((uint16_t)0x0100)
-#define TIM_DMABurstLength_3Transfers      ((uint16_t)0x0200)
-#define TIM_DMABurstLength_4Transfers      ((uint16_t)0x0300)
-#define TIM_DMABurstLength_5Transfers      ((uint16_t)0x0400)
-#define TIM_DMABurstLength_6Transfers      ((uint16_t)0x0500)
-#define TIM_DMABurstLength_7Transfers      ((uint16_t)0x0600)
-#define TIM_DMABurstLength_8Transfers      ((uint16_t)0x0700)
-#define TIM_DMABurstLength_9Transfers      ((uint16_t)0x0800)
-#define TIM_DMABurstLength_10Transfers     ((uint16_t)0x0900)
-#define TIM_DMABurstLength_11Transfers     ((uint16_t)0x0A00)
-#define TIM_DMABurstLength_12Transfers     ((uint16_t)0x0B00)
-#define TIM_DMABurstLength_13Transfers     ((uint16_t)0x0C00)
-#define TIM_DMABurstLength_14Transfers     ((uint16_t)0x0D00)
-#define TIM_DMABurstLength_15Transfers     ((uint16_t)0x0E00)
-#define TIM_DMABurstLength_16Transfers     ((uint16_t)0x0F00)
-#define TIM_DMABurstLength_17Transfers     ((uint16_t)0x1000)
-#define TIM_DMABurstLength_18Transfers     ((uint16_t)0x1100)
-
-/* TIM_DMA_sources */
-#define TIM_DMA_Update                     ((uint16_t)0x0100)
-#define TIM_DMA_CC1                        ((uint16_t)0x0200)
-#define TIM_DMA_CC2                        ((uint16_t)0x0400)
-#define TIM_DMA_CC3                        ((uint16_t)0x0800)
-#define TIM_DMA_CC4                        ((uint16_t)0x1000)
-#define TIM_DMA_COM                        ((uint16_t)0x2000)
-#define TIM_DMA_Trigger                    ((uint16_t)0x4000)
-
-/* TIM_External_Trigger_Prescaler */
-#define TIM_ExtTRGPSC_OFF                  ((uint16_t)0x0000)
-#define TIM_ExtTRGPSC_DIV2                 ((uint16_t)0x1000)
-#define TIM_ExtTRGPSC_DIV4                 ((uint16_t)0x2000)
-#define TIM_ExtTRGPSC_DIV8                 ((uint16_t)0x3000)
-
-/* TIM_Internal_Trigger_Selection */
-#define TIM_TS_ITR0                        ((uint16_t)0x0000)
-#define TIM_TS_ITR1                        ((uint16_t)0x0010)
-#define TIM_TS_ITR2                        ((uint16_t)0x0020)
-#define TIM_TS_ITR3                        ((uint16_t)0x0030)
-#define TIM_TS_TI1F_ED                     ((uint16_t)0x0040)
-#define TIM_TS_TI1FP1                      ((uint16_t)0x0050)
-#define TIM_TS_TI2FP2                      ((uint16_t)0x0060)
-#define TIM_TS_ETRF                        ((uint16_t)0x0070)
-
-/* TIM_TIx_External_Clock_Source */
-#define TIM_TIxExternalCLK1Source_TI1      ((uint16_t)0x0050)
-#define TIM_TIxExternalCLK1Source_TI2      ((uint16_t)0x0060)
-#define TIM_TIxExternalCLK1Source_TI1ED    ((uint16_t)0x0040)
-
-/* TIM_External_Trigger_Polarity */
-#define TIM_ExtTRGPolarity_Inverted        ((uint16_t)0x8000)
-#define TIM_ExtTRGPolarity_NonInverted     ((uint16_t)0x0000)
-
-/* TIM_Prescaler_Reload_Mode */
-#define TIM_PSCReloadMode_Update           ((uint16_t)0x0000)
-#define TIM_PSCReloadMode_Immediate        ((uint16_t)0x0001)
-
-/* TIM_Forced_Action */
-#define TIM_ForcedAction_Active            ((uint16_t)0x0050)
-#define TIM_ForcedAction_InActive          ((uint16_t)0x0040)
-
-/* TIM_Encoder_Mode */
-#define TIM_EncoderMode_TI1                ((uint16_t)0x0001)
-#define TIM_EncoderMode_TI2                ((uint16_t)0x0002)
-#define TIM_EncoderMode_TI12               ((uint16_t)0x0003)
-
-/* TIM_Event_Source */
-#define TIM_EventSource_Update             ((uint16_t)0x0001)
-#define TIM_EventSource_CC1                ((uint16_t)0x0002)
-#define TIM_EventSource_CC2                ((uint16_t)0x0004)
-#define TIM_EventSource_CC3                ((uint16_t)0x0008)
-#define TIM_EventSource_CC4                ((uint16_t)0x0010)
-#define TIM_EventSource_COM                ((uint16_t)0x0020)
-#define TIM_EventSource_Trigger            ((uint16_t)0x0040)
-#define TIM_EventSource_Break              ((uint16_t)0x0080)
-
-/* TIM_Update_Source */
-#define TIM_UpdateSource_Global            ((uint16_t)0x0000) /* Source of update is the counter overflow/underflow \
-                                                                 or the setting of UG bit, or an update generation  \
-                                                                 through the slave mode controller. */
-#define TIM_UpdateSource_Regular           ((uint16_t)0x0001) /* Source of update is counter overflow/underflow. */
-
-/* TIM_Output_Compare_Preload_State */
-#define TIM_OCPreload_Enable               ((uint16_t)0x0008)
-#define TIM_OCPreload_Disable              ((uint16_t)0x0000)
-
-/* TIM_Output_Compare_Fast_State */
-#define TIM_OCFast_Enable                  ((uint16_t)0x0004)
-#define TIM_OCFast_Disable                 ((uint16_t)0x0000)
-
-/* TIM_Output_Compare_Clear_State */
-#define TIM_OCClear_Enable                 ((uint16_t)0x0080)
-#define TIM_OCClear_Disable                ((uint16_t)0x0000)
-
-/* TIM_Trigger_Output_Source */
-#define TIM_TRGOSource_Reset               ((uint16_t)0x0000)
-#define TIM_TRGOSource_Enable              ((uint16_t)0x0010)
-#define TIM_TRGOSource_Update              ((uint16_t)0x0020)
-#define TIM_TRGOSource_OC1                 ((uint16_t)0x0030)
-#define TIM_TRGOSource_OC1Ref              ((uint16_t)0x0040)
-#define TIM_TRGOSource_OC2Ref              ((uint16_t)0x0050)
-#define TIM_TRGOSource_OC3Ref              ((uint16_t)0x0060)
-#define TIM_TRGOSource_OC4Ref              ((uint16_t)0x0070)
-
-/* TIM_Slave_Mode */
-#define TIM_SlaveMode_Reset                ((uint16_t)0x0004)
-#define TIM_SlaveMode_Gated                ((uint16_t)0x0005)
-#define TIM_SlaveMode_Trigger              ((uint16_t)0x0006)
-#define TIM_SlaveMode_External1            ((uint16_t)0x0007)
-
-/* TIM_Master_Slave_Mode */
-#define TIM_MasterSlaveMode_Enable         ((uint16_t)0x0080)
-#define TIM_MasterSlaveMode_Disable        ((uint16_t)0x0000)
-
-/* TIM_Flags */
-#define TIM_FLAG_Update                    ((uint16_t)0x0001)
-#define TIM_FLAG_CC1                       ((uint16_t)0x0002)
-#define TIM_FLAG_CC2                       ((uint16_t)0x0004)
-#define TIM_FLAG_CC3                       ((uint16_t)0x0008)
-#define TIM_FLAG_CC4                       ((uint16_t)0x0010)
-#define TIM_FLAG_COM                       ((uint16_t)0x0020)
-#define TIM_FLAG_Trigger                   ((uint16_t)0x0040)
-#define TIM_FLAG_Break                     ((uint16_t)0x0080)
-#define TIM_FLAG_CC1OF                     ((uint16_t)0x0200)
-#define TIM_FLAG_CC2OF                     ((uint16_t)0x0400)
-#define TIM_FLAG_CC3OF                     ((uint16_t)0x0800)
-#define TIM_FLAG_CC4OF                     ((uint16_t)0x1000)
-
-/* TIM_Legacy */
-#define TIM_DMABurstLength_1Byte           TIM_DMABurstLength_1Transfer
-#define TIM_DMABurstLength_2Bytes          TIM_DMABurstLength_2Transfers
-#define TIM_DMABurstLength_3Bytes          TIM_DMABurstLength_3Transfers
-#define TIM_DMABurstLength_4Bytes          TIM_DMABurstLength_4Transfers
-#define TIM_DMABurstLength_5Bytes          TIM_DMABurstLength_5Transfers
-#define TIM_DMABurstLength_6Bytes          TIM_DMABurstLength_6Transfers
-#define TIM_DMABurstLength_7Bytes          TIM_DMABurstLength_7Transfers
-#define TIM_DMABurstLength_8Bytes          TIM_DMABurstLength_8Transfers
-#define TIM_DMABurstLength_9Bytes          TIM_DMABurstLength_9Transfers
-#define TIM_DMABurstLength_10Bytes         TIM_DMABurstLength_10Transfers
-#define TIM_DMABurstLength_11Bytes         TIM_DMABurstLength_11Transfers
-#define TIM_DMABurstLength_12Bytes         TIM_DMABurstLength_12Transfers
-#define TIM_DMABurstLength_13Bytes         TIM_DMABurstLength_13Transfers
-#define TIM_DMABurstLength_14Bytes         TIM_DMABurstLength_14Transfers
-#define TIM_DMABurstLength_15Bytes         TIM_DMABurstLength_15Transfers
-#define TIM_DMABurstLength_16Bytes         TIM_DMABurstLength_16Transfers
-#define TIM_DMABurstLength_17Bytes         TIM_DMABurstLength_17Transfers
-#define TIM_DMABurstLength_18Bytes         TIM_DMABurstLength_18Transfers
-
-
-/* ch32v00x_usart.h ----------------------------------------------------------*/
-
-/* USART_Word_Length */
-#define USART_WordLength_8b                  ((uint16_t)0x0000)
-#define USART_WordLength_9b                  ((uint16_t)0x1000)
-
-/* USART_Stop_Bits */
-#define USART_StopBits_1                     ((uint16_t)0x0000)
-#define USART_StopBits_0_5                   ((uint16_t)0x1000)
-#define USART_StopBits_2                     ((uint16_t)0x2000)
-#define USART_StopBits_1_5                   ((uint16_t)0x3000)
-
-/* USART_Parity */
-#define USART_Parity_No                      ((uint16_t)0x0000)
-#define USART_Parity_Even                    ((uint16_t)0x0400)
-#define USART_Parity_Odd                     ((uint16_t)0x0600)
-
-/* USART_Mode */
-#define USART_Mode_Rx                        ((uint16_t)0x0004)
-#define USART_Mode_Tx                        ((uint16_t)0x0008)
-
-/* USART_Hardware_Flow_Control */
-#define USART_HardwareFlowControl_None       ((uint16_t)0x0000)
-#define USART_HardwareFlowControl_RTS        ((uint16_t)0x0100)
-#define USART_HardwareFlowControl_CTS        ((uint16_t)0x0200)
-#define USART_HardwareFlowControl_RTS_CTS    ((uint16_t)0x0300)
-
-/* USART_Clock */
-#define USART_Clock_Disable                  ((uint16_t)0x0000)
-#define USART_Clock_Enable                   ((uint16_t)0x0800)
-
-/* USART_Clock_Polarity */
-#define USART_CPOL_Low                       ((uint16_t)0x0000)
-#define USART_CPOL_High                      ((uint16_t)0x0400)
-
-/* USART_Clock_Phase */
-#define USART_CPHA_1Edge                     ((uint16_t)0x0000)
-#define USART_CPHA_2Edge                     ((uint16_t)0x0200)
-
-/* USART_Last_Bit */
-#define USART_LastBit_Disable                ((uint16_t)0x0000)
-#define USART_LastBit_Enable                 ((uint16_t)0x0100)
-
-/* USART_Interrupt_definition */
-#define USART_IT_PE                          ((uint16_t)0x0028)
-#define USART_IT_TXE                         ((uint16_t)0x0727)
-#define USART_IT_TC                          ((uint16_t)0x0626)
-#define USART_IT_RXNE                        ((uint16_t)0x0525)
-#define USART_IT_ORE_RX                      ((uint16_t)0x0325)
-#define USART_IT_IDLE                        ((uint16_t)0x0424)
-#define USART_IT_LBD                         ((uint16_t)0x0846)
-#define USART_IT_CTS                         ((uint16_t)0x096A)
-#define USART_IT_ERR                         ((uint16_t)0x0060)
-#define USART_IT_ORE_ER                      ((uint16_t)0x0360)
-#define USART_IT_NE                          ((uint16_t)0x0260)
-#define USART_IT_FE                          ((uint16_t)0x0160)
-
-#define USART_IT_ORE                         USART_IT_ORE_ER
-
-/* USART_DMA_Requests */
-#define USART_DMAReq_Tx                      ((uint16_t)0x0080)
-#define USART_DMAReq_Rx                      ((uint16_t)0x0040)
-
-/* USART_WakeUp_methods */
-#define USART_WakeUp_IdleLine                ((uint16_t)0x0000)
-#define USART_WakeUp_AddressMark             ((uint16_t)0x0800)
-
-/* USART_LIN_Break_Detection_Length */
-#define USART_LINBreakDetectLength_10b       ((uint16_t)0x0000)
-#define USART_LINBreakDetectLength_11b       ((uint16_t)0x0020)
-
-/* USART_IrDA_Low_Power */
-#define USART_IrDAMode_LowPower              ((uint16_t)0x0004)
-#define USART_IrDAMode_Normal                ((uint16_t)0x0000)
-
-/* USART_Flags */
-#define USART_FLAG_CTS                       ((uint16_t)0x0200)
-#define USART_FLAG_LBD                       ((uint16_t)0x0100)
-#define USART_FLAG_TXE                       ((uint16_t)0x0080)
-#define USART_FLAG_TC                        ((uint16_t)0x0040)
-#define USART_FLAG_RXNE                      ((uint16_t)0x0020)
-#define USART_FLAG_IDLE                      ((uint16_t)0x0010)
-#define USART_FLAG_ORE                       ((uint16_t)0x0008)
-#define USART_FLAG_NE                        ((uint16_t)0x0004)
-#define USART_FLAG_FE                        ((uint16_t)0x0002)
-#define USART_FLAG_PE                        ((uint16_t)0x0001)
-
-/* ch32v00x_wwdg.h -----------------------------------------------------------*/
-
-
-/* WWDG_Prescaler */
-#define WWDG_Prescaler_1    ((uint32_t)0x00000000)
-#define WWDG_Prescaler_2    ((uint32_t)0x00000080)
-#define WWDG_Prescaler_4    ((uint32_t)0x00000100)
-#define WWDG_Prescaler_8    ((uint32_t)0x00000180)
-
-
-/* from debug.h/.c ------------------------------------------------------*/
-
-#ifndef __DEBUG_H
-#define __DEBUG_H
-
-// Functions rewritten by cnlohr
-
-#define DELAY_US_TIME (SYSTEM_CORE_CLOCK / 8000000)
-#define DELAY_MS_TIME (SYSTEM_CORE_CLOCK / 8000)
-
-static void DelaySysTick( uint32_t n )
-{
-    SysTick->SR &= ~(1 << 0);
-    SysTick->CMP = n;
-    SysTick->CNT = 0; 
-    SysTick->CTLR |=(1 << 0);
-    while(!(SysTick->SR & (1 << 0)));
-    SysTick->CTLR &= ~(1 << 0);
-}
-
-#define Delay_Us(n) DelaySysTick( n * DELAY_US_TIME )
-#define Delay_Ms(n) DelaySysTick( n * DELAY_MS_TIME )
-
-#endif
-
-
-#ifdef __cplusplus
-};
-#endif
-
-
-
-
-
-#endif /* __CH32V00x_CONF_H */
-
-
-	
-	
-	
diff --git a/attic/ch32v003evt/core_riscv.h b/attic/ch32v003evt/core_riscv.h
deleted file mode 100644
index 2e4382d..0000000
--- a/attic/ch32v003evt/core_riscv.h
+++ /dev/null
@@ -1,632 +0,0 @@
-/********************************** (C) COPYRIGHT  *******************************
- * File Name          : core_riscv.h
- * Author             : WCH
- * Version            : V1.0.0
- * Date               : 2022/08/08
- * Description        : RISC-V Core Peripheral Access Layer Header File
- *********************************************************************************
- * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
- * Attention: This software (modified or not) and binary are used for 
- * microcontroller manufactured by Nanjing Qinheng Microelectronics.
- *******************************************************************************/
-/*
- * NOTE: This file modified by CNLohr to be fully-header-only.
- */
- 
- 
-#ifndef __CORE_RISCV_H__
-#define __CORE_RISCV_H__
-
-#include <stdint.h>
-
-/* define compiler specific symbols */
-#if defined(__CC_ARM)
-  #define __ASM       __asm     /*!< asm keyword for ARM Compiler          */
-  #define __INLINE    __inline  /*!< inline keyword for ARM Compiler       */
-
-#elif defined(__ICCARM__)
-  #define __ASM       __asm   /*!< asm keyword for IAR Compiler          */
-  #define __INLINE    inline  /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
-
-#elif defined(__GNUC__)
-  #define __ASM       __asm   /*!< asm keyword for GNU Compiler          */
-  #define __INLINE    inline  /*!< inline keyword for GNU Compiler       */
-
-#elif defined(__TASKING__)
-  #define __ASM       __asm   /*!< asm keyword for TASKING Compiler      */
-  #define __INLINE    inline  /*!< inline keyword for TASKING Compiler   */
-
-#endif
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* IO definitions */
-#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   */
-
-/* Standard Peripheral Library old types (maintained for legacy purpose) */
-typedef __I uint32_t vuc32;  /* Read Only */
-typedef __I uint16_t vuc16;  /* Read Only */
-typedef __I uint8_t vuc8;   /* Read Only */
-
-typedef const uint32_t uc32;  /* Read Only */
-typedef const uint16_t uc16;  /* Read Only */
-typedef const uint8_t uc8;   /* Read Only */
-
-typedef __I int32_t vsc32;  /* Read Only */
-typedef __I int16_t vsc16;  /* Read Only */
-typedef __I int8_t vsc8;   /* Read Only */
-
-typedef const int32_t sc32;  /* Read Only */
-typedef const int16_t sc16;  /* Read Only */
-typedef const int8_t sc8;   /* Read Only */
-
-typedef __IO uint32_t  vu32;
-typedef __IO uint16_t vu16;
-typedef __IO uint8_t  vu8;
-
-typedef uint32_t  u32;
-typedef uint16_t u16;
-typedef uint8_t  u8;
-
-typedef __IO int32_t  vs32;
-typedef __IO int16_t  vs16;
-typedef __IO int8_t   vs8;
-
-typedef int32_t  s32;
-typedef int16_t s16;
-typedef int8_t  s8;
-
-typedef enum {NoREADY = 0, READY = !NoREADY} ErrorStatus;
-
-typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
-
-typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
-
-#define   RV_STATIC_INLINE  static  inline
-
-/* memory mapped structure for Program Fast Interrupt Controller (PFIC) */
-typedef struct{
-    __I  uint32_t ISR[8];
-    __I  uint32_t IPR[8];
-    __IO uint32_t ITHRESDR;
-    __IO uint32_t RESERVED;
-    __IO uint32_t CFGR;
-    __I  uint32_t GISR;
-    __IO uint8_t VTFIDR[4];
-    uint8_t RESERVED0[12];
-    __IO uint32_t VTFADDR[4];
-    uint8_t RESERVED1[0x90];
-    __O  uint32_t IENR[8];
-    uint8_t RESERVED2[0x60];
-    __O  uint32_t IRER[8];
-    uint8_t RESERVED3[0x60];
-    __O  uint32_t IPSR[8];
-    uint8_t RESERVED4[0x60];
-    __O  uint32_t IPRR[8];
-    uint8_t RESERVED5[0x60];
-    __IO uint32_t IACTR[8];
-    uint8_t RESERVED6[0xE0];
-    __IO uint8_t IPRIOR[256];
-    uint8_t RESERVED7[0x810];
-    __IO uint32_t SCTLR;
-}PFIC_Type;
-
-/* memory mapped structure for SysTick */
-typedef struct
-{
-    __IO uint32_t CTLR;
-    __IO uint32_t SR;
-    __IO uint32_t CNT;
-    uint32_t RESERVED0;
-    __IO uint32_t CMP;
-    uint32_t RESERVED1;
-}SysTick_Type;
-
-
-#define PFIC            ((PFIC_Type *) 0xE000E000 )
-#define NVIC            PFIC
-#define NVIC_KEY1       ((uint32_t)0xFA050000)
-#define	NVIC_KEY2	    ((uint32_t)0xBCAF0000)
-#define	NVIC_KEY3		((uint32_t)0xBEEF0000)
-
-#define SysTick         ((SysTick_Type *) 0xE000F000)
-
-
-/*********************************************************************
- * @fn      __enable_irq
- *
- * @brief   Enable Global Interrupt
- *
- * @return  none
- */
-RV_STATIC_INLINE void __enable_irq()
-{
-  uint32_t result;
-
-  __asm volatile("csrr %0," "mstatus": "=r"(result));
-  result |= 0x88;
-  __asm volatile ("csrw mstatus, %0" : : "r" (result) );
-}
-
-/*********************************************************************
- * @fn      __disable_irq
- *
- * @brief   Disable Global Interrupt
- *
- * @return  none
- */
-RV_STATIC_INLINE void __disable_irq()
-{
-  uint32_t result;
-
-  __asm volatile("csrr %0," "mstatus": "=r"(result));
-  result &= ~0x88;
-  __asm volatile ("csrw mstatus, %0" : : "r" (result) );
-}
-
-/*********************************************************************
- * @fn      __NOP
- *
- * @brief   nop
- *
- * @return  none
- */
-RV_STATIC_INLINE void __NOP()
-{
-  __asm volatile ("nop");
-}
-
-/*********************************************************************
- * @fn       NVIC_EnableIRQ
- *
- * @brief   Disable Interrupt
- *
- * @param   IRQn - Interrupt Numbers
- *
- * @return  none
- */
-RV_STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
-{
-  NVIC->IENR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-/*********************************************************************
- * @fn       NVIC_DisableIRQ
- *
- * @brief   Disable Interrupt
- *
- * @param   IRQn - Interrupt Numbers
- *
- * @return  none
- */
-RV_STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
-{
-  NVIC->IRER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-/*********************************************************************
- * @fn       NVIC_GetStatusIRQ
- *
- * @brief   Get Interrupt Enable State
- *
- * @param   IRQn - Interrupt Numbers
- *
- * @return  1 - 1: Interrupt Pending Enable
- *                0 - Interrupt Pending Disable
- */
-RV_STATIC_INLINE uint32_t NVIC_GetStatusIRQ(IRQn_Type IRQn)
-{
-  return((uint32_t) ((NVIC->ISR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0));
-}
-
-/*********************************************************************
- * @fn      NVIC_GetPendingIRQ
- *
- * @brief   Get Interrupt Pending State
- *
- * @param   IRQn - Interrupt Numbers
- *
- * @return  1 - 1: Interrupt Pending Enable
- *                0 - Interrupt Pending Disable
- */
-RV_STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
-{
-  return((uint32_t) ((NVIC->IPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0));
-}
-
-/*********************************************************************
- * @fn      NVIC_SetPendingIRQ
- *
- * @brief   Set Interrupt Pending
- *
- * @param   IRQn - Interrupt Numbers
- *
- * @return  none
- */
-RV_STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
-{
-  NVIC->IPSR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-/*********************************************************************
- * @fn      NVIC_ClearPendingIRQ
- *
- * @brief   Clear Interrupt Pending
- *
- * @param   IRQn - Interrupt Numbers
- *
- * @return  none
- */
-RV_STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
-{
-  NVIC->IPRR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
-/*********************************************************************
- * @fn      NVIC_GetActive
- *
- * @brief   Get Interrupt Active State
- *
- * @param   IRQn - Interrupt Numbers
- *
- * @return  1 - Interrupt Active
- *                0 - Interrupt No Active
- */
-RV_STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)
-{
-  return((uint32_t)((NVIC->IACTR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0));
-}
-
-/*********************************************************************
- * @fn      NVIC_SetPriority
- *
- * @brief   Set Interrupt Priority
- *
- * @param   IRQn - Interrupt Numbers
- *          priority: bit7 - pre-emption priority
- *                    bit6 - subpriority
- *                    bit[5-0] - reserved
- *
- * @return  none
- */
-RV_STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint8_t priority)
-{
-  NVIC->IPRIOR[(uint32_t)(IRQn)] = priority;
-}
-
-/*********************************************************************
- * @fn       __WFI
- *
- * @brief   Wait for Interrupt
- *
- * @return  none
- */
-__attribute__( ( always_inline ) ) RV_STATIC_INLINE void __WFI(void)
-{
-  NVIC->SCTLR &= ~(1<<3);   // wfi
-  asm volatile ("wfi");
-}
-
-/*********************************************************************
- * @fn       __WFE
- *
- * @brief   Wait for Events
- *
- * @return  none
- */
-__attribute__( ( always_inline ) ) RV_STATIC_INLINE void __WFE(void)
-{
-  uint32_t t;
-
-  t = NVIC->SCTLR;
-  NVIC->SCTLR |= (1<<3)|(1<<5);     // (wfi->wfe)+(__sev)
-  NVIC->SCTLR = (NVIC->SCTLR & ~(1<<5)) | ( t & (1<<5));
-  asm volatile ("wfi");
-  asm volatile ("wfi");
-}
-
-/*********************************************************************
- * @fn      SetVTFIRQ
- *
- * @brief   Set VTF Interrupt
- *
- * @param   addr - VTF interrupt service function base address.
- *                  IRQn - Interrupt Numbers
- *                  num - VTF Interrupt Numbers
- *                  NewState -  DISABLE or ENABLE
- *
- * @return  none
- */
-RV_STATIC_INLINE void SetVTFIRQ(uint32_t addr, IRQn_Type IRQn, uint8_t num, FunctionalState NewState){
-  if(num > 1)  return ;
-
-  if (NewState != DISABLE)
-  {
-      NVIC->VTFIDR[num] = IRQn;
-      NVIC->VTFADDR[num] = ((addr&0xFFFFFFFE)|0x1);
-  }
-  else{
-      NVIC->VTFIDR[num] = IRQn;
-      NVIC->VTFADDR[num] = ((addr&0xFFFFFFFE)&(~0x1));
-  }
-}
-
-/*********************************************************************
- * @fn       NVIC_SystemReset
- *
- * @brief   Initiate a system reset request
- *
- * @return  none
- */
-RV_STATIC_INLINE void NVIC_SystemReset(void)
-{
-  NVIC->CFGR = NVIC_KEY3|(1<<7);
-}
-
-
-
-/*********************************************************************
- * @fn      __get_MSTATUS
- *
- * @brief   Return the Machine Status Register
- *
- * @return  mstatus value
- */
-static inline uint32_t __get_MSTATUS(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0," "mstatus": "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __set_MSTATUS
- *
- * @brief   Set the Machine Status Register
- *
- * @param   value  - set mstatus value
- *
- * @return  none
- */
-static inline void __set_MSTATUS(uint32_t value)
-{
-    __ASM volatile("csrw mstatus, %0" : : "r"(value));
-}
-
-/*********************************************************************
- * @fn      __get_MISA
- *
- * @brief   Return the Machine ISA Register
- *
- * @return  misa value
- */
-static inline uint32_t __get_MISA(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0,""misa" : "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __set_MISA
- *
- * @brief   Set the Machine ISA Register
- *
- * @param   value  - set misa value
- *
- * @return  none
- */
-static inline void __set_MISA(uint32_t value)
-{
-    __ASM volatile("csrw misa, %0" : : "r"(value));
-}
-
-/*********************************************************************
- * @fn      __get_MTVEC
- *
- * @brief   Return the Machine Trap-Vector Base-Address Register
- *
- * @return  mtvec value
- */
-static inline uint32_t __get_MTVEC(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0," "mtvec": "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __set_MTVEC
- *
- * @brief   Set the Machine Trap-Vector Base-Address Register
- *
- * @param   value  - set mtvec value
- *
- * @return  none
- */
-static inline void __set_MTVEC(uint32_t value)
-{
-    __ASM volatile("csrw mtvec, %0":: "r"(value));
-}
-
-/*********************************************************************
- * @fn      __get_MSCRATCH
- *
- * @brief   Return the Machine Seratch Register
- *
- * @return  mscratch value
- */
-static inline uint32_t __get_MSCRATCH(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0," "mscratch" : "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __set_MSCRATCH
- *
- * @brief   Set the Machine Seratch Register
- *
- * @param   value  - set mscratch value
- *
- * @return  none
- */
-static inline void __set_MSCRATCH(uint32_t value)
-{
-    __ASM volatile("csrw mscratch, %0" : : "r"(value));
-}
-
-/*********************************************************************
- * @fn      __get_MEPC
- *
- * @brief   Return the Machine Exception Program Register
- *
- * @return  mepc value
- */
-static inline uint32_t __get_MEPC(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0," "mepc" : "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __set_MEPC
- *
- * @brief   Set the Machine Exception Program Register
- *
- * @return  mepc value
- */
-static inline void __set_MEPC(uint32_t value)
-{
-    __ASM volatile("csrw mepc, %0" : : "r"(value));
-}
-
-/*********************************************************************
- * @fn      __get_MCAUSE
- *
- * @brief   Return the Machine Cause Register
- *
- * @return  mcause value
- */
-static inline uint32_t __get_MCAUSE(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0," "mcause": "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __set_MCAUSE
- *
- * @brief   Set the Machine Cause Register
- *
- * @return  mcause value
- */
-static inline void __set_MCAUSE(uint32_t value)
-{
-    __ASM volatile("csrw mcause, %0":: "r"(value));
-}
-
-/*********************************************************************
- * @fn      __get_MVENDORID
- *
- * @brief   Return Vendor ID Register
- *
- * @return  mvendorid value
- */
-static inline uint32_t __get_MVENDORID(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0,""mvendorid": "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __get_MARCHID
- *
- * @brief   Return Machine Architecture ID Register
- *
- * @return  marchid value
- */
-static inline uint32_t __get_MARCHID(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0,""marchid": "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __get_MIMPID
- *
- * @brief   Return Machine Implementation ID Register
- *
- * @return  mimpid value
- */
-static inline uint32_t __get_MIMPID(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0,""mimpid": "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __get_MHARTID
- *
- * @brief   Return Hart ID Register
- *
- * @return  mhartid value
- */
-static inline uint32_t __get_MHARTID(void)
-{
-    uint32_t result;
-
-    __ASM volatile("csrr %0,""mhartid": "=r"(result));
-    return (result);
-}
-
-/*********************************************************************
- * @fn      __get_SP
- *
- * @brief   Return SP Register
- *
- * @return  SP value
- */
-static inline uint32_t __get_SP(void)
-{
-    uint32_t result;
-
-    __ASM volatile("mv %0,""sp": "=r"(result):);
-    return (result);
-}
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif/* __CORE_RISCV_H__ */
-
-
-
-
-
diff --git a/attic/ch32v003evt/embedlibc.c b/attic/ch32v003evt/embedlibc.c
deleted file mode 100644
index e40632b..0000000
--- a/attic/ch32v003evt/embedlibc.c
+++ /dev/null
@@ -1,649 +0,0 @@
-// Use with newlib headers.
-// Mixture of weblibc, mini-printf and ???
-
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <limits.h>
-
-int errno;
-int _write(int fd, const char *buf, int size);
-
-int mini_vsnprintf(char *buffer, unsigned int buffer_len, const char *fmt, va_list va);
-int mini_vpprintf(int (*puts)(char* s, int len, void* buf), void* buf, const char *fmt, va_list va);
-
-static int __puts_uart(char *s, int len, void *buf)
-{
-	_write( 0, s, len );
-	return len;
-}
-
-int printf(const char* format, ...)
-{
-	va_list args;
-	va_start( args, format );
-	int ret_status = mini_vpprintf(__puts_uart, 0, format, args);
-	va_end( args );
-	return ret_status;
-}
-
-
-/* Some stuff from MUSL
-
-
-----------------------------------------------------------------------
-Copyright © 2005-2020 Rich Felker, et al.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----------------------------------------------------------------------
-
-*/
-
-/*
- * mbstate_t is an opaque object to keep conversion state, during multibyte
- * stream conversions.  The content must not be referenced by user programs.
- */
-
-#define CURRENT_UTF8 0
-#define IS_CODEUNIT(c) ((unsigned)(c)-0xdf80 < 0x80)
-#define MB_CUR_MAX (CURRENT_UTF8 ? 4 : 1)
-
-typedef void * mbstate_t;
-
-size_t wcrtomb(char *restrict s, wchar_t wc, mbstate_t *restrict st)
-{
-	if (!s) return 1;
-	if ((unsigned)wc < 0x80) {
-		*s = wc;
-		return 1;
-	} else if (MB_CUR_MAX == 1) {
-		if (!IS_CODEUNIT(wc)) {
-			errno = 0x02; // EILSEQ
-			return -1;
-		}
-		*s = wc;
-		return 1;
-	} else if ((unsigned)wc < 0x800) {
-		*s++ = 0xc0 | (wc>>6);
-		*s = 0x80 | (wc&0x3f);
-		return 2;
-	} else if ((unsigned)wc < 0xd800 || (unsigned)wc-0xe000 < 0x2000) {
-		*s++ = 0xe0 | (wc>>12);
-		*s++ = 0x80 | ((wc>>6)&0x3f);
-		*s = 0x80 | (wc&0x3f);
-		return 3;
-	} else if ((unsigned)wc-0x10000 < 0x100000) {
-		*s++ = 0xf0 | (wc>>18);
-		*s++ = 0x80 | ((wc>>12)&0x3f);
-		*s++ = 0x80 | ((wc>>6)&0x3f);
-		*s = 0x80 | (wc&0x3f);
-		return 4;
-	}
-	errno = 0x02;//EILSEQ;
-	return -1;
-}
-int wctomb(char *s, wchar_t wc)
-{
-	if (!s) return 0;
-	return wcrtomb(s, wc, 0);
-}
-size_t strlen(const char *s) { const char *a = s;for (; *s; s++);return s-a; }
-size_t strnlen(const char *s, size_t n) { const char *p = memchr(s, 0, n); return p ? p-s : n;}
-void *memset(void *dest, int c, size_t n) { unsigned char *s = dest; for (; n; n--, s++) *s = c; return dest; }
-char *strcpy(char *d, const char *s) { for (; (*d=*s); s++, d++); return d; }
-char *strncpy(char *d, const char *s, size_t n) { for (; n && (*d=*s); n--, s++, d++); return d; }
-int strcmp(const char *l, const char *r)
-{
-	for (; *l==*r && *l; l++, r++);
-	return *(unsigned char *)l - *(unsigned char *)r;
-}
-int strncmp(const char *_l, const char *_r, size_t n)
-{
-	const unsigned char *l=(void *)_l, *r=(void *)_r;
-	if (!n--) return 0;
-	for (; *l && *r && n && *l == *r ; l++, r++, n--);
-	return *l - *r;
-}
-
-static char *twobyte_strstr(const unsigned char *h, const unsigned char *n)
-{
-	uint16_t nw = n[0]<<8 | n[1], hw = h[0]<<8 | h[1];
-	for (h++; *h && hw != nw; hw = hw<<8 | *++h);
-	return *h ? (char *)h-1 : 0;
-}
-
-static char *threebyte_strstr(const unsigned char *h, const unsigned char *n)
-{
-	uint32_t nw = (uint32_t)n[0]<<24 | n[1]<<16 | n[2]<<8;
-	uint32_t hw = (uint32_t)h[0]<<24 | h[1]<<16 | h[2]<<8;
-	for (h+=2; *h && hw != nw; hw = (hw|*++h)<<8);
-	return *h ? (char *)h-2 : 0;
-}
-
-static char *fourbyte_strstr(const unsigned char *h, const unsigned char *n)
-{
-	uint32_t nw = (uint32_t)n[0]<<24 | n[1]<<16 | n[2]<<8 | n[3];
-	uint32_t hw = (uint32_t)h[0]<<24 | h[1]<<16 | h[2]<<8 | h[3];
-	for (h+=3; *h && hw != nw; hw = hw<<8 | *++h);
-	return *h ? (char *)h-3 : 0;
-}
-
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#define MIN(a,b) ((a)<(b)?(a):(b))
-
-#define BITOP(a,b,op) \
- ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a))))
-
-static char *twoway_strstr(const unsigned char *h, const unsigned char *n)
-{
-	const unsigned char *z;
-	size_t l, ip, jp, k, p, ms, p0, mem, mem0;
-	size_t byteset[32 / sizeof(size_t)] = { 0 };
-	size_t shift[256];
-
-	/* Computing length of needle and fill shift table */
-	for (l=0; n[l] && h[l]; l++)
-		BITOP(byteset, n[l], |=), shift[n[l]] = l+1;
-	if (n[l]) return 0; /* hit the end of h */
-
-	/* Compute maximal suffix */
-	ip = -1; jp = 0; k = p = 1;
-	while (jp+k<l) {
-		if (n[ip+k] == n[jp+k]) {
-			if (k == p) {
-				jp += p;
-				k = 1;
-			} else k++;
-		} else if (n[ip+k] > n[jp+k]) {
-			jp += k;
-			k = 1;
-			p = jp - ip;
-		} else {
-			ip = jp++;
-			k = p = 1;
-		}
-	}
-	ms = ip;
-	p0 = p;
-
-	/* And with the opposite comparison */
-	ip = -1; jp = 0; k = p = 1;
-	while (jp+k<l) {
-		if (n[ip+k] == n[jp+k]) {
-			if (k == p) {
-				jp += p;
-				k = 1;
-			} else k++;
-		} else if (n[ip+k] < n[jp+k]) {
-			jp += k;
-			k = 1;
-			p = jp - ip;
-		} else {
-			ip = jp++;
-			k = p = 1;
-		}
-	}
-	if (ip+1 > ms+1) ms = ip;
-	else p = p0;
-
-	/* Periodic needle? */
-	if (memcmp(n, n+p, ms+1)) {
-		mem0 = 0;
-		p = MAX(ms, l-ms-1) + 1;
-	} else mem0 = l-p;
-	mem = 0;
-
-	/* Initialize incremental end-of-haystack pointer */
-	z = h;
-
-	/* Search loop */
-	for (;;) {
-		/* Update incremental end-of-haystack pointer */
-		if (z-h < l) {
-			/* Fast estimate for MAX(l,63) */
-			size_t grow = l | 63;
-			const unsigned char *z2 = memchr(z, 0, grow);
-			if (z2) {
-				z = z2;
-				if (z-h < l) return 0;
-			} else z += grow;
-		}
-
-		/* Check last byte first; advance by shift on mismatch */
-		if (BITOP(byteset, h[l-1], &)) {
-			k = l-shift[h[l-1]];
-			if (k) {
-				if (k < mem) k = mem;
-				h += k;
-				mem = 0;
-				continue;
-			}
-		} else {
-			h += l;
-			mem = 0;
-			continue;
-		}
-
-		/* Compare right half */
-		for (k=MAX(ms+1,mem); n[k] && n[k] == h[k]; k++);
-		if (n[k]) {
-			h += k-ms;
-			mem = 0;
-			continue;
-		}
-		/* Compare left half */
-		for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--);
-		if (k <= mem) return (char *)h;
-		h += p;
-		mem = mem0;
-	}
-}
-
-char *strstr(const char *h, const char *n)
-{
-	/* Return immediately on empty needle */
-	if (!n[0]) return (char *)h;
-
-	/* Use faster algorithms for short needles */
-	h = strchr(h, *n);
-	if (!h || !n[1]) return (char *)h;
-	if (!h[1]) return 0;
-	if (!n[2]) return twobyte_strstr((void *)h, (void *)n);
-	if (!h[2]) return 0;
-	if (!n[3]) return threebyte_strstr((void *)h, (void *)n);
-	if (!h[3]) return 0;
-	if (!n[4]) return fourbyte_strstr((void *)h, (void *)n);
-
-	return twoway_strstr((void *)h, (void *)n);
-}
-
-char *strchr(const char *s, int c)
-{
-	c = (unsigned char)c;
-	if (!c) return (char *)s + strlen(s);
-	for (; *s && *(unsigned char *)s != c; s++);
-	return (char *)s;
-}
-
-
-void *__memrchr(const void *m, int c, size_t n)
-{
-	const unsigned char *s = m;
-	c = (unsigned char)c;
-	while (n--) if (s[n]==c) return (void *)(s+n);
-	return 0;
-}
-
-char *strrchr(const char *s, int c)
-{
-	return __memrchr(s, c, strlen(s) + 1);
-}
-
-void *memcpy(void *dest, const void *src, size_t n)
-{
-	unsigned char *d = dest;
-	const unsigned char *s = src;
-	for (; n; n--) *d++ = *s++;
-	return dest;
-}
-
-int memcmp(const void *vl, const void *vr, size_t n)
-{
-	const unsigned char *l=vl, *r=vr;
-	for (; n && *l == *r; n--, l++, r++);
-	return n ? *l-*r : 0;
-}
-
-
-void *memmove(void *dest, const void *src, size_t n)
-{
-	char *d = dest;
-	const char *s = src;
-
-	if (d==s) return d;
-	if ((uintptr_t)s-(uintptr_t)d-n <= -2*n) return memcpy(d, s, n);
-
-	if (d<s) {
-		for (; n; n--) *d++ = *s++;
-	} else {
-		while (n) n--, d[n] = s[n];
-	}
-
-	return dest;
-}
-void *memchr(const void *src, int c, size_t n)
-{
-	const unsigned char *s = src;
-	c = (unsigned char)c;
-	for (; n && *s != c; s++, n--);
-	return n ? (void *)s : 0;
-}
-
-int puts(const char *s)
-{
-	int sl = strlen( s );
-	_write(0, s, sl );
-	_write(0, "\n", 1 );
-	return sl + 1;
-}
-
-/*
- * The Minimal snprintf() implementation
- *
- * Copyright (c) 2013,2014 Michal Ludvig <michal@logix.cz>
- * 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 the auhor 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 AUTHOR 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.
- *
- * ----
- *
- * This is a minimal snprintf() implementation optimised
- * for embedded systems with a very limited program memory.
- * mini_snprintf() doesn't support _all_ the formatting
- * the glibc does but on the other hand is a lot smaller.
- * Here are some numbers from my STM32 project (.bin file size):
- *      no snprintf():      10768 bytes
- *      mini snprintf():    11420 bytes     (+  652 bytes)
- *      glibc snprintf():   34860 bytes     (+24092 bytes)
- * Wasting nearly 24kB of memory just for snprintf() on
- * a chip with 32kB flash is crazy. Use mini_snprintf() instead.
- *
- */
-
-#define mini_strlen strlen
-
-static int
-mini_itoa(long value, unsigned int radix, int uppercase, int unsig,
-	 char *buffer)
-{
-	char	*pbuffer = buffer;
-	int	negative = 0;
-	int	i, len;
-
-	/* No support for unusual radixes. */
-	if (radix > 16)
-		return 0;
-
-	if (value < 0 && !unsig) {
-		negative = 1;
-		value = -value;
-	}
-
-	/* This builds the string back to front ... */
-	do {
-		int digit = value % radix;
-		*(pbuffer++) = (digit < 10 ? '0' + digit : (uppercase ? 'A' : 'a') + digit - 10);
-		value /= radix;
-	} while (value > 0);
-
-	if (negative)
-		*(pbuffer++) = '-';
-
-	*(pbuffer) = '\0';
-
-	/* ... now we reverse it (could do it recursively but will
-	 * conserve the stack space) */
-	len = (pbuffer - buffer);
-	for (i = 0; i < len / 2; i++) {
-		char j = buffer[i];
-		buffer[i] = buffer[len-i-1];
-		buffer[len-i-1] = j;
-	}
-
-	return len;
-}
-
-static int
-mini_pad(char* ptr, int len, char pad_char, int pad_to, char *buffer)
-{
-	int i;
-	int overflow = 0;
-	char * pbuffer = buffer;
-	if(pad_to == 0) pad_to = len;
-	if(len > pad_to) {
-		len = pad_to;
-		overflow = 1;
-	}
-	for(i = pad_to - len; i > 0; i --) {
-		*(pbuffer++) = pad_char;
-	}
-	for(i = len; i > 0; i --) {
-		*(pbuffer++) = *(ptr++);
-	}
-	len = pbuffer - buffer;
-	if(overflow) {
-		for (i = 0; i < 3 && pbuffer > buffer; i ++) {
-			*(pbuffer-- - 1) = '*';
-		}
-	}
-	return len;
-}
-
-struct mini_buff {
-	char *buffer, *pbuffer;
-	unsigned int buffer_len;
-};
-
-static int
-_puts(char *s, int len, void *buf)
-{
-	if(!buf) return len;
-	struct mini_buff *b = buf;
-	char * p0 = b->buffer;
-	int i;
-	/* Copy to buffer */
-	for (i = 0; i < len; i++) {
-		if(b->pbuffer == b->buffer + b->buffer_len - 1) {
-			break;
-		}
-		*(b->pbuffer ++) = s[i];
-	}
-	*(b->pbuffer) = 0;
-	return b->pbuffer - p0;
-}
-
-#ifdef MINI_PRINTF_ENABLE_OBJECTS
-static int (*mini_handler) (void* data, void* obj, int ch, int lhint, char** bf) = 0;
-static void (*mini_handler_freeor)(void* data, void*) = 0;
-static void * mini_handler_data = 0;
-
-void mini_printf_set_handler(
-	void* data,
-	int (*handler)(void* data, void* obj, int ch, int len_hint, char** buf),
-	void (*freeor)(void* data, void* buf))
-{
-	mini_handler = handler;
-	mini_handler_freeor = freeor;
-	mini_handler_data = data;
-}
-#endif
-
-int
-mini_vsnprintf(char *buffer, unsigned int buffer_len, const char *fmt, va_list va)
-{
-	struct mini_buff b;
-	b.buffer = buffer;
-	b.pbuffer = buffer;
-	b.buffer_len = buffer_len;
-	if(buffer_len == 0) buffer = (void*) 0;
-	int n = mini_vpprintf(_puts, (buffer != (void*)0)?&b:(void*)0, fmt, va);
-	if(buffer == (void*) 0) {
-		return n;
-	}
-	return b.pbuffer - b.buffer;
-}
-
-int
-mini_vpprintf(int (*puts)(char* s, int len, void* buf), void* buf, const char *fmt, va_list va)
-{
-	char bf[24];
-	char bf2[24];
-	char ch;
-#ifdef MINI_PRINTF_ENABLE_OBJECTS
-	void* obj;
-#endif
-	if(puts == (void*)0) {
-		/* run puts in counting mode. */
-		puts = _puts; buf = (void*)0;
-	}
-	int n = 0;
-	while ((ch=*(fmt++))) {
-		int len;
-		if (ch!='%') {
-			len = 1;
-			len = puts(&ch, len, buf);
-		} else {
-			char pad_char = ' ';
-			int pad_to = 0;
-			char l = 0;
-			char *ptr;
-
-			ch=*(fmt++);
-
-			/* Zero padding requested */
-			if (ch == '0') pad_char = '0';
-			while (ch >= '0' && ch <= '9') {
-				pad_to = pad_to * 10 + (ch - '0');
-				ch=*(fmt++);
-			}
-			if(pad_to > (signed int) sizeof(bf)) {
-				pad_to = sizeof(bf);
-			}
-			if (ch == 'l') {
-				l = 1;
-				ch=*(fmt++);
-			}
-
-			switch (ch) {
-				case 0:
-					goto end;
-				case 'u':
-				case 'd':
-					if(l) {
-						len = mini_itoa(va_arg(va, unsigned long), 10, 0, (ch=='u'), bf2);
-					} else {
-						if(ch == 'u') {
-							len = mini_itoa((unsigned long) va_arg(va, unsigned int), 10, 0, 1, bf2);
-						} else {
-							len = mini_itoa((long) va_arg(va, int), 10, 0, 0, bf2);
-						}
-					}
-					len = mini_pad(bf2, len, pad_char, pad_to, bf);
-					len = puts(bf, len, buf);
-					break;
-
-				case 'x':
-				case 'X':
-					if(l) {
-						len = mini_itoa(va_arg(va, unsigned long), 16, (ch=='X'), 1, bf2);
-					} else {
-						len = mini_itoa((unsigned long) va_arg(va, unsigned int), 16, (ch=='X'), 1, bf2);
-					}
-					len = mini_pad(bf2, len, pad_char, pad_to, bf);
-					len = puts(bf, len, buf);
-					break;
-
-				case 'c' :
-					ch = (char)(va_arg(va, int));
-					len = mini_pad(&ch, 1, pad_char, pad_to, bf);
-					len = puts(bf, len, buf);
-					break;
-
-				case 's' :
-					ptr = va_arg(va, char*);
-					len = mini_strlen(ptr);
-					if (pad_to > 0) {
-						len = mini_pad(ptr, len, pad_char, pad_to, bf);
-						len = puts(bf, len, buf);
-					} else {
-						len = puts(ptr, len, buf);
-					}
-					break;
-#ifdef MINI_PRINTF_ENABLE_OBJECTS
-				case 'O' :  /* Object by content (e.g. str) */
-				case 'R' :  /* Object by representation (e.g. repr)*/
-					obj = va_arg(va, void*);
-					len = mini_handler(mini_handler_data, obj, ch, pad_to, &ptr);
-					if (pad_to > 0) {
-						len = mini_pad(ptr, len, pad_char, pad_to, bf);
-						len = puts(bf, len, buf);
-					} else {
-						len = puts(ptr, len, buf);
-					}
-					mini_handler_freeor(mini_handler_data, ptr);
-					break;
-#endif
-				default:
-					len = 1;
-					len = puts(&ch, len, buf);
-					break;
-			}
-		}
-		n = n + len;
-	}
-end:
-	return n;
-}
-
-
-int
-mini_snprintf(char* buffer, unsigned int buffer_len, const char *fmt, ...)
-{
-	int ret;
-	va_list va;
-	va_start(va, fmt);
-	ret = mini_vsnprintf(buffer, buffer_len, fmt, va);
-	va_end(va);
-
-	return ret;
-}
-
-int
-mini_pprintf(int (*puts)(char*s, int len, void* buf), void* buf, const char *fmt, ...)
-{
-	int ret;
-	va_list va;
-	va_start(va, fmt);
-	ret = mini_vpprintf(puts, buf, fmt, va);
-	va_end(va);
-
-	return ret;
-}
-
diff --git a/attic/ch32v003evt/startup_ch32v003.c b/attic/ch32v003evt/startup_ch32v003.c
deleted file mode 100644
index c52564a..0000000
--- a/attic/ch32v003evt/startup_ch32v003.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
-	C version of CH32V003 Startup .s file from WCH
-	This file is public domain where possible or the following where not:
-	Copyright 2023 Charles Lohr, under the MIT-x11 or NewBSD licenses, you choose.
-*/
-
-#include <stdint.h>
-#include <ch32v00x.h>
-
-int main() __attribute__((used));
-void SystemInit( void ) __attribute__((used));
-
-void InterruptVector()         __attribute__((naked)) __attribute((section(".init"))) __attribute__((used));
-void handle_reset()            __attribute__((naked)) __attribute((section(".text.handle_reset"))) __attribute__((used));
-void DefaultIRQHandler( void ) __attribute__((section(".text.vector_handler"))) __attribute__((naked)) __attribute__((used));
-
-extern uint32_t * _sbss;
-extern uint32_t * _ebss;
-extern uint32_t * _data_lma;
-extern uint32_t * _data_vma;
-extern uint32_t * _edata;
-
-
-// If you don't override a specific handler, it will just spin forever.
-void DefaultIRQHandler( void )
-{
-	// Infinite Loop
-	asm volatile( "1: j 1b" );
-}
-
-// This makes it so that all of the interrupt handlers just alias to
-// DefaultIRQHandler unless they are individually overridden.
-void NMI_Handler( void )                 __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void HardFault_Handler( void )           __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void SysTick_Handler( void )             __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void SW_Handler( void )                  __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void WWDG_IRQHandler( void )             __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void PVD_IRQHandler( void )              __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void FLASH_IRQHandler( void )            __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void RCC_IRQHandler( void )              __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void EXTI7_0_IRQHandler( void )          __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void AWU_IRQHandler( void )              __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void DMA1_Channel1_IRQHandler( void )    __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void DMA1_Channel2_IRQHandler( void )    __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void DMA1_Channel3_IRQHandler( void )    __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void DMA1_Channel4_IRQHandler( void )    __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void DMA1_Channel5_IRQHandler( void )    __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void DMA1_Channel6_IRQHandler( void )    __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void DMA1_Channel7_IRQHandler( void )    __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void ADC1_IRQHandler( void )             __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void I2C1_EV_IRQHandler( void )          __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void I2C1_ER_IRQHandler( void )          __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void USART1_IRQHandler( void )           __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void SPI1_IRQHandler( void )             __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void TIM1_BRK_IRQHandler( void )         __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void TIM1_UP_IRQHandler( void )          __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void TIM1_TRG_COM_IRQHandler( void )     __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void TIM1_CC_IRQHandler( void )          __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-void TIM2_IRQHandler( void )             __attribute__((section(".text.vector_handler"))) __attribute((weak,alias("DefaultIRQHandler"))) __attribute__((used));
-
-void InterruptVector()
-{
-	asm volatile( "\n\
-	.align  2\n\
-	.option   norvc;\n\
-	j handle_reset\n\
-	.word   0\n\
-	.word   NMI_Handler               /* NMI Handler */                    \n\
-	.word   HardFault_Handler         /* Hard Fault Handler */             \n\
-	.word   0\n\
-	.word   0\n\
-	.word   0\n\
-	.word   0\n\
-	.word   0\n\
-	.word   0\n\
-	.word   0\n\
-	.word   0\n\
-	.word   SysTick_Handler           /* SysTick Handler */                \n\
-	.word   0\n\
-	.word   SW_Handler                /* SW Handler */                     \n\
-	.word   0\n\
-	/* External Interrupts */                                              \n\
-	.word   WWDG_IRQHandler           /* Window Watchdog */                \n\
-	.word   PVD_IRQHandler            /* PVD through EXTI Line detect */   \n\
-	.word   FLASH_IRQHandler          /* Flash */                          \n\
-	.word   RCC_IRQHandler            /* RCC */                            \n\
-	.word   EXTI7_0_IRQHandler        /* EXTI Line 7..0 */                 \n\
-	.word   AWU_IRQHandler            /* AWU */                            \n\
-	.word   DMA1_Channel1_IRQHandler  /* DMA1 Channel 1 */                 \n\
-	.word   DMA1_Channel2_IRQHandler  /* DMA1 Channel 2 */                 \n\
-	.word   DMA1_Channel3_IRQHandler  /* DMA1 Channel 3 */                 \n\
-	.word   DMA1_Channel4_IRQHandler  /* DMA1 Channel 4 */                 \n\
-	.word   DMA1_Channel5_IRQHandler  /* DMA1 Channel 5 */                 \n\
-	.word   DMA1_Channel6_IRQHandler  /* DMA1 Channel 6 */                 \n\
-	.word   DMA1_Channel7_IRQHandler  /* DMA1 Channel 7 */                 \n\
-	.word   ADC1_IRQHandler           /* ADC1 */                           \n\
-	.word   I2C1_EV_IRQHandler        /* I2C1 Event */                     \n\
-	.word   I2C1_ER_IRQHandler        /* I2C1 Error */                     \n\
-	.word   USART1_IRQHandler         /* USART1 */                         \n\
-	.word   SPI1_IRQHandler           /* SPI1 */                           \n\
-	.word   TIM1_BRK_IRQHandler       /* TIM1 Break */                     \n\
-	.word   TIM1_UP_IRQHandler        /* TIM1 Update */                    \n\
-	.word   TIM1_TRG_COM_IRQHandler   /* TIM1 Trigger and Commutation */   \n\
-	.word   TIM1_CC_IRQHandler        /* TIM1 Capture Compare */           \n\
-	.word   TIM2_IRQHandler           /* TIM2 */                           \n");
-}
-
-
-
-void handle_reset()
-{
-	asm volatile( "\n\
-.option push\n\
-.option norelax\n\
-	la gp, __global_pointer$\n\
-.option pop\n\
-	la sp, _eusrstack\n"
-	// Setup the interrupt vector, processor status and INTSYSCR.
-"	li t0, 0x80\n\
-	csrw mstatus, t0\n\
-	li t0, 0x3\n\
-	csrw 0x804, t0\n\
-	la t0, InterruptVector\n\
-	ori t0, t0, 3\n\
-	csrw mtvec, t0\n"
- );
-
-	// Careful: Use registers to prevent overwriting of self-data.
-	// This clears out BSS.
-	register uint32_t * tempout = _sbss;
-	register uint32_t * tempend = _ebss;
-	while( tempout < tempend )
-		*(tempout++) = 0;
-
-	// Once we get here, it should be safe to execute regular C code.
-
-	// Load data section from flash to RAM 
-	register uint32_t * tempin = _data_lma;
-	tempout = _data_vma;
-	tempend = _edata;
-	while( tempout != tempend )
-		*(tempout++) = *(tempin++); 
-
-	__set_MEPC( (uint32_t)main );
-
-	// set mepc to be main as the root app.
-	asm volatile( "mret\n" );
-}
-
-void SystemInit48HSI( void )
-{
-	// Values lifted from the EVT.  There is little to no documentation on what this does.
-	RCC->CTLR  = RCC_HSION | RCC_PLLON; 				// Use HSI, but enable PLL.
-	RCC->CFGR0 = RCC_HPRE_DIV1 | RCC_PLLSRC_HSI_Mul2;	// PLLCLK = HSI * 2 = 48 MHz; HCLK = SYSCLK = APB1
-	FLASH->ACTLR = FLASH_ACTLR_LATENCY_1;				// 1 Cycle Latency
-	RCC->INTR  = 0x009F0000;                            // Clear PLL, CSSC, HSE, HSI and LSI ready flags.
-
-	// From SetSysClockTo_48MHZ_HSI
-	while((RCC->CTLR & RCC_PLLRDY) == 0);														// Wait till PLL is ready
-	RCC->CFGR0 = ( RCC->CFGR0 & ((uint32_t)~(RCC_SW))) | (uint32_t)RCC_SW_PLL;					// Select PLL as system clock source
-	while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08);									// Wait till PLL is used as system clock source
-}
-
-void SetupUART( int uartBRR )
-{
-	// Enable GPIOD and UART.
-	RCC->APB2PCENR |= RCC_APB2Periph_GPIOD | RCC_APB2Periph_USART1;
-
-	// Push-Pull, 10MHz Output, GPIO D5, with AutoFunction
-	GPIOD->CFGLR &= ~(0xf<<(4*5));
-	GPIOD->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP_AF)<<(4*5);
-	
-	// 115200, 8n1.  Note if you don't specify a mode, UART remains off even when UE_Set.
-	USART1->CTLR1 = USART_WordLength_8b | USART_Parity_No | USART_Mode_Tx;
-	USART1->CTLR2 = USART_StopBits_1;
-	USART1->CTLR3 = USART_HardwareFlowControl_None;
-
-	USART1->BRR = uartBRR;
-	USART1->CTLR1 |= CTLR1_UE_Set;
-}
-
-
-// For debug writing to the UART.
-int _write(int fd, char *buf, int size)
-{
-	for(int i = 0; i < size; i++){
-	    while( !(USART1->STATR & USART_FLAG_TC));
-	    USART1->DATAR = *buf++;
-	}
-	return size;
-}
-
-
diff --git a/attic/ch32v003evt/system_ch32v00x.h b/attic/ch32v003evt/system_ch32v00x.h
deleted file mode 100644
index 04d516e..0000000
--- a/attic/ch32v003evt/system_ch32v00x.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/********************************** (C) COPYRIGHT *******************************
- * File Name          : system_ch32v00x.h
- * Author             : WCH
- * Version            : V1.0.0
- * Date               : 2022/08/08
- * Description        : CH32V00x Device Peripheral Access Layer System Header File.
-*********************************************************************************
-* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
-* Attention: This software (modified or not) and binary are used for 
-* microcontroller manufactured by Nanjing Qinheng Microelectronics.
-*******************************************************************************/
-#ifndef __SYSTEM_CH32V00x_H
-#define __SYSTEM_CH32V00x_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif 
-
-// Stub
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__CH32V00x_SYSTEM_H */
-
-
-
diff --git a/attic/cnlohr-notes.txt b/attic/cnlohr-notes.txt
deleted file mode 100644
index 91e28ea..0000000
--- a/attic/cnlohr-notes.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Overvolting notes:
- * Tests done at 24MHz, no PLL.
- * If running from flash, browns out at around 8V.
- * If running from RAM, can go up to around 10V before it blows up.
- * IN SPITE of PC5/PC6 being listed as FT inputs, Applying about >2.5V higher than VCC will blow up the chip.
- * Trying to run off LDO - still blows up at 10.5V.
diff --git a/attic/dont_use_wch_printf.c b/attic/dont_use_wch_printf.c
deleted file mode 100644
index 8c53e6c..0000000
--- a/attic/dont_use_wch_printf.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <stdio.h>
-#include "wch_link_base.h"
-
-// TESTED
-
-int main()
-{
-	libusb_device_handle * devh = wch_link_base_setup(1);
-
-	// Place part into reset.
-	wch_link_command( devh, "\x81\x0d\x01\x01", 4, 0, 0, 0 );	// Reply is: "\x82\x0d\x04\x02\x08\x02\x00"
-	// TODO: What in the world is this?  It doesn't appear to be needed.
-	wch_link_command( devh, "\x81\x0c\x02\x09\x02", 5, 0, 0, 0 ); //Reply is: 820c0101
-
-//		// This puts the processor on hold to allow the debugger to run.
-//		wch_link_command( devh, "\x81\x0d\x01\x02", 4, 0, 0, 0 ); // Reply: Ignored, 820d050900300500
-
-	wch_link_command( devh, "\x81\x0d\x01\x02", 4, 0, 0, 0 );
-
-	// Issue reset
-//	wch_link_command( devh, "\x81\x0b\x01\x01", 4, 0, 0, 0 );
-	// Why does db[1] = 6 appear to be some sort of query?
-	// Also 0x0b appears to be a query.  But it wrecks up the chip.
-	// db[1] = 0xd DOES WRITE TO 0xe0000000.  But is it predictable?
-	// db[1] = 8 => get some sort of status back.  This is VERY INTERESTING
-	// db[11]=Get chip status.  Only works in reboot mode.
-	// DO NOT 0x0f!
-
-	// when in pause mode
-	// d 0 2 => Go into reset mode,and do more stuff.
-	// d 0 10 => Force chip into mode but no preamble.
-	//    Found one: 0x0d 0x00 0x03 will write something into the data reg when in debug mode.
-	// Will write other data into the debug register.
-
-	// 0x81, 0x00 = ??? No ops.
-	// 0x81, 0x01 = ??? No ops.
-	// 0x81, 0x01 = ??? No ops.
-	// 0x81, 0x02 = Lots of ops, if in debug mode, wacks chip.  If regular, no bug.
-	// 0x81, 0x03 = ??? No ops.
-	// 0x81, 0x04 = ??? No ops.
-	// 0x81, 0x05 = ??? No ops.
-	// 0x81, 0x06 = Lots of ops ,no clarity.
-	// 0x81, 0x07 = ??? No ops.
-	// 0x81, 0x08 = Lots of ops.
-	//   In debug mode: 82 08 06 00 00 00 00 00 00
-	//   In run mode:   82 08 06 7f ff ff ff ff 03 
-	// 0x81, 0x09 = ??? No ops.
-	// 0x81, 0x0a = ??? No ops
-	// 0x81, 0x0b = Lots of chatter but no go.
-	// 0x81, 0x0c = ??? No ops
-	// 0x81, 0x0d, 0x00, 0x01  --> Halts in such a way d,1,ff does't unhalt.
-	// 0x81, 0x0d, 0x01, 0x01  --> Halts in such a way d,1,ff does't unhalt.
-	// 0x81, 0x0d, 0x01, 0x02  --> Normal Halt.
-	// 0x81, 0x0d, 0x00, 0x03  --> If in debug mode, will write cdef89ab into f4 (data0)
-	// 0x81, 0x0e = ??? No ops
-	// 0x81, 0x10 = ??? No ops
-	// 0x81, 0x11, 0, 0: ==> 20: 82 0d 04 02 08 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
-	//      or sometimes ==> 20: 82 0d 04 02 08 02 00 00 88 b3 bc 48 ff ff ff ff 00 30 05 00 
-	//  Point is 0x11 actually comms with the device in non-reset mode. 
-	// 0x81, 0x12 = ??? No ops
-	// 0x81, 0x13 = ??? No ops
-	// 0x81, 0x14 = ??? No ops
-	// 0x81, 0x15 = ??? No ops
-
-	unsigned char databuff[11] = { 0x81, 0x08, 0x08, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
-	unsigned char rbuff[1024];
-	int i, j;
-//	for( i = 0; i < 20; i++ )
-//	for( j = 0; j < 20; j++ )
-	{
-		databuff[2] = i;
-		databuff[3] = j;
-		int transferred;
-		wch_link_command( devh, databuff, 11, &transferred, rbuff, 1024 );
-		int k;
-		printf( "%d, %d: %d: ", i, j, transferred );
-		for( k = 0; k < transferred; k++ ) printf( "%02x ", rbuff[k] );
-		printf( "\n" );
-		usleep(10000);
-	}
-
-	// Close out.
-	wch_link_command( devh, "\x81\x0d\x01\xff", 4, 0, 0, 0 );
-}
diff --git a/attic/external_crystal_run_from_ram_turbo.c b/attic/external_crystal_run_from_ram_turbo.c
deleted file mode 100644
index 8951252..0000000
--- a/attic/external_crystal_run_from_ram_turbo.c
+++ /dev/null
@@ -1,54 +0,0 @@
-// Could be defined here, or in the processor defines.
-#define SYSTEM_CORE_CLOCK 24000000
-
-#include "ch32v003fun.h"
-#include <stdio.h>
-
-uint32_t count;
-
-void RamFunction() __attribute__((naked));
-void RamFunction()
-{
-	asm volatile("\n\
-		li a0, 1 | (1<<4)\n\
-		li a1, (1<<16) | (1<<(16+4))\n\
-		la a2, 0x40011410\n\
-1:\n\
-		c.sw a0, 0(a2)\n\
-		c.sw a1, 0(a2)\n\
-		c.sw a0, 0(a2)\n\
-		c.sw a1, 0(a2)\n\
-		c.sw a0, 0(a2)\n\
-		c.sw a1, 0(a2)\n\
-		c.sw a0, 0(a2)\n\
-		c.sw a1, 0(a2)\n\
-		j 1b" );
-}
-
-uint8_t rambuffer[128];
-
-int main()
-{
-	EXTEN->EXTEN_CTR = EXTEN_LDO_TRIM; // Boost LDO.
-	SystemInitHSEPLL( RCC_HSEBYP );
-	// When running from RAM appears to go up to about 96MHz.
-
-	// Enable GPIOD.
-	RCC->APB2PCENR |= RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOC;
-
-	// GPIO D0 Push-Pull, 10MHz Output
-	GPIOD->CFGLR &= ~(0xf<<(4*0));
-	GPIOD->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*0);
-
-	// GPIO D0 Push-Pull, 10MHz Output
-	GPIOD->CFGLR &= ~(0xf<<(4*4));
-	GPIOD->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*4);
-
-	// GPIO D0 Push-Pull, 10MHz Output
-	GPIOC->CFGLR &= ~(0xf<<(4*4));
-	GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*4);
-
-memcpy( rambuffer, RamFunction, 128 );
-	void (*fn)() = (void*) rambuffer;
-	fn();
-}
diff --git a/attic/flashtests/wch_erase.c b/attic/flashtests/wch_erase.c
deleted file mode 100644
index 2772289..0000000
--- a/attic/flashtests/wch_erase.c
+++ /dev/null
@@ -1,18 +0,0 @@
-#include <stdio.h>
-#include "wch_link_base.h"
-
-// UNTESTED
-
-int main()
-{
-	uint8_t rbuff[1024];
-	libusb_device_handle * devh = wch_link_base_setup(0);
-	int transferred;
-	int status;
-	WCHCHECK( libusb_bulk_transfer( devh, 0x01, "\x81\x02\x01\x01", 4, &transferred, WCHTIMEOUT) );
-	WCHCHECK( libusb_bulk_transfer( devh, 0x81, rbuff, 1024, &transferred, 500 ) ); // Ignore respone.
-	WCHCHECK( libusb_bulk_transfer( devh, 0x01, "\x81\x0d\x01\x02", 4, &transferred, WCHTIMEOUT) );
-	WCHCHECK( libusb_bulk_transfer( devh, 0x81, rbuff, 1024, &transferred, 500 ) ); // Ignore respone.
-	WCHCHECK( libusb_bulk_transfer( devh, 0x01, "\x81\x0d\x01\xff", 4, &transferred, WCHTIMEOUT) );
-	WCHCHECK( libusb_bulk_transfer( devh, 0x81, rbuff, 1024, &transferred, 500 ) ); // Ignore respone.
-}
diff --git a/attic/flashtests/wch_printf.c b/attic/flashtests/wch_printf.c
deleted file mode 100644
index 1d78ee8..0000000
--- a/attic/flashtests/wch_printf.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <stdio.h>
-#include "wch_link_base.h"
-
-// TESTED
-
-int main()
-{
-	libusb_device_handle * devh = wch_link_base_setup();
-
-	// Issue reset
-//	wch_link_command( devh, "\x81\x0b\x01\x01", 4, 0, 0, 0 );
-	// Why does db[1] = 6 appear to be some sort of query?
-	// Also 0x0b appears to be a query.  But it wrecks up the chip.
-	// db[1] = 0xd DOES WRITE TO 0xe0000000.  But is it predictable?
-	// DO NOT 0x0f!
-	unsigned char databuff[11] = { 0x81, 0x0d, 0x08, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
-	unsigned char rbuff[1024];
-	int i, j;
-	for( i = 1; i < 20; i++ )
-	for( j = 1; j < 20; j++ )
-	{
-		databuff[2] = i;
-		databuff[3] = j;
-		int transferred;
-		wch_link_command( devh, databuff, 11, &transferred, rbuff, 1024 );
-		int k;
-		printf( "%d, %d: %d: ", i, j, transferred );
-		for( k = 0; k < transferred; k++ ) printf( "%02x ", rbuff[k] );
-		printf( "\n" );
-		usleep(10000);
-	}
-
-	// Close out.
-	wch_link_command( devh, "\x81\x0d\x01\xff", 4, 0, 0, 0 );
-}
diff --git a/attic/flashtests/wch_query.c b/attic/flashtests/wch_query.c
deleted file mode 100644
index 2bab1f7..0000000
--- a/attic/flashtests/wch_query.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <stdio.h>
-#include "wch_link_base.h"
-
-// TODO Make me actually query data!
-
-int main()
-{
-	
-	libusb_device_handle * devh = wch_link_base_setup(0);
-	int transferred;
-	int status;
-	char rbuff[1024];
-
-	WCHCHECK( libusb_bulk_transfer( devh, 0x01, "\x81\x06\x01\x01", 4, &transferred, WCHTIMEOUT) );
-	WCHCHECK( libusb_bulk_transfer( devh, 0x81, rbuff, 1024, &transferred, 500 ) ); // Ignore respone.
-//"\x82\x06\x01\x02" << back in
-
-	WCHCHECK( libusb_bulk_transfer( devh, 0x01, "\x81\x11\x01\x09", 4, &transferred, WCHTIMEOUT) ); // Checkme with BULK_IN	
-	WCHCHECK( libusb_bulk_transfer( devh, 0x81, rbuff, 1024, &transferred, WCHTIMEOUT) ); // Checkme with BULK_IN
-	printf( "Query data: %d\n", transferred );
-	int i;
-	for( i = 0; i < transferred; i++ )
-	{
-		printf( "%02x ", (unsigned char)rbuff[i] );
-	}
-	printf( "\n" );
-	
-// Note this is for CH32V003, MCU UID 20-9e-ab-cd-88-b3-bc-84
-//Respone is:
-//"\xff\xff\x00\x10\x20\x9e\xab\xcd\x88\xb3\xbc\x48\xff\xff\xff\xff" \
-
-//"\x00\x30\x05\x00" << Back in. <<<< QUERY DATA.
-	WCHCHECK( libusb_bulk_transfer( devh, 0x01, "\x81\x0d\x01\x04", 4, &transferred, WCHTIMEOUT) ); // Odd that it did it twice - maybe something took too long on the proc.
-	WCHCHECK( libusb_bulk_transfer( devh, 0x81, rbuff, 1024, &transferred, 500 ) ); // Ignore respone.
-//"\x82\x0d\x01\x03" <<< Streamed back in.
-	WCHCHECK( libusb_bulk_transfer( devh, 0x01, "\x81\x0d\x01\xff", 4, &transferred, WCHTIMEOUT) ); // Odd that it did it twice - maybe something took too long on the proc.
-	WCHCHECK( libusb_bulk_transfer( devh, 0x81, rbuff, 1024, &transferred, 500 ) ); // Ignore respone.
-//"\x82\x0d\x01\xff" <<< Streamed back in.
-}
diff --git a/attic/flashtests/wch_reset.c b/attic/flashtests/wch_reset.c
deleted file mode 100644
index df8cadb..0000000
--- a/attic/flashtests/wch_reset.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <stdio.h>
-#include "wch_link_base.h"
-
-// TESTED
-
-int main()
-{
-	libusb_device_handle * devh = wch_link_base_setup(0);
-
-	// Issue reset
-	wch_link_command( devh, "\x81\x0b\x01\x01", 4, 0, 0, 0 );
-
-	// Close out.
-	wch_link_command( devh, "\x81\x0d\x01\xff", 4, 0, 0, 0 );
-}
diff --git a/attic/flashtests/wch_write_simple.c b/attic/flashtests/wch_write_simple.c
deleted file mode 100644
index 838a881..0000000
--- a/attic/flashtests/wch_write_simple.c
+++ /dev/null
@@ -1,125 +0,0 @@
-#include <stdio.h>
-#include "wch_link_base.h"
-
-// tested
-//  Having some difficulty with the base.
-
-const uint8_t * bootloader = (const uint8_t*)
-"\x21\x11\x22\xca\x26\xc8\x93\x77\x15\x00\x99\xcf\xb7\x06\x67\x45" \
-"\xb7\x27\x02\x40\x93\x86\x36\x12\x37\x97\xef\xcd\xd4\xc3\x13\x07" \
-"\xb7\x9a\xd8\xc3\xd4\xd3\xd8\xd3\x93\x77\x25\x00\x9d\xc7\xb7\x27" \
-"\x02\x40\x98\x4b\xad\x66\x37\x33\x00\x40\x13\x67\x47\x00\x98\xcb" \
-"\x98\x4b\x93\x86\xa6\xaa\x13\x67\x07\x04\x98\xcb\xd8\x47\x05\x8b" \
-"\x63\x16\x07\x10\x98\x4b\x6d\x9b\x98\xcb\x93\x77\x45\x00\xa9\xcb" \
-"\x93\x07\xf6\x03\x99\x83\x2e\xc0\x2d\x63\x81\x76\x3e\xc4\xb7\x32" \
-"\x00\x40\xb7\x27\x02\x40\x13\x03\xa3\xaa\xfd\x16\x98\x4b\xb7\x03" \
-"\x02\x00\x33\x67\x77\x00\x98\xcb\x02\x47\xd8\xcb\x98\x4b\x13\x67" \
-"\x07\x04\x98\xcb\xd8\x47\x05\x8b\x69\xe7\x98\x4b\x75\x8f\x98\xcb" \
-"\x02\x47\x13\x07\x07\x04\x3a\xc0\x22\x47\x7d\x17\x3a\xc4\x79\xf7" \
-"\x93\x77\x85\x00\xf1\xcf\x93\x07\xf6\x03\x2e\xc0\x99\x83\x37\x27" \
-"\x02\x40\x3e\xc4\x1c\x4b\xc1\x66\x2d\x63\xd5\x8f\x1c\xcb\x37\x07" \
-"\x00\x20\x13\x07\x07\x20\xb7\x27\x02\x40\xb7\x03\x08\x00\xb7\x32" \
-"\x00\x40\x13\x03\xa3\xaa\x94\x4b\xb3\xe6\x76\x00\x94\xcb\xd4\x47" \
-"\x85\x8a\xf5\xfe\x82\x46\xba\x84\x37\x04\x04\x00\x36\xc2\xc1\x46" \
-"\x36\xc6\x92\x46\x84\x40\x11\x07\x84\xc2\x94\x4b\xc1\x8e\x94\xcb" \
-"\xd4\x47\x85\x8a\xb1\xea\x92\x46\xba\x84\x91\x06\x36\xc2\xb2\x46" \
-"\xfd\x16\x36\xc6\xf9\xfe\x82\x46\xd4\xcb\x94\x4b\x93\xe6\x06\x04" \
-"\x94\xcb\xd4\x47\x85\x8a\x85\xee\xd4\x47\xc1\x8a\x85\xce\xd8\x47" \
-"\xb7\x06\xf3\xff\xfd\x16\x13\x67\x07\x01\xd8\xc7\x98\x4b\x21\x45" \
-"\x75\x8f\x98\xcb\x52\x44\xc2\x44\x61\x01\x02\x90\x23\x20\xd3\x00" \
-"\xf5\xb5\x23\xa0\x62\x00\x3d\xb7\x23\xa0\x62\x00\x55\xb7\x23\xa0" \
-"\x62\x00\xc1\xb7\x82\x46\x93\x86\x06\x04\x36\xc0\xa2\x46\xfd\x16" \
-"\x36\xc4\xb5\xf2\x98\x4b\xb7\x06\xf3\xff\xfd\x16\x75\x8f\x98\xcb" \
-"\x41\x89\x05\xcd\x2e\xc0\x0d\x06\x02\xc4\x09\x82\xb7\x07\x00\x20" \
-"\x32\xc6\x93\x87\x07\x20\x98\x43\x13\x86\x47\x00\xa2\x47\x82\x46" \
-"\x8a\x07\xb6\x97\x9c\x43\x63\x1c\xf7\x00\xa2\x47\x85\x07\x3e\xc4" \
-"\xa2\x46\x32\x47\xb2\x87\xe3\xe0\xe6\xfe\x01\x45\x61\xb7\x41\x45" \
-"\x51\xb7\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" \
-"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" \
-"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff";
-
-int bootloader_len = 512;
-
-
-int main( int argc, char ** argv )
-{
-	int i;
-	int status;
-	uint8_t rbuff[1024];
-
-	if( argc != 2 )
-	{
-		fprintf( stderr, "Usage: wch_write_simple [binfile]\n" );
-	}
-	
-	FILE * f = fopen( argv[1], "rb" );
-	fseek( f, 0, SEEK_END );
-	int len = ftell( f );
-	fseek( f, 0, SEEK_SET );
-	int padlen = ((len-1) & (~0x3f)) + 0x40;
-	char * image = malloc( padlen );
-	memset( image, 0xff, padlen );
-	status = fread( image, len, 1, f );
-	fclose( f );
-	
-	if( status != 1 )
-	{
-		fprintf( stderr, "Error: File I/O Fault.\n" );
-		return -10;
-	}
-	if( len > 16384 )
-	{
-		fprintf( stderr, "Error: Image for CH32V003 too large\n" );
-		return -9;
-	}
-	
-	libusb_device_handle * devh = wch_link_base_setup(0);
-	int transferred;
-	wch_link_command( devh, "\x81\x06\x01\x01", 4, 0, 0, 0 );
-	wch_link_command( devh, "\x81\x06\x01\x01", 4, 0, 0, 0 ); // Not sure why but it seems to work better when we request twice.
-
-	// This contains the write data quantity, in bytes.  (The last 2 octets)
-	// Then it just rollllls on in.
-	char rksbuff[11] = { 0x81, 0x01, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-	rksbuff[9] = len >> 8;
-	rksbuff[10] = len & 0xff;
-	wch_link_command( devh, rksbuff, 11, 0, 0, 0 );
-	
-	wch_link_command( devh, "\x81\x02\x01\x05", 4, 0, 0, 0 );
-	
-	int pplace = 0;
-	for( pplace = 0; pplace < bootloader_len; pplace += 64 )
-	{
-		WCHCHECK( libusb_bulk_transfer( devh, 0x02, (uint8_t*)(bootloader+pplace), 64, &transferred, WCHTIMEOUT ) );
-	}
-	
-	for( i = 0; i < 10; i++ )
-	{
-		wch_link_command( devh, "\x81\x02\x01\x07", 4, &transferred, rbuff, 1024 );
-		if( transferred == 4 && rbuff[0] == 0x82 && rbuff[1] == 0x02 && rbuff[2] == 0x01 && rbuff[3] == 0x07 )
-		{
-			break;
-		}
-	} 
-	if( i == 10 )
-	{
-		fprintf( stderr, "Error, confusing respones to 02/01/07\n" );
-		exit( -109 );
-	}
-	
-	wch_link_command( devh, "\x81\x02\x01\x02", 4, 0, 0, 0 );
-
-	for( pplace = 0; pplace < padlen; pplace += 64 )
-	{
-		WCHCHECK( libusb_bulk_transfer( devh, 0x02,image+pplace, 64, &transferred, WCHTIMEOUT ) );
-	}
-
-	// Waiting or something on 2.46.2???????  I don't know why the main system does this.
-//	WCHCHECK( libusb_bulk_transfer( devh, 0x82, rbuff, 1024, &transferred, 2000 ) ); // Ignore respone.
-
-	// Issue reset (this is optional)
-	wch_link_command( devh, "\x81\x0b\x01\x01", 4, 0, 0, 0 );
-
-	// Closeout
-	wch_link_command( devh, "\x81\x0d\x01\xff", 4, 0, 0, 0);
-}
diff --git a/attic/on-wire-protocol-notes.txt b/attic/on-wire-protocol-notes.txt
deleted file mode 100644
index 70580c5..0000000
--- a/attic/on-wire-protocol-notes.txt
+++ /dev/null
@@ -1,175 +0,0 @@
-Genearl Procedure:
-
-Watch the signal.
- -> One wire
- -> Measure timing
- -> Count bulk numbers of bits?
-	-> Is it encoded funny
-	-> Same timing for several bits?
-	-> Same number of edges for bits?
- -> Write out 1's and 0's
- -> Find a "counting" thing to discover MSBit first.
- -> Write it out in Notepad++
- -> Look for which bits change and which ones don't. 
- -> Seeing slight variations on timing to identify whether it's host or client talking.
- This is with Part ID 20-9e-ab-cd-88-b3-bc-48 << 
- -> By knowing the part ID we can search for it in what we think are the replies from the chip.
- -> Once found we can make more sense of the rest of the protocol.
- -> Also, look at the USB protocol to the WCH-Link 
-    -> Ok, that was worthless.
- -> Try running the programmer without a processor connected.
- ->  wow! Turns out the processor doesn't "send data back"
- ->  Instead, the host drives a line low then goes high-z
- ->  Then the chip decides to "drive the line high" if it's a 1.
-
-
-There is an initial training pattern.
-
-Start with line high.
-
-FIRST:
-  low for 8.2us
-  high for 3.1us
-  low for 9.2us
-  high for 3.1us
-  low for 102.3us
-  high for 95.3us
-
-Then repeat this, 199 times
-  low for 4.07s
-  high for 3.1us
-  low for 8.26us
-  high for 3.1us
-  low for 9.3us
-  high for 3.1us
-  low for 102.3us
-  high for 95.1us
-
-Then, repeat this 10x
-  low for 4.1us
-  high for 210us
-  low for 6.3us
-  high for 2us
-  low for 8.4us
-  high for 2us
-  low for 6.2us
-  high for 2.4us
-  low for 5.2us
-  high for 2.1us
-  low for 62.3us
-  high for 2.1us
-  low for 8.5us
-  high for 5.3us
-  low for 2us
-  high for 8.4us
-  low for 6.3us
-  high for 2.1us
-  low for 8.4us
-  high for 2.1us
-  low  for 6.9us
-  high for 1.7us
-  low for 5.3us
-  high for 2.1us
-  low for 63.3us
-  high for 2.1us
-  low for 8.4us
-  high for 5.3us
-  low for 2us
-  high for 5.8us
-  low for 6.3us
-  high for 2.1us
-  low for 6.3us
-  high for 2.1us
-  low for 8us
-  high for 1.6us
-  low for 6.6us
-  high for 80us << Actually this goes "high-z" the last time.  The target chip will drive it high if present until...  <This doesn't seem to be crucial>
-
-
-low for 2us
-high for 5.3us
-
-then the break.
-
-
-*** 2ms low break ***
-
-
-line goes high for 620ns and BOOM we begin our session.
-
-Then, there is a one-wire like protocol for data comms.  Thanks, Spirit.
-
-Sending data goes:
- 0: on-for-250-ns off-for-1000-ns
- 1: on-for-250-ns off-for-250-ns
-
-For replies from the processor:
-  The clocking is still controlled by the host.
-  The host drives the line low, goes high Z with pull-up.
-  The processor can drive the line low for this period to indicate a 0.
- 0: on-for-320us off-for-790ns / Total: 1100ns
- 1: on-for-320us off-for-420ns / Total: 740ns
-
-
-"/" indicates flip to chip instead of programmer
-
-Then the data starts.
-
-"Issue Chip Reset":
-
-11 1111101 01011010 10100101 00000100 00000000
-11 1111011 01011010 10100101 00000100 00000000
-11 1111000/00000000 00000001 00000100 00000011 << I thought this was "turned around" but it seems the main uc controls the clocking and it's up to the uc to drive high.
-1 0010001 0/00000000 01001111 00000011 10000010
-1 0010000 1 10000000 00000000 00000000 00000001
-1 0010000 1 10000000 00000000 00000000 00000001
-1 0010110 0/00001000 00000000 00000000 00000010
---
-10 0100010/00000000 01001111 00000011 10000010
-11 1111110/00000000 00110000 00000101 00000000
-10 0001011 00011111 11111111 11110111 11000100
-10 0101111 00000000 00000100 00000000 00000000
-10 0001000/00000000 00110000 00000101 00000000
-10 0001001 00000000 00000000 00000011 00000111
-10 0101111 00000000 00100011 00000111 11000000
---
-10 0001011 00011111 11111111 11110111 11100000
-10 0101111 00000000 00000100 00000000 00000000
-10 0001000/11111111 11111111 00000000 00010000  <<<< CAPACITY First 4 bytes of the response from "\x81\x11\x01\x09" 
-10 0001011 00011111 11111111 11110111 11101000
-10 0101111 00000000 00000100 00000000 00000000
-10 0001000/00100000 10011110 10101011 11001101  <<<< CHIP UID
-10 0001011 00011111 11111111 11110111 11101100
-10 0101111 00000000 00000100 00000000 00000000
-10 0001000/10001000 10110011 10111100 01001000  <<<< CHIP UID
-10 0001011 00011111 11111111 11110111 11110000
-10 0101111 00000000 00000100 00000000 00000000
-10 0001000/00000000 00000000 00000000 00000000 *** UNSURE ABOUT THIS LINE >> Actually probably all 1's ***
-10 0001011 00011111 11111111 11110111 11000100
-10 0101111 00000000 00000100 00000000 00000000
-10 0001000/00000000 00110000 00000101 00000000
-
-10 0100010 00000000 01001111 00000011 10000010
-10 0100011 00000000 00000000 00000000 00000001
-10 0100001 10000000 00000000 00000000 00000001
-10 0101100 00001000 00000000 00000000 00000010
-
-10 0100010 00000000 01001111 00000011 10000010
-10 0001011 11100000 00000000 11100000 01001000
-10 0001001 10111110 11101111 00000000 10000000
-10 1000001 01111011 00100101 00010000 01110011
-10 1000011 01111011 00110101 10010000 01110011
-10 1000101 11100000 00000000 00000101 00110111
-10 1000111 00001111 10000101 00100101 10000011
-10 1001011 00100101 01110011 11000001 10001000
-10 1001101 00100101 11110011 01111011 00100000
-10 1001111 10010000 00000010 01111011 00110000
-10 0101111 00000000 00000100 00000000 00000000
-
-
-wch_link_command( devh, "\x81\x0d\x01\xff", 4, 0, 0, 0);
-10 0100001 01000000 00000000 00000000 00000001
-10 0100001 01000000 00000000 00000000 00000000
-10 0100010 00000000 01001100 00001100 10000010
-
-
diff --git a/attic/wch_dump_flash.c b/attic/wch_dump_flash.c
deleted file mode 100644
index 5105e09..0000000
--- a/attic/wch_dump_flash.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include <stdio.h>
-#include "wch_link_base.h"
-
-// TODO Make me actually query data!
-
-int main()
-{
-	int i;
-	int transferred;
-	int status;
-	char rbuff[1024];
-	libusb_device_handle * devh = wch_link_base_setup(0);
-
-	wch_link_command( devh, "\x81\x06\x01\x01", 4, 0, 0, 0 );
-
-	// Flush out any pending data.
-	libusb_bulk_transfer( devh, 0x82, rbuff, 1024, &transferred, 1 );
-
-	// 3/8 = Read Memory
-	// First 4 bytes are big-endian location.
-	// Next 4 bytes are big-endian amount.
-	uint8_t readop[11] = { 0x81, 0x03, 0x08, };
-	uint32_t readptr = 0x08000000;
-	uint32_t amount = 16384;
-	
-	readop[3] = (readptr>>24)&0xff;
-	readop[4] = (readptr>>16)&0xff;
-	readop[5] = (readptr>>8)&0xff;
-	readop[6] = (readptr>>0)&0xff;
-
-	readop[7] = (amount>>24)&0xff;
-	readop[8] = (amount>>16)&0xff;
-	readop[9] = (amount>>8)&0xff;
-	readop[10] = (amount>>0)&0xff;
-	
-	wch_link_command( devh, readop, 11, 0, 0, 0 );
-
-	// Perform operation
-	wch_link_command( devh, "\x81\x02\x01\x0c", 4, 0, 0, 0 );
-
-	printf( "WARNING ENDIAN WILL BE REVERSED\n" );
-
-	uint32_t remain = amount;
-	while( remain )
-	{
-		WCHCHECK( libusb_bulk_transfer( devh, 0x82, rbuff, 1024, &transferred, WCHTIMEOUT ) );
-		for( i = 0; i < transferred; i++ )
-			printf( "%08x", (uint8_t)rbuff[i] );
-		printf( "\n" );
-		remain -= transferred;
-	}
-
-	wch_link_command( devh, "\x81\x0d\x01\xff", 4, 0, 0, 0 );
-}
diff --git a/attic/factory_bootloader.bin b/misc/factory_bootloader.bin
similarity index 100%
rename from attic/factory_bootloader.bin
rename to misc/factory_bootloader.bin
-- 
GitLab


From bf7c4b38c72e6019af3197cf1ef96c87e655fbc5 Mon Sep 17 00:00:00 2001
From: cnlohr <lohr85@gmail.com>
Date: Sat, 27 Apr 2024 14:02:07 -0700
Subject: [PATCH 2/3] Move some media

---
 examples/spi_max7219/README.md    |   2 +-
 examples/spi_max7219/demo_pic.jpg | Bin 224985 -> 0 bytes
 2 files changed, 1 insertion(+), 1 deletion(-)
 delete mode 100644 examples/spi_max7219/demo_pic.jpg

diff --git a/examples/spi_max7219/README.md b/examples/spi_max7219/README.md
index 2605e21..399656b 100644
--- a/examples/spi_max7219/README.md
+++ b/examples/spi_max7219/README.md
@@ -16,4 +16,4 @@ The example expects you to connect a MAX7219 based 7 segment 8 character display
 You can choose which examples will be shown on the display by changing the `spi_max7219.c` file in the marked demo selection section. All examples are enabled by default.
 
 Once running, you'll see one of the many examples being displayed like so:
-![Demo of the MAX7219 based 8 digit 7 segment display connected to a CH32V003 dev board, in operation](demo_pic.jpg)
\ No newline at end of file
+![Demo of the MAX7219 based 8 digit 7 segment display connected to a CH32V003 dev board, in operation](https://github.com/cnlohr/ch32v003fun_attic/blob/master/media/demo_pic_max7219.jpg?raw=true)
diff --git a/examples/spi_max7219/demo_pic.jpg b/examples/spi_max7219/demo_pic.jpg
deleted file mode 100644
index 33b15eb2cab5b746ab7105910e78c82bf92cab2e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 224985
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

-- 
GitLab


From 1772b48e9c2be938f9df45a3f145327e86fdebd2 Mon Sep 17 00:00:00 2001
From: cnlohr <lohr85@gmail.com>
Date: Sat, 27 Apr 2024 14:04:10 -0700
Subject: [PATCH 3/3] Move over breadboard

---
 examples/adc_dma_opamp/README.md      |   2 +-
 examples/adc_dma_opamp/breadboard.png | Bin 440457 -> 0 bytes
 2 files changed, 1 insertion(+), 1 deletion(-)
 delete mode 100644 examples/adc_dma_opamp/breadboard.png

diff --git a/examples/adc_dma_opamp/README.md b/examples/adc_dma_opamp/README.md
index fe6c174..b501b0c 100644
--- a/examples/adc_dma_opamp/README.md
+++ b/examples/adc_dma_opamp/README.md
@@ -42,7 +42,7 @@ be done by accessing the user option byte in flash memory.
 For this case I went off of the WCH EVT board and lashed up a "raw" CH32V003
 on a breadboard using the PA1 and PA2 pins.
 
-![breadboard lashup](breadboard.png)
+![breadboard lashup](https://github.com/cnlohr/ch32v003fun_attic/blob/master/media/breadboard-adc_dma_opamp.png?raw=true)
 ![op-amp schematic](adc_opamp.png)
 
 ## Use
diff --git a/examples/adc_dma_opamp/breadboard.png b/examples/adc_dma_opamp/breadboard.png
deleted file mode 100644
index f772a36693823045977df2ab6135969fec12d730..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 440457
zcmeEtbx@p7^XIa-y9Zd@VHbzs?(PztV2iuEJHcH-U~#t)JRwLRXmAPcAt5*%`MzFv
zRad{NyZ_#&YIo=9>Hf_0XL`D3U?x^wRSpx43=IGPU@FK<YXShk5C8yf0|odj>1tML
z1^@(J`DyEWXqtP2T-=;(>>RB@9=<NtAZs5x8vwv(skXo_&7?E+?UN;;A#m4RFa#ca
zMDgq5?xhbW6ITYy=Ni^38rn4%<h}<CtWWITk7rMvr&LeZa`J2bSxQHqv!j!u$--OP
z(Whcht5@FVHxCbw-)pY}FOwHmZ*CwL^;iX>&ieP1$LB&~SGR!=MU1}n!D=4~3noLu
zo<2ZCo!=BK1goBl{G9AHztFlliL-wSGJm*{y?Z3MGsXJVGfnV;acv#G^(<8L{ypx6
zH{0PALag4?ZrtJiNiu}&r~mHs-I??CP0&wB@M9qU`GXk6%Z2yry;af=M{&-LPP^>y
zNCH=D_r_USqY1VYsOQeA8;3KSInK*}{j~oPaPdYv+~Fp$#MR7HP<jiy_ejU|hRam&
z^E=!?hqH&tk~LHxnWCw^GNl~iX@3c-m@~j{5v!o+W52gISEBqHy0xFPCZ-~TA6<)r
z?Q2?*u)y}y-yZL&<r6J$jeY88XFZnNDFf?zV!l5Vuv=3w{VeJszANJX$=S<q5lpON
z8PI-3T2G9VM807iRB)en^K##Y7wJBKdc)Z%)e@J}(k-iZc&SxQJ8`w_?g5kG*2F0x
zV&JUtCw~0N<id;^St^z)^?f42Q(YpfRoeYo|G`OK=*{H9cQu<R+(&___!Dng8~;bI
z-Ls5afya*4U+%!t!H37l{NRF{WcZyT&KBG!j<frz&>;Ws3n}Ablg1wy0Uf2M#liTk
z0czm)SOj8KkHxQp)~9M8e%~gpFMKzBRV230`()iPh%VK)d&aefE*h-l=>IfB>{-0N
zMq;Xu4t;#kM+mEZI6-Z?>-O2ixN$a}eE;fEpnvbxVeiY7C-j=a$=>A;#lN`;daWbx
zvRY88-fxct2b~As8s}4Y@*5TPT`@lRe#C#ge^>~<B<5Y5yjopf{kkr35G<*AwJ!O;
z|9tv(#s89BMEG8<_X#6lqBjyH{0X@M@#oDM($i~Q!mF!mvFUAMiANpi{p|s#{a{f4
zc9DhU?Br*{#b7u8hs(3|50s;(uhhi!2tJVhOz#kDCw>YL$@F>bSYKzlUt3)b<fnL(
zOxRSlo_E_he1%VCjG^pjT77SKZ@Rhn`!U4f1G+sXcpYP4D>?Lgs(Kf7G=)va=KEmw
z;`cN^BtiXLUs33K=C$BYloga{4%Ipu`z`KN+IsdGNP|q2eD)~LJcxuC*Fx1k_VtIA
zu806{O|O4CV|&yy2uC=_Me~bMqp@~kOyocAYFTXF;mhq{o=+A9NAg>TH)ss5boL)C
z?BP^LI6HP`vHVE&+?-4nMTb6>j*WMs6HC?YY_P@<*#mSe&_i91$0xVNO+I&Lhp8*B
z7+a4YSPOQJciyO?pEXNQ?^(A9;KQ{sJ<)MzS0|V;1{t0XO|eyNYbvtW{^A;~sj|`5
zsI66;on#2qHiXt*@+}=#?Y;6li9uhGi`J8q{FS94M;@2}VPq_L;d^oN8F|;(^=$?*
zN%PX7LycWTvNbCbl7Tm$<7vl?tOQit^-AQo@FtETvWxI#%gm&}Pdt16)qt_u_SK+I
z1-&-x9g{7OV?|Fv^8=GL!~9yeW_P>}0j;e?QV9JDU-KcB5M-P8c1S4um4ZJ-wqF!f
zsJcf<f>;%|S>hR9BTtZUXRF2RM47r@P3GKLuDy`__4ImeYjRvrW%cRfpYPtB&ftRf
z-kequF|wH+QcW^@^+1}3OtHb|xibCH*32R9#ft^^Pp?o;Hu<lXPn!h1L2HcgfcnJG
zCNiS9zh6)!u)USr^(-k9)Gu1B2-Rs$lTl#v*&=yh8wfT3T#y<8B0bDeLQ4-n2;Ko3
z5`IJP;z07I`E+HRPo!^kA-H>3t8#jY)XO)>HDltWi=+}hqoE|SPOhBpu4FE+TX|$r
z=qq+YksZ?@XK>rT&8yht_hpAeVaeQUPjS#*aWkyLI=5o-DxI&weD8>TPFJz3U4K0T
zU}vnX&-Z<&;eC5k=csLB%28pK`7xv}{bQ)=mg6qtbP0|bMz>g|gA%#2BH~LPUEv6W
zm@3NxlCl&&OAXZYadR&iBb!egE$|dNuEoX~MYE4%P04yi()?+7LeMub;#IhyQ;|Wv
z+}?X1NYH7<9ft_BUIGFAu~rp-`-fwvdl9U@0nw9NU#_hAlrWB(8r+&7Mh3U?DaM)Z
zHnr8;twP%7D2r`M-niWFxbis~-$hFfntpfQbjTd*^uie4=F|oOy;6O7)iQODq5;{A
zsYvnXbWpFB;UUBy#Z=7PPWWcu$C!#6&d}T;@a$*bMkTy!^H4rEVYyRa;50T69TeW#
zK5{M57;>&McJ8s*esg9S&smjpa!u1B{|0nQagXs1yyp|1|BR?SNaSWVM<b3|x-*|@
zXx(tOU&~R4G_ow`J9ld5Fz?mQJmb`^bG*Xii<oJ^s#p-`G(X{v@AcSaktN+TgyhrD
z=+PLCt1muqd2*Qf*_YluDd!u#9=5NTfZ}@$yVLwi!uBvxf-BW4V{!L)_-8gLgF7B)
zfKSB0VnnVKGczK5V$;Z|GlcFhh4HlHY^_GiNas_a_4a9l7Z)xr#*6obt81bDuVPa-
z-?`q^YYAcjnXol0O+#S!?=?6D)vNVv(ytI$z-G`D3P!1I&h}vbaBv8`%a?<At6d?C
z&2HdY6j#Rw==gD~ehhlxsMCYzV-df!<Jr!RhZ~A{nhny^vScz<(cLQqDzlkf2zQ&e
z3aLxB8N8#o?Qt2-KJf<-S=?AeQsRz8fhhKD;|$9NpH;IsT}5ZL1wyXtFhclN06ts@
z8L7DJWh{%`=iwk?=a6-;ti9QBPK?wmATMdhchYVR2tj`_3euYpQXGQck<D|1a+4e4
z8w7pFXK{n`)+8#$DE0k%%x<Vi#1e1gN2n>fWn)_;W76#5m}4o7nkkTHFOd=^C3A_a
zSc^3{N9quu+jgNXU}HX%PZ)`t-G<?8yV|!ehSpxpWwJtDAGR;7Dg}uX0Nog@bIbE^
z)Zwe-?eB?vz;K~mIh-?n2_uOzwjECVdH}uZN-FI&E4yyQAF>g^j~nQ&Ll|C~KRuMr
zQC|Pjy|5m-HJ)%zbHU0YZ3TXcf<GVh2|&MiT^=iie|1WPdgOE0Cxw9$(ym&oJml2O
z^{o(>W&sCxMFE`;zvBWJeBo+F6{e>Wi4t`jA`D;fW@Ty#Aw~(OJ6-tgN!S^cF*8K1
z{F0%aY}cGkrN0UN7GVah0s}rM=ad|Idtg2FJ1{r0N<z~FiQEeBv1qjRxB&TQZ|6&^
zal3r?VGKdn>U3xEm$m)6iIXEr(IzQyP&TARJ5lP;3JFm<zn=C&lx8VL1r0Fi+k@9s
zz(y}nGIWLI)C+Nqn!WSN1Hzk=5XCD$h@RW7RZiZqE8jJFfU4Tyk9HNK81b@UN)H3T
z=G`FKG^|e-jgWtnE<Mie`e7$;BpX^qh35kPCC_O=tLj1|m|DKfa44!)O0&Z?)*qiT
z9cgP4pZp6&ZNOlID~W=Sb^nEI+KVDW`fo4wgH-V&%fgpHn-V+Shc3!;G}yO@$GksE
z58dSZ5>$-wOEa;;3<Obgz}>hJO#OqOaNNs_QVA_m@v!=q&`MNGlhOxHvsUs}#KsvL
zmA=smfx_R{!<@GO=Q;8M5k$z`$|@w`1T-DE&&!YZ?$KFeEUC?Hz(jc2#%ciSK*|)m
z&7?;vxbh%<&k?~Y((bh+sgD(df{06X_m+l&Cl{&>?@OS8Wb&Ja#DQT$IGTiLUzY+@
zDZ`UyjaGT5tw>aPf9kw4G{G2nx}79Yx!hGqs+Hi^j^SNW5=ZtvmVktQd`=2)l(ZNt
z5!f*a51c1CDh$R=d1icr5Wy^&>J!=z5YiTC=RwgABXy53<WZiGDO^!_EGdF}8M_Na
zVgr6*X^>GhY0+YwhG#4SEE;}F(|?CYB~teL+yTjN%Qe^8D!0kB544H5k>e_@L8>f?
zi8aI`2$xXi-hpWXmBvfCgbG;&9%d|pz#}fxh}Q0`Gu>Y@TYWM#Hs-17s~2Nzr(beQ
zA{^5+IWZst_=cFdeiR_#@u#Fp8<mFvySEY=O+(Owc6_ce1gazQ-jE7mM<RyX;Zev{
zSC4R+>o8oemdWEFPN<hU$HH@9O*4d)Pk785;wn<g0TG5<fRMFSmDta~PRW>WLUb5q
z65tS5y7-cHeo8w9<&rIdlKvrbLXKMY>`jpvvb;#K#b(#6#qfCB)p)OQ*|kw*8=n|X
zcO^n;^8AN`Dy&jG9A#Tc>~){gW^{e)V}qn@?lokWhS=)xCFMa0aR67KoH|%$8lw?k
zV^}~8V0^8Un&{pM*h6%ysAU(E2I6ZOvlL}24rk+F<*Cc3-gVM#WE;<~;5Q&u^{pH8
zI3V!CF?yg=sJsW;ps#z<BvlTY6!Uf_Yqf?877~Nmj97U38&|$Hg&nc&j%aPvi)%2N
zYj|9J!%Y!vLq!8ciBu^G6&?uk;lHhSWeJj8cW3!XNO*i5rkTl1Ss5df?{YTu$RyGH
z2C;_FXkvmEoRhnXBY<Mo(wT^sEpIV?AWnXdyGZjBFdVJtM9&1r*mqy4%#A{Nijt@t
zz;><Q5Pz?91~XqRC`Iq1EeXY|YwDGQ5xlXhd`T12De7XEx=ebJfP<2nuy7E;of1dA
zUDsZmnG+lO4bhwgUY0AOt3=PyFv|$TOO+&R{p%S3VT;NuA~N=&BKIrXE1C8Fgd6q`
zZ|b!g5H~@Uja=#Mcr-lb23Sm<sJT7yE7B|<qUy=70{R`lhD8S<>ThIn>IEfth#@!8
zZ;7jG=nDF133Px2$zq8WGEMw#@FdzdzYKy1u}$~g*=Xh*id(kh_M~GL{gdA;?F${O
zM;0;uX59vIz)*k*(qF<YXDpcA5bU~~*5Tf%#CT*-;z%Xtfqz+thJ4g+oS}V4*gSY|
z=km=(&+<znk84(Z{$|KqEyb{}vS0c|rznY$qrTAoOqA@-asI@muAR6n;q|g35xa${
zzubbi0;l5K7P~)s=rx>m%H6h+g)Rz8Sl*C$6zvi2M>`sp`n>NkFS3~#Hk31vrsTHs
zv+&_g{H4ukYO(mS)6pN6P7(;0hQ^Xzg6p{yZ^ss5KCy1boD9fs*rh<D2HO~Y@_yY)
z?C^o%&DTopc{{wX>EIMPXr;et67}PPsfa8?teD;!ILU>C;=*GAk0Eg<pFQJgYX)6O
zzsIX;up@PUK?S4rl+xq=N^E)I-G@l(Ax$Bl4cBEO&Z9?(Gl627LN5NzlG^q9`~=fI
zfgu(*FOu-)TSxKc0H(GZ-)m{2bL$9$tSPDE--=Tb*k<?m@}md1E63=2TDONyo(<$3
zpWjQ&_kgoPNYZsWCuD*)zNAEvYuS;asE)k&XcDSLk%WC`cs(EQSYy0foKNBROMUVU
z+dx*yRJVm~zhGG9M^A}fpo=^!6d9$ggLIWY<;5iSETkVH=UNSqxRjGwIU4QJh1VMu
zW1Y5W1M|F&q&Mkg9o^td0L=mNqDl%r<Iq-wR`U9fkvIesILl?=*#+K6(|R@;W6!70
zLzZz<R^u9RDYD4fFUhhX-*!M+DY^*>A5liSrrotHT1NqjWF(*Q<#DYBHQ1YRUKZ3y
zOyG=2iwGnQpi6_lhA_ZfUS6SmF>@rj6z|#$z>oX+>X$|a2Ea&yMr(hZF5~tPUuMn!
zwId`1&6z045#4QXWM9MzNwa8il$<rrG2A#@b==WH2jr5Y$IL#R`a=QPj9$91Z!H3H
z2z*&Jtn!Vc6afXjE{5Ae=RS*qF?CSSCS^AqPQJY_h1;;w6X(!|fa?Pe>Zfd72}rEt
z96b_BePI^II{ctAkWnHw74bS=39FFo6OdUUK$}M_age?=f2<GJU+tQY*lNh*6M0b@
z&NgR;x<QT|K<r$b(uPlf@`aK{hDe2qQ(~U;*DWmDzVA~EhSH0N#35aLs3GAxOo$-I
zUc)aRV?|ZM^dq>V73Hj0gi2`yfA~mM$aa}k;U$&?exW+wt#j?VA*fY!qiw~BBz+z4
z2B;7vL-ppIAD#-G8Ix!(M&F2v4Dduc_LZqkdq6655595fEij6mW>Y4QzKFnPi%VWC
z(cy7)$#)u(O{$77i$Ya)EoBYPMX}CC*HUoVr~ylQn;|JQgnPV_5`HN!lF*ET7s`V}
z=b|1y4<fY461*hU|CBd+gZ)7<1y+e&M6{7T6Vq}vJO;4LJ6KRm9z`7?RnJEsaLbCw
z_-JhT_EzYc9xJ`0H<QNg8;)roa<)wbiFyyK&zm<RxEAc+OP^lJ#3P`yoV!j_vzgUU
zFJdy|qM=M{v<h5mppiFsyS!Ew+Z=VK#l0&oH|3;q{Y5Vezj13AW5a`=GZ|eh+K^$y
zk3@!9?zmJ2asXo~G>>J3D@lXh=~3VgHA<B^IqeEUW3^-iQp^Q@(_ShGLzQX0LqtcF
zL5|onqZvPMT7|s@oTM1@Q;RndWZzv*QSp4IXKq86Aih5$sNjB!)n39v%(0GtNXJzy
zini-!ZgySoZb@z1Be&qaL&t`EZ4Xm7+*NR4{=K*v4Xg|!rMyVlpk$<WaF00B2^tVC
z4n>lPd$Tk}76z>PaBj?G$6C%~N}ZJQWSE^urCL4x0=8W$8%QY-igav2X+vNCHSxR?
z(5!;plcp%8)V2Ly3s)Hb-q4JpC{%UTP8J5%h3A==WC|HVPt~B4+t7)UghBw`S&C_9
zVrHJwU$?9}eni?#M(uC!!r#<frp!cK4r+%OjtI(X%!!3LDqc!3z}^Uf8^+Q;)r5&h
zqslY9ap7jifzzlJH?B}bc#PdY;LL^pARSN31R4;@JQ4ol;u4BLQyiMMuM?;&J*?r0
zBGhM!;|=%?>7`1P^vmj7V1XmLyV=-{kjP(>GX02vHl%!{%<rYv#913y+?9${tzF4j
zypE?S;lPfgmym$uZL4}Dk)}b344^1g4#BkAgrzk{%m%b7?Oyv!zF(Nv3w7#r$siY5
znu>J>#xx9V_oRU%ur3-sJ&Pz<twIz$*P{@3I9zGDK@c1kh`SpNf!Ws!`{(7Wuvsh2
zKel5%fGX0sWdP;sMT(jENxv<RSSj2OG(()5a!}lh<qko0P~v)A50J8CJkNHcct;&)
zcNW|t>OVyq2qcy_;DH8n1t(rdkp%~>>P(d><8}?1R^5MNnT?J`LQzmOaHx%m2$_<U
z<qF=S;dzOtVS%|ba^F?Pkv*rXl|j|{LB{rNMB_B@bmZ~<9L1p3SUvc*0?%cP+H6!?
zBZ<z7?F-2lX`+NW$;VlJvL;J&8Wbmaek$w+`#IW@Y1TTd%q<$1tBw-*#m{Tl(GC>;
z@DdwBmeyR0q#~vee|RA?C#MWIaU{fqghOm~Yk1KpqWjdg(8bNTQtFFo)&LiH_pxfY
zjFG`a212F@pX}vI8RFB=zkM6?wGk#$u|GGnx7Xv~G`8S)7&)}Ye5AOj#>1h*WCf~+
zc64c1kZ7S(gLC4IA~*~SDBw@8g$r{_XuEgz@zx4TbnCV9M*NE#a>(Y$@LO6z32VUP
z9Ky#hD@@G8CmkLwrLfBmG;^~`Wkp&jVd*uU1r1CaCHpeaEN#4Cg8hlW2)>S5AxJ4f
zV<zr`28;SN_cq5CLV_eGbzosQ5@vQ|RhJx`u{t2Z*u?M<@aO^umT`Z;e_{Bc3Yb9D
zvLV=FWqFZ|O@^<V{fhvDbmXf#Hkt(jhWSwuoHt3d{>ym};ojs_o3P>}S)}m9&YTqk
zdIwaJu^<3-@ht}II6T{h|2Te1leAp1;iRq!|E3Md$auHiyD^&G;#hkr82}Fsv4OTa
zON&or`p?8!9r!G@f3Pq@Od`=X*s-WLBtQLbo3DZ@FYhy-9Wqp7EGvR(p}phuMUmmt
zu{^L(XNtU4G=fB9XNskY{B59k9=a~>>}I9euiIV}9^;pf1`cgZoII6Up#byKR9tn)
z0Ma&J1|mo3Q&qGrsoUf$?WYX*T({-v!-VQM`3UP|4xlG~rudJ6f&^@Pe2U9se0jMJ
zMrKPC);oJj;3>dlBeTSq?%O#IQuroKfDp+fT@8iVcU^e=xVk%ziToCq;nmxk!hvh7
z#7tms@nV?;_m%gq3lxi&2tj9&I+QhMh3*mTwy(dF%oUxI;=Iul=Vn*0QC-DRF^3IT
zqr~-2nQ9G7<d~QemrrMocu1Q9>jlutd>ziHdaT@1y0r_Ld^X`h{iciU^>DQU+^@mQ
z*XuV#)Nj9pA<hvtl~l24xc-uSLYdx)VkHX3x&F#x-ZSXMUx^c@jw%%-tyC=moux#P
zL7@>GiLW}1Rwdh8EXxdUqT_$EI5<Bsym!xrb4wFeuQIB>#=*cTIb=s2HroQT!dC%L
zzW3Pw?7Jjt1tJUIg++%qEpQ0%p1)Z+|K|A+Yh~N7o^l&Y8ooF~Z|B!kPqAG_UJY&)
z#TY0Zj?(%hnMIY&b$>4o+gcHAQ>0+XPJT3WH&i#=^p<|-?23Lri08zf4VBwfxu0@E
zttvq+EU5gLfK|#<-{s)jU-Wq;q<6pu<`XWP;E#JLWoe}Ii+7}}ce3>Th@9}@yEk|q
z1XUx&^uJEHeIn_9)}z*ho+gXCB4^GOa#jqH*qrBAGt9K#PIUSVlqC({)2@pz)57E|
zm|kL;rDPn3pzGS<cQ2Gs7oT5b?wn(!#gOg}%=PEXv2SfXRv4x*Zl#4C^=Zl4(xRJd
zs}uI`fV)VCc#yQ91TimWKcINUBd5b@RTBuaAvDunpR?aaye^z`3_ZukRzo&(@0ZpS
z#(@dFP61k>CMch3H(^PJ3w6)VM|Env3Mh9^9Y2^QqkGR^VL1<hgU>`OVAk5iO}Akg
zR~C51S}Tpftn;%u`Y?p<E1372uCPUP2=(G&2jMRvbNSLE#`51XD>Uso&C?ffw3^!j
z5toO9IqGa(RiUpFj8|FS>(<HJrHB14a2Z=Uxn|RHArz-cs!FRy5DOzapCzkVa!x57
zSu}_Ynhq%G3N<@6Hq)gdUo%3K0HSJ)i*pZWV_pM{#w1V{@rX1fpd=AIe9bqtYlkhX
zanxRf>3vN<-1v*X;!p~v9vHfjc7|u-mS8Z4Gbz~?t70XLIbaEyG4sXWAS`s)OLm!I
zs^|0DFM3$>CWm-#6C_Cv+tePHW<=$3lQOh$h1DL9D}8AhpbtF3wUjwc%4R719r^Ti
zIPHZ1C92FXN^N_%Zf2EIEXBHIDyY2xR-?Ul;cHEE{6;bJ_z<9P+Bovz@`$pVAVfwG
zdqjr5-;VH9)=Ocw?nGYO2?5c%>t~6ihi+$DdcQg|{#l}LZ-owlY@ll04nhD`l%&Dx
zozboLST%d%a=1UrFx-rnubX^#iAjechdFc_QOtrQw)C{4%BwB{<HE2#{fFDsmgWzn
zxFW<4tw=&eKQaeXcR)NaUf-ImOee4?oPn1xGMNC1*txzkACV-K(6@4}CA>V<Np1wb
zZMTe`GbFmPo+ai|%M8Buq3X<P3`x!cKtU45jpQ#f+>9$^U7ww5lTS$+HFr!WIlrYB
zsS%Gv8tj-#$}qGLk`VecN^yIBO5It4&>LY|BH=LJuDDjA&q*FzB*_$BzeQLiduxoq
zTp7+f!tPR_aMR1#a9J|1KVHtXpWdbd`$Rp|E{)WvO`Ru&Q!KrUYqgKPDa}80JJI!1
zy(e=8zl4EORpUv)XE1NSOKte3getZ2*Y`T{QX)=io)nj{AoX_n-TA}WedHY$1f!^%
z#?gJKB!Y+b6Y}qj6=xG>-~b?cym)((0SreV{wk4pH^t%1BVt5jCPKSyXubM|eqY8-
zE-T{28M$Kb0D}4o6?GSGBXf8u$I)7a4{({WH4Y8+5o1eTGzgDgyhbtiBJv!quJHbI
zAK2TcscHa$R)9STre<s`7lC{sQ$6#}!70A$eHv#*(GR9AVbSqKJZjR!(E`1XOMdES
zuKF4Uy!WMBN?InV=KQ5eBY~{c{u_e;+I)4Lr*G<{z?H#4zXVmQ>s<KO4g?-t0Rg(W
zR;)>3mL0zR!4OI1{dYd5*e^?KE7x&YlP~(OD%<V%zSFs@JJaDP-e1noj&568fXO$+
zYzk^-=ZtTB9WfR{2gKb=NkFmYuk21;5C&F?cX%XY%+?7tqNgEmU!n?qJ<%ytc{1bI
z{uDjNdVm^$jk~^t{5_g%D4}d9LgTvFrRCdB>-q4i*=jcd#K0Mb^CJgUlh{LD+uxFb
zK9SCCe3jaeOJh00R8E$?JnAYWoQP##r}KMtikq082wLB(^Ig~TfUe3|qKIR|mB_tR
zU$<=5vX)6*YwgT+ZPGJJ4sFlEA72riEMh|tJv+uqUF<)FdZB`4f-T!^>J5qIoPN^>
z!`cv{qSJZ9<ZFduh+4w@N`6@EhaSw)ncBPYF*5e$_C8?leC1|_qe;iN2S=TMeKa{C
z9tn7{tG<dK0cYikt>vIxLP%^e!s1$Xsv)C>u~Tbfq_1aaQ7m%rr)yIcEdHJk?jgc2
z#5Rs@Sd=9Z&iF&le4%dC@w7y<>(SZoDRfeA2`{#}ye*&sPK57TDOnxkMp9fDDG@25
z8R~VpPfiDmk&LY)p@8BS4c4?Hb`kgMDqb#jDsEqis8q+F=r1JN!WO^T*2B0J702L-
zS3O_VM<HCToJZ<~2Km}qhG^Yd@%po8OUjuJWvkXM7<P)Kh)gAozzu+wCw%&leYACA
z<z^)<XzQo)^2k3CmM@IK11U)cRstWc2|45f`LAhm$-3ttI@pbJHJgmdOYEuio07GL
z@Y><pqR{jx-gAF1D^YtvwK_c!2<)>xYC*4frjV2F-ggJjal*~`IC#A56f#shlK1Ic
z<5p(#Eew&E)EOi;><(C$zTc%c(&a}-P5R+V&6DUkxkz81+xW}u&aUJiyU3axqY<(1
z8mr8M$cg|!|DPCbNQ5S#j-nM!?xGQVg9Fe*6>&U73~T>ZzsiYkF2X-*eQ8Lr`1xS-
zZtwUIQdy+Y%aV4e*KcH?oF)$buy7rev|n3WaD%&{LfsPal*VM^%3gXoP8D5>`aqz0
z-!KvF7s@3KsI1N%DtiY4yb8LUwPsVAz#7I#%HC3wbb>>`!;vWLEb7Nc8IBE_gyOIR
z3Z+vZXBZHqDla%IS{MBtyw6h21u)R5$u|30Q%GJ~^l}C$6pNO7-}2K<L4&Y1?0NU*
z4`X2@QJWAK=KAhdgermP8lEFD2HRKhB<H6o@yQ@OdMWHPD|VC!3qB&G-?uXSj0Q}#
z8nXvZPxmavL_M0t>FR#}5yl$Yu{7_oBmx0RV#l;p?2MHbCd%$tPm;~;_M+#VzcEY+
z^8<lLk-m%(h`U|y9Lx7XaL77E#5y7s4^wAkYb!Oxio2o|Bw}X|V6fEm(wLVKU3*+6
zF1?PQWg#4`v&geiEn=kg4;+To-)HUdLpv2-=rjPZwl6ZIkiur2_4JsqR%&z3^9?MM
z?(0b)NB~7rt+j^n%}LFtxAUbfj>R&A({I0{R1wX`>%H?zP~*%r<l0EyLv6_*rbwzX
z@=>j)tTWg9RuSi&lE>IPg9j7u(-&tPqs{3}rLCCXli|=g@s!9KRn;bR(C{>zKz?H_
zFk^)K2I2IY+5&Coc=pb((@R`G9<s9H;B7|;BuE~f^T0KxJ>x`8^4W-2*J+L@#XD3D
ztXE~9SXuti$e_IL^D?N96d{@nD@!g~IX^pYO(%~WFHW>4?PpE^@d*MEje}$Z#nn-Z
zF;LZ_pAI)wq4~W{)_JDZHX*)t^!3Y-+NyK3dDl?;k=SiAb+j=wS3_*FO2)U4&-<~X
zC_P;fWG{N;RoXx4T{rz+{ej6ovnt%g`bq)H6r%Wnt2<Kdx}w2+EumUEil$l|o9&HZ
zAGnEhJvMs1u&4$`^-HK&6!ri^Ba*O&E@~(1cOMqn9L`?dx)J%Nw^lvq<jp;wvcYU1
z*^m$u&_uf`yQOK%cr%5jpzFV={8kQ{lGY=)4;KR2dR=WOooweG<wYBM$8s@9Qz#8f
z5v_9slD6A5hLTR4uQE$ncP|Wur1ePmENwezI*@d|V3XWPl>|dI$y3`{?V=g1%54IU
zMMu?jhz4E>OrkK<er0XbiQZYZFSOMp%@YWxq1e+BQ&pEJA)s^AjAxk7%t@2cPm^5w
z_|Xc9=O}k{4OT#BP~hmz!rzLZvJ0OxLL~2jIi69a#}BiBkpG(b%8sCvZ9@3frFEbm
zHEF2&7;!V&*50Xl!A0bCod}u{kh|n_$t8?Wjr3vc5)?&R=sJ~yUZqz)KKm#sOqLV0
zvXK`cT{A@3h9Ci^f}csg_$|qG;Y&b)C?9JNmPut|`s!ODYbF}xKBb7cDPZ~$S{nt?
zk5PsI;gr?cdACDGQ%G`+X<>$QymjJAJ1VPEUS*a(cS;xo;p(SkI4uQj$%qJqHu{MJ
zE0@zqq|DX>g?-855nisKVECo>PTC!hxjmN_>A4yh)0Yz~vsG?+KUo>I5Nf-JLoYc_
zY9(qpVQ^;HA~PJ(BFhDw$`2IwR9%*4Gw^0eL{{z6>-H8{acxkDgJ}#05RW!Xd*^Vd
z!QRoxq&A<DHw3w_`X|e`;p};|F}~WX9<L3hdtRu9fIUGnsHfqJ>c^y#<c;7<=C(BQ
ztWg)<RwNV+)fd$RLLg@2*i%K83p*1^hEKRKQ$zHZ?r_>V<Sc<O7#{KiC9CO1FtW7t
z^#?>ZXl?v{Sk*9{8GEi5++0Vi(d$j5x7)@VQdIKBz-*Lr>WMDxSz#Sc)mWY!Sqy+d
zDUG$nrloG&D08Lh20cW<X<`d8X9<d<+&qQ!?Uv&e`CDT5OBg9%I*)W33yd&K3%i|9
z#XLoUPEOcICo!yRV~Ql5Kto2<+w=Fp!xCvU;HMhU$&sZf!kL#ek`|FfQz@-np6k1~
ze1se&4kd1Oi@UT;rGW6yy9x}GPfCRd!K^D14+ao<{?Bxs3gy+l*ht95Kg#{UQ5Zx*
z5|8DRHCvN(1G#A98$5P~%{;@A?5*LTkf1u)CnUSKQ7&_YjQqgjO(opJ3VP(aKD^@Z
zo(4KfLZD$%*a|(bgM)dmCyM6X3oqf_PvOT1{8&2l#hQ*-T89d|>aDDnwiKw!*eXh{
zM3Nkb`OzX1p1jhwCnl{rC$0k)B|5)gLPlV0n3%I0!{KK<KlQMBrMo?Awtg}<MUyO5
z4#PZ**0nEHDlm$J{6Y-P!I_u{BPylkm{(ek8I;CLIu=9un|W3f1=#ACeyY_WpfYDJ
zaZ2*y2aKiHhAlH%tgItQGdAKJdM}w{a2jIb{q7ob<HeOZ4c$JGI8SP{@*qhux8cHT
zyd0Qshg$np-O;mY991sxt=BC%9iF}~#IS<X6Kp~Cu)NCV^`&XZ(4MatDz8aHe91Cg
zCXsv_qrIX*-vCU&Qg^u6vds>eKt4&KJAA!68bVH&@=@kQTa%=@N*rI+4+-DD^p-du
z7$4DYLq2<rUO;h@ry+QnvDH5BnQ?|6ix5>%!?5+^_9U&`c54u}^tL>SY0B?Vftw#`
zvQk?|?5j!R5veW(K;}iIYIHWd2l@}AxrXZEsCt(?d&oFeZH>-PSglayOw}~rg)}Bo
zoKa}Rp}x;oz>5ub)XK)Gd&4(}hQw2a?}bu%rO2(qi1a^`LnHjHTFx!|a2u%7<4%d?
zG+PC?w)ACzNnlR_@sqC>F<IS3J7}WiLe_fSCJQzu($_a@F~1FP&wR=W!|eAC^R;l#
zM@{V|Wq*8OxT>G-X<LS6NU?skU5O~33+pf(?USnC4GodhSiQkY#1Vx`xRTkuc{?K{
z>LvPN$1KuFfDYTznJ|%m0g`^?OgdRx3yoI_Ul?zZ!~8n6KJCNl<j{|$QcU6V6G|ay
zIMRltW1AQhqK%frG{*C8gJXnkY~D^uN)ijE36MZ~rKJ@nG_TQU7T-l1qbOPdRAcDw
zz!HfqNofCW>kz8w2D3wb<Rwvg7xYEA1uMAa0-l++rA11H5dVD$%Yjn2X3Ge0g&*1j
z@2KaGo<v8ux2@;9lyJCT-2J{p$O&z8Q7`v#U_cc2DDku8v3KV%W&KAyNR$|*Unv^h
zXsB2A;YQexoZ3A?hg1^AkYZ_?y#aRERDP<}%~$mdbG-<zVDkL>X(SV)pE#cNFNGxZ
z4hvx0j|kgDaP<>4ON4Lt8a^vIntYWy1=r8J&ECckQYUSwcsetSK?;SKzpre4FjSYq
z!bb@8;GZK7MJ2edJVHGlJ%<XQK@Z;jj3Yf2`n8ZN{sz(GO|De5kZ8rePmd4@zIdG)
zlmm0BeSI9NLv`Wc<7$=?Y=dKVvQ(HoJJORuvR^j_nIaMg-vVmsSR`olM3{i6$QFcQ
zsGL9Nn^bnoQV>#I^t89Xy(>1xMmZc!i7%G>q}Y2>F53s2FH@xn%QM2J?&g5;8&|uK
znL~TvG}06Dy!LM8+luQTs~S*{wQV}E)WqS~P(2(s>o<bElr^11v9@4fjKY!at5uu|
z!Yf#9zVg_7ruJp>W&rLX_*CPlb3s=uBqK$8#%!u3E)OIoos=0>e@rXY(+662bzlMm
z-RBgCuoRTlSDM6@U~_d_D^+&6@|6)z_-CLQS1EN4H*wbPL&g0L^Y1<Z6t<`;c!0=6
zADveGrqJw>AP84lGK7hxwOWt2EG>#sq*#}h*Or$2Zo>X$`icmPAou4h-V)C_0agp1
zv?tc^=M!>>PGqlhzv)3SG*1-$Erno|Rh*0pLFaJFXtzYY@IHJsXrokYNZvPZZc}40
zJl(6+A|US{np=$mvn`Nn($7^N9GB2C;GmtoyQ$qt<%5CL8jw1pG)l~)R@ACNA9uDQ
zD(-5sD3{c(7G|kh)%yOYxI)s%Ht(gCwTIzMW%hH2Cn~{`!;UvKLY)$}I(%AvCvO}O
zm}rQVSB<AZ_s<7ZH^`9So92Zg3%|Ku1~fElw&4^xB^o@)SdGqcBYb>UFMfpIz4%eo
z4QGqSBI#X62dL(BdHkwS#-#;fUvk6X`XcGJvyIFN=#|M_b-q4Vw=(@I*EEELgc{A0
zVMtrngQi!OsM00aFijR{`w369rRYjLrnXH<T0|qGQ)_KOwBkqG&Zp{ykk_b5Ybd{A
z!+Y%Y@+%`?T_&%dItkAJ8!NVz9$roaXqPTUnSHhS`THei=O=>qoyXFBrYGGq3_jy)
zUD4?Km|>Eq+Lw<CD(RKt34Hzd!r<&_^}C7I7P0Or#h3g2Ol;UNWqQt3uS)xEG(CTS
zb%#zG&DM|XFC$tby2(6mnvozbh~f{wKiD>7ZpnO};Gw~7wJ%l`KW?F<56zpW#Y@VZ
zp{PTl_S`A4F<ZiUbC8HoEZIei$H&rWT|W^}r6lHdTAOL@l6RcjSY<lYuYY|$X`{tn
zH<F1?ki&Embg}d;`oj?miJdn+&L-{$-+I|hKVDRNlh$y&^O=|)BJt=u%7Lk6hflgi
zXpcv+&9T}vnIGq5#qiUq=9cSk>1Db;W&E5zg3=1~Ejys@BHv40E_uR_DYOq#exqgp
znQ3wIHQ-K0@OFmZ49D|`jEX0&tZ<NO%xa{zK=LZl5$v5o1HQ}R-@mh-<g#Eg#;|Or
zt#Rd2@(t5ZR`6!SCPGOc3fC!}*&k#8loVQ_6anFWnT-J7l56o&=n_#$VI(UiCWXu;
zhVDsB<<h&<bxX+rT|E@s2r(`CP1;M-rxZ#~I7w<$ZM!J$l08C`J*@75qA}3)f_et2
z?AOQfA7tinx{s-guO2iSjccqhS+vn_bK@${<}(jZtcI46&C8jEVS%<r?UXGksD*v(
zOYN~Xsc9#E03s%s5H&Ji{RvFEZGp=__=wc_HrG~4ApO90y{FmeWo&a>i(2im)O+T=
zg@C$K76aBdsmm;-_<kBH3gyc*)*htDSN)(LiBL5L+aqq}I_pHZdJO2TI>~qAOX(Ny
zPQ_${hl`;M>&tWnaOkKEqzqc^UvxaXstnTM%`#;zc9Vqzf)O_52Ln3R${0945O_BI
z#vC*J)%Z5DGTKPv<Ny@orC^p!_!zG}D<zdrM9I;ZOt>;lA6*<l(7G(|FvG&L6$3#I
zVr1SSl8Sb?G$t=vb0?ZjDwx3iL37`}YDI7YSy?jX{;0c7Yk}!Br10kXOig=iPT$<F
zUolIy9=aXl;wfmn^h7KrBe(hE-lEJB`49#o@8ai|R*5{L{;+Lp752s#JR^4Y@Peb$
zpGin<#pVpFG!=D@)G`A@WlDrM`5{n)yiR0(1eL4yky1*yrY8Jh_=4Ke<3P;)ip$wq
z1_KqBma7*GIEDoVLAH@BieXkxDm7K?5dhq#GpMMmeTp7pI_tDoePQEXQN==Wt40n@
zAOB$q_MRm#j8BV=m!T%F%<FxKnnpMG5YHi$RcZ`OhE)t8G`fqzEH6z@;l$wO4qacm
ztbhB8pi{A}$iSnhNAJR0e?GDUvyZPzEPb3;ZupQZ=Mt185LM`z4W3y_6Q3<b;lvAN
z^*ChI))^t`usyo*7g4U*Y?WOm;ZT?qXw4$Yt9s-=kYx^P5nxnjWTY`rBb}!_BugQ;
zATm?ENGr)bgi44|N2Lq#CQ&-hYzVRMSIH4x2o!PCE>rYMVM@h2+ee*q4IkdqbXj|L
z^QpjwlTi?-nkW?kUBt%Bq3pP=$L!pl3tU%~aS}2ocHEgg1;?aGfDRQSThhj2M*T`)
z86!dumiBODK-KMjcOI@<yy5g0_0N(8Vy0#Q_AfGK+lDbLtYlWT!cxv}PA}EtCU@`Y
z4cc5&+~2#^6yAdHrro(J=6_fGMya;+rV#1Yn>Ql#<1Gs1@bSMGN+HU)+u+8c#}okG
zE_J83#VL$TM{&^`5gkSXE>PX81HUclxO+}8NopR51Vwh3OPA8Vn#*|0M_jL3ld64S
zx+Ij?oN)14CAm;s83K0c8jaM)doLZ#-Y8edK>ThsSm%KUhj71!;*D=5u-JZ4wI4@U
z+H&fSG^g&}M8WC1L$y~Y7YPPZy<O^&np>poRU|@-a*hmBWpYXssPnKw;8!w^cb00c
zDiA~wCtHWD9Q1){nG=3`gO=)52h&{20Ql5R6Euj*y^D^0KB#^V;8-LiA@492#v;z7
zw9($}jg()c=Sf*Lz#HSbJ6M=P*dzUMz!vtwyNogySw6JCA$+uovzLf0Eq>~^yc@I{
z4_?j9O{cw8GAuif<W=nhH@cy<`qXa4>kY_9DYb0<L-mz9(Cpk?oefjMk10)y87*{e
z1HBtwhi3i?9(hEyOMQpvh%Vbvn~fu!ve~UDKJW`4h<7XKNKmf4V4mtV=FCWbG4coP
zRz_sr`-4q%-)h2x%20-sd14^r-NQ161VOLDKvDWs*B2)E%DNU9C8@0GB=@?$JU~&6
zdR59qN7}M4h~k}Gf|bMyoEHnF){@%TncqjmG(-IN^zZcaBI!`*TAV7KpmQg!`t>G_
zNhQBy1fd#ybyTtbmn}%~^=I1g-ck?o`=yh0pDJMrsWMFE_L>m{BBq~sMGBM4!<Jig
zZ>*Y^T4rz6;TYAs-oJv*WtcOHbSS(nRPFMa^_HVg7wSWi>&A<Pr=h*xut(a`VFNN(
z>F(JW3k}Gtv5;ivO(JJcmPJxoG~oEEnh+{|#Zce-5T<gXKy_vz?<o7W<OHk_dwL~#
zcMZ!8$rS^RR7Wr2>M!^bfC~kcXqbjcO)p{4%bgPy(QL}Bx2-f#CxB%fU%{IGPDvz@
zpD?QLskoGgM(VPUno7TQ<&x6*@+ZdrR4op^^$Ww3WG`SPIqCjl$4_HkM(6PMDpqX9
zzIRhOtjHhQW>a8JY$7`tJyL1EFIa%#{k@02)y&c&vnCH1;5;p@P(@bC)CN^8xCry%
zo53$jq(tx~{k3^ra%*)^DE@R8bvA9<h~Ku6kg7HLVB$V0R;6?0a-XHhcX>FS%MnnM
zYW}2eo8l~~!iQgUBh__x-8h~vR!W)_2w!rsMfHdpGD+InW25ocAcP*YmTR8Jjk$NA
z{-UM;Y}ZAZF7_sw{v4(Ay!M`DRYeHk_AN2gNv1rH{9Pa;f`qG9&aS-V!jmbErSWbU
z%i^+YV~l53KoU(_ulYd3Ju+~JbL}whA_^muGlB%Bhxs<fF#r6)v4T!zyx&6Y)H2mf
zRwUm+$*9QuZ0^z5CsbM5Qizk1py1AMa?bnRJCW1~x-kE|H$P`{;lA7gBLMv6vL9_N
zTPb5I5gnkuxV9OS_*?hViL`H)Cqq96iMai&6gh#xldFifaR2mx1}J59hQOB?TwuNF
z!pQJC53b`W#k)+q{sdQyAQUTpvBBNx-yvL6wVMOmtE@URqQE*_X7ZzZgQfzCr&O(c
zr&Q(Zm{84LIDGUp77|BCNGw=?AgB>THo##e(#Jj$U8{C!Kf(<m@iSZR_yLRdq^4L|
z&aY&g>Zf;zYHxkMokHEV0FUj4sZnW^xAd<5wW}F(+Hop&SyeJDkM>6EPB=?O<k((5
zMP|NjcG7Y#`zl)uvE(8Uv*L$dXCh|TZEzK!<mHw^o?}s9{z{LP9NAe8*Pel*CURRk
z?+2shoES&JGMuk^8k1l@CmR7w3cUzWp`lcf{@bcD{kcaskwaO28rZhmY)iPh-fN<Y
zxEnp>^?8Q%-L}H2a{BB$4uX*I*-K+lk<Vog%$ULP4(bxK<$N0Zm)U&BfywRZlt>#b
zREO|pGTm<n{4-zRwPjUee(>{%EbP*Dt@P6`{%!ZVHOe*C56$#RcxY;JZ-H&|6jv2i
z^X+ks)jT;~rzpYv`AkX8y{5x^L+n-sfZ+Y@H#E!C0?LOdN?SjD!cy9IlPa*Fik_x2
z+XWW*Kx^2$xWGnMqx<?d=_fQvEvqrbg&V&@XK{D6UTT*mWz1ComncM%b)4iSPfAhJ
zZ%<uLuApB;{f<j#q?{D=>x`?(zvrD`1Ys7H)4RmkuPvF(Uy`6}9*e}``wVEvO(EXa
zZSf{m%Lt1w#`tQMy1jt@@S8kH@U!=o6|C&yZ~e-#uTXZd%6g$hEJ@H+4tudZ0ZuhR
zD(AH-D>Pd9y_{IWQTtZQHcOQUio@m?lAE|-@ugkCk$pDRAe-atk?I)p)hc^Tz^mtL
zhY@yCQtAp)QvbMV_<X-GKQL89eo*|yu<4AV3=E5iz;#6Zr2!71>nsaFiDV_Ap(nWW
z7kVxa9Xm%-m_vVm@-QqszPS#oE(~-Hw{^HxzE4B{$jRIi^JAlf>g-hHbPZ0jY@CM`
zjAiRLr%b<P!O+cuWQr?Jg@lV}Wkc$o_9kNQx+^-l-WyW56L>oLwR)Eg=~{Zrz$RN~
z3v=sW0@m+aBrqP=q!^$oY%`4*OVwG|asRP%qoI#`&_;+??F9o7Iz^2Km^GK|2Z5{f
zoX03J7e{q|yMV(EnZs&&FZj)jUS_ANI|3@31uC92Q)Nj67cAy0EZu@y=FS!Sso{Ip
z$lH`^1lc4+?P3Y9`;Fl9ZX;GP!A*w9E%AkTXmA3s-=x@}{p8GY*{Kll_<BRp`HmIS
zY&ZRvpHch^xQFGwVNWBi-yvfZX8WI0R2Eb3c_ITSeZ<O~M}hF|;*+_{Mh;Z(u*Gw`
z6xRUA(c&%Qi$|1ar>Dm!>)f@EK>&VBw`3<qs=(*JRr}aI-~7~9Q5LdvhH{u&Ia^qB
z_&{BrZ-xQ@!eTxy=9UiD9v}<r*LF@KG-uttG$1=G5gI*S6|jnnl(ns$yq}x3mY=G&
zrJsYPpcRdnD4MX3&@%wk+QS^=19fzA7xEFI`3qO*x%@}WNdx*z#lt~_Mqfo8B<1X8
z4dUV8;Q+JC_}F=I(TJjfgx#!cgfyjP{|@o|CPHKD;o&00$?5Iw&Ed_>;q3OB6Cx-m
z$O-1+<l<s~)?jz{b@DLxVRv$;{R8ng3~6h3OE)_g4?AZk&>u{53ujLc5gMB3deA@m
z2X#?V`6s-S``=l3=7ZD6+=Uau0p^54Ise_l-9yIf8RYLB`afE@Yd>G0<<zuxclLC%
zw3hL*cJiS8cL*!Xf7-ivx;g&kj+G^+wWBrkS=IfyRmgudDW{;K{!fcP6uh>By8LDJ
zO!j|hdf3_gi>&|X+n<`h-1+y8Je&U$_dm4%;rn08&sr)fLekEbo`1ThAT2`kr+pzS
zXG=RPp}&geR$M$>+~!>D{5B9UI}Z<!AiJQAr8zqv9}n1)Pk@`p%9`ijpcI_kJ<Odf
zt^YthgLBwD<CybVKzR5qtk@y^=FboiUIBJ<0dq@sD+oWt8e+w3&BtT&ZxCv3cF$31
z?)dM$`U7S43}s`@&%?*VZSf4nZ^O>RZ4G9(Fz2ygx8~uu5dd3T@e5cB{sm=aDJ1Lc
z1~q>kPCKaiYimvyr`LZ~{2^ROLR~?GhKmFIFNwONxrfcOfe4MVos*}}zbdrtpw?O*
z=6~3P@CiV8A-ueNy!?Fp+=72==r257Yd81jNc@8d0dsJ3{bl}VScIOPc_!BUPn<pj
z{3U<(MM%oc+T6q0P21VoQH16X1n7_DKdV)qr<0Yrhq<)5hxIckn2TEo%p(Nh(T4B|
zaSIA@@vwvWg~0!&?`&mf<NJTp{xf+%!haibc{}&#_I>{n{cT2RS-bx2?QgG+c7IJJ
z5a_Q-A!Kg(Hy7N^y{xVN>gO}o->NKa&7EFbKWC4>hwDG&cK?S^u;dpo7qEu#vh#r<
z7VJD$5Oa15em)*{3mbE5YjbWM$aC#~qPsiWczBz;SxdZr=JA=U=kWZCD-hFP1I7HG
z+TOO-e@5Y%Fm^Bx`@aa|{X1cte|MPkPtN#<$HJWd8z;hlDg0ZKdA9qT>^XTo=R(eZ
zCd0pT_9yN9e|-Kv7XKexc!vIOBmX0Q|4Y|@>G~fr@IO-iZ*={auKy7O|0Cu9M%Vu{
zy3qc$ow9a%UIlqSZ<fj)Vric@TBt7a2JQd=I{u#z93VHJ<XMR9p`apzyoZ2A%t-2q
z`6T!(O7xJ?_mFai{#k<qz#v%_Fi1)h3{rQ4+F5adpgz)W4ie8B2fpW`q??Dt^9u7%
zQQbjR%iIIP!Osh_a^vFS;DLZF-1s=af*@}zx94T(v%a^58y5!`56IoZ4a~s>0XaS^
zKJUl`K#ne84lu~b25bU?{Ns6EgE`t+g1~<sM|B)+000C~ke1N)SqkV`uCr1|qiD;_
zIg1fsRI}0b)bmzzU_zmz69-<Gs(pQTp!KU*56+JfB{WQSBW4?8aqzJ2uxtCo*ut5g
zTO_;ljN)C~I4KWTv#RWIe0S%f;aKL6;2YB?UJ|8rt(l5|fL9BikuC;AfZerjcmi{2
z0AS-(GHztPI}Y&8j}bM5?z4-W_~)4O^9pD)7Klcg0Ee4)^At!%6SB{NhKGT(ADD;&
zL_r9n+5Eb+MG26WmR_O2jX`M^2PsR73mpn6$Vz9&PKn^)qIf&g045wYWFxx$r2)0P
z&;OQdxNpb9NsWmKiTS;zuzRK>qdmSl0Svi{xtC3$i-1wWA&B?o$xHwG!16W^PFh_0
zLa5zS3zrbbwsz;|VjG9#^eP6f(V3D1petNb9f$z}(nWZ3;sJ_ToKA6XUae4A6~8J~
zzt~gQg?BkpA&(6Cbe(}68WM)$?Tz+vJ+FHYJDXG?goaG|(MU&U?!4gx9+uCU2o(d$
zT!*l5UO@1N=IH1<=iZ0klj{$|<F{>b$P=nG4@*zCt5<48MJp6=NFxDNoo+a*o0Paf
z8X#rDNS0a%915;RJ2n`nCNeYt!eYzvPDbtI@nq-7c}=6iX_bbF=O^@XFU#|Y0!0(Y
z`)PveanCvENh~yL<ZRTM(<(?0n&!eEf=ew4I3KBnLl|&ZiRg|2iJLjq1&E>m5GYVe
zW%MJ^Bg+?k5=P`saH%`hYw%;v-vj5T6Xyxcq*wiLPSxi*;pB6DKlr6l%BBqfYJRJP
z5a6lm$kcV+^K2u}H+>GKw*s8@=Y7HqQQW%yl@<IH{B(Wt^zJZzRKZc>r5#7!@9XRP
zA2WMd{|je8n7?iF*kcaIa>e1-@sANPzh;CY89yeVkjwyb^QZw;zJK?Yk-I)Ju!LEV
zr_1?t_wMrb-(KGRP4El~M01yA6dIe$@|lZJi0}ZBSJvHyO_+-U9*!XBgaDkEPSV}U
zFf&oXxY_(7P%;2g1o^(lyUhJh0l~aAl7M93B<NvzF`i)p0SG`<4FnEPHD90PI*D9+
zGx|k%kQ($6lJkk?3nCohF&0K3f+B&a_~Q}c@a=a`KmYT8`VV(69|CJT`RUZ!BGzr&
zx_fME-_~tgJp!Jm0$>QMh|$0h2Smbx3?T(1sVXWELR7Tr!@Gxvhc^Ly`SNAEuGg)1
z^C!rM%Wwa5|KEMmw=QP`f?@6%soXnBGxIRXcZvWI%v%vvMUVkDIiJs`WofNx6Vcqe
zxuSxU3XkSQ1^`#3nUUfiBoI^)1h(sSSx$`#_wWc0uIA>Zsvg+7k7Z2}$sK5B_2NY$
zUk{M)X)b7Y4|kG1<3dQ!gVvoum{DSc83vi_k1F|X9u{T<Me6Qzp*lRm^PXz`0Re;?
z5SrU2+%1COxE=x`8tw!GK!C^-l&WfBN{T8Ecj0tWt#2S_M2$MtH1~OgMZmfv&{QMB
z(dujyW-xMdQIg{32)EqrqTycu#53f<Jpc!35h}86n}`5xEhBFR@O+qnu;s@_M8FAh
zq#C*ODeh)A0wUWu6oLp;uttQFxiLKtHVYT0P!LX#GGbpuz;mDHFEb<KW_eWDi;?`m
z&GRTHNJt>Yc13vfa1reheY0gb<tc7vf%*sQx(W4sxvbZ|U9Wkb0r|C=1qQ;2e4!cW
zQ8|!1$a>R<v#m~y!!LJ75QzJ`^SiI!WjX>tg%+`G_W1Z>?p`4^;MRK=2FRe~6PNK^
zf*^$v?vase=A*fCDl?d=k4PP*0TCkL^SqHdgCh|1e6c~~(KvIXI$cK2lqa-1BaGvC
z7)c?<t=HFaWMiHoa$apXf)3Dwgi;Nj7v)aP`x?(WANma9b&v?dgQS2XA*wi>X@_m=
z^V4H^P(nyh+%1$M+_nzD!^b=2e1re>(-$M}n!7b$CF_`)=VgA>{Fy*-+q&DfEGjZG
z2_nL`b^G%4<FYM(`{o<Ab0ETPE~P_qAmcMDEvaN9a8k|GB|nzPXr}XmBOHjav9f|7
zYDfFXfP)_SxidWz5qM<Ud;0`rF1B3#bO%9IAPC9#JY#}n4mC2WdWe$AI;_XcW=MJ^
zumMVV<T9x(FSPIq)>V2%C7@&=n#bwssc+XUx{8ZXRY)NtfNp-huIshCNd(;C2+s(g
zLA6`ff$W|a8W9c%5azjoVA~S$;inIuK7D%o{{8*kn<uAvh-d^iUVo#X_08K=&z;S}
z=X(Le-4LF~aNZLEQ5m<dtu+y~h-GP_wWliCoe>7PcIxs7)~?Z0M5w~u17Q*2F3SR-
z<^JityBUO(76^FAi0R|aGTbs>I21iIvLVQ(npIJEM~sAM9F<M=5WeB#Y!gZ#3?axg
zkPs3=WW=YC9?tQ<h%l>%1w`iBWVF^ILL|0r10&08QJuMYet4#e6|+2?P?ZRu=^Lxg
z5)fVqhuqZn0Rm>BDnWD$0z%0HXB^~XvAQe8!s<Az^E<K{a`z0uB6Tn3u9S!{1i}kL
z7~xDrJVG*HdIX$Qu#S92NG3p;skl=_80J<#K#mN?Gg+IVd=~mPLQEhk`AHCBgx3)j
zXZ+e%iK-$?@`wOjNFY2QL5fHl>(xn!sCZkqm!Cg;`u>L>4Ctf<#9bX(jK6t!1LtS=
zHA?{iGmazbI--giiE+GS4jYje%pPvZx|dwrfRhxtdvo{ht9MQF2=siL2)AyC@a|>-
zx`@)<yM;S6&xE=XiXc2cc_eBMH~;~ut#U!~Sbps#PM#SBo-ndhs+_3~v+*7xEBSe@
zRq!LY7g8i!e)~LD$I{K8$+tO|I&vRkJix4Ia~WrrlTj++u1X8?TgO)<7BK!5z)UOa
zfX)-EZrgmjUi*5jstghCLGus<ArzImCPuh}a@d$RNAIhH`S{2A`(wds))THed=$*>
z>FG%%TDy>v2t}qmYrj5S?Yul~wl3|Shbx)SQzX+oMOc<(K&1|KLR9F;+BitKLqx|`
z%Ku)cYhA#|rdc5;Gw0X?d}V3*kM=E$3U2$;5Qs}i%(|5$`IbFvA2EE7=8W3C495so
z$S_49aV)w!IF^A&R>BO-rvn7&1Q+MKZN2;Wv-*p)IGvj|csL9YLge}S^8CEHp}PYT
zqy-ILmz9s0xu_`t!Ua^NQk=-uqav}nHr-yj^$%a#=gZ}CIbX~J+xFJ4eEG}$<@D1@
zo|pF)r+|=%%xe;f^6==na0|OamR>E<BImxqM(*nwU{n<qm1BShPDq|Os)bs$*4&*U
z?g6kxzR0XmAikHEnS#}Z0&>wz7^}c9B}K$YA>F<AuBtpNaivT&Y)|tL#Ha#i;gY92
zOxWst_OW+GRAt0_&s81~T1SM}A<qCpGU>`=%q$mret2c;B2>bIB5szDa;~Z@2}DGs
zAtLG>aKf0Xn$HUGUZ_iC&Krptk_?1HNYAo`An28kSG_V%#LAecxudi|NLHwg@TlT4
zH(q{hJ^_)IwIH1;G&gexLU^bG+%tWh)nf)iRK(oR;7s3T0C^cplz_r5fatxCmtTlq
zy=C)Ja87V6z}kuqM{VNTx*{r#Zr8Rf-+lM-KmYVsTh0Ms+j^Kn07HZ*MNe<v>HXc^
z<L57*zkKfNmN3o$;1Fh<3vvXJ8M(YzjKEE*h&;ockn{4J-~aaOZ@!j>2<yEAXsS)y
z)AO@L<Y5@yAr(BsEz4`n=T><4{PbLIl`QTd8xz>y>+eiw>vS0hB#8)dci|2-v+x*>
zh>usLupeS**7Y2q&dwZFwkOBhv4CP!o$JBOOlDd}P-Gb^gcEu8I?3^iga9$Qn@oE=
zC<$o=5wTs@mnRUad8BzHhrmK;PUrJ=>k&@bq1wRy%#Wq;f9a1mKS?)Bnk*yRO#z*p
zntLL{piqLn`?hX?Xln^Aj9NN3SmJ;(U?&7*ViF|WZM@T5fimOfSgm`yUug|uWQJ1t
z6TpcAIsrgMGHW3-O^`!2P=WNo!4V1EIs+6zKr-{nki|q0>vl4qs8fJGE@@noWO_H~
zzkvkoxJsg$$8sepE$4Z=zWem!Z{y3ugD!HaqTRY95j(7_t(_Kdih1Q3k!x#!Z4${T
zg%E<oSt?bM!U0IqECA`<NqqV8csiZivYcC^nXb?6<G0+l=lAk*dbhE;Xn>wyQ@dDi
z&>+lx40EGu{dt^0wV@*UP$(r)WXzBaB!Rm}TK9>}GyqLoo>h@ZX@Da15K&SR1s!Em
zEnAA1nT(=PMSAZMAqfD^ogZ+wT&8ALOjV}IdDjtexLM)J5*{uh?xqxr%)Et@<MEhT
zZRPtBs)7RxHFAv#PdoZod3v6vMb0T(@*5b1sgI513IC7BoXoBpC;=6@rMD(;=MEu5
zfO;_jP*mXcCfzszD=AW^K8b)O1~4{IP{1$)GS5;uVweOxAQWc|EGjE$xZC7)_F$A5
zkBCTC(E}NbksOau8nrPpq2Vi{A#?2{k2y}Gg41%f)kCSQWgd-36gr$L3uJl!{^4c4
ze)-`q?l_(9&)PKTYlmOSO&U+9<^Jw+cX#>t@#DH)*L4#i9KK_8ha5f*L16^inPKEf
z<q~>1z5n{FH}BtG-kc%sZf2d7Wm!mBud4tjU0$MxZEi*b#DhUZQ(4Ed%*rJ}!vR6o
zvvQBbB8x*E0Q#{Qy{*`IWaBEK!A-@S2Z8ur;Z3p`fSYmbyF{^B$JSxL+>oh5)se)+
zc)8<=7NTR3RZ8XTo`6kIggyM`@+cGdEqa3Va8b#G9TDdC^z?-Z{kwHUlL)}vRVCAt
zQ)?>HE%v2T3^IT9(EU}0_@+LN2)E+u>qSYT@AcS|4UdGKsH(b9D8AZhSyY>d%#+jI
zNst3cJ_rl)RL+B{PI>^KWodXs&SR3)F*t%u4y-nENL^9HE5aBf14a@>0ZM)sqiRvq
zGmn5s{?*`=iU<Iyln}AHox(OKGttQtbpDcA#uZyPLar2<GV9gYxexG+{?*gZ-#mT)
zy9Zs`U0+{F^xl(k1JKQ`o2{UUScDhwJm{uLg@INg27>geHeDzVC<VbDAwdCDie0&0
zuifn7&6`tGZdW{ilIN!{kDu?}|K8rbe{OeAa$!4nCW_>R27v%XWhbvdRan(dJ|M#i
z*Ay}LChBg|6azN)a3mHxc)D;WCDi~H-kd-tYeEDXwK9o_1jGkIg28JbIjx};8kKJG
zqxA7h@|G%|`1mwVmL*Rn5+X~5K-*eVk}BF%N%r0Y5gsB8ciB;(dP%J{(TV$oCzV*C
z*~5b>ZE0@7U+mtD;3}<7UlD?WR3cd3#ZcLZh!%dErJRUY_B%ru0m-5}$(%gd%{{zx
zKda#$WP$kvW_8-#2Ol%?jBt=58Xg3?yGrK6;Rewd``kw$k_ba?T=<mERWwXoMe15O
zga#aPuo&@LMMu4Mz`NM6OV;-2mI+eAt!8Gn>r>|Io|OFjCl(Rid++_r_PoAya|Wn#
zI$hq}-MxGJ)%NuGpa1FK!yREN^6=H$^Zj{ySwDaJ^!Vke+lIr@I(d+rl6R!)1vHVO
z`sU63+uwY3|Ly@Qj_$tZ!E;(p=hI^DFV8RQbv?Cqe}A{Feto&Z3?cv|;N7-u<LO*<
z`#eWu1`JGzOi7dqj=QN5ceJ+tGXLM_CL$`7mj)snMa0BZmWhann)M<0lA99<421lO
zSc!*SAje~CW-56}?m;GBjG-HI6*2cg{cslqkvK5@8KHbnAu9AEJiNPYr$tYTSic5n
z9neZ+C|pjb%ia0$@p;gEHz(_V9f<xf{mP?rl)o9BIn%ZjMxeBWStd$Ew{GXlMYKh!
z%@Bk3@{ud=P}UGUX7tOCws~X@kq+{qDtv;C1<MqfRk|KV?o|)ppJB2=!NZB1Kw&<)
z!cmHlIe?`kB9W1Smq=n@Az9kKS|I~?!(fy7>V6ZL9Vq31wdX&`djSOTZhQL8=O5nd
zb~-IETb8@<4GOc~dta7Q@4ZKKuzNDzsMELZvM}OIoD}e&6DkZs0S6Rx3zzz7B^xB%
zg#jYA?dj?1d^(fTJnq@=u0Q(EpPxUR9@~Ap|80N!yT|+Y8?@?L9B>`?S;Y~A`@k%s
zwu5SJy{vkfksnctU4SBa45z|(SFQm7+IZzq8H<A>K<9Qzanp<!ht)PUawE(Q!dewT
zvKde@vqTP6B|pdAhg8xdC`>sS6`Co0TePUJ)G(wV3zLW~U4x3w%2h;C{c=*R3iFJ0
z-9}1&vqeYHlnBpdYX#-kw**DBxtSM$06*MdO1e_;35UpDyD-RElGXVa6wQRzW5NTT
z2yn?`NO!kxBYmbO)=?+Di7rHD6jh5;hM0B)paBhuyNT*x6n6?-Qal2{2Z4&rqcb(z
zA5NkgMw)jSGBFWJYRKIus4{MF-08q4j-2{l*v&`|x`nOwo3FoKxqkfgu|km9wyj%J
zvvs+<)AL<_{<MggyLYGXe0OfkZ{9w<-PZNXr!Rfo!ri;s)-k{YNTUAqFkM<^ESK~7
za)0;m?xCHQP#PTGsi|z`o6FtTU%h*Hxc~FF-+%dHr}Oy_zx!tE{imNk9#6<wO^Qdd
zD!CI%iA}oOfL%)>&9T`Aj*w)e?EtB;UdIl!pos>OY)Km3c|6`(jMZ36S|ayRFAVrM
z<QRVsSV(3_W_gZIz@jMoD5hfy*O&o40h`!?Zp@MzlT2o<F+b4u5tFb-xL;qMDDmda
zJ;Ka3GeZcqX={WLLE!@*-2LTcbxW3t;IEgw|MjEyNV==)fa*o2R0@dj^XdMyG{UnL
zfuMCGpsJVi<&aN{GU?lxr7w2DH)hIutkEa<VkvLT>TQ&Gd0-W@lRIcC1BSvj;3?HA
zd}2pRZni(iE6Y$bbX9xM&nzRWMqr|Hn9BCbn39y-L4{e????6inbjE~<6=sqM<D`B
zx68*5r_Voc^7P@Er_<$fIU&S7T5G*W?>$qV9?`QL7)(wf>I8D1Nol);Om(<YdND)A
zOl1;4;RXQG7_d;mx~>4)(wZb*)MM+heY&*M`RS)GFCYC6|Ds>M4z_X7`y_@&_{yXu
zm1~k!R;yN*@s{UmBwK3%^xjn@v5v~j#%U4tW1=^C%^qst=Dk}|2CcQRR&Ue|`C<~2
z9Gg7cBWYOdJby&MY@2j)37ajnGHg=l7Ays^x3+{wrUgO;BPCIpdgROQZoYL7Z=$Mt
zI-Rma5TR<Lh-4Fwc?ivaO?p7)sU~{hgeILL^()!+!aUvUQbiD<+C1F4jYFsuxI+#@
zY3hB;dM`hbq&v(kYh0CL&D*l<PjKMp?oeGogn7`Ad1CE<Nkw2xez#!8+&nsUf_3%}
zg~zTEKk$x4ZAWGC%q(iKh9lo%?_E@66m<iIPGH$z3j(=IG-rJ_!V1sl^Lcsu)W2+I
zX3p-h^)vMR?)3Qh<@&Ue%G1(&4|AP&K`fW$bXnd!ym7a_Zr<Itp5htnrm7G~0-!3Q
zayp+QAWhu8C-;#OzlihcbpPhE=<=8Ee)#bBA0D4xL>qt)A3pXTKC-KDPt~TIM<Kw@
zsv$CBR~RbVp^B6u2uT^D&Q};+&{5n?sa+;nJc4f+M#o5Q{t;!1*}+cglVtYA&EBEf
zw1-S+o>(Hfv&)#+Y)rnOyJzL^qpZo>;}F5Wl9aPfDISFdsj^IRG~j((pPoLGalKxb
zCLlxPyqw;?eXBy-p2M%%{`c_k5b@=DU5hy$YMDd9y)QL6s7!wK*ZhGQ4JWeKRAu&0
zLWE*w<|ZN!4;PWxw&!+QKsg@loE;o20%EAxuw#bY3&$OJ*tvz&G1a-4b@eEZ;>cCs
zYS3PVdzsgeJ1em|fd<^e4wsyqM1V4++A$>D<7Aa1_&arhoYJ2o@NksHRggzzq7?B6
zge}|4`SCORwWD`nz4mQ8pH7;3?|doe^QpBf*A1X~Okwo_dC&Btcwq}yicMLfnNSv0
zAA-V6^*y4yFUYOWZQI;^Ikzfu-IZ{Axp3P)ez&~+&FS*>wUi~bQYvumLXFw+<x=$B
zctJ_e99KTV%}It?5K^tHwf0hML!d2-S~tuFrU*9&V|-1K>9aF&#)ne9Vji@`7q~-H
zy6l$UC%*{y_0kH#4uqr5yX3S0$hNI{DswPdqvNGETgsj(n)y#eT(4IV>AknsQii=O
z4QM2Lw{C{WjVB{)4cu0lu>KK5N|nVy`dbi{r^K3)S*#at9$_IOrNWKFqMZC5C8?Jr
zsz(Q5_|UecM7-i=K)Ay%xo?7b2H0egW?-$06k(+-LkV93Tdy3M^`%ED{eXp{xSWER
zq|mKwluB_{id0i3UW{)Y`4$-3>P(Gg?=KvApM@vR1TaGS+O=tzg-5tGXbaw-&!Y1E
zmnU~OXmAsiV5FFEGs{g5h3K+qwwXb94OBuHFwdMxQc~QL^OMLM5P`OKzPo(>{P^L+
z$LqEN8q&G};Ff#XEKh2W@a~`ydu#8&a8Z4dd?mp}i8!(=_wZj2hXIe_j|1jq0k%P*
zIS{!Sg}3L;q?32Leb$;2(>ii4<1lcq{pubRVu%&0L)23Y#nxKta%Tawt4@AV-j%##
zSMK-}SB~CLiZHBuUx`@Pmu)L)NG!SOaJhT%P5Sy2eLXJ=-@JJeeR_E*ZU0Vyz6P}B
zh5hO=d@GRl+0~p(s!#!Mf*vRtX;RUrlOaC+_?Kws%iCo+y*c9Zg9SJ!5DpRfn0FqV
zIcqceQMz0Q-Rw1(O??rFFoME{J;NSgK9RNHo{m%+fw5cTmQ$FYI~th~H)_5tKaXqZ
z7mEF3>T}?Kihfp+Joy5UaCN&}pY`Pt)|~`HMb@pWl7KYPB3b3#n>U}IKZLu8T6m%b
zkb&HcBbmE~G$P!KAccoRsFS>fR12vT_zsI~l%`TugmhtptmX`gYW3r0D8cKURr%Qn
zFRGFhWL_!<hjHAP6%jlrH~3R-OpG4)M&NWlnVEaN@I8fRHKvv2MP`p8lh~;U4vC5B
z!lh)IqmW`jxT>1R-t>P+z4VaO76WSr-wUbHEe9u|q62!LdoaO01-W%2Nec?Mt@o{y
zP}TGKw6xZmHq{g*y8F8IZQCjhNIV>JTwz&krJy=%8KE3R*|J0V+(k^a(1Q-gj?4$E
z<uniKp{CB$&W11>C5wt7_jmVlw>W_O9>L7WM!)q;)7)M5*Ie?|u+7KUrOY`-DRwBd
zio>W|hq$NQf$7pQx?MvkLxmi*%|>feY8Kpm%F}eTJ9CuL^R=p~``S0Z`gL2ci?(&!
zaw)*<;dD9Ooj-o~7{XZ5!z|VWgMzZgRhb<!XtD&2>gj(F-iefC!&80|VPP>8JQ*Nl
zU|Dqk@yDM&eE8TCWl3CcU_2J#9@Y&WGWDzhcWY8zMYU%~xSTDam9>j9wNVG1P9~;i
zE;52?5&2c=$_N3d7(zePky9m5O+99_1{**!5uur6sJQoI%UN#5n7HsDagJvyrKBP=
z`^#ri0Zj@(yKRIWwcunWh*!mTL<nHp)%zxbFi*8Xwjw<~J_6X*^?Yt-g|VM6=hOMD
zpXK@aW$k@P*@##Dyuh@z`4tKDYsGj}TTS-lQt$3BZ{A!G4$D^45qZNS@bu~DHQL|Y
zecjp}pog<Rc4f^tL8ZJgVyA?593qCjf!nB;W+fTnGQ1m7$x)Bf%a>!82eo?LCFRk?
ztw?K}pA0E~6}+l{M0i+2<q8sr0SZXL4at95_1C>p80^r(A+5yJjW86v3%|TPE$h|8
zH}696u-5c?y;{RXL^Kd=D)*Pu!^4~H%X6O)w}{u}(PL*l7!=a#?KuZ2Y33n?&WB(K
zQn?}0ltM}K=+Dom({ehU(rToMfD&zq<<6<qJb)br9;@14=?@CC<Ty2kZB+K}Bq||b
zNVdg~<ao3ca@TE%Ry#UjR{gsZIZ@Sama8g%nk1FoYzQ?8p;upYkTf5(rih!(uiUn6
zE+9{d^<+3kTTV(bwVHR+G$b#^Jj|;L$&(K_s16B`O$PGdDuM_L^S%M@ev0s>O;t(J
zrfulviyzHKWEFUx4Gy7l>1Lz#jrlW(kf|50Z6jnrFdBytVWN_|E!?Y_a*9^$re&r0
zfKddSSzcty;F4tAd8`yC$Jo{J+SaG?_o`wM5u!~Fs8}FGHOaxuf2K}qw5eDLAL?-z
zL1+<x>%P&kZ^>X_m;nt8^&k(a&WBm}wzfnVLfq*VPHUpf?)xxANW@v%!`+*&e|z`S
zr=R}%<BRIDK41Iu)vHtJwCJg|6Q!L`C-2w3KDw`fhxes5g4&i~^wkXE5vmQ8Xidp*
z%UH2)>*p_zn+3o=B3gL%l%;=Htv7f`cARDMSvXz%s{Zy+Sol=2?l~hR^U(tRCXI(7
zf6QLH9Ym=H;+g9WvC9z;{3Xze{E&mfHb0Ql#K@1j^jm-`A;j@%oSjca54(%#l#GoF
z93X((<ZuR!Qb8)hUtS)=4IXfp#)#1Brt_`$b?xpaU%SGVMH88ScyoU~ov+*W^89k$
z))*bqLnp(%yY5KH{c1nb;n&g@A<yU2-Q5}PTi@~))^*Lg{ORRoUAG?6;$&O*a|P8=
z^-#dqy~vQvOj8U}$U$NoZWM8gL>wl-J1gl!hcS*l$GeTeY;`y^cZ4}}trDQ@?eVuA
z=dYeg0$oWt#i6}84gh*(2SNm<-u4y0FqGRqcYQjMXz&!c?{?`|MbC}^i_AoWplXOJ
zkS0I4oaO5`=a+T+{IVXSBSgF^hT$eujn?T*l2xhKiwLTSP{KV^lgth}&=NS5JgTjm
zwQQG_=FT{sSINppd{_w_mrNYwEJf$Li-<N6XYZD)vA!@PYPR+4+78JeFH$vC?*>Ez
z!pu^ZkkXh}i+D1|S$^rx#)qg1^NNlAX0!kRAOJ~3K~#$nwb|iRkf{U$;W~Tf#yhs&
zN0MmA^CJ~TD91<1JXAzei$NB89Ccb$Ly>6JZ5b_lcxy^8@%Y+1!ndt2ZE4GbYTnpy
zunDc`lj`iGXmPY9X&w+j*2Lkc#tfg!T2!J=+k#DozGZ)N2g5cuvuXy&N1ENot&I(t
zpj@c7BX^bE96}lLia5fI)2JljM=h0{9bvke#uYzzzz@@}D_v5i0&(EdLAI1%r`wT`
z?%`E|vDz21bsz5TG0;owlCMa4xe!D{hzCT|9uXwmtZ!SGzrDYIxVzhw&o56;FIU^H
zy>Hx1GBp>#<8(PaJiPszKmPIQ@$t{!{=@dXir~_gKYa81x9{G5`{%#>_2-{n`sM*p
zRpNBI6Ky>toOfq=bASH$@zZ8u9+4hgg2{+hcGj&7JPYK24O7*D#q9^oE2?FdBm;Xa
zLzN^NRCQ>u#G{Xm#tJdJh5&xZnsHzpCx+?Mo@s!<0J80M_F>JQ(v1BvTp(_`)NZld
z;hDpUxJG#9>j&uoUrFMRN|d=E%fZ7VY}>BS;XRQr>mI;qSrB-6dGUzL`LeDZ-9b;c
zJyKLe&XOROzUcLOt$kiSwX<r$f621r)~*r+o5<bebUvR&0PCCE<hj@D`t<zlBhR!5
z3AENkBp~TlSQ3{*Lv|L71!1rbq#;=f4s{h{;CHD>798p90j2ov)P@`L)X8X}A~uel
zcti+CE90*jhYiBA+%hm^wtM3o@rrCddJz5cqj*rr#{}?(&%?QIvOYP?!_%H(X)V{v
za#|Kug5A0y1o3cLe)sho`zfB*&5-Vv4j1QZJ)JR_MtG!v9xw-)4X98$hT1&)@v_yu
ziFEiP8UZ(lDiP_)dhXXZ>*IQP@6n0|I5Y}WJ{2*$kMfBP@l%LWMk&0%@!?Wb25hxS
z8G+vW=wD(>E62>{MAb?z*viW=DSpxHMNNxaQT1-BEgj18inO)fd)YchNLurz>x#6<
z))}*0l_ZCR{YEROqT{d1<}%8EOf=NI2SQYarK*UK>GM2vBif|*6ntgukhL3!4^elw
zbuH4g;6tadi8dCgm&Q@WAgH*9hgTcU)T6r$E<AZtjqu(r?I-t?zly{|XXGFZXJcJC
zX#;LHaoTcG;oih}43TMMV&Oclk>NB_Q1;;FRd%)1tFk~;%7e6A#&kHbMQLxN=&@O;
z`yskbnjGV3DK&}0ogt-y&xOa)U6J*Z6RD0;m(8PTo9*sqCc>quyM6lj`RVzoWFwIY
zqN~s?pfK-G&yPR;_}A0<^6>sQKdeuLfAjlq8ujn~?*IMa^C!_3Bt!$gd55?zaz5XM
z+vm?eefaRxm#1g5@SdVnm<L7aV5*t{x1jkjyo!JoyXJvI?G;BCs^eKWbclnz#SC^+
zY*)$(-V`9O^l_7d#jra#AixI^07I$6?Sa#(EUBXk%G}ehW9Q5(VsA<aZ@B6**N#`z
zFAp`>Fh<=`5E(S7yZ3Ef*O%-<hdYEqZtH69Za!E^-rwJgZ@_w5mXsKqbrGJHCUSp1
zox9of`jVwgb+1Qt+8!LCcTK=B`$`1fmy=x1=VcKxZJ(i{Fi$HRGY>L+RJo$d=_JDv
zq-sad&4*8Jwc(Cl?F353PVtbj@h4{M)rl*=<f@Oy-Vx9~Y7548mSf*nL2|nhw;xa6
z)MlnWiaIHiEHVYZ@Ms%X!eMhQx9K~k9oRu}$z2%^r){`CiCrx>SSogbQ)_p3r@M=u
z7Knswy!z(03FNnL?gaAZpFcgWJ#*5sgiDSlZ!*oZ2B4UtElL@`N!id?DqAhVb85Hl
zKoe+Cg&uD1s>*PMzqvlHfBBDF0Pp|ix!sx1HV~g{NJSk!I=nFpDj)XgMa=SsjtqFp
zwySS8C=7GwuupDCkF=oyQB|`ryS0NTWgSwomsgZ14O9~Uu->Nu8<G7*iDpZLyBk4J
zRHfRE)5<stSu5+1q-4@*V5GGJkvpV;!rk?|n?)dcq{fWovMlb7aX#hmo2nBs95zI?
zjF=@=!~=^i%4A=5BT^OaG__7}t9~U4$=;zu&wX5r5!Ki?eTZVHC-NC&(LWuLrd`SC
za4BKbt}@-laI@U0xF5;<v5vYy!Fkz3-Z=0b`WMS7lQR7E>r(5yaKN>-5_4tqwCv5J
zEXF^k)!hx}cPt7$NKJhj2s5Kac<7?1jD=|wYJGcoiEfwk5}$k8Lwb0<Cr3D(=Ik4;
z?(zKncMoqK9^O8@`|7t%*B7_H|HprPx~^>6(?Qp(uh06{*Q-)Uetx+|Un5f09PUmJ
zY6}a2WVW8ZiRqsZ9+{VvPnAyFzW|}xH8e7^^d6UT^_}nHwHS(|mI0&${FP4Xc>dkA
z+>8YLKxd+KTh*@Vvnhyj)2<UozY^SFm6dT0v&mUK%kBk{LX%`w{1rwwVY=a$#Jxdo
z9K)@Nt-iiI!h3iRKnET$;Bb<B_wMc6`*ZX!fBQGT{~!MQfAMer?%)68Km5r<%xjM~
z74rP{&3(6i-FokRy{^LsZubd}GNG$nlf<$tr)4=UO|&?CgsVzxEp@wo^}hAqdkR;B
z8NTImxofAhXe$`5$Q>nyIHsILZ^mOFZ?IJNsMs+3m&z!Lx3I7u%~B?qAUB53`J{A?
z0oZNJ4ku`~WzKmaMIp!Rs7ZK^6RLHK<B*Tz??)>0I)+T8{ZSK_flWLX-_HF-qi>dO
zuGJ-UcYpux{Ts!4J`*%;yj<=dAD<s>CG4B`_pQmdKYsl1w5~Hjtk@%mf*S#t?<%2e
zXGst~jgujg%H@H2phql}AfyRZVjQj#+nejp_^!8pZD0Mf$K@eJcTc1UjPk4+F+#Fu
z#KUIpazru6@|nuu56`GxWt&u6L@1>NgCa@pZhdq27_7i<;13s7ioiYTt8_h0n}}oj
zoYqt#x^+*vma10W8_oo^!kelMrExhq98tUJA<WUDm?IOM-TGWi8E6&}>*i7JAGw!E
z2E?tCR0>40UZl|6J-qF3@-8d2Zn;E;zh!B8r_|5OyuSqK^Gd=K%k@+t?WTu5jnC_J
zpPgFM`|Z{h0k52UWgK;fiUhMmiDX!x9Sl-GT~s-}{P3pjB@YL=%t-*8wuxzYB0~jQ
zAYX(W6Z2yI-KQL$qb25*;C7dQj@LRFiUG`PYYU_=6U;}L`MRw_Jlx+A(fbxd9vJ3K
zMo7cES#05Gr{(2(4aD{O{N?fIb$jXE5%jH-vLt7hGbXyd_;Yr@Nw9~6TbLt2gFwPC
z`l}ArQ&|e6(ZRubSA{X_$f?rg!HlE+q-CrxxOF1rp`j##s@WZW<Iz2^!Rh(MX&*c_
z_PZ(s;h7eX={xXg>&;nvrMbt>XuMXpazfJwo|3ORR&mQ8?_8Bf3HT4^N42AS->%Qw
z%aaO6H$WV-fe61`F7MvG3%^o8@&EWw|M+kJ?cYB=cW^nK&!?p=sz4{BHN9^aGkaM#
zzwegKgn(IeFT<j=kQ9-&h^nR?OIc!u6F8ktqrnpHzAU<~<>)lM&dmM(;k}0lWTY8!
zbORm&)FOvQ!!d4t_%KOq<l?2O8<LmZ-{w_KEOO)WF%onycjAKw!wvlI)wUO}9bk+U
zA110!98kB{Zbijj4>4fKuK2zc^WSRX8H@MR_I#$<y1KcglX%nf`J{qvT|a;M@Ynvd
zEc*WaySH!Oo=(w?>$=&tJ)Go^zj@c%(~qB@ugRa`@W7?S6ua#lm>$&W04QKfFfRhc
z79L>Q!Y|r-1kLlMCuy9>)`_nD)A@&gu<LdG-9LX`-m<mX{8Ig*9QMv-Xtf_(Susx&
z+~n@2UvF><mgm%yB4wH+cdycWkI`E}(Xur55(xP2YUbT-)Ic}JlWD(@1xIUb+cq7D
zf9gDiXa$Qh`-N%`OB>^ivXP9wCuzaGx19(Mi!~p<d`#U0fMr>3ro@cnD~JZk<wyZ7
zZ^uMLs#zAv0nNUteB48NUil_Qm$c8}GwG60nv}`O&4x4&535@FRvA%4Y1G5>*qe;<
z6mC=ta_yO!W|jhabj1-znmLPk_sEHdK#TxUMeXeR-5vF^`)hPzc}(}4eV|+Y-)P$y
z-O@RAAm7#OQ^GK0-w%=-NdcyJB|z)p-kUawvU&5s%k%TyvOK<I!&lD}%e&E`A&j7T
zz&xNL8cS30uyxzI18m*5=!VVCHJL4Ipb(GHSg&igO2EQ5cMJ4L&Mu+5-RCAkNKx%p
zE=4&Qv76oJ>&DGF%BkJ(sYZ707K+oXF@{_;o4H&npJPo*DCT0f_Bv*qla8Gxo4t1>
zQ}sHWY_XdO5B=9L?-+6f)DD`G{_67)J*I%aAQ5+@{6>|N>~*<+XQ<e_<L0bPx+99r
z8sjkb-oH$DAD_NFfBE#ocYpqW{%#W}2wmE;h;?`)+gYdrCoH_%c9jTWq$VjMPO743
zAgr?GGT&m#j0tyB)l)mS)|O@Y{Q1-Qbb9;n5V*LzNPD?%utCX#(oXICM%!fyNRL9K
zqXl}p`VA7DLrI!`u9$vkQ%)=+vpGENY1B3Mtb;Mv*lSneoB%NhriqT;{_pOmkz~X{
zM~RyRoib&EWkFF2JkL{DAQ+U^G2xb53j`%D;g|KrpFa2P#ZY6CvQy*f%jfMeyssYN
zJ-&bW_~T!{y#M+)m&*hA+-)V|z3^^%ds*5KU!Ff+w;an8ILz$2DaT8)kw$@zu=<Vc
z?z)7a=KgUxwy{jvzDx9_KR)>P*SEjDE)RYfQIpa#PZYPHrL@ZNl5Uw#RqEcnlq3GU
zLb@;xEiGZ@BGS5fL@zeA493OGxwLG=$`8%MQdFHx7wB=!#Aqo)9Y{EI2}>E`C)w%N
z9XN@K@Or%-h3xYLvKkOKr^%%`d?Xq?o=A=?g=(rExGc-9GfqU_zZVoGs@Y3p-IKD#
z-bz;5<3xiv3bmbPAERBS*BT|qd=0A&QF9Yz7985tr}`g0CiL(yIclP{1JFK{zd1KI
z#aSr?d)4!x%F+Z)r_b^>?<&KM!6V$Ji=Ygj=-myY2v?s^zE(C9htE1oa=cyySR)l`
z4jRbp3Y!Z2iEVOs$&TB~X>aKdxKP}qTL4&2r>q0q1Mc3<!<9T~gGEj$s*wlj$qs?#
z)VvML(#RgZZ7V!HM;L9+?jc0_9EcN)q<+i;bn99E(!$NlM1B-8M*&8Tu=Q%04YQse
zH$0RbH+B<~wHem0$CicxHnv0j;$gDTtOq3yJ-f$tVLhNM89A0^VN5T>Y+E`^&AXkE
zkOG8xnjV9xh~!X^S3&$xiv7yOp;>=Vdo?-Otxp|wY9X#KPYF59Sp`RWMO8n4{`BQD
z*6T}%2v3!+QOpB0>E6s+J6+Bf+DrKJH^2XFczpc$(aQ!vm!(l<>xPsHs`hR|MhyGR
zz&F4BdfWWt$4}pV_kHi%S6{tvt^Msk`=f|FKK;{39SUz)PWN|j-X&klgLNklb3k_-
zc-+6cb5B!d0e3TiAr5XHImv8{*2yV;*@Oc(!-3GAhe}$iO`Xgvpl{^6rNo>`G<OFN
zDd6fb%fSzb3#QzwX2|)RZFMuJd8ad2`?Q6h)~j3}eSIlpODLjkSwt9{Z?<LsNFMa=
ze15tDvb0lcvTj!mKPmqB{_gE%`Rn8Lr^lD4ZL26+sp~N8ymg?exf%$`(QY9M2D6DH
z>$+G@m+4(N8bDHeoK8zuT(76E^jg{Q-nNsVfdwihDnd4J05We3^T+TvE6e;bge^j)
zLUA+fLnTwJ7a}1^Mz*72MR`}YCfQ#!jMF&GX~SGp=PJpAyjaroKNCrj-n#V}Uk-I%
zW{k9M+R~Pj9(^~nm$FSI(ReEH=k5xUqG;D*sbe(!M3&TZ275#>6z=<}Fs{V955v?d
zGsnH?KIOL%q0zvVaKDIG??Ih&HR#E4oJ&&%{g~6kQ;UxwqmN&zoDPDQ;b<|e2*X2F
zdQY6$C`Hwe{g4Z29}}I2{Y^{wXw}_KGXRR_v;<3{D;r}xC}YIMAPB%;nf|s*Id&_b
zNm4L!LU?u6^3={-Jf)%3pyjY`+x2>F+EjE=U9FE<O;wySLX-?g=lb;g_TAgP@hK}>
zb6U_t2AV!C@eP|$7!GrKb$THOS7oPB0EkS-Z20gVb8YMWB68HZ9O1h;grItdMum4f
z4GcK?C`}F)M3EXkoEaof-25rkG@@a4?a!)3$eJcfPOWBcJ@fg;af;t;Puw^{94wp;
zLEIy5kmr4*3Lpgl26m`?HrGKL-Rt=aus%Ph2)lH7<H<~$!|U~$n|x%+QMG{xC?4^0
zy?*uP{^9*s-+lX^7xc>szx(Qq{<mK}JwN~O!;fEo_0{ix_sx$#ef;(>-+le{9{`+|
zb~>Lve_4O{=|ekRy2sByfBuJm_)pI-S5i}h`NNMNfBfmwfBe(8`M7*gM9KUur?a&4
z9I*S^3v<{N4s@r6U?y5UW|0Yb>`#+j;xyY%c^q;D%L!vb5~7+wqvrhDL5}%;E)V>_
zOno>(&gqa<BeV-M^CN5PH!Gy(ugv;kOrJ}DH+%XMtJrJ(I&$ing=}449v9zid$BS6
zbx~E-zOC#gmSb^^y%Mh{JO$!%cez~Jvgq~cQLxeaL&N#~`S)MH{r=<Q&tIOeee-e!
zu9|4h{+j7Y41fh8$Uz`!Ws2}HE+Tvl@_Y8rIC|i!;OVZLxz3r~fg?d91A8dt-HlS+
z>sU#nsmTt+?x;~@T#est5p24od`l?N(#la^<?Ok_Qd*p9TM<!;W$$phnoT0G+$cv4
zHzbHtImO+;MY0d7rVmja+2hOPj8z+eph<-cn<pttmXlz6k|=E22prnq3yYf#6;qzT
zVb1$YdKGE4d=SpeidlvW0i_IIjxS)6XQMF9%rkuvnOwDyls0YD<S>}#ILv&;#QEgQ
z<amsxn&r`$iXrLEAvrHB??NPCQ3yF=OgP5To0vcuXv~oYJK9qQOr>aso8=jB>?=A1
z?cFn0RKw=989AiM$8IQ!Ed6Q_Q<1HQxih@?&AN#~O8h{{L65n!oKDja0u~*HzHJVV
zZec;d&0)}BBqyq(XdFCNrY`1A2Q0<<W2`Vk#u$=gvtxD8OTMr%yA?5Wz6xQ}B6OcU
zc<WO(eiMiJal+X<XjAEuwd>8e9L$*xF-C=s{x2xtDl&wkg7VAt@O@m}v=@-6JxR8B
z_dY5Fevk|pwv?ms`8LUz0t$KU%dt18OaYg7quKiM!iwn$cgriYs^K~`dQ_)QI3gmp
zZCls%@lTH*KYqHue`8xe-`~A?|MugT=Rf`Vr$7Da&!T_*>izd0KYbRFPfzO~e*gYo
z{>%UI`Q`fazx_`{zdk+x{Q1jIA3k>*9-}$qh?12<w_b4U^y4Alym`1>&eS31JIr3J
ztgs$v;1?EM$EhTvkBighaH7Y<QcwoM?3AeCJW;(S*;+cy7VFbyF+CQTR<RMIWnuU?
zmHaAHB&cbx5gxJ+I696(O@rk=o2_eH)RZ*c@Xh0ya5OHiFMRrJ*U#(q8SZXQrHZWU
zDt%Kk4`<q2QyRtGZ3~a5fNvX=-kL7UIsNApe&Tli>ipG3pRV@#<@)7iyP9)K-_qZJ
z>FpmyCPjJ=)W(Ge7^f!hAKsjrltsQf#`IqIFpn*y>&4q0RFAWoM{ii>#&#HDH9-Dy
zzMcIMnC$*wKp>DC;bb7vrg5~T?LwOz{X1*>ICQXtxlr1&^xoYq!r^JGD7$Y%pf$}&
zwv9B)gQuF3yE}(7;<5IchA$Rg&AtHLT5C0oIf5ceS~wz<&At2RYf75di*CSihFR7G
z`vCd!uPR`COeP0&T5{Ui90-*uH&9gpQ%mJT^Ee;$RN~aIks9lE5V;5?WY+WJP3&!q
zM^H{gRF{+>q=!j9qTFCdSM-D>BHS#;eS0-HG2BzLEU%cnggy2xR4Gxw$Gt=L-k33^
zHTHto>p3Tuh{NuiBRbr<yY%Hy%fpbe(f~Kh`ao56$Kjt}u8)t8_YW5^D3Vw@L;^P4
zM203D$T?aTmW3<~siAjw2BpcI?N@`Jra@=^wT&$}2OS?wof5e@%syZ)ctMWW@|w7w
z`kuioymII8*_XL9Scj3{dmnZU!>Nru!Ol3!ooeqVuDIJC9jBmI>+tjz)u?9reJoRU
zDNH&!O0GE_rs9xa)x*i`5H<9s+C7g|A%z0DoyJs$kbtgXoAvDlaME~d*z&8skvYlf
z*i)3<N)chb|Mr{Te*PJsp5p)dKmOHEKRumJi<t)E<Ku^%(*5b_`TL*z@BhQUx}4f+
z;UE9_`@6f#xBvRzSa;-M1B&Jhrpjz7Z3>$!I}hAFJftXO7uJ>EMQL+nc-<W<<0Hj5
zste}3$QfBEH@7lAIs(+9W2z&FsM#Xet!3vNtzp201Kl&r*w}%nF@ta??0K9YGbRBa
zvE^yOR=saKYBR?lVJ3j1|0@C^X7_G)Zn(ZE(GgBGN<{Q+Ee{}17mc!2*K|M%_-0!-
zSA?0W2;|h%16#MV>YKM0`OW#u%lh%@`ssQ7`1rD#t=26@k2`!0;&gz>ud&$TeA2h~
zm$#Sml2(2;Mjnk5(Hv{Xi!Ao`H~oC)HG-4-WU%n`IFQ<UK4;k1sA-0|F>rJZ6BWS2
z5>D$e4Uq=f)b>f&v+2m)&0;t&W_+Jyq>2Ep(n8Y#Ai&5g7`WDus|<u{95c=#0f=Cx
zAKZJ%CrQCM_2_j!r8$5eV}Q5MK6js6G%ToXpN5wG!rCG{-9qxyWLGYXc0bPXnatE-
zI_n+fQ3YZr)8>(Yw$+E+blIjMmwBHw0ETuhB2;tqrlj5Dz8QR<zLTtrnbl10S_iN7
z(z}Qea?`^=P^DGFjAJ0Ne%r}6H*LC^PCS6{S;$R}psAYGe2&BzGw&hri>Y?L@8^Tq
zLDKr0vQNO}?0S?Carn!+n%VqR8D4ZnpQPf;dp0iD81Q_=F>PW;EgFE+-KZcHGc(B3
z+Cw0o+*_or^N7215_dA-K0eNzBlu*KVj$U|L$}!N>gC9pYV6g({AXplJ96(5`Y}Il
zbb}tHH$o|y+Z+OTXs1u<At@uwAgwS)l2mnDE%+Oky)lAhf0qP8nbyHOnMoiAR?b0K
zIVoshp_~R)NmXPk<hpGyFHgcS?{nErbm!>*Fg|cjqv0eY^B`Hb_51I>`~30azx#JT
zAzZa>!+wxt;#B3_-Ifhaz(4%)4}bZ~pV#h=!YT?Cpp2<;GA;Q=-XLi0?%}}$QRat?
z*Q0YQjOa+Vc8C0eH>YEU`aWWV#}RFZmpjf^PC3A#BRr|!g93i`CEiF(_6;cef0~|+
z^T%$ppI7XDgvnS5tO=+Q2e<XI&#Vb-to+Smu`Z9F@%&|bdg|M?{BK(lq6~ylTxuv|
z4m9@eN;-XGZ%xXhD$=>`Y-USSBi;J*%TsIZ>ob3I|L*zWa^3uC-B$09FE2)kh;8fR
zUU6!2YVFPCa#5ay$`EX%3ZzHOk?=w>bhEgIJ}sC2{+nlQhJuL4G!)LsV8y;=$ttwS
z79;e&$?%TZ&C5v9%CvV4?Z~j3YFnCgi<;+Ljp`ZAYtDw5`2h|sH#Su3s+mp8i<yE|
z<6GMO43Cv?i!t6_M9JnU4^G6Bo{e4rRGLT4YwNuOShQugW?7dqTZWExWZ9Qa(a^wI
zYe*L<ZWbOhLvi;$+_*@ZTX<v_lZTtf@kAL=QjV$jV%6&nRdr}S{B90CKMC_y-P!x$
zd@46UcbjK_iQ}t7Isn_d0Bbx(_LlLL&Z1Oug4WvfmCPx>F(#o8XDiOZ3`dDFrY#eu
zOqZ`}IMpNw#yp(xC``00q%upJUH?a$T<k+3Wd;d%fZ8`#dg}0e3_jb|)w)fuL7!%&
zQ}i)LkVpvJmK4!}HUWm1gmG$LLu9W?g&ME~sk5kcL{|6wg=8H=|CLZRD$8L2;dT0P
zG@j{T?2b~M@rY}v+?>^jLtj?<yu>ty<32$-4u@jS&!G^tn5zjb4NOoJhTN1ga*%^!
zx9H;h(s?Gx&C(L?l3X4^=7W@vyYQ+!i{da`<S?Nxw(Z6HD$z%N6vveDwxQ)%6CWC5
zqH1?D`}E=Gm+MP*A6Rh&!^?aeHaVc>^!C()|J(ome};9a#4HPWJh>zetU*0$hMq2M
zIj3jF02RcGC5?k1yv(R?CCYJ_^q0jGJ%@hB02N9V|5~QUpu>6CgL)XPok0LKmG6je
zt54r#$Us;|zI#Z&JSLibBjecB1Hu5bp6T@410e=KYPpdT&FWIIc71NokN*7GOS+N3
zVVd;-5C>cepvswe3J|max_|Zc*AMr1pFaNB`)0QF{usdfuigv7g}?io-@m+EfBN}n
z?@t%i6L29RXFOak_xIiW>G`R(WiW<*Y74@>r+_Psf!qs_fY+EGh&EZ=R<3Wp##g`P
zvZN9G?At6az1X{qDivaI??<RaXSV4V3t8h4;=tXEa1hZ%7e$#1=1!h2qqDS18D2VM
zwd`pJ!Y!fK)>`j<!X8v;A=uUFt3nAzF~>T3F!p&{o}6*^T3Ac~c(SNzfMq#xDCN1e
zP<$Uz?0#TYO0v{)^{3<#B%p1H8u!cd`RraT#5ozNDvYL4&U8Dq-kOZphl78R%p)v8
zTah}4(pHqS&N;l!(FQB893qc9Ap$pj@yz083Rwe`W7FO&5lS1G-5{9|kg#FTi{p5>
zS0OTKh~4(?Seonr@^tdYu=~!e>+r+-{Ob8dRH8(7!j}9jpny;`Vk_yKl-{^+b~?4z
z<kS}8Dx(L$!!#I?4>N@9+txQbH)WN=AS6#;AB;o=+hVioH`5E3j-8$uBt_wGheEI{
z-VlJ5ns(sCd)(SG^3wnSAOJ~3K~x;6ZZ^aZNk|+f>Dp{x6im>sPFU{jEM}`N#x%pd
zH*7QnCmnEbXo@-65ClVna7=Ns#4ml94(L~=AAxKQ5b|*P0j~z+jOstaBCUmXF{377
zxnoEPHCo@yx*QY$H*I^^Tjb+tNj&E|9E_J4Ff$?9wD%OGh42U~RD#pZK7IN$$7=>G
z%E1+*t#xJ>@k@5|?#)A6E+RT{8iyUH<f%%SrL+I*uITiD;WTWdr@cq{DvJmX#Fg!X
zr)!9o&J9}jFSmA710~KrZ%L2w@x3?Q!@RL5-_hw*bWR1_{`mtK2?-n;pAj<0t4Ee7
z%#$ex!+3LV&!4qFdB09^jOt7TVh#+B*;W(~)f%WuS+CcR+xqhS;{DpUYl2?a|DUdR
zTb3lr&hys6BQy8jb?)vt8OQ-45&{Wwj56be%w(pg)idZ;@4yS`Mka6okeC@vcXic1
zWM;UpwREu#;gP#AMx#w*s;g>eM!2uT|9}6>g_!R?yn7H^4#!{p`Zt&J<?-?BSS7k=
z)A9U>NN<=3&75DYU}H5i&X{085Cs`s)%TB9747kKBwFZ)UtIVA2L4E!4X|4g<;2yG
zg!Q5)Vd%xTwC_-!`xDCX(WlZ@8*vMpuWmzQKg5R=Z3mefgnq|ettg_*BqHS@Tb4yc
z#MxY4>X4g6(=|)TtwF+`5{GN)i;BUo{|$-QDpAY8t-<~qF-9Vx>e%)iPU^5Zp1|3c
zG8floFov|HMF^S!I6g)M&?z6$qfHC=%AdbQj_k#;Rv@AqSUDlix{lJzTP26UcJl6q
z*b^Zkk1DIKD9xZz+cFb62G)04QMZ%`&j?UtV3?t&4k=RK)ig|v8HWWol;G(arf8>1
zcCWW{%t+1*kW1jm(LvDUV+jHvqQ&tw+}M({xEv11d_3LxW6gx_b`;#q9%*B6B95f)
zU0oBCSSe7bkzo1->i}dxo4>_KX|6zyn&ScrggUuFE`!SbiWF5O8X~}CfH#U8*B@eR
zY9L3vrmp=C4P{WTlO~MuI!{$sCesysKoQ7v)Bo5e@W#CY)1~;^4w8VZre^+?VHhgt
z8;vX=kXH6EZ64Ea0)eyo)7Mf>!YzHmwE~y(b9@+XjSVv5mMh>RB3Ir{d#H4;Zg+vH
zN`%VcZSKN6{P!`V7HLPt)i5*4`(|4|{iHP1?jPQ@!(EilHV|W;h?|5l=D<vIZs`;}
z7wJvlzPpMhtxzUJQmX-e7+wSCSnG_`kXkN@YJ6pZ{M#d=VI$Qex=Y*}K&jb3Vgub2
z4<1XkNwNWNOt<cyEXG;tuT#W`U?y$79Ir1t&Z~J@WJH9HD|bvv7@Rb1a8Z-GRn-t)
z&M&AU(m{QrY5=5&XncOW{GtEzayWkX{daHPyf?%3a=AO5M0Bj{^?F4D=7t6`!~j$V
z*4vaezut!-o=$hf?Q&U1zXtLSo8G_S58tWB;^ltAvYy^W4Hm0q+bkurWAmnF_iQn|
zERSe_)_X_B=1{8F))zuj+f;mUWdM$}M5w5UxXq541OSLZG19ZQ7ZL!lwH86ArRmL9
zNu9QA-eqo~s^HDNrLE9}$e*fSbSck}AYRl=#=v-Jn3+YjEzR4w(MM+Od8@qXqGLvl
zBx86a6vatb<r}B^Iv{_J`|#f(U%Aa==i1}_D-DDw`3SlY5ySsus$RkE4!axv+@y$3
zd;@Nw-oe3`_U09Om}n04$qzLS%<~-2&Z(-7E>Nqtp59@!e<_PQst3PNA*X5;+8V(L
zh?^3`7h`II2GknUVsK&Cxqtz{<#PG?%g^6Ee%Q`dtgbbbo$R|XL^W~m2O~+w%5S4@
zm<fx9PAb~S!5bEtgYq@S6HQsRfmC*9nG9bO7Y)B^s6zHRZO-2n_Zer)YyP7+l(>{q
zmj3CPDwWNj%@B-Oks{pAFx;N7{Uf>K%ckBmm;GoEQ;>KIHWr5kSU}B}0<%@47*DEN
zLLNi2D5llS0LxQQ@GoFQF_XT=f=D%|Klm!6C>A|7dt)%l8rUS+HyI?~C>CcH^!9I}
z7XXzyu%!sRf=M9~9UtBhwHRqYAjY;)Gx${IhIavVJ|JU7C3>h9Bm}sqpD{E>P?Lr&
z%dgt|LQDr^y05d!FC8m%<JjIA0^>oa!l6WAnb;JMO#z!X$WVE*%<P)J3^Uuod^Rw+
zS~EDU*JD4+<yoW$u6jFHe7r`fx1EADRk<}a5YbhH5lmrp3B<SO+#s{idQn0c9p8O;
zH-?>GE}+Ut1CWSQEADnrxVyXag2zoFWAvdiL;#o{mUr*oU$1`>Q8ZA5i>iG8VJxQ@
zGGRqLI$1W_$c>Wix`ANMP_c0~CcIzU9*qiyOhcrFr4So4G(*7Fr^TfIZz4Gt%GWQn
z@Js~0x64p>VynB^l$n{yjLi&W<oubLnbYX45^klEJ-g};2p3#b)setc+sZ@7STCUd
z`}5R&T4i@xAT*t#VBOabKz@A&21HFYZt+-zXfel~EYT2wv5DzTfZ6<R&k-eYxVzdo
zd*z6%2XorI%8=M@$D=(&Y6C~aQ?#H>`iL0I$I3AM@0DkOK#*uc+YRn?9$(jWlENQg
zY#ItS&BX@b7I=+T8>T&xze<6L#1@{jstTQoz6q#b$9so_)}_(I3=Ye3UV(_2s7tH^
zF4xQ2N6OUm!>0`WGS6NmL<C+Csc|DfBBCKx?N$t6Do8@8Z=yg1(dJ^2GU^6GE5=NG
zfQX<9$f}|tCnblTnz(ZYa0jA`NuPy;aGr6b)I7CZv1-|Yex`^ae+=UFPGQJRB4IVG
z^Zp4ZX2iCm@GUQ8(d4%BiH;e6;&jSyB(-UerK)69@_u#RdpR;TS#ONtY>cs96FcuH
zg^h)|K@A~hlQX~CHd*o%u`rQ1=lq(f+DP|2Y?R083!<Em&w{D#(*uNdI3DjFatj`a
zG0*6U5t;g(s<!D3(Zvwn`Ay)};Jw6CS_2YIr-_;4S+e4^-RKTT!5Bl2=dXe2#1Wh7
z1`0B{mL<ayeHiVR6;J_@3CrYCWKgVGOTZ}-gQ^C8TYEPgmVS5LvdD2gAEZC8*Kns2
zI_oh6ur>2b34UVdeZHAs2Q@PrndD;t3?QnE#HcUl>-vX3wY!rkeE9I``SItc$H&pf
z^?LPrXNlkp;COe}T6=i&=JQXVdtXIV#Cl&}&VT%;Km4(AqnOy^g-_${`$3D>Ip}iN
z5@$r=p|vw51q2Xtm>}iVDF|EH>a)f%Mr-UD3Zst=0B%NP&CyF9PvqrEl+nS&1%Zg7
zw8?8Pe&agJF_f`b+2C#|8>5HB0FWZx50Hp~Jd+OcN%fLLM8+5{gR1URL>e6sReIkp
zznBI@znI#kum|`Me47J9NRuMR*OZt+b;!us7rBSoF~|VWfW{awE7@L!f$YvBz)3Bo
zE{XEpqdSU3B<%;AErDR0HwG=XF2BqJ_u6)h0bVp^>~QIs${)s=CN>knVjsN4qHXE0
zjI3&b02AFVZ%t)mhPT73JQmwDE?Z7tvGjbLjavlXmJ$(ERgFw#LLy?ndfkSkDjvCT
zy{>Ip?(ZKC%K^_Xg_p9(4JQx0^0REcUN4tra?N1$j%uKQZ6Xg%8ltLd>#n9)=o@Sn
z9m_u&3BpL{J~WrWFgVzMvt^rVw%;29$%oTEUZp6frj0{VKQ|yzs-HB!4#rHJuCg^>
z6A`IY&{_GVDXa99$h>SEMC1D8G@)ey=A)z9WY3h08lBC})>NJOj@i9zR%LV&sSN>M
zo}LN7bLrAvyibBEV<pbpjBR!8d6}CE#<c!=uTw^{un<*(o6GfENrkT>mhEtQIGx@Q
zHO&bV<Vg&=={y0*O#I}V`y`^KyQLBkAak(R$B^E85rmRAS=g8W#KwTs=ge3zZa_kY
zR&u(M#bkoGWTFh#^Nbr;U=zEkzK&@z1H~z2IU^*th-=qP_!`)?m}J)al`hZg(^pX0
zJhF&Gv}KM<UhENW8#f#iFsf;SEo=;tAwI5gkp}t9Re`AY-v9CU|M21c+p%6Q&tH3A
zJr}EA2Xj+V2e(`=L+$e6)2GwvuC*t?s~Lz`7aeARB%qDR2s*U${kwkuR=kPh=rL>~
zpW8g{Dw*#_bC3T6A(m0a;(}vxMJ*FM{I}2-L$pmP&@mrS59)I+Jmm+Z<vOhIiIUT7
z%<NI{6SAiz+ZjghE@mz(FajQyrT6aRXvd=L#Z5Q^{rea&BNb!JNTOmJMV9NP^ojIv
zgc~BJ?v%ZDGX;dY>HU$t3E=dRk%~a(+swF$`JMOakPLww?(KsAYQCr9-lwItK1Knb
zv)D%mhiVSz5wWq`6P1X7(6DUHVLc%t6yV0w;JQ|c+veDE?mRK)YGs5K8|>NvWR65(
zW?$a;RNs%{;?D0{_H8^6e?Dc2kttgf8rs|Bya`>N;FF1H7AfY0ev9iE87gdL1*k6D
z1Ec`pkODe0jpVlwr|{POmoH?>nn;*Rh;o5;+fCZ^osgxH6_4BZ2uX-UQ&*NL+7_G+
zHA!|JPcGPRgWRVbgd4^uy_3$W<{c!`z`%Tahk64Dgwj}0WxDucK4CA2d1vl24U_U`
z72!wwRvR|O$+idaJCALe#QNXGarf7L73t0~z%)VO&1yNegE&3Rb)1zvTW_KUZ&Gh(
zV^5q|`QIFw^7<FoWNSVQ4d`_DW;xsq1*A-3oSJ2~+B;BT`$OGB205dga{XLJeK;%}
zWpQMVNzFEr;S&ocL|}?P!R11rMOcGPl1BAXPVE7guw4;2Q;nlyph^S@LF_(lDM>6i
z@#kFX9J$~707Nq|Yoe#ok2=<V5zXg~&{QiMBwY1A)$p)$3UPTbY|N8nRVBi1TmvOQ
z1}FdwhC_(xdO4pDP1fuA<?1|68D_vkfQUiS{S+|h>FN6N@~4-V=RU@I?W<Tf96$)5
zfQq2TFVOmj@AYtxNR8Qc%o(T&Wv%3<H@D324yRMuf0+Kw`u;KO(jIRRe*`p*cxW6$
zB9@Ee6&R-Io<kKY_Sgg(L?$q}F_SrZjF|(cl?|d>QKQU3@GChkGoSL?M!ECfr4oBu
zTfoFbyuL8M=4~6OS!Jh{1|i7~^&)b}-h!?$NjzN5N_zl3#kww6?JD9N?wb}f(&-z6
zra5QoVk0wB#Wfn7>K-8UP{krcaWX9Td7N1dI8BT>PAT<hj=28wD2W8;2xCig{TAG7
zCaNKrLcnBeZ~4Kni)Y3>k0|(aVf}<DeG9h}*rgptND)j^eu<kDifxMq2zXeIFBfQS
zS(ru#G$SN29en`k{oVbSmuKAhtak`Kh$zg^l`@f(fi#C0Hcc9K`~oC&NpoE}+0#dT
z16%gl3?T|*Qm$#{m7D9fCL$eekx=MKxVP9&NKULj@Uw3|W_9^)RG`KF4TrfiF7Y;{
zO=TO*=Fhe<xzQc2gwy)jzco+y+X{O?@Y^C-GzBh+0&e4cW&AB}3TBnD%2-*|OzDQ?
z8|F7H0Yia^X%0zFr%e7!sJ5$^Z{PvjvuyCKEZbYZ)AS1rfW++K?K@fy>RMMQ<<x|1
zfo<lbnY0i!f-hRM)EkM+%Ty1`=<bRSFCDmswkPJt86;VkF4h+kQ_(!lEx5li%Zlg-
zb310t4Mfx<OnnwS)7GZ>L99f=Fc}0{^1~B1-=bz!42ur#FPEp!I!0W+<X-l$=ZVXz
zG0CQx^$_MVjS^VY{QgBGK(fpe6aPD@ph5#vv#(zt*;ExoVGJLsdTcO;HNTsI>hqbI
zL_o#VXqa}_T_T_%87k8A;l6$NzT-iy_6b(hxQdpoY3PkC(GS=8OU&>`vne+{G{RH*
z1~D`<XzfsMj@B-Uh=3x1h?<Cup@@#(v%-^B8dCjL#u$DwdI3%e(D3Jsh)3^bAKL14
zHK!_0PxCY?vDh5z6awXbj388)wXEN9TF{nT#)pIcK$K-7H_@9o*{A4W7@=2yn>X5_
zn4lAD8U4o`V}L`dd=O{gr(itLG6>4Q8!7=`ol<Ry!uh*9BfJYIV$GW&C^@2)p`BNw
zh1)f>Y0+r<ZhjI9Au(DW_kRA02>L!eU57}U^4=?br>|9QQ~^pE&zy#A*zWtlHB7P~
zOK&&Y#-LF{5%YJ9@{UupA#zw2Zc8OKBYA-p+R=GMuV&&?5J0gaMjP%Uc$q1~kt4}!
zfCaVABC6Fi9A6O&xVP(gwzR{)DrzT}n!&=&`Xs<~C6}$KD@-A;dFpM2tc!Ky^4>)j
z)^@WDY_|*4ErWJ9-=6l$mF88rfT$9-+E??Iqg@&?rT!eJQa~q>Kkm4j`HaW2EpmQ(
z1RaQ5L$&qF8b;C^8Bx7wusOA?_!SnnkIl;G-8?x1XKbp%3n)vp;hb)PTu27cmgVlv
zTgeZ|vj{^-1hxgAXCs>%mQ<cjC3vjWfz0H5xnx*H@Z;tL=s?(8q11!Hgr=DT;nZ!+
zOjF8%+y=a<=WUY{Z2<<Z)^=h6RU19)T5`%7+>9`_QIri7OqO^D{ZK`)0|;K9tY3Z3
zV2J91Rv)pXh7yxVBT=H88ju+TNf!W748<Y<G*-qb(@-Ns#ccC@pwWj6QFZ0^w(5%U
zK~qzc(fd%nD82}EfD{10P`q-}?|)d24?<j_nyHtd@@U-*S7uu6%@}{D4V)gZU;}Fo
z_{<cjIb6_}g?@^uDf;n>j0ma%sb+E)fv@jGb&TPCn2AC*=`?985{t9_r9}i&*d23D
zL`3I_U=WX^@!ehujF@G0e|VT?tWwXY3e0+v=G5DqTW$A!CT3d27Qwc?CoR%pFfm{P
zMutkoqnUP~0~4q{93cUgRgRbm3=vdnQHL433#uw(q$al3U79*LBf^nIjO!-UQ*1FK
zA3T^@v?}rKZkP>G8Lt$qa97Pt)WE``F|%(WxH(W${o7GhCbXL5RRJ8@iTaFamsJ;%
zwCQLF6NMq*vMi_L$>7?kAzXd6-$x%~5D=-e>jER`zYW?xkjIRPj)%i~y{08G!&!V?
zM+xPq+(65q)GbhbH`GM9ow57US|k=L*_{<LD?Z0en{`8&-87(}GuS;tJD}3B{F|C`
zz1%@q`GruQZDB8W##5Wp>~ufi-J+RnZ#UV5CV+^omLt=Nvr$|z<J?Vew8!->a2AD>
zlXpOqv3mPozSo2yMmy<gsW_!f(=_6qAEav2ZzxXRR8yCac9)M?q^^lUJtYhpATFmn
zY>O%Z$N5uw*NF`hnlX5F_!jJJTMr?aVjg;1fb^DpVAb|3?BW@=KdT6IQ#RX_#YC8F
z1a|;VpIBW0;gW@$XB%GGAd4_U2#I`ye3vyRZ(ycuoz`c#p4asZW<6qBfDn3yibppb
zMLLin6H-DORFx_h!OW0i{0N3Xy1CU6fiwWJ1`1>7Rm{a68xYg)6g3^<qe3z5W*38%
zKnxLp3;;=yFUR}C_rLDTNvCwkZA-OXv^wXhY{MSht$toP;;a@o-YO(p$Ri@OnVH*=
zkg4(F|0t#qs2AeaRHRZcy>t+fWm!fav8mpoTy}JIA7mB7$a2FR^hY9RU3t?Pf|0y?
z*!htgE;-gi30QNBxCU*~!-=YeeU+F7fdiymN<#XeT6J>bKO<me|K+qHCrIupFx)3#
zls8egcZLW7RC;)&&<Ju71m0(80x#1BAXcKME$A$@`<#V*S$gV#oeS-fpZH&i5&bx?
zL*W}4u9HE<CSsy@<OFWxOT4%jG*oK1xMO@-9@R!(w$+)rIGlM=9c5|rjX1=B%i6Lm
zhsGB+901U-D~P@S`0m}CH-G&3GbNdshyt)^8*B>!-oANret9uh)8z<`vkF0_us$15
z=HuElmrPAHRUn7G+SK|nC>l^@Ca!V1|1a|zK0d|Np!o<VRC$p}gZo?^O8v|2P!!?T
z>Z&RLZtI^G|9*?)<-qwc%{I2}SScH0i4f*=y#1p>IUK6soeCb<C?YkKFkvD9D!rsD
zpL@SVmd2#OsxX-h&b9Jq<E=mnZoJ6zBYmR|%M~e>YT;&0#!QsKi}P<)OFJ`c$J6ot
z4Im+K4Q%}PBw~*<hg^yJrzC2Valc@YyFb4*uH1&SQ*QrQ6JT#o9nkI_IfQ$SCTOMI
z*se6k?XLVVH85kOo9Ike(Pvii=2+b@w76|~Q@TG0$S`1kgucg&=#NELyFOjdkAk+c
z38YfXWaI3DA_4;<SVLTxjzmr2u!Zz#tm*v+BrF))CI$y^zRd9O9n&Gw4I~hx095)h
zV@S!L=>WJYUd*oQeCEhUAIS9a7vuDH)w;rLTLOWGg&uYqfSapf+Q;w8*%H?HVWn!!
zJVZSC!&`t>8fMDSI%Yy3sSGkT5p9tU;VErus^)72jz}+ckCATrp4J+ebK#X{rVFuZ
zS6@X;wndDai->p~9SG4pq(WNbWG4iJmz)PgTbf=nwlcE_bFWaNaz95@H?6BPpk1d^
zGMk)h(H7I28W2-2P>C4Qw5k<bQR@@kt<w;qN+1SQ5E*ISrPOO%aNVtj2TtpxF$NNX
z1XMHrB=z;}e8AdVZd;vY!HEZ?trD;D4csa^2h5?nv76<x*P{r$Flrg@Q6ZHS@MNpZ
zzgSYyKJj!5wWW-$g@i~TQF9>gvMh~Ri3~wZ56j{1cs#U)5_F2UZEBJqk}9eZtH4=m
z+uY?OUpG)lg_6n%GsL^D5qXp`kuhrX9T<g?R51+Gfr{N^$s3$8(E0wir)@+Td6xnA
zP0VkEF3k>{(wt9JsjX%JoNYX{X_$eC^FS!3L2AI5@2QCz5*NGs7Qk6;knW0-y%0LW
z^|+ymdP;QOBEc{jeSLoXN(gS?ac^sdS#Q7F<ZhqbTxf8Me?r(@S~IVvp0^2$al<ge
z-Fj>9E%bjDwKs3y11;6YSZx(jgctW#Vh<$tK{29si_gU50h~tkb#c0J#U?Rr8qaD<
zl-#r+GUwYW0<bSTrpWqvB~kOR?Y5pwV*4Ep&rHe^lP2fDrSlH`lBlJmqxS35kK_60
z>o~8Zf~H~v#0+{6mH?ypL`Fk{hHzv%f*sKA1WtepMoH*g{rCupJRlOV)QE`01~@bz
z3PV8vC0;xNw`EfhIENWKJlybVb}<#S1%nEwfMYqf_a8?)7;tU$Jx(}|5SoMmuLSdE
zKGJAqKaSkFT>OzA8s4}lnpxxK$-IUHh|RMWe08TPL@`DuU(JB3>cWABM}po5fE|_t
z0*c$e8mk!rE{DY@2`Y+6-X%IiDv;+sXd;jM-1^AO&xyz<gY^457JxY%YYlY>VU2A<
z@#_yt_P&UmsG0yJnrg)E`o7vlh0Hus9BWgqBNCFKsG7>`8gy2i%Q`W&)85J&IQ|`T
zF7CPl%fMVenyqju*(<BJ1jP7yd@*|^{p%ln#3`%_eknUr$`D@NN!ykejF9anv9gqA
zxmDew`er>*);GBG$>u6IIv3q9-U2(2shKx~ziQcY5e3N95D-j!Jj=|2sA^A-U*Eld
zC^re97f+BQH3BpBtjQrifBDkKs1H1Z(<17T+(lxJgac=5dp8Uk?&9pv_JN@Z&x<WD
zZ1qj(HG(n}os-%YKCykR1|X_i<BK@kH*;%fWp>FWW|}dhO|dMPsAkZWlv!Gatgf)K
zRc<tyTlQe4`^=lvc?pv84tK;=YS)dEC(`3-A`+xY*MG5ybQv8~##l|2{DhtUV#T$n
z)$(?gPPg4Gp~6=Tto;>h`^16mKSdqcRXJ1H;gQ(K`*%zS3#lFF9hM;29gH1BWopf9
z#;_aC2VZorW1sfN@G6y|GAK7STp+_@RrjhMnl=%H6j8ngvrbJ@e4bW2-%SJ=rgTLx
z*{l7jGxHsRfDY|f8>3%W=@;nd_36iPegqqapl0IT34%mSERdlC7%*24XE4@&Fns`e
zt9TFC^2GPWOYAOS^W&8aQ_SCD6N3&Q?urPo8UT@Gatb0UpqdTC?h6>=!WRqDc=MJX
z-gMW55Qd4)p^#H)LZRQL8@1YWo<~>XH!=I$s^RwY;7Ia-5D^6f5zqQ=-UX)(T!W#L
zP(Uzrvu_zXTVu*Z2x_6<vjC=q`i7ajJR!n3ck**ADVD|Mm!3aEG5MEODzOo9m?h=y
zgyzLXECxly%R~!)mJzd=qK^mjkE`K6bK8PsObVIppI}vjF^+|at&~38(Fc1fRP+>K
zp7vA5BHR=+O5MH7;@QAnUKQbHYfMXc>!1|_Gv&tqMp+%48^HJ*5qKH6r-2SmTcq#2
zF@tw@$1V|wa9cKuLeQQE`jRe(7O@91BLimk|1r|+BaGR0JdTO;=UMeWX9%e8I%Ej5
z9a<y8<#4#JLZYYR@w-nS@BZoJBK}#Y?LbE}0}0IX@py~~%Z;1`X39XOUfphSE}<~B
zf;*HNB%u6gv7p}9G--3TEcI%vGZTpXC$~z7o%g2^9aWLfnND4tZLc=`)O2+^*+!hO
zEzEbmIbxz?6S6c<vWaq4@p=9ib^)trZ`g)hrMa7g5;|pYqD9PxO%QUW$+{bJ6f-dO
zg^Q?+^>RJGH0v@tnA<ezrf$oh&0Ysc+&tS5V~N>uOE>f9RBlEH<V|XN)q>yLBAelI
zynFZV6T}>t=7u}>WqA?C#@@}HBRCjV6zlEC)@UWS^wBbaTl{aEdapDnH9f+}u(dK<
zP9tS3LxjgX<Pn4_>MTqI)Eaj0#Pg5{GboekW<n!0u@aQ^eg(UZ^H*Chm*?m8a*?s>
z`ohp1sii*3&Zl*xXF|YCaj1|dK!SBMGiBAsv0kZt#CESnBJA<uHA36IZlCv4%^M9t
z0J<p<8j?plOROamVM+*MU3GwURSy$XFi<q6zMS~GAI5TuRd%R%uwE#?T1x4OG4;fW
zJx8|ZsT;5W03ZNKL_t&`lB5!yGe+GQSw+DRH14Er&x~NItwM+9bPF$gibH1m!!)$G
zDVVGV6gFXSGZ^3mzDXHWn}%545V7Cojvn`TrD=5LLo?O=1{yNlZKAh$`dD4`n4?ib
z6vN;KQ84-);IPr+VY7q6mPvhM6O6^;HfU6<&%w5ZJmg-I5H!`{)lm8yMXE|nAwTv(
zE~2=#!&k!lO4%zOMjEOm7R!uia+B`OlFU@eQ(}DXXT;2+NhFR)aH&L`DU=&`E4NsF
z#9(>K(E}0jB9{mqF5zEgBxxb+nb^sK2dfb6Ffc}{ptRP;dIfHXFhtJh7X)jKkIUh_
zuHKrOKz&t}lIqgm`}_N^U%#fkEpJ;-83993gp#|cr`G5Hi~PKu2+NVgQ<s)ijRvKB
z!x`3B6`qhe6w71hC)8*B;@tb7CtzY7D_bbyrstoe{W}Slf8w;oN#iR&3F`EX7S&7Y
zQm=Yw-;Yjx<UF&fEIyoxQTZ@>#bBBqMOD|6=z6&@f{DJ$teg_5cYy)*Pq*SGp9I`Q
zf6fZ$t$oCA2vg^_74cR?Q~x;}@0P<I80I@`nf8{!R3Q~2+1MbpOcjVoF)BIz#JI>e
zBC|YZTL4ZPqS*~$rW*<D6}h@J1TNK%-iGG6I!+;*=^mTD$Mi03rooh-OHFVLWUP<<
z`RD%pWxc#SKR@f}pvt5R`$KD`OxZH`aF)|YE?E-4Z8-m5{Um`qup=UXF_2B_&Ug?o
z);C@|4$-b6A!G~DmYQdB#f?L1qB=|kL88DgMDoj9@89#=?}U$lY&K<C`!%s;gZj@v
zCHUVhEGA-1X@JZ_fB_n_gw3<WXd!{~I=d~0W%Rzsd4!)b#|1RgiA~c*t?D<K3#7}}
zyS=3VZbS*06@cSvW7E)DPe4Zj*$tpI-bE}R8AgztX*gRV$Jh3<3(w0_U$?sQLsOIK
zwJU4JB3Vx9tZXh|D3II*V<OOv0VE=bo9I8F#A)lu1UlyuJ1Bbu1r)Kle~zf)p>UfP
zii%<=R&a{QjXH^$MJ%HYtu@Zs*%p8_v4U}qRFiESinA6J(?gX9vbkHSNL5pb9J}*a
zX%O)?J!7wA_wEkb5S2Sq^_G>ZrXJkN#HEWo@Ukp;e|IFJ%jK+>>p|&2?fds1zJLF=
zQS4APYcFT`&HJz*y7;sl6*libAchjbzdtEwUeN&}$lJCL(@a5$h;jDEI4IkObTBng
zLXN({XJY8YN}Z{RRkh4)>dp4%Jcq<Yq+;Kq4}L`-gW2?Hj%%Lpn47g|FlrK70$|nS
z#sR+fzTY4zb}k)AZ|gj=#$py~UT6wVrA0FY6j3zmmy6|;i1v9w5qPTVnRTzQYj`t%
zt~Ra6k$6kZq^TaIYU1Y$d-of@(zqGG@!>7D0}@x#nqxQPHJL((Fb5drX(Vcsgw5};
z9f~dbS}-?CIIJfH->GdZJx79<OH`P99`&HR`i@j(=GwxJegisvjCDHO1QwlrQ2A85
zkZYj9=-2b}=a;X4zJC2_y*#hiE2yfD#>mdMbuefASvpC!16@DMhSlj4VXwp&1XWRt
zxX@)1nOCJn`x{SGM>;y)^qWbzo*sY&+Y+<^Fw|KVU<Q8foRQnRPkMMu&@3bxP+UI%
zTT;y+Ahf5;lrd>Wk>{61Wk6CDQ(9U}5R54RBibna6SlstHchmaWkdRT0AC~mi;%15
zJ>xB6EaN{T(N57JF)^?&DOH4XZs6ERX70U5d!1UoA;LuIU<pqPVKXx(u85_nIpz@B
zr%QMWjq_X_0W%S$2peHA1PEuXsk2Fy{Lvv`^fiw}pY8g0BCj*t4Lup0oH+rYKuBSl
zBS0gM%>kk@`XQZ09%ts)fg6FQd<#%D=2n@+7|fh4>5w7{MzUnp@*U15X7si#9|hgm
zmITFruq_6hh(%>v^<}hHNpd1gMyD~MxqnILM5f%{X=eCr6VbBycw$F@_EaLq&j5@-
zh=Gob?RY$x8NdM4(Z_ln>y^e>)S5w$C~`ti<c)PlWK3VKSGO;x{UJYYoF-W@KY@+Z
z>e{==W^nH!Z!Jh9Do*EST;)iFMlqNN17zB$RgT2wpc*@P>Lzd1_T1);V;Vt-8LVhn
z6fg~}W8AtKw_vx*_S}x*j+ZpSv?n1nZu=3|+OpV2{>rsD7=#13-nG35OQDoIV3ZA(
z18!wKuh+Asnf06T@2|VM`h_>tk((=XzR0HwRp$op+sd;2M0z%QisAj+x2>@;nt9!y
z&aMoVLcjUE2&0tsZFK;pErL=yPQ?M;5v*cj0_HJgNJ*~V&tqJZ<0-<CyBwLs2onm%
zEAQNV<p@&~?HBJ~l3|hzfiN-QW#fFRsS1*cj+f`pk3as?`R5<6FJH&#@fSb<phG*f
zMyle3wY1uA3u(xThj+7z%?c%EFKU3QfI#>r^qD18h$4cC6N&5^FjH_WZM-ecl=eZC
z3rEyU6a+xjVp2q?2u5TNANa!$){Yh<N1AP2V3q7^v=JjV+1f_@#$rWKd}4JV8}!i)
zS_a08!@r%$5vdHrl!^VPTG}!dDNf$lao9CSb}-%fe(CmPHH%34)UEf<o`sMS+}?Y|
zwim4*F;Z&$QuLzQfzrFNYF4sghovc@dLohMHkO?W4G6@GMjBV*XW9L=ZPPdezQ^@?
zG3%@3C(P?EJ1|LKDO%bywp0`UWZUAiWs1TgX06tByMw1%o|y?rUBrj6e+Bax(<Cba
zXsi^lS{zE8n}N-<k!{Te8!_E8_2OG&M9gh>zL5D-&s-tcBK|Os$o#i_D55G9{Q-Ff
zh#xTO-e@miRk*MZCJj)**v7#|BmJ~AVf;XFj;vq&<KO+=AO7N(_k`b_PUq(*0_sY`
z1{tv7HnklF04&PH2gDJ_M*_|?T)*x+F$MGha5V%R8PSITyWrIMf>CqZRm#EUQLTDw
z5<pgG_rOL7uarv4=}{psZgfw$$*BZN?hjiOL42EJ`_7L-JChUF;5=`!Ii<WaW~xo?
z3<REsTNuQB45DXdNVvAyPyO7ar?J>JgK4TjKx5yA{$DSb3k3>TD`)0gG1#`>#ipnN
zHc@wp$?HRy@L{{#ck=AoYZBJKWFR&`UY7eeZw=W;Q}wAj%-ICenCD#rrCwxayuuvt
zF)6X<TEXHy$zKtF5N(+XYLb#PCpcPs+@Mq8rNK7LMf?_pIYD!iNQzdlgqRWMynafm
zP*pW?r<jU7efjC>r$0RZ{O9%MNyo_H3=+Z8nvcSwFNnx(clvC(aH$Onr>J>dqb7hV
z!@sa+GeS5a9b(*XE^yRzQEQlB!3>65V>5jdf}akCTL2v(ilik4gJA13q;5<fKH=Si
zX0Yi5>#c8d2BH`3e;WvS#K292-K@`IVla_0)Lp5L*F_K4H6T>8=3mR<u$bD-zn^}d
z3Sba5C1jY6fH^3!8sdC&G;ORAl-B!-NK)CB-j-vGpaC%%l<^|Psxk+JwEqb=HGldn
zt)^s12qq5903_t9Piy6gkaUR5|56dAAf4JK$lQQLesPbXFw>13-XyAJZ~`b#GZHBP
zfr+U9;6qfz=8qYXtWd7VJi$z+JOICW%}h!OmO>R@NSV7uasr}3u{NwE+Bmy00KZ@w
zUGF~ih=`nPx}iGr)C$(v43yT;l9(C+RmbLWEsYpWK|7ifDuONui|WDPFa}C*a5=WG
zWS9E^V_o^WfHF0dL%+Y`!{7hu*zm79e8A%iN?+O-ZP36IjdiHVFf*XRc(;xPsVfNJ
zYIs#JUPPQ%jtpet*Dt9B*As{k2y`Hz#CjTU_>ML3!r(f&hG3`(L1doCR#Fva^|U5B
zKi>u1WyWpWtzd(s*J@T*AsKEA<aFTV;a&xJBs4k)+a=lIm51caVuAjHmNJ32CICe#
zuWg2Glr0#ioZv!X!?gLU*4#&qB1QzJqpw#mRUKvExw&X_k^y@k>Xwv@xhGBr)4xE@
zf>MUqOa!{&KhOBE*&pw}WI5hFy#3@K;Z7`;%ETQ_eG+5WNc2WoJ+;?X{DUNr&WX!u
zGIR$4jHw7FpFR3~L~q9O$vmGciq~|A6gkr__=}<>)`|0vgeVr&xAl5``f~pAV}E(l
z(II>$hBy&2!=>cE`=&HI91h3h5fLw!%M5Pxc2G=QDCN>nB<x5lpaLo&hx<W2igZiZ
zHS1$YL?>Zj`!H|cEb0tMRK-L?3gb8gP_O?V-n9>(gck;Y&;@VglYF9VA7we`vg>OD
z+Z>mN(~3w%Flm$w`^Ztm_HevY6%U|HfJ1<qGoU7Fz{V{`i*6lGA*KKSjhS29fV4w!
zS*)2{yKg|bwPiWzq<RR_Q+4!SJ0Wf6GdFr;)aI6GLn1d<uwTNZ$%^>q2=nobESd;D
zaS4fxm>Q(ilY$I9W#U4_*kM3TeUgkd$%yTmkET`G$J*XuQl73zs^atpf9Iq3MFRtF
zJaqsR#k5C<dIBgGWl0HW3e!^yYeb2Fd`{wJVp?g4{QXj><%Dsl*c2i7Wm_6_{F*w9
z!a7wAQ<j!FWX^|A)i}42X2xb@*i07GHpbEVqU)VW)AcC*ByxhmmvbAPMkf%26+szn
zJ)eK0Z;8QF;RpzT|L-4+@oyA5ypaajpdSPbMi(HuTrNXZ5W49dKj^B@bl+8MF`+kW
z?<;qU=oT}=jwWEMjH?boRDdhl1$B_F3|;&IMAFLpgj)DP36c>^LCrWdrQQsAoR^nf
zyTn<o;B>b(Y;){_cp8FRz2O_IiF7w6ovNOh?FbI(wd2>2)YlbShMl@tWoI(j)G?7*
zT-M#${W68Jl`an)Gj8H{JOmWLgN-Fkvy5l}vabDden#`}3g%#m>EsGO?cVi(w=q3C
zHpJ}}Ug_hx_ode>-nmzv527hWicSx2AQn=#lfP^rbRc%7AY=`-i$|+DX1e1`?WKsE
zv#a>OZDDI*lQkJOs%zZPVrCQ&Zk&IynulfKt}V!a_9G}a;+y|0Wd7NTB>x#wNa2I3
zetCNAPhaHvqADf-tUpN=#u(U06Pm=x^>uvr>EpW(@2}VE=bwIld3h<RZ(K$UhB72p
z-r+(*5@-CGRtlh7Lj3KMJfPJZEyvv(D1=^Lqfj<66<-6#UMH$zA;PyG@${B5oOs@j
z`)`k1E;7t3e4jkOLQcktVduHWQsAeWl|$>JNgXz`W-`3zn}9pPEDUXw&Q?3~b3cha
z8jUvMysB}nO>kRUEL<rt@#)}GBaG?IkTGO9@P(N~tJ(GNST|}Gz!OEqTM8GaN4}fS
zi5xx{X$|f?LiJlb-zDZ&7ZMRwI%DW@)EcsyxLIODJ~1U`k-Yp$*mh*TR&fv;AOQnQ
zAk9ppMItT^_5@h>vq`F`*!rG8)gvM*VndBLd6U|1wID?LgCR{}JUKrBL-lA5!b+Ki
zN^?X2blRoM+INZNX>F8Buy9@SfoK6GQv^Jr9kk!uxYL(6db#gsetEnHTgFO58o+{}
zeU-kFhgtcs%L7-t5@ChcX!os>E?_5e<G3NxvK*F&rLW^kNYwo1(;;J3;Coz%T2oUI
z^LbQ6qY<v71Jf#FsEFvQa=u*FJALl!^SYj8JooF>RG3zP6-)pGO$jA9ZeU)usJK2w
z)Y7S+79!gOy_k`!szQtgk_M>lN=wy`hs?$eY9QMN6i`jb5o~BTsqg9c&z+Des0kQB
zfwi{lf0i#L-8XML+L&l5(a{?#V1^_4=v8x+UNkb-l#QUhl0|x;*t%Z8*X`*6tR`$;
zUDpb8>KeKDIdcM3O~1;3G_`}4CYajMyc#m^mCt)cE2`PUoA=A%v^V-@ctGm;!_Jo#
z4&HpB(JnKZ`qCmZyghuj^lLjxOeKHZ&_(iZh|FYaV#X=Im}Jsh^X-(tl<b8RxiB^L
zE)(t~{IJ1l%;QSUY?!Vu&;5EaRi-W7W>SKgDXL@^>lTq>s`~i&=qG<=`ORdQ=)j4F
zO7LMZSVy)UJPHW{%JI7iL_AQ8rUCpCk8qA?%vF;Tzey|+1@OwJ_aA?0?QSO-$Y%+Q
z;5@1H5zQB}b6RfJf*w}3VG!N98r%ZQB|}p2#ncEH2>?V!L;q2D@k^^JcPBxPG5l>A
zG9WyQ!$dg_`)K*9uMLNfS9eZPMglS<lqgCO5ou|o4-YgZL}C^LQEA*Pv#r^?2Sx%?
z(#nMr6%p~e$4@tZtd_PQ;^^Hs_G-~CN3;mwMD=uSk!&$FW?+HqB8(v(#GYxJxy8GU
zhKP+h3eof=H=;4bzyKAI(8vQ85Zxg?Wx6RKaXPyZQYB%PbCMETQ}M~8PGh$$AaK6Z
z<A6m@lT4<t;wJr{ULPQ<Uc_+PlM%6{+xBL5r|P#afC&<N25nP0+PKr}$=3JK->v8O
zqrWj}<J!h*=O-K2#%wZ7jU#CQ&`hNFF_J{6eeIt0Eh6fnewjAtgGd>jnUBYVt$lq|
zUupt~Q*GGgre+H@02r!`2>=9;kcml5fe*xFy2O2BxZba#(uW|?x%X@DPyPC&<JshK
z$cySzU!NPjjK1m+166PV8bO990tE0VveNA)E?QNPc0*3DDtx6_XP<BV-BaZ0+m2P*
zv^o@P$OynO%!$Kf9Lmk{>pLq>`-<tAc@!}p!_>U{(c@>R>=4R17P>*77Q%hLFydkW
zzFy7*V%7=NZqk{yMs|CiXZQauy-Fk9>lP8ZPh#*N@@9!+H^{AT<rt=Pg6|&QIAcC`
zEIv`lOJ-L_@1Z5PjwbIYol!}dtpnZzm7bY4FevO~0k;8^#^C!SDC;Ks?J;jI6O3y6
zIU>|Gmdqi&33N__r>88t#zOmgk$xHLCI5&RVrN()6A|)4OlZSwR2yIht?{~Ee)@4$
zg+9j4&}=1TC_%Q*oj}ci$v?1duaO37^O{%<oDmfDtQw#g)KBHVkD7_;Fhybm@;|K8
z!XJNV?>-FR%^MH9?Cr7^Ow;=*`)<Na+Lqq1HPD`n<VqMHLr$#9Z7Ah3*ychj6Nwe3
zh=%)RR0GAx;^n+rDn1a2T6l<iz9YCSOYdEV_>o7cNfGrFGil5!!_*E;PA2H0eMn?e
zjKL|Eals4%BOt2!z75Sl2YOfI93?Zgacb?&acL}Lp~vS-M;=+)1n$FB#-Py1A|olP
zjuA5IG1}5x9gYUxY$><~Vh|Am+vtd~4orBFvR4}@4OxbmFZ}^pTabfTBH|B*kJ!}N
z^axtxECV2H0EP<Q%{%3D^cBD`?yVkl6*E(9t-<uJh;%P|J$($b?DT21<=T&kR6RdK
zGYDA-Q=5}{W$Clk;Niva(n9L1K!BjaBqZxwT|bV?C%C@vFK^fLaycIXmZgbmzn;~G
z6H28IPajfIue#RWy>62smwxrW+)`a)p2ruHIFK>G6mgs{t8XPduDJ3qeI&z;FW2q|
z1hs~Uy$@pM##<|6)><PpRe>>1ZMi!!5xzeih6><&0XWN0fS2p~c)fhNT%Kip8vS|n
zr=ib8Z{>0tXE-d~A{m4r<OX#^OpX^c&=^~lHo_{kMPm_P27lMMP8roD7{&CQaEMK0
zYfM9<TmE>M@3TpU6KO<fIZ}fl|D^%f>e;AEai(G8D;4oK!-z6w)PpsyrbA7#TvS3X
z&(&^eX?jZ<+R_Mj)rRfjp<wUu!TBoM=lsx)`SEH2Y>3Cx>F(hzQS;cojJLpPO;bm%
zmNqA&mm$g4&aBN@F%_xRt!ggNAh(s{mh_G{EA71pENC9iIGyI|TTwy@+p>~=m{^FY
zZyne*Fo0ODDbDmOfOWl^3|Y_Vt<YM9ru2=Mc03;MPsc^aWnCW~un|T_XT++GF~WY5
znOdbak&1K-Rv;L`02>HPaNK;W2%0{NK12<~1c`k%?XhlFuse*1RRxI5n&_#>5an?H
z_WNH7w8X0<bThqqM2r*R$fjq0ZhOFtV+N^Ozc?ky<=#$eo{1n3AytkXs*0+%^W)FC
z2L(#x&`V!qgB((103tWJ$ml9^IGx7mNNnb$Yw!V!XK{>??l#I56oQPgAe^sfknYZF
zFm20mRaf;lRaqJjRRZYO3&=3F#>A~T=|bb;XI0U@qG@9iRU4}v`QhUOus(i$`T0q-
z-LJk6MzUD87@?^Sh$9J@NJe;Nnd$0o84)7vqx;5}m{1e}xFI2muf~ani0bg2-H@Ro
zK4NmvCUY|&1>)9_xUYkd8WV!{amfT<%GR6+s1J3G^wO5>oQ96>GCJm_DoEse4pl|N
zWmznYOz9K$)uS0Os{t(yHRP{m%E)~TBJ5@@Xy7Iy!wdi$HLqxx8xo3&s5ETow_t=d
zArUYD=~!g_gz)C_@`J4JLEd6-I<T*XaCdiSru}?XlRn0JxsK6Q1_H<sRS{9w6?1DZ
z&(B087KMW7DBp;`O)2RF0uUQ!#)!m?MnD<O5vq=D5g}%c#3FJVyVv9@QRERL!qp?F
z8nYg8S(=Ybnb1@a;ay_@c#F#~?hee~UDkEg@pL&q_VKf!>I<EJ?4;M_w9+z+)VKj#
z)Z*K*4axW@<A;jmioU=cngE$?`ei=kMA&u&2%EEL+X&^AKW&v}KoTSuc01n<W-PXu
z<>6e0B~AKUj^c`5;#5~m!L9GJQ)^ZY#GLgx`g*;*sC1R#L&3TXHi0qLymTHHZ~XYs
zicBup-A)>DPX|=Q+i7#DJ*uhrwgVV}m&5UNpQ9*?*+wz5HW`jZs|PwIPx!ExA}`qh
zkU}<Jdz@*@duy|v;;>3xT3DD(D7QCIZO&S=Npu#wLX8jA_L%`VG3UuO^O?I?#tab|
z>&uhsNTlM%BnKkmwzP-)yLTTxet$Y1#`XE>>z~f&pKM&!lnI%bn<t{ODo`@1cT<pn
zZK39~sffc=!2vQG>A)u&sv_!XELagc7BORvh9Jkjs+j_YAtzuWYPjg#!|CmZ5u12~
zSv;7O#2JxRGY^{+*tF<pkX&(>?4>AbDyIVIYl<qOrL2m9O8bBQ&;J7vm)3e;*X!kY
zTGn-KZ5hKyyU><HWcR2)c>_QR(IY`rl$pF&8>1_zf+8~l61CpDiZpIc$siDvaXG($
z!5CvX989$>3k7Zhk!bWD5m#Uhff3i<D_*S~mOh4ehunB!)-gt3Psio&790I?Ue)km
zw5&3mr-7Mpv@{0rBi<{%u&t`vvMdf3$ruG|Ov}>1Y;<ouH!PPk=W3|yLL27hn`u+w
z)&P;1)R2goS;d%Ha&c9ygt~gm0Dv{w79M;=&bAZ3@|{=Uc>pdbAm)a|mF`AND&iJc
zLqKK)^pcZZjg>|b4Hs_?z0D<**xJG2-oWe#E%HE0aAmD7#9(?<eHiiy?62Q{_(=Fb
zz-SGS+HwV1Fa7!DdGzb~{IXsz*O#-bU3G}a5COB{NE0G8>mtrnhoIPqCKDWjDUD2=
zx2&J7USA8h#>6pEFdza_1ySogr|}!lq$Dtu!jud#l*>A}abpe;gc%dI)|Q3Y_a`{+
z8{9*Ce|V#SD?o?Qzy6QQ%a`-<{_AqQ9PTf8?0i}gZCS#M7&auZ3TH9xs^Lh3s89nE
z2nI=F$SGeDJR*IhtOwH&Onp2MOdT~x%-a-@Q2%9Xmk_|2dOm0}GeIV>jdls?L)$nT
z4gh19H-n<8>tFm>s2ewO%r?HUX&>Wq1#k+779*lm${|gHZB%;GZKQ`nXP#O)Dex8B
zBn<*M4~O?7Yxwq77yu04z5B>~jG8ts9q*U3C4JR%6QO3HQv`wq!qE3zQwT?@RwIo*
z@6>`HQWC_iP)TYN)f#6G=p4&4*B{fIInB_R(s$S47)&~FL$o;}-RlUK&&j&#7%7mU
z&}|cPJMeOUy#M&!uYU8x55GJf4$ogdBU)p4dHSjM^B4jLWF#V7m^!EksEE1RdS@Gh
z#OR|TDwu#Ps(=U_+G7ajQdaZJb%T5uf#&V&4j&)VD!_=Xdxii4%Cfxq?gw@EsaJOC
zy-YOP#H5{)q>~aD%IplriY4?UmnL+<PV94G8uPeaY9{d;BDSCY@Bhp9KS=cE;X%2b
zA0I~_qT&NGLcdMfSGFlxioV;zwdr<hAp|ucVoxr2!PMkUih+`<GSVPimcuZ+TrPmP
zEQ@%VT$W!jjQklb@4CB;LT#$zhKDB#MYKQnNj{FZg0hbClX3QPZJzOHOd~505SfUH
z)KtbmtI$JFVZ!QI{8sfLlbFYtz%;-wKG|-Z=6TV%FpF{DKK&4Kf&o4>_6z}+l?B-_
z{OTEvhv)%XDQESpCt_w9QuL#oPiKUjpH_rsNXSk`BxJ84(2`FncGudSwcq~m>;LrI
zfBUaKd|X7ZuY?HFMfCCM@p?J0*Gs=%M!&A>rT3w|t4i-(&D3;^A*O~Psg<a=MZCdE
zEkpESg2asG@(LkekosS~Z$TQ3m@VIh@{1tlh@MiB;PWN(ovVou3K+CTh3p2^Lu=gF
z502w;Ar!OGT3eRZ8XtVRB~PP2t!MlMbmrx{+`k+jz8GGX<CT`divS=upk~xGyu=Y`
zmYLBC%qcm83|1<@TP`3oiJ=b1uwtjaUt+Zp-1!JV%skW#wle^75p;@G0To4tfi<Ft
zn9Gww&3qCN{xpaXQcoAHBQug^4Jw>HyC)BfM3u3w=j-(uw5v+pzA()(3zK&<RW2#9
zcZ8}^1LT`4d<!O0-7VVwg>CPA@6Iv6ZoRpC`<A%HzB6j5;LFY@7$p)QMQsid2;)~t
zpPU_6=;?VppkriAOW{Ilx)JTa)~<Lu%5USJv)0+yBDIh76d9c0klFaUlpVhrmjXJ5
zjd4An#lN6r@G=wef!gW)_rLz-Z~oQ)^zZ)q;o;5KpTAr#XKV+gWjUNK>D*-i03ZNK
zL_t&lMC58A=I~fmaXqj_?AY9_PyRAQ!7xzzr|j4YMbA|+5plCIGI^w~m|7YO{Wl#M
zoGCe5@;Y|_+TGp5hYv;^RY_1StC>~|#&8Vnao4Qtlyst@i@Z@EsN?_%Equ?x7)X5<
zZ(3_WRc!>_U-?FjX{^_?^cO<+Mn+yuT5Z7z!~UePvqy==iml<(5(QCEY2G-pAxPri
z<L|*C>RXm(BEqC9W31=$`(Z@ksR0UX)48}T8IQ|}xm~Z?`*6!4Vyc;nS{`>Q6v%{P
z2^9j-i10HtP!oZSv!!4WhU?XBtpv`p(8zSlML4KnQ2<lczm#dg{UxRCw9r(W85sq&
z+TF$ms6r6=N=Zcz`ab|RUs0fUak@Dj3_wSPo?t4&YM&!h4w`#A6eO1H7)8B5h+6*3
z5>6vC@QIG^`Scf`-u>?1{M*0!^<TU>-5neWV%D$cr{^!vPfvZln2zh^-22-5sxsEz
z$5?$zFJ?oBm`SEDXG%CIf;ezEi}zSu1Pv`?a#cjkGc#D-wHJjd<KQX$8gl*N82Sig
ziS|L`zv}>n@X`#e9XKJ<xO(ly1c&QIbsUy<Ji;=}<YJ(AcX!NuU|hgXI^LPs80YIx
zkE^c0kA{x`kJO%-IxQ<L!cB?8a^jLOm!!HM-#n@-To!(ihXWQ6BD4t`b4FYNGlM5>
z0H`TtKA~r;xD|7Fbx*;3_gW?O5CDi`sf7v65(dte$TGwwd$Y{7O{G@3<Y8h{r(VSa
zT>%jqp^nGCKB=sU;F!1Ll+GNOHNAVYKIG#_H=AI%1!cp;gVYQy{3av;W-<A^b8T%o
z9PSDWA43W)+*n17W;0-^MfcvT*2z*>Z``yweq4kQ1Ps(c>SlnEPfTSwRRard?xya+
zZw(2`$B1>j)Ns{6O&ei?x_!_BxEa<%GUCjOghZRF$dG=yuGh267g{^`cSN)t@87-o
z@ZG=ro4@_{fBPTr?oK~{c{GBj=clKa=iWOJAC5-^7V$-v6~wTT!8Ueh`0HarFQ!Ut
zgr=COloZf9L{s1XDj+kkmeK&6Kx4lhTq+Y;#XfKz+1W(MH-at8-KX#Ia6~4cCT1Wb
zN-T*D4sIK81>l(#vsuDS!O)!su5-E(6I4cZ)^?I1@e!UrzXGkQsxiiwFF%LUS1nQj
z>RdMjRo6kKkONi0i|Epr%)<68*sVI+Nf=0oD5H<qNRRX=#s~#APqfvL%J)?UrUL7_
zI#<hqX#pdjoPd~P_()1By51|S-NcU#VO~)SrePP|ytFmZef1`6xXR3w^nnN6V5%mQ
zP(|C<>duN)l;th#QeUuSd-y7pO)E97;`vn7Fh79`VMm*SDEwcp*j+^<1U}&5VEpUD
zyZ`+^|Cir>`sMqFhtpv>EbYrrKT7Y{%gf92*XQT2eZ8K~&tQ7JUdHG{#^}9EHvmyF
zgkdJ8-s}dF#@91|!0a8X`gv!XyhAiKVkBY_k(}$I%djo*?_`PyO#YB$ag**4FO!S(
z!_1VgI|tx1#KS=s^59ib6lj3F0-?38hpvs82$!YVRhV5&2S|80G-i84^zL{t!`1Bh
zdi{ES`h2<mxb`nYUYMRDi<H5$iqVIbN{DI*M1~n+<12aQBDLjf4{d3Vsq|n(3xsen
zI%3=rmynYMe4QKDff7@+$SK}I!iMAoL<IDx@F>^vw<T(^gGD4l8DR_LFx<P?Q7IGP
zGLh4aus{77#>@2HQJuq?%VMtqWRqx!%8U;Cpx;+cVwktQH(`a-?X}ZU&)2i4Je*GV
z_os|XjF5^smC~j&8hu_G$FAaJmT@P7e?wqpF^VWpLIfM2tBQaC5Cbko1`*m7c&b{E
zr{@@T&kWz|x-Hi?n*g2yo|OSY78?Z&wL%!SO(oY2^`VoleZ9QM=*(#5iP5ku_jI`b
z#c%%NZ-4in|MK7b)!p6Q%lYN&*Dt^SyZ`Uc|NMuiFQ2tPA6ehrFNbA0E{B)PMTZR0
z^X05vD~~0^Ps&P{2xS+BhH76E3JhwXq9QO{w8k{Ti;QZh6Bb2Ohna%84;~0LYauw^
zA0Iy8a<qKWLRn^T!@%2NZPbuyw!Ja)>2&H{MCbHt7vAfve=Ntd2PLJ=ZAYJNm03}b
zZ;8KB`Di5$@yFCX#eSgfqyd;NG^?wt61#PK(R>1Fib$8sb!%D>rf4T?txW-Qp))H>
z?Yge>2bQ5=FbA<#CW=nC^5%@ZnK0Cd?-o`EDdpc~K;BpdX5d`97ocYE<+#5Y9Bt8Q
z5i?LFy}>rv+hBqFT(<K6)kRJvp+F?S{jLbzrYy4=f78zgBqDETKr}qU@}BSh_Fw<i
z|N1w-`_=nTiy;%)=ub~iKmYX8^?JTuUS3|lj&Z$SUar^6b-lXCsH^k7B6?Ka*-oMV
zHUNu2YykHd5c6TN#_e=iuNMS0RTJdKZ$Eq>;-7x}QN}<O?Sd+Czq;Ej`V7CDm12dZ
z87#Ot+&zxNnQnwc>gpPoStjGDcE@T=ga&BJh)t15m)7nOUal81B{Xh)IJEO+EK56{
zj;B*Iggewm%YB27hxS|0&reS;YCm1qpVsxU_ea&MsWJ~Uk-)%N2ub41<wlYPs7Ic;
zKEc017jd}G3^@S~5ZM4VJMoKx(hMHqT?DN)t7;#d5=So63rjFz){W5-XV6cXe!+Ye
zJ*lDyp;TUB=0ko_efs)j{p_oHKkbQb0v2P?y1!O62nLuqHka8<;^^1D-V`qB<N?!f
z+Ks$8p1ni<+TGtBtzY`f&&Ws1Voput#hMh+iBc&WA2Rb8lGKzKHgqe~vu5C~cLl4;
zl}rFY1sINCC#1#UAs7H>GY2dWFeK+qS^()ry0bDK${in>Jnrv@1P&n{2LpxDZKGis
zC<*sD!6u{k>&xZkQRIqbMATYq%V{~?zy0vTfB4<+{`GJFa%t_yKmYk3|M4Gw|KEQ9
z$N&Bh&ySzw@<=dN?dxj4`o+iA`0bnf-bY`Ds)?=ul3cR@`{0JT4o!`y2%uYKOU>lY
z8vzu90q!{j%)C}N*AlaWd7&?69%1A3A^<dQhj$+jZ$64LFoSAD!jG{<9u-2;4J_HV
z&NF{iT@DA;*gHEcftknXzTMg|XJr$O?G1X(IVaPMF`9}p#g7`dg^C+0nAiYRM};MB
z7o^T!$Ja<zU$X_37IX%;VwIA<g28XCY}`~l8MileC*cN@y`l5iq}R78-wh{nkmi_r
z|29VB>wmo&HZ<W5@P?+gw?Js%|FGl|w-!TYnwL*I;yh4ht%plKVe$s}%@d?%fiNX3
z&Fav=8rVLj+XGJg$1JCQoG(^Um4HeoSbq8D)BpCL{+Ivq*Z*-DcI3v)+SkvYKY#uD
z`FwtUe)@8~Jg@z7?U(cA9Fas|!*rPV6X0rnLo^~FvP^#wL<JmXia0>=$n@@R`S=dr
zK79W9$LsmruU8sye>(o~KmYa@zxu_W|LcGK{Lg;|5gJNE7ByBNC08W+n%_eWQ6)|m
z%aooN<N_f{UQq19nJ^hUN7HRVigD<JRKu-GHi(GC9?w@sScn?p@qnvzMC2}4v8R{y
za9A1>f~bzuLS}UL;k}vtYVBXI*Dve(`EvQOuRo9eV%oum`u05>`rr%NA%P@^5Xm9H
zf?(E>2wg8ju@jmo7Eo&se`=UpW8Zy?XOjRD;Q<S92F7m8AF%;;0d~*?{m-XumYeSg
zrDdfSlu&LK04(ojS9p1RmeKtj%tA<u(mXY(Rr{tu*O8WqVl8Ldw_b!PLvnL%!p+8X
zPtN+rJ4J{fdVTx}pT8<N5-pIz#lns89L0_%(!D}WM(To%-2O&AMC^0R=8Fv%k(lUM
z!9-06QTc#;0BT@t7{a2=xAd(O8K8lWsR{E6V?qI~$Ydk(`8rXPP;WRQmy*SyIWO^g
zopab*XCb0#ALq;Y>*y~!)=qXjolbXmtsOu8@T=ea_Ah_=t6%lLe);_Q?|=XMzyJMz
z`|}_FuwEYf`e-^thYRoi@xTA+!`p{<ZyyeagR(A5;~{`JVhTn8Mva~RYsN9#C}Avk
zPJOKH3}Be8GQ<FwHd0+oX5;(T48D*FtL(4!;N|0|U)pjqY>>;B;(_7h<I24|vj5J6
zvnSX9#`ymkd$T7?lI*<iEbb9;Gqb9CnZW=<kQ4wd7z!XTAOVorC=i6vD9J>bUi3ff
zO_G^RCdovTK>((^s<JZkF0r_ubM$cBJ^bFx9%^33x-GjZ^JawmS-$W0`Ifn;e-J?=
z*Pt5e^X{rZ-8=-W(jazLxrhY+qk}J9RKP4USv!pl0LUco<)oEN*Rqd<Mu)-OrQU4s
zb-39syn@0h89P?jvSllab!6*&sqP-TUf6Wgf2>-yPTEgxv}+w*_QuqB1NrPC0=3Iq
zW@dK7)-@RAc7asorqm4YuX9ZM|EfaWph2&Q39p%=JG-L`ueostR$e!D06e(*e6G@4
zwN46dS7>PM%YcC&`0yLw{`6n};h+50PkuUKP)p3XE|*W=|NZmRmt}rg*7ND~ysUH1
zIcd%!PKp-~-zGyM3uw#&U<ixKW?9v;s;DK=WRm<m3n2{1BTWy(_%M8Tfm717DIrXG
z`$@$2UrisQem{XI=q7|YBpD5da;_KvatPx%8YqIH2#A`9q)Y~=ifW7$J=TzjtU|OI
zeEr~CGAffPCA&fqm6RAMnH&t51OmdcC?OJJ3`~o}5CSJAFiFfdO~Wt*4g>)2nIER%
zM<VmO9VLIBm&bK|T$YRItd;<hDc1hg`<SxGx6Y1JP0v04Nv|mr*lmJ*1CGUo?|-tH
zW~Md+DrhdMEwidJVH;XIA;7RnU=<BWm98E&w7S<X1R7_f8<?_Y>9vPFZV#{IKhOcS
zpg2pw^vZE$H;m=JCce%`dULFeZ-yy#nZ!c6&QITaxPYmNny5Hpsm9dNJ_JToDb&Wg
zHAVw+*Hn3lnWXsI{YjM&f@|J+$A)-AN{H;YK1VLYVN-W<A~7JD64ZO$85rKBSmAsi
zGXWAHLs=_e$r43$X}WnP2i9Px8d>6NXej(+oX_X^@@3sFYGO%;r~vTr{^9Fyzxw9e
zZ;r>~wk)5&|MY+U@Bhd7^t_&*BwsXd?g8=K$xF6nefs?6`R*{?-`|(GTmm+eB6sk{
zhO9*-)Z<vSI-&^GvnthF+X9*NEW={t74XL207NZmiM?!>5fT|OJ-nm)2eGO=EsMgd
zu#OUNRPeF&&C+7>?4Q~_k-H;uHz?d~2fT-E(T!>y5d#q!0%OtNQe#`!nF|4`QL7GI
z#!+)9q3%eod)Pf~uF=u3R<%u1zvH}p%pXGN(oYdUk;r>N^JMS0ZnYa8EIXm1T%uPE
zYyYyfY5q-2O8bD?ythh*--H}#H~M#q@)ca>W;W2e-u8!Aa=m{UH)&PJCcPaF?5%Sh
zTDYm#&98W^4(&CfO>OA!{M8?8XodX)4B-wAzx}KK=)d{%fAiyq_fbKXRdRkhKR<o`
z^m6>N%%^odA5TwPT2(cRCKCZOLS>KoV&NbNLYC2vm-8%n%^sZK=Btv}?$-qyh#IP-
zv~4MFMj1n5VY3bKKYaK7=e#_NEFom2HDzPqO`>X$CT*ukb{|JI%#w`qx-Gh8-IAru
z0*p8i2M!?w$OdMCdEh{dhY(0KC@>+Zp<CB{*k@&FMo^;88LTd)G<(knNQ9)y#GI7?
znUGPYG1_KXg)uQ(43U{84&y{$F?~Bur?h^#tdGn3oYLpCox~P|Or55wyODZ0)P4bw
zM_-hKY=63{T?EWjq#6i2m;_X$lp6Z)y*_DN(}HV@T&5#b0a~;hoLc2((!Kvw)THRq
zmRh(yJGfD+rBd}K3hAwEqNbFrjm1q~;SEvCO#6TH8kp7J+<lxdf=1#)<dKa)kVwn|
zsbW!AYMG=-S*d6?fPh8Q=BqJ4Dt0-k<}yR9F^{FVPiSURl%P8}y4b|Qh-lTq_^V=F
z2c`K`rUIMVBH?P2RQf{ZSaxtwmJUr^U0c3lG=svBcl|*0^tdghWnMI|4pGQC=afWp
z&g;w5W6Jvc<@vk6|HX1X&Zno8PO8aNpwJ}^0I~rpCXsnNJ-(bnU?(2dh<CqetNp(V
z9#Zp|L-Re6_(InpYr+4PSx8;Gm6SUqQQdM@M5*(SLhVON%pZRI6B<UT@WMSS44M<Y
z8kJQIy8^RIXlOS=Ta1=xxTY|1i6_}vn>7ZM;97pvE~5ZtrI0J81k4N=s$(3pBlpa(
zv5N~3yZqKUP+9j{rHZJQO5VC)5X3HSWq$(+d`(?bGkx4m2<WhqvX%Bvr4P5dGT<W`
zz%)(MIIioOwzdCBZ`}HwspDz`R6daqT-4p)vWV<I<D2bc9nFQdDeANB`ry(xhsj;~
zRmq_9{&;U{_gS(doDsUf8e&F(Y^F{G?DAf2&a%eq>FOLrPmDq$q=DiGdiVRk`Ln<J
z!+-hh-8)NLTGwU1JU>01j-OAbr<c>0^Z9vQS5;BdBqCrLOqejT23pNlmD9GJ^J;;N
za7k+gmQ(4us0%f(k@b-%iO8~MQ}rTO6;$Uf)4U}mMK%OLQa8L3W;0b4HAGXifhehL
z0A`SoGi3KWFd6}@WM~<4**2jO%Z6a%Mgb7F#9{$y<PeA^j!ZCc@B@@x3*&owQ<OrU
zA|&tjQIR2|fP3}=!KR7k6wro%OvW_F$kTKf#sFq_W1M1mKTN-p(#yJiUgnR>{3Q7(
zx|rq4t!=64eO@|Mb+YE{j0i$>ft54$iX@~e$q|6LB+(Ug{SHg2e+f~0u84Nrd=X7m
zk^?n-L6u&#l+6AXY+hBhqK`DN>*<koYKa!q)4weHY>IY4${Uw-d(QpF>bEdAmZuvv
z*3I<{07Il{;^>$-Q^p#7?CaIi#;{9?)zzRTC6ly_?-U71cf++41+-@3F||QosVZ7#
zwUY}&4PSHn4YVbS2?8k?ft#tNF4EfxR=qn#iJqtcn89*!8~P?)OtcUM%1uSZZ)u2Z
z5Qw9QY0g$sQ%xi-%W^&)zdU|kmQ@8`o=?Y@=lSv?d6t|2s?w{JN3E$XiofJTS}^wk
zQprg#f#~h$WLI+|8X6Y;6arAzlwEwhGgitEO6636EK)qdbw1(kjTqqJFx@?<so7TS
z23}nwl}Uz`I;!j!u;2T3?zL*gv1{>xH{2eGcf;}Cvl*^xXlTCE;95}667U1fL*t#B
z)wD&eaV8=WpUgm&z>q&=4Uta7NHyV9D@oX0FIF*WbyQ18h#Z+kav|r}EsiTqYFLW>
z5&$eCD&jbf(=>ru+O}@1bfsHvv%C5eUA><ngczgit9!Ay75DIdVfUd_*O`6TkJN5)
z^Bpqx`X+YvkYDyC@YrLiN)23Sv_{Cx>{01n>qu)~nA<3)8*$%a?RFf20Rkx+qA}1&
z<G1nazx?Na^3VSBpA81O&g(p1PUq(@kLTs(bozWcJ)JM7ZC%%t6ivV~s1Ryk7>5n*
zxUDbiy!yt1JPE;FbySz^*yXr&M?PXoqFE?qB#%}iLj{DClej0pn4x{`+umEZ&w!e(
zl7Y|w#ZU>gf;bFN0YQ<72uW)grO(W>scxHY8AQGPWuh_0F@#COfHZQ5iqR(_hOEE{
zEav-X=Y{y7)`KC@-=>U&5Qx`|fsheLrA-rDmcuk04kMCH15Po#ABP_w#$VqKpV#H%
zvOZ^d7FiKDge>aOv+XtX7l+B44F&b_BzrWeQD5g7JA$V`fr|9A;vf)9j!y;gqxyKh
zKSX?>i6!5#f8!cS091`yBp2~M9}+NA$zn!(R`Cwb#n*4>jSO|4+*|>8^)&^v2X5RF
zF0X}?9o@I5Lz}6NV;}-1(rWAQ^Ut9qQsXPyV8WHj<?_R(H8G&3Gs32=X!x>vGi$38
zYN!P@x|!?wyIj|rBGZ5#u#4@=LUga<ozhIO=UJ7n+BZ^Mn&0wQAO;TZVfOYfsfb9&
zOho`oDb44zs^+AZ^JQI5X}jdS)l3HH*b2>SX}xN0@7mnD*(Myt;O2pL;2pounLK<V
zn>xIg>L0)V9&6vMV5%mLgxk$0mcTgj^Ydd^x6}YVOun0EVwJMiDc(a4E}w8wCPJvD
zGdBWIUAWxHb+reu?_`fxwD7%p0NZj306-z&_4d$9-RA!GXkU+?@R7BPFjRz{%7)0q
z(l#MP96Z2>8wl5PxZGb=G^^y3Pa1}y!RSE+DmS^iFxbubH{=?u+Fx>`q}jTz=kvME
zpId}-k8HisQr)zqzI3>$Vu-LwFmH~D8&6)7s`UviuTcXx|83Q~?g6W9?A8?^WlrLe
zculh1Tv*g4Sl%=N*YopI&3G$H0E9f^^d9d1<iGrbKmEObb{}YYdRflrr!S8$FOSFL
zmwA18dU?Fe7g0+oXHYd0MhihAuL#Gq9Jh6mEH0sSVmo%YH{9!hK0)2f=5=1C7D`&@
zm2O8+gOuAqqJ+PfoJVU#D99eDY7KyeMC!EV-a`q^dC#btMZidr{mst+Y_{cm79m;*
zj0{H#BZq-`2ys9hi6-VK%AWS<P!!j5d0?x7>zk8hMk1j=xSG(C$AQBb<h+`!Qw-iK
zOff#(z5gm7etem~tn0^R{*vKYWZ^JN!gk_Y3n{`zx$<W<guu*h?77MLxq8N`4neK{
zqOAH-fo>j1E~zfXEn26+yK<uGt*X+6su$4b8z!O^omt*gYtqs_?(i0@v3oB1#oKHB
z^UZ5@^R##QWAHlR;HpIiL(^%9ftnJjRjUpFfX0XFi;o89qTa+)`Z*yiJ&YF+R6wOz
zr^j#Xm`a({gn4xa0G+|KuGUI_>6fT9Eo#BGl$NDEIlbq>w~WqzQ^(XvRy8ChidI6T
z_4=p;Fw1F0)0|cFhL8}%^^e-%5?G)A?m4{nc3%YvRmC_q0idWTfnZQ0U(&kXKbyMz
z$|@7P?aq96>si0*`LG3Uihz*8j*pM|>BXpYHI9<63m0S#2!QN6$uNvl7$y!wh$Dr8
z;|LglIPh4i)?M*e_4WlygIbH)p14x>m%V)k>ylPAgb*6rN<^#Qly$F7imae!99CqM
zfj0e5mL{;SDe-Qt*vt0<q%A(LE6%%$sz=)U9YcVfq^K2!%%S-9h@1}x9px4Q^Ooi<
zyK9?TbV0rIZlXZFM@%X8tJ!8xe6@wOH|JXYHvani#hc6Z2KxHu-m8Ug`}a@_mvREL
z=d&Z09Qy0*ST8U7#luaN&>fwg@9mebl2NqyH9!32AN<Lm{LatsLs*V4kKccPIzAnb
zpO2@{FQ=!=<uY%xie@!I*g%yD#wdZmY|B$xRyW)u_yi8ArPoo>yH~A)KOw&FZ(>3U
z4E6HRM(RK`#4HY9LRAp|)th0Lljsk&Ddd#H5M3@r)eYjRO6v0OJg%|5!zIUi&u%UI
zB~PIe1T~%Wf~hDbM&|oCKE&ZbVMJtrU=|Ds2(+XY3K*y$0wHBk1SO+jfMA!L7ZCy-
z5H6UQY??wG1|mKL81Cu)G=4P=kMr`F^5Z6tN((>+aL18<7TU^;`upu=9k^Tbs-cGf
zjeOyz4f1jIuvR-qA?hF@adj>tTxp$(_OVQuJLW)RIn{+^${FycD=J^&%%E-!q_1_6
z(4jYa8OIMHIDY6~zQ$YLj<V50pmB)Jo5x(pdL??WEzs0OZBlPyH~)CRifOs$P^%G$
ze63pt?bR=*738yLCShlh-ZxoP*F;bqNKpT=^P512`QAk~wrBc57md{Rcg%!@rVXW5
zK0Wa`RB<W>SI{94l4KDPk2^(BW;S8dyoc9&3tK6e|Iz<-DbCg%byOZBL{XRj*ed}L
zmLWimNY^?5AS$k91Qhe_w3Pt+rbtCJvjmMU;{azeHD*Q*NIZ^*I8I?Y@OYTsy^rGq
z^T;%SmFa?;pwz^R%Yw*+Ca>Pbu+46Mi&+H>?J4&+3HDjdPD|h4QA8kOVlovGDqV|E
z2qmJY>mbYfWhMWiQ*2$0VV!$d9PA~hvf#z(`rbeQXEKzh4U16SpD_P582~b4-9`0o
zXm>Su(oq}Ax4CqGM|vyi_u0OyxK0Z%ogAQ4PH{6=G^KH)ku_j?Uj#H;)azjI?rfsM
zf>CWTc2J=;y`XG=IXf(ScW&-Kh=Up{z=Z}HzX|XE?H~R5AN}_4qR9O8e13VFFE39|
zzj%51bUeK*>%69I%SpflP?;<andxHkcs?zrHD2Hv><3gD!GaF0zC}}2O)0f$Ora;K
znmTH(S}+W<ii(Q=>>b@)K}rA$H04BT{|fcMS~7h>?d(93x=N&~hwP0oB~Zi(Cyqd?
zZLLrJv)Kl=phhDSyAN?B9+B?i$YQMSSpwue?#k3qG>MQ?g%KDjBQoH?2n4+7nwG#c
z#4s@p%wJE_PjdQrx_q4R)0)mki(!J|1d?);?=_s;8H4Kz%OfQ2Mx|ozMXRZ$?yJ3)
z2$c7`l+l3P=0@sUvEGdC0dCkf9es*`4_{T$w*}GyeQQW<pXs{~w5?z38g|z0e(wER
zGWoil?f=c2&V}oUA@EW@2FCVcsdrPAeFapETMb3sR)Priod+T&D}84pclyqx1wfa>
z*C3Q_C)9h<2i7In#`lvMgn$S^+iTK(7K0`fDp-GK+Tc||w$sGwx72+ymU4n7G{2tG
zsW>&q(0~A#ImU<xl5>`vbM|=~GZ~XWL2X?{A;W&=+)V!8+{f1@hmf!)$9dF^W|eHd
zAMU^p+8Alz_|~i{us2R>fS?&H6<E1H`PA-<KI;PjxF$!b7)nN>d0Q?oNX$G$nx^U9
zhw1*^;qJpYzC((Rf>p@=%XfSbb0{})AqiJkaoz0fL(TdGP21(X001BWNkl<ZhUmdK
zD$J#C-SN}77r9+#BnAp1*_qQ=`IfM!M%25ietnbw0OE}<mjHpOrNN6xEue4fg+40F
zch7N%6{%yA%UY1BAObx2$<=M{<K;rrcKw01i|V?0Ekm3Zz;N{w-J~>^B}%_%;$~#>
zJ}<^-X4|$pQR`~O<#a9P7NuN29Bv$+YSZeZWS%(K9l^bDy3&Q9uPTTt#H_CKtfX0E
z)Zr_7_*eh*5C7<A|1_wkd7hu2A3uNpa{T!G{PA>po|k1w>n1sY36V1D7#D;u>*cIj
zkboHKkPYkP3=LgW?S)qbjZr^ZYymQ^|FSHVod$#`mF|;LR#DhjeFdzpg}G5ynY{-K
zyCh>oHb^Dqpk(ZI+;y{dB^MxC6*_^zb+jv%pg<%u5OW6zY<XeC2sq~Tz+prlm?Kg&
zAV*l6y86lIgaiZ%jG6(_Y{{?)Es}<a%ou1L1Kv+z8sgnJ+#!53gdffM)0#hT`B~u%
zrik23kX>8f2l4jHsoLJ|X1O}b!j2KRvj|%1aBY>Yf)mO~-IcAcBLC`KT2w^)#NW;V
z3^!sfyH-Wnwafo1$odCv-)p$d4=NvTH_ZT^*E$Vh970LYs8ntrmh{n(RkOBhS#bAz
zSO*~}0zEC}{wrUyZ_01-aqG|s+c(C*RF?^0(5E7nKptxC@)cjNx1!!~_inZft$;-z
zTp<CXNI?txD7)kiGJ8v=B9c=!55*$Cm~W;F?smQLV*HXmxNTMZ9@mofSU|o~x9EEw
zCZKcufJ&mLm^QUh;p+h^SVGT7GQ5hG#<!xN%R}V7q0esJnw#bgmdpC`<v5Jf{loqH
z9~~Y(#PK172{B-W6_*@CpC5ENSG}m>`X9|qL*QUwLc6V{ZIY~{!H^bB77)@9V_-Jp
zoKniUW`I!1fa`j}*7AyID{yuPQ6&x$kwO8jDTsEFDQK;SD622?i-&G3eTpS}5uy6G
zoqACY9kRWNE~<npE!E8ne6yjn{q9GrWak>8Rx|I5_oJO$HSB`f0DNe?TPZ}S-tk&q
za=0!{un+ZyeZJ?Pf!++X+sP{;H>(#9`Kg+7gN|@H;_wdd|K)H0{=fLy?+pg)`MeyD
zpFe+hK7Dz9`u=!&S(atZ+orOiWdaGLLp*^V^R|*n!<bhhwRgg*b(mJDdWEw_NN{CW
zzGC7-7Qf{fDH~RNU;XhB2vO^mVwHSUGfaK+q&2Rjt$@ie_w+%3SFq)x74U$TRHfQ0
zP*wi!nSIp*+E$lX5^qQlM0J++Xj=ptC>$tE7zUs~E@A=(BcH;9CCwSY3<4n;q+|&>
z2ok~+&_-f3T9?QiAbfj>Uyb(TZTmcL-(8l^8NYzcqFVeUWmJVV8$ivV3|eldul<sU
zuBN`$84l|&wepkNe_Ls+R+7eV39N<K-FBfOno@3y$7=mF+k*zJSs8y2Syc(KHBA0B
zsLozPl3#bgH*(0UVJ3p99;PuM1q3xLlrfhr7%DXCF!pK3ou;ft7!+d9j?%1T2Iyp-
zKGUj3?H{NQ>c+c-D){HGYJNPFy)X2hmOiu?c92tVXLFnUD;5Io-ye!-&e`q7Ws&C^
zol-G~<fN)18C09I$Oj=RD4J~_gTcP$zXgKAYnp<H1*QVYG*kdp6>H1n5;U@pX3<4(
zkUe3(&fkl`(lmi>R#rg`*VxLBD;wq;+0vaG(B;F5wk*rGrQ^$KJRClJbNBA+@$Ow5
z?$JgBau^MH7$qS9hQPYVxKVR{Sj#j52*jkSOaTlykWc*6wuwk!CT3OLwylkAfe45Q
zDF75Kh$;~fv-8<%iH!i3v$P0^TLN>dmAqxiW%fu#zUvHctMZQOss@xgugE!90xckv
zje4_xb)=^ne^l4N?(9uz6aW1JAae^HZI?%VlE`YN*i}hhSqZ96^DQf)wgEGRl#-dn
z7`(x)LS+!k<sxy*R;SHwsT$p&%i5{}3oMo1RHO7=NL%{2d+OS#pa8_e@50?5{MOI@
z;^%*KHw0Pc=a1ig`SfvJPhXzCdpSMN%RFyuB3nT+0*r$U@o`&cGz-iS#I}y6OKs}W
zxkxG*w2mBnE$S4va%8lmH#KM-s(V$D)Qi9RB_`S(rfeX)lf}U2W>(TvplVYq4yMdU
z4S^H{j12dFt7)9d@1;+z!~GO%VixBv?~ZjsFcbg-Tk?A06o5wJiQ>RK5Cy}C7}X(1
zJ}@8^1%p74ww0L)DH$i#r>A)edKl>bZn(Rj?m`#>-^cLvfS=d&-LifHd6v8pdcJ}B
zGUduaY_E4tePkLDh_)XYn>Z9Z7;9_odgb%3f841x*o|iE{REI*f@M`d0ap=Zbx2q`
zhOTqnp>-{v>X&q}uif@H6X~lz>J^91l`zaWj?vS}sN6&QkeZ4rg$gbZLG6k_(7HUI
zX_ZE}8%<%q7=|mJd@G=P)soBN%5TG}>ZRNIm&bD7wqF~opl%(oDroJhf~Y+=?WQj@
zBnC6bUbx|^_0FwzD^!e}RMh_<sU90<CPEa*DbXH9gHFwSeN4UnefcS^3dSI2<Zfvz
z{95cFrBG1W1OQUW8}89G023o3MH3%XS2#TEQNPwVIkk}5-~ZbM_TEqdsN_x4x~=Eq
zeD~$>{=>u9KaSJ8akxhuz#!*Tw&v(NcjzC$y1i+?4GxTi1O`BXL*TMUFjEe$#Sjyt
zfJD<_@@vm8o|+#L0)+Bcnl%xJf2c7Oo<0KlAaM_7LKKl<oYX9f5VC>BeH~a*e?$bZ
zbE$(@5>`4+^kI(W+=)<Xsd23w*;DwK7*GKM8(UrNG-;2SWl7$e`!9m`C)H}6NkRFy
zF`rf1p_j`}@$~=7(PjP(cy1sHi7JvdJhlJd-ZNH)SlL__tEDyf)YW0v32+>5)`yGj
zvD;Pl3_t<G9ZWy}&7b|%AO7iGpmaJNA3q<zd^w$;o{yi7FOSQ%E;+51Hw6h~V_cX%
z&*zH?b0l<6R6D?_IZCW!tQRtH(fu)?p^tctsvVrlG(r_cvDR4S2&?&}DuNW~N_^pv
zW}phlw|#q368EGA6C!f8+|<?>*lx~lC(o$0%LIR5R;C5hh=inA!U3D@LCq)xK+0fd
zI_D)AMdT5ALcSYfRA2)%vZ8LX3`PoKLSzCkuX#j98*CGiEu}og5CV@#!!*4ghHqm0
zv~J(6%VX9P*u}I3YarC%j%y`+e+eO?f?Ln*I#O5Fl*_UJT24_L2vsZ)zIpvMjgm*&
z8i17Iwz+E%@bw*O&<FU`h>n{M7!iKRQvc?1@y#RtHMFO7L__2$MlN6AH-U2{v2#z^
z-c5qRwf(6?AiH|NBM`L7&Rr<u$={{_@2AaubE3A7VYDYM)$Gn51-}<ib)Hc|8_i1a
z)|GjhifPYLDpigPRWRWMM{NgqEtNtDAp}2Xr2fy(96#1X#Mhiegcz8}PrUje(+vda
zW)0uZ_SO9P0X5AA&Xac`I20d>Pb|>0MnpBKxJjhSdWzaWz!J2e0|#OEv5no#d|xTL
zpjjK7xIKW^>*``$UrxugoYQid-hK7ew?CN<U#qb@NZk+QUe=m|)lX%h6`kR$aTHaI
z<c*A~AlNuf+m;++Hw{rE#}Jr9)+}JEI*mgNVOiH|xhXg6JTH;m1l&e?COP{}Sd*=y
z>xu3k9)@vTF7vvsIj5Yn2U+{eo>KOywa3{SI3t@xl$a1P#^?seZQWX|8wa*dBbsw|
z0(M)+VzIr8YVcZk8b?A>69ZV+HH(bq4-~7J<Xl2VYOh5^t^-ssVj5!fp_8g^DWPlH
zOPUS4k#`8OG>fWc7C0b!)_swEh=>7F*n^Y3@_^=^t+RdXxm-Jd-g?sY{*;(MPo$1_
zBLk#J!w0(m`EUI8zxks-`{w>3olnmnKOUbRpPoM+Pmkx*%bN0{vVyK;5`vB6!tmYs
zw4$nE)&x2E-l$PQuXm505TFHGYv!>(u;<IQsaQFK7zteEtOg9t(_y}KN|~qz^MMxS
zg&#5dT+`ip<m%1+>?ZVagP8zuH+u4KhAKf8sESLSXamj8w9BLG$k7~J;drdl!MII!
z55#a|AYu|trZc92`2zWlVg!l|(JT;QmF<8Til&@G2*kt7rkvA=uq-mhZHRbx7>5v}
z*|%eS7x){-kL&h*mPer%)dkdQ5M>+w?{i&j89x57Y1^RqZm;y2*37x)qCdRS6YM?0
z^?L8hx8q|{Eeqfp%iTk-IvWSpGV9H7g?`S|E3mFNMD}{7`r3N*CY-Ka`5{mUp{STk
zx=snoYxS;`Km{rt3_;6orrLfWRzZmsd75F3bAUc2&T3xF?G&8=#Po)tTW)LDI%qFm
zYpjiy1cOyQb2Am&>!hnnr3On>E)__1A`lS}1`gE0!2LMgvrX$XSaLE#U<VsR2wWW{
zS;P@Wx4Zeba+(oAO%%wCd?RVn0$8nWMD`n0%Enb;*KHO4L^hM|q7^XD1=E^n@g_^W
zc8>iXpsSPolX6kJDI%!Y<@w8UIcZM!@7KGBZ)3P~ECCp>x4^rh&Kl379+D9L$N%o<
z9HIfNX$#{xOd}x9^PINqt4dTw!fBj{%MfPWHc*-F4msy}p1pVUTPh_{1yD;{8ipZ+
zU|=E%&_t7)SIc3WV2Hyw4$HFSEg_irZox|@Rnbfi*hhzQ7*>ganGM4*#6eX~r&BJG
z6rQW*5x<sFlALqSOb7-s24ZIB^JP^95lJaA;51D`jP0yn*EQwr=~pG1O*M(+>{)dr
zdliEs>YHX~tQ*+2u0BapwKxoZbYv0FP|GPJp*vQ~6In*<no@$gco5N)65xPHBDv&T
zg1__TcYgt*s%0tL`qubDNsZb0IQ{rA03B%j?VtX}fBolw^&t#w`uO;Hxg5VdeLS5X
zkEf^0vMhO9Kvz&0A`HVq@ZIIKlt5Rj@ZhUSPG`1mNg0*2<?+nmKtw8AF)BLl_GqGL
z4KpvYEFr9uFGX#EWmw3>zQ^zOkyN7UZJ#2wI9a`_Uh8+L&7ZpGE4NMI-Z0gH%AUz;
z?$FR)g<fCS9VcGXNj-ycRS~eoWI!5_C*lz>DzF0Tp3r5cIjxj6dM~D|Nfl5up)L1^
zaTsC*`DUCRV*HWVcPV|h=0}kW=pq?BK*%#-DjTBV=gJnToUjc|Q&a-}6Yd5)uvhN(
zH{~<X5(8U^o~W+dre?6i-uY$(UEB4WeM-GiswdFAdi!A^&ugzyFMfF|iJ||w6amI6
z=QL1LY+gsK#<^Vk!m`Y8qpf0r6BqtTr!2r7&%O_b;AZ%_C%^Ssxx0{w(9vd4HKTwx
zxp`NLik+j4Z?u?K1fI&YXkt=NjYw&0@~dJUVfOY{L~_o}6J)051k(11nTh0`$M2eB
zqJAUR>v>=2?6&#5fvI7!wSWt;q3tqufj2<bf}k&SO(0+Q3Ye7CHIHq!<}}(rq@pnD
zaw<zTkG9|QeSBiQK&>TX3V@=qslI&rZe3Q%^6>s!3KMZCNUwf!(>xhvj*Flge)qrl
zikUg^^UINkc=vEGBJ;)Oc?Kf{%qcO_bf6G}!<@G*s1kx8k;=GjYs#XcM7*x1s-PCa
zK!FWxnP&>Lt_w4ZWOt4e@-lB`ndtJ(6t*NOZ9^PF7!6FaAmOsi9{P)gE(=>q%)$Sh
zal{Z{OX;37bD;{0c&kl5C&?)Rz%-T1mxxqlzRMzza*i>KalAVm9F5D&TiViwYs%Y}
zMI^=;IH+n)NmM8VGgK#%0IEUG5@U=pW|8SIc^Ym?X<HK_9q#UjAtKVUuFJeE%NCeD
zwyeZGGOg>jZkyHOE_<m6prVK@ie@S*%e?e~R!Fod952h$^X0N=8Mf{x5mmn*m&d4i
z{D21-|MAzq_V54IUw<<mw&UsJ_uoH1e*g0F`F#0uJbk$=%be39X=Bj9FibPr-yNSf
zDgjm60`zKG-E*y*Cfvuoz4^9{>u;=FR+Ed+5Jb#E;a4%$<VsuDbsEY-#51E>OH{7<
zrUV9LA~Cn&VzX>@sn1w)$^mcfr-=RP^m<~(P<>x}ENBR!t9u;sj`})PwB~pkXcmJ!
zBOu_!aR8bOAL1B^LaA<0okc^C)mB5<@)&qkWRpmc^E!o<2*x2E!Z0x$h~6PRseMY@
zN70!eo7J#3as_SQ5qf!8mC;r_S9Rpy8{1r1f&0SN-hz{te!FfT{mC#jE4W(N4S`o?
z3bUqtzU_pZ;8Wvb8sYgy%X33^+X)YLWruqsYVG>FXM}fmcU&q$FmUES!5)%R_P8}2
zrkwtJbG+}TunTqH9YK4iewAKxl}6mHACb^Gl%@buGhe+-vOO`rM95ZKnby)9JBMfK
z_X;o_OWsS>h?S5DB2p{*O`jgALW~qc^kcJG-8APbxKI^!_mz<96{y6zoV^<+fA5o|
z!Yc(NR8b{01E~@61SKbhI>3>C_*%yLOvsf70?AaaixuC48z>QgQ56i*j#t@p=dAx3
zOMJRsD{TCkEESikg00K8{bF5a$;-R1e+6|4VJy{IF(J6Wqw#YL3{@=rZ~yE6^7Xf0
zOP0qkUzT;5rcuqdWnJbahRBgbgpls;4$k6w_x`=AJU>6J%l7Ww1AwKJpO4RsIE<4D
zjN@>Bf1hSGfT!o@<MBn+#&Hla1PXzO_;Oj@u@hsMrbEthK3`Ogm}B5!2mo-IFHc{d
z5HY24ZEtBi9HwcU)YLzcW!^+}7@`^EoS8!z=hiBC8izGvAPgZ6W6UXCE*ByWkyQ}+
zE^jjuJ-mCbnogIeZA&7soX<JuGz`IEerCfkL{nASQX&8%Ml&>p1UX}j@jw~^$#TkR
zi6Dd&HANkmI0WG^Pm=(^Fbpw-lv9imkhhpGmrXsMmRNnbNfhF+uIX;N3o*XD9Onzi
z$N-c@;t-H11AjRU{}00U@g$-J+V)!MP$Gu?S`Gt_|KQ!P{P%zH*I$o^<>}?+)907Z
zACKoR&!@-Z<z-3REP2tq5oAIeh864=r{@)_nXrO8Yh`)mLh1C|CBGSq{uxT#4)ov!
zZ_KL6bjSRe$J}BreW#dM9mNMG%?PcmzA7!TkX#r6QEk5x>Q=N7LC{JEu;(iq{-C1g
z2eJW-LtrAA=h~P1lI<#%r&IdcZf7z8fQ#gdSpYnP+)=m>!vN%&bASlq6^|%j$~hoK
zqyb4qv*rN}AP)c`hWEqpFvg#l{Uq_HmH&QTU&KzT8TRw55K;ViMcbo$p?;Qnl`God
zN&AeH;LSu3L~ap*odSqdQqF?NR>D87CVp5+XE)leo#Y370c1DenpZ|rZ07qO?r~Et
z+-zIh7@Wz5K!mRJ#A=+ge)(KCve3v=4K;J)Ex{(_>I#%@<O}<{q*jwxbwjn~H8uqS
zW|0zILToMZ+#eKeZgVm-ZV2%Pz^wft`2+%itMAcm5m-r<9$Hxz3RI-pegT&}hMd~w
zzRY>AX!-pLK&yt;UjI6J(^}6Y?<c}yTBuUk8$!Hc^<t>pylPSnGIi|;nh6xI<;~Q|
zuG%Yr)^cc?%dx7A`b7yA;+6q15^^V*D?2^_BZE92KY#Z(DQ_RX{V9jo%*O6n^I-2H
zN0;(3hV`<3&Y!n!Gr%d1WI^&epXW&Qa2U;O6(K;#mNjY43vq~HAP&<g+oq~H$-{65
z2sz0Rhd{wZ!62n%3MRw=mS70O;c(!<%d(CU5P2A*4}k*5`@4sAUAA@GL`_w4PANqm
zM3ulo3}7(c4|jJ{3~^p&G1%6Wk}!vy{OKoE$XPr-ga`<M8Dj{hYATu#&Bhq1&=7H(
zm-#Hy;gAo9$U$?GZ4*&;PPZxm<RpPPATX$zqRP4^GgtOF0Kvv_JPdKY<oS5qQetKf
zA+5`LIj5Y!iM@!XmgbYsS96RavaV^}RuRP#`B|jeZeAJ)(1yI8^15hp_ZyH#Wa1bO
zk%z#6aeX6>YH#YW>do2so8iO1|F8b-Z~fY@%lWdLj>o6RWj)XH^Ew}wv@IeV=td@l
zbbq**eRnx7P%1ssPXC3sITJTg=PiKJ&6Hk@*TccC^DvwWf`L%YNG$UnXQ{QpEhIwq
z5KP#+PPCd+vu8h76ikIs0{K3uyedTqV|58YT0qYBre>$^9kE?e{#PuQOZ~_4(YO8m
zO(^$1{pxmr{_hi*XkJYg&;x}Lc_0o*gywKS1y71rK}xDgaX=nHlE{>F7;}sv#_(Yn
z?jn7A7=JvCAD8XpCQoZRnQmU;yCD!!$q3L)nHei{vEd`Si%n|~`7Ow$cfQr>aUX8o
z?Rl>VI&c%I+0tAZnEu8U10C7;X3qQyB-h3gx3h;IvM2Qu+%Y-`xqL*9-|<J+z=>Um
zuXJs7T>`x&$-f!j5HWG{;j~Gw?qgBxvyI!E)go{@Rk&i+QG1bjg~0M79-+6lT7eLD
z^a8*#Ix-XyBHBmLSa>OtrQnhr(?b}zNQy)xOIFc3?<r2mH;bG8=ehx;{Loaq>CFi(
zIM~1HCwE{qG?BjV<503>(OTTM!e29b+LtL5zx!2KJk+Rk7t&nS-d#kxfw}V^TP~+M
z(_TFWx_OgJ?NAukvRqz1{{lI@Lms9Ffa0vNt9At&buld4a-PrQFfxafMYdH{#%Y{}
zVNF>?a+Vlr$!WdJ%ep=tU%vk8tB3o0=5W4T)@>ui7-QOU%7SbGamxaT)7?GA@qAg=
zc^&|fblo;tBqx~;_o}+3oKqIHaU22RGB2Jtpb!zz2q>~;2<XgG@rPs0n;4j4&c=bq
zapVw8bzWCB0|HZE2IhdE94N%#Yl50PO<9yHonu+kmUUfIVA|5=yBA<nF*G2gVZgv)
z97hCm1Pq$xB)S=e5O^>(Fgl$tlJmA@M0~h^2u$bmS#s7a1y%>>h;;y9HY5;n#R?m+
zrz`-KqcG=8%$NB@3+I%G3;|U$5{cxI2Q)MFXx$z#xwl_T+y!9aK*M`{_;>%}FaOCu
z{7qYz_4xAg<@5RcbUc0f^7Qet&X;XnByFfd2#0Y-`^D*HuE(R@TuX#4(yOVj-_*af
zXP%05L48}?WrJYL7^6*SR2txFQR_-Nvyv!KpXE}<S~oWG6f-F)Cs_fB0Ht9>>#*9z
zXk9=>ozmM|{JhtkmJ$)8bvIe}-L2eiF_+jOd~cW)J{c!N1=!58rdiU+;VujZ<`HoK
zMu*EAsq2ds1Z`7Tl_r8U37?ng5T=Rl@9$y^_v7>s#~)Am(`ES>)2AgLO^zZL%R&gI
z^`pbx_0hC`1pUao^=(AN1OU93O&z+ZBcfKa4k(}@QVbzwX~=Tx3{ux>EW2)Y=_--a
zZo$s4>&#AgZ!JIIb!qq(ffC4I8i#=Bu2$Kn7ueSfof*2WnYBbt$qhoai~$JY4NlIU
zP6PYDZzzH;f3i+%0K66TC#(Om8zOg`_m+vV8sII1^SWOzU>p%OqnuqdSF+m)DTFY@
z=!F`nS{74rITfPOwXeEk_v)KTtpD+U;|XN|!8)2keNC<w5T!pZVNm<|fz`bl+=$&m
zns0u5D_8in4z3fNmw=UhU{L@<<l0ywGLZI=IBmCW+E78}`RTjAMGEhT!*C!Bu0Pjq
zUDa}^LIQ*^N|+MZvaH*>gcu0nvMwqvUgd-&OP<e34DRm^tB}syIHF>t0abMoJYEuD
z9EW#ty5mS$bjgZwnjXG=KK(*~ld&w@x@;Vx1{%h3UAFVGnQ1r-s(H?uQr^-wjxxsR
z$>=#N0Ix~cEsf)l)axEqQ8i#1HVp?pC<qWqN+KD{zRmBbe7<Bx3^6bVGfgSyEJSj+
zJAkQZ%t_WQ0jMWfYql(63XoICh6pi25X@QTWdpMeAz2nt2E-u%!DZQGUR81kVHkMc
zwrPmjOc4c14HVD}Ma2VLvyurKkRT^dz9hon=^R*~j0V9-R5?Tri~ypnBFspPAx2$N
z&i>r*d(GwngC6D%JnHbLzyHtw_@DePrFDLJ{{C<O-{bM|<@o7%`f^#$b4r`Z3YrjL
ziYd_dr{m%)7bIvpz}6=EVFY`QY?HXZ(Lr{&A3`swcWSY#^309W^Fm{w$vhjcxYkhB
zB<HP6ce~?LRjACmq1_$^y*Uyarpym3PkF-|B#_lf{k4+zTGUfd%;snHRi2iZg7%*@
zI^%0VvB%G~LmgY(o*5cuv@F|ZG9w=-+))^qqOzHhp^16AAAx0{Bo=|kz>-h^MAyTV
zRgD9`8>f-zn^Ask%wM+jY2BVBJmzgfmhuVo)zS_f*mcKNQjiFVxU3AQs!`<%nxWl5
zq=>lyX_~?z!MvVLr4K%8BV4GWg6m{6yy3#Oz583}hCX=ab%nG)nKyTKN3t_QxSPi4
z9EsAEmz)w;Z)0<~m5Hj}a`E7HwdsFf52V}gs+uOLWqfNjq6T^krGH}NIX8s6cjcNY
zj}C6DpVQU+p~Kfxv07N8{FQ*Lg1Y5Rq@{H?78G+pUjUoAtw?qW6&l!Ux@TvowAZPT
zH)_7?O<5V{2Eb5IIsF&h>g2UX!C9@qi&Ftn5VcnmTn)B6^+4f^VL_93-(=74tdsG&
z$|{;dt+#&LwQ;j^6%WCBdHU{e5c%ELKjD#}vMOulu{B{z_@DmgzXzhjVM3yH+1f*x
zwvCX9$Rm@7VL&iM8pbo?DQ{_-rWgYth|2NhqK4x%-F=dAe91X)DTOfn`ak?f#~1#;
z{^lr>i8zMH9842^w*=<%`643IVYqwNob%~)TGnOTw!mzvepIKFLKr0FBsqow0Y$UJ
zJ(!sgQ%-k>J5Pf-olmMV1S(28gDoW!jpM}3NQB_GpaS9$S2IOocXA_wdFZBUmW;?T
z2EyzVp2L(8K{Uq@=6PL~C4>PWnOy?2sc4TG001BWNkl<Zs=6cVa2S};AR{O-F^80V
zgM(SrEmeppdF4REFi4i1lZY@Aab_lV*tLQ``$MD<%B59ycxoX=LsCOEtVuzxiMHOC
zTxidR2Ri&`Kl;ai`n!Lim(%%tI)3?dxjenRe0+NTyrlWE%nR58k`Q1Tw@BZgj~5kl
z=a80b)>=v57^1J1f_=jIjo7O7Pay<mG62b$3>-}14=rYeWuu3w0(Q&o=%)h{n<<*r
zSxECGV27I9ogN5O_F2FHQiWr<^N+5EWAMwoq^K3v0SL~5#MX4+4`)95P^zWxmF{Fu
zx5ZtjUE@nLm{?wNo+(Ti?m3RgL4iO~{6O)fHppm6Fo-1#Th6D`c^WSF_v17U<2b$>
z`Q14DD9f)U`82N|7k)N-(X=4sX2z(g3b#VpBH*;TEcfAsse87%(2+J5Y=J9YOw=W>
zBJBC!y$t7C?b1!QO`XfzHGK9K>Uk$<-V8Zk3xGR?;O)`RgwqfaQ6<;kM|pld=F>zC
zuC#h>hM~pVcNH|=SysyC1r6$*XZ@#E+kNe_68gcCm!Vh6roCM2b!P^*AFpEruHTE2
z^%EihEX!I1i9X|2KUaz#o{*RW)Wnory}#z!&*)-~8wYkXJzgPMeo5BkK4Egcp$ATz
zkFiP}w7)Oc`Lq7X3o6)Eb)`jaS`H_&lGyXQ{Mt?Cojl`ab5uDn4jrgpZ&Xv5>PO*g
zg+j@zszZfzIez){x5)hUx4%j>`XfuFkg^hzLKyz<zgvk(?E*&Yx<O4a0`R4=lxheU
zQ5nb4chn&;V%pZt3{uJ;zWPAOmtQ=CJ*Sks$AAC+-GBJo%jd_(bzK2a#X=yr59OR(
zqHJbaF2pZ~Y1q<wx||)Jg}Zzc31@dCBd*QjMm3em%+zL|mZY?~s1Mo8C=<!1D0bB1
zfx!?M{2Cw;ar<$0+b)8GV2lVv#I+EfQWe5kB>P9_#g`igMa0uE!7LDmu&644A{ujW
z0<ox8AInbOCFXG$z;xRd1t7u@L#mYXDa5bt#>m6{T^vV8L%To#I1<NjUgi1a{Bk@w
z4h&w$$<%{y!10^u>wov>|N4PIPA|*p<>l$~^Yh2!`O9TFU-FvJHkCwRV@v~o*_PSV
zitn}>3JY%CXXv{j$G}Osx3P?`$y^TZ_e5T12KCAPP6i?*-vNUfAs6#uz4(i*+_7WG
z3bN1MI=tvk+NePbC1<oPeyjfgyY#*O65hiAoj_v0B(Aaw`u7&tsXu!>9CSI;)n#9<
zAgwCz4v1Jf5pI$kEOg;2?*vt_vu-QO3i80iU5EjRQAx@m-G8hEN=RGE6Tn21ZYm<{
zu!Jy=({MN(rVt{+fu<i#<I(KJ^oY7KfA{ioS~nvg)T<EF-r9m_23drwl*n<`^~1UC
zDvD#URu%Qi=~)o3d5bq|U2WV3=(KEYz}w@ao6WtOH|U%8n;&E_nGG>UX6$6ux=&0L
zl%TB7iI7~-Txa-d&A<aauEcj+)-vg;U*#<dW}$A$Te*adAY19~#eLT|kz^gS&A$Or
zLEF~@6}O6rcsLx0Xjv8_Y*P$XbC0D%Zwf9ba0sE1rBh1ve8D$A&d%Uxuhk*1mc&;r
zsg|iPkO5m^5E@+NI_r)vg%;1+&@SaGYo?hs$MZE)=Vl-A+U)S!ztD^t2s;(7!yQ6V
zzGDT3V`FzHA?5SS<@ovj;lngWKysjyw)MFo0fqMyiHZWGoN+)zVv6H9ipaXIzRM{U
z6~uS%-Wk|sUJwin#}KwHzq>m;jMFd-2WBK*xAp1iX&8nv#JsHp#vY6rfQVx(mtEvR
zL``J~7-P(mET;jP2#7*YTmyt{+upx>7dUL&nzmG-P#ELjU9y6iWFQ>k;0$zR1~W!V
zIRg*}3LO0Bh#X=Z9QSD1h>KX9IhrMAR8V$dD0xUVf}vu_A}VS|1}1{0n3cRa0|W@s
z5X*{Q71ik+=;ozH>vcXeE6zDd&YH~++(0HONK6C+YQ&JUGV?Tzh&a!)=47foMgZJ$
zJ}+rqvt-Sxjo-Vk8w~((pz)sW{)fN*Z~xPO@KbyKa!&K(=U;qz`t)*qI$zF9+7``=
z<_!$TgHFTe`FJrUjy^4~;-ZqA1-<>F#n@n#m|dTkuOX{Go-L_K;#oOX)v$icBOw_g
zyW7Csz`IWdm^n*E+a)|+6L=tUNuKFFz#aLvMI~#si(H=(b~CqxKJRV6Uv&t>-E{Ch
z8}2lbZlYVy=sKC#H<piFqH{$=cS&ohIIU8<#q^ZdId6A7+)+5N52XRTOstxnO~rt6
zHdc#hakXi{VcX_K57WSr2j=^`@kh*?*+uiG%Vl8xOms3$>Wl|0Bcq#)8X`0h&+4hd
z@#<@8N7A0|T-Y0iNF?4nUR~%|z1MGaNOc5V53m}jr`K|}8#E@g8KUX`PqEKVsYD!O
z2u#ETTJzxzq%d=8istSkz#ZgLwv4y8Z>I%p!<Zs|$2}2jH@v-W*=w$|FjGN4ssWMJ
zi>lj(w!dgkj%nrKj_K$c$CT2xZK}KRwRtCsi@l%}cKAkbD(S9Ryv~lKZu#?eIMogK
z;%aUI%7zgzy4JCC5Zxr(TkR`~&7lhg@V=)Y-I1h9P&;S!8xia`!{;}inO%ro1qv-2
z3`=3(N)RgIkIHw|JU>4k5AWlTr@$kKDkvgx4V~1S!=L@}Z$3UghZu-?+tPfQr|IzF
z!-wPX2&UsOaR|%0g27=r+&w(Z%QDZ)Fbvz4)@4aso(@xt;r{+1FcXJ)nI9h?0B{%w
zQ#+o9EoB7Y5KV2I29MN0fEYQ3aCewamrIs(K3|r3H6T$Vq!^<g3Vs=Uc>mr^mvxyh
zvl$?hstm(0P1Ck*CK4huQHUXL+0QW|%2`wPP?pxFU|=S~ZQB3_rgy$io~Fs$Sy659
zNRf;P(=-vGisqWMn6jfeOhkw&Fb~5BU@0Yk@YO7<U@0(@k62?I3PoK6i47p9>^p?4
zuq>+?1J-OPqA-LI!Z=RzJg>`QqJXB#jA$6vWD2NFDsny1LqtYC(D)ZW|Ks2JjsGNn
z`7%F#{_gMo=H=z_>FM*bo|kQ%^R|L)pf*l8jUUf1C&`KcRC1^HNStm&Q))wUMtS3!
z+s%v)naVYK#ilkiOIz~z4J_(ts;s_1RDL3YJ>1BR-GP~q{oM1sS^z-;6QeH23p;LM
zF&vbvO)P+tQdt+WN!N1pnM&Qwy<f`~DU3smLjckJBkJ~EJ*|w0%zT3`X4h0EHOHzH
zmy~yML|#S|KsJ=iO2E##C6g89E)EkS0R#tUT3b<y05U={h(=lHfS47Rbsa}KOhLhh
zF%C#<I>hkd-NVx`Jm&myo-bgFS@xY+cL<Re_ca-4XH?cc%=g2A87Y+h)niu>opqz4
zP&>KT^xqrk?sb~>TXyQVGYk4{pZ)UO*{dcD3<1V55;go+IkJ7;YbAteUrw7DmE_-I
zdADnib!U1n+W1;m?OSjxrrb)p?FPuLjv+##;6OYxK;}NOrz{1m?u>7vrLZAE`r21j
zPp4B?USfgpn@F8iwC8phBXe+)U|P4f`G$&$gZ&S}n*yTuJ-;@C-8Q3+5(6Z}!I<{)
z;X3%aJc*!SqAITgUAzNEUql1o+cS^rPYJKv_cy-gYKINI?yMI0Wikj%ba#Je2Ftp&
zX(XEJy38-1m;3kA^dSxdnt=%*gGca~hF|~5^x;lajG0nG=4qM^LkRXO-)t#`7-NiP
z55qK0<3t=(WL}naTSX_6cVOsHiy=lN3UM$S=3kBLvN~7qc(iTPA&v$RVl)SeYGy_=
z8{!aS{Pru(S>|O-DS6F@NC=o!9Jd_;fBVh1>$=QyJe{%S9flC5F%s|)*;$n_#$}#W
zB!(DbSl6^|2`K<l%7slf#Av457Ko5Jc*r>iM#ODPpb9t)Lu4XVF_ZiIyK$PnJiVk%
zyxg0YWnDJ|kGiq@`@6$5smSSk<`Bzfz|8fd+q#M5Ks3bQ1phT{o-?0IiU%dtk6+H8
zJ{_|eg2gdRQw)gfI$tiRDxwNthhZFIRIsO)^UG-!aaaPY=}iO27$zA1(N{nHv)}o>
z<?sGJy*xiXemb9z&(DvS<#b*yi=@pgky(u4{_u<Q=_omQWIJBzbgmtGMKSC1|K>&M
zK+}z(Z%+MhHhi_bZJC*XkgQaX2n>M4$Q-;KMu0$^QK;*`3n5<0P7w)>{Iw~UZ(Uvz
zxr!5{FAJ=gN~pF=?O-C+<hD)~?5_%IVdho98$$?0Ap}2;sL0B&U+=YoqZ?`3YrMOu
zO7=1WYH$(W01B$M&f~vmHC^*^(KHd?^Dq)d#b^j(45W>lZ75)>CPJ(@a@ZD`*CmGK
z?l4T_K#X_8@Gu^}y_0Xx^N#|5$@%lTod7Oi8TMExRcR?Bt;y)<7QoCv7~;SbJjk6z
z06+j`NjdM4FK=-Nt?vTsys_;6Tr;oTAo_-DeeD~uUk-nM`wB-01Y_hvd?~x|@-RUq
zCDjAEmo%c)-xzkVXfNMO($U@r)&9*8JCu#>0`DChWqX(nIx*CT-+EP^>{y%Ej;s!c
za!Z@K?m^8V&pDgOw#ybhjw1NljY=@EwGLSK5B54bud@_h6*~F@K^j*wOfWPEfLvFu
z9bB_NOh7&3x>h~=`~biZ1i+}~h}IYLP5s?l{<JrIYqvv}&dIMWb-b<?J)Omm`cCPL
zpt2sH<*Or&_o|`nPE=|Uh9MB#O(CabDsdnLjF1OrGh-mN6akTOK!G%a;22^YX+=h&
zZOf<QF#_I20$a#1XhtN3L_tR;0Lu|bGb0@C4~J=3*X?*b1+)-CN_m@SkO+X9<^A1g
z#%_E9fRwUp=~aLOj<h{|n4V#sPfL67Nb`LNhcSYQLuWx(!%PDKWKDS@97Z0dK}2&d
zC}s|7009lmV)Vxz0W{}iun|)TbeQ=5VM^O3g5wAxmv^IOL|@(Ag_sZJr4*46(iC{J
z?dy9Cu?&CAFa*vi&!mVUFde2b#E^4Ng4>oFRosB)tmkC|qW_PvH~Wz#$<F-FVrK3h
zk=wnumaeXDb{EN($RR;-APFQy2_uYzfgbc<3y_{h4-z!P88+E#t#`>K7I!zZbB-R&
z%)=uxZ%OsgAW_TBjBqzQ%lG|0Qv}PKF5F)A!57aGU0rQ9!!S={2;R)@_s9KFQZ_X}
zA~rz7EP1gTq5&CfIQ*~w{lD2pogN<dyZhbl{y093^El@`s}|aGLiF3s`)RzN$GG;2
zz~#NWB3fObtn8#{HlwEMtfDYgBy_}pposuXO{h#XtIn2*_(UEsBVxx+=VWaNd0Gd;
zX#!Leq?fev8u_aL#zciipHIIIG(!DZt-F@6UK|v7mV;tM=)EhE)pbz0vXib~*NYyS
ziR3(#ZF!%~WIb<N7u*-outoHs0F&gXdCYO^!iIeZ<N+9gZON!8OH|DYjF^!ffCKCm
zb4*8$eeX6`5Q1lRueY1)zIzp?*UmlW{E*~cWI~H*R(ZCz$bYoO2rLR@Gjr@)APR6f
z{tQS_HL9HrVb=)8wS?zlA$kJGKnW!H|JviO?%?MK>vR9^a#bLJbKDgM2eh1`8X8@3
z^s7XK(|?H(6iHSQqUVe7^8oL1`Km1e4A=r#v{Ic30j-4lF5D_RWr`~{?(6ag0mAw1
zyUur7UnFJNwiJbo<+K5+|LanYswTQXq=~!_A(XdRO-eSfsxB2IwJ(lZV){9M{-ZPh
z7rwq015b$l1kNh?UWjM#7Bs8N2&<D{Yy2z#Ffl;KmH&rlQo##(%EjfnbhLOP!@x7O
z;OY^A!V+jde(OBSfMM-6Zr_*Yc|1JbciTJ99*LK`ycqx7)g}yqV=N!E71C#%BN8G~
z-*sil8s`aX$h;TT&9D`b!|sU@k$|8iAX*`D<}{TiA!m*A3<hzYz(i9LQSZocNpB#P
zY$`-<vl&_rk}y-wSv51)r;`bo&>=X&j!9Grp&z>KFuZ#8stf+{@j*q*G-q)oJi~cJ
z%vnWMa)hb`FI$a_01V)}4#2!~wcZEoHv<5OCeu8RqllR4A<az8MBIV*&WDgvp2kVl
zVi_-sOykixMu!CIsA9($Ez9gk0n8DgWyr>0ViFisjU0x+-DY!4`HydpW$5RfyV-8;
zZu;#N5h@}w)6i}EE~v^hPbnFow-)?IL|BtP>e!IT_0auK|MlO0Ib7ur_vv`p?>;>3
z?jN2$?8n0)$5CShO^kFkj0o??eKge)Gg-1D;cTFKdVE(*h04XO#XDTMM~cu`R0t^N
zyqx6>gw>;rL{tL5>j_eEkyv6WG9WXH8WVdLybGd=n5*}hu<gKf>8C`5)GZ7i#0q~~
zq#GqEr9e3dxp4zqqUx%1YQ=RMKWa%}02MVcF{PTFNb5AorWGnNWO%+dyEvHIq5KT8
zxX>`_8Mmy#5SY+RqiM?HWO+k=AQy<dAse6?iJ_?)i6|2$Gl%GrM8PY1u$Uy~(fMiU
zgAb0qyX!YMp`TP9$MpU2c%S7#VsaFr@cil`pz6+AAJ{Gggch}_22weML|pB|YgFW7
zb6Rgn7kzU1Bvu;)_}Jw6M}m(&#_M<n&oTgI_FeENUuGi%V+~hV)e@F*rZFx<<aI`B
zJ%r)qE1z08-3bNN`nLuDw#bOePf=$o*pPBf^;TO2yHE+?#gO2v8(w~%Cc>x?BBWUM
zXsdsW*cI)SbF8L0CCPH;?p@JTUJCcsi<S0|=14Zo3jhPU)4ygbC^XPY?7ps!t0zMh
z2#aK^T*wPN=K0q7BUwx*e#`Uga}iCR#8YK+ep=>Z<9f6wWNEwcRKf3e51ZR34g<HS
zf<-3hhAw0$L|C<OiihJUDh$;3p{TLOakLTw3p9>nnWChaBxm%##B4Eh&Uu<9Eu@Jo
zCGdcVMAdor-WQtS-OVi^jPraLkBFdZw|BQc{pnAh9v^>r`!3J(JdX&RvlM?f6PxOO
zw;P5*a_;&rr%VJ_o9!@k%oOM8csK$W6C<Hx=Nz;5NTfQ?^IT*FCoZ;XVchhNxDEg*
zYwAMR_uV{CW-e7|B`t%a5CSuY;6iX<k{#w;AkyXfA?G}zNzO*(9U&q+_E(#6JjOYh
zO3vU0=Urg$#&I+gtFm4Lvx4kEz~J3xa9qcV7US$46=7GL=bS}^4r3}>uohH_j=5YC
z%+4A8{N}U2`SO?3_iyubJRBbm$Nf0&$N6~7ag;opWJ2t_$n^EYhe@m2q&&RNxwZ0Q
zHObK>O`%c(8h(-(i_ZLX%vBSB0cg$*JZV_Mj))vmVcM_ntx7hKl-uD#%#M+~^CgVB
zN*hnM-PM4%<m{eRxMgr=jH|J8J4Md$hi5vibs&7HwV{c!K~2g(M@yo^vyhn*CSr!G
z-SCA&>D1#sAADWjG3{PLSUG+SCe6uogw&H8s#^&iqsu6wQdkiRf+$FWm;sZa&y)`4
z*~a5E^o||%gYWzPRk!V69Ek45=^^30q&?yhOb8qO2&j@LFVpEyB~)8I6f7MQsmSsn
zGn0X-<mZjh0>7$}8;H&HatfNfAR1n58DES%dWJ}}6}5%B;J5^!7l<$cNCBx+ZgB{p
zr047DHXowX`c{iY3rer@qL_9W9Mm^<q5M-34>p2wL69vo9XyK-#%I>8AD0=g3upvj
zrg8zdB|J(CtuiwtE)E6neD&{(=A26g!;fg$Rv$hh!g?d~VtI55KR^If0`$%6cK&N3
z7@#|?gi4LR?5knz-6vc~07z)7N9AmI@Dj!4Jfi{t@M2!Feu~PKRBq5SOW2BcwxY7u
zAj>!%4~K{0=8eOCNlY&z7I!raDQC|#$7G5z=3(ekOj)FaEia!YJJ)r=2RF~D__CSU
zyXr0}Q9@;rAgU>*B2yv)A3D#z@4K8+nd+3ON$@V^?7hF*_Q7${-)R;zOKDbB%j&%k
z{ouVXBvNK3Dt9ZG**wQ-nsUmHIOm*;Y09}0WTYY@x$Gg$jF1$RxDGBt=gUac%t~Ss
zpyiyq;MI6BcZ$eTJbGry`B)#yWvzl{>Kr>}Ff)>_>zu3M!-f_U!#sm=Nr)4blu~sY
zlS9@0;rPuDkKh0BzCg;nbDJRyeTR@GCoq{1Y#dABDrQs6hjE@$g2Mf(yh&5FK;(e8
z>i*}y`ENE;Hc9*A)Bf<d+dYi)ag-D_WfL*rzR#Wi?&)DRL&t2V!)vqI6!l{%yjJJk
zi8WC&`xc0g)xl7`g9)fKVhDA-S4^Vi;DeTH#Kh&`spu#KV5*=LL+`vKRZuEG2<L#P
zrij$xGy!V;3LBhy1&;(#Km;Q+0emjS#I=pGdWR9tJxF!W$0Y$18j^vQX017AF5YTw
z@6MWVgf*T*UKEAC#Ckjp9Ew|`FcKCOx~NX5Su~k?qMm(E&NFgG&YBItjB9cY3Lyco
zVNgmyB#;EW(-`A4i}y1CbmU(5!^XL7oSt%e5SS20gp6$g+|G{zOl8L>s%RUzC$(vw
zL@yMlv|6OW#V51+=me3WEfnEL|GEs*U9+e@wt8$!c{JPf&b#7-tA|qKJQJ(sRWr4A
zK1q!wvSnPpKo!*NqBlMF${Sz}f;_9bh-<Y0wASsHT;&xh@p;Gjf|C3K+_ro>gvd<9
zEpr?(O><0XxkZanIIydTv|NuV0Q;D^Yq2b^mpJ8}TniswbjjC=lpzs$tjhn>e4^T?
zF4c3nusBQbdBdYBf-wPB;JKd2fVG8PX69=;$^{;)Oc$0Y#^$&_b1N-_E;Ret7g1&y
zYjQ0B5a{9Q!}j)#^8wM-<BHhK9GH3M2+<K|F+>W%YY4eSb2VLDX^gtAONnxloU^Hg
zE^N0O5go^)nu&-R#GIN!SVh%&@0h)JB01;Wg&-#LJR#z%S9jwysoK-i!+yUb;^5pc
z3~{%s%1+hJV>KG7#2AYj7MRR5=RD8S_aTJPc|T86Oi5L#jrDf>10i|milf}j)JRn8
zs*GrHNu;bLLsG4zyrW}Q9{{ZUy8uu=B`Kl5Mdi=vnd>!!3aCWv(3vS1swp9878Ug&
zlqYtcCL+#SntMk~L^vMj$ESImMU9{)9u#~QFcPQ~ZCVH(m{XF&F->ze08uFt!4i^f
z202S_;UE6;zxva=Pxx_v7>`pNW18kT&M{6YCe>_8!Q;?9OvlMg(7f}6r@3ng;p*z@
z-Me=eMReOx$eBg2c#5EK#><qfJnK?m%vJ0RiwV7P^04$wr-$2+fY^l&edjyUoWbaD
zI2b@q!U2e|2~&a2Nbb1KsfFs|AtDlxh5t$?7s1l^Hg$}itPZ6=<%UsT3=!>ZuDDQZ
zYpV73t8o=hmFse*luzdLxtX^5LofDu=ei^->?(u$GoJN-OrVwlRAtgUsd~x-^1vL3
zNe#2sAD0TS2gM+pcm+qKhACrI;FLXQ=h1s)=HB^D*MDOA{&;vy@zL~va9sF*RRl!d
zdtzGGWaV$=oR8z=y@wiaaB6~!4e9yDeQkcN<nU7lH~jw@Y5oZIVQmsyJSCoB+jmU@
zT}@^6i&ibMj3?xmHKexHsA)MBSW69oO!Q&~;^}LBwqiUz`AepSE`L^qq%M`>Sr}ja
zb;?KHM&bf5=H4@wHl)T#FuAOn$^g2Mub3P=c1+AA=CkAvn&~2ee$g+x&X!zlscIhP
zxys!x@X<xO<eGOLD)XnRGtJ5-m`x3^K736Q3R+AVg$#p)gwUpOMZG|DX+XbF@LiC$
zmZS|tYm5AspSR_!Z20c8F~AaLzL2rX7%h#*Y5#uMY`wp(AZ|i1bU7y^0zmIQv$Erq
z1iOxi#wjj2_GQCdMi#}T$IJ+LJd82Ts+vVger?X8fX+G9RPvnFbehJLG9m=;JiG4d
z+IL}|r<3c95K-B&_ui39kVO>?bJlsDo86w6$uT2gjB`%ed-l$kPI{VWb_|LtHjfbr
z9I-XpYV}-ZWo9*jvhzg@!Iz5Oz^sIU05fyW2`wX`cTQB}JkRa>6A@-+CIB+9M3BU|
zguN3K;HBiujH)Ois^Yyb|01;bXjLOFyD}2P{UlLP4GD}Hm_Twu2D97;SLlW!iOO9I
z0K|y0mN=Glsi6GH=KAk`^{;3@PKU#O|CsYkgma9?G}WkjBEQ+}RPV=QG9$<3_RTq$
zH{|i@>2Nqq({vuy31ua!3aS}S^bExom)QtD-0IEZ3DtJoEc8iJQGlAUQ=4XHBsTVH
zh{%24BcK&(nHjNb9*8AnqNG|VDAt^5TNp9`h^AI3+;Rq4uRC38gpLz}aS@oTEg#sz
zBvf)rgjlRsC3d>bq6r%sw{UT6K?kqj*z#d6)l5^A=>=@>(n4L2ssg|}V>#8WGd4^%
z;A|SROo%hNEql-8h(yg9I73q@Et&%|)C`af7>JEXkOgQ;-f0Nb_5RiMb;{X9dg39c
z2T2}iFPgxR*Z>Qi4FS}|0H^}nRm_s)EUEy^o>`yA{USb-g<mu!c1mKfcJZ7hu`i99
zKZ2{ga39slpeK5L+uv>nT+yk@7+AFOHq4~0cd%vq03ta;QDesHZagJjE@*7Ka8sQ%
z<(CMyQh^m(R;ecGv{uAg@T~wT4ZRABOn(VClroGtEp!$Q!3oE~L`+O6#(AEtT@wg|
zRPJC`g2mbrN>9A+^Nl{@nf!50Tt_=29<R@k6$iA!OIy7CqFF0GUTS#uV&?&{`kFU#
z{Bo(bpz!unH2~IS&c~Vvd;YW(d%CR^(a*ihXOHok68<cwYrS{3mKueMyZd*Ws~g%f
zxeWjtfEv0OV@dBRhl58Xq!P+B^Z}U>@apO+#^{`jF~*ccwC@M+y<~ZKcrX+1JQIjY
z$`Z3U=T!}v8^GEKF{adoFnxm@!vFvv07*naRL>E?y1q|&p5`%2WO9h4n#&g*)1;<E
z<Q$18J4aMdJg6!F#vybeAfO{*#*~t&r5M$KD<VS>ano-$%;Pv_Q&UAE?~CgmMI@$Z
z2Hv^tW&@^io&nMK9xE5nJUIi6F~+9ok(>qV;Y&m!rkcwC%|(bzby`5EgixwTk?g%c
z>3RSNP)rS$9~EM@<E#Kojyr~{ZPx{gamr{!=9s+q<=RzKF*r_foRg}Qc$5Xk<dA!G
z|MqYG+s!P~<C999ro)(zA9fE@j!`A4W;E>k+=Xx6em|Qc69O0cQp&juTH}<~8_{aW
zD1V6BxrGi87PvD|+1L{UfT%6Rj9RpcIZx&KZ9`gJrrFG%U7)TL=Y@#KnVJuMC#It0
zT#5Xw`CzcxkJi_<@l{Wxq%sv;?l*iX$*%bcid;)^DdcM_(}rv+kmgt?u0%|XC!5wu
zQu49RY<YXjMberlIbpn1;dHGoW^1hXyg>taJ!g%fnG~E~1<?YGmSYx&6p(x70OSpv
z5~?wviZD_MSpq|cOhBm025z>PQp`DJEdsfood*mCy`%x%6UYpf&{~v34TWnuQUw4J
zZStC88kT3{;xnns$M_6q(2TXb;5^#s!kF}N#a3DUqDT1b_4OBTt{t87)!R6y&I>B<
z`dou!P`?nzScqh+qugL+T5F$%T{vP-IB{4k!t09aB>7+EHm+!iHF02peVkoyswc_%
zI$EGKIm|>%SXv{qX_`ga^aZexeVubu%xuLgdXCR*AGNKNbQjT%1}hSXy(F4jey>tp
z5Evt&)hZrN2~Ds_%1=ogcnTd{Hm}5_)QB4`BeEd+*7UlTZ((PFD9<**4W@?cNA87s
zuFc6-s&@O>|28tW$TUy8hY&W-4+<&*gyi=7V+f92{fmeR(J=urGbvckf{6Vv<dn)M
z7rL(R`hMuAX&N?tO1boCQ;adsKtX{FIi>_AaZb$SoDaS)0uDpSk}Ye_f<zR&8SVCm
z={UtCOilrrJs^3Heb*O|TM+^fvKVC1EQ$!Cmb0h<`QX@1a{{20#E6`NGhyc>#nRs+
zm4R-~SsXh=^4@_d5r)oZ$ztl+#S~LkQJCWlhD5;3iiQ7&#LPrsmU1R`%nq^=fpbp9
zGRoD^Ggy|CVl)+Yj@wPdh$&?RL?hGWg3lr`$%n_oVamvi3c<VW5F8s5IwY}7Ox}9{
z%Q>mq{xI(L$2msPl9g6UT?PX-{Oe!**<XM5bNT*5j`LyK9jD{t@!{#Xn=~ghL9@=g
z>+RQ%57D#$v=vBHa?XIT2L7F}6^MZK&pH!c+C|WMD|stp6}2UxVM9fhoC!p3$oGX2
zO@QQ`2OkoV5rZMI_ugX62I`!5jxo;lk=G_8E*WMDfZ)9kArzy9WjSGum+HUfij}na
z#b?w|@L)v}xLm8Mic|=>Xk;QvOki4$GE^`t&qcuow^dU+dKSc&o|{>h%~=gf$Fd)7
z`8-uGe5x`Qd3F($p<RYGwQxUe>4KmLW|lS0kVm6HG_VhZ&M+7{VpBu2tcD1pM5sha
zMkzxQ%%jfJ=$x^mzVC?WI&_`5Atx`g2iudGh_L{Ys9K^@rmBcoLBX9uiW*zy<#@q$
zXS_UJYv0SqmcB1h13#+2wHn<A!Mm%$Zw5zH@ghWMZU2X>&1HEy1yoemflPoT^{P8l
zDW3h&SUm#v4DAASShUP2si;DkFa1s@$Ys-~RZXDk3FTIKtF**Xw_2^LO?~j}*p>iq
zz?Abi%`qlXDO-_ZW^~Tg0hKoR^P&@kWe#L5)yd8c^QZL0v%2#o3J2J7`+_gOzct))
z!^RfxLgn0<XbE5dGf)CvO*4>~k*P2th$xHXELOYl6P&rFa@)rw^k!#F_~(uL840`$
zJ@7}EZmmYqCJF=4oOX}*!}VPlZV&?jsAe}E^E}7C56n!=UDq+Q8FQKNA*Ph)IE&;M
z<2cXLlqH+NgL8~XOc=Zaf|%v|5BooUdoRMy1yw^r1U&4ILvXL}Hedeqjq|YSL)QgB
zJREl8oOe^&9d;?h<Ktn!KXzTGYM#08{mr(&x!y=lIpy*Sr>wh&{c+5w`R;bOyXm{&
zfq53qDeaH4KhE<U5gBc~x!SyWwdsNt^79zw;o&}JA%xA)U2XfK?9XbBFe&Wzakro6
zD582ePIHXjhhZ2(U}hUS+Ju0pUDt_fj7ik?$8k;)vv?n_w~kSBPM+96Q<_UpA9GAe
zn7Qvl@Xq-lS<JK>`mXCz&W}&Why4_j0yqHcyU=&UXv`FXH)Y4{Jv-MQj+#<F&S^hI
zHB`~|vXd$}z-#pX@XNo{cMmd8({zk!n$k4pdDJwUBvbXw+s*wny*utH_z(gjX%?xm
zac69{@+j2_vzk^$2ex5t4Ln=w#G?BpDm;A<QPajZH!S<tk`)Lwb-bvi%KCwsx$in5
z=b5wBEv$20=pg6Jj-6woBQuu-UTeDLx<o_v-VehdW;)MxR$RISqH?t^g+LX!RuT{{
z!o`d6Z=FcjaNNpkMgYgo69I}LiY$2pRS3G+OqUrIwS<;4i%5epR8uoFuS(?#)SdHM
z$+8@3Efwx8ufFb-7S~4I#6dDml4s2wxqv*d3q($l4bZ4q#R^-D4H-d=OwlQ-C}vfQ
z-jnm52{-H<VkgO)jB28qL90ondYwT;l4KDvESpD1RFLeKL3OKE9-GK|eXYI}APAQc
zdlv!BYkklXdD(R1=p6N3a11KBI9N<8M}GxALuMwlBE%?rA5)O#<;^)24x+7=vd_Rw
z<&801Rb7=|QJ0g}hAXwT$XS?)x!{+rjSYAuh6ihbQ>(>m?T~9QDIyaWDYBX|qw}tc
zU9haEL9$5Jm~x#Y6~8Gql(eZ;HP0o?xl+Ouo<ke!52XgrnISI-4C}+~5J~ZbrN-0T
z3h?Cf0wV)$S`RWjHQ?+WIxa6vK^&Tyl0r3UgR~BMsd1M_t4Mm6g81azhBZvjo{!De
z01$kZ*K~RqumzAeX(te-ImI{*774wm0HAx?N9QqX^p2P*XX&~?<XqbhGT|_E&arnc
zbRE$&Pj)zrPmhO`;$|~^`q^vmVD~isU;p9jcaJ9MRQ8%PGo_p@OV9W>fAupU^4>Wg
z0C9hufA`1T@4o%;-MjrbDFCZlmc*1($|7mI3157A{rMZYzVe=#31YTy-#z{Ao2Ss-
zT=jJK=|G`NkRFfo_iuL(dwJaDIVvHj3YZOH|0h3t{j)D`w*!xwzx!eLFTefvc+jDD
zfAQx(?FJx*q@pPvAM<h4Z+_Ul|1j>4QxwTL13(DDxjj3)-gbA_{)<nxH``!H#kqbM
z({I22@b+O&ibEfM^2zm=Z?1>V?Z;yga>OkAF@F8s(_x>wj=%Wi>QBD>ECdILMs-eW
zs<Y^nISYy^0d^e^o%3vtsqX`tiR6@0xge9kamG1uiPv7nO$_7(|L&{5_^I3IbeQr4
zY{%VUKOZN{nP84NgJIuKU~dn*R>#%=)J0YMT(5ZkHWpkn7yBHn{;fqDqFOC^<>6lY
zOsWKWb^eMdA_E|^D`qxSBLN`IIr%X7O;2ufJRE`}cGh)$ijzsSBFwM?vo%IKAvIJR
zin+YXEk=g8oDgN{(-?k=wN^gCnHKy7w9VG(#3|<jq9a6fN=hh_#TE-G+Ij}QoKIzY
zDfLroJyRI~TGP=kw9eBa6a`B!ZY^%&5^}WIrIsDME%Rzz<PDI)3?!;Vla5`eb7?~X
zM5E#u!?KlUQxii`M1d?yETPjf!wf*T=)B=B%MsF%N&sBt@|ID$WI5?rYu+ujG|02~
z>T~(kne=QeZ2l1i*2m1R>tLdGl&a&vgl3{51_nr`Dj?;;W@bbHB_KqHW|p$F?M5YI
zwdqBpzahOC7p*nns}y3okZRUayTwd@!P97BJzQI*OAN*m`ndc_tB(r}j8CzgT1-ca
zERpL6LaH*&QT1$!;7ar_vzaEzZTMUjSa9NN!ZQ{$G#<b+gDt#}RYe6+1PEpf#IWLd
zuF}J+@2`5Ii$bfR^RV>!1_<b|y!vLEbE*+8b_z>a$=1MZEt0=XP`;=O*KgT#bJsH+
zHNGeY#2OZPQhABQ!|t)$-u4?`>>X~5KuKc)<}`GEW=SbCv+um~9-&yrFgVwDov7X3
zUQaO}4)fFFej4X_&V_;Z_;}3f``!`Z?e&%SY+xxR&2i(y=byg;L{WLz?ccsX{N{J}
zfB0_i+%OEEY=*=P#5_;A{HTu)yTft(m*2gAxZnNxSD$_IdJB$^<MhqD-F^Zu)9Y7n
zwpW`uk59Y(AHI3~`nxd+Uu~~G|NNSno*sAO@i@-u>u(>2P1g<AbBgbGdcSu}etUDX
zxw><n4D<dt|M33l{X>3tAIB+!p%49S@G6o;%q*Gg5A%n|!-wq<ll}5%cSy-G61y?l
z)5LoTDdzngqZ|nMtDoKw6te+kr9XbV`|Y=rDqU~%)eV%zl6TH5s|Y*tU573j6r~Dv
zefRqA_G)n6=b`u8zR!}5$COeokJX%Pf0UFLy=Z+aN#PgU*Z=U<U*@M{PLpar>>nSW
z9uDz1VjeXoQ1cAl-;c**ipFfnNh=x*2ul~UKy%h_{z}uq3yVV=3FzW*R8weBj<xQ8
z;lea_|LLJ;cHTShykr5+6o`!lG-tWHy}rHf=j}L6dy(YOqahj<O|>>sznCK6JkQLG
z-kksrcCxvsDj}*VTdmQGw5@fnCo%x6at4Y<kP8u}c-0JQvOPf2CTI;kqpILs;g-&(
zlBWdZ5|sl)H7t4M=dR;ut8Hc5LQ)B;GX$e^3_@9rVf~}w8GWMNgpCt8o6MqtT<?4^
z@PJIj24sd>&TkPjLeNqwijqM#Wm4zBIbx!X0t*H;BHfcEf?R)k2E#0xRe`8z1Dz|K
zaV|1x1U&nItC5Ec^gQnme<a=Ld28}KYv`hsq=M{f5l=Z~K2t>DVn<$`puj|`rjYA3
z(I({WqqgTwdD}i9GnVPK76m@&l3v}yAWtIsA~!2KlNL6$x~;1u+!(2}ZcE>$Ra9>c
zO`$E+fjS?sNfFB@FCr;PN<~UrBf^T()`d{MAdzAtw{yhRSq-r+fr^6Zlwb!&fG3jY
zg)O@*(gCnMa_zFj6(;SBF<D`q){rIbm!vu-GSNb>WF!D7ZyMEvU_b>1T%?iDja28t
z!1Ga)ebj$dywvOM?`e6rs)84R$Xdm|e|p?pKXqY4)FGgovp365%@brvjG7{c;6(-I
zIrsp8A$Vf)1)IjWVdoun0kd39WAwo>(WW0he{++?UEgfJ`s#~*@HwS8&4<IW_ucl&
z6X`Th|M}P7{^x(bKOW)c?&ep2{<B~F;*F&JVSm_cHaW>|cbsPZuBUfzRSgaGIHzQm
zqU^?em{pLRiuaUr%=3KzIDhlqLABcs!<Rq(^uPSo&xz#QZ@+v0?!$gJ7MG?7><{U1
z$cBC2hhKj6<yU|9smbyCAKw1v>-&HH?YlX#bKTWde|Ix{@!6ecvXruj0Nn2n@9qx|
z54$<pH}5C04_|%x`qgcZ$YbO&wFM{O;h27S7;mq;&)-}P9RtaJdK@EUbwt#KetUI;
zz^dwf2p%y2G6^C%m(|n|3_9<+z>ZWkt74X1UbB{qV*6vB6Bw{TW<(+`p#p>A|M*w`
z`j)~`kJEJ6A0Kyzr!2F8%{ix>1qnkqn!G#gjR}dJb5(3o28GU@Iq27w?D{OL7ef;|
zUNCX0S;^37oiVaT$}Ls%61c`p-UsKsn&m8-Gjc)YTL|IHFMf_{AMW3Nc>i`f?$8*G
zOwqJtJ=8H`;W4F@g5xTVUgET^_Gb%7PgK#U;_|f?8769`)EG~7)LwMzROfW%aOMJW
zHbFu_^1v-2T%S=OU;#X}c-?BF;>r^NQ*HIJErWTfZbmgj)3QZ1Tq#j65CNtyvb1c;
ztFQl9z56Vgn8Iw}0RwRWb|qiKj2p}kYD6oMm9S<>l7q7MMnr*#)L7LKJW<IjHgv42
zImtSwHuxTpWGuhNYO`p|`A$pT^o6APM{<o`%&u8GP0#ORaE`qXK%mKTVK$xgd8fs6
zyJorkKa6Mu3=AN3uxWr`<%zH}J?v@@*?gca7XgYMqJ&^V+d8+6xHW^g)}KSIta8i@
zv6AVEn5|`a*50lxBTfkD_8<`<SNmU?PB6B#w3PF*-z}OJUzkOvMHZS<$~lV)oKlKU
zTI-Lb5T3(QD(&kd6mYOY^kl7G=Zi%?u7z)fQ*xr@E}lIL-t~QF0AfX3QXf19tijdG
z^vkS92CiDzl^VYQ?O%vXx)2$BL|XvM5~Qu1@d9VtLcamfB*x>@!_D;_c`_w8NnrM>
zIZF~XM^4m|%*T1`x-e68&gGn(=ftrHwU{|La95qEUTr-RO=JA*lN;x{DcW!qZf`g^
zNURajvi7|NZ%>Eu*T4PY|Nf8P&yjDhuYUQ9Prv%b?W;SR_YjP{S9R7Ai@Kq^`{L7U
zLuQYC$A~h;{J4+NoMYN<y6vW81Z5}LA#?^{khj~wE-}mJpKosOTpVMJ`S$j@>%#p0
z>1jWyf^&3r#lwJa-;Tfj?GOL-FCV6e{m}p9vsa(J8GiEF)h~bkx#ax)x8H&}_WpM7
zy=M`5I^;Ri`-gmc6Z_yL=lz%tV=@5mxCo&RV}3Zu?X|K4R7nD36h$Dg>+7qo3uc1o
z5FrEyVC=$v9v>ceyQhO15J2$MJ4Fx#i}S2GJI5h}0!B|FbHc-<qSZ6!ofiX+_BTKI
z#b3PnQuY&|CYk4WjA<Hknl&fMf(XG$@ZUe)E1@;aYbkh%keQ3myWAr6LQ-9u=Pu}O
z`0VT>!jdKqHR<E*KDZbyp6+8r17OGAJ3wThWCo&O1eTv3?*HVczx<28`d4v2{_zjL
z|NZZ_zft{Rp0gzcLSUmJ@z*lzi7^@)RZprmpJY*~*ePNKaY0orvdN2h*P46HwQE|+
za}_mZ@>mj^$|X$zil77~SjONCB-`43TPDr*g@?xFhb7HhRe_o9jJved^CjMbmU4TU
zRevPe^h{xU%KIY(gshnW1u&UJ;DNj+QYi^9zzW&4gjz770-zBYTe2kLy%7Nc4gxIb
z2zCxehhmnqT5*+-sTvcaXEMj^+f+gk)(va17~w?_<iZkqxyAg^OZr7MG_wOl5izlB
zf>5kvtO_MjyL3`zUQiO!aOEs2kAbRH!rAJN#VTqBB3{CbFN%Y*a#A@HbuaFn(u$P^
zQKZ<P78Fc%Uu#3V8A9<ylzVicMz7yB*M`sa*=!TnB$Bh_65Ls;N@8|y!DDHeRFs$H
zvgmoiVf<VW_k2Nc9u00qDCn&e9hcuAwbb-FY+52M>))%7fe(CredWAQnprVt5k<9H
z^gBc`5HRBEIW((;kmvIIGGQp+-A53cmt<4;xWM}q^>wyBFHj94AXA+WyK(oh*&2Xz
z60Q_7X<~DzA}UFAPKuc4sNPWsE=CH$6QlRRdsjAm%<PcR69CZ=oa4K@t8q**XPtNB
zgfXS#aRS3l-;;yyzJL6e-#n-dH#hyCeEH_{PX-6a<5PZke_yH(@7-o|#Y_mvz1dm|
z+nQq9&*{U{m@-@i_vvSEZg2YF)yx>cG0bYB@cZ9?w?FLOydJJL&O73bd-dwpInEOA
zANKp*NG<@#;jsJX-yFXF`u-n({Z7<{4uAgBH-Gx`S63Uj-jIU?7Ke_GhoeI59e)1l
z)p3@`-Mf?~QrsQWQ=hZQ<9;p_?yd_&G|%Zcr5`>VwmrIVmE!SXx1S~jK<{`vbeldn
zCqyKYV-z#>L9^=qn35=S=$w0Xv;FMN%~h8q&N<B@Le$s}09hd!9;a9gNXX>9rzl&4
zfAg1r>&KX7Cf1mzF^*%oz^z0FAavcsH0^Uj;&PkR+8OFiOzp2?!+$}7@q!ud^!$}=
zlL49LMT7AC?YbBemdIbnT&hFwyz~B;=bSSLgKC_|$NP7;H=9?lzua!SPd|D6*(aa;
zAOHLR_TAfWMMfk>21UROg?c3-I*N0ygaxChiB?c{WnrH0>O}FReLOqgsWrbfE(cDv
zt(X<2+oC2b6F*gDqY_dn=R(%ya4|CkZjr>e%w5;coC0O9joGPpMFK2i^QGLz)0hj-
zMVq?vBA%>G%L1>B$iPgID4LjAKo=Z=6=oYi#@c;ANn!w1mMnxSDvlA!nAj_96A%~^
zjZ{pGS}{hdF-8YK>_XpD<~UA>CCbq*rhm`V>r}BN7F-emU&Kwk*ukuJftFK3Fjesc
z&T(Dipq9~wpdpZHF$Z!*yp?e-pjOd95%yE@oMXEl&+?)!Bmhfd7XT5cRxe-m;+&*)
zU<M{D@)Rzn;*v~-<#JlveAhOow)a71;>vL)Mk3^Li)FDGbF8pTBqHa%E4MFJB}dLu
zy3+E=pT40QL#fZ+;sx7f&j?x1r?>`&1mMh^5!S3QSg((ZcA;vXt@(Z048H^+C|c-B
zTT*QBRzlazjC=q<HB32ypjs<?!Il?LTJMXiDq}I4KR>B1f*GFC#dTSztqsac!d20&
zLF2$MQXHrK(*t|gZ?0SzHf92nB+e??B%)<RbnLQdM486qy>mW!&)x|;4#5TIGbUF=
zRiKR2IS3wx-Y3yH&c|akGbRe5^MS`{nkO0ht#f#D75?;>Z>~1t*rst3(PDt=`u_Fn
zJMaDV&DCL=3PVR!l0eK569pea=Rg1S?$vFlGO}}D{@h(%zxu=Xj~^Zm;~0PcyZyIc
zQ$P4GKEM6>m!Gi@i1_xqAMWpuV$i$r>8G!{&ObaIzxiRG)dAA=)o{IKv<Z|@@vz&e
zNs4m;IUzvcKq!)PO1XD~Db88<$27;1@2hWK-}Zg?&DTGShvUP8ez@}ewo{e+T^y4F
zx?$+AuY==Uo-t-F4|dkPKhEQ1%w1_q-rR1s9d@3LyF`$4tVk)al=E?pkNYvEY(@&^
z%;Fq7;eYqHfB)rhGrj-dI=H{TpW`t~noJ^E0#ionyOHpII-atmZP|7xv{}}gI{UGb
zcHLX`eMd-HvWhOC%4R-X>ww?_4zSvqV3~#^6xO`PdCn%~n@7p&<UjtW|L67V>o0%y
z^DHt>N8j~#uRl2)_XhxpqXD2Pa?y*_mOZD`$_PQxWs{0k{IN<gTFai-X^u;<#0mUV
zj!xxb3x;Y-TP9}OY^KBr2#}@FvYsdZ)c^1^L&WO+UkhF9=|QzK)ARoho;v8J^Rx<6
z!}b%Npakb^={7n8AjAx&m@{%93rrx$2$T`6#_ts$85)wYiHa%{C}l(<fNe$sW3!`}
z17Lux^~9ND^d7qq`hJ*Q7!P}uxZbs%14L={;MHuWi^cYfNjvKdqKl)m+#LoMb7rW6
zTJO1R3LSA#`m~LC`C_yv$f}~stXw`+$<btL$hJT%ms6Jjt)=l?ppV;s2^Oy0ik@ce
ztvsW(RNc|aGSGM-bnzIpZxe%ebzxF+ciP5T)kGnylq6I{21FuP^cPE%h)C8fV0xA|
zwM3*{>d4MgnV(~*FCpFl2*yAjDsALKM?z&mjEjI{0sbz0Y!k4;KW^i91yicwCsYkr
zYQ|K+II5-w)!+?gpk+g^#b5|6+W8a*^U;QW{kyE@()e6!_I&P+^-r-P%o_K*elrlW
z8#Wu2tP<39no^#}EJ*}Wl4m6o2J1X92|Mv#JMWT9sY^uIbzM$E&J~U*BRPk`(-8P-
zGo-9<Uf(ji61?>3C$~V|Jj2~hxV|FK8snH^zP`D3%z)T+o%62WbiQK&nWo50>~TM(
zhsQA`Bcwifjbn`J*t~bIU-h57@jw5?=fC^I_wOGL_YeDdnvX~Q-5)-rq+fh~lQq7-
zANNNg7y7<?^X6{Y`0w96Jnd%yBh;&H7d(P$aKXS1<Gv6jx~@}DO%mrkjY-X%3w_sZ
zH-i8kM*(!sp~L*itE&)r_s~t_6r;R*9K$vs>4&G36`679Y15l`;=K3H0fGZA+S9|V
z_fK<~A#J*@b4V!jJey_$EBvfdU5bGiPBAwg9;yNv{_52ifBVIs#`{Op`1r8j?H{K&
zAL2BdBv3)1uA|NH{_%cpv5O6-)1IM^PgKst1?TCW&bjNGo9%YH-|rvp?+e)qs#ymX
z-^IcXyU?jFIl(}vrYR=?h?z37kSS`MXCp?KnEb#0KmYwd{-=NH`p$c221tB!^V)OR
z@9yJ#EM`G;1{qWpwA@k(s&t|qG_7;><Ld&IJY}J;VpiL^qJ~^ScqR9=x(iCVUFXe2
zv@Tz&9)zLlH(P>zi?|^J;7SP5<r=*t_7%x#+hZ?=;6*fhB5IX+s8}IBUMwTeD2z)l
zXy#Tbk``c9Xj>v+vq=E#nLB0@BLNdAP7ol<Dk#Q?Uep+zD<WzfqM_s&>_D6><+?UB
zK*%`}(#>XLW-+F+`%ufvR{ptLR7BR1@*it$e`NlAR`ft+y_Jlz>+P110F=v+7YRs9
zHVUi+I9kYNXoOss1dH|xk(XGT757OOw;P-Zo>%=GtS!7t21%9C5y5$wPX({m%S=}r
zjr!a!GHhmE*2BcK2(lW466Ta*EQ~UOGJIxQXx?S}TTGJm-di;MRm!e-dD-A8DCwEq
z==uB%2?)>`y4AIf>naLQ>vThqvX@>bA%gkfHk+Ou7dBj}HL6p)jQFdN8iC0nt7^<r
z<7z8L8d~*_R#UK+mVI5P{+I{-<(!Xo>#~{;;7Nc|i<lhaJRY~#*KQaFG{`vvSWao0
zLY$8h*;L0gImiq-P2vb01I;OQ5Eyb&b{OaEz3Vy;h0RD*BJPPO5Qff6SFI_w4PXBB
z_UdZL2`9y*uK)lb07*naREOSeHV%Qj$D5lQCQ=b%-}RyEL(chdIE>>&6qo@B_GA3+
zyT_cg>$>aB5WHoXJ$XV59rv9BK*z5>n>LU8+h70s>xYLp&HDYj$6-K2d-vfuM{}OK
zj?JQo#VFG>Bf8LquJ3~neaBrN7;T!S0)j@yl=E?nfBf$7!`mGaJ91Z7!)EA2((W)l
z?Iu9_<Zk21Hr~GY^d_bJ{%OD4kKg`4A-HJ<RqGsl`g(hN9kxSRL|PV6)tJ&@%3pu;
zu-i>pO9D1Hr>4S0!)B`@F~<6!5IP367&Dkr1JdG+xPSYX|GFEaSeoZ?91rt69ggEH
zIa;11PYC4raUORu0&z)fFMS^ZzUb&!+_g<h$%{DaB5FIOWM;?XaoOap<672-NX=SU
zwK&V)D*v7GTLMA^6^DwZ8FEa_p2>;oZvV8~6B7~GG({lx{bn$A&d=kMqzF~GyTI6O
zg{fMdebyuu_B@*b=?tf^_FJIp;z?-O+vZ(e58T!PK>#R{?fjNq@{+MFs9rSwm-Dq8
z%Gk2Y8gWq9V9R3evDGyVmp$_Hh^Kl&;W{RuwEJp6DgXi?1j^JgVFrMFGAlEeA4LT;
zo0(RAD&i&s5g4N~yw5TjEvSi@)8pf#b0LHt0Ma}bJ)E7=no-TH@lek!RnOXsb$7LH
zN1p$~wRdbFH&ycvhY)B5x~fv3I-y*#xKCZqy5qxzZHg;cR_k-h$QrWQatN1EWc>!u
zdC1Mby$qIVrKLR$c~_|?OPpenAXdl;Awh9ApZsSv;XuuZA*;ril2{9JX79c8fw)?Y
zMFh0;|N1=OVLkCKu7M`^#*0_}#XRQn6A~H$5Y)xX61lkK8&ivv)|2L8HDD+6U2vWO
zA?M7Vmkq{}Kw1r1^}FDfWnnFbquD8m2*9y7vz&9oo|R=ho<~i;phf*Sd;`}onTBMs
z6=I|k>m;Y+{;<6o-FE2BOx0%*=NvodyAF;=$%%ZgDaJSvO18`*BrwMq9D1KaV9)4W
zo~9InBSvI$&JiOsF?%juF(M&tddIZA+4eC>%6aI$_nWdrDJOE@_sDcO?037v<KyoB
z{^`?CKMSF|e|Y%gAKs;GYUTj1ull>YD?-^HCmgjOjGf=~-Oy)X$skuZ!-scM7V&<A
z6vlDdA0iquQ$M&jpWI$;=<4b)4BcVWl;!d1@ann;<~hbRPld<E&WXr4+wZ@9`t8?G
zF&Y!yT@SBcZ4qR*AIEW46(-nhy6f!_T)Mjnk5B&oQIBIzq6iR^uybATH=EFVLbRMx
zO1S_nV#-hZ`DveWHXsY$-Cb|DLtuiw3q#+Tsj8%;MI;4kq8R5aqRbAFT(-aa>My?V
z8ym-z=A7qw9>;kc^Bh5wsi0x!ljFDdkJ2(-49-?m7t`hy0RXu`M!%~*Pvsk|DfH(9
z>ivGd-|x$s6im!s*r1d=@Q(}z>!U6rIcv^lL_%akj~+`o=zJCw1YqY?HAgK0rHI5X
zY__-2IV7_b^E`qRoTETg6%}3KqwJKmvJf+h6q72&vp{3;%+CiUBVC(M)XW&c^yFEh
zleH0~4HB0FOVCu&L=|KmmVC-IJ-@bJxJ9b4^`l8}su_Xwv<9~2`d`k)6OF0aZ0diX
z8iAx1?4|ju<((i#1w#<>okLf&1IvEDupNj&#j<ikeS4zb>{DQ1_Gs^t9L>}SiiuWK
zKoQCN-V}1SDu8MZY&=Ux)^nI2o*Qk?>}@}SgN8-_Rvj(cJ2&*9Ack$3<=VM!yi`jy
zGo;v1sc|7&99N60Ss+Sl0%e(z7V#G%mY9TE=9STgEt)S{o3hF~x3(k@k>M#jxt6dB
zgf&^K<r}RC<P|cbWwIk8Y6!rhGXSz<=X{B>;%Z$`kV5j7XFcvZMES%7X^6;^+~cB5
zKV4T9OloK+@|;yG*QrpfV{lVIFa>Q~O=^1{Vy<3o03;Mqwo=>!5!GPDmPgL)3?NCW
z4t1<k?<RzVE`+Y@qDVHytX5aT7v+(y8I~`OVHPPk5ig#`rCh#5yH_6x5K<fu(_!z(
z4rT>dL&E4hyIA-jU6!2ZAfeA`2Gp2FvW%7`YZ6V#ya%Ej0*rHFr_L2^7Kh-G5@EqF
zJ3>UHj>z}Wc~B)F1eAjDErA=m-F|mC{^5_`efV(L?+=^pmGcKRd)kf1qY(Q|kGD6Q
zo7>L!G)?j!{_%JB9}eETKl`(v{p!E?$~%61ir>F|eE)VQK-*2YxxVUp|Fqwy7{wUT
z`VQl?pTH5z)pdWI4=VZX4<Fc+@zvFaz|zfi&*(oq?%#dby}h6R_|0yL=$JnH?DbDS
zzZ-g(r^DemPSY%kK7{M5p$q5`Ai%5Z@L}6cNpdo<I?EaY4~`_|WJ*k-3ji=4X9EW8
zvmA)M8FZb0^=jMq3>H;j9LIT{MKTc&{eXlS=x}(9S&0~d9Pv+v?SJ>Hzvib=a-65}
zI38l2XGsyXaIY`~?7I)+aV%IeMtG*ryg0B3v4;D#Cipyk1zt=<VPbM#Rbz~648loJ
z{p^%1ghF<{90bKVTIrUEXyBYvgd8UV01K+Z>~hYgK;(wLzrMacj??ZDOmi|rP@~Mu
znw_MSbCR5k=mk)Vt)|rA)?ky=`kB=R?m}K$4!AZ^FXX7Qh&9BIxMEIn7zAc6r?6R>
zdpD^_TP`l|_OmrGtncg}<-%*}e%FC+*2vOY_YG}Q4GVMx%E)@v;pv)k4`u=as%o0i
z1)>lr5MVAk-~wtYhZchhs3Jo)^-Na?#6Cdo9Q>gAs40^JKp-v?I3njmXJ8<+Y6g>w
zu4_dQv>%ymK062Tq8mQj*r^d25ngQuM=f>Nmb=*qYTV<pd@aKp5wR0vnGB2GKx?ao
zRT#AhAWp*9mZA+nW#)TI8w6ZS85eL(Ik?yR?6ukVWIuxjk~u|_*pkb#_9lT5kRq}q
zjVZOvgBoVVu0Vt_YmNS02Z1A;E_FNU=Ah|4mM=$FMy!)YY&}aLD2!C31!B^E(`8zF
zTB$B(ujOmSx<N8ig%cE=iHWJq6w&I8x8}BKE|i0^^skF{IHee6$u@&&@m!p8!q2_P
z)iLpWxN`C0mvPC$$6WKJFQ9Mr7Y6`?X}@<eKRV~x^-_`o$SDF62k)JD^BtJR80UEc
zBuy#FET{q+C3`>yoDu|2-UG(S1c>0hFLZ?zqhB_}Oo-@+pvX!QlqsvJrI_+G#%WBq
z*EieEZQpN*2|#0v<7g?7LnD$mue!V2!4XPUF-pqQQUB>TKRh0F==uHq<NFW$l%Vf6
zZ{A#g{`noiyxSdeHYD0^!p$~}PY>fmGPBn=;c%RHyJ%qV?hjejqg-vfVaSN^@bL8g
z+s82$2{U~9`ueM%y}G^bQyS;dQc5u;0oMoLIZ&At)H7af{oS>D*i%fVZJT&=z1<A`
zX47pqz8|`j(r&jSCQCL&jmeNmvYKSc<2+{ag65-XN{N|62t>%v+ayV-@YFR4X8T|M
zhrho=H)~9Jn$tL@aW{>-I8BzbsUTwL4yyOlgzU;%NW?_)^WDa2asr49Rr`7xP?oeM
zD&26wgq?+ac_L;Jxlpk_&t+Smn_3$MM;r(h)QCNLr_9(nLYO3rNX~Ogk&qmFL{<PI
zN9+J`v)O<O$gFWf&FDb@9g{M1X31G|G7(cXkQUkv%_3CL4~G9QV{iIo$#GqI-o-uQ
zZMoC}7C-=`L`rO_X<BS((_?M(X>9&|nW;71Ep<~A#SH*as5LX+67GKQoe$UDBi_pd
zyFnujB#Kp;`6Ar!a?bCV^SSIImZyj7QN5fR<F~dx7O;Z@8+5Rp<_(bzOn$I}oS#-L
z;rEO+aq+Wygw$A`w)42mSH+D)zjQ909U^m-uWBtlJfm=dV62mQLg$wI_baNZNtl%)
z5=Rc071UJJd%^+$#$bph0166>utI#vab)FbBGZqWg%N;VGKvHN1L9gFrhJr=z>1qz
z+r_7kpU?jtB-XNyS*G9gtBw(efCB>&xoWS4S60T^A``IIpq1&?^YvzPsav*Y=zmX~
zTw;(7R8?FD<93v`iFY_9oYVX(bp7(Xbkh)YL7f3E>DhC=Yc)twdw>C10HiFrsLr*R
zd)zCFQA+mPw>;)C_AUJRPkR<JVr`=A0@gT_H+%_?NPw(BE!hRTpAmb6cFkY*d6Ko*
ziCHP$ZfmzqB4R4VM6J`_O+~eM(xM}05sTK$5ZA#q0;sBFbF1`>`|O1ib->7SkE3c!
zzuav6HC!Nlo_KjLszbMePp4xbOOmEM-600Sp}^{R$kQp0>lFg*b~`g0avE1dJ{_fK
zN+*%5RtThk82|&Fa?awD%Q8exDI=B`XdG$-%*-(cW_DUB5p!fj7y|(g>(y|*+vXyO
zK^4@Xh@_N{C%nG8{^Vs|J)|MvXFs@F1thb9;LpBzwO&2EetSP<`}MECp3*c9BO+g2
ztzX=3Uw*O~LV5S@ZaQT%WwYxIKf4+Oz~SMz9pd`=W(eWix2Myj(<HCIyA#br7=~de
zB4Db@>v34G<L&kOljqy@peUzR<Wr2N<B5<N<0rSfs|^RJ>spZX@_K#$P~LnvCN-ik
z23`$Bq(l~n;3<dx#GB#$esW+flS$4fCD0gS)dO!f+Ynep)F3irh{t1=Vqh2y|I?rS
z<xh7n<l}>ud_3-_d^)D-C^>@`v;qJ_wDtJ<yKhT1qA-!CNYo(}GxylqUc-`W5Xs%O
ze%6ynT{rscN-gxXKUFEGl+)5s-$4Q0jMzhCocX6<rdEm+kr;rOiODHh$brM4S{R8C
zJQ=Os?iAw~C^Xous$>Nr0wYADzyJoSNQA(QVCb_cLKEp;oO&*U5l~0h*}@Ld-JGqU
zAnY|Pf~p`82Wo)pQfHM_!D(6w5*ATctC<;yOT~5ZDk9<;NoU#eKE_Hcz+r9kXjBgl
zn$deiPux|_*0Nm7U9Rfq1dhs(tUEsi3q)d?umEELiilKzkhBydP{UHY?`o+u!hkRm
z1|*LV|0e54$tMSxGMWN&2r&?Er_*pc-IqM6lnz)0xEyRgS(iM{nq8KFi$uuk@g~F=
zcs+7pLIhVlff@k$sKC2o?SUEQV-sR#k;PoZ(G7Lj2~BBO?I_yCeoJPSZ+UT+9nBvu
zVV}x$fMXx9SexA9BUbsM$S|jHcNF8S{1O0U$D8F`s-Ko9#^6LcKrBU6qzmk^1=&Ad
z<#rihpXgkaLCZaHqrn2UNE8yI=IvbqAQw)ox#BlG3r?mQTU-Cb&4JzwAmVzx2Eb`L
zl~RhRsv-p!BxxgeFJ66czI|O|FIe!4$h5v(5MRu<akL^ZEToQRwf$YDXe_Ic1#8;Q
zgR0C#gK1_aR7K2^rc#d6K2uzqq|J6iWJDapro@;+)FK<*=8}%by??$_&H-wU3Yefl
znhebXLk^mzX&kByf`}Scf`O0<6Z&(2-dlxOjVm4%YwOi%t=HGrpMCb?a7?8nss*R=
zdUf@q)ldHX^MC)%H}5|j_lE-!uh-)+gv~nK-mFzqDbsEpKYeli><U!Mm!Dj10-#~o
zu0sew6cN@jq{N4#ybYFeQBz`|A;iGfSG(<I*lh!2iNVMcLKuhjY6v&m%|L(#FLrdZ
z4PaTahsDBrq)%>RBsfkANZZZ$@^<~=+0||vrfE7H_94XWcDq_{zI%H#JLIBjNJOiF
z5i}POK~?X4qyON>VHDMeeY$@*s$l?n9#{YQ$A1+cPPt5}Oj9~NoDL7^bdszDSu~U3
zdVKwGckr6rf21OQA9(I>3%{aLQV&0=Rzt1HXkAQLx5Hida~_IEF#nIP7OwZ@vKnki
ziYmPJg)x$-K`z9>t&0YrMM_E#h?&G;IDlDHwU}C-j-Z7}v>cInn)V{ecZsIzmcg!`
zWhO&lL{iT#@-nq!ljlRtT2_1;S1Q3`0@jZSH6v)CpPJf+6<pg5380`L*tMx<768nA
zFYSjSEOv+XWcFE$%t1Tf0jrvCcx@T2TTeS!P^){>-n^=F#NM28*Jq41Rds<O?&@yC
z3Ne^839%vtzyLrHOhnBL8O@3S0GW!J5hDTwpc|wy(i-v~OL;5#!D|p6&@ez`q;Xh*
zsSxEdm6C1ItX!n^oo7isp^N#Gcd(~rLL?X?G50hD(3+c514g6~&6Zt`R$5tK&7K9e
zx3%A#cvy**bLmhi<-K{N`SvBS<(GMe=}^-;=6-5bv1~e*Hr96g`m_g&hzaCUdgQKW
z54xw^!xv3`0c^{-+%`zKKxX1nRNq(iXZLsi8=HshY(Nd*e&M$0|6f^TC{^x9%V?}>
zwbr{gdswwv)GTTdRdcqNx4$hW*;fPBuF)EO=Enh<iFKJ<?@3_Z8M*u$(EynOA&F^U
z`L}OGyP@Ps8|Pzrpbta>5ezYuoO8~arjf>HYqU_}7>A(%C{Y9qLyW@^oDq;y9>-OY
zTyj#CG$j?%0&1Y85GaU@0fQJOO-TcTBNt)}DG4!B078z#P_j2a6au0D3xPuf1f&qx
ztUx!r%``=kwTK~DE}EunpaSq$KYevPl~Z!Mx+2;*l9}%Jg(C#u+aEnAKngg9h@c1o
zVjuz)3ntei@h0Z0@WW3&ol=InAt;2r8sjjMX#xX6iy_|J-rU~aZa4Q@Qpo^j>rK>r
z@-i|Y8DbpqN1wg;<Tjg8971GzcDvbb!fHLHyVL13g&>>Fngb!z{+LS()V<n`SDQ76
z<P0&e8RVRYVHj5{X3j<5f7~l@0EDdn&)@#yv(;64|2~z|l#a*gIOQ~zoWZhb0j1UI
zi1_Yw1R}Q^Jl2JV5H_1FGw$~uT&AtU?T6R$P}c4&S{_WbAqE>_WTGieUEkR2XgnLo
znHi|4hamYVt%yj`I9QB>s+B2aBMxgqbY{NOAI(5T#Po3ZxPSOah~qdCB8X_oVCwC?
zRBcZSY?_B|6}f!YBlHW{`%|ldz`fV#$IY2Q8m#6Snh`>!64p6F{d28SWa|A$L@{8_
zrE9hR#6YzU44UQ{=#iwz`VDcJklMAI9Y*bfta=}uEe@&qkNoqp1uh@dw3JehTF<U9
zFoOc3ppjV-BO+07?58QHBQ_Kj3K@`LQDwq4;tx2ik=8kXr{#lcF%?`J4r*$qAq0YG
zPzX)LFF6<M|0&wWg~Iy@ncE^*sk@(JfWV78dTyrcgq{&$;YDttgWYkB=J`=De@4~l
z(Ym?{UTAChKAoN`TF1uq*?+}j&r@Y<5eFWOYl{rZu15CS=uGj{!!8gE<_cQPrZlBe
z{2L_V5QY{$cqY_Xj(-+fw6jIP`H%N|4M;v+Z>Ncecq4&tKhBb~`xkFZUobWceEX-K
zwr<PX1)=55%l-X5BB^Q!!H>I2r>u*OmIPvpY+x7J)iH-BPm#{>IPV0(46#D8fQh!7
z?KGVvOWR=sp3_vGT8=zXHub*=+uhcR9CHQ$jv-G+D-viN(N?TQO_Z1huz@WA6Axjv
z8cHcsnoQRzO(6skNmEFP{Wt}aNwlbdff!I0W@LgXl^8fgLo#M8r2yJ`7?FUPLm=kh
zk(I+RAS!tmWVjAs5y2RMrkqzJGgC@w6>(tQ41^SmNKPrlkaHQCa!G&|xFFyV;y6$#
zibU&il~PWU2}wb~rZEsAZdXB#%uEGMK_O{|z}3$lBQfK86?2NOUS91V4k8LxP{|a?
zU<g4~IfmV4XV;2^LyRh!SOLo6An7<EqDYyhNdaEJdHd$woeC3EWVpTA451<(oKUk~
zuZLj(fN?dNpu!O2dW`t@fA#0T_|adK*KZYaE~kfw`_puKn2wW40!b<m1FqL!zx%GV
z*aKv$OqRuL#9bDrQ*xEiqVB6Q+6tREqbgn&biF5V)tMg;E(@w@U*38!*V5CsP=@MQ
zVx2Dn@5>EQ0D*$TFv+);27$?xj0lR9Qv$Rik`8-B3(TNOW`u-b>XMl@4{hy$wA3`G
z5i6=kt<+sF%_YdCF?zX1MKlH^fIv*v1>@}|ptenN#Na$C@HrKRz##RMv;}?sGHu>k
zX8R&*xn(QXP8)mv`S}dF>eV}<qX*$FVoIBV#Ow*IkEtlnh^5N(sB11n08+HcM2R6%
z6hvezir}*bZ+XH=ifD-*2FbJ{8i+=sO-ZrHyK+o`FboD@CZbuTI1{G%o2k1|FZ!g%
zIF2P$<bsm8Scm{3klAVoF|Z%J-rT@!h^{MEngJVb@2ZX@FcVYplihRjm_13bcEjFt
zSH5?*SySH)<2;!KBKA9DzN8l&vo@>Y(<;37!k+6Y>Z3w6#IQO5O0iT#>MMYK{=D=P
z)=|gVz~C&O=)yX<xV$g@va_U->i0#23`mPGB|Hze_kA$TR=Vojb_2c-7lz2>@G`LT
z-01p)6)FDkEVDgbzSeV1>H*ktJ7*bb^`F%*Va_n@FH1{;n9@|FEEu2jr?Z^RJehU<
zq{t(Dc>e*-{8It5lN2*W5X+|mI;E+oY__`)Rw_iiio7u-<`5#8T8uobMp4NrO~+F%
zS&EdDP0CaXn21>*VKopTw5doaz$8o-VqxZz)%OvOFLkBQG))ejZb{MP+6@3(MMPpG
z3alX@BOnBzP^9EiQYpizyX*CSzt7X8qG`%1^-~z*5MwA(vLp^vD<pq*1%Mok0)VJl
z5RpRgj}QS)`@`>#zYiQ@;PrYu91cXp987E3PK1GJ7?~&{2%#9GNXb(g$8o#cWhuE7
z5qmfs-hbR5rsA(r2sB1y_Lvq!9AXILxQa0xkH@?FheM{j`(w%U!`qkt@8ADl{Q6!j
z$B{qYO-b@e(j+CRWYj`{+x6Sy{scfFn1Y+<iKr|FYkpLvoN~^7=$VPD52{IyNDNF1
zECyt=kD{I?Tw?|drfFKTZ2b7}5}q)G5d6Q^-v>d}h&|sEiAZu$Qz1cS1Yk9tGK~=k
zBSjI(#h3^XCl4G1^>8>)Eh&qLCkBDE6`HlTPaLhM9yDJ08=|fV7S-7ayG#*ZIEj5z
z26LhgZpLv4!D&JL?(~vH+h}s`w(DHM%Nh(oW~SCMEuOka7OcW94Cxc*>M&}`SiI;?
z@B-QM1Ur8IGqq+^%v!J|#;AKRYW#5f=>2cAnUNL1V8Bdj8fsoLsuqD@R?O5?0vHn$
z;1%=0<3M>`<lA)EOU7Zvfuv-S+$24{v7n2n!N)l9Cr1bu>4eTHtk6)jK+bz;wxgDy
zT(!vRA7y1W`!DUnTHp9$W&PX5u6ka7!r4s1>~dvGRL9gl9qoFlE-*#}G$f`rcsN@n
zdR;OM10uQ?ze60`m)b4{^a+#Z?CEZX$m2M~7?&>mQi?7{&=>Tsel1=MA(q~xC%gbY
z{_eY(`ctzfw4c-jfPH{r)gE1MEQG*BfxBY8*P4$<Al(pVO{=D+9-VGa6$;C~A6q!f
zx#wy|JLfDV31UU7xAGg7c_&W>XfC;67hiKQ5yuLaluOQ)jL$(z$!V&tKU0RJpdh83
zPCTqt0Far7VT{p+FvRI}I;~bJc03-X<eYL&nGmF8g_0$K5Tiy0&B};GG9`@xU858j
zh8Wb8nFuMwz)T@jUoJC)5e4>J8jVdg5aPf?T#Eov0335ExkxSv03&mnrc$J=YGnFq
z3`2~ndOV&~#J5-On<^>}5)skrUS-;Cx8peEk`Q1V2NlV=n2H<we1;POn;BIxVF|&L
zdJRmGFa$oGjydNdve|BkXdFf&d^k=Y?xvKBF|9c6wyR;Fz&M2HF##&&{{DdoQ%XSe
z{@&idJxoXZ{L|;#0+J>J`FMACf4F;?_V@X8)RIt>iLJ+p=$reG!qKJJer$EMLKAs{
zqKV}CT^CX8MO>f2AQ3-?SoI2&Dg(gI##84zIcWdL*UYLQ;%SBK1EHqv0zU*o2uz%d
z=mZov3}YOIQnHzVs^o+-Mbg);(nFZ)$jQ|EJ`>MIv+CtkotM5^U$gq=FV?+t=+JVm
zYu!x>L*Q`;fl0)OxL;i=3(nD^?Cn$Qnl$K4B~@x+%ooQ&$0QNfasPta&q!o-IS5s=
zyck^5A|HNvqAju@s}6dxN5G4PqVvEPF%q_*{J63Qkx11}C7a-2w1&81QXgXzqLCHJ
z0$}2B|ABys8F57ZG{TyBHRW$heqZu~iQ^Zr4rc8#V(U*r9v=SymzUXjB(M_Wz}!Qr
zU5j49Qng*9Qi}CikM-|*d9YTm3=%cu{+y<SEk9w#J6~WM%{nr)voHJJfT+DP=z@$n
z<Dnn!b3##T0f|UD=%a=&`2Y)5!M#PQ3P8g+gb+Ks*!QL)B9hNy_*@ab2wwR<)Z&Hi
z(#)tAg=8*|2uMTELjXftJd=1?OZiQ0oi0NNXvDs2u>}Q1`(wYXVr$N#noA&yw5W0-
zHy}Cg+huP4A}pVl%4KWeQcGjfd<4w1D_C$|;mI+~_rW@PK^YKHMe>xUG?^G7h7jv3
z?lM$WLfEX=6HQZ^0Hvf-#1I1x>p+phNC-kW#(@S3k*8B$t)b*pa@`Ya3dm|&vI?3I
zDnkU5RD=nbECfioAQ-cS0I4KLq%kuQxPS|p;}EfCGJEVCq5mBzn1z9dfe6P`%4!u&
zw<<7A$<#_Ie(6qA8siu_7T4Ai5n;{+i8$0ys+^J;+&+6YL{53~!YHNWGJPM{R0)F`
zRG|QdFp%d{f;-T7ni2pSVo|-n-!q5ZZns*E`0jK(d5fk}vXeJfYg!ML{SafgzP>^?
zk{Z3gf2$f_US0j)|MBnb-NCeomcwCxn2rzWbkZUOS+y_^*H^!O^KD^<W;;38!BVXY
z302iyG)?Y*shB515l=$2^V)40xjiTE`kesX)CUllJRl+G?2oC4kHN`bPDE5uC3PJv
zYXtxRAOJ~3K~$KB0(hIth>|muID|NkV_`ZSkN#@a3l)}UmoboGZD-qg>DX7T!Yfce
z8oIW5;itrYqTwSp-u!yG*B&V{d$J88A&O5CYkthkQ&`GfJ5R?|($(y*swQ)2+ETaT
zwZG4on?JHCeVQ1zBlpyRn)YguTGI^94U6QzWT{(SHXjRl`11F`{zo_SmaA6K%!=75
zr&16NPo&p8tSJmYsKEUZQ8Yy}skyj>L>vHbiDHavmUWhIi|(Z;5||0j6PhKZ;Yknr
z<C)&lbbbznKtdpdKv?r+n?y;)`V4I5gj<cza*6cv_U$nvSV!ev&}jRyQRSL|!nqM;
zL4w1U?TbjTynwj5U1!!sB`oU26sl^Ur1&n`A*oGsR8{ODFc?gtMYM?c%@{(6F?9L8
zs+5wo2dK15sD(!_G<%P}ou{*as=H`LY!YAqi0DDa0JB*ZZ4s||Rz*Pv0-%8*VTgeP
zFSPuyB--}Eu^thv?ol;FVseQ)K8j7G#b*Z{!_$_-ut?X2rMDg~2LK2Qn#!_9d1_q(
z7m*dg;Rzmzqaraz|LlihSglsWFt|#><;sA@JQ(ufFafFL2SYL*j>$y5V~xA@db?Rq
zDXR>iFioeNb1Cbbk`s?Wl?h8pfMQUJ39FT?h{}Xml(Qm;|AE!T6zXL>of0!)Bc^%-
z7h@#O&f^Xt7~l|Kh|XPy?REe_DS`kZma~|Filv-HbV{j_Yr>Q!AO7VKODWUo1U8sj
z2%)Itlw50<bM|p!DdMvr{~dD9+x2P~ShY|L{zx+ij!{IXoXyhVnBp+J|9G4x<q#0#
zY83-vL|BjUYPU|OeabqHV~ka$Y!p*^J00!+{P};l5={HUwBJ7*KI~8XDW?LKOtXp*
z3^%*Cr^DWqIQpYFbNI0BC7BRCHBbA)=b!#Xf!2Ge$8dx804?~4=9iEWQ>|31WRbl4
zwVGhiUjU1YE&PPQ(9gu2au^0eWQDXp=5bhW)}9$Y9gilJr_p6p?&frs%dD21W6Z#J
zYaKKAeY{{>B5;-kY-{m}C@`)94KcLfUhwIF89EdTdiRFQIWRo(MtjCH14uy9hMaHg
zx@Ca(GWNU?{LcAVeug&{rk#~XShtr|^&>tEJ(Hzhs6`yBQq9fP8AVN(Hh(>$nsO1v
zEFx+XmI8LoutAQ9p2C6wO|Sr|k$Kp%Xz*te@QNuit`Rp3-;{i(mY|hTh!>vnCuzeM
zlHH3O_49FP-QtJ9tMy1;<ksZPvq!+^?KS(c@*}$!wOZAdoR(gIo=;`fZ|~(#?2IjC
z^^&Y@rlIxmFIHM=Pd{ii*yW>JhgFTgx>zuPsv-L$0Z!NOPq$?sp{HT1S=J)+<hia%
zTSoz1ba??CdlI<qoqe6A^zOgkYii(u7RxaPUV>8%+%a!02gTGh2ETo~>eB<kTrEe-
z^Qu|D8k>_`h1uK$4gy(hjxR}ST20w{*6u@h_${Z_y-58YKDl<m`(m|4O;<5L)gi`c
zrYR*eLnd@QHxe_IlH(AEA^O%22}H_jy<Ts2tM%$|IPM=FQpy07ixS5`YqAwX5W(QX
zoq;)QQpuo}QcgK*DN@A5^B2KNMp6SQmi@gzw4#OvxhSC#C=tXMkPI*dVvfO|Tknh!
zk%>6C*4IJ^M9htc>8Ld{q=<kpP*`a+XMF3Z21Qi0b|onl-^#d^ECkLurPJio{}3Vo
zsuqu_8-@`8QcA%|3ngJqN&x^Yr7#CGkJwwqXsM`YaULgq^X?%F#9=H#Lx{W0YKU}o
zy?u6bb$16mop!sOOWTm}<K4rXxBFe({N0y7p@(8xrgAz=hvV^(B`3*6ih#i|mKeW#
z_W>xXzjB5i_vZ`4&UR*IEG28QnLvw=kFa*Ym5X<8;fE2NH)PtiKZsaFeCz6{JY8J9
zW`H#t8yk1tB{+Ve3nFn0ff&uE5BKj&=5YX3B5>$`!|x&?`M}u~%;=fhqMdrPI5olM
zySa@Dm-D4_miqFb^C@i%G%&k0ESF-&NFX|oowfT<npjE!zArkoE;(JBCTGQsEs&wT
zSTUeRg(h1RM*dn?+ay+yM7I)E+P?SbRxQ!iZjQRWMle%y0|Ed74nwSI7SKH)-IP+V
z1rZg4EZ~U?YW6Xol9ZdczM`lG5s(QH2!KV!G^-W?kSs$0A|R$UVvM+oFl2k3%6qZB
z*39|G&)eg);|mb<ll<YHRpAHWZj77Nz{J(OS%<n^d)!$YHQE{$lKFaJXq^Ex{`sYa
ztX5HKKxB0$bkU<1KKBbP^Dyc)&@SFKcz{RSghh}86C!3QRyPZt0%V$t0cG)Tg8?a4
zRSo%!*JCpmG4i%dvHU)-*HRgG(fjsyfflc+H^E?vYD+O)Z6ArW6<f<|uM*sx8sTd`
zM3<+usSLH~3tW<$5s?GSTws~C#NP`={qpELdz>!2*t0tI@hJYOR0iw29soTv2EwIw
z!55iPRZA%$gmD~wMQ<ikN^jr39mXNXczbiJfZ1@$WgEgK4hWXh$z`ayh>4o)r?f|A
zq9{rNfngm&BpyYSIIh+>O_QmrXimvY9KV95p0cW15Y$RWBalpFgaAcT5kL!!AsD3W
zb&roR0nD%35Cb7_2(G&eAy$JJ5fK{zhk(QY#N=XY@)87zeOs!&DM4qs)%P<`Qz;^{
z^-r{vtZE^|7$Xs?=yW=Xh=Q6FPsr&2Smpr8>-A<_t#{YA$I~PNheO_MaCdbYluYUQ
z_4?H(x3@P~@^m;-%F}AS^4r%xro&-+|8D=|PkyrFQS?|e8^~!orjm~(XDJ3~OmTPh
z+q(}(u>w_|V+tasS{9rKE5(Xn$sQ6=$FAOREUgF&2qitaahV_N<?)AoXi2l=s*gD5
z;{yOpL_=ueX8=TCWLWw*&FnPokH@fG!4MEIgg}O(az2i$M{I=&cQ2-SMQgZpOtxgg
zOQ*_3Dog7Lu+e)7fEhhUg$RoX2sE=`mAUm1G&I}E#dx`Uz#3byK@D;Km2(!XF8UH!
z5bGC5*gW@hz--Oot<ygjPavTxsi>+lp?f9Ij5v<<uOlTIhUmihb9oC@%ZI55h?p9R
zRbj1rtL`<6S>|C!al>&itixX*1$HX7Yf_^*1_L9}Ee;{#ns7bIYqbZn>Ac&1^49rZ
zM!{bI1rcBs@aAeA1DV+}32|l{)x{(B>(3_{MARqfin9(G&hN#xziid6-@a;ANe>8U
zi)gF91)zRY)IX?AmAvI5Kp?dCJoGfr1yCFnbfFSgKvFe8Dq`8wj|_;>!IQNFRuvJK
zU$x@H@F}S3_pv`Of9weJV_d&YBdF;L_(+LX4elMwdNy5G08l~#WscN>;d|ubQ=4d*
zA+KQIQEbY^be{Y_0sVdo(nq-L%bCysYmyl*z2Hw2g-sAcZTIv<u+oKIIy`&!Y?@BY
z?32}T9COZ!KuA+jLB9VuP1E$x|N1tIOzE^*tzLcd@zYn&8I_1`Z*LIs!-o$kr&7xC
zcp?fRj75mTkR^q<R$wziVpUnKM;Af(Y@~>!DVd2#QOTyIlwuUg%q*K^CNL>PhM;1U
zq(W<%08t4QQIQ}p15P0j5rq(#2{8GN({EvCP_*<ea3umFdhd)#KuBN|2*5%Buqsd-
z;^=(1UMyqVvemdyS&J0^HArA8RkQ8fQ=}M2PaOfIA~+@8JiCAS!!Hhp3}Dy0@ssDP
ztCd-q5K3fXBIhc{A(SG=eTIZT|FfT3%3vZo-S0mnNvDz~Eg3AC>bT8>_c;TH$V4Kg
z2oic0f(y%C&<|4l8TE(2f58QPX^DLgA*f2uXOQPhv$?iY3ukJ?JQ`YDz5U4}HI<Um
z1cZnfI5IOZw-3cdZ5oKD<8(}kHsiS4BFB`4kPt}FzkVg>dw8X}Xgjc_;dQ7D&Zq0F
zg?V)8&ZA>o1c{>yXzP7U%Py_A^1WqVpk*(6h{g!4M^zCqQ=c7N^b<%6Fk;(0Jzmu>
zBq7$U!N|ny6n+&3hQ-CNstfq84@s!&(Ns0(;=3`w9<a(CT)eF+CZa{P6zz;+KVTK?
zKBYvG2NQ%H#etFB!^&jJhJ;8-s|=hB7?6;zFhqvcfGdMHVsBMWXw`j!@R(`(WH<ao
z0K>e%HbT7Fj@R22w6D1rG0a$1PNIfD2sL)H)`bgkICO9o)ZoI!7PkflnCF$%g?a;y
zgP8P;BWxC+=2)G@J4Dz_zip$@mW*(jYUM5?WjOD!5EYOR#h~Pxm<fP^c!-gzfgOBh
z*6xzJvqAXZ{p-nmsyWcJP942?cL)wFxn_RLR^b?+f^}#)wnccA-Fp-b>UoZGO~0N)
zIjb<4%)qod7t~ewYRh=ei}}h$nDoV!T#q|5-{hQY@tz22T^Py{=7>XE&aV4!TX(?2
z5JO;9J)KVe29{Ei<SE<7Lw^0{;rG9Pe|MM7c(vIakB8HguD0KP@#*uQ|Lli9`r<}J
z1M_CH){>8>f`lT)3{~qx@czTYw{P!LR#SL(d-LVzpIu#Ti690NwW1n_Fijb9Mh;|Z
zm?)U3mYji#hytr<1}LQ{fdUYi5(20qd9JP@C=pQ*0`rBzFa%$H#t^D~gNTsg5FDi+
zI3OW&0IQxne?y4Lnt)yv(4jt7A?s}^NPq}d5FkblG1e6x7*cE#9QHdH2$_`w0YL~j
zjxml`pS{|ekr@W27>%Kz6+%0mjwvNFh(jdA<MH%xpFVs3!_Qy-pxo`tbUdWPF&$4i
zO<IzcLa4(q++6?e;bS3Qtyi1P=5##m_s1?^UU>TuDby$Yk<j$9PLG*4o6X^{Usit?
z(=hZw<09m~=V)L2wN$s7nVNtsLjP#K##E$;AmV1T8OQPchYyexQsyzPhE<lV0IJfN
z>~r{F<NB&-3lnOWYa8m~Q!HU@c<KcfyWW>fG{iWBUU^q_*F|E?lewW!j#AAQ1NjPa
zeiTaBz!7TNL|i^J#*5#X0MF-Owc@NKefK(>C%oa~@4AsXu!~Dd$;+JDo{{HQg&GvK
zB3eYdaL4La6Aa-fMbjy(lxWvs7=XxGnMCR$RVgZHDy$w32*fl3KMyogSWP7sd?R`9
z35fO>clb05`uiScFh#_xRs6y2RiOS<7%sdf+84r(JMwO_QTV$-v~Gl#`wCpHUoZY#
zG*rKo)g;uYAM@H=p9-#D^wzDeVeHAF7xt=}?L&37>8w=G2}8fTU4vK`qc{wMy8-<V
zaA{;I1!hlN+kHH>egD3{E&@HV3qQSnwaT6pw=*qnFT*;b?YS4-0Buygx5Nm9qEg5H
zEzZl#$Dg#s0d)nU*VYQ=`XDhYqG~|i$bwz0a?es$`)sNujV^E1K106HPA}fvi%&`~
zDDD?982|`HN(hldD5d05a!z9U@uB?gtNY)4_3^{|NfdWi+ud$cqzteFE+@4=zAf@U
zzZu5x*{cnaGEp2?J0uZ#csTmVWy<pI?(i@F_SLuV9uVVt9JR<NFRq3ltM$MXRIL;{
z9DGkfbzjS|8mD715%U4H7AcdNDrza29QX?arL=+weOpX~2!$C=CuKq+V=8WK@?swj
zUWhxR0&0&;L>LIcwa}`DpwI}KExL|W&B6T$$RW7;2N21f++c**mBxtdVjYLjB2kqo
z8X)4hh+ZLqW{rR`#>fH8L`6k&f|s|?fBNZ{A?nc%hw0<PbU$f1NIHR>Oi#taZuhZF
zZw?O=fTcu4J(8tgem;qZ9y|wnvA1|qXqr-Tqakw`hS2Ry=h!)%9Tioxd3O8a%$8gF
zpi~hME$7T(Fte1B0TOxhhArsLi0JC-Dy4M1KVXjQ?G}iIL8U0GOIl5ofYgeA9HxqW
zB5ejp1Zqu~+Ku|UU~bsbRZ#a)>WG}x5Qf0M0L3|CXr9e31wmcJ+ct<Z!^Ho%eqQ(4
zK-W+DMTj+nP^*=t6AJL`4R5j+Y74E3>w*RB$Ey%gskb=P(xF~G?gps?H|_A}$EsBS
zUeui3?Za$yhou=5Pe<x`r>YZ{oFuDemFqaJm{^g`7)Tft0)dzU8#q6ZRG5hXuZZF}
zYyzzkeVfufK*CuI_ekpm-^ck|Je-0+k>S~PSPg(+ghYTMb^hTW<udWw7Wj*<=uv;F
zwbw0zR6SR4CgbXE7FyiP+7Y33{M)n;U{*@0C(-gv?8fuXNmaX$VwiT8c%|BS0&Z1x
z8>U=JmMT`QsYi8nYHB5yR{G8FGCCLcJazQK&-Qp`d-m&b)&mm|SF492nED;ui<gGo
zo=w?xfYf<0uu$jM_zFa?<p=@0Mywxh{uL3|hzp-7)D5s`&zT^uzVGE1e<rrCHKpNP
z!=s%E?zA(X|3o&|#aL@e=I!0HD<V)-ou){PheP@0zrXwDb-sUqaa=!tw*8yG{mEt>
zK79O`GW`AzufKV_FNj~izWeoW->x^bT_b{u7G_4klCv5q41ak2_Se6A^Zs5_VFVZ%
zZf>u}p_KA*|6o$+{m1;~-2sTU+s!x(<2d-pivo*kputqZMg%b}SR$B}k`W6SXilm{
z6~V|%!0W%FgkHFmz&ZqGLM8<eY9McBGLR6+)!k-BOuoarSa32UF(IJ(uknwg{!;=c
zJ=xj1#6Uf99qG(YPBj3k8(nH+QO%*9VBz`5j%hRlfYmB~@x{0uf*#+)_N1pgJ>-Y`
zQwowqG8nE0+OA)}{Vsz7&@@fcln|)LwqL+ED(dH{h1rtFbU{Y+-(VPG4=h_eRrMCE
zu>g-CMBiIEdqBE~h!C=vG6(NGC<ZbzvuT>faa@g~s)mvecZYO5jpHCH%t#y+$&>_&
z8X&NNnp^!q&b<+fm&9PsUR<~@X1$HplYxoW!!X8JbL12}$V;2w>HJ6J`?)j2v_p4l
z0-E!cW(B4zL+hxjKR`|Qgp8y$oS=5?W?D<DM%AXe4w*%#W~L&Os@pycT9RG+9r~b;
z=AD9_Jsk^aNeg;1H7%l|mPNeiZQtoK=N!R60X<~uzD#14Os;9zP#BQ_hztNw(Ns(n
z*dqi$BOntn;EM4DG6ReV-=^};%4DE$X7YH9eRw(p*!fdv*Xz}bo6Qio?|0^*t<SR1
zq!w-79c%O9kj->b|2F3|NdRz*iwImK6I2O)Tj6tK!D7R7EW>n{<JlfA>)8=a^rW~r
z?!A@p6p$)pX~93$j&A5LR<9I27S=y=_kh$9y4sQqPRx%PpBI$!a~0KW=Q|s55uocO
zRZSIJ<aQ&QVm&mv4yEE(x+`z7W$#^(sjt%Nf>mcQORvc)(4MgK`>MnOF>qC8LEFd^
zn9rye;)?b`n|Yhn{wXv&-@Kpd-R-g)?z80!Z~arT7PaOMtJNy!9D<v}`0nBGFTZ;I
z%YXZL$}kT6<(Du1;?F<%;)^Y!UGHv?!+ICq{ll+M$Ei&6`rZBCgfEQBVZWbFM-eNf
z46D`MKL6Wqzy8(lKb#UFjZ6jryWQ>wFR!k)jAr}8>5t#s{kMPl%5c5jtaewcFFyY?
zga}aTUPOFa6NrF00tn*T%u3E~p~Wy_&RB9OlZp7rON~8<5VJus085NUjv*x<>nVVF
z9uJZ*qk(#w4l=b-hRrQ&T}u*Sx7qnotF>jJYAo?j%2o1B#@d%_W~SWGHcvp+k-(6c
z0T^o_4Y`hnfTog(k!~!q+^pB|>^6N>>|HJ<akD<D+@;Bg4BM`;G1INtZ!V~QfIvvy
zeWd5Y+9$h;oO4Q3zkT}|<hM>s7u3gI5nFbGJ@T_+w@r$8+d9Mn07cX(DE>P6qwICk
zYFq^l$LaL&?xR>)uUF%0L<3PHt0qW8G^i+Mg#!Kqaqq0n%)!eFqun&#n)?Y5L)eUQ
z90o@RJIvB$L~Un!@j`avuX!%blcR;2&(;e6Ivrn(AJw$V2F<iUZ+cs+t+gv|cBENM
z?uoY0oAH*cItz5`K!VyPkV92IckWdOJM_7zsw%jAz{w%l{-%agv^<9jhpH=fKm<H$
zNmDstzKP>)T&<Z*08kJSLNHZR5<xOmv8V<CNnjwlVH+^6DaL7ftN92fXN)p?awU0r
zF{3fkK=y1K*MskRXK1C>TdvkF)B>`Qe7A+5*jF3#m4jfiXbN?q13ZWS{)s9<wN?}z
z?0n9$keQ&|;T~9b&wYMWC09Df3nF5v=N~xn##Q<ugkcywc)O2Ye2%eLMu0tq)V`3Q
zU*OV~sE+QUt*co8RKq?NLs%LOyv^^eckgulTh%%O05uRbX1~~Kbc7UXF1}v(&x7bH
z^m8L*6|5PkQ4Is9CXnu=Rcf|-MS}T5|DITd^K<Va3mKOk%LSkEu}7}jkoNn%D^XYL
z^{^Vg`fmTPzu6y4V79;b%g=xIlNZ}Tv>XX(jK~8b6)DA(Ll|yvUv4(*>Gbw~zXw(3
zc=P;uvEkdVzW()B`%?}??8H<;`|`_AUcI{7#3DuSQvT!DZ;lU%B42NZzxwHqe)z@n
z({V4FnZuOJ;W*vh<-h|6y1Ch0UG0b<7dadz0agW#Dj^SuX*#KhN&(eelByw?NC6WO
zARJAE5vlq_6~Ku7XRbsDR(vYs+u}AaQc-nrb#-Te1*Tb`XzDR#M5Oi1uE$o-WJV-Y
zX$Vq7B;p1V1m_QtL9Y5rL;_SZpK^0xml1{#2#{)Rz_^B0jI`Sg&&TnbcdNIP;QD`j
z{cQ^ywHAEV&`6FJGLsgCMt~eVLj3GjesY3$ZcnnF`uV6#o`YPUkm>iQ`CJaz80%E2
zPT;N{2+TEGTU133hr=)o!!Qt$4nvG#2ywr^Py18aAI!i|i73PnI2a-@Dx!&Rk_;+L
z)*WI73zS{Ir)JQBhqZwP=JhZPF@(s$pOQswu_&1P8-)w|0k-&@Hh-H3Q1!%UQZ=|p
z5AAjg_inW0#}>r`-Jxg~22;ONXTFdpGCg6R@Tb<p(a}r|$pI<Mq<YD0a>^STn9O22
ztt;?(0qp0gsoJ?76acf@2c42iF}oRTWylC21g~RENgSY{VkS_GNf~e?4g`TT(zu!E
z+mb$_Dx%t-+C*M@ngIgh4{p{!c(xsa*V2pU(^|p-o;5dw2*hH>WJNkJsrJ4d2wIzd
z1k*D@vNv<f2g7fTWwu1+OCZ(*MAZk;s_H+{)^t`XB@uROT5We*$iy<kY5|QwQ7I~b
zM##f3#1P$=;a_KI>1QxY74=EY^JB2~BV1*Nz|2s*CC#Q~9NAKzWG(0bn%}oy%-YIQ
zGzZtzP-^I4bH-(5kIh2H#6BAkkp}Xk))osA`6HmJDVO3}A_bdA3(&eLGk~H}H$Sa2
zUY;9E5O;ToKy`j!)+mn|Cd>XLjH_|55zJzY0(i>d`t}us(`vxK{L3$X@Qle$aR?&H
zsH*z*&4(!q0FOg__Iw9m<G8-QzRsyAz`MKYUw-w6-~8^L!qv+wR<Zks6LZ*Y$G`gP
zAHRCJ4wwlo^0?i8G7LLFFq>YyyctF+1&b6wJm&EAAHVzhtM_3TcH8mUv+eU2I{-Ny
z^>|E(6qtl`i~|^q<GM&HMNA}0DLH|eNLDAns33DvMe{gZRV^k~gO{XEBm%NXM#^Bo
z)nrUaKnP|+)n2KNhFz@Rip|d)T1&bGvk-#cpe`ozT@g`FVDUjSwQbPMZ~z13`sjH3
z&5V8v)c+9)0&H%^A8%g0`dmNUr+4LEKl0m$QwxTjt5^3hs3<@ONI?++o1dE{!t^OF
z@lvorUBJ~J!DWwErAh6av!|qnOBX&M0RU5oF%olQzj=dVL{v&qQ7Hxd0xks%VhEe{
zx|C?DC8wOTiR2<0YBHdzAQBTJ8W9Up$;A-b+1QNBs$kZwkl5}*S6#&ze9_>S&Mf~n
z!(~3;Q(LhmQrac2bxB)^@8%K9kB_{T05dNReC&3iA%8rgaMe{W?15%TZ#$_w2pVQ&
zXg}t`+?O)DBwMeHNK(6c6{&TbD_75o2v9()4E@EA!Z{E7lBS%GIb9FqbsUk{2UQAc
zfQm$drU<4{YF81MHXImq0E~<wr#sLIJgpwT59+(*-xJvNCVuvOw_8PjFsjIk0Q3xO
z*{OrIXEMcEk*94IZD$}2r$)%^6`oJ$vmwx&EA8Sqj&WSAoOWVn%n=b%O1_LaoldI7
zf5?q$UcW*yt?9rGaCYH8?z%v~Vm)M}{<$HvC({LaGV?59mWlL$!Y4=lk5MP{=}}|B
z7K3X;bRb|aznire7T~?bNW)tECP-CLK~o)iO=@mL1hj6|s|Rl@?w4(=)gMO%uTtyM
zi7*Bxq9W3wx9S7sTSNcQsePS}L<0kMn<ZYN*%mW-|GWi}pBy4S<{AM&c=6&T0JsGD
z?l|p_B^6=j-EJGhpq3*?LI$GK>G<2P-~8@(cParuKY6+N(U&jQ>!B3gG2B1wfA@zE
z|NO6SAC7#rd;Yh7_tWh)|JVQeZ@FLy;m3dW*%zPRUSGjLBQZU@y;TJc90TtU52xuQ
zB@xPc9g^z%HxIx3<?kNukQrmR8OIX%kR~}E_4VuTQqmX(WLgb_lcK>w9N4FJkx3<$
zJms9tq*T<n_~1rz5g;=atVTUVFwu;t3S^E)M<nxkmD5?>v)EQ{o>y4MSt9Do2_kM9
z4ge%dW*|Q4_4a`4p;IOJp1a!u&1_je5}APzf|>-Tz=Vi_$zz3r|2qa^UhgQZ#=qZu
z`P*;qe)G-Un~%pSYf*Dk)jUlia8nA@S@g_Iyi{O*kCb%zsxNX^I`s|a9VFH$7?@dZ
z7YK4}-zFp1WVB(3NNlC#T>8b<Ot1C-n{z%Mk3MK(4qnU@4&$f*mUAvSxy(k2ilnMY
zGOLvNYPE!pd8(Mf1vbx*p};hR;65G^Q^_vqn4P};?1I^UeCD10=Oh3CAOJ~3K~w{N
ztj;BJFOVnBJ^`;^N-+UUr3-n`E@kHzL#+!T$zy1KAIY@Fqkec5<=Rege{`GH%Rgn5
z8vTPRrfM#jborGn(jdI$Uw+X38`l3s$fzIWl#(Ws+i|_&7=b~pVc4Pxfv9SUMSKrW
zh!O0DF(8k$`eV*-N;<jG3ulkmc{F{$eQ_1TCs*Tcq|g*S{l0<a(_VE_76{v>-iMJ$
zR-*~)C#$ACw`X45T(0^qMhMI#Qifr5b#>)5(9>x;=95VAoB$4Sh%p3;Oz~=m08>h*
z)5-OZGqJo0`MXqQfzhb3m0q-~Y7y6ZLX6R;M-9oYrDfLlg%Lbb?EkN(3m1=>m$pq(
z+QJ1*y9U#!os50LvvA2H)JGi}LCWV=&5hIu?a&V7p4jF;1V-{nr2nA&+Ex<-P^mvI
zRRz-~QZXivB(MIWhOqQcxUMApj(0g`$8+|Kt3JSgwC=^F9Pi0ZM3WIH0E7=8J|L2+
zsM?1Q_YZdur^6|X+x=ns)vy2X`K#TlmsdgI!`;KLe*M*NzB-DoZg1$*m)HOKKmF`S
zUp!lnl=JxE<NL4w{p~;f^P4FTSG&zGe(~3T^LL-Ve*4Wo{KG?x;}H2~H=<2BK^P)2
z5d*UkXSHmW0P_9*V^J`Szx?&L|K-2@;mw;<%K3U58Tjt~R}UY{=_LR5?{8m!cN&KE
zY8+SVaU4e1*2lmcg8O!OJ#gf4wNq1*oN^XX0?fJOluInk>{RDUwQ)F&7PMGYUA*I&
z^sXv#c>pS?i2u~g*hvbaLPSXH%6asM4^d2A?#JlFG=J=Bt_WJqSgE2LrUw0O?tf>D
z05B02BQiuIR4|Avj;9PUgb+etM84Yc&;IQBv)j#AukZix?fsh%d!;bT<^2&sSZ)S8
z4A#t~lqXFE{bKHKZv`S6oHN+)OxtAV2sa{7^#-D~(cA@-(Du`+1}ddwW<q2zHI-7N
z1tXezrPHQ-k)ygth?zM8Qi!e&Dnyj?lydTGR#ePzZc9CJ(o>pffiq|wdte?SyMr7n
z-N&0eYKI*X)zKf3SI{zB?$28U?UvH2B5G@bM{K|4w90XY&}_SPt7P!lR@gU`HEiQ4
zRB|VN_s@pfOmjX2vCp{;7G4VlP*D+c%C1(O*J817ws*h<FObf5T?U3&%<l3jX_-u3
zY<3$A0}}(g(?Ah3WCJz@Rn@G%eGf=ijDako1++K096)7Jg*<V_nG)Hv?do<nuErRs
zs;X+TjPKf2=FMFV(j-K%A~x5i^Uu7!JAh249s6kdh*`b(G=T_-@#^X}gyC>F<eWt{
z<$UJlD|V9XAh;O9YPA}NVKt5^rThIJ%nMp0LRG`X&iE{w0h@{+odVD*m>9kNb=Xd~
z|2_#&ycn@O27f+o=@8E#Sas^=x2$PxB^NM8o7cd;Z(lIwu^EQDL=x(|%N^0$s$^#N
z8n9>jo|UHtAqD`*mY2$TYa^mMTOu<>pOBMb3v9uP%=9Oo0A0lN{l>!O3duEJ%XF-Z
zs%04rs;a@6i&t0ItJQkkT>awzSld7S_WfNhB7gkj{=;4Q{Wm9({PFJLFd2pG0par>
z-u~ime)QR^Et3$TApXyPfA>%S{jJ&n%Rn^0=H<(qpa1;Jzy6Ou*sSftyN`!`P6^lR
z^==!|w7)x*)4=RJViZ6)9*%&fV88#v>)(F$?wju(-n=PAqN#lO!xvxvaCdV>nomXK
zcsNb_d&}kFH0gR|++1xUS~4jg_i0LnVj!ZM-S!7BZnifYBo(0$*&PI1UZ19vQ(+{L
zl^epO)YNe;MJgI5d;JA7`aso`5Y6S(>az}~4-=@F05QAVwSE#vXatC&-oDU0t!xTE
z=x3;!sn+Z*A{SdY`NqXRVB*k1G7ABRfB?cF4N;kaLkuBA=1-rmx9f1T8-Djq{QC7n
zHk5YKEKh1^ioSNCsz<fs_o!OFZ~AmWz}H7jKwS(i@?_?KR74R4Fvbc5I3ABgLD8qF
z07#-zQ}DbE7OfITKwoy|T+AQ@Zqy<}#9>&OiE12)(Nv^Z8~x(!o-)t8YHBF0UIS1>
zj4=+(<n$qQi89QetZBEegup#?_hRkkr;zqoQKt>md6+i_da*};gaL8;<D%I$_@1=U
zc|Nf;CNHnR3nN6IyIAcg$oiRAiMX@l(!XL4(J)x<%F!zL$^RR}Q;M@?d#a{pddPW_
zl0=@3o7-`{VrD@xB@RferIcJ0imFN$W+W75S`$5IMudR)*6cw=s*Khy`U?U8g7v^x
z+qfAc`P>$Oe4T@+W<`}}v8Q=4)k#Lsx7jVCqi4C-O?(TjGlhm~IQ#gRtAm=Ehhdne
z>HdD-M*{Pfv<3JypAt?vr&5UM=IVMF#@i6~`~B%OwWVgAGo8W1+egn#h+)c_i|=BH
znd30{%?%63^DH9sSkLn|?)z-k`qbp+aZpvuJ*aA9zj(FP2VT=u*LeF07`DcDmMYY#
zg^DV<dBvMnBw}0yL#Y{xQOlz6Wl0RtUtbPEinPML?s(n8gjic(Q#A%tKw#>XtJFMi
zW-<U#FJG!C&X!%s`Esob{g(3V@8LxQB8H#+#b2&BoAqWRs@EUyuC6}WZnnSr&9}e#
z>do<F>)kV6t)|1C241l+$d5mN_VfSn+07P8I;g^T@6td1f4}<g|Ko#d*sO+6Kih4#
z`St7He*KO9<3IlEyLZPBVF<hHt4&GSB$bRR%}a{7f4Dc`w;xac^xuB}_3MXI<{=Ev
zZ&#oE=*7=|@@l&>u_Q%`mi1~gg!RKd?GNeI4_<u!`Ku5}wH%MrH?Keb^Dn>qaCZtJ
ztOA|Bc=gkte7f1jl1^s8A;b_6EUbbIECK+7HQJmMEk2?&$Rbmk2vJ3m7{PMNfT*5S
zp#{K#7iJ1(noCx-8nlj<OYXzn5C@mE&Y7UD`sj0;s)8|90S0Dr+LqOTXo4!EF#rIm
zCuTG}Wkb-_$fC*tFdd0Fa0oH11AqDI>e<zJvmJi-$Gdm;*+<VNP8F!G({`%N7b+3^
zw#nt#k9}-UuGwZ&<D*ycLW$5h9xXCV>IfPMi9-kgR8$N=q=;~joH}FP60OHof5$rS
z&7~`Shiyj8Oh&58KtM{=nnm?wP>8Xb1Ko+?b68K@ip*ew0L*Qb)NP2WrDUoS@*07q
zpib+lUjv@?Vd|4JF{CCVspAKF>`z$MI!gjAGcCi3FM7U~=h${jsyN5m+hcr+x4%`{
zFds`77@sOkt?OQNPL%q}lL*ztZT3Vw(UX{}dcJE-lo7L!(<zB0EzgI|mLvOYkjSML
zT0l*LfvFNX6OA?$2yq}Da{f;B&McvSzl1j5vVazdZa2ftCi=%pi(CsLQYi!$h`iHw
z^FIK%&&nO7Rg3ICo%zwNSv_;VMT7{RHG*)NauEU(k#F~w@*IAIYH>N0HBhChzW?}P
z7>4WX>(y$dYRBWLLov^w(+g7r5do5D>5*f@Fw_dQt+8iZCDdoBrh_gak&i6Dk7=OG
zHm=8b^vRZrs#-hZpkeaBO<vZ9$x5!kQYQu)SmSB6JDA<qhYH@4Sfhn5-6e*^(6tVL
zAy6+hiV71C!_Ww<-I-KB)%t2!HQf7vN5H+QHH*nB@HYMa{|S579=Vb$U2k0?V(-kX
zE7|O3x76xxNoS;)<J$l}9@v<HFMwgd@Za>0@CO67;bX%Fj?Y}>nKPQ!Xw+(w&1SP$
zRhhYWM69*^VMXlRRpcBuAb=oCb;-&du`ciXybFQFO=)hcJJq|*a`B<-7P>&EzsQP+
z;qvOz&tH|g-HsO*7oR+T@}K<i&wu;v>ld$YfAx1S@7^8qbgZRl%|HF}qn|wA%=fR}
zPNZP3zQ6f@{^sj%es^FVFE7uYKD&-lzWw&qFr+s>-2D3QUr8N9R3f~++v}8{oO5I}
zvs`9EoU^`ob^E*D-+uG*u%DFqe4FgEPp^OW<wsAi#@&{P3^17TG~Jsa6K^-O)a~<6
zpZw(Wk3=dG+`N7B?zRjA9FCLL8Uvke<Fl(+4rW@-U>wJSXn@SY01%i%^xrEpK|m1%
zWKl~3+i~NsAag*bTGbmSM)avD1*)Y2Hp5J<r4iTMs^Y}m5CTUxe#r7n6KB7np(FKu
zyr~8RMBL`3s!Rl3Kj49h9;av~01R3HSPBGDn`(*_83;90@%ZHPP5jyC*XO(R_rHDf
z{cRSn`o)-={1TdS(jATA^n9V>dvPD{hafFpH?;@;+Et;q$hEM~Y#;AG6abN8Od-aU
z2Iim$-M~Z4?30OQ2Hpl}{WV$VI1x2D`f}ee2Q_gG7b2$++%%~uzIi4>2ci1<DG(F+
z@Hv7B7%))?M2P+y@ymk<Q)1O-F#^|?!y?|ojy`Ridml!rc2#FfS)qmG@xC?i(Mx@@
zG<YV&!>0KWj;B+}7B9O#0^YWZ*|oImUr6)gG)UMwF1HZ^)l|)Emldd~r`b5~q>okJ
zcR;>JZUHY`4rLb8BKmaP?KmbR@ZB3BGW*~_O;{x&2m%8R#)K9ljzq6&eJl0gZ)p%}
zCNyKfv&7fiv>U=WIKr%LIy_d^H|AhQ7#PWEI-*)d5E*)H?pVp?Qer~!Sx*<o$qJ|9
z(~s6ws|Sq-W}c=A7i`sHQ|XEi>#Da^>dpzJGEI|+oS&cXcDpKCa@PL!VddI)ji=Ai
zOR3W|`wD#sA;w6=%Ui}DoLVb@GYm{b@k5CVk32~KKc0Rc8$6gtV}r2wSkBdgrZp+r
zEJ_GK52!u{Ks|NW+R(y_H(xX_6+9vmBZX6Zb=$UxR;m7O4BYV7zKr)WC~yNZ_?BH^
z*@ZcmmjZI1PCl40xhryc>9oZQ+as6o`!ezcqKOC(iaE0YpgHH`G^<)n3?@YO>}k5V
zejdNpzxwO_H@|zSDgpHme)`EzJ{!sQHCMCv^*?^|tAF?M%^e^QwbuK?{kJb)y?9Z~
zs;IsB;jWgj*^DX1SKqy!4sSmH_#*wmr->!Rph)j-=YRL>Z-4#Un<+=aaCWviI~#ua
ziywXbQM}v+0^!&gkcY$k{SUXkGY`xc7sD7i&--!Q#z5caW08D&doQ9X4&xBVAx5r|
z06c)L9L<y*^iLR5BFni{00=aO5P(sQ4pWv|LkJ<b5zQ6+1c*c05K$?$wHTH>F{#v&
zi;J^}LRj**0+YYyOzbKX08r!m<209IY9YqJv>hU|i|VmOFZ5lh0hA(YFwa@lq!tW8
zN(CYTMAKrLOJQaetcC%t)=E(WYgCO)pMJcH0l)s{-K(2<E`W@_vGxI?5AOW-S}Cfi
zJ<DYFz&~>`wDgjb{yAIQ%98^|U`=xh)G@550-A`JQc8Y(`u}>a_yc+2dWN|;D4M3U
zHGlRHWq=4+YGLLOA~xkH`vU+(o&)30Eg{AbJhzV!nSz-xa|q<(U+wdIL<}JiB`>`C
zw@TInWqWC2A}X?A+0jnIUFv^sFYThAT5CGiHd9<WQG<twBJ5qZz(WV;NpIA4_PX2+
zrrPRy?sOHzMfq~dis%+K4{{fE0T#G~8*Is$T0md#w{-t(HtI?zYqQ7?)4r-+#_=MJ
zBQf;|kmfd7b{k>_N(d40oB|OLn1iMdCa~H8q{!!EJl}>f@{j@%GO?+)bZzg>%wh<{
z!3>-LsE)ex9?YnPDIl7h7B`Du#d_VLs>IX+?5WwQnF)Y4o8fTScUk5tx8tE@Xa)ay
zEN?`_Qp(|Q*zI=P&3KdZa!b39d9?sW08*1i$x$EYgc##e5G=-eGrv02qbeU1XNdnE
zHP)kt-5zmUAMASl0QGExK94p4C*+*`b}K*oY2^phKe}mZ`Z@#=2w9~z!)J30n4z&B
z2IP2CFjZnECIeFwG<1t_oAmb|oQO&(_Hc#F4VrYqMk64{;Cm})5_o&y;T!6;PvdCX
z`w7--b>#XFs)C5&xWAoC1*CD@_)xdj`Tj6}{kw1fr~mmc{`zm;n#Ak#;a~pZ(`Q$V
zaxYabFE5e8ix+Qi?o^aSDk03XeDhDQovK#F5JL>?>C?ykEHixe?CD%U4G*{X-@bbL
z_rH1d_FW|$32A%2{qoCCzWU<&v*%~|__hswOGU(-^Kbs~#lQWFuSLT+#xH;J{PSU)
z=X`f>RTQnhyE}aI?YnpHCIv#`>&x92KYn_?Lz7v|n9#3brbcYhs#Xz24U7lGnu$oO
z=zNUGSgDAL`fdkBWVhR<@f^%*J+{aS0}(AH8=%bDlLu28y~qtALNzo^DH5WZk%<6`
zrMtWPcei^pAg1e!?bYUD2pSpH%p&+4f<sKhs75z;b1raoG3GMOIhUGq&Sok#)>=x<
zK%i)%CI$rrRgz(4ty-Be2L9-38v+mCzWe6&bj;!^Z=a(04d9te%Y(EC2v1dQdk@i)
z&Cu#-k;Q+~hg!{lu};tgZTK5}PdJST%oIJbss+M`)wb+(5Ql$zZjoFU1dGPOKR{JQ
zsyl_2&nD6^b-n=86^g`L_mqZqbE_gzOBo=fz#TkNRa;yPn76-)nH{2QW{8ZaO=S*d
zX2l=NhX>YaXl#aj(gCbYrMSkBt<~vB=rd3zCzhXPp<Sf_i*@9L;axau56;#$_UJoN
zJ84Wi>2}cuyLZUL!HSA#5BUO8TjGA8Er2^HViEei-`0Pa7HI&8g7~gZlay?7oi-zJ
z0zx9K;z3KG=*yV^8ki6j5VlAhVnB>YZ!FwP@o%2N&d2oZV!Yf9;}HF)h4r!cAk(IB
z2+X7w919_eX6UkcLZ8zBJWNmO-W_jw35m?4KQ-=3qLfn3#TO;Z)w_1?Eu$c6?UeLi
zAgqdAFth#s$Q;LUJU>6bzq{*jZo>6#*Hq!ChCX=l-Lu>IR-!EtsY___B82|uQ1I_7
zuvYK14&LYnpAMYurKE?;wilfIdsOQIy?w*dma6W))e{Z0rz<U2b6?S~xfWeegMhs!
zCRGs?AVl_63oM{6FGUfl=cRylK;3GVchb^!qIMU5Au7OHdG2aKhh6H5Exv9}K8W&I
zzuw{O{A{C&KrYYw?z@+-et7c_|M=~{{=feI<trc>o?dPK_>aDL_B4s!s{#cAfZLn9
z-DdaGFD`EH^ZqdTkZ`j(uTu7hY0d)3U^M5#EKja>R~PBYv&*^E-+c4>*S~&ow?_<#
zIG|A+<Hw&oIlmm|ynprGaoXQ&t)@1nusa(7?C$<>cdr!rScG1@+nk+?njk35FJHa>
z)!%;etG|7fg$eO|mwx``(@&lb3}v2>Q{sTNb&8Tp@mIMe1tX#<8fvZk{e7Nu2+<oJ
z6RoNMI1DKWB^yL4mVG|dTrwifxtM{79q#u?6vj=S4@6{!6=ApAh}J3yh*GksT1apA
z{O!xPFJHYWMVRD|{>A6zTs8=SA`#}fh-gg1+2$+_G*_PX`}r7t{N-m-j`!2Psus|q
zGS@Os^E^)?CFjWq3=|Ymv1VYhkZVdL)nc@(^9_E6rZ?Zdnf9}&vAdJ{yb&Iam|PFC
zI_OtwEFk8vgtq{Q+hhUPz=w8tEmk6GJmz+Wb?Ha57KjLm_#56yyTrVl;Eug?nnkVR
z&92|C>jK{ez{}d$jk7J^1}x|7e_l+ko;kl6$6B-0>f4~xqOcVlP>Q%ze(^x7L20hG
zr7w5aM_H1xd??j>P;>^f51;iR7JI32Y~{)JAML@)4T0bUmv)oM3jKpb_(%l<5A;LJ
zimv_P1blAbE$}WFTX0<eN7o*quX~|c%sZOEhtge`P3>ePd|w)RGJ(7=6zBs31rW<s
zrK(<!n~OLGGsXZ_+!KvvwZF;O%-O92&=U>;k*g4dgH{C?BkzWAwoOaJ7n!x|{FeZz
zQ#%N#J(tIScaD9=UZ=K;f)J#SD_T+(Ao3~d1Eh~Y+8`w7OceU9?7!It=r_aDFyjNu
z!sQq0h)}z|y$c}>Db;bD=Xq^()0V14PQR+v$v+rk@c6aGHs|kK@45^G)E)&Ae^3wj
zxRB~;MQflRu33)Dw7-`K2-KT<>vdjxB0vq9@I#@zi$q`5tidsCtsm@`r#7rxc%N0o
zPZFupUQKfP{mBwZ*v=VrbpPp^M-GH1Z@o`DoY~j#rORn^3QcLK)a6b7VA1=Cmh(`o
zXJ!!IzWu>(9p*S6kKev{^}qh_fBu(${kqyVhV;qD7yr>8ety0K)qP|H4q#ZO8Oi?S
zU;WECjBnrV-@LsspxxOH5sruBo40qr{>K+Lw-t<Hj9-5K@mD{28e?JB+x_(a{_RV#
zv&*L!M0S6_SJAoF7q7nm{>^u6wd6SftBBO&AO7;QAAkNNMvNiuw&TsAGVu>@@BiX&
zezP5EH-r%B#mgUFznRrWLc2U4zxwR_$vH+60F05xVccxD0A?!3!&K`#M0f5sB+!_W
zson4QWtt=NkfN#Wr>WLrVB<KBLm;qee`}^vG667{N~!Z?K($B!i-A)hrcg?$k^yl(
z7zgGd#Ta;#a-MGw`S-tn_06~Ms<M`nMm`&07iuDlgl4Gq5IJ6-55tCm>btvlFTQ!b
zf#*-Z+)j7*c0V7j!oV;vq%n@0vDA5<C{I$emRYp`q8J1LC6lQR(NsY-pYO(>eg2gA
z?KiKFQ(dqN&DO}wK95>3v(CBWwpB&5#%B;w)q>aw41K%ftAP(DbNR{JD?VIg;D*31
zw}H0w4PhW)YwRBrDYc%$(*0WX?_{~FM5>vTQoWgWJ;kCn>V2Vq^T-^HO{AP)K&7}J
zF%ZWP-IJD5U~>Df)LMwBd+H5LYbgt@cbObI-|j@QY~xu}@TG4{^Z=6<u-?D7=1^)k
z9`#QfI#B>m!)jhqG#<2Ki_+?J)52Q&b~1^bZfHbNC0xpNQ!~_#qHL8sx%gh4+Ui&>
zbZ*UZt)exw+y_7_kEC<&k1ihtR{HW~miqd5S3wo*jMIQb2pnQNC8cW5%QI6{1%L>6
zNdY60;+w29*pBf$Q9#$`5r8nZq!SmGs~Q0*SS><CMXER?02<%lx<91ng`11cnn=f|
z8V&G$625m}DiCo>>3BT$UAT5EBKI07q?8_bfslwo`_hlL3Fylyy}Q4=y1d$KHl>sk
zmwLr`Hv}~+*{uN~#UX}d@PIPyZQ?04#ZEMj_j|Q<YW)LYof`5I=Ih$72MCS_;Yj2J
z!qbA=pwqhmfN{NZc{B&=Ybr0`nu8zK`<v51zR6rlo%{=!Dp3Ey#U2K0D}ZO|DIx|!
zQMW=MadVfG7q%TU<Lp(3<`R)gOTX}HrdywZ0Ba8p^`id~jdEQ#o4Lpo!uPLVPtz<S
zB64@X|KI-gU;gf!<956Zk$?Q7XFvY&lP6cG^(Z1C3}zNWD7jp2w&xdH72!)d8_z;Y
zmzU?aceiifniL*`jSN8a?CItYe){zJ$7d>sc`o1l)AwV%z&ME1T<Q?RY#9xKC>J~K
zD;P3j3Ih|*GZ6->^Y!J~7eCSC*WVT8W0C1y{^8cF3L=&&#KV~AiyuAv#aADnkCjoF
zkSKszE;AmKh+<5e&BlLtXBvBSjEdG;5n#LBrj%5*Xt63LvfJ%0E-q4vPSl#`_7cSy
z6)>h)ia6z*5Canvni4=LrRH2%YX}@;^iYuFH17|yC{|Sj*rarQF-8WFdN>qQG?TR5
z4ns<b57T@&?2r4hNjO$K+#Kfb-n_lLxx;E#=i%w)czv<ioe#USG)>3jq1K$IBS_II
zMT(jl1j`y#s%lak$MB<1&H?Fn-yO1`bvs0xCaoSqW>!(N+Ru7FD;WVXEJ@Uh#h3c@
zY(bNs@KCGg_CbBEy*4Cnx0w4c5y0Q&J}_QwO4<h5jhl$<lQfa`4R>kxDFbn>NNgpu
z8565WkC_Eg9f#=ZMh+M#`92k$h1u4(x=h_g+8}y8Bt*nv7*iUiY4Qbu&*VT`3R|Ov
z8xV7?`bcBd^O0=bJ*?7&t;dfqB3fLAnafzdXE`?4(1#MjPyUeQi}uUUuLy;OHf><0
zVz$tpy8;RH5e2E`H7+T3y&HQFsYDMc#}6POkB8MjRrUM*ZLalt++4@aCNLX<u^EWA
zYzg+c0<{;10nU+$fFs|7YzBUEu^k5vOdJr*A~%^~SL%U*Rkh$`i^f7<qOKa54vAF#
zCo*XqvyPWgg*Mu4203zToGKEJ<LC>*Zrxc|8!95>xQQ_?jTCe=6s|a#>$AK4L9~=|
zc6P3+_xJa{inkU1MGbPU)eHb*Ofe1iZ~?DPy(pdh`T;Zgx?Ow3hhN}Rr)l$h)N5Gf
zN-a7)LwLk4dml8tt_J#z1<dT#uu~R@0%Ds|5TOgE78bo%Dt$cwp{HN4S1|qN?orTY
zxX!=Q{+uZxIkVHH56kYRjnEo+%a+*#td?r4*J@2DlZPL;Bzd%7cqpaJ^Zf4JJECyE
zpT7F?t1rJw%<*iuGbm;=voHo`8prYc><kHCym-0Yju+><@4x?^37=eF7{YYio9Jd7
zc4PhzfAJHJo7>y{ldH3juG3~frrqo5?Iz);pKRxB91=3+GS^Bu7X-zKyAXHV?T|)7
z8wPlK6^Wn}2{C;BqwA+1J$do!?%P-2*P>=%fwb1AmlxYHJ$<tM#m_#y+C`H&Mp89I
zijn7On&<iM?v6QZHe0_DnK?x+xq#U;O)<t8qloPHdr>u2X54Pi$I-{gu-%SC8)m+{
zyQ@`qyJ6tC-|u5I86<?5QuO-E%)~SVRs&Tz91hcQB4&zsoXXAJR74GU9EWGmo?e~r
zRPG2Z4XIWIz!*cVwH)e{bDrgRkhDt<c?kfP%l+Fow=Z7Kn|S`&^N+vy{POA3-R?YY
zwx!g={avlc`LMTQRjQc@pj2g5fMNujA$<01H_iEDKO_7A03ZNKL_t*L&8$kN=VUb*
z_EawflxhaD*wsS}U?A0@*=-=RJWalR=xJz8T(H=L*3e2ijkY_;UM-C&grF(_WGW^F
z`IOG)=M>-r+q;S^0gHXwtn2Bte@kr?=3MArt@}=uh*AtgN}#G*7j&k%K*daamPfp_
zZZW1>t5XJ+4K6c>5OU7Te7lLl&|I;(ta4Z0Ygi+=mtLf&#jSmor;J1wc@R997Ooj7
zUNb!O9iG+;ol<nNvbIsdYV(Uo?wQubF5D?aojchO$l4S4e4}RAw9>0$3l>${a^m=I
z;t_A;aS8|$fZo?xj#@>ohs^~Kk=cdgp6=t~FRJcgAtYk39T8I6k?<Hdfl}bjW+0+k
zinp_VzPf@&RT&M~oz~D8XzlexHbj4yEMoN~+GM#+-GWRl`@P3*wr3&d{P40l>71EE
zt#!Gfy^dY-c-L;RH7mpaa=$-px7*$B>~K74TX{m`2$&UtT*UxF2*WV0^8ozvsI{8;
zyx-O=yhj)CBc;V7rTt3RysUrQ#<XiM<RR>REeV7*p5pzCish5|FJjSDFU5L$x=&xc
z)uW3I&!cD7``2|m5h9X-G*g2t+CJ~mk$|C{JnNJiqRys4Y@wn}MS(5j?m>=Zdl!kE
zq7?nT=cf8@iPWVa4mp=;n$=*4!{z1p$@85mh^eTS3Pf=}PK42IZE1+5)L|HgA?<d%
zd7h`~$jlU&C=ll~jF*?!OmWz3N~!mEw>i&5wB2o=DqLS(1I0NPQLD91$4Nw_RuM@t
z4dYNsR@IaOf(BMX$r*|0<B!im+<x@*;<M-HIoFbNsrBOgd^;wQDJ4x|5}BET0aU3&
zN-3on!{Kn4rU?K=ih-6=5OEw5CIqvX;_-Mq9uMsRb=Md2Fbw{ZrIh@o_gi+e838Qk
zDFohb&$ipGh~!+FB)t=2oeEb)%yhHc?#{N~-Ok7%4X6r3is!pzria5}NMW<x#>gD#
z?Ckvf?CgFz?vIly=NV#(U=WCjsN~tIK&|z7{O<mcr}FOk{r39mqvy}ZO&rFv!{L@=
zoR0UBXDLOcsG3$c5mSh?-Nr9IyRLfk^6jx(be7xXG;#7(U(4e{MhctFW|}7F|D8gG
zJJC-Sm>)bps_MqdmhjkuW35|GsdX8Ki~QRmk={l(mvCPOKN4s5AtAa0xP1j+|M!)o
zOIM)5wStDwG!QX0FGmPTL|V6srfQ`WsTC1JWJ0X9y4<=K3XL=C2gu=Y)W&66r_n(p
z!#9wgul^Ja2&lpO%=6v>ksk$jKROVbZmvbuF6yZ@YZ%;*zLeO0B$ZMg(J<EX=?5{W
zts??i6nbqnY+}`C>DDu(si9^7Rhn_=WUN}~9}hBCL*QDgYJHR{|Dm-XsllP<s!~m1
zgo`jlB!J)~4>d<sE1Q`rfiV&ToKc8~f)Ek5!|3xZMhub7*xjP8c@~i>juu%Gs{sjB
znxNN(o6H_UX-&>+T@=4e)XiB9r$M?uR*SIlp|=|zTKfQz!8g!7=i*@|HMSr<1TQhY
zm-_6p=fwQ-#kZ$zViVz76|dvdDj)Y`_wUcdgCxyI7uBPI@cP%Z+9j=172pxtX+79j
ziT~k)fZO-EAFKPj-M*@7?NanqlJ)<qnc$Z+i{(>Q5$;nW@2`5r3CQe$*6k!QNA3VQ
z9t!Z$_GH20GNVu3R$??-xVHUWu?}^Gg`B^B?)(|*?*|J~m58q{ubFtx1wajinSpS-
zJ4dx!Y0gU%&2whv-FAC%ex6c%^5pvM4b~#(yYn~<rR1DTb2J6mq>a^*r(>QDW8xu&
z?b$ZQaCdiiI2`9WZ&FaD<31zuZZizSa6Hyh6|nYV0RmGDNo#%k?xh-hbe%%j9*;+<
zvfFKk7^X=XG!fTal(hC2s8%U+&eLqr6gXO?<P3<YTMofg%VEB~y<Oa094Muf(!fk;
zXeOXi=6Wav`em%DHP;~xDRPX#=N=)DyL(E`#2iz)IKP-nF1c(s+ovBryZ_a1aupF4
zkxHOa=Ho=rMz7oLhMBG|FRrex=2tIkk=Nhf7sacqO8`hQ#hBVCkck9?V!prs$A7q;
zIsEJwzx?v6pKdm1%oG!I2zfrv$D_=%)@+ioTJ@A}v>}F1o^EgN_xssGU_fqGSM!<M
zNk3(+g#{6r=Xt@>E=!l*RXoUYFnjM|Yf-lB(6HrA*+hw|-3oO=2dgSFx$<X?nCL5B
zUT!QzWRAUR_TM3OG)I5OuW8Rjgun=1MVl&y-~in|_wL*~W<YdezDuP00pzYTT)h;C
z$jgH5bPuf?jfPV48L|NyQRso;>!bvDxQ+7zWknuXs84+#ybK1r%B;;TTLA5QNu`}r
zzpQ~D7`SZ}0uM;O^duzrTezBL)e5w>7zh%lT4ixO`?tPKN82k;WX1-vC`I2Fj-7Vm
zh*|CJbW~H@!Ud(sF1>2<@3sat1vPJ45p+->;V_Ag8546LPXQ8jAv{bumr_e9(8tkW
z9tI^|y{RfSt^zj8wrX2fwFN)=H?n;1i-gfXVPk@NISYV&wy^*&m-q+pkwgFchgVk*
zlRy2(047qepIpAXz3m@w=yD2!TC=J$4=D{Cg4=f7lHP6zRRlwOKumkzB=$is+3D74
z9PS78=6jfT=k>benAgkx_3i$MwfCVhxH*=f(Ko%ArgaLLK^N1l3v?n1ZSMeX89Hf?
z5x`ndqd^1XW3MIJ=j<}NQ(MyDtwEvfuzZTv(=6A8tdB94Qh<8c=vsEU=5kOd5)6ze
z85)N;3`12FvA`k5nCF=&)T&Z#cd;4LaGWO&6jRD`Mxyhxv;E;X=UKh(58?81%()OU
zQ@Fgk8pp9pWhPN&4k^Zx^I?ClDo>s~F;VrDS*=pZe>~Ohs0A9*b{Gd!W6r30w%eWW
zwm-bJ>2S0%7p-GTDMSRln=+t|!#E6ynRA|w(^14sNyP%wFbsiH2!2dksgiSMj#6hN
zVvaFzjA^&q1`ef^X*$e#QiTx6qXZGClo|pUz;Vie9AgL}<UG&w>}?YwZN?1;h73~m
z_U`t@58uCf{cg@$DjL8zq;X(GJ3rfT03t9IL%6%WJsgkw!=XsnXV4Ija|VUu;jrJ|
zLwD49q5_EJn&0O8KmWIXdGq$}=l|jlo_+k$IPOy1-rv6iy3e?mBZ{b5!J?%aGa~cZ
zI6QxP@$H+v@g~LriSF+1tYzY!l7rV_*B;f<y`HOh2J_aohtT%cWK|K9i-%kId%s0{
z#f>gq0r0eKT*8HQ)j+tXh&?ZvIEJX!w9VWYBT`R5gKp5!w)Y{X5GaJuo()q%Gu05-
zDct@&FI`JY3Cv0<RYcU7U4#6<1VtRc+>6XBb0?nSkk{P#Zj1C=*`W~TEX=L|HE@x$
zy1x@2o_%Z1`-1gc8sb%7((fd&TB@gC>dH>GxXu=N%L)+PfVzYYTWAZf1qsQGR$x6Y
z&MSR#VGB`;382(keeM=|_D*kWwANM}5C)(YXxsPM54e@Rp8zB*U^jU-02y}|VHlB7
zmBcF<P$>(}fz?`DK3Ba5jU2-^QZTh5Sxl?w;c%>?A%tNVe3+wV+Me0YFzWIkueo{+
z)X<zBjI%`RHF`<MR0fU?U^x*~9s-1yUNeMXhP75ljIGC{%i7qhPwjIfCPIY!`}?o|
z;Ww(b-EM2GUeR(0`(v5ry#X-?->D&z>l3{)>*_`Ops9D&wAuQC{E#8IBR3u@#X1yS
zdvwAFVqG5H>yIW|4>b_rSnL!-3!gaYA=+=Dk)+_X`&fs*G*E#xZi$yxF(zLaEg@dr
zxuj|!RhS$-dt!Y+<DcsTSPDLjl31^e+Nxy<M_L2(ms8^8N-%>kY(McZkWywNn5q#m
zr+|o6Y=4+bjRtYp@byQZ5@ET0H;zdxPNk$21j!KI-QI1+7*jBnVKd~Ss`})~#WtnG
ze(y1jH#cwhhoTk@HXMP?juR0jU?_Ql8na-nNj1b2QwVBR)pE|3lPMT6pyrx#9n<Dn
zu6L!>=g)s!$~;ep7#SuAOxw%zv)z^m-@JK~-4hqa?JlJlrukT*AO;`#h;oQKt2M;P
zL?I*tyT8wBL_|5~5CR~@l$aTTQLR)NHfL!A$7vph?fJ!dDMvF)1C<J!EpLg4d9&G0
z^DK(PW>-bE1mK;c=FB9;VY}IkV?4WvE?Ea;5#8^P6otcZoa@~j3d;U)05Gdk^6c)*
zQj3@vumLg;A+S{Z`s;r>PWhL={KFsp=tmb9AEmUVn;#C4DyMp2E5}j`g0Wfv2q|8i
zZ{ObK`&s5XsV|_wfSHJwe$?NW%ae%64SZy-A#5j-TS3)~$^GfF1k$N0#Q;bqwPPdK
zc?^U=U?<b6LkgLLnt=)$hQK0Hb2S5EWTf_RtA=h#^4^_R=*ouaXqamdl`3V^S9cz=
zz=1op&XG5L1?#G8@1_?$6p@M|QimY*h$cTS9ShzO&?oj&kInJha&cue{15hM!tO_0
zveghC<E|c=8F~%WLj!#ihCojFaLq`o&0DXA4uB(GQeZn14HsIfTP+QYxiRT`zwO41
z2JsOy6+t2(WQ;z&u2q&ah-LKGTVe7%6MvmMNgL51#_+JsYTl1^NQ463<}7Nuh08dO
zL;-;nrGlE8LNy`v3|(L|RH<5-keLw>BN7uKl37Y=B#tRMkQA9+Oi)GJB?kryJ}T=&
zVIPXPd|F%80xi$VdTxb^#u$lx<&3V)^xo?<De=5WYkQn2SD)SkF9nvbU>;=Ep;O+t
zdE`Xo_V(`V?9Bfu1(vE+ESFkUnZr1aF{N=F{r2_Mm}Aw~x9@s8@O~KDDb(@<(_>t?
zSF2gHwUA0&fa3mx^7}}ZM<RwtUuC(K31J)te;#4QlW%P>VXM)a^;}xAOUIP2eQu3)
zPq^7^5HXh$Q>azJwJL7G?jfDaNTWaIW(HMjlRLCC2TV=8uU+Z4mn4ZLCaZ6MaV7b%
zMHb*+D17yYe;Q&q9*-h5gy6w5ehP@%X8_0JA%=*AUUpr4Qd5d5O|M@{Ij{AZLI|Ok
zFi=VjA#S#tX`VKh7($$LP8TK5d9&Gk^l8JgxFe!>QB+l#NU8u@AC*}T1Vl5Cy39x|
zmpr85>gw{{ySF*dVD>2?5rjxF#9B)o-=2M9fT*G=MTfHHd5*;9O%)*`=8{b`#-LK&
zeWapQWk;A&Wac4-X`X7yF%Bc(Fbs&Wo8`&VYe2cby}94-2{B<!=e@)w!cn$Y$V_Tz
zH~Zbo_{E6F<3wbieR6&M?2-qqOlG><Z9?Fin|G>umUeT+Oe1di<FoYi`7<Oku)yr<
zCm+BBj)ajAYpD>}41fFEZx4rTieG;9#cp?H#(~GfJ|5I6fQXTgdy4`o5}xhG+r#}_
z%&pJOo<YRKfM`|`HHO$S3dF6^0svAK0FeU#G9qA0r$b^hB|dGj#Hy=(5J^OR@=Q(E
zgza3R_D_r8%l{q$hm=GF6k`a>XiinZ(BEmI3TjpAqvDzXDX>=YOGs6io9K)XVvHUv
z=;xAl2+<O|yTtMOVKbyCB2%sY`e2Wt>^@^)CU1nDZ1+C?=0QfVkHCC}si%gvojYi2
z(eeXnXxF~=CVS-pUF5mA_*0zs-L84;gta-B69L$RW(hg)>CAG_yrO>!01N?5!KyeM
z3IUZAy-V}3X(9tCeag2GAN;csv9tGAGddSrK=4$rlQ#xdtUh|6P(wPXygu%;%5~ao
ziKC}oSO5f*m0${ifzV*y&xW8P>2iZeF6$eI5gN%Ek+7CprE1HgU_dnVARFYyOF`ef
zDf9}*P8DODC=!8KjLaeU>lZ>mpp@b?O<*nHeTi#SRRB6jUi1yCa~T}-vUs%(`~?o<
zI3ABv&a<iR4~N}uHw*(2%_S>Xt$Kfd0K;JzLyTrN&$IT_4^PxKkKX)el6)RTSA77P
z^3d|TDA69VD*e~zyA0|k>Gxv|-_yg>`ZF&t?sPnc7-9^*FKVKD73@*LZG>Y&%>EP<
zE!MWMxcCyyj2Hp&_WsTVC<w@btb!TjS{5Su$zI&}uWb_I8Vdk%yr`(D$s^gC*Wt1n
z#jT0%D_P>&6OV`xe)7vdUYcn$ZIGMx08>vGZb9z23KMPlT>S`p2z|xIZ|lc#3*+k|
znx2iSixs_p)$XJ;T@5SPCAe)%zgjv1z$erM=m?-D))!G<5fOT1RVyh()t8s5(w78!
z0xqf{fgkbGOozVcYL$Dl=eKg3d{Ex9W_wgH7^qh1CVEg1(_b3?$$z5&!B;W_Mpl?K
z=Q*@oO025nZ6d%=i~eW-H39KO)w_T57hVR6sVDO=2MTc*&;N)2?!UkI<YOSpHG_dj
z1+>j}9L90n>_UhDs-QDMHn5td7F5%@8t`V^{P@$$AN}NK6e0lDQd~v`fTh-2i+T*K
zs;GEHHRoJQK_dT15AL;2rk&=Ay8^|j2DMgVUR3xT*yoPzokJ8t(EcXvVmFF0iqwwj
z@YfkR@+ob+{})57wW7AP(GX(iBp@?QHv2}W6p0})v#By7hY%P`DT`=ZM2MI<G_Em{
zYW3_QRh^~@0FVQsGLh>N7VRYywehto00%~q3J8lT+f3Ik3uo)JvxAo2cTtZlo0sJc
z$xPJ#(&bL=Sh1zDZXu-|gyrAZ!xM9n;<!xoWEXDZie7mrntwot4576^CSoEHQ8Plq
z;HwQ3(}lq8J>Rkj??^QSZQvyAH`e;-e`G!Zkmj@P223;Y>+evj!ej<8Zg(ND8Dq2x
z;<7qGS_b5zXjTuI5RuW&3<HB1aNA4}q3hz8$-GY*y_jghUY_D$XkcUjzJnk_LJ@71
zhk+V+$CyH>wIWjBP^-+->_14)Y(!lu6OiSIchQz_s6E%=gdH{`<g@d0M0|I9e|vj3
zZc+?%d38CCBN6TQ`;u!)n_>dU95}?}KTAt^Q|(>=f!-QEx_uvs13tJ0eow?_ox8Fy
zoWak-R-O>~23l8y@P%g6dsbaxp%xj0p7JV)jC{7#1~z`(xVm%wjV)R<0!pcs+G<vd
zAewl@OGN+^)Q$_Kwu2!CK<WRN-X5H~RjK~<*>9;@t5iYaw(8PVeeGG%r&sR-(TyL}
zqXmg+5qkCXw9}MZ4G^Q3Q$SJIb-c&XcPN?L*jxOgLkYlE0EWH{WA#yt0wAz<NTC;(
z{nMi%cS0?=xV|~+0=G00vaZ5c2>!(S3aq6}s+l^R(-_(FG@$j`0O}h%5A^hKK$pb=
z8dyZHhxG(pU2SvPS%&`lXp<p!k^w>o<{GLg5;}Rgl_LFQb1LtW^G)bs(9I^^!qDH|
z?9n?3lG@XOOjY&ir$7GB|LngSFE?u9A%^}cR;kB%`r(J~i4i@w6hI7QKB9q05d{EC
zL;Cc`pa0o^`Daf)`k0tq1PFlA)A?$ZMc!I#F+0WMICF7PlxPd;73uK_BGrIYMY{Qf
zm`wfe(OOJz7c+DZpNoxa71b)H-d*@RevwzGc^hE>HcgXAosW}(#gy81nXuOC%sntL
zl~Rg#t)_wir4}$Zc&g9zq|_oc#&A4Ni;&pNYRL_o>_QLGQj7m0nIkiqsRN@CilN0}
zn2$$)lwB@_z+l#{?fz+FOkmB^?6Fz3il`BKIm_JYdI*64Fa)ku8c<V(C=i3uO1SP~
zU}}=F4(spEqGn}o-M;^>aU~${I6p%KMsBNXX*Hy~Ux~<nB<Z$e50unuQY#>#wkrx&
zlB*W4g$M#2NdZg&3A`=y&OUfV3L+sYDuNNQmoVVl&n~;kBDZA*1Q@s56i5I7xFy&~
z1qh%`oo7&s+WmxtL>SLT46M$Db)~z{dt4C*;3-e;rd3&8(&#oTGEhdgE-6G<7PW=|
zz!YPwMF7xWXH`6%sBq#)FJ?39IOFP-)<X^y5)I75W*g%0{hJ@&{&0g}Qt|roI>mTA
z?%%z;n{&C}PsnpM6tgr8LyAin*FxS9(dI5&iIe|5$qMg7jL}vyfu63qT*gF5NCaq$
z2%mY_Y)h6>iu04bgjuFLYtqPqlQYu=(1EM8BN0JbT0-dX@{_viMAG)_R@=_o*>={v
zaDAlV^*RCiioFGcqZrU)8a(ylEhf%+d@fB;00O1cw9MAI+7G(k1<v^))!T9nhqo2f
zKm-Frqm5WAm_*Rj^QsoX3I+yMP=i{HFereC31AgHPC5(`)|@m0YI_|+M5z)JBS0zI
zL3^wF+z&78ZY*tLoMnxzXeCSFAl-#+rc5nqZ-IeX5e{^Uo<J0-Z5!qTZ3p|gm)%LF
zstYrg9e&gW7S3SuUvL$nwh?q?jsUh2gupq|YE?L}nIIZr0Pt)B^#-J&QIUYnJ7_N}
z6dEzv$oD`H38WQeKI?1m4>dy|9(I;eHVp^{ZI5SQ%)H%f=-J1_41`6sf>sqktY%n1
zN<o7v`Q^)h`al1V|793Amsi(UPo7*{UZt4E?Iv(aLmD?D0ur+!KN274$tBt{;NZlX
z^kRZsRJ_a*wfP#?fG2QIQk8n@cosFa7hzpV1#NsMzWeb<OZ{vYU5E$RISF2y5|WB`
zw1l(=8k7j7RG)U3T9wMo0RB8<x2wAA!`ehd#n-CKU$#9NnELKnPaA0O0-bnZ=6+d$
zzFw+QODW!|NEK-yYin5xW@=h%A;2oq3wD_2N!wN16s?ZHUQWtdE7%GB(9na;HUSHX
z&@VPsA$0e)`NycQ44eE3Jx{`8?TA>_O088S1oSWrLZS!;)$O^^j6CG^ii)ZzArlcZ
z8nLh1Vhl}5AnMqPloBFM)8s!#=>3hFF>wfikV?)>45l2}z>ZRH%Ea4qj)DF31VAM)
z6*V*<BqRj`taiLTaNw8{a3rP}M^&A2aWy&x1|U`Sg3^#g6*wTM`!-R95mkL%jpE8I
zLNKx_-3AM3NJ|FLqEZAxwG+XSm|+ElCL(4sbs1fo6D*3jKp_nyBLDE_?e}kf07C>x
zag$;|uw3f>{eFL(j<X_H1p=fPV+icvwdH;2b#W(DKNvhbN>g}5$ylSQd>-kfQe4ex
zeI2vZ{?JnzciSC@Sn_cZ6+23GaV0EiBnud>Bc+ze)HZ=&T$BL>V4*eZUT8L3`2)pY
zb3mXOc-abwo+P-^i_ua5m0CTafeEV!`rU9ENa^C|>agz9&(LRDC&Se;IcopvfT6Vm
z={@`i0EGYX|NeG}?s&vf%Vsmqa|WPXsyq1IEfZrZwdOhdJ5|j#n@wOoPIIm>RlBd?
zZs+MZ6G4i}y8$u{goqeZ%DI?nDTRq+2;Q};_>u+MUfnE&FwZ%rK}r@gCIV!U;=mds
z5*1J}^YYl3FfxNGBA93*Vl<9Xr5=w*M2sN@!W0-x-OZ_HDjGr%gIbHKrWiIcpc=Ch
zaj7|rFt-X%)utjj&&UDQHk*Mgla|d8#uRIrMGT4O;}Maz+bAN#kT{U}#G4|5F`}u(
z6v13^XWi_Nsv1I&G80n>A%I1#<2^W$(a$nJ;CxC(X>&VUB4j`!Bed8kiU6n~()Qxx
z?POPCRn@=_UWJ%i6_sqJD$}q3{;zJ|-F^4whByLJi1GaV{OQwYXXh7Bo<9FC{_MZ~
z@lQTCb-JvzK=oxc*FAqO;qoTQAwlSg#ztb+4Z|%k22R*`FjE914%*1VSgQgk6Z`(g
z%&f!Sz!b>T<%m{$_6iWW_ujplYG#33N5@FUWPbTYHh=v=06-)6xh<~cCB2eu8i;<c
zFQX(}V%A#i+_s)get{j_)0U*|;8?qE`q8Fp08Au$`s&Q2Dy3Fx(`rR8WmFfs4m#U*
z?WXl1iuAm~E=`fHsuii-!PU%^ZJ{n&r4qK`i}OcY43b(EF+@*65*2K*eYQlwcc_pn
znLtgY`&pY=mQLe1@#`O<mI@tQ?>c1H?h&!7^fJA=Y}LGTcNtDscY|4E#v<i@U*6s8
z{s{N?AfN)OP3wn(V1P_i<#4k{3}?ex7`DUtE{jnSLh==f*Ap9nA`*xVa4w~YF!7x8
z23jp5Dy>&`-!8zyB~{h!X6M>kho!ri(No-8Yy(IPQAE&;5IL}Wtj&};f>oz-`3#&n
z#F$iZe>mLS+=3C3ZHM7(J4B{=o=dGCee}fM+#d2?6cp6C=!lKh?xxu09qq;92j`z_
zY~1_0<r4}6y5|0YjH@xR%@le=cy@la+imB$sJH-)eaL`~4B1_XaAJ6wdfDc~NDrt$
zCUToKBZa_?G|(<E;~t;3c#xKIp_ia!CTa)<qSee?2DCElf~s;0Ya}xZeK^s=WgV&m
zVCGW|YRUjJ!X=SV*4f>J1l;DBLJzXv-p@x`p5O3i|G_gtBy=UJ5uq3605l!vA#sY)
zj7m{v5P`!aUJogtn&!+?u}Y{h-Q4A4DY8ksao7#ahP9RulFz9`R0WBsID48%)f~TE
zMRO6asH>?U&ujt`Qb-|~vD7MtRn$#p0E9e>sA!GMXrQ7YCNL1JBDETZ;+1h=qH0JK
zYTCSh^X6EN$TX(0R#3@;sN&s|h-4xfVk&u>OA$mME=6*woCctfD+R_m7tm>ddOhMu
zda+4on_)=f{jq$1Yu_E_+kB{1hG8@x%r^g3LV#&Lh7hC*g2fb_QbI%`6+MbTBmiKo
zPuTu+d;1GaKDtq}S}PNiiBfp;L;g2^_06#5&px`izS`}!ai9PgjzVwl^KW0=>?b`N
zu6Gx7U5iRFQ4pC#kSmy=A)<uH!w^i%VVV`$yV-Z|ZlqX9Pd@(XpZ?xJET~pSQ^0W?
z8C~?~x&w7d0tE*JC?S|>41{Q=6@WrumBK`3>Yhk6CD6#oh*GTxOrlwFKbP;nd-uhU
zo?UMPXyFiV57X`a-IMc+lmZhFeX;2P03ZNKL_t*4T75c#045SbFpncK<@N>!fJSad
z1SK-CQtDDc7so83VIcGDPXKJj8ZRw$x%-=5gHRV!ff)g{Sq!s*RsXQ&;jw;J;bMo?
zwc?ooz?*VqVne8nw9qEW?)5^CFQtX!NX~*@B%po7rA?^e9+<H77Cs?#aTWm>N$6aA
zO>GO;KUcTYG>i#CFF2arrqLFALIAABY0c?@*m851F>*Ts&AksQEg%jTQ?r_Lj$ESK
zWOp8V-OOMB1{}ENO57%0o}Lnz1BX1%({!v;`TpA%zxmbQ{qWmw4{vV(iy5k-nh>D6
zI*Sks=DRXHA3pu;i?in+Lmc8Tnn8-uxlv%^slZjl464*&NUD}|@#`~}Y|ym9xs<@M
zQ~_*Rjb<{>vtO&;NfUFeQl$+lrLRuB;w+^E<|?I!E-1Do7;xZHssgCkaW236-S2O1
z_YoyT+-*Y$l;^pM>~`B{&z{}xa~$%V1p&r!WM)T6=tBdW!%yD7U)LMTM?=vE_TN5s
zUx+g6`7<i0`KlL~!!V?)t1BYDyW2Cei`d%k5h*YsfmB)J(4CBgy$TE=v?Me_LLfpW
ziZN_9o04;tx+F2AlxnU1$ix`EP7qQ5#36txO5;&A+NZ5%-_}N(#!O3h+a8h!taVx<
zPg>Hb0jwNc%MWrAaswe@Lr`i9c==#)<IijOlTRbS3D@ai&rOL15wNA-m=OTfVxrtW
ztc^{*f`P0s=b>s+Q9|4#A}}Nd1*yI~CN(FLM+0r^<3`bBRa~4^W`GdAqcSxl6b-OY
z>Q5YFch<D*$o?t}3WHkjLTCUWZ?Q!xe0gO^?Qv3T;{wM)F#FaD3`L_`@k^~ptcV%X
z?_b}%+n1PN!~Dth#aXg#BsI-hro$xlK3pgI$@zWOyQx$oZ5mxfVkz07-i+tIHAbRR
zO4Z<&`#jGf4TzZMSycfBIUX;Eq;G^dni@Pbd#0rS>OcNsd$Fsv9_RA<UB0<{_vXHQ
zcYxo#zMpJ^W<P%xfBEUz`PE0I%x0!iwahgaF#*j!@J}f*<MDU|AV4;~1S3G*Y<7S7
zci+DJ_WGvcZnssf0GQ&OB4?4~RH~X={k>rosr{A(Q}MwRw{Qg{1a7}RwUT!Ooo_gi
z3Z>U?5BC)rQ4JY4fBxcj07-#3hWo5VIPp<>`ex)10%~)2D5x6X5QEQ|2_YZ`f|!^Q
zYCU>Dx9^6TP*npH5g+GyOcBfwG!e!?%ti#vfe}n}NKv(jSd7utr!g=w2Z9j7QiAyO
zt<(|%1!nIgT?R#j1Tg2BnO$lZ7=0Yw^brPtMu<c#wU`+bw-(R@%>whHOrb`gaQ#d5
zgGucqCsYw46f^QvXH-N4A2V=7#46Ru05GN4_}vKDG&tH6$jkZK$`13XV7FzT4(GPE
zX&LDTYDBF@AVx({G3)jQFB%k#8p*Q_1Aw&6Fi{LdK|RRIL$*w7h(=`OVH>`sLq#lc
zpg8RG48~0gA$(2rN+sX#s~H+vMb)}|VH3mS{Q7q<&OdrOUO(BMU-K|}6T^YY(Z4Me
z4^}AC>JHtUtJAX;pjIE!BQez~0H~q{QgRuG0Tw-p&q8h4?DlE~%v3o9DHXfcE>MdC
z8`99EJj5dK=I#C0U;mS+apV*!1XeY%T5G*~`TF-S-`w0!3M8sAMi15Y`#?NoUNz?|
zQXXlk>_dUI?_-%)m@Pv?phtU505B$UH=vI$#vz@bpI@AvU0huL{AWKmL#efjR#E7r
z_mYd5g&0(%6i0G4_+3>A%%+x0_R%f%b;f2K5MVkUz3i){m?<(OqBIQSFn~eM`FNZV
zF{MqdVg}RksD!54np|QxxjCOM#^CWHBCfgs&OkB0K~;g~(q<n8iO5o=gb->KM2f-5
z1eJ&bv#2=lTD9?ctdHqcPw{Hdjakr10Ei9o8scgQW(K0I)?TpF!5MXG01yZaOtit;
zy=U?<!eFoqs;b6q8Hi1PVTKO>HnkHSXsJ0`pc4TYsNc!j<WztPfv{Tu+PDv0gz|8(
z4$HzAnlNf*m-h3*U#4YF-xPWZjk|B9O+gTR<XhcZ4h4__%O70@(M>Bobnn_u1E3M?
zg3QQF5Nc-{_%br6sY_n0hq$_tT%kI%x|JY0c&s2;@=BR8!JAxOZ}jr={_YH3DK*+Y
zDcVO*cW0y4`DU6j7;YnPo{k?s+5X)4KmGYtE?UIU@<2zmbarulJRV}))Zr`+MWl*l
z9}UGAFE1{Bc=JxoVhm`iB4lv3i?QB5-`SJ24Uq{05QD!a6z6ToRef(CLp0T9c|;df
zQ=||=%q2I0ext*Hsu{-#0fZ9abgYHOaYKlq)T*L)5^hAPpdA2^iKxsKAR=Li0mQ7B
z8XL3@wTjxom;;;?{Oygxlth#W0|!+>LQn!#11$xRG%z`R3lRv+RLQr+pa>e606=t)
z1{?#TN<A*}(41@2B%4M?06iN<>}oV7B*aqc@-`#FKxkTtIK-$@9fp~6MbH?d)2WzH
zMN(uW%%!+`I57GCf&oA!1WGY@t%G1gl$<j$n_39elIn@fB&85KGT1>*6i8+EX@Q4w
zZpQI=ocz9tkzJRi08G&bz;iCvWalBq1pgmpZ}uxma;5p5#mwDfyIZbRSqqEBE|T5T
z)9gXd0s)eq^tb9sz(~Mov<);P2{Ya50b0|0b1AY|TP}CWyF`S$nVoa=aLha+i!}m7
z5CyPUm3cG5-Rvyi_xk`!Nv1+b2mx|h4YXbjeIKTAtgo{n7{w5)To$0~BQxicD<Y{S
zKll&FjLc*z0A}KnJ#kn{7lW!5u^3ntn4pN|l7lyV%eZ+DKE|$Oy8PlxGqgOZ$4jW1
zSx`U%QQO_ze*RZ~FCl)kIiqgH!zyqrrA$+?(dB7gtAQ_5OCfjAnz355#v+Rd68l5w
zIw27$z^Mv1=Mal_yiw!#`_&vQn{W&Pald^_nj!c)m~$H4@}z)({pIDG+xv$Qqa$C~
z?aXFLwW#fjhJI0sVVST(;3x#f7DA~as$%b^K>mN|t-d#y!48^ON0b210bK1g_W#+%
zxLov`&Em7qKKbD%pLAV6i>nntL`8&&!IvQ5E0WSER0ddS*d9dYVu%=HPRT=1eAGQB
zSP-E|@gLl;P}hPWv(GKuCF?C&g>S1OVak)Kap0VCN)r;5BEw?2-|qJNz5j{a8<|p4
zky1qwba#K}Dp6+-BSMTZ=VArGtpTJiUi6hEA$DF6`#?+UP3e|yow;6MLFxi#&Muo-
z+i(m%opY_!6jU0yPOE`YE7Q8^UI1OoTQ4au0+rs4byS<%{dz6e47n<Ss9aC4U(~AV
z#0~OQ>WQGB4cu3M_{OWL#J5_1*KVS&B<Fnw61vofeJ;mn0L(^YY+$Z8H30*z`6vbi
zP1h<-_hx{02*@xrFa`uO_MeJSJ*4iC;%Pt!1GrJmXKkMcqKU#Z%9N(@{_d8Le7Rw2
z6bLbQTq472=v$So2nwibrvA+V{QQ^S?)PPVvL2S}$z{XiKIANtJw;rktd`5wYI%3J
z?Lvq#5P}q2triP>`(OVApFCfKsv)bvRHTRl9D*3;Vnu`*4Y?#0RWt)&RWC42)eo#t
z%yJg3YR{^5R4IfI`bEiER1|nO;Xak3fS|R71Yrs>a4y+>Ql*qqBnI~rVJ>C6A0c1{
z%Ei4RTyk-*a4u%0#J(#@+P>B~kv$?#IU|shI?OD%Di@qiS;2!9^JrK^MG30?7o`M1
z$VK};`uakP^s!SvYP`tpJ8V2#Q4P!@#g(8TM7J5O)`My>1z<E&Ap*9Ys$~P{5g<^=
z22up-O$;PpSwiSU6hSeeYVVI-Ad*t*pD-?9XLYHhA_a(iBG3^*VA$>UAx5yRQ$Tz^
zp<0%U#gwL*EFXA40|XE$T{J0b=BZgFGIbc1d9d58n#>?}F-=KDnQ-W<WX}u`^M1T<
z>osaDDP^X<?}%Z)y*E+!QS~t*!fF|ZA*f`P(#J?3Pz!V8z+kzQodI-VIpO*F2R|*j
zd;9fo<o=o}j?L695~_w~fcKX-U;phdcN4t${Xe1w#$gTI6=47z$EhFs+uJ);=sM^k
zcxGuS7Gjrkj$LnNsmPQ~L=BKA076bl#bW4@AULC~WCNJS6k<nQ4H*Q8=sW`n$d>NY
z?Qbtu55M=r_g4$vkJE0qPounjdq*K=6^xtDKmW}%r5L+XCT1WsW->7a%!Y~qJ<qc_
zmz-0ZQgK6p2Ok}at-hDT{JT`Fc}x1vKX4?QswXWRa(`n8eIL6%K7R7};_)NyIz`+~
zqpC7f7bAcnLv8NJkb;UJArqO2`P88Sf&BGDV6_q=#Et<;RnVYECM2gvw0MKLqpMU5
z&mu%%b94-ming>V6e&&xAYYIGsR$7}O3#<dO#zLiWKl&RpO5AuXy7@LMLoT`Rw1G?
zjmgPeQ_3EDRdNBqlrjK})8twQ02s$Hr|fsXWC=MJ7ZT1&lka3p9hXRMpRl9<_*Yd*
z@xxW;psS;#>4O3V-XXBJp)t8Ur|R9k3bf<2c(A%_P(Kyi!%*E$vjV)ys;yO=H7D{g
zpw}veS3QtisuPCV?y3F8wVP5frPehAcyb1qiSvEH0H9K4YOLE)_M4Y>HPRcJF9SSG
ztx^-(GVbWDI1u7t+;6w{_Xc3t@>&VZEJotGHz)|CSmnM@eNcubfbjKies%SB|HuFI
zpP!ywq%ozG7VDEVj>J()F-u@JblqyXxWBz$Ef<lo<5&V*oUS$94EgeDzplBwI2U35
zQF_iMs*csb=aqgfx+mWz`ZNL$i;$W|0y?X@#%i<o7Zll<k$~dEb}ym`u@r4GCI|sl
zw+N)}PQp~`pB`F{Q*PWPM94Lvp@JvNY@KVWT{k6*&lp^^jMU0E0}pEe49tv3DJ2fQ
zXBS#cBj9FdCqh(r%zGG_Dsk{3i;8QT-Tx8@(U9Cu?+*1M1&P2aYsr_?A_~U22)V=3
zk0-Svz!c`5qz-q?O&6Y%VLokBA%Iw?PFN?9qRUbWbMP&U>vzmlw8XGLBsX8V3K0=w
zSQ3Zr!$TK?Gk6K~@uQ2~Zp=9lV$K=Ny6!|om_S5`NtKwW>-+nA4n)j6O%oBut}8h)
zb6^ZH5H3K?_W~kiwd#h*2#SQ;hwa71*)&aQnil=Q1jC}U27R2SY1u!U9^U`r{pII>
z4PX7T++SY@jG_nyRmE#8Kp@e#-@FR_a{uW0^WQrSLo5c^_0yQvXD59ZpPX&>Q<}0C
z(P_#t2JI~65<<V|7b%ylr6?#d5)}gx5$lohA*C2283EE*(1<k*+gxOHV=MV{B{?%l
zuiKS<{a^i)Cm%e1@7c5Sz7M<II8NE!cA^%B<+oS)|Niq|GILRhF?K<T$V77y=0Iec
zMY1`cYmULrIXjZf$1r*%Q2NeaXZhH1zQQpB>py4zCB%0VBdVXLi($1|FIN|@Zt>-I
zU#tTNDWw=NMvTmeR&wzPiq=3fMAm>rU`#%OAk~88PDP0^R*XsGP>S>C4H*GIDO9RW
zk<20Z@<nRQHo4a~7Xc#x@P4=NHzp-AnJFr$YAM!7Hbh1c6dod?t1K;q*w-VzGqb^*
zAv#nxlsk1qkSe$)gkX}7UHDG#X^ahUCvnr?RmfLJDZLwrfp(<dYMctJR{%6*y{c((
zUaD4H16oaMA_D}QL(#p1tgv`MP*VpRY9;xAnKbNv8)nuihksjjS=$utv-r&eTzwj;
zHoIK>@+WSjqgmhD(1EoAqIp^^rU=v!MTRZ-w(<n@0CMx6O~K575sT((Iexd;^v9+O
z{+b5fciKnccXgkyt%7JtLGzegLtsENsbW(?GHHRAE)7KlRPqn5ln~fdTzOH7eEFMS
zzr1{S|AUX8zj(hN9{OQFrG39zNl7|Qxu_N?B@bN;OrSZ9yC+YcJ#44Gi}(B8_V$YP
zW1Opmb^$5^yL`zX7!UpQo{7xBx%}kdfrf%;4oaVPpdEZ!V0CcD08q>T8D^l$T;z3J
zM*si-kQ*6WeP}V`g!~!BhEklLB;u+#S5==kHfxX|!%VP6h9=X+x!^Dca_+R5nj$0d
z*y^S_7=mMW#}UYBUINap!PZ7JFf7sR;Ho$tnDdEd^3CsLEmsz?0vWZ=z^l6U+Rr<l
zeU(o$&B7}{v|7cAy9`aInn-AXG#%)W4alTA87N&)47JYQY&P5NTUiP*F|lu}4T@K<
zNJt1d7a}&fr^k$7X4wq7u2U`O+I}!Zq1wqMQ;9KzkO;BsJCPjTA7YR+N!Kl62)X2b
zKq*QT_S^k(wI<|g#1G#4?8US2AA9-x|1|FJ_fSv`)ni2fO^gu`_2$bjKm73NDLi@f
zczO2pSt&}iK_p_zA`cI`-6d5H-H>utQ3F~omnu3=mXy+jfTTb<XT**}*zd=24<X`e
zwVZO<Pne4-QqG{}Vecln7y!}2%4ECifBM<Qzxdhvnn%PUsYFufK#K17dj^bvX?u5j
zbK~%Q=h7gd)VG_Yj44f`&@|*FrR3kZH@$PX;jz^DcbU#}G{X1(zsG#zw!Ftf{1TuW
zsE9Bybs;YL<^9OtyvCi87>a>vAR=V+pC~6q%nn3y9}1!WLl`)yh=LM_qkt9#H3Z}K
z>IEhh@$e!u39kJ#?Yqb<X2$5VBHtx~ApsI2XGe7sE_>+$nh7(R=<WT($;oEXX^h|x
zBBS^QKSu6j3?8>do}MN#252<_hu|(_6&a%TI4v;+A^<_Ewq{0WE6l)iBQkf*0uWhL
zv_M3jl6we&@;*|JwR7Hm&d4zlldS4v9+#fhZ`!I!Ds+)Kc!OSws+8)F5<x!>4I3QQ
zhyvGrzWGEO0L+S+Is;GZK}XD7gYM08o+{kO6x$UD;N2w<7>DQypk^vLH%gJAnOcDw
zZ{_qIcF=!|%tIpwnX8&WO~pBc_OwUD%u2~(Dy>2F)i?U?z|HqZtRG(zDjxabeMYD5
z8>t?5Bw|r%$(P{YIw6@BHDhEEC(U}LM~!4!Jtv}y2oDeUzy9^FFR!;h|NFmx`uus{
z4;%-kjwuqc0vbRO%{d!bjO;_4lJj!4;ut#7+qZ8;3Nkgism_@4Ba610D$Jx3P?6m7
zrssux?Yy9JiRo~<yZ*NVQe4GDGb7javwnk#8bM1-RGrtW^RB}8N$Aj!dQ8kp0|Nju
zP|)CjR-kw04yJXVQZ)(HP3Xf}Lh{!hU5kk3Q4*%rfPv^1b}uRPc$fjurr6D04q)sV
z#sD*LwWeX#4U7>YQmb(4Csren=7|Y{85)Q=w`-0S<ffdgF3)<B8fznGnO0JKTLFQ&
zCrfHl)IqxnzF-0X#s&#58IhRj;qKDR7!agE>}!cG2nd3T5D-mMjb8*q00PL<-qp<t
zfQ%soFg1ZLMj#~;P$*IuB7mu2%1DH$Wg2C%SaettOleFZV4gA~ot|xUwcb6P|It7D
zLs9+ZU;Scx_W){!CQ`{g6)ZeWfAyz-rseLB!#_V+LbvEuU@DSwo>Bp%$W%blm^9~-
z`o1q|3xI?Ytc1Rew>r<E!l2VCYTp@gS@)>RxjjTxE22d}k+Y!jBJV@FTL!(>GA@Qb
zxqBN5<dRZ~T^A@6!|R*<<<%X>SVYJu26T%=DRO&vzuQg<=&Y2vqjl`PJC#c*BIOwR
z_&uB5{|trWdq&eWco~ld(m)lo3`7_LEtd<l%)0;Rf~D&Oy8^Z!)08vl6uXW?kX(uA
zqExaE^H_=ylc=g;DOe=cN6y;|HLRtxw|#{=Msr>Yssk#xo3dJVvmO&gul{o`eshZ|
zU<5NQ@^%yi<ob*gz{%C6m?b|&s;W{=O%cVx=1__4-h7WWhLBK2L-n;XmWLlbk3ak2
za<eo<Bcv9_fo6u)&TMMn%{M3*@NUmncR4f<*%238tB|6eW=+aiV^FGf!4OpIV#Y7O
zSy|T+b7Xe9yMh5zQB!UIa6J-zv>7;ruIt(lpp3qs*J>KWdBj2hz|=7ZKlpR)E}WF4
z%?+)sz(X%AoLInt)Iimd2u6Tl3P4qfirn}8cS6x!J4SX$+{4-msOKp)5DbWkRU4{;
z060&eX6Ipyjgp84hDB=e3Z_8r;_&E0FoLcdV(i>fo~cE1n{S;PIL3ex0~5!<?18&Q
zwKSwyjfi>q^4p>7_q$iW`o+(G_9uT5Ltx+#I%E%zft<^3zni8Jfi{~>j2vT^Q-1#B
zIU&TrZ{EC_Q*=B;VJ3I_yJuA^NKM+OBH-AH){kP{>DLAk2{}f#S{6$wsb%ua2<DoB
zV1_Ej%*|ONs^S6Uv&6L7-yMxdL{6YJDQX}DptC6TfQRuMB4?igSuGOK%mepK?Z6DF
zU>KR%ay2ZaXhj^mzzOP>q{6cdv@Vlsx2mGY=_p0bC*1AxsoG$gS^U1)KveY_>nPIf
zKxwTvH+u@T15@j#!oQ=nfu_BNdBifullt%2f`Gj?s22@3Da{NiVj@Bs_fj2KH5J~7
zTSUCJ;Bi%ER&)5ByR-u{mF&<oWey>*X#y~2?t3UXJO6bY$7-t<6%``ftXJ;c^eWTY
z`qO@lee7Pp%{c);f3|t{@dwv$-sW7A?oB`$+>Wc}J0i`a{KH@V&2qCwjwjEaSYQQy
z*pEyBz>4M~hE+}|D(d|oHWB3vt@P)J5lTrA8ERiwRYLB5MgRs9i&xj%#U}Plaae)f
zkNYVwJ5B`v_tRu%%wf0J&%b>0um86{huAN>#lypch>uAaMAdA$7>d%{`@J?yFB0Wa
zfS8GW>|CU@irIcQ&*M80wnrdtJ-&UZZG308_{@iLOA;ayL1bL?F$UW0?uH?L{P_Jx
z&rU^?7!a{m^(+t>K`f<c%N%DSH=&6c7>NNw6$HD<oS9trWL`+s^Tl27hoYhs@s*yc
ze?jQQa}my^gb>_hs%oZW=Da@uz?8G!?^<pA6^o*3raY!J1J_NRe{8uZhCYcFHB}0M
zvly7D#;Z5m@j0GtR^T8!dM6dTzGyA_1_6uO*WYZvzQlU_!tuNg+l$)9UvuPE>t#H_
z*sQMlwTY_`3=I{DnS$Rs0tP@L2JT4nezam^onIO&{MrnF!BDiQlxD81h<30@6e=AB
zp<1UUi@D<=*Q&v<G$ml9IZ%zrK|@+(rkONBG#N5-O#*Ox6V_J5W|p--nw4W<ZQ+WB
zU__>1D$;OBUcpqYzN1xU)0l(mOtP7&2nhNT4$&N{5o6z&3x$~6v0h!S2(jxzu_D@s
zjxYoYUT)Q4c@dFP=i_KsZ!X{7Uhnt2U;O+Ze*Sm=@bM=frIgZ?O92r}MfTIQ-R`7h
zkDl~@>;B>4)8)#WwVYBZdAVMB<j8kGsj8wXq0UZxtF4m?fr$yuk4sy8`+3!Meb-0t
zq*GFLYM*Hf?yas!FjVDk7-B2VR8=L_i_X-A&<I@9@oLyMa}DpAytCIz8>}e&7OkpA
z9DD>y2)RhfqNSqxK`S?4&gcOT4yGfs|GYm_s%}YYlJ?qq6Jk!2YBe*oGzF}t3<|ys
zZc*V*HK|5eg4vR5#hgCR?KJ^Ud2;C^BF;`vXaP+~@5IjJoXwP~huh}YP0gf*VM9y4
z!^+#3yDKF^@K{MiL=<GOLakEO8bSw}?TGkaH%2Z9s`5<$#0eW!9t<2~<X;>B+}&^I
z?UJv_xVeo1V4QB-G{FEst{!}s@1oxt)>IT0-Nnc6@AlJed0j^1$beD3BdjAW#fSWt
zfBF}9+v)wE{%G;&3_~Z1vG1*ov2qb0V7GLkr*2fd1~JtMA^;QRRHi98Ktk2pP3@av
zGP9|aS2qurxB0z=b{!LkTyRR#=i+l?Q9%Py`|8W9|MtK8w}1AZek+T|+%3$xd&ET~
zr>rHVG;K~FtvBb}{g>02(f@TZ03{L^jEcx{ll!}&_uu<BkI^nik<)EbWe3qrts4Om
zAQE;lbTLTIyY2nByZ_1Webn2jAs}NrO6#wSfJUkYjjY_#QmT7xUa6t6RrfiAsroR?
zssTih$;Ve!W#YkORlY;kq{3K5LL(rmy8IZS;Z%<#z<vavXe}rKQHnQ*b4F)mVpA(-
z*)aQ@sQUdPnDsoY`;#FQGxJPCuh&%#squ%syl$5lvu#e7@@fo-b1=9O_?D~9y=;~c
zH}sGh`LqculghM+mU%-95IvkOgy{V#Bb#Ah(xQ^bS+86Jwmoo*84*FPfLQ&NK_pp)
z&a)YS1q{p~FmWAtS%AQhQ-R66$^|2205*%%GVhRT$dVE$YAG3^N`V|41lEN<5`~sX
z0}T)D5u@Lc@@w7G`Rvix-6*QrYW@Ti^N`Vw(7W*1GMO>PV8!{#;^JztQrT<BTvGum
zh0$@64R8-?Hsve=VZkno1q@W%7$P4ypk*synp64JuYNU6DFoi$J^b0f|37p36J*#u
z-0mLkcia7bpY~&(l9ZggSnu(1KXu*0gB$>Lw|%(2etULy4(M(D;VpGGI@i&<INI94
z5EY=9B&ai9e~n#d6amqLT%7yBoCBkYsENCEp?Nk883|(jx=qxWNC>nfJZysJZ8<np
zp=IGg3_;7JpiR-BVAyyT27p7?Q(*Sr4NCz*4<i7Fq-q=g2S6BxrNamh$5XY-N$V+f
zKF9p8kr2?xXdF|GqN!o%F5W}cjEEdUPo2|JrD!RNrk(=g`;>Mj5&(z5Aq0;AQOULF
zQ8~=)+ywyWSr>Caf=DS@fUxl_4=0rGg#vS6MkE!<IXQev4|{AfEr6tk%rSI`KnO_H
zw18&Ps@59da#+@=ad5ec=9K0=xSFfmL{*7`sxfn5uIGI<9B4CD_}l}C9aHN#5%!C|
zlq@P#8+YiIi?e5saaAz$001BWNkl<Zb1EsN?d1(5Fh&J5DGK5bPckbv55M`_UnGF{
zKKo&Rb_yJ)tPNR=HLk6Gn>xouR0(CHt`G$;(o-(8;=?hw<QgHwEO>qOwpgcHm=~g`
z6wG{z28bS!$+x$=fAv58$N%wv`J3hQ7X)0UOeB>mDj;Zq!)i%qC+oZI<YJ{7;^aFl
zg*pF6j~m$;toUxe!n_+kR@An=*iqO~jgp)NS+zMv03sm77y=VXPN1ToZ*Ol?PBBJQ
z-&i%mWaZenSF7%(5Pbz<;HyS#-gN*F4OF{Dz&WL{IQ3se0Ela3NlV`KnIg1z%?nY#
zhS|(YWrg~4>IEVlWW|iF#YZwW;F-49>Jqdea1&-g^Y>L;mp_>(HL;@#JP+$ot)&0z
z>>@&ZbP<<}`{2xx7K&0o+zQ`7f1eauWCFQo7Yx)04A2w{Vy^RgAcR1KF?J3xuDTs1
zV+xGavxww0%|R_D8bTy*6TNdJih-qM0v+>cDn!AIkz?Nvfj#sPiPQsSy&5Vi^<C9s
z5CB39(VK?)VlaU+1RohHV`&P52#CbBU-ydJu$kP<=D_ee$Mb2bG>T!9s3D4>fS*RH
zgdGrJ7`oVF6FZm{Gh!koFfG2vQ8P3G3&^@yELzSTBC>H<tk;0x;oE9z>g9+rhvj0W
z1Th9?o~8$7b`TL_DJ9>&z5C*eFSgsAhzyIx=b!%q86G{lNO?@-Htlz5_psaUO4gFJ
zNM>|6YX0cav%U{#hN^kWH<y?A=?@#AmB2Oq4I|)UcAS;!=9)M$%i>d3GcRrhP!;-q
z2q8LT5D^2jFcuMmY!%Id75I-p9G!>b!bh{h1;xbtfwXypNq|foy4X2Y!3+pOW|B14
ztWcZNwg45Gg9k7AV4<qzz58siDVOsj@?u!HZT~1Iufj3W4lQyMFiIN{`F31POIwYK
z83K}%wSXcK^<D3hF)&ulXl5p+z8?WGnb}&57((<?wG>1`$;Dl^ji^pwe#;UAwEc^(
zFw_-*P1@L|Yluvt@A|&${a4Oqn#P@v@>)C;wsAUe2tz-F7=7}Lh#U}I(N(d0+Jpk?
zz!Hej|K>iYHayn~RRTHy?GcB?!naGRc^vmyGS24zhBOdWCPJXt4>1G>SBVrb6;<^7
zKZKL>6R$eHHP~L?mT?3K9<1p>&#Hz3_gDAd{`|KX`$wNpf3hJ2b|)THxmc0Z;9ZSQ
zs$fu%0ssZ(uIr14<28J)CR!o}Yqz)xR0ucNl+vBu$C5`=H8xYC;G{#5vVF*3es#l(
zv(PV$xSqNQ6oO?1f*27@Zf>r&`|Jczq!2hXhrP@Tjw+pa7kp^%60*K`It{a>2i1V^
z9r|QzKfn#ahycUT4?|aSE@?CcBz*Jw&Gg9+2;G+fGl1Q+j?iW)iBCA{r3tRWL214<
zFa(8CCi20g6o<wbp)<-6ktnpT51I^CYrj-W1eBUm?2cJ#R*9NtUSB;00A-w$!SsN?
zZJRM7pL13Ex|6$zsG+{q)Kl82?qtZ0?uWX&t(j3iIhVp%9-VjLNCDTnSVU@kh*=|2
zlLCDcplVQaBqD=}-MqanKKz7b>@PN_kC;NuDKUtF2{>Rc#a_O=y1Tm<&7~-Z_2Vb~
z*?B-_tXWPJVjzlza!J$e^`%cL@&qU6ADx`i(XiSGk(s~<jZNV0_D)rq0I&n5)AM>-
zwP`XSy5S+^DUWH)IS~`!Fs#;#MU8CtgX%CzZs=W{_4hzvzT%=<aDh*#fKhW!p7a8k
zk<i#Y`@Ka+u;UIunGCavYJocL>xmbEqo1V6L|Bw?N{Kjl<{1%zqKQh%P^03p(T0hb
zVhAQ9fq;!KUw$29AG&TGhN3o@-rc|5j}IbJ@~A20X|LIbmqEn{fY}1``T5!D$z~e&
zITe(2b@|3U?DbKqf~*=6+|r~Juqo1k2r&?d`FjGY8GsN1n)ZF~t0PtCMaReycrsHX
zae)yMnquIvSgm91=cuw6q7^DAMYEYz<{>CzKpbLRb=^?69wG`F0!?E!5ECOH&$lsy
zz+K-D6e0t;UXfV|-Ib7C&+jq{R}u`v0+D>l{0_+8$sR4lu!Xx}%hQCG5!sNuCZK@q
z`n3)$#@I1Yb(|rYh61CMJR3X?dp-^v0wNQ#Gc*E+GVMy4S_KF#G$;@aT{jTMI!CLe
zx?nw=wZgg``%fW+4uPq1xSAEeg39ZZ$OD2a?jZz(rY!M>#>BM|zVK-o-fd%rq^d-K
zXhj4Z{5r=5s3B_C4S^#EW~Q7x;9cB(P}i0o&4dhqA$H8nArK-Y+e`D8RRbQXmF3Cs
z_@ifO%Bo;DCaJiyO|-f&oa}u2>MHhq?E8}t7Mrf`x)7s}Oh}SyX){=d<RB4Yh5OTD
zv1Vo{*~}Jw=Lt~;;?Zh8(ldkYxaAPULN59I<P;N#bUBGn|8mY|(06^;b<6c~u^xyS
zkiGt^+0zJpw63$jQI!m*7$0n!N+~h+%<MxEk%V|qcf$A0nU6zbk1Yls)Pcuamxjpr
zj!YWcO%P&?T{N}*ey2su1QBlEzTNM4>(z>wMGH2$h1t9IVpSFKlDFp3K!XNaV_zbL
z&>NUaF|8>_%&Z8d2w?!$8P`QfRV(DrK!tS7+64eafih18oGLM6HC5HO+BE>H*2puj
zso^Kk5YSY?ZAg_vTeHF%=~^mgUJWbN1`avmRduTb7*QUdKsc&$aLx@r7Nb|RR;`QF
zz~xc1t3<CZUw--3SEZC`Oh{)x{lllB5_r&?6+`niY%0^6*DtsGJ(!phh4AT*&b`I~
zQ_pEPKvE23xA$+q`1LOgKyoe;H)r<b`6q|;N>d{;MPOp&ufBZw)mPtwiE17bfB1u+
zz4$P+&)0)F37Hg7Nq+s?pTD`hDkY(T*!qW`{fmo7?>E}sAtA)54q#d(VGSf!p)lZN
z9G{{i6)nI0^)GL3@BGkESpDd;e{y>M#E$Yq5JFK75yABJtJl+%bDpFWv&EyQzjyv9
z00I*GSI!|6Qw;0_<|3vdez-|4riP3;=bGkCWK2RhiC$mb+}+;XKin-=tNoPnG^v!7
zBo|as6Degfb3`(+$L)Ehg26{0zIgWJY`2TcWoH)#lBAS4^mD*;n}WD+stQs>3b_Cd
zm6<Vcw&XKBs^DTm4s%=#6B`%-8M85J5wqfzBq5tJA@$t=$gTPzLJ+1HBj{MfF|ghx
z7==~e_pSYP-IfHVK8BLBIzk_+H~<3>hQQGm>mn9H2!TyNN;WNCkQ)$(!98yr0|iF(
zG{n|M)R}p!=o_)XH8akBi7~1rlWZm~An{0c0FHsXt_P?QWF9fZhy~QF9HIZv6M91E
znAqDLLiVjKfN0HOH6m2EAv3Yhek$|C0*3-BI;kpD{xta=8Y3AJ)C_ZEq`<6_N*TSO
zbeA$BtI@FRm;(`2VlNqhNiN4}?MK;G=AKkSLjzCPu#yikGUUuWX6EH$i5Q%|%OQrq
zlD&rWXsOy;Aad6)`ffnNy67h25Ym2!&5rK}C=o7Ji}ybH2n^o<Y;WFba+gK`^IbcV
zSx~)s`8qC#ZnavjPAK?1n9Q6}iE3r$hI(zm91VCFmO!Mfwnk#F%l*<+m~|PHrm6V>
zY`tE~1m!l|Z67|07cDx;+%ogoXP^G&wcI3;s`alCNyIS(?4qHiqB5ndrd{8eHJOr!
z+E!R;rFrAKx9_po>N`QdNA0g7GT|J*0CSAe9G_gjFlOdZO6i#X;17O$eRccwSHDGs
zhx><8vWq-A8jiQim2qK)X45pf(iST>sp6MFjgUEn5TZ*LOPOjaFPMRr(h|tE6f+`j
zLExtK6VO9^A{ZbQHF86cw{L(dDw_Se_QAM^#hG~mH@924W<RKDR%K@7mM5ctXk-vL
z)}Ov8F?bq-+XxyNq!Qx6YT?O<3ZO`2dbYMeI0sZg)7jb~1h<M^{a;5fXXe0RBtqj-
z<n-h;my$YB+dR5>RD+nXC4wTmoPA7rSS*R-wA=1dUM!c3<+^_3h-%<zVnRq9bFtI2
zN2QcJjZ^AheDH&=>l;SLH|}Wcnd)F_C!0+!xuiYd;`#Fzc--2%6OI`GwSXzEmzy+=
zd7Mh-_2$%OQ0f7QU414;lx&<Q5_s76)zb{bN=gW}=wnW4zt3X2T5YQ2wss<9MnnvR
zQ<?7HUhj7M{eG8oHamO%;vaF~BQvWZnt)P_HFOW=*`4JnHJd3R3ixiCkOSS{-@ShQ
z?d{u}+qc(m$D)8KW$)^$M$PRLAvji>h$&hrg%K8Azg}+$p&y*%gB)PL-}Q?@55AgN
ztz2tW=b$!ZoDl*tl%$uJuS85FOA!i-(~FNcXHUKVt*Qb7A_zpu^zHT4I3~#%5&M3#
zIg6V!M<r8>oTnH96e?17ch{}G7LLo+$yw}rA_h?Me0D=cijlSGH0~T|Ct?(q06nZ=
zZc{=CMXU=^GcrofJ4xB0vMF2aHct9$&$Br<*8E{T2oqf%@9(g4Pu+{a1jytrs^Ts*
zqCngccpyY1tWO98E{tdet+*3G4Ag)_h#dX-nQi{e-1oihCooklMM^U1Vo&UvbS5J2
z3;>J+1DHy#!JWiv1{R4s4u0){ivWn2nGqB;10tBX@`VUOq`vQ)Ah0@)-J#{u_yhN_
zE^d&irePCdVD{5i!Au2^K(&flI5g!JAs|ugx_<X?Cz8Qr9zGc$V8DhVaT&S)Jd9>0
z-T~Lap;7FHN6$}vO`FnGL_o;UfEZMZC<7pv?x#0jeA6u!tMjwv`UFF8@^oNloGG~1
zgV2DPS(P|M4$;|)pca^!*<V}&GBa*B+<wgCI1vH^BB7X0Q+l|*{qc*Qh;u1OfPx{!
z&1Q9WcG?dM9q)Bc-}Q7zAfpaYn3S}nl*Is$R1_=Wp<bt@6u<bfo#pdD^?2-j9LjqD
z4|tzY>#ai{a@>Z^zG3Gz-rw&frBd=Z?i`|5O1{5;P?ZoOw!{waUyuQtU7i_r6cr&l
zO3o$r!IH099KeaDNyJQ{Z8z#Pjtmeugs$s-PcPXE7d4Z{4Wb%~YS#6A*L7Y8Ow;6a
z3KR2DGN=dtAtJgW6_HBGc^X|Y0VW2DhKc}0hU^!$QyIVc{0p4YdbwC^*8OUrp%bhy
z0Waz5tx<uH2!tR4fPpl;+vd(JsT#FbgI836s*I=<F(FmPrdi^+85Tnn>v|$utyZg9
z%`___5gD)(2{CREGvZRQJbv<C2#m9{vn`C#ItAEIyg7S5j#D=Pjqv2zb9yJ-%@=`W
z7E-}1F?K7!lrsVL{V>oGxIm-?^d>%x6H+({aVpX)Wu+Km=L259Nvq4nA@eQ&v2Eh&
zoW>m;REPUW$Vgo&1kiVpwFJ|V!g9G<AAh`Xz*b`}7`xR9W8nVob~}~W56i>rfeN4;
zL%&)gF^6DCZa{MBQ&I8d{&AR|zp>1?SPajfKRLfRdGp&>-Y0^BI3mjNyokjkv;ftN
zm=vI2F2P_w<?EX}B<Q-XsO53IdwcWv>C<VN<{AZEwrc2n6<2=&qB!^u01+gQH&>Uc
zu-)F8La||U@?ne-u}YTJlsxl`Y25GLy!<v7BUDhJu<w_Tzz&$b8s{EZ0~N`yzWu5w
znu=MWu=(t#AJiB=H%*fwPz<3YxV^r<xw=XzsTL71TzvfL?}reX0#WUj0uwNGUEJM{
zzy17Ik_9}qo!3A6lgEBVsVde1lDd-G%p<aoHG0s99<IM9LS#fUxxKl1bNL1l)06;c
zv3~r?kIt&FnV=G{5SW=wuP<L7w5;66;q3J6nUg@MDW}kok=ShiaF?ciF4@4QI4m~t
zWO?o`pk}KhH>^$Dy_Qi$V~i<hpyk=cse8?-78wYj%z@BAr<^AyQbQzGUUb8WFS_WE
zM#pZJZix=$w_hbZc%)OC-ytHC2QDWw74>yaCxEIlb76@YRf#x8CR3DDSv<@}kwT5>
z1~#k`cI&!mg-hO{iSOl&sHhEn;LtsJ|G6g}z54Z+``bG+Ghk;`*7g<^9=313`1<6@
z<JIOgo}F{-5WyrcQqhbkHSq;Sg*`8H7B?Yc*E@BS>Q&vSQp{Y+KBYnsx<FdeH{X17
ze{-2GFaJ7>PtNh_lcyzDz?({0E{5%P*K#(iAjl_85*E1Z7{>A8bt*s<tVoga<l<4+
z_1o>X)HV^@s<rMA=jri$`}(N%Af-I`(7e0^Gr{H`d6!99g%qYxtcXa->Hc>6aQ_#J
zj{CkdLRGoDyPdO!T0qduv8=ZV5yub&Of^>sF-P>V69)i47)Vt(bX1Z`^57}&f?UBF
zV%Np4E+tjF2stNJRmoI2$Y_XWJoLS{>`<e_LMao7RXdMkvA|XB$bpXzoKW%vCIB9b
z>4&fp0~!%B7(QIz!tFMcvb(vvlW&Azakg1poObIacOmp0F{4j`yazkLHH-<ucV-l`
zTk#z%B_F!U5LjdI1R*mEBA<TxNUPu#5kiOo4mk+Ec0#jY#wVvQPEJ2?TL&VA*wx?0
z-JSkg8j1!HeE-Fdtp?4qA$D<aJD~5VJkH3BOgg~zM<4&x3{(+-Lf7|;VdhMEg;&(f
z*tFwt{^H{kS8u9Oh{IyFddGzBB!pRvUngcW9<u6c-CE)kMTCeLy5aGQ4>zg`$R(Rm
zKP(nUkGPl?6;T0^$b9<fX;f7ycKRrVxZ0ea%s+;KfCw6J*Q;p=u`06&(Xf;}je9LZ
zv8mN-L_2_mF0Ri{-|M^a_ka2azxeW7oPpDJKtjxI0wS6eO9lXPCui&R_3d4nA|u3(
z0Z;_5uC6}Hx%wW7Y>p$W@z=AbyN<z487Kh6<?>{l#?|U<8k3cHa&j6tXv?W3x4|Mi
z3g%?JdD!k%OUWgP<Sb0o_zund21rC*2&-X{@|3fcOnK728){&9wW~LgA^;Qgfj}@7
zBji!Ei+$HeY-A9uJADjHf$aQrol_CXDaoi1L+{13bD~`&h)0IWV;v~~0Z6MD2&{%U
zb&=BUe%kJGDUwn#5*TXmPIC-0ff5I%z(A75{aA{rl`-LP0#Bdkp8LSe{zDKkkus4=
z9^YzK$)!kn81J6M(?IOb0(Q?jq5?7^m9)RTQj=}baVnGcak%J)lYkXBN#xZXA=us3
z%e=o65$1UP_JNj9{_u~VV5Ph^?Hef8>$XA=M0|9rUJogt&(Hi^350pNe|!0jX*M83
zy4~sd^B+8a|7q>28u5gQB9lz_mT&t=#pvzLbeH(UPkvelZ><kw41FK+PGx^bwhJLl
z8MmWBT%WAZJ0|Le_da+brQ~V4%-O&sD_Ahk0}x}vVsdwR^YZ7PFHSc7FbsW%NF1<_
z45_4PS8^gmLBzO>{d(>M9Lh@280Us<stiO_irn7adGR2U@2)Ptef8$y=7#q>x#pk!
z<im?|@kF2)!;_~^?*8KCm=Y4v?DX-%C3fqJXY17}?Jg&~9*apc0py&Ug=D@~Q5)>>
zckvqEp$H${%`IEf%SL=>fbBc)#)O8fBBhjEOqB_ds2>(Bhua>udq*yVuS<_snzf`P
z2+Y2<cA6m(ODRak+_MV-9F0UoNF~K$Bh={;x(SB@#TZ)#CIUL@Jg6jhiy=Dh!68q9
zIcm+pB<9G-YT3Q^Gm?<V5l@~Sgv2iRQYpztL8i#ejFAod&_xIj_uI>_Ug0E`irZvC
z%I@{e_VOmH^qb}4bhA8JEl$>PF<>C`cf#tMM1%qUfBvV2Ad=61U9~~(^8j$I*g?JB
z9;7O`_cI+35d*Xft>wthh>ogDjTFF~%tK8WU!RipMtci~G4>%W04f2)Cka;dZmsS!
z?~SM%I3iY-V*PI=Zq`S3p0*q&HplE3t1gH-v>_x^VFg_*&xVDYGmt1Kn5sbY0gFf#
z-2oE~i{&sZ&&=BiVgp2?Iqt&?E;0oUb@g8t@D(4uy}wT>(a={Im1Z*q2*iuCv*)L$
z&xl~3>|g(z|9uq2IiaG4cg_y`MqqFu2H1YwKkRmWJTZhaCMFW2*OzZ{&J<=c!{Ott
z7Ko!78Ih5qDK3_e-ha`nYR)oECB)^)>A8s<XxA+ogD@_a=Z~MkdK^<OnsGOl)3ZnZ
z*i_K8KVgQ1u^(3FPu@#Ydbr<iw|Oy~b=?q%s5YbOLkt8Y44cgb15M+UQn|n1mq~_U
zi8#mM&K5%^q|?o50Nn3)+wJzI+@l81E1mgMc7!uOZq1JgA~0(OTJ@$P%OO5{bXrt3
z%k}-V-|nmE31(jdIPzmP^qY^KZMXN^`+X|%&E-Dl0%~0MI^fw&t{+<saPh(8X&fIO
z#{D>Mw-0DFLKng6h90312Byasiyu6FKBc@L$Jej#zq-tzKIBJ0t5$OaBIvvBCqH`e
z?EKS`^V{3)FFybF+k3S(CBhcHj7No$zvdJ@UA2A%&<vkdbA`BGg#Y5d`De>zFo9qH
z=G*`I-~HtfJ8%XZ_%J!BWdexAFFt<!hkx+<eWZt7`5*q}|Ml{2)FO4ChlGGJ#6X%x
z>H>fG!^c1P@TBkJZ@;?z@Bh_*SY5mjRUjaS<!bri4?fmh%6_{3_EmD8i&lVxs3K}m
zx%&F$;$*WvKV2+`Zm|p;m{`;H@hP9IPl>y~_^Y44x_SAdpKcbb(~2O``E9B@KRAXh
z8|?SVy@>>6cYCwDezT0cJn7L!Gs`6nLq9C~l=7Re-u~6!{=!Q#0`;A@tILL=AC@cV
zH>f2n&MDj@CKtXvJlr`;xDILRA*QX(rQ-teI~l;oBk1a=u2(M2Q3r6Oqi!{~i4+m3
z0b7OyjEEdqikQLu{X@>#vHdO-J;0?KDky~DIMSRmLF3R7dBzpHETWph)T53~OF){<
z41pQ&pd%w@aPy&%1qKsS&$}dNF*Uvi5>be5d;l#~;S31G6k|Ye<pleTjyU+pI<gOi
z-OmzAk*~k{;_~(7z#V1Phmj2!Ycg&ZxgTN|Ovkbtul8@QlrgLpCy&opXD4B?;Luel
zjA{5@AQ>J(w`T{(>|X!}Fv`qM@jV0*RVbyoH69#_<Zz*8mv&e*`Y^$R2+hNLbhcoc
z)kk1{nh!dFN{pW`*Sbpt131tJ0Kh=}e5-)SgE0<W(oxsg^<+5CJGG;p=J4AdN`N`z
z`RL$vQ#={@+@mFyW6O`18B*OIOlM%VNOc5J@deT$1(rix_S8r8xAHKZu-*1y_wdlI
zI|QxYOx@1J=ESrYAG~<~`Li!yzD}iHdsRYJU#%7kYKQqp5xKvAxHwrCM{Sb<(Klax
zwcBksCu=*pf3P8En`y_|hvR<VFf6)Z*!WZtk<?fXv*hNp@?b3iAcL;&&z?Lzb;_F>
zsv&YHrOaOr)FqG+b&JK*_ujh@@n?zwiMlAIRPZ;MnHI@t(1k^J_I$H>Bx0o~A{+9s
z+>~61ut65o)Dz$OuzJ)Dr<+`+DLr~m6}t6$<4jOOYjTmsuWk*>(a|=~NM`d45(kRQ
z(?>7XXGPTVlyMlbTXeBAQDadBVy^owq}9pUld~tg{r39$=KA`6Io?4$iJdQB+m;TH
z2sy-))#LLG@3wb*b(b&S7TY5QLgb24RU!hZ59Omr7f&y`-FElp&F%FqY`3q(dxEOL
z@`)uN5;4C2{OO0!SG(O#k=0(ORJVGJc=RS7kkqy6)#iTj1TZZ)3w(&c^!%dx^e4})
z>?On3Ut`*raku9u;8Br`M5JIA0~f;0s#m#RK7Aa9kn=uIBDs*$ZO{nK8JGbfuzm32
z{NfzCF5cbsP&7@MoUBJc%tLoF{Qi%zlsu02rqgH!(F%B;87gE@nx@yk{$hE$-mF*s
zi!KoLA$<7R2S5GM`Fhjs_V#!G@XJcrM}i7FqdJbRYSVWdxBGEQB_lXy2d`hhj=KBF
z51#z^qw|0K;}1Um@PwKA<ziT`$5%Ih`saWBH^2CXcpZ>bT}4~<H-6h?5#uHICt^Xw
z9N#Fpl=9GZLyXahb!~)aeg`wRs;S++$D7~-e*>DY5{~{HEx&eFZ+Xmvn-6{9Lrm;f
zrh$m6%67X=DLE<1_ki=no0zL#41k$)n)dsx=bJI}dUG}`=PI*mz^Wk2?C$>FRDdur
zuU1PUMg!!=kN_aUuIs09o5soWu!$M5Ca3v3<D&~y2qC7?5uTz+V;7z8;WB%_{yCDE
zicn5Mftb|*Q^{X{{p#}dP2VlLu1_ha`#tP3s-ee(F(Vavm|}#*s#`Am&B-cuaX*gJ
ztDCo9zg(Q2tRFpEoUX%S5Vi0f_~(p+p7nASS_YshQgS<Ztp(c8mWJwwse(U`Kx<iq
z?YpLC1SBG^ta$-bQIocQwU(IJ())ms!qNPsm?@~%#UmUlI8y-*bB2VQA5^8;yK50g
zb<HvtcgJ!;{T_CVwcU8dBlv}HW*&M|R{}Om_#0MKarTnf0kV&NoZAc^b1Sz2s;Qg&
z+on&u)v!D}A>uAZH_9QJYDv3Yo+cF~nypZHWJ?AxI6FQ4?9)%b{`Qss6m=?i)UnMy
zTx)6}Yq@@V{oa#{=;?TZM6!E;{cd-1vZ)f&`b4zi(W*VJwgKpVacY^;Xh2pqD0IZE
zfJ2`IU__1i>;UZs8EEX6TEltCf`|b_00S~(A2|CUtA!V6t%<ldQ|3MZ#+F6sYj9Ik
z4*);|bU1UT$`Fhgmpu*$YJlv(XHjsOnbl7WkE1&ee3HZ6>t+Kapw41g#I=Va1K^|g
z87Lw$*V6{90kAmsS@XA7BGOrWzIpuYr;jmqE00`Kf8MGu5MtLSqt|x@^du}#9>4hD
z(Tj*(L~O#2HeVwS!(y!nZ*Ed4LBr<Bi}(M_7k|{RHblX3zT^}Vvo7|L)<XR^*Rp-!
zO~Dc7001BWNkl<ZZ8~}XlYjK|hr?>QVuHGfZd1<+ovutUYf;2z<o*E$APkkVNvqB2
z`Pth$NMqh^<?C1J)6f3k{Mqx>a`1UTAd3vh3<XQyC*iNZ-E~WQ`ORIoc=YLyPS&f%
zq9eq@!~tQ^b*dUWO58o{y45Nc;V-`WW>}rCPtS&-j~z29qI5BKXUiXa`r+>F^%ps5
z@u+50$e!_uYDHvwd-vPF{fD#1r|Z+zYQ2epr^#;KZnKQ{J9=}qzkkS5q^=~O#wrs+
zMJcsrk%&a?{$X3QvJ^_rX}|l!AAj)A{_*1<|KRlbvolAMYe^4xcmLtv|3Clc|M)uy
zOGJo>N*=oBqFxk{hll%3Sa2A^a7z7&!o68`zFU=;m3lAEdl;`2ODPV}ZD}{(qsE%i
zq%(rUQLm0O*7}NqsFYH)V({x4A|Qr9A%?(&K>JZsD*JKIfxRi8uZt?orP_Ce$c|x|
zrfD2Urm$R{Fjd*Wd<_$Va=5?S?zX#JCJ_lCgb-HiTKYhv{P^DP?)Ks4=29(}Qr4^0
zv-h4yW+!FTgW1K2A?)_)^~<kS3lUvhoS$7>h$@Iyv4V?Zh(jFi@5VbByN*KW?rtB(
zv8dwf%PT2zadMt^qwWj&)quprNJdCZ_^?gHcOkxBZx-k0XUo-csl(N)tJ{~C>&F+X
zi}TId>32F{Jns4qUzM5fz|F+%|K2S*A)sC~7yt>Y1J0Q{zPPSKM;CQh`7(u>(dZUQ
zPmuPnxzUB{))B!Nxpi!6rdmqnKGy7mwq!M=_RH30SBsWpb3Rea#WNHDLW*-_lTR9t
zi@`ddfy0ot8H&8$2gwB$6?85hwShr^2)S!c%GMV7AFWYQ4#7E8H!pK7WU6L`Ksm;T
z-Oi;ET%nZ8Ol2G&?(U!9^8<rPOQkc_LB7TiKl}0T{jdM_-yt!+%hWtBfjt$frV=AQ
zY`0Jc<?N*GRK}aDt7p%iHEkghSml8sp{Xe;YLnU53a-u=8m$?tjikap8@gr|m}3h8
zp-M^injH_r7uWOXfp_Lxac$F0e`mE8T7V6mNEIns0j-GSHWh|LW>H;d%&vL=?P_Qe
z;;}oj8AI!@-jG$Z5fEz-pf8oEey)z5M?fQX`nPY>!RDvBnq7(o00z>!>8K3I147}j
zdxrm)u{Zm%?7GtY*0A>(?htcE4$Kr&Bqd5zQKd$8R~4$!Z5T$wupex<{YUnL4fvq}
zyX(OX+l{j2t~P9xT2+*bq&Q|Wr<m?^&fa^i<%hM;jbO6MZb*>GL^2q8<D9+M@O{6J
z#Q-b-nz9k20^y!~RLO7vs6>RZ&w!&g00u40dhdA&d=xM}8id46L|fc!1d+fFu(Oky
z8(n}yAP&B7a|0Fl;LY`r)3R?;2B_9$kRWIi2xrYMr@#K)I&wg4p1k+Vr%fw>f;0{(
z<<d0VHiQ6eyF5LbTiGHWfBt!Dn&bcIKlx8@Hf1vw=B90%5Tlu)sTy~Y&JGV4<nmfI
zkEdtv|7ZXCPp`MB?PnoIM0VFCBhKPG!L*F2q`X;g3KUcyERj>W5bXNJtFM3iw<jmZ
z%MU*|K0cDvJ$tq5*R<ZspZ?iD6ABy~pdexfSVRdYEf1kzReq$X>25pJp^lbszy3z0
zM8^9khxbm80)d&$7K_bh{p(-<)xY@f{^#rQ09ag&?)e|$i6aOIP;%aGw#+$%=E0+<
zC6(*T=cNoVMdnP6si7eU2IT7PnJ($O-PBzeR&|J2jhg#mYN1qaG)UEX!7VTgu#HXM
zcOe9351Ya5W?gcwhx23=@HK}|?0u@r%*V&a<Ir8=)i4aZ-EK@tL?Q#b9HA<fkeQE<
zPY89pTdg<iQap%PnOp|%*a{#*Y~$h4QBIrf?uHO^N;zdMf~*EY7>LP<H9iCH`dJ#c
zIp@`C6Jm38I-}|Obq7I=F~%lkTU~8)+Lcm>Le9wq#&PKT*_g(hk`<Yjdxc!5Q^P8>
ziGdk6>zh|Eu4jE8BhC8uU@_Z#cX|2k%ai-}-nxKoZ!x-S4X$|JiuDnZT)|pm)g}l`
z2!WewHwHBF@V%T<-fMug{*)VJAd0pBL-cToQc@}TR#^bBKu^EwM{o(T>Bx<s2&UdU
zibxhIlgQq)BM6ZK5m7U_HH^^2T<Kt@1(6U*y*Q*00>#*>-o2C1=fHPDs%--DDBcnh
z-0=-XNA;LR@7|^%22yCK@!SjmKvMxNIjf0EfoYRnAA1HzaO?r-W~N#sB}8buHa5}U
zM4uNH)iRDZ*H=WSh6GlmxB~%9rgT39fG3Y1cWvB`HKI%Q30D>0X!}*Lcc`YCQn^{L
zj`|Kjn-Bq60AGLi9enijy<p*XDqp)lbJD5Wl+ZjaNv9=l{n6L1*g&hSt@`$+wp}L>
zk7p{}IuH>N#0&&MrIbp1AT~7e!*3dVPEcyy2M^%womoN6M7O)KD!aSW&ECEK@s7Fm
ztr(dpYY6v&5c@R-A{vr`6ZmTQk_&V|K~WJ|wPuLzE&pnhmGd@|lB$!$UrB}PF!5YV
z08?i)N{tr*LshpRR7a1|z6Vh;5d(C?r5XUSff<>B+BC{Dkx~t1YUI>8*Rj$R#kt>E
z-!7<N!c$BY9-2rEPM?(X9@@afLA*>x&Y~V+TuqZ`u3ts7A_^FbssWoYXb6!wO9+_r
zpqjg`_tg?nwVo9b#RgkyLRf?*7gaNrM1W1#wXvP|J(z9R+q4_M{PYVEK_KEFDrzWZ
zsLDjoKL6tIaB+5a+;$H*Mpa%X<(B6yilG_G<gfAI6Mt*{q1saycEfJF8~sTRAv}Ea
zAQF36$ZS4i0#j47FMj{sfB!H4;?1_x5Zua4Q%;mP3|C#EY6?as%ru+L4vx>ZyR~dZ
z)lJ5Divwrk5Zv$$=BZy+XI6Le-QNm6g1up6TGmcmWK$=&-I6S!jvf(1;I4}?xb=+y
zC1nB8am*>_5JH8u+-9)~?Bl!u+O}gRQ7uv;H?#S?A|b4%qoI+3g}}2}FS1lCqNb`b
z#z3JyZ+eT72h*-?4vr3qVc6|b9!n8KWH<UvUOQ0@91f3;avpaZUaeNUVd%#ZC;gBg
z#ood9v;O?SgR9GntD7|unG8ASZZ?1KgP$P4vv0l?5CNy1)o6k0E%tc2EJPS$K!7~%
zVhrQ9tgbeT<-7&D`s#Ujixhgd{JGO2z-^cy2w^rY)ooW7iw$stw`+VLqCkKI##(a9
zC3~8n8UauU4Nlo_fQo8FMj&Lx2iMb<m7#{gxm;8YT`&q#ipmJ)VQfyABeU2vJ@410
z=taFDh)5DC-n5D56j2wr+dJECm%Fz{Ap4$}+isOOH3P>4t(YX6l4=bQxj_sB9C%Nl
zG$T?mL@jyLQub;x1puQEu<Lk|8hQhaC2KAt2W+~=$qVS|aH^_h+-+aKcwuVnk*=U3
zgBAhjrGYaY_2}T>>63T=_KPn;w0_(EK1|2v6o@>z{RqdDUOxY>Jv)pb7)T*D-NDtx
zn=}k<-`9a_o%q)<!HJ>c*1EiJ3SG90Ku~Fs?lAxW@Ue-hiWE@2-R|4oIMd)XG{d?{
zDsIWI$QwcsAtWG0vJe>@o&o|0B4U!Kt$`r&#8qbnZJO@(5_Rg5<eEBAuY3<cW#^Xf
ze|^#l+`b@_l}m2{v-@V=PcJFc#)G7;Eo$2i%=<#um4LOFgGtAz0_b`ixC5QWO8b)R
zrGty}YJyR<^8zE=gucop*@TLmG_LMV762mRz`<KL6HTdr$>c>>o5Fu;dN&bsXxnz5
zoaov|R0Du=I}ZT$SuIRaQBrbB;xP<}rb^773}Ju<tm?BM0x&5#54#Fu1`8qd$y7Dv
zoQtKDLkym4Dw4XcEhQsjO3BQcNTsL(>~;fq0m00%EmX!L5c%xUz57odUR_-2>x)qp
za~%Rz7Y4{U?7sc%_YdBAFgsYr#e6L4Rg<bOk3c3dN6xuvnknQ1@5q|)`f7#9NbKDE
zqobqii_6Vs-S>Sro9#BM&1$<F(_j7dH=lmJot->L4&Aza(twFP<I>b5=d>HPYFZpY
zgZ=EVlwx2Yc@M7+A#`2EUlgK}Mz#Gw(Z1imR>=Ha(a+xp%&Llqs#x@bQzLQLFoHT}
zz$~PqLlQ(8$FUx9x9x=9C4^6rnixWJd~|$tbXdh7fGS0;5IJI#0G;AP%Y)^7(eKso
zC5x%4WFVR9X)v><jVJN+@bJI`896X9tE#zumdXSUQ)D_lJ1vI?$HSmzO%p?4P!Tl_
z!DUH)rp*?!^G6RC2M1s#Qu<l{&cg?$uwJhZ4-XmLHZPm?dUdl-W7^)VO3Iots3lP{
zO1T8)z(GqXV~&w?T6KMlfx`Dc^jbaNTEu*00q*KU&wJ;9*~AnKs~H!l0cKwfxnRcS
z=@=ZZgOba3w^6gMT~OCHvEhl%Raq7c7=h7pE{Ig4zkovQ``N7K1f%;45g4hNN+mDr
z$V5;uHcdly8fhNs#!Ljjpn{%SG)gW&Ew{asJ*I5IJH_Ax44O8kKEAFo$<@+pie`ZT
zgQ#THI`Y#ZhCTPQ3C=e$92r3Y*s^9-5pmHFnKcMqjIorwpV=ZHlL>*L&JUJt-!)z9
z@qcw5q4MVCOH@Nf0AMr%5lf~Xy-W@@opt?3KmYmfKKnf(R(7O)|E`;WYyPbglA58~
zy~F<LgTt<ci<{jj?akHIxZAaTixv03-)!47`BeY~69n~DjZ4)HsS0u_wte$Gv72*F
zb1J#`gH+>gk%(ewsA;?Joe=<~lp@JYyx^HQL>yw@wR69ST+l=W<LJW)k2YiQc@`2;
zQ<c9&E{n{fIVY<kubOs>M1YE9P226G%lDal`wy{VB#F%Ho|^qoGmj8JrPON-eEd${
zgEIqT<NAsE)~QO#d*52!WdH&(f_W-bRkawZNJ=AmP})??RXhQB%wM?ePR&#$=aG;q
zSg(dBa}AzCW4LXMN-hNA)Bylg^)E|%FySqo*#{RQbZd0Koe*e^x-m2rQ4uY<+@=xN
z`xO-sDNNi<BEpjMFs7U{dbTFuYPGU@2ap<Y;Pqyh&3b0MzFDnTHznu2N6{M?kDLHx
zBHr!Ntm~Q>Q%YOO2j?gE9zPg{v6QSukl0iKNWG&lxO{!_fB*X5?TVa#@NR#&KxTwV
zl0sq6vX-fK^hu8kZdEnsbaS)XXVL*c+qNJ7!H3r`zj*cP;_}UmP*i2u=@;KzJ-b*x
zoF}4SjJJ^*Q~II*m6TLqGiK8wp1jx3W+G`oOXG^FW(Li)loCQ{+ZIgsK(+mr<gOO_
z?nOJXa_#R+4z^pdHv(8>UM|{2-;pU8imG?~sVG57Ih+6BaKAi3)w-0Kkm)pKAs|{M
z@WV97^oPVD+!FxGgS>UhBCAYCu=;q{w-3G44;*-s*wpf#K*6w-8o3dejbanSd_J>D
zSEinvAO!$xQV8OFK70TD_q1dYH5KpXce|09DN@xaEx0@A?>~NMX5(%sW7=G=Zr)sO
zu2zz>m{=*|0Tf6cZ)8@|-UqywaqfeUrf@Z?w0)Rzt<i|gsC@SM=Qpc$PCLXV#MAeG
z_N#ujplNE02pm{|3Gw>!>e;hr+s#Hz5!=)A_ulCbVvMx++4^#rA)2gLHy5uj-2iIX
z9~@IZTRJUh62BlasUbFWb9J*?t;`gOL>T#axjaT6rg=x_bXX&bG?ww|>N=&wOhp1k
zm@ST6B7)QA&wuFqYpLd4R8jt<53Fabf+?Z~GF2JUShS$pkSsK({rvb&!(^4DCqMxr
z;W(6(*37{aD2BFeCyuV~GZg`tv5Cm@u9>ymG+o;;yEX~Xl)zp*dnPG`rgdF;6OqwW
z1Q@63F1Ky>vk!m9|HGdvfI#`a$s6w0x%<~r&BkFoJ6s&hW8l&~Jo);&ZML%AZjR4R
z_B*7hE^#c0PnKL_ZGjE7sJRN=S;q}w8z(?%&Co$YW@RfSW4%+|z!Oa=5bw`=e*rO2
zNn)BriU&`Ls!~8~V%)RF>=u@8A~J{+L^NYCQ~;z(+sDa5I9YLQ90#kCB3~47jBN-_
z6PjD^>%=G0Y3etfFg6uwV0U=;hzcN*v#3mHT}C2Pa*WC}?*gPCqMlq-6A6*PP)q?C
zj6)1}yKp81m7G&0QG-L384(S_V$t4-QbYs~Ef6u;!|##EfS4n<p?ZsukqkWHAn%Z>
zEW%U8fEbYbxIkdLl`u~I6W-n&o>DXY__TT~iBu(*>{Aox?oNaDK!n5*k=2I}NFrKF
zax+DZS^`33zww9zkyjY3z(p;WvX|_tiDwo$)s;9Pv2WA8MC%V`=TGjhSF4gUsO9YF
zX;p(#rBv|p+ZX-vQ)~GA>Eqb<HIN(0H~3)Aabvq<BA7yQXdHJ#O8a+BMCP;RPygXh
zo_{%e{rqpY+w=L1nPbXB44oNmcVpM?|M5zzut`sq^Em7h#W`Rj3MwL+r4;56+upR4
zyi@fF2aMxbL`un}<S8D*;QPT0Z!LQ7-nDnTVf?|`Wv}#XBQIvNMc??}tJyFP>+L9F
zSa;!8$&b_Wj;A}`S!_0?%;ubV%0}?-h;XX!4MJc<R7EW?JsT4k2_{{O3NpF#xDv!s
zYhN)fQ;?m9SPwa71_Lv1d6f`Fm5BYh1wy|QLLI^x5$dfls5ZyQq~=37zn)M)RdU}k
z#O`E1gR`^E)y<n1udgqzN-lmDp&1qvQ{<p`K^%A1z}_3_?OA=t^yv-qup77QjfsGm
zf(pU%;DD$33DxqSfKWxRuik98n_NaPC<S)gA%;Nv3Ll}KN(@N!{MlEpU%eT}K}y-}
z;)lQJ?%#iezU2V}G(s|9BSh6Nzx?d_=4QLyg6J^vyYKz#>5o6Sm7&yT4Fr@)zWn0<
zd2?}DN|BOwL%8?gXHTAfFllvBwBUZ*J?$g+zRtSUtk<++ouYWEPr0~w_Se7tB$s5R
zj04RM-u>f$eA>1hRxDp-7a0MtY`52+{Pl00;S9zC2S5MipEPYZnKoTG41tg$r>zvz
zZqXrPpuikVQ>}@&YZ+5G==^acMmAfmR>N+mW~LItoV(*EkDlB=J$-d`rK(2a)zn)7
zDYvvv05e-{wiKEyG-ll99daavH*elNdh+=0#XYSzZJO8um@yckhM=IHIA*G(0I_Xc
z7`Z>QJ%TKdK@iXkjQ$#c6Mx%wGM)R|fQ29gLog}Dt6w3HVBx;=CRHm37=a0x41=2A
zO_~V_DHz5kM89v?z0nLJfS@g_In)!x0DvM>8yvY{u+NsR3zq%b_^xvP_TkyHLzKV}
zGnx3!Zcxk!F*-k-_F)NVF-Db9ihvdaD<)I!Y>06|#4w2rr>+}H+1`q<5s?@%hR{qR
zDPNBQxfxTl?F$`56C`X9fN8#e_0fN?lu`;#%u#0=8&K0NnAvksTr32YHBWweYQ^Hq
ze#MTH#-L{9nmVosCg-Vx>qFqCodKY#DH<UK;z2}2RHh{#5>XH{q|o&<B6j&A0x^bd
zE(YS&h4WHedlh5bG<E6#2+YJx6sTMF_a2=Ot4&GCOpB_jSTQpzQY+wZfB$8icd>7m
z=Vu(*lZyd>C>mmnEmF|iEapAEA2#c4)z_he=QKoUySN+2R8Sq=3<!W?mP<*cG@eFW
zeH|b*g4fJ6mpqO|$05Xp0h@w|6iH@ANFjErCOTB7Jff6biq>+_zQ@z}|7&pnj^FkJ
z4g@gyyQ4%zOsbHEVY5p`oULO35Rk)UP3EbL-b1+XR^Z`TeL9Iish{;J7cHu492zIe
zlw1rAfy@MJLSo&qf>{NVQ<%<a72Q|B?y;!Nn+FbiRy`VuSSqQi=Um7(rOkr@*PL8J
zGbyD&o}7~v>fof0fEWRT0%lE{UEU4jF6H%Fc1dz+o2HR+zL<IZZYeTl_klm%;Vn@~
zC0YRhRRxXP58Wih$Ob{Bym_<j`lBe4IBmD(?B0W}ZJ`#to@wf#Yye82aWOyIZ8td;
z#dvmluZhjAEgO_j2q{vVQvq#`4$pHQ$6@H&=KS9IzPzk-Hc$g4pfOn!=f{WLtQ&^i
zNTeqxC$1)*p#R1$_Xu1vtMOuSlv3Jmwx)7?e9Xu$SJPTM>+KwEYKkXhMD-h2KT@^K
zpc#t5&CPbXI20|zZtxI~gXPl2R|p6u9^>VdlJ#me?uKC;RitDXa)v7UubWhtcQK(M
zj%kO1FvNZSq@yp*%IeLli<d8t?;nU50|H@|{K?<^=H}|^W_?3Q0JHah_7C6x@aI4O
z+0U;2?O$fdQ$ofq<ZJ)V)pP+w0N9RsJ>*B{hb5<;tY36niJSGc7GZY0w<E_9P^Uqp
zX(fZH>6msmpMU!Kb~~69q8R$q$M1doXm(gfm)>galb@k{@zrPkXfiQ{<>`YTFAh)r
zqHyK1ze|xZs9mnE*6X#Wl*c&l=I4v$3DuBJLL`G^gk2j;8piD|4Pz=LGRN2@lf}Uq
z;q(?0s%Z=XA{!XwVN9c_nHo3qtkkwk*o(68HWIsj0*Jn2^Jm8i>^Pxc{mx(lVlzv%
z9YijMMlpt9=21>nKNdrP7(oY+T#<{eIHy3Np?X`_jC3R*#D<9=YbngZ!K8*w(>9fe
zGDQ~?QecDtBI8t103ZWmXgXE(96(3)5>a4+fMf<zCJ#CR_pxpKN8)>eX#{|1;t~kg
zi0yYeMBvb-ngD}{rh!z!LHq=O3S@?{Su(r%-(!H-Qy)qmnGDRAL84lSnzn5Nu@5K#
zn29~5)SE34AtE$F0yU2Hs6mwi7+o!7rhVTWo-B3`PD?76DK~AKQz~L=g@8m25%MlS
z|NQINMUK!NEGY($P>c;4#1Nv7X55hKeJdaqk=15XrFr#9;O|~s{)_+ie|rAq7k~7N
z$Jgs2azF?Qcz*vZhGw%J`hG@)3bzV8pNg4pUQ)_xB85T^#x=*ZS^+u64giHnOY*QX
zxFxmSGJ)S}bKhG1{s&T+5R8eLV+_$#2Xe9N)pp3m4}!q7oX_qy)BB;<6yaxgI0T?(
zQgWRzBHdhF7%&hM#YpV@T@Jz2q@b!o$w;W66T*PWVu+z;6%#2DD0l_wE)P#?G9WYL
z&@j_viUcC^{4uW&0I;9}5Mh{NTFBH?uo|5u`7%XR0E`UE^>%x)&Z{jJl~fpr3<(el
zMQmU+25j3fUo^zfv~f0{G4sXc)n>B+_&y2ib`yYjE3g7X!eGHPPKLjOci&$kfn-s&
zoV07_HKC|lL=9cXp$yPGc=!~|QcgrcgcgTql_qJbW(1<Bpas-Q!iV>tPQliYgicOQ
zph}$7^WG8ERKNf&+&g{fdiRt~G~7EscP~>l6sZ6dZ?*C$rzek9O3r0i<nw#s{`o^y
zAtX`%H#jY1k89Q`nsTp8wdta<DI^j=$*k#`6Fymrlug*|qAd<i9S>P?=%xTtW9N*)
zx_2J`<ofz@b$ydayZLf4pMx1r!kzjj1u)f=v!FG7*S2jF8=@UEK@k8O*Q+<LUj7t*
zQh_uEV03hJuZ{B%`(Zbx!iNWk^ZD%Kk3as4|KryHKt=!{b+k2Iy}tP{n85Ck)LvX%
z|McDaO$Z^9VVKQlWmubJq-Jk%K{B-JF#<v>0A{%)RN35IM>UeN+ipss?VI$Y_kQV1
zvc1q75fqUbhrGRd^CIOerAU@-Za$u!ot#RITCDEIY6xGi*MIxTZ#L`Qm<Cf7?ce?2
zS5KaP$aQI9uI?fNCQMqs`SP=?i_2UjjYBE)?uUQ$;GOqyZ-+x*BCmh7r0>4|?DF!$
zX#<;`p1$+(AN=Zp=`>7px*ftKhxhx?4_=>tP6MP060Zs2Ci(UAZ*NvtQj`d@2JB8g
z`sJVSEzz)kWg-ZuuU>q8eR&yUK;l$@yQ6pC{{^BEdrTIpc@`%(fj<A_cTCuJtr@Bz
zcPICsEInbn3V93ykq`mOn-|}J<R%0G1a6HF?md`K^W(a3^KT=f?yg^H84(02TI`@Z
zZn~wY>@5a$qoI2Dbe>4<IvL+<xFHiOB9S$uS8v|5kwq=UNU;|RMCc)JQ_WCun@tcX
z1A8(GA#g~bF$S&EDXce8)3i<0QUF9OaR|t4#6{fQXR2aa6^<c<CITSM?;mz5HfAWY
zUad^k)TC6oa8Zj0n~STLUw(6NG@H+2JDY*)+fBlheF+so<fSbV;%eB8<5+`Rrd=2q
zt+%up;>$PdoDG17A%)PYq8gMeV=jyY2uyXT>*TsIXIGD^NRk}~0SIb@#Bh5MQPZ@g
zKmoIy_Hii{ukGv|)d?1YZ{;KX2VT9CF&7E3X#xipfib1kX1g1*Dj+B#-G6X$|Nglz
zdOZ8`4tCGpigpN0l2xUc$z<PW*G0y@bsA;GsD+>f(~u0D0*0<S1dJiHOt<iAA}R)w
zvuK_Mx;08GHeKLAb&O<&P`5rM-&w+v0wd~dHlJKzb&rt7Q6x)AwKXu)Vr8}CO}4=l
zXx1(L_otK%DU~F-0O%;?dcBU35FtdK^_|FYd~&c@^x>A(xz9hVBDKjfQnS7R_e5xh
zF2u^>0Gdu@R1-qahxI)Z10V-FIGovD3*d+~$=+&{Z@$%hE7o+){fCDxV(}tL0UT6R
zV-P*;0uVIBcyRCh00}un5l~S>^mH_z)T;`CYm2yPj~+ZYvRY;^7#0JOWJX%|b3QBr
zz`Dbz+9I3E0oebIf&w8UkWq-Sd-9{DziT1}$YvyxRg9UyRIOCIf+<3C|NgtBl=~0-
z$PNY^m_SPr_m=pQIe`^GJ~}!(>yJOXST7Hj;bkBq%~cLo@_6y$yKy%F6$3+H!tR|%
z@1yyIN{iyjy$68!?vI`@5hJM&LJbhHc*3fInNJk4VkrTU>G|_Fmrt$_dks~R;Q#<2
z07*naR0?gY29j46b$fHYJUOm&br;_vO<HkpprMP6745p?gA<PZFzklwt92Wfv%ar$
z`^lJ(pj;oi_~_x&)#`fK4Z~2fii!qy|Eo^kY<0PJ<nY1!@84YCTwh<Mv8=bWTrRox
zc`k`^kP9GS<al;^-p3}VwBBs5S9vj;OOe<FPu9Si)D27&n(*-c>G4rF4#Rf4d;W6M
zgupd%(4TUh975uVC4aXSWJ<rCP@NupC(aEqL_I&7A0LG6ZWxF0;wpg}PYdh1F$G10
zfM_6#R{FEHWZiAImzP6()JG;iusmOg{LvxY?Y0eNv{8n&l=Av=uy*tC@%yfPV<b>>
zR$4?Hhi$N(%COm{-7Z~T=jFX0pFeol|5yQmm;qGL0zuB(Wji)Y$T`1$^X9AHZ_eNS
zgT?Y5f)*@@Y)a_7tvwjd7YpW|wA(C}sv0Lspdhlnc{2;cZhfsn7n}U*dVKifkNVk(
znE|n>6)Q0WW)1|Gub!p#i%6(uDZ`74&3k|FkGk%7g7ZP$#Ui50#j~$3Up)%}m{2jS
zM|=0Dzihh$&qY8WudW%18D713He6j`(HMu=P;45R*nWmZ#K24x5aIge>zAK5O@R5m
zrG>aF%G^JE=f|$R^;;0pD?mWR?Pga*_Sgd-6BrtWW>;{RQ7x*{Zb+-Gt~Vo6+-!Ft
zu4nzMX&Ogk?wLrg3Q#dJPyorvAOjL=bXM!6(=sCB5T@1V<lgnQg*Ps!Z|SgpNI(2L
zjCOaH$F=YxBn}EVj`{j}lX8~oG^5D&4}SU4`MrA~u&GWZX_YEgQ)`8oS}i&af^%Da
z1OosBq3c4^_)WAocR3;491{i>&=epv9rF}M1GiyK2*3!cVgR10WeB`?|JVH_#n6o7
z4xG_%>PTR~*w1Iq*9Q)S7(yUMm6CHpQ<3bCc4Hi4!+i+k6J;wYZFV~_D^gU7N--&5
zLPWR&FbjdNt_B9Zy4oUH@UWb>H|@91sy&^;{6($S?;;|Z+|MvYDA^uO>D{D5RYWQ@
z)%`y-F-MWKS|cX^@muiA8f}9nS_!|?_Ipo41O!qN&vqn2AT2_HOu$L;;KeWA8WNrD
zQcDYUY!lXjsw&(XLe&MDdp+I+z|y*us<xAwDNu`+fHjNFG9#K+*d18?f@WY4ITD8!
z&`inD%(6*AH|Kz=8M)&DV(d6X!6tHO0>`FlxQxNWJ4`?Q<hOse`X}w8@g(-Z%Y&nZ
zN3Hr`%s@@cz0>2Tj~{>f`!5StSBX^VIk-oG?x=fIl_I}*`R4b3``K~Nxs=6h(e$(K
z=>E;i7xU!;CcK%?1E&3rR?rkh3Vd=rJ2-d%fKp5iiQCZ6RI(?m`}c*QKAdQq!+Ynm
z(=$=Eob#CN=<H$6qfMDGlheseA@c0#_+j6loScd(<ihi#b2SA`d-IQ!tR|)ws5v~i
z7r850`gxik*vawfBmx2vAGs^2(`?)M@~mkWo3I5O4iAQ|?E%zG0YR(Lr#@1988`SM
z$`PtQMwyIWdzWv(usk}IGH$lR#l<zC4!dz2#@VuW89|*h0iapm#0MX|%cR#=+l$Nf
z<@I-w1Bee)%#&&YQZ^v4#iIG~pZ)@L*p1`O)ds$}c=l=>hg~;6AOx_26wrVH)L=R5
z-~YppW<9-l`Re718~x%U=MoT*j0g-AOb9Iy7}3eS{-Y0mE;7D(^XBx`;`Q~H!*)jq
z%&y1+taAW!4QpN3sF54HE9F!{g(g*z8;qVjS^nym9}dH+jNx~my!hY#@>3`UN+D7-
zA>a_05ezYkz5CAbAAbB%)8NhJ%~xMv{;&V$w+zYv^}kq4Iszq;`^WwJk3Tp(=mFrf
z&%gWR)9*aBjXBf~)f7RQh*XZ|_RhPH%>-fg7yrvApZ?7Y7i5`%R;C50iXx<4e(}xo
zlf(JLdk2F2&GT<(hi6W~bMj_&q8b80DP?tY1JlaW_SPMuCdRg#6`{+k%{%Ak2M33n
zaeHyGMkEm_MHSqtFs&`Yib&2i5x_kH(;4R9Ay1(&`*>935PZ0Z=vmR;5xuQ~zH31G
z|7eTvW(MPJRs*D5ZZ<FuX*Z@l6^m3JKe_+&pMB8xU9HS&2WhS__w$cy!{;+QY?^42
z#v#>4H2^WyF()fxsES~;7#q@d7!v{4s|l46=#Kv$4VbtIjmE}`8rDErXSW7+hPu}T
zM$B#7Ng2wh$biV|2X6?~+l^%A7Dw&7c8Jk5r(wh@2C^8tOl3Qc!_BtjGK`~{jX7})
zqLNdprczK6C)#2vrKYSVBcky7|NO+udUl5(v*wIy$i#v3I1;m^q$v?m9!3)(gcyQI
z@gUG5g?%ZnKm?v~F=-$r7cnymjDQ?i0hmbZ01)*~c5+}WD!CMYv3V+Nnzj+~zy?F2
zIw&SkHJx$<srDmC2tX_%9Haj^Q%-K|q)K20F*8*n<`|}#k^!>IXoykwGNn3014b%R
zT;)rXix-`@t5&mM!5U%!6Y-m)b_4zd(8O1&Ot2|Z=9YAgwKCudXQ`t8WzNn{zap5;
z`mkLwu}b!J<ISs=+c$6e*}2~XOr&PTlzd_Vq+qD!aMu3fCm($J+3%;)$McKt4A{Z;
zA}mByzye?f2ThlBx4pPn=hq3J9iH5K^4`<z%BPw;4Rs+7;;w&0G<0$~7(j@;M{}zv
z-Rca~Dh`@MoQG(l3V@x#5)e5^DZZ6<2&(spV1dIT#AVw{<w_bM1<8X=AU!|#QI#+t
z^L*JamiKB-F9szps*;CkIi>~%DhPzo0=KcV!`2Rt@!^vo5K2x+f)h}ls7_&O?83C~
zz{wF;nWN--6A8phP1_$96AIAH<SgDlIwRqx?OK%#CeFk_tUHT9JwmIJn>af-IQq$l
zXA*i3SRfEjT`uZQ44y3x`;I`9mTlK9A3Z#q9ol?0BT%c%-Kqvfg0Afjm&=lO^9~n_
z{^)?3gEL~{K#Yn2S_*|=sszx4mU)>*l``LK2e9_=@SqI=(3sRaY=_YjP6aEPn>4E1
zd;$;>QYp#Q7^w;2=y1_5&$?!w3-|pR0ZlY8B1mLzBKot`vJE!A_w>>I`zL03*35<h
z+osVmVHuf;OhK6q)Cy{Dqb~aXored@#SD?Y`s$^WQpPb55@;JEfdoV|C9;6}!OxyN
zeS9=On2$sF?QcF?9JC_3HB++!CfPX|1jU$f+~&<{eLU}W7D%k*R7&bp7=o&h6J!BR
zZ5+m&bA_wbqC`E_y=j}{lat+WAqs%hv~4cC)i#B$g$-d~RmmBM2(em_a?v6lbLQ=x
z-N|AVKmrVYq})w(-7op;p1$74d;g&RaIpN=ue>Fk-v6)rR*Jx8yL)S|ObCYu&7b_E
zj~|?$1|}873Ky)L%RLMj&Gt?x1XRG+uU@ZiE=4qrBN07#=ke*i&Q(j5ugAtjY;?2P
zJp1-5lU#}r^U2xq$yqnW_!t-xlNlgKG<g2(yJ6gN2w=86Se)EDM^sRCGN6Ar%+$o@
z=Hg8nwrz}n*!D5TNTA5x<_Q=xQqwej*KSr<k~0A?hg|ZvFTN=^W7xs4+T}49E$VNA
zB(I<Rv_~)o3``Xn4a&ZwAq=5w2q~vAwp|`aRS}V{?N{GC-@JU&^<C38+_ZwQdhz1m
z<n+xKU*+}o=;3`+z4`L1;q@gWsg(J0v0HCq+bj;|>#K{r-Q^+A7xVRM-M3MsG_fg~
zC1*m&IhUN8*Z_JxsvJ3`A%<8=34wDSBqcCWF%j|GD=<mPW|pPI7{IKFF-b81LR5fR
zKNGW}W!UcKi$yVGMgrg%hGDB(YxBso%ZZ4%ZJqv(F@z8hv50UCh?I*MKxjK7YT8yO
za<MutBL-wTJUrU$cH=k#ViTg<hht<U7Aa1>Q2<d3A$q`-A#eyxte~Qz3KS?b(YZxk
z*JmkWg2;%(ApnvJrOWN%;ql8CulDv?w;W%;dim<JPmgrRq{REqUYP?Ei2`#71eA97
zBsXdqYAP}TFp-!}70}y4=)!RXIDUA~cH=k}PzlWC;yYZwY1-~CY{LB#ZY8c~0|Kb?
zf~o2~Copuq;|WDFRI`CgX(oO@)?Gj?5&=!b<(;tK0!URHdorneVF@M@qG}xmg6pIv
z0JoVy1}zS-tHXXUbSVOwVGy6K?BlFK(Xv_b9W;WAjjHGu)O;?yzd^}IUN-fD2#Cy~
zEs_CRM1%+-SO9_=3tCVdMpGf_KmmZ)gBmm(xS7NG%!;8A0|=?r3{LM0I4I06*P;@T
z=G~IcdOblh3}~e;xmCfGP(zH2i|<}%#s;xn94>$PtEUiR5>XH$n@nUmGFThM!r%OE
zg+PcWhbO21^q+i`k!1>bA_gY&(eCZ1j;K@06cL!BA|Zj4yy#msHQ|F<YyyA&H<waU
zjNReU<A45Ne~=;WhQR=jPmWW{+wJ<{{qukTKUyw&7`A1zD@~Z)fB2Js{@*-)eX%;b
zfB)$CcuZN<+O~cE?Azs|`)8*g>@J@-5!%>%^YydE^6bC(FaJT)FNc(mPfo;iy;|M7
zcf8wf*Q?#VA3c0<)~J^4n%6hOM<0Fk;C%ee|Ml6|Uwn6Uc_mU12{0IBLsWxtlrKL2
z_MP8-*)9(roIf~v_~_*D(2=^k-2kSJe?cS31ypGoe~>%z004oROVQQU=GB|)F`ZZl
z7nkdcn+?SVfO5(qa71JdT0@pB=Uj^Jb3XQ#p$hLaMO1}JmxpyIQ*o@$Q1d1EtqkgI
zBjOKo3BMNuyuW?#_QAK<qJ01fKn(Eo-3LGY;Az)3J`Z=ao4@Z)fH6Z=LGqcQ3(la4
z@$}?m(Z!O>_07#{y;jL)#m8%06LxAB+s0-&pQm9r=q{yk*zHmpJ8l@sTwez+8U{p6
z<CurtI;AnCuKy93APCYvKgM~qCb`^PU9YY$)ryIpKRCblutO9C!)XLpS$F`?pFKCp
zO$>p<)x}j#g%XAwM#&1|myw|vS(XBX-kq?IcMyC_OIQ&<h!Bo`@!k)NNC*H2AHQd!
z$h;r5o{uBN?ra$HX4@Vt5qW&}0#m`P<7N|^MpEXsLy`6C*QhX?&(p920}#1<{$1bC
z+8C~`E<@nue37KQe)+PEEr1bMlU*9eG7cU<xZP|dr?zPTv1{8>()G<X5;n1kO~~U|
zib9dYz?x;fUdPz<ZBtU-4%?_oi~*sE!7=C|&Q+wOan^M<rjT|741*K9SOzU6BS_9k
z0{MB3#KIX=N3(GliO7LRAgavU?e@B9=JQ#~MM}}G$!X9uXf7b?awd*3AZ>R$M4ZhQ
zMTOAPm`X}!5<)CFt0^NPVQ8Y770IR=LLA2t5LCe8a{0%9d~*M^?Yp*VdAE%rh?$6$
zVf@X%`tz&ZreCcZGBpiNv?54kOvp?eR8^P{vi%&JPf4#;!Ce8KqX1YtbhyniB_a!a
zQ>-~UYLBIhjpTfDePw0!#lQL2ouKASMC>HPn#)K?fW#Oghe#Z~)^U|85<Bt&D$<Np
z70`$nkkFIG+_E=)Z~K&4B#a@5DiVqoCia1fuM8{10zu7)dD^)7qz;-uDn{hVZUPkx
zY{=6>3&BJ^lY0sVXPoB3l{{wVQSz?lWhO9~w)FsDB1**mF%nb>G?_YjMO0~u;;7av
zLIhGZ@Cb@Yvf#E`-4|I>TxSpHQM7m)ctQk*ssaRR3QT5}BqIW$8VHCXq824)Q)9eU
zKIbWzMxj{F6}ziYAtgRsche9BBqHZ=m;^9FU}PX75D<ug+}8wX1n4_INB^4%G8(9=
z%x5uhD0$!}a)>2ov)IiK&4hwesH8h+2@!M~Bt3m}qB2U!G0=9GnUMLQ=~^v%aA1c=
zi`lFzdDFC{W;t!1zH`*|eHu5!%ps%#2ghfB_K%;a@^`OZ{`koQQCn};kDlIBl^Nrr
zoh@d)scg4f5sl64{SV)}|6u6*nJTPS>qff-gXE&h3hJDj-KPBezxwRY{^_57_~Fmz
zXD7v=X}Z;Vi&46$1|t!P07y1bSCP<uo8@I56l6|W$0WooN-y8s3|T3#nrwI5*fd=i
zDg+5k)JjpENVx_RZUcb`RO@1mJk(Z=CKty<I+KZ505vWW_k-lyyZndF;J-5;&oy_v
z4_5*ZRZ!=eQ4{&(sQK_GPY&k2FOTXtN`Vl4XJ=5Ms700bkXchTZQF)%G3<8U*E;M7
zw8Rhz)eQy+XeNE%E*6U|*f0!gFb+wwKxd|jxB*izm+foc#(Vcp*DKy^w#2kuZ%RrO
zn30*;0NwTop#8i%Jv|9z+s%3ycbn~Yx!cV`V<tergheC<jsfR=yId?^zIbj$3MB-y
zQc@DpSQv&hij^V-BOaZcoGoWv-*jCYVsPAM9#cxWq&#egJf@sPbNRdSfW3MPh=K1`
zOf>5NfVt&)>qT$-qjOLLRTeQb79}Lf`S87S69t5jQf#}t+nxU6M}BaesS9d|O&^K)
z{FVqkNK3_cY0AtV#fn5-+Z2&8jfdtTYevjDrO2@qAp|YuRFrFOYn8)b<u;mVVf2Bu
zp(?7SG^%KbQO%svscN}opGgvvih9Bef)x=Ji6N+{ndMUUVU?oAm)xdeMN!pq)|53%
z2rNY;XHz}a$}Amou1H2gB9t;pPBJ9P#Y6y%fO5`WUd}{H8c|@k6Fxe`S<h_~V+_oY
zM<=9<=xQ^DgVTf42dbIWR12t<VeBZ#IH~{xSk{ve|LonT<?79EuP+NIGJ_%$IWEE8
z!eb$Fh~Hgrp4|+OPG*b6T*vKUd&(l4zxn;;U;eHGDpIOHhY*Q8F^xD7v6)lufSJdX
zyS^jD-I!E0GEab{I+}Bc1Q8mDkMZk?K*&v0DPjsCc6~RdWGNRH$F?1yNe$^TKv0CX
zZGdo037Lr*iPe-sU=GMUVPK8i+HVS4)GRPLY)3_6Y??L}waNrx_Ly!3WkQb8&^gw|
zA!@b3c!R;!c#4GN@_XFJpH=lISND$RvBakFv0xU7AtI5eB9q_2$jpK3nnoos%M|!%
z25r;$r8&uf45l<|nPS8OQNy8VJ<ge#7*&)*&C@L^zPlBj5=WT13H1xoJ^~cUgO7+B
z3aUyJh*`84F#v=ZL<`fD24*U%jD$?p-nN56&eephB{0XpdDsMIFyjzSB&F0e(d)s4
zi31avjF85G2<P+uW_1~u`zA8lc)jW8bEo~GDq02|BN(CvQ!#1#pjHIZkM1o&w!?Zo
zW5V$&52KmQ0z)c@7)c|eS|ZfLgYe|>!Rw!#U%Yzr;>8<LR#9RGC3B9ehS%R+|NFoC
zq+2W=5yq~OlDOok*@h9BkQl`vjaG6U%unQOMDw#HG|iaGtJhbX%|H~d*F!4G#7)zr
zoIF~_07?-e%DK2}b{~>@$G&fSqVrztc9$hwHTbttgD{CKzt`{Xb8CJOL~D0oGIc{1
z?qvT}<_WSP2Il3wd3?J3;PImdM1~C@!XDdMM^UPxl~{l%Zg}<qm?!`=UE4Ix(a{ky
zISN{H*5WITJ9#LkXJ==6e0+X>zwTjuYE}l5j7$okB4BEw%X!~7bb5S@%wW*PCJ>1_
zE0+@1Xf%*An?<yP<#I8MLtviu9Ra8&upla^K*lB+K^BXCw^>wik|7vr%MHbplC>6^
z=H&SB_~?)$85D&Q8%81`E>gf|xfB3&c~(wkb+ZkBukhUdekXSQ39u`o0jj>xEnVCM
z=etVEv1?TdE$3KKt3qzac5EZDU%BP>A*=si%n*9_ac>b!+1j9cpAZ0a-8f030dV4~
z+<}QqdA0uYc0oK&RU}nsv!z=Ir)PCoakS6`E_X0_a)mH4?;YiP*fFRZ7^u$Ti~!A)
zCo)c5mZ&ZOnAk5T+tY*n&#dY@TW_*GT2)m=g^fV$)$`|zFORwxFX@_y7(@^tm3&$9
z*+2V_-}~wN0;R_Gl|l-V5&)D^0Fa0k^(SV#fBWm-{>%SS3<9yKk>3{kU5<ZhBBhif
z@@AF(_5c1?fAov@j}KPMS<}T3gqpL55C5wVgBo+lqF`DzmPN8hyveN}m;esIh)9ae
z09+I3;5sdZiKK{oM92%7B8Ff^)QsHq2o@21e->0C!frRHh+FocNMHseDH(y5%j5O+
zRWy)YQOyJe5s;<mPSn~MOA&XsNGTi$5!ej_sx@tss01px)B+!Blyo4Dfk!QQ9GeiO
zcyO7!s%~ur6BB^cEChDgqSkOa;SlyVXkv0wa*P2H#v%D#&dec%F(p$CA&lclh)ol7
z&g{8&068Z!V-AQ|N+D)<CHZQmX<IclgxJrll#(+diwQG_7(xhyn2V^1$G93`&Lbi*
zb18)a8vr5YoV;YoQexz$>zD|L+<i$LQyP7-5Mw|9VDgfPiN{hxjD%?ZQ8Pm&HYk|2
zU29;w-PTl_wgrUH#GF%z(Q_5lba8ZCN+zP+umR+*ZE_l#wi$BjyDl>4oO6-3>ub78
z+YZCl_l4ps3}WKQ!2z&P3<02w!+f!*#C^n)a~45>A|j$`EW0<`Wi0EyDx!TrQeDgj
zCiLw0&wc~{Zu{)J*{sDWqbxMdm=Yl>((6IAJBFr5L{Xix(P|o6*EWVBXWR@Wplvq;
zb3h_uh74-58-_~WRuxs5WUcl?g6y4~^l8~LWv@><!Ku652b#k^1njN~`iF4<cY_OS
zpH1lPum6hoOHe0weAv>*KYHgLP;<S7TR2*+NV5ncGIBMCsv?r_%M8F!gGdO$yJU8O
zlbUFKSv+LT(UL`!5E;yKtE&X3n1RHGtdv}`iUdL^8nOxmGqIwvX;96^Tm$r~v&Rrg
z)fO=>kB^8rm0aDZA`GUMRSg-(Z9yPr`tg%@9-ZHlT)ewWW6D{E-8hbUauQonQ7K4D
z=<HQPA`ZdOkW5rDKnT?I-R!6fR<)q}Xt=kp-Z}}qOAz(H5CK4cscP7S)8wagBb&7F
zleNaYj^4uz9iO(3Dx4A+s*co`i#FjusiyVlEfWnV<c0w-PuV{EKLG6wjy0^KI>PQu
zS}K;sA#_MoorO{htEnvT1*7xlJj{^z_5)EgL|`}Hp`jHpFrH!ysHPMUxn341R3rMH
zDs5(Lw{d!tNKehsK)}efJw9w_v)N+Sg=WVo6ii^Hl-KL^i(&U<xe%O`K@$#w5K+Vo
ziYXd21n;kY+Wz^!8pcv2*MI-rPs2+Eg<-cNu)gh{U)+3mxl4v`u6J$IbfNjtqjygK
z@R!7V8>9r2SgroYoS92gkRX6_!>2xwd9sUF^r>mJGkRN$QzEsQ%cI=YW|7!HN+~XV
zl?kci-!l_&;9(r93QN@^AL_FtY6yhn5P4Op;X@|>FKKW3Y}s|)hpl0sbMEklenWS^
zp3nd>gCr<Y5+#bHWL4RcUA9couB0jzNzTVqD*uE24ChlS`J|*`mn)GXIg%JsB1MX%
z2$2*A03=8P4RoW&H{apxz1GTywfDZ~y>8HD2gL#&yI;S)_ntkh^;^HeE$<1*{i{V1
zm5rb&I{Dg6vT3I%K`!PopJ-&FeT<-%UkZSwq^3-ik~o|$F)o)q<=|2S#I74Pj4{T=
zV$p~?3sPbNvkr+3`q+;Rh=>v9{n9=8mZ!6|rb*JP2osM8&1nf>Np)<{G@<YNB+7t9
zG(v2<CdQOh*r010Ndmo-_$-7Fn8yey#<mFnx>zpOH#SdCPS)FQv0O59+qE7!-;GCR
zc6f9c+E)91(r$EZ6A1eliM@1G2w`J=ecAU2c6xFOh-(|`{c_1|Hy*Xi#q#uY#!U!a
z*t)pBzCP*2c6PQ;PEUksYjgAH;2_4>b)(to$;Q@2Y)2qzesX+tbi6j%+_|#XZER|a
zv0oAg?ncYw<2awW-S)-H7lHWj{=N0x9VBYTqtgcu`o7<}di8XF|K7W|H#aXBqxQ??
zVj-#=8d>(cm-imty&F$YyU|pZaf5MhXR=7vClwJ>5VDdlrJ^u9S>Ai+&iZ0;<I+~w
z1X1O-71cPKfhl(5X1Wzv78VsjiuOj67z2cMJf2e99?#_7-IMXCna!7d^k+dLy6k&3
zYnmp6j6?YOsb|BB@T^Rz9Gk0us&~4bw`P0ty?gHKVP{+q6DEB8p7vq?xW&tD(4X9X
z^SeK3%!?=pfjyTysh~mAHU_9ktDPmdRNpTPbH@xMgs4hpA{saVb4oEZt*SC1GB@4G
z5D6ifA(5yM2g_E5Vrrn$a7fGk^ua??=M{2Tn~b(DP}e9x@a$`L`3X>VeJ`gUKxkS+
zP{2TF07=d5`3NbgAbFl1EEm21nSQZAqM+I*0e~1201%^rA){&vAs8gV#b`Rkh5<F_
znSrWWSe_i^2k9fI?4RzAm}E8l21+i2%Xl2^)zu>(+IbhhY^q*#nC0*~yvQpWIn0x{
zbBV;odrD2bi!Ir`&dP^XwB9h&x3trFKnPZstyOlSWq<x`X_eD_t-3^MwaL$(tlm23
z=Gc9sO5U&E?pn>X%f6sYct!@)Dv7M-fz|f|>mJKO12;k`H??uIzSgWwIW%q4bbZrf
zPnLi~5_$L5yB}ABHV7JFiPJz(QwIqF$u$*w*RJ2Ve&g`1w;b)o?0fuJ9worC?-4L1
zdT@NazOjzf%$Bf765oID{KrCrj9ioF+`^$o5Q34dJWQeTpz=OX2r8->u*5n{wdz4u
z^gV?|f&c=5J(hahG{^ly#oQ=nCgdbX(-3+TN68x$x7hX<;DwH>pH&q+sRErWZ#D3V
zF%#LV?Xml+<ng(B{4Senn-^#PG-&8Wq<PD1<P{FZISLK5HC=a~JfH$ND;Sir*g0y-
z!P)iV`O8_SkBERGQn}^Klu}}5cW@-nh|4E5R?T<*x0=!X!T<mu07*naR4NjxBqS6`
zfzV6?lY#95db^#ALa-15AtXtcLr5vLO%O+D%|}1r7HHGSr0;t|5J{rIh@LkWLZ~TE
zX4bZ0v7Cj5w{~`7zg+A4W;%hCy4eDWCX+EW0Sv<0G#($fUHk5>TbHk1Z8p}!xMQNY
z?6GZ)h!@M*;b92etgTxcmZ!75<)RypadTZ}Gh8g2tqlteJUV#Z5Jf3PS<FvPPcQ85
zs7MrR)~1U``$W{OZQOnPoyEfLJ(}@%-a7vFTl3|T4OKk!k(`Ck)E>+h_vW+hc6a02
z-saX8AjXus`GT0ZZ9}5j95sq(5di0KBn1UF(bSEn^X2^LI1<ou8DqcnL`6jNtgxCJ
zsHKY?igq)GH^3;*iin_&ke#LYM1k+Q;JbS1K5kFzXJOzhktycVE<>@v)U>?W@pjux
zfJV)z1#~r+Bz22g24J_w0Dvf-I@LCfrkG+xW=Z0{n||dmqL^LUyL@tVJfEL3BG}SI
zuwew8r$?Sl%*5_6R}cFVOiA+;5n%*?OlGKylujPa?jIH!1QKx)0r0LI1=K{D+!c}3
z)Fl?K3J1#JB{3xcF47MS+z|6@xrDC4Q4_(INmZ4A6fCNWYLuiZ$dn+hUAlnRLcq>k
zWkc*3YrrDGCAVz#6i+h)6U<s(%a<+@x?Odd+Li(SnZbT>Q!K(XLba0ERk9wdt6z=`
z;v%=re4wl?CNh=m#ctWyaR|PYI960#0fCTDnaAtIbNaR{tyGUUw`x3}F_%K`)G|lO
zK0OtgIfo9dhy`FZvo5oos+}~JsZ0%Q%HeGp>TzyG**1va$@bQayY0P8x8LYO2nfJP
zM63WY##^^;ot&Jk?`(O?Z^g~KXhgD51}LnpZ@l=z^KZWM_PiJ3Mpdb7yi9#mu;QEV
zZREl6iBeEPGDG6UvY##c&Cz<ct;yPI0&<ZUW*anw$1P4lvoE%{frW2CHUDRjeVJQe
zj}i3Tg5tlGy)K~2&$C%f{$z=HRi)M9(T#5aR^h<8K|%9vjJZ%LPf)XDi*t;)tFubJ
zp}UF^m|0RH1PsPdygW@-@{4NM1U2Ra05oS(!^&H&*q2+5g2)fi9k|>#97B<tm(<1#
zIg~tz2!<U>wtkdse?K^MsYK>Q1%LUqXozkNn-hSE18dF|g0^jZX|)JUG-;cddIkzi
zIY`IX0DzgcU<epWjmd;&#+e7}l0gL32DED%Vwx}$XIdzqo+Q-^dzXR8EYWz3P0*A+
z^z6;hwSWLk8xIfn_xCSe+6~hQq%_^$q{*1LG0+wf77Hc9(8BgEftkd#T+T;LGa56K
z0<=xDEeVl0FsB4+)5|;9$Hmdf#xqax(fr0G!pY_=(%*mMd-Hi8T#$z;t8fv;nmhX^
zm-}?%;&yj+uUVVKltxJb4UpRu9=vgzE#<Z5;lAY(49wHD_5BAA9vv(gEi?=OCQ3xi
z!37|`9ja||wc^KBC@P%UEI6?2&jzMe&#2+`eeNcH{MR4%r*w>`aDj7swlcCHnzmtY
zYx)bn{IP2nwy{r|ocfDR2pq`cMZD%S&1S8p>h&5C`AYSlE`A*p82tj+F0%o6D1k&l
zaI^7T7rPk25%-i51ExO4*vA;TX+mIkfXMsKX>my6vJ91^*;=AuUM_n^OevWth#+&r
z49sBKr<BZ4tu@d*Jw;8)6p~1ztrCf9*EJ1MpHlA@ND2)irsy3No6Z-qz6uF<_kJ?<
zAv2cTdB`0k)+BQ?BsLo)wtBORASuf_&)&Y~xO6@2R#3Cnd?9!&g(Ek$>Nga*6P9Iv
z-+cf2@m-t3VrZ6qA)v;}`!!#tCmE|g7e<{^uf0=8(%ht3CJ3A*-+NQyZL+BQ^<!Cy
zRzuhjyqIt(1+=ut2n3*cxp;IDsE;DNtt#_oDE_(idiHw@oI1R@yS=`-IbB;jJU#+I
zLKc&xa`*O~hYucJxVW1NvmYLtCHP0gO?csj=kYK85;J{Chi}s<Z;DP31J~0Woy?;u
zBa1oTmiPA$E?n5mb9~T2Dw5Y7v^w(#0V)9K)}})yfgjR2qO8QvQuzdGxNa#~i1M&N
zX^{1kZ<Z`Y&CAzT(HUk%<WydjR#T*6{xaYnmLhUs0OaY~nJBzkm3gz|57F_gq7PYJ
zuLCS#^<D<#8C)5I<}k`Z*kArNP^~kO%4fv_E|K5T1LVgH6p&=_#vC!vHo*qSBttt%
zQ)DzXr)wc%0`nOsGWP<^WnUS^r6IP2l%gU9bU4h=Kna`TT4SYjP%uLQra-_Mgaigi
z8kh_jNcyxk?MCAO(m*Z0$?V{G_u^%mtZVGi7zF^0xFv35O6l};yuqgjv(fs6uyz5P
z7C3S<rly4&Xa*SC4k$p*e6n^;+nwFg9xABXe1_u*I8cEEsvtILCKl7$7R*n3#nDS2
znLT)P^piK=Q8Ns|1Wdrt5-1z>y}kL9ch@gpwDDxK8;PND00c9HrX5Wuv;MTGN!&s$
zdp@--k0;~9rQN-MFdl8TUE@!ciA7XoIU02(yidh5X-mZiXMyOtWlEFak$kJ~IfEt+
z8ivO$IEF{@8QYDVO++;|ZAAey1Ee<KMu*Qodt>|Zjy9cI-k4^#%td$rgy?V%W;6&8
zKnzM8mIsA6;H0Kb$N(?e@~9Y{Qf>%gg|3%l+)sTq6=@Mih~x-R_D?iG^K5KMLKKE&
zN3qW;QK;S;5~-PpB$cW-@S0xSYzHvUP61UU=PRU?Oo2#}iGeE2XLBSpKrsbVYFN;!
zgNWvq9fLC|GU5tZaWT9b#k1D{iP_1?NkmQZ=}TA-yBd&M!rsltZ*I!qkXMzwSa#se
z>;d=jEs2q42BB%pz(DdGg2=G}Agb64R0Gdat!?k@%ui2dvzZq?K43s1L)X=3b-1tT
zq>2av3hF5^x&EpHOQaH8U37L?@2KLquCqj|{@qHX17+EO77MJ5_o|nHc~q?gRAM^(
z=j0I3Y^7<MrvR#8FxgmN-`VNL?*(o=KUl?(A@=dkojcFG_`K#Lv}Q~pXkPmMx|#Ut
zr=PyCxhaPy2CS$miXjwRnld~lHnfxk7-qAD0fx3k6E9#7kB<93<>&~9gt2lj^QD8s
z62MmTh5B1o2M^is1kS{|Wg;$Sdum7Xy=GE%i%@U5pb8PORDUJVdXN<eLm%4WFzOnA
zTGf9mLa|kYs+|8-&P2CCE%&!&*rptNSi4@pQf1bcwnFR+EL{uQ^W(iU2WTx1q>S`R
zTSLX^5QjCT))bvu0T^P%49e)v7j5>BE8p#UdRuy;c6n}QU`*`e0CS>Q8Qq7#F-bnG
z9W=-c%Pi;;Q)co$D#i$^ZQJ-BWFj?*F^<P0v?EnhmD2^`dk^}4K3$tmr_)93)3PUm
z*r#qZvU?{I<77Jh$v^zKYunjuo>FWAPuHdpxSyY*sS#~n*yPdp^yrX?XUC^~KL^us
z+f6qwfQqL0@Zg{!T3cJ^(1_S#Hgh^+is|U!B+z(scl+|Sy$AP?4jw+rX71u?IsP>G
z;L-etKltf*V{39@*P38x6hcx<ic3{v@{~GfjWQ7s3W7*Pw8gydV`|&x!iDv~)HI>%
zIwtN@DqcNU^Q{U3cRr-3Xzz6pbpVe;eUJCJa2Ce<pya^<U^r?qoE7F36_}<i?X0)k
z+v{!Dy8JsYMp*4T06^mGr$J@A2J);g18{|5(PA(<n<p2rh&kKNRMht*4hTufGG7%N
zRz?I!YKRI9K8W(Y5dGR_PEZ7dR_2an6jwf9G*CbUW&kn;DRsGj9@&mDkZV04ur?$j
z*0zYCV$`9RQ?%B_7)2FTMRMG%mr6M&9ZXF^JDPah8kEivJVC;Da;>QiLI_Mmfs4s#
ze&pm(m=B4ef>GrpQ!NmpX1cN)S~-udwm6z8%lWWYA!gMw7s;oZy02PseXkUzEM*;y
zM%*;>J_0*O99_+6;IfGP=O`!1Q;vHyRB%ydX+hL#t`;&`zRN6&SY6i&AmT+27w1eu
z6(=h&k%+_?Axi>0c*pZ?@_S^;^__!FRGv(sIU*oq2mmH2nF&uu>$_W%>Dt<K?X+L2
z^**RbF}?Thd-K^mOghMQPx-{$@BvJ~;T>IDUw`SP7r*h^x7Dcc4a_tq*T&>y-M`4@
zdN^M!506f_HaAd}00{B;^wd?q;51R6kq>}jE7z@NxA44a@?lX^>PqG6&LY`moCD+#
z7%g(!d^*G=s#>P}w7RX%Hv5|C<!8oYML<a&J66mJusEMrH@}jQmKzKLu#{5i(Fb+}
z`CW18Lb6-xu+J!iZ^(sasWRP;tyTyQHhL{@LoiWQ%jO~^Ej%~hnNSm%3K&!ehlu3r
zWIw)~Xqw}_YaKwvQAxdw@Bu_F{*pVN;GkHtghc2y1_-Wdnp80@&1RW3%*6^M1tM;Z
zhX7zFODCCE6ZwPvd5Ip-yLS&fN>=r5)`GeIzSw31VoK2gfE){fC@Ms`%5<P#k~r18
zX_|`Pii#g@SO5%F@w}b9_;Xdw%Y}^Brkh)vCr8H;liMGgsfQ!FcgwA}Z}X__iMFp?
zCT2iTprz31Y=+#J6HIbDfk*_ZsD0Oj$=dqK$tmWF$EW85HfZ71)M?BR(Rw_@cgVD=
z#F`J3wtRr(_Z&H^5^smhp1}q|LY%f?dyK#E%FVS&lahp{DO(i=g?1^+vRK8;Cpnf`
z8fJ!p5mwEpbH;PlTtTS-G7YQ@3Rhs2`$cBFDKn!@O_6zkW99UpA{xXZR~a4@R8E32
zFa<<LKbn~H)$1m+*)^O{Rf!P;Cy_!pCo`ZnfEhI$W9m~PQc)F2-cqmXY~-*IU7Jpa
zM4%N+Q49LjgMq*f(rf))2kupstej?m?t|zL(yva;u&uvG<4`e_!e6f52pRnbWS^Oq
zle%2_)l0PSfBdkP2aooTPENZn+`aSY-COV8yLZ>ktv>$oU*6lhyh2;e@iE}CszRn?
z6;^GT;kg&+>QHe@+icCEBuaT=TGJZ@$Ro-SMIf{#ZWu79NM^>kPhS0zuxa^J^3j-=
zjQ@OQO3^eahs`UON0agT=Ej4={lFYm5HL!-^Uk}oli8)M3km#`adwr}{)kN7fM&85
zUVZgrU;D<l6qMK<#ATR;<&U02xODO2g9i@;>|}O29#2xg@QUH!@W?IHu&6UKkPfC!
z;>(3|1Dae;>Y56~kZ}bjGt-n1$t`Y)bGo)Ta|3{g#l-iZ<Qswzz4rxC<r2+ZrmT?j
zVG0UU96-rb2?HQV{za~bc@DmoGO}Okv2xYmnp`9F5lW#u;VSRfn@Hmvt>*1@DSaxw
zli7Kcg>Y`Fo_(|&yS7!4Sxzx@yC8>-T`rmVVg^VgE5cswsS$|t0m#&~ZJ&BI#q7jO
zwd758a)Lz~<u<<skORuW8AVOvWz*mw&iuN3kc%ZN2V60Cp*ooNl1{R|A!F=Xek(@>
zBQQ1YbK{VtKL|mpU4E%rxFEZga!Fc1#B7AZtpWgR)K#TrWU7kho*^Cu(yS;c0Ag8I
zj!oFu-rTvedwg_!ki=DTplsQ`4Gqka-G1l&Zf%XaZoIz69E`vK*EiN@i<HzEm9C=6
zOiz@ErhSadWjZ)KV&Lhd<)bBl5iyes+pyw8#a*s=KM&cO<xH;E?K$nxIfVHfBK>oM
zkLn69;K+&>R$V8%hBrI;)nC5$Tfg<Ow|~0d_Y0x`ML|@&t~`aQ1kAggm9upaRQ<Eb
z!xYOY)o=#I0Z`Gx6-6{BN33X)nH_9U_05HYNr0=}n)Rs6MQ)P;_ChEECN|I<S%^wR
z10rocHS!7Ra#cd+Vnd^*s)4Xf?oA=5v8X}YwV??qiJFP1yG{6{(nkg%G@+=*&!U6?
zc;2=w2a$TOa%Nob&J`>CuyhDH<j-AUkO9>cZMBcpoY|14^eX_nK*4$V>Z8z%Iy!^b
z)MtK1V5lH{T>jDj_D7%p{J*;U<J<rHAN_~V|LcGC;>#al#-F_P(?9*QFZ|x`|2Nr!
z018~@c(`Hi&+7<~3n=HfNhUUz8G)C&ez*tDtQpL*D+A2RKLbOi%7V#Gs$4gWH^mg3
zf>eNz!d1!xT6WTh88<*o#A~~|8@oIA@7x`=qj`*hLR2-ghj;J4^`jp@I5}#klS_M-
zLue3)5RtP`i?gp2qUlplJ%fNL379ccN>bOZn@M@aH=E7O3<wSn4gp})bzU^2m<*xq
z#+A4vN!;fqZ$G4bmuo}Sk)SBEbI++}tpGsCr$#n_!m6t^2&QUcCaCH@5A0UG65Sz&
z+>}aJLs^8%Wz&WjFsFS(&eu{PK_o7RyB`+pPSm9fK_mlk0LDnU+_Y5h(&FW<YPiDh
z)l>`&16QiOo61)U4pZ|e4<rN=^Lch?oJ#2S(f+0YjYCjLD`T%xx%&l1#J)|Eq-v0q
zHyx2A;lNQ<a?S3B%~YVKsyxi)ZI!+Ol(CK><ji9#wRp|aDH{S2+=Io;07cCm!4SX`
zQ7e!*Xj}Y5){;V9Ihj^78*GI{WanV@5q38C*X&sexg&Y3o#Pd?L@P@#`!o`|KA#M2
zQ0qXgBf%Mni0!z&c;(_^w$PZ49vx^SDR-wRJ`Id^bZ~m>$8V3P)2q)uJ(^6YB_Lo9
zYSFK-Y*Rql)0hmHuxVP+)JGeybzKO7C@?cqAM=TtL~Nx<EI5`w<%;wSZp1UQ;d7*%
zvqaIKV?X)08zp9KsZ~VA*I!_s2D-Mh_^<x!U;XHZKR!G8_Pe+CMYCnPb2$rPqN1cl
zpHiDwcZ4l6)bg5h=1HCM=EYeiI^Ky@;R_b#$Qg8fwL!B*gjP(k(9;U#JI9i0nRC@E
zCr?qe>ZYvZ51YF8o4ZaH+}CrUYuD;CGDOf!`ZBkw%>)-Kn*|_@Mx%2{NdH+0k+33n
zpHY=*h7g>&T#*wb<f>8A0R=Z-+AAV)8K|O`>2eh-5oWS2R;ei%K6to)czp83zxwOf
zzV+JX`tHu|rOTJMkB;{5ynlB(T_+AOj8(5wF+AgRnrEn9zyT?gRuZ6cWo^Z(SxuCS
z-D_CIm00$I0jqFIw*1R0BO6{8q@_~obC9&Nj=&R+0nm^}8ynr`#%MfZ3f^B3k{P7F
z|K?Y}_R1$e@%qnxdg;p5fBaAWao4tn!Q)dLB+pkL@#e<ncs!mT95FL8_I>pHjHYR`
z4HmPcbaZs&aP+~!;e5W>T%RzKnl^2Fe0;od;evUe>iStkgiwjZIZhmd6*{{2)mHsc
z&~mOyky=5P@f4rdJaI%*=wp2Eop+vj`sw%Y-Fxk|zdzW26hfFzCmS0Zue|b+%?lTZ
z2qD*hDJ3&&OI)j}<;eRLZ`xn2gRXff#o*E=#atgat|N7ToDtldbci($%WZjmF**2O
zWCd8w_wv{Q%*>h+cDbU=fLjL}s*oBH&Q522zjW$f(=ZWrZO4J!w$shOoKLK(ff<q5
zL50HCLG~LCnx?@TG>Lggti=n^AVWAY^#x#GL2!=6yKcMQ*|su9%*i5L{)(WDi1;i9
zvcET&_l|)63IR;Bxv?^FO+m{XOqXX-u7UEW21X1-DB|{|=$3haE9J~k`=9euJvBL3
zGxY|_S#>ETPbjK^R=z{U3OoUbf!8jqU%Yzh=<s+kUr0*Iq9TA~<`NJjz(@BFZvE(I
z)3pu0*0fCvr4mIV)XIGK!ygT-ZCF(1y_}q;&?IK&{LwpVrX{5&x1QzM;W?S_S?Qpb
zJJOz*cl3Dr!sGI!C+S3Rkh4@#A#9n~8~gn4e)t!E<rU`X-rnxd-oDqGf>kUyN5W?W
zIrFVtO<OS@L+@m2f1fK1tZ#cblX+aVSOR2m_4vydS+=0g{=tlsQi=D=d$3%(rg<Lh
zh>IvQ8<wRYIdR#c8ZBBxuj<8Cx(Gl_DIu}DMY-WpNsqVHh$;{F4S^)30RR8~$)FHn
zB_f-FQLcR-;|<gWu>#Ma&Ln6xVWXAB!{FNxR_+eu$|)^Q9I(B;^9R5G2mAZ`ANlY{
z&2V#bLsb6$+uy!&?Z(GH{)<`vQdv1zy*kbc(xHZ`+n}UCIA_x4fdhr3;%qNJ;A$yX
zCukL@v%y_-Rt}Z7jk@n&E&^}`2W7ed;i$X#)Qtx}eP{gs{dV3Ycdjy9EaqL?GSQoF
zzG>W22pP5_$l{3=bOBpi+pm7~!+-VHf73Q2HHaaIq?A-dh{&fMIX0OY4Caf)@#*R2
z`ov1e)ua9WYfs&9uf>?$xt>;1Y%d<Nf3m?4#jz3#RdTZHd@i&3R^TS(yN<$-fAZ6>
zf9-E)pPc{C|I7cny>;PV{)^wacJ=DX>G6O3fBqsS{mf@SOW-@)l8C5|MiZc%RqLmD
z*_@RgSCG-B;ONK-1`r@O%0<&%9;BDYm|fp;9(*2_WhBP9t`KKP7*MG>3LvCbr>ey`
z4Ux^GGr<mz55Mq*|95RV4k0kJnVy`SEN1g(pL_O&=U<qvt>wICkJkfWW`?G6a@bb1
zG8=S<k5gVD^R4{s5^h?=x)CaoTT550^%g&4*H8!Y9s};(Eam*rp`Br!P38b*gV}r*
z0x{BCKl$mw!9Iwzqi!-CU)j4dolJ>?7B7M9<YNep0ic>Pu@8Oo{7ZE(I>>6up{jKy
zL_~Bbg+fr#9Ef$+0m|h+9>qqScCTLSQ%W($W$$34MN=TNRLFUF_xAmbt#`ZWgqki)
zT7`&#)exu-wCWuUW(k=Tf^lmK8yg$zYw>X2hY(~YF-8u7m?0%A48TI6FG$jgja*^G
zGkx&m=2^qOwti^mB)?BO+r1dm;Wq@rwO}tkqrdqZueR%3I){zTj?t1xVDhfla_8hl
z6gpMK&r<_L1{EQs!bkF<ufIt`W)*RIV<nCZvLEu1B7R2YscmK>nrNQ?0eTr!QgKT=
z?|WJRiONly+4C#v7?F6+SJ|fyGnb_ABCo&#<A94|6cLFTN)(!JCSo!W#%zFyXd<h+
zjEKU2*`<pm87nJWhrdf7_)u4MS-~1}Y6q-r9GqgBF=$(H{DvUO;50#JFoSB-wg5OD
zPeK#c*Di#>Nc!ndfBMnG<MDW8HRS`JoWpgF4fuF2X1$gyD=#y9-hBbf5W-g0miZ@W
ztvsFtFRWbRJiE=#s8<j{aL_~|hqaxpW;9w`Uq3uOUYHP=n^8Zwefwwc-~RMxKl_>A
z_zfRlL*c7oPTX;YfR09^mtT7MYhU}ud^R&g71`a{-Pqh*EEcMIdV1<seSRACeIF3_
z_Ybb`UGf(i0?%hN5ea;52K#ul*>GHXj_C1Z<F(SKS^@q63`FGc=<whE+yCkC@Zk99
z=-v0;yME)^cfa?&*WY;K*MH;J&CNdv5U6W|8<=A*nQ)-BMksCU8CEu;acO&@+SQjE
zy1X?l>)PDKF5?#ta$sE;#e~l-7^;nZ9k}MFTz7}o^#(@7-}%mWr_<@jf8o`&wKZ4%
zEEmgn-g*1~{J;KqZ|}<5`Z^I+C&ldShN$^it2QcUa^xyWXLt%bJWzsGm@+ZZ49>YA
z<rv*;OH)2O530i2tKiuw<4TZt1~M%_!TQDWTVMY2r#|(`H-G%r7r*$$fBpI2xwyOC
z_wm*{@BHuw-}}{H`_yPW@<6b*ZDWdk-}|d-n>KJz)8yXc{w|o*_fB>p%l>*u$ixL)
zGv)xMNi?PiNIBRH?cCMnZmM}aff(1N8;?|y_UXaxyBUs3mfR}ViEzvG?$6#EO{UYW
zZ4N;!TIP}Ek$|su5iwH{X}V^4dNiB&T@YrFv?PS4ZJ9%i(LL(Vh2yx{trbq<@KP*t
zQGKHC)o>}8nHSmTp6?T^F6%hJ0owstx<Q?c=+{2=^wY0A2OKEy-j$2%8`IOdhbKl3
zp=r7hSTp664Gc94>s<+Ao-7T(H38mC)wpSWlnOamOahSi$+`mZzyL6brw^)`iXf4S
zHcjiole!Q6;>fqRWPYMMv@2#i!n}z*xE(+}OuoAPWPKau_%+M_^Cjf?X!*qaHpmOh
z-@ZR_fYp4Om^7_U_3&SI`<|t%<UYYXRi!A6U^S4-iMbhISPcbNQqPLZ7e?YL-qkCr
zCk{4Tp>C!E@lXHsPrm%+zrA$v5&*pT!b`8b^5MNJyWji%x4-b`U;iKe$NzpjnIJ+Q
zCVc=8@Z4hk;EsQVi8xgdbl@Lyw$U#EHs^15tG1T8lBlQus$()Mlc{3zg%l>+TN@X5
zyLaCkb)$Leqa<W%nnpxE{cE58mEZVB)U{Ry=Uxt48B1rlo#@6>H#u-Roh|!5iaz(;
zb5Gs82>^@v;`rqF;NW0Bo6YC*<HJM$l#dRNmdj;e4=J*PgZ<@V(X4OS8M({j<u*N;
zkXd`m!ADvyFhFF>vpWDF(fHC!FKupaym#weuiT${>Zx0|Zhhz5-~BiL<_|vf%rkjD
z=vfF%k1H?gUwFof{tPmMPpG}}SQ*N^3atP$W%RLH=I0)9<zAYhM~@Vtq385j_3341
zRh67_h%dhI;y1tfjX(b5KUv?{@I8ETbn^cDcRusk&tAQ<mvd;)*)g@6L>f$avP^09
z5!gAE=b1$g*=P=Pp6Bonp8Fi_9C+kE%IDTay+-G3A27!%dAtWpicA~=_lrf_@>l=n
zEAPGg-q!kfZPM*s-c2#R_S)Z_o}Nr6qjuE!V3deQGy=0G1b3@Igr;d`vw4)Hrt8zG
zd-i$pYM_hxB7`s=kJL19SS%Lq4hZfWs@BJ7h$-a|A;;u7uo*}aH7Be}-~a|mWjdWS
zgtAEUlUa&MS;3ez2&UTLpB|mue*4|^OS^mHai0=$$ifHjdrJDWp@l$A*UpYr0LIht
zblC@1CLE8)ljY*z;BY>hg|-bLoH;aBMhE7o+wlMZAOJ~3K~!*#as?~y>=RC^b8@44
z4SdjSczFBPUnq1WW5ns0w>L-AQLCp%FggL)FcVSz<3IV!rD8W~nuec#`l+X$y0Njb
z4%w3~XOMWAKp~VsLnvG*R8<sJW(07HD+Oe1vRxe*1BxkST-7jS1QpfD+yStr5)Awh
z&9JH&RYeptvA})oiIB@o%n-pu*g#D4KJo}3%6K;rSdw<s`KZhPP7&4OeQV4JD9fIR
z7=x<D7`v_mKrzdL8a3mfs-D>LpLYRg`crKqEXNP{S(9suEUu`@ltq$ZV3r|*bF6{0
z^_PK>Rj@8&fln^e{0k9z`|Y>?kAL?ce*eGy?>_R;S7x*MPk-{WFMQ!IUU=czFMs8)
zc6VOvx~`ZH;?FmQd3<r>V{TthSnPF{SwYuggP!xJa~oPagn`On#W{h&UaF1|xC#hD
z5=-scbmQ_)+cu+78y18FmbCBt)1#wXKmF<2cfb45U;ZUHv+IW17C;0Mxq9`=jqBIH
zfB3_|0m<He`|X2+gTC)Q{o7O}Nltk(6O{*#9-f?@u205F1OSW0^5p1vZDT_-*phXz
z=hTGf_?fVx{lK~ZJA5vg1BqZ6W`ekgKltJ6@4j>EL(e>Y{rdIS-+1#|uf2Bl+ST!B
z6k}}L(SUyeby(onWtFd3NxZiKI&ltg8$u8DV;_zT3@ad5Z=zM*R&)+@7RAf*HoyY^
z;HnDr(=deK*YMSASO3}WKV2@DM@NVKaydIWUCig#{`o(<w0GG-Q5aan*x9`Fnj%&C
zk6ey9DpV<4v1@8PPIi>drzBK1MlK48a&44b*nvf*|DDXie>uh&LNK$YY3g%t8ge|)
zOjAnDD5xYN_|4z^M;%j)O9L5?TGM!N_~;`ae)0OXtD|vC?21x!6xvBj-sze_AN!=K
z?OHSKQ$HTHrinv`1dDmk0oOOCDMd+Xv6zcU*LC$HTK0X@H8G|T7!gtu18V{kaZ0Ia
zS(P9O5rq(l2$oATy|A-+^TnG-`-k({+`)ie71Y#{JD)?;`|saxzW-)VG`_eKMvO>k
zKrWt9GyqT1G|=(5I{=C)n%Q_1nt*}0X?Qwa@1vZao>+{C6ao+0j1{<GXSP)#Nt-@i
z?4EPpc%lOMj1L{0JBW(+Fqm`dm~mq|YC`zhSAY0h|K!zc7oSBAT^n|`x2|8mvUlzJ
z_Qjp!!{t}L`n5jAS6+E}GMNx_HGx0-mwIf8W?nG@2G2&z1exG=d1W$XU<mB50}+a4
z77%AC@Jh(8mgNadFmyro974Ze(W6*ATinyVGna>u)KCGI^Yr~6{^;)AyM4bTq!4&>
zWBu~p&d$!}bUJOD#v8DvC3VtDf%!(0Nxu6r*B0&r<_v!XiYet#XGH$PKm5ZFih+FM
z?R$pj40Xs<f(W3@)K|{Fkb~!-RNE^u%M*&V@&jz;UVw#9Jy>~zi_pw;xr`|$C*ZvF
z(u-FvUtU|Ae(6hp_3dxJ{`uei{NB}FL>Qhv@R*_bxgzm#^1`_h+S#VL8a}R?;1x{p
z*u7JG1Y2qS&VK^+lpM}}RMj-~r>Dp7-(Q^0PUo{^nk1<y0RiH{Z1(c2ALTYw8DAy(
zI}^e`$!^r$yL<P0-~Ry-6H*d6IXPJ@7P0SBj4`E{VqEr_zE316UcY*E)V1jJV6(O9
z+NFz^hG{K7-{|g)-^41^wiY2n`}p#2RW(6?fB*0P{a^n1pDWnc|Mu%&{pwfW{Lzp0
z_V(`IfAIPnZ#?(hvm2Wm8Ghlx{ggvDa9D*@Dk+^EXPnnTX1a!dpBLyg=`s@@FuTV<
zg>xV4yU*N?-eay9L*BI7*#ZR(Ok<1yHtJd;I@mvW>#d($xw40dP1|}K;j?+a7;*3q
zIXn&EAa&L*mxC{V15;?o^$J<oRVJy-!L2ijBv?E|-KWw1B8P1mqLpOW?7Y9Wwq|D2
z=`?2zrBuV){gQ8*rU^kbH6e`0-DuQ~M;(GK7W3niquaONyMFE3*49=#>YAprtY|8u
zGPjE%S}YfkIqIrnF(xGLqb&RAy#1zW`o2fRz+u_<X1ZAR^W`!oS@vl>o}`o(^Eokj
zU81VY<cvy5=EsOvmVMt>x46mLL_|-IXUo~bJZZ+MJ$V<aip^)Ul(bo!jHhcD0un<p
zdb9lWU9HCtA3T~)=-S@a+WP3>{^`N-G65PAhae&zM7Y8j+)XSawSaK8UC9Ri_Cc1D
zPbANttHz#qd6$DR<0?!v9e3*^lI8N^PWa5HpIsYmQUb#E=%D}F*S~Y`(c#q_SAX`i
zcfb1&-*39+rI()T+SXSfm33Rc$kS+~Y9q7SEQKYRc_fu5ixtBvb`eEWn*+&La>^W&
znzc`r0p#ioqKsT-v)=5p1c*osgh&iPcWys;>#et+d-j><o_*%Z)hn0x_Eh1{`*-i%
zyLVx0V>BLN*?<ZF$UgC<vWYkZW^UWIX&TKw9GC}Tgoa2=<`DGbt=k7A6J}L%HPtzH
zC%F#88+RDkhZ{iQWmJM_mic6%j_TRA_-wHTs}b?pt9rFic6WC__qosAxpQZGds|hR
z`RS*h{_WrX?O*z(Prm%hvyiil&bPV4qjR`?X%LY+P=~JGrwd<kRiM_fmkkV{?5q**
z(3NoDq<JQFYB=q-!7iwR1W<r(eQkPSvuj&sW@08X5j9CM?QCtaXL;i=8zTYch*B4Y
zjk?j*YuCo(Ngq?}mj#{9>4ZMyQ$!VUqqvik(}(+ycDFaJl+1^R2S^BFwOk=8Hj3xC
z0)--y$+v@kQHuomacfc+niJAuc6#sry-)n&C!W4}^UHtz<%f?R{@(BX-t}u&|L$9_
z{l`E1v&C{LstkmLs)khKguUD=sZ*%gc>L@Ot4GWkm1J>%%&I}K0VA|B6wVv|oo_7i
z<+_5xw2m8miIfzw;llgMSHJc*U-=sZOQ|1s-JRQa0PH6}{qeQy*FX2U&#kSk6Vi(2
zW`(j}Yz8uuVAbQoN*ikuLa1IV-VmQ%oSNL|$rJ%S(ZPe~{F{q%UGm5166R7B64LSU
zu|snq1i!lc3oK?D%q)xERF{$-+`sqQ-~avXTel=FFYauK^fBq%KfASiY4^h){n%(S
zWom%fTO*7pNetYA1GEWd7Gv_t;PCL+!F(bVg(wSVPDuzUi2~4kF;}y$?Lr8rv)OXd
z6LH^1L}6wkhwCiHXkg;Td8+kYBO(NB0IolG<K*b%^yoPDkwiEIx8wi=F<`c|i2Luo
zKiS&orql7}CWp3M24G2?IU5@8It<-Npt*A6nVVO)V(Q+z`?dLL<R*01UAVBt;rQg_
zc)48WN9HI>xo$iyZ`G@;+$iDa%Y29Xk&4CDDxdqY6R-Sa7oK@05=oMi)7djOKXhSp
zhYZj_`rfqv$cJBSr<)ww>o+d{?&tsM-j$1igGdUY{W%E`XYB9_sO%`tiYYy?$48`d
z#l*n;39EOyRkHNsAB8)jVD*R2CL6xm^H~N6U>CO5uV1@-`_7$r?^tL;6WaNF@y<K%
z&rTmb`|QmN7cQK|pU8@)#%M+MA)>Zz0U#zxNkA2VOaL2}lsrah)%CeP?_5n(Tw~6I
zz{5d(nc-!R#=)ogfw*yrG}OX(sJC3Xl`Z>rsM;`Er=nr!Sbyv5>yybO`}?4UCOrSb
z^DiRjs>eX#3FfF(@;fBvJOReZ3x6dDE|9L}`0|w)JiC<*Lm<u^)79kJU@+aWDuOK8
zQ#yQ`nBTP-;B<4d+gxj#b~>KSWAA~yDz=y{)~C}P#baWMQo(b}6HLE6lBCnwX=oZz
z3*4lXGM!$mBBiB)22(M_gM*`9q|H36u)qHZKt=jIt~F4Vfhy#DC0@dUR@nolnqAd1
z?71Q>xeX^8hzSy2y>j&{U-`-#ufP78Pk-j(rHfD9xc0>_ed!zD_~uJ5zjEo)CI7Tl
z4KU|Nd5Ap#pbm1322HlXu!4j_@ThejI*`2@pcFH3FwxoyufVibX}78%SCNt{l|^kk
z)NNUF;_1pA{nb}LI-N|u_YePYu>WXteeGcX;H8&e{PoX%b~0U?OeVfNvUGlMnwqJo
zGBF4C)5o1vS1T2aIf%Fj4*hE3f(;HG4SkeO=t3PEA_Ud2MOEG5RX|-r<DsYCBCG0h
zx%48~zd*#^IpOYBr6MVv&gK_)F5bEIZd@*6T#Ux!-QBhEWNl}6mpH_jdQbyGAn~6N
z5|;tLo8gLQ!#UZX$a-(MF>sba``Nu%F0;5c0l>l?__JzDm9p0?skl+D4MEGQKZ#Kg
zaXcMgf9~4;{fDWK$NOTc%AA~$V}Oc+c6xC1=<VBrc=g5S);G5l6o85n6bJ!`x-N_+
zQ(?NhA7gy@<F{@Baoa*%3I`i8`>^oz<k;C~ISwJ`B9JJgWg619KS%`p^NFQ{D^}0-
z$3v{Kny?U}q|`6u#zp$Yk3VP1l<iw+XLoaFck9o;_;+_6>=WY6o7ai$+SMy<+YDzu
z=LgS-)ypuerB_U=y1;e7TEJBT%Sx<FmHpsrUct^Wc5@1<<y2HBPq;qQD@gx_fv=|_
z+GNr```j~Ij}G6zd+%g6JJ^4y23xyZzw)V9_x3L5M*=1I710XWl1k*L8ThVY=A2gQ
z%hiVq%-mpD_6a~sZmykssQIM>AhNT$21Btkwr3?M!_>sklL^jI{EOXMY5P>O)3;kr
znwhE?m}we5nDe)$=RMe&Gt{YbW>Oq$!7Kr|!=jm@m?Y7*ZHgeJv_|C&g{*c5XNC`#
zCRPQo<qNX9SQm?da*?Q?`dHX>nCW}EVgV03En8hkki9IxM9owPi2$VN-$f*eG=TvS
zy0Clw>b)PnH9qJ9Gb0I-0i+Zk+`lg(9Nc1408p)fE#N6DW}s=&-+KEUk703q&&*Ov
zzFewo$LoodlnIVcj#W%Bf|y$B<Kq7Pd!zBBd^}{DwE;s5y-K64`OBWIJKX1IjqWn*
z5D_JL5)FLp)mOVw+qTUofAN=?sqg!bz541WKK_Z_i<d$Zz))0y48<O!L7flP7#sv8
z%fNCiyh7W6iYG`G800mkLpre`4v`ql*FaH6IPuVQb#Dy|RySz#KrZ$9k(wKYzVeY*
zo_YG_4}b83Z~WaiXS36*SFi2tY!h)de>VeDS9tiDh&e<V%nU>emDw2?iinJah_O#z
z;bf;X=5wPQ-w~=}qV9m(G))Goidm*#vF^y2-#C#aF#-hS(pY;lt|^LxI{7JQ3r7_N
zz)O33n-?}OUEY24;NI&${C*R{&)$CTU;NHLA5GTGs2fcd^FE0(lV@)y)hH5}Jwqll
zU^6|Fz|}7XDN0NN0Bm_^g~(nD$ts0<pl~$8>}_cva85frboW#PX4<~A^YSNN?ib6r
z>~mg%s&jTk6+nsb;d^&x%jM?o_Gmojc2soyMKp!TO&|^rAD(>k+i$-9{qN0Aj+P2r
zyBEjf=J+H93OpfKt;|kmk|F>kq<||QZ^tk`NNMsos`R)fSXZ9&PcY&*cjS7jtY(X4
zzX9pfzw*L!&t609QnUbl2vcHM_Wj+v_qb`UUArnG-~Zkl2M7Bfe&yw+X`OvV#6#R$
zMC@#fGMLU)+2_D>0dU~jL7w6;WIqhUgwEF=m9Vr*iZ?uyCIDy8D-#7o9F5w^bh5TS
zy>|WTe7?B-{#}*SFP9G=KHAyYW`<B?L{_-NPZ-^*wrwlcqh!vccWuO^szF4u&>)Kq
zYzTxRqG&3oaTr1trPUK##ok~IB>*JDp@F`c8G-rM%?m;yxhpI&07y<Q5KZFEu}`nc
zjj5_oG)t(q5`LKZE=Ycwsi}L<BI;6vIe-x|6)S+OS+@cvXCjIwAFqg|K_Fi8{}6Kt
zzLkuzBf7&Mx=(Mm@5?ThKD?|h90bFh>|%F?001H>&o@jNK-E-JHIZ5M$B3T(W-4kr
z*<2q_C!^3XAUQN73TB4~`?J&I39o}vM&;1`r8B{}OxE@3r=R-kFaHf8HBIB#d1x9f
z&XoT8HG!E_`D&l~#j+o@ZRQP$Xo{9uW(Yt5f=l!?X9wX~ewhLk|6*^{)I2AuPENBB
z3qVp*b>jtk`k9+g-MpSs6iH~>b?x=**8u>T3kKy0h`Fc9@j<I&C6}mxmHf66pa6PW
zW=3LQFsmt@vJX>L&zws3m<!-4S5d)Kq^7f;wY<-_Q4aYi%s9<fJ0_ytc=QXO`1tnr
zg&+O+t(RYVsl*><a{^RIB<2wa&S3UrB$djOsI5Pud;jIOHI#6X$FUj52}G1~Rs+Tu
z>$|Ikyiazsdm4g>IC?=yQH1=%%nyP9+(EXYFiOP5eO8;c+uYt+-&ntVW$)3WM=ySO
zWTA_SO`sT4p4go|AH__Q7$_k!le!-Vg2ZIz!WI+}B2J=%jW+PKS%tSl@zE)fn$^51
zdv>Aa=9MZZfta^0@7#F)srm8g`|rdgqACEa;+U0dAut`E9=&&Wvbj0lB&4v)=JHf4
z#LdmkJ9pl{d;h`V(d_tW){VN*cH&y220^F^-TE3chsAupn9s8K&0IuOG}$X=DAXGF
z33`pks928!RKrs2@e(#KQB^Y?HTK*y+v8E!@Ti|9oLW+Ow10AZvLME%ZeD%i`DZR{
zZhiM3UVr1wH(q?<`D#u+tOE+X=b&PhikwLhIm^m~v!h8}B@V!l#AC(O3<jPH+1HH#
z+-SinEmnQnLe;=z2x1YzeBOWao8LM-K7Quur+)bQj~+hQ-`?Ho+V=K)?|tmmS1w+>
z=&ef;om6`-tp-!70$?G8MkS?4IY~$mfB^t4WRDMz(3X_f8J-!}0}^5g4GoP{Qc7m2
z%xHBLo`MF}01$;{Pz8udl6><OyL`*wOfSM>P1_n687YW}xS!XG1E_$Al27pfgvC@0
z`(=!AnT>kD!zPu{9Z5(PRBW=gR$G=7mul(+6htdX2%3jd2peM4ICw%S#grnE2c|={
zNCU%Uss>CAF&FbvRMD8SxhrAD9a7OZ7bi9#W<M6a)O9S)4|zl|NTz6+5MM}4Y6zMn
zI@;Tf$8Fn=+HSsFh-v~5Nk{t!%h|jgkI)AjXaL6C5RoDPN+A!ywQE<H42*;-^M;_w
zaa|_r@t2<924)m^*)JJvxm+>_uf0<02ZRWwwoz3?HA&gWA-g@)LP}OCDcS4B%*1s>
zM1ukr(GXOk8&HcRGszqTw^=AVRm}>`2rHOc=gzCpB0$cc`AXI1lAzL+Ryw6&!I$z3
z8BsGK-_z5Iuuo(azGR}N%z=niQ{hzU08H{82n$w(s|#C89VvncB5Ec#Zr*(A=2J12
zU1MY-%r3pi9%4z7H&yw58ccR8q?`#5U;wm;5m)$=`UjHRDZelYHScB@fI<zV5)o!j
zBL04PWo_dIZ{npq2X^->hX>uiv9f(AYwAGN#Mc-QkEVOqH&RLpmJFqjoRlaOsW>{<
zkBFemWhpQK0ZI}vsRqIx+=3Zn)12|912d_t3Pm)uY~4HH#wXFt$pRC}&&~)}%4UG3
z>n>j3J3cr*IX;akYKl1|2MAOQAc?}Fe|YQmbZ4s_ch~{~uN+emnkKBRt<7fhqvNAR
z-}efe({(ea*zt0)R3E`0jYgvo0yE8Lv%Zf^Sds@72EO{|<iAhM7W_|$D$h$%;0akt
zXidP&yQ3?YE_B^!HeZI8=MPW5^yR<(`nP`k*4q!e(YS59>2z{BJHGS&?PospY}bv3
z>FI7HWy82tx3<x22sli3dR%@|N5yAfbG?Hz#RLc1_Y$sxU{!y0ep)o7_pB-p0t5_!
zZ{E26{@wet(|PLSM?UiMl`DJizkmO&AH9Cz!usy+PAvth+SU!OF|(k3;*(-rf*OJ$
znF$1B&ov~ZK!HL1;iC#9iGILj%5vt26B2TOVw2?RW>s|u_6(wyKotUFFbu@Sx7Ky!
zlE1&qT#LpdAQCYn0s(1u2TP_BUE>KkRwql1l>o78$6$zTs=~}Efk=crkTXB^vx~Sv
zXhxI;SL&wHAfhG;1gMx>YRg8l7(&~X!;3_cNGgGIUPT#L5$6IYNnL1)-%Zw=nTbg>
zSACY3?ksmeZraY{w@SQ|hphO@(>#Mz|C<PbC<HRF%F8z+#>v{G8;!C)Lj+9>Y%!nB
zXQ$hjFC|db<Xlz`DUWl}#SvzvyStk^yPJ3KAJuI(Q0S`yqh$aCO%ZIdSoX_h6G#P8
zicK?(ahX!zaBxdMB3drg3{|zd^m=6(LR-v}1&Vg9?zAk>$yZU1y%dp@lBt@cq|qdb
zCaklcoYs;{+JV&x6c3$p!PiJMM6b7VNM*)U6;wr%s&kY;MGCfyL~O=hHHiuiU}vvw
zeKxGc$yQfficElV_ryYy%4)sppHRsY)u*IL3Kh%*r5+Am+n1C&D|bq5ZK<9|l}%b)
zqhY9$5;ZfSf;qSx!mBTr*<w!b&X9m-q!XZzgqN|ex+xD>15g+FEEWql|60c0R6_`p
z>2x+*6yGHygwQl?X!?HH$6i&CI7Tr8O}4Zi5yzuZN(qUGf+1-VV(z-pa=BEMW#4l)
zl8iC-h8R;~4uM<I6heqe0U`S+5ju*VQWTMvgPBFISBg2Sh}7B^073{cMo(Pzr<g>L
zC<M-mP@f6|j@BmIS1(<Ba5z7i#TY%OHl^GusHz|wynnxY>u2p`vVP?vtXMhb?rhwI
zrt9#O0Qvg$>o;!P6wrRYU_N%?QvnW<na7hUA}$w;Wxq%%v9H@|)vHgqfS;t~{&}3N
zpYz8ncEwDSG2ghdt)}<x-`m*SMH>C!2XFo9|NW(dQ<`pVed^=Cu(2@}(GbFK|JH9d
z4I6-%naX*++=?WDW(f>cp&FA7@7IE9*)UFXfFxPfBh*&-@%lqEeFzoQ2k~b`Sz28Q
z&cq=DbX{}v>FY>v`}W;#)ZKdL?H|AShMHZza`{6a`jE4${4XX%^K?5Zx<^pY1&A?)
z(1buCv50zh6G2Xx2^qhFvMV#|JvYH(28w`8S$^erV0I4?P?3JfI&o82Q)#=A*VnlR
zavL)BoMf%+qoSv5LSVw+%{wz2Q!h(%YuRFR>e3Liww<(r10tIVfC&N<YD(Dw(4?}4
z%>p2F-Pl7~5J)uvm|9Yae!rFK0Wv%Uz|4dUfCl2;Pa+GGgqcsP2n>`}Yq|6Q0s|xi
zMIzD^)g(`}b4IV5Cp9hyaUV@$Vq=LZCT~rub2#J!4mpI5RytQC!vtzz*aSjsnr75?
z%NPksz?e`{O4274^jKFii9I0r@T{hKjYr+h8#nIV|DNX=uaa!NQ6V$M97%}?1}7&c
zhsVd8Ya>sF`Ot@M_Whg)Q_9>BK#VDvftX<qltnNiYP^i|AfsHJ<eS)B-s-K86DdOI
z%<{b=3Vn(yOEdA|xRrr<->0q{5oyzonTtYQ#LT0@ED%<DGa?J3-;7<?xkHGmN=jhj
z1DKQ|<_Qz~o^}gYV)pt|Q}RaKBa}>6yPb&rWQ|cn(-5M|Rh_Y_szk*kcz_|PkpXbw
zd8L#@1<c!hHBD5yW=#pjhys!`Ur1F{)$Q<H(w~jfO23SV%uU8|fl`c+_nk<Qbplf5
zW~Y=nM@*O`VHqN1dmt6aPQ^$>DQWe;HHad4`s1?$5m_$de9<#A<T*6}Kp$m}%NV0b
zM1+*0s)A@tk(iMvC2?9~+j>=DM%<@UQAshn+uvfoP?JZG9$mb6scjknO0sO5rjN-d
zw)t>P*`Q{*?1v081{6`^n%GFDNmWB2iG50`0f;FYfQY7)nx=8^5&%+6YTASbkaqSi
zou14O_YW7#g_)Wv5qmkNCQcXFfA9Ut)+UX+Zhg(eGprz|P1B6WqeZ{`%&-6YCqMbA
z7~_wA^u~Md-U^Nyn)!6BaBgrsnKn%u=ArMGDaM))Z>ym;oKtoF{J_C;y#4=_gb7`Y
zJr2CN(M-nUlqANea@uyy%P+sYKZCXHt;x7cDG?Jvfk?rP)))u#TEYOR=cuU&<UUd7
zUW_07?!e=>PJP0a%b8tPkTMI&JPr;ArVChHlgKkG)szTV@h~}{$wP{CKrOP-sCo9;
zr=EG{MoKBhzVBmbcsd=etRM0rR=AeVr7)x7qlri&iKub6WpRxV0-BOxKqeo8mD<D+
zv81Fq6&lD4ixiJ?ED?c{L00mMnP^57*?>iaCWA^mgC(kd@|q!P=AIgvY10w{8vrs^
z8z@2$NB%%n#Xt$jlo1=IfXF5MhL~AO0DVD-HA}YvnMNTrK;+_310g1hW+sJ*UNH|e
zKyF%hp|AG0L@3EDU#FU#+p}aFxarUn?%aQlgb)?fG&x$3Q=YOio7&NoIAo%V1FZ;A
zBdB=ujLg}D0trF6>BMvO@+;M(Nlcb#JZhO3h`0%4q6P#Q`{mK`q1(-bzyPKa6@-xy
z5fW5w<ugy;{QBR0$3ICeQze%tJ7ud1ZjhjtcyfF^9W^R_V494(zMs2sjn7e#sJN^E
zA!i{GG+j$EWs`qI5a~@Lk)P?Rn$a3SHegV0LMJH|xF01&m0m4@$IX^OkxEi&RAp^r
zRO!u0L^YZzA*iAu1Y!V4sRtlKS2J?Pr2P~V0aI{RZ}C(&@sczkYS)D9>V+xB-b}OS
zQkmxFL_#FQz}zB+>~gKWqy(U<se~mLYj8j_6vMV18RYvusrHMdi+y}JVJ;yRC1OBm
zxkU;NW~f4pJ)t@tUV}C(Z0m+%P16F9Dx{=ImVpRBa*0}qls@JJfTqb(V^m8if#o6z
zOJDDZpm>NAg(fr{SPlL^#@;Mgv+KI=Tf^S_obwHLzI}TJz-~+g2m&M_(BjN+5M@cW
zY&m7S5=SrcliyNtDpjy1UVs1qAOJ~3K~#B89+GEQrCeo|Q%>Tz%62T#QY_2VKyd)Y
zK_oyB1keC_zJ2HKe$zQ;@3mGQ_BpqkwBn=+g~9`>(dheqXP>>+|Nr~Nq!L>IRg)gr
z+4YwY$$$*VJ8wcnXvm_`GX-DF=F==HHOcV}H6t?=m7;JV_+(fw7Hw=YP%KZFnx<uT
zqS}hIsWzaxjm(~zOtGnJ?0E#s#p0|s*|{hzB9QahKu1l}q|_2Z+k&d5l=^E!7i4Xs
zKvM4*i4`ct)Yc0#OGyT6D_fV(FQ>DU{bZtw+UbvSDiE-qEspQ(4pvvmIX|edvjHf8
z4F`kqc;%H>KK}A6uWX&$IXRvb<<R+%pCOVT9hlSFnvb7Q6yE!`uIqLwF~zpcFJTW2
z)}}w_9Q?Ux)qf(W_5TNb=nxCG@u*CqsfCnuyf)Za$7|Ovy?bYZMTpWeIaL!$#IFBT
za{hudqlzJ@Vw-POd2*9wqkS1nf2IP82%xClyEg!kWw>5H^m-&LES9qR2n~o3jqG8C
zNf9YYSEb7m?6cum{^v)d;N6m_yTvJ@0t%51s!$EQnQ})teYlduv*}iUZ1l+|1kmMD
zA5A;j8Q2k$I|~T)5E4UFVg*a8DaAzWkUV#Pp#8v5v3CwCfDoFc*rQRotj77w>wp_@
zw#ijQMHH}J1)~V$nLQHs%l8}$)!d~aQq`!^=GzfKfsTn?x7O<F*^i(EQ2-)HQppxr
zXMmU=E0FhjfROdAiYU3g+&>e&s`|op59@4SB<xyarU1e@=-#af9AM$RxBOh`?CjdB
zorO@rx}6yUDmXxN&Z`+PD&k%{J8e!SHch<%1Y!g<XJ}DS)H$bytAl_bdH7%;tuAX>
zDy98Gc31FNt69X^!sq^Cjqd*9nA=rP-V~h?m~`V)Lg$@{nW%S;(XDQ8M7D&svbioI
zDaO=B5kW&qy0*2ky>q^8>fL+ymeUi~G+9nJaaApW;$Re#v|U;NAqlW^nFy$vrkdv=
zpa#CJqXByFRijFj)SNA9I_@+O7#nzY0qBftlONqCDVfHuk!Iabh8>z|H5?$aff*_R
zp^%E2wgv`Fgd9_w`*r|?<nteXAB<B2REeqysXu@_?_CboQYflUr3qbxEv1GDRdc8q
zL=plLI0Pongn_O^LF`g$ntEX<&S3|#?B>-3#>k$i8>O%jQEtu%KvF%km~~@ILn87B
z4ve6`C$zCekZuA)bOzDRJ<p;H`SYKXZl)Hcq3*?3y44b*0T~#(faDE0Bch`iNbG>~
zkL(DESPd0iSvn-&$u}XkZ3GYm6R=0pqzH&&j>&-wXKDdr?*qlyrj!h<3w3wTM?@|?
zmq-EGGm&AF(n2L>ICh>DkH=$EO)&v55V7+J4v~RW0WBp}Ih$yn)dGoFl*u`dPBEJ|
zlO$Elvl)FPT8zDM8H!L4djJGXO^PNF0aT%=-1>#h+3}=a)^^%WM50Q5l&S#%P4|xv
zZr*iOiG;o!be#x^b(|ChU%h%2iKnyqvTg>$Q3z!Sp-Tz$^65uY>&Wbj00`oRosVrB
zW1E9JfM`Z%XqUhABKx0)?Eb$A3eWz539CR=Q7{*TB~w6vA{4>9-Fx>Ugzbyxs;VM#
zW~P=XUwjb_v2-qPZBk4IiSvZ*>_8z*DG_lV5jpR>*pG;4G8685L?RtLi;%k!43U9J
zN(LQMB}?2zk|Fdn8_vge%4;J;G!PJY7<ccvve{Xzn$<Xx+uN#rE?DxvkgPTGXq2yi
zx%QU_ZyDm2>pXeMmEQoGrcv!DAl*BJA%N>{v3-~X!I06BrKHPxd3<<C%&Tj~aMg97
zx~_?Xy%V%+?$=E{nM{gMm4ofAot0?aGq%HrcjaJpWQZzBOf5;960jS1ABY$pTKMo0
z(vV83my4xn8dO6u8x`A>{bb#`%@BbR6Bv>KNNkpq$)sL3<zVDJuC8x&aVtDS+G0PF
z5VWKysxq4|i!gSf@Gh`(eZ@#SKp&c!dNx8)6;rYNw(Ee&^}l5V5F(P469K>|s;x>w
zLNih|@0gesNI_>L|J%E--iEoDG|e2$mh-tt@~V{*#Du2a1w!@|k|j_DNgg1^77><J
zo1W$-ts5}`a_}bV#a=BI-<!Ne6H84~6-BNv#kOH$B2>|pP_Y@ayFK4u{qo0vieXhY
zb-jOZ2mmE9ss(Z%c>IZ#(Rf+U7w@<#o|CwA8*9_SKwBRBa8Ks$bcqJ+9D+F}RP{&z
z<h|>TD@5<SEKWq!hzcLPV**RDM(b*qMJN=q>X$_0Ae3S;Us{;Z*doLTVxVXu7V{}g
z<cQcH8EZndtfC@9V@)a=O`}KW(1|3`L`aBE1gg=RApo&-&Nxtzn3^mY?sdO8sLei<
z$ZSN0)}@$;fFMb0AoQrKS|b3ULowq#)ktOtNm7zlEi(BtNwylA60>t5kaL+#36_yn
z`2g;a@1mLqH)e{&M1jcVX+JY`kzGsqyR1gtc%CRrTQPI7h(HmD49p}Nh-s&q0aH;x
zV049Z0nq_6AR`(gMM<DSeH}W_!vz4|Kq0?C70DGuKBqkpkdP&bSxfYg6x~<c*^r1x
zEx!h{5yVutQD)OqRRIObGsB#qHgZhtg8^q-G?B9$(U7xxg60QbmW?>)5FL<1VpL`F
zi{%_Fbv45?=?g*<C1NHoz?6Sm>_rVMA!z=k^9<hrK~Mm_tB{-;BPak9avkTGgAs_M
zm2&&iPIEecuxwLOBqbshP*4O=)3#|(@9h<XsvK5OREV5gZxZV(SGEVEqK&Qhh4<cj
zPsG6&Oxcl<``%zbM=u~^=Pg1A=$v!Or`SqtyY8q$?}R!tu<8HTe%F4kGxL}3kMkSe
z>gsTFV`VfP`A~_d^S&ryG%VJ}!y7jrjK+hiD!X`ppBx0zP!zogQe#(Qi)W@5q6}3f
z70W-7JWrAsQ<5Ytp#h$;RH^qC36XQo5wn>pYKlr^rW!T%18O+akP)%>9-xaGi{=Ac
z`lv?^{33MNc4WuIC`n?QwEJDBpJgc`7<nI@bATvGk|Z$01lhxqVQ{&N*lCQ3&)5%|
z8?%V66IJ*3V?-p@gM$al`RsUdGM}Gna*M@i`@$1FkdFXz4KQyjHMPsda(?U9t)_0u
zVzhZ~w4D@~I}v90-|G^~%&=U{?(aUR>juG+^2X+1ZIipZd`}v)o_wj&Oiz#R-oKA#
z-aB?1k6*h|LWcy+ZKBQ%jDTRNSsd&?*xTPrDU!KRU0vV$KsL{Im5rR4G(iGJi)}NV
z&6dl>_rLqSXFvGS?eoLIn4tG2Su*JBgUsxlrna4&o-Sr{H4R}rULOud4jvX)y0VL!
z5#?})?mpO^&*$Fx^^J?0gL7tpjsWaXmv6`EiBE^^48W4aND)&r1S(9;WR2`jebTZM
z6+$B<uRuu%Q8h8KnF<O5fg!~j4OHaD=_zPeR;DFMiYh{gVBmZ}!*mjJNHxZmMh>mn
zlR8>TD@1Aml#{d)|Kj~0sU>ze92Xn{p`S9H$b<)kQos53cK{*BzZo#Kv96aGB>;h{
zigr^bHB)u$JW&-2LI}=zB<N(f-uqwxWm!2Fk{DBAz=X(z`6v-->-h}8JQErq8Y7}X
zS(YIThNE@n%K6~EN5T|aNXytRm=M5nYP2i^5{VI0IcS&6AwwJqAvFt2wWY=pATc5V
znsfPuI~1&Bt;Uv_n8-LKPV>bAr0oEE{cB=M5~|RUQE(}rR}M95!ek_%YN&vyn#{=5
zhzlWb%n1#N@+Utz5{DfZ9yHIQRguY?f%gRv1H1g22Qy|C$YUlsySEUrAu)R*uf{~o
zM1Vx<@(ITvKx!Rso;XkbA)|4T@_|as>{3pxTk4f~2*468lw-=*Sp)2r56q4wW{aa_
z^J$hmKJ0qtX%Z5GV|HyllhlGLfWTQ6PZ`-0J5z*A^dn{thzw?$&(zKan&;b&JOh#e
zfe``$_pNs`0O`pM{r!eKIgi|>KA8|qnK;EpwarB$%T%@Os^q}Vi5Ma{=RHI6zO4zY
zHH&8Gy{&GJX4@N!=^~}1CT!fJ-gD>3>iJ^2cR1WwTM0!N4p9xsMuVclysiQyB<ISi
z8jXgts+<S6TtMohBWnNAVTs6&@&%F|Yw#kas+dULQs%odA)eLi9<9PZdaLer8v4kD
zgZ^WzEC8seq%;_Wi<dS+@Ty>HgF)pyg~F|`t@zvf^XY7LZ54<R$pDp@z<D1CJp!p^
z?qnNdLJ-0Z2Q3O}O3Xx#IXG9C=9wh`CID1T3h5!+6``a0caBxcm{$ap6vZqbt6jK|
zvz-B)^N3_!LRs53nZ*o|?8GWYNUS1=<b6TJJp&^ri1jQeV`j`bM`q4@JLAoF%^*eT
zGp&dsM&!(r^T9Cz02?otOVyOuZ|>2kTmIZkPfrhzj+XPq<m9Ajqb7Lvx%1BR8DlXE
zLsYsl#l8Ex$43WE8y)+}WY)^w<4->0a`R8~i*5JmVJ4(_Z};w<+jrWg0kdUY?p*jt
zUuZikOQQm+3PN-D&ij+e@&5jSLu{iMEU!NsI>#nLzWyi6SR7r<C)1PNd%L&xcJ~a#
zQnh{IQc+cB=Ogy=%uE1T%%?Zsf9LS<IL5jN^xk{7fG_M^DjrqlWgmtrc!x37Z@u~2
zox68aYyk*h<+&HP*0%9yi>0R7A}R6k=>Eyk!R~|o*>qC)YC4B%d}VFO3Sa~ePL7YQ
zJy<T2iV2_7>bzeENNXuxK-Sagul~xX{+oaCPph5Fr6HQe6xBpPz*Nnl0yDQ7+qMOR
zOT*Q--+ree8g8slRO_}yKoLojT!y?5rrJayX);4oWfMy+Km^0oDkM<Rq!y*cxMWbr
zni@TtigQFnz*HD+ka*G)3UlyQ_^5&iOk~cC&;wWk^psOYNh2bVwa`YNn9eA1W*zLl
zN4)|P6L)xk4DO1_+QdXjB}p<(*kuKQ5FI<q#~L^j%@+j%#pS}l#9;<F<QrMHR5OR@
z9eZ{T05nM`9Gg%~!52kUwJG`F35m#svJ7FsF65Wo;6qAniZz&^X~CRg%6HS)G)Tz4
z2<4bv#q0-z0idPSIuwu=z>2~%XT45r6^(-*uG;B-RSt;Rc_%3@>sj5*K-$XSVl^tW
zokax<e5i_IkP)?KDg+|e6EeHSzN)A(F|p@9R+&*8hKZP1O(8FUx}=5XjFuVZ6S6m$
z=8z=<TJKHG)gD}3SyK#AIbR(RFna?Xduitgf_=HCZ*h6{ft~9be_dc3@{XA>spcI#
z^n@`(<h~-+Wzm^j%6C%iYRX_hK!&+zk;{sT<Pm|{<%<EK04Sb0;=!GX$NShnD={;t
zM!`}{Z63dw0FfgK$gB$9bDl`&V;BH6wb1iq$^mX)*<8+-ZQb;bP>{^W5=9_EJ=r@L
zuCER@)`~&Z)fGX(lqgAR+8Bw8K{Z@oUt1gxCdXVAVNt7?fFbp?#YYicL}Z{jbCLfJ
z&H;dPF@$g?>S>#%54_vY3Ew(4II&qe<1hWC2;MU&ebc0)<2gHFNA;``z_zJHd1X8p
z4vV&FXg*I(L%~zV9UB4yvzN|ALB!6xRO`HM7o~T(deGshzyKVP@A|Qr!Q>=K5EM<$
z3J?m0lwavR0B0T=Q9z2ZNni;d;m?DTA^D;(!wifuLn4=3`)09g`sXHsIzX<fDu4J9
z(R<%>FS>pTA}I&}F;Z0xFy|tPjERzoG$}>r5YSSDe2N<z<mgFv2Sn%Ga@m>+g1JZB
z%SOoF7pi_Z+#U^}2%9OXL9w~L-CGsU959f_^=*SmLp9u5HYep^4au%P{sHfO?$)a1
zN}HM(Q6NS&IX+oBKT-=R@_2P)b9<|AD`HMh<q<EFkFl<*jf2A(T4l%p#%`@F2b6Pm
zc~S@#lbSK155=H~xPLH9;!~p7x~I3!dGGCKl(acp#E3MV&0~Vud?`s%#84EQ+dJKH
zkdKON(E>mwW}F;PPbSl*iLps-3&*F2AAY66%(n0GI;tH)m>8R;IXRvz=5r=)Q@nk9
z@5Pr_fXGaM-Gk+{W=m?xY_lEw!!P_sT+CBywo|N*AH>uBgCG6zx!dipf9|u}+Z!pR
zHnlP3FS#mcMpcL^0F0=(`J*>>-}uJg`n!Mojhi=io_W67+?*|!ZETjyMU1gcO_CI&
zj>fA#cm^yKhjsJbtKZrjuk9`-%hmPq=6Ok}t{0M)1tzR#+DzxC69Ok-j9AZ>&#$ii
z*MI*v7W?nKwRieYzW!4!*C7ywK#U65#@Mz^s5}vAN--u?0X2s*JKir4Ol)qJ3n8hA
z+0*8n6Ei@HrXmT5$dKCj>8saH_x80Y@61joZ5vZW0z)(+L6nsG`4ST5=%svqXZ4p}
z`tZN}qaWT=e6L<4)139ttO=(Cs7i?ti5MKtw0#`u6VF|_aqIr>^5kf-tWD6f4+Sh8
zm8B0s4T2AOiq*7jY8#&f7fV^zgq&1FO$m)q$#FR-Mk5H`JZg6fGUu2OF@c{>pF4l<
z_36n8Gf+TujvX<zl9EVpOo5o}u`v9~=$Rm7B1kBjM#aE@IiI-L86mpR1Lbl7%od9j
zn-I#uFsNpE9Asqz^kRwp9BG=mX<8y03`ztd4nXvfeTGQPU20d=KoM!VTr$ycR4x|_
zBjqr91a@|2O~5neCPEjkCuU^A9*&<~N=y#4d&uR^m8v=>1Ffnmryz6tfSH~5%#OMY
zhpK9q(I=M?ewn(@+|TBjd+w$Z^-@~^a?ZdINmKxdIY;uCiNI7e1>gNw+O`FWz=d^%
zr87=GGy8nRGI74RbKsTD!S?0t<!n*6O_u(ekt7wfeBT9;{k!+8&Gj%EhGEt^WzVge
zsdEf~j%hR;42Q+~>Y#0wDYbQ*(Lk1uSwzaBGVWet<Wb;o22~=VBxawf59w!IE{`;A
zx|b&+AA%1-d-7oZv&t>3hgK0YB*-hC_uf4`I6C<7hdyMsh_P<l$PS5QJSsOg)~3s4
zjBVu|V%`&p&lf}>RbV4fB<G1;83KZGo>N&u008#hS&wq+)VWy|lTse|XSX0A7%(vd
zbRh%l>NlvSXo_emMo54ls)jBQbz_p;v{V5D69G^_LqpS)w*$;9Vn~)hSI8VfNU>>S
zqHa9|fJWratecqubrNmL-I+GG`OP4TAR<FiltunOKw>6VZ!WsnCKYv=J><Rjz8k5n
zu5Cz4Oq?69X2{HWx|Exm%ml#^qiN~f;OS@2X(r1f8&D|2BNle(Vl(U*iK&uQedvYH
zs#?>esvNNkWm)y(5mD77VhGL$4n-(NgsY>KD=CQqvnxU|$YI|64r!vQLc{=$V1x-)
z*RQ|y(Mu{OMvkism#*~Q?F>bbK6~#CaJ+h@O;sq*J1&|QhU1M3moJ^|TykYOzjQDK
zAQBslRxkT<XD}EKs<k@tmB+3^UkT2QH|+}6g{dX2&~LD3Ge|A0ZeFOWp@0ISIXrBp
z%h<*kLGUAMk8L^skH7WRX{!Iu2VXkgzxl0ie{DIN&kyH6`1aRzCDf+L1T>W)<o@em
zeRXkkl9!*`)#_q@zmAK0H{W~jwKsgV>X(ZpNSk6)FJn$il6ha4#o)`4D~G^WH@08+
z(iea7>NnTNYxD8u=)%R*wrOKSC|(<CX0wC4HZCpcqFzAMx8J$*U;O58KK_9Vw0&~^
z%I3FTJN?k7zgVuV0<&sLX3Msj*UL6GA|gGS)B{a#-kKgyfARV2T8`eFF0?Fr;f$zi
zjO|$|NK9snxf2)}e)fsSi%UBv+WzZrd}n<$jIm@QawNH-WSQ-)`HDbjw1|J}7eBPz
zzy0?<|FJ)L<92&%7lO|UikM=IEdU6pb3{x)ENU$2W0!Y+<)tV0FN_{E#XtI;KVa|8
zJSdV{iczZqi6pfK*0ilG8*1CIT>kyff0CCcZ$FrQ|K{F<Wu3pT#E24`xDd})dhyil
z<OnIjuU!4$CqDS}V~?%>_MiUwpUvh=P+|{|RG>vm-j>jkG6AldpSE?qJCWF)p3Xw3
zUik1OvY%Vz<@XLgJ)Ycn=MC>Ydw)7P386T5{_%^KM~<nt9d-Hq{AGOi{dXVi-dkH+
zi!mWUSq-1K{=9ee2tTyj1QD_ryz}mjd|P6o=GNWyjq~R&Jl0t|tXI?Yr|bUy;pyq&
z%E~y#w5%7S;dp(^2O7DMpFU@dBP3=Oynlb!IRK-SQj)m3x>=6U44h*k$}6-y4>zz_
z*Rh>xZdaQnwe6iN9l!xNkD!@|**Ru0i>XZ#+eNc%>ha1LD2B>&u-=1=gb0ioa@W>%
zA^?EnlgVUqa{1DgiVAjvvjZ!`B8b>|Z{Sth>})qMWF2h{*Dq|&rnA_zM50998wr?-
z0cdkN-@kQtw7KDmf}QIK#+bwW0>q+<fTPi%UKvbJCoy`Flr$3;yM6&8swSikbb3~c
z&;M3e2d6HH%O1Qz+cw>7?h$)tcJ&aE_W=nI16Y?RHnXN_a`76@08e?wYi2+pgw3rj
zk(0?uTGs8#N>KzJ4E%5yPUrKsZ3cr1OaaL`pS@(*8AN~_sZt1KYNJU*y@@MdLRGA_
z7(z}XA`yA#A~P%HhrM;UHp}5I>nrwzObCvBa79W9K)S3GC;~d~tOF`!(jI_w?3}4H
zlRgjCrNOc>keLij4VWFfkb8;wwC=XFM1#SA*>yWdL`27I#ErI^S3><@Iu}3l%8PT<
z!_0^pQw0!rMg_`##O{?U@ENhF>)RtB0CNWm%;;)Wz@pT?i2;_0xIMcQp{GO;GlQX-
z5_?~a)L_`jEeHtp;Ws}M=p5yJHR)ibMC|&+NDN3l$kj3l!8BXa8~_Zs8jQ|$UMi&S
zov`Cqb}d^3bj~w7Gz-Oeb^S_ylj?u{Gwxc(ETsHn0A?`T+`hK4bq$b+SdEa081n%y
zBC1JKGBd|sl@N=ISDwFkIlJ6RjX1bgT3}YwM(xh*xFb3lKXvZv@#)?lPu`LwpEy|G
zz4`in<=W^sw#PT$_~BC@d1*4A?OSug%iX<`ggD^v%<#!?-}oMT4+5Xsetd&<?dtXq
zZv5B^`}V7UHoAJrjjEP)Z$6!;)&Z$VV*&=&#w*o^oi2X;7eDDH2Y%pgy!Fm0+}``i
z4;H>SmA17OA+fa(8)@4Nf<+{^v36s3cKmPtXuWE`^@I0s-I`6l`SqE@7A%=1ON-dX
zCbrTN5*T<F%&b(nhW=a#I~&EkO~*IiJK+%7oek{~P*ea+lbA_cH>Ac~-a9yTi}^gZ
zY2J)S<CC-$rYK;@XQo9aMgmaHO@V**uYP!Z^QZsdAN*H~$@1#@=1fxrA?FYvrB=)w
zlXH%p3!w-hl)!PZ{Qdv%oiBX+g`eKKb8)<`!%`g=RVk{(emGt^x3g1(Qc^tJKWJt%
zYi32g{I$=#jLn_n+TZ#||GKFm8L1d1A#FV3csyR&TmyjB@oL+~q~crq^$$Ip9{hNV
z{Y%@M3kW=15kwaP6Wv>${>9O~$Vf&NyV$nD2LZTu@7{9R3`ZMCj+xGMi1{9AfQVc#
z<IS6Q&Fu7ay0S9zp%|}TWFLsmTn(8@fo2HCdk>EG_m1xG?zc@l91fieI~T95mh12+
z`KYh&*LA#g^NyJehr_0+n>I~Oo2?61bHej%BHGcC)%N!fcXw}($HRkzgAjuE<+FZu
zXRw|3<@u_@juW#1o=)elzxMj(=DH8X{kwOEqv4gSesxov&*N{%!o@E8W_aVqdzu!=
zJef=gV0~k2bMqnsP(Oj{s$h;0a5kIYyZfGVyj(1o%f(<Y*gALN^2T{pRaD202^|xm
z3*H0L;o(t?%NWyaHUogk=_&isu*$h&>&Y$#fR6p{?&Q|3w@1UlVqPEY?`>^tJofnY
z3y)o#o-XRe66^dBXVu(E7Y0&oX8VW7cka8gAji&mLx*T8G1n|(O4<Jy9G8Wg%`7;E
zB!(bnCiw*EnO{A8Aio1Sat0lkx+9>mBW6a&Oh4yZ=!345MQ7BjP<nB17dUMi?M$#e
zijUDoLDyEt0Oo@qjz&4wJE+Rlm1=WieEaU+e6|22$6QnumKAotfSvIr^MWKroSx1A
zB`e)BrXr@4i&$p`Wny;DYvRll0_*s9j#<>el(~NnFiUd8L7OE2IER@ln0<rTiQPD3
zN{L(ug-I(ZA%i4E0EGlOpAo3rVsumJP*wxgXxajuZQ;QHn%FW?whj{#Gdo{|6inOv
z)iX18nZzC;xNI57TM|Te<dTR>NqehLw~Rh}VaecL&F>982<D6kV`iGQ3z$<R9n`lg
zet~wP2|$qq4{dCieH98yz&TY7S;HV=mU<+wfq``JAnoY12Dwa@If!7|4Z^$jQdjQm
zx?f<R%3Zv*4}$cnjWg#40IK$*x}G_gIbGVdp#aI{wGBHya~n`zzT|vn_wtwp=46Hp
zXr`gaB@hHa>2M8bB0@H8<ITm1l8~9Sc6DQW@4@Q^8d{lYx;Z^QPD@GkILXz~x%H_%
zeg4@6r8I<p_oHvVE0ak*{nmF5&^d!Rq~hZCPB@y@)&}C$!OG$B(N^4keC-3LHhca;
z@y$1X@bW9a@W)^OL(MxCq|=j$n=DT!v&H@W)ru4Qb~+sugOzf;IpjGmkK=USKr5ob
zkciQc`QqA!zxdeqzJ2%RjrReN9L*ox9iQ7i(X_i<9>{VkG5^H6KGs}FaaH-VFMsNd
zfBWy6KY9Dk?RS6eH-6>2Z@&HAyLS&k7pQ`ifg_oANMaacQ2h9{=fCrlo3s1(lO`Ur
zwefgzFh{J3gb2D0NscUmsuYG7iq+$Bd28YS*}whnJNNF7ub#Vc{Gf4=5H*tr4ZLGU
z5)sE-dcWr5hU9ku03ZNKL_t)_ss=fle(T5oelF3i3{EB!@eby*%nb8KCl8J%o}H!C
zwhg3&u~|p|uYUhqYh~JBHV>xrr9hN6b3{C{Mi|B>E|x3R0Gr0C3<^IzIQr3#-?)F{
z^%v7Kx9%T5dFg7)C3{cA+oRF7X7k6p?@Q@XEg`fq9!^eXyL+>ltgY<~M{5RbfQ}yV
zqIOpqHym&7od3X`yLUIY*Q>#xEQ(8)o?vph)`y^k3<jV*c!#UHfy1NeXf&#-^_YZR
zK@XifoiPJIiCGj=!o3HFgJGQuspC~q(HuGN=sF0F$y75i;N*CA<DK`%E2BXr>`hW0
zROATwLxnJ*Bl4@O+c(~MH>EfnR!x&uR%hJ`3XC$9OSN;o5)*~@Z{097?;H^&J-&Rk
z9*i>bOb9_WF&UvTvtvI!T})4p4Zu52F>UW$QW0|C9Xam4>O@S)giaL>4^L*ZY4*oW
zPiLE3+&OvR%qM1u=zJIqMhLvWf3*K#ud1rU<C9BQWo2XY{MAdd$#lAZC?e4;15)x;
zftlL*;^@x3(bifRRiFSa@B9!Eg7;(~bwSA3W!fOWB4opefPy{(%Xx@O26k*}85?qT
z#C9?)&(6`KK*zJ`?$0o!I<Y|~mnw>anZ4uKHc2!`0|MBX;%7en_!Ey^ozEB0`^Q32
ztgVN^-n1G7@BP8S!O7{V_kQR6`D!>yDKZx9fID$-=EJ!CgUPM;Z-O<%Fd7f9UcFqB
zV_)>E$ZqTG90StvWOnD~4YM>D42#mAJ9jP=ns<DUf-0Gvg1d9?a5mXzC&7oc_0^4y
zEd!7wdFs$@Opu-PvsUijy<a!evM8%Txw<wkORvzin9i_(KKQ0_i$ya%J#rq(vaG7g
z`pP(-0R$0<$opb3cgIJ201`qm7*yVSV#)&x=tV^AxG2liEZfDxwQV0^?@<w*r-%rV
zfzWwxhN>20XUpkdsjL@7_nHgh{O*ubb4j9gJK#rQY25*4XHFsN=EEjppj{I<f7~*z
zf*8TjSWQVOcO6wElP;`Z8svnwSu(&gD|wEsb$}Wbm6X2`xo6!A)v<rC!M=am8D;?N
zA?vpb=XEM`?XL=F-8<?mR{#%3bI@D%@;14bxiX!!^TT$b1)xD_-P*AF@oVp<Iz3Z8
zw(fVDnhzEWGjmnZq&RfN#g(naeER(Lr{aTy#hc$uh)Xb$mYFYaZ~MvO-ka~uCJO*v
zz;ZcFAJ}^8mp}b$dk428ESvq4<C}M{Z|wZ==6gBCmuf90%b$GrFQ!NPo)lFA;)V;K
z|M)KpQ}nZc{wKfNq*+uTV^Vwa+@&b-$@QJ1+qZu7=3B``o3_&WSO3bV!EOBX_WhOS
z@Vz#@6Wh7AXvoOPl+`x;;Dw#5DI%|I+&-EQ*Dm~x|NPfif9Lnt-RQgTy!%$OoUqff
zz+N@w6jnkt78>~C*6C?-9u=>yk3RYG2fy}bvlyyBf3UkO3Z(wM9tqV72nBEzRt`=U
zX|VbiH}84R?sTyk2FI9=G&QQ3s)(WhA_f6qSdIrcC<?llrU<BptIh?_N0N@)Ma;Pn
zP&_>#QAtgOv`&7z7~AIdSHE}j&fWJ1!)j%7V>vlGO^q=pGmOd0qSiES>eo+?foN-U
zqd7et$nfp=b|;hL@9fT=`S3G8c=g*4V%?g0!@u*f&pdwh3R})w5hx~*nB>!+{bI=#
znU^jC?ab_v+a5UQ+;ChL)n`7peP%c}0Crx10Er2hGsOv+sVJ)=_)mW7^Pl+C=lU*$
z0zx$$0dS|b=<=~t7KNvA<-=Eg<!^u)5ysdeVp&zrmqwh|zU+vJl44O5Rk88>^DjLA
z{D<fBc~SU08Xb;TLpeb9Onq?^z<WO$jf!xo@YRz~e$YAgjsbz4Um35U3z&&t1OQ5C
zOgtWspM3J^)s<BwD2fogGr$YyFZgn(#zf9c36#(Qk#js4j2?gd$$B}jm$eUp9d2)J
z7tV9=$ebGr2x6LTVBY%?Qnj`|$`8tw)vc-;Wb-is<Y_Mvd8V2mgaRNm?Q(77e8}_+
z4&`7l-dZ1RZMO3|#gx5^c_^r$Y+!23$@Jj%-NE`Q4AD%1kxbB(nK{ss9RP|dm?5!u
zU?2o2NRX1MfkM7*b(fHQq;+exvj~-)x$OafiGSu)ek8_~715M2XO`<|ln=J5aHG<v
zSW1kjX<YJSJJqLOx%A6l{`k($rM67~#*Av3QVeCav9Yqbxf+Tvt!qq*kfzi5%KBR2
zE3lk_pfePa_ik-%?WR$^OwOU{;`n&B<p$2>OOJ6!ZX$quS#+vwCd<V#rgn8T7M1kG
zu!pfSW_IjGqqW2Ry*OJsw*-XMwRP_6h0sa!lvs#Rfl`8cnVNc1H_M_diVBEPO$j*j
z4DuJsId0l`cyvN2KDd>Y@o+RAb3y2hv)2I#0hj@BKCcfBrZLV#;PdBqVoFstB43g!
zu~8Sz<}#F1f&INBCzA1y`L^ES_j+c%61)7O)L(zQH7dfRi-laBA_OFcM+qY-#e9<C
z!%+lfI5GeW0=hh22Lec-Dk+CDdSz3O8Yfo8+_^quuSusO$tPxJMxPO#9oWw?KSiX?
zj3IbftD~&S%7~6LS5c-6OKPoy0rkxSHKH?w8yVU|h8C!bsKoxVZM_GpCuae77+)}A
zzO%O{p6X^1MW68N>t(pLe}7$8|JyJ8m)AB{{dD%b-}~c(`J`>6j`iWaJMaAP%`bi7
zOHj*;k6r)X8-KpnF6NeiaBFq_DOr1I^GYo4X&sf|v|U(B%fr*_7uG)ekt;`s$EWvi
zfB(TdlX=7>pyr96-MTm!>KottK{*-}g-25#_){-F|GAHR?4YjqPHunt`U`*X!*90M
zCPOE1VZ1)MdGF&-U4^~9{kwN(Y8LIwFMi;!efbmb--dE<b>-$yuDOdRum8Cqw@HxA
ztBtUF<pUqNytek*cfNCcG_lmKu>H~R{pr2i_n&#}@>5Sf@vR@e@qfMkdQHKQ7?_Ag
z1TU?g3$?k0KG-`^P?YAgAAM?L7@oVdbLr}(gFifZr?n*r0GSCQl`i;3U1TWu)}7mu
zln_d%<KVCDY#qi$dwSTS5HJ`5Bt=;F)kR*pHoCNTfA7J`(c%7y0eF%RT)worwQ_fQ
z`o@Dht>hOpGEk1~OIw#-zV_tKpqx$XJ16tkZry7lC?+48P}_zdOj0dq7WHFKfAEW+
z`{=#B!$179Z;mKjk>cZ@`pR*V|KqD)TPhx$&fk0YUNHy(Y^kx$o)17v+Ojediy1lu
zavU5L08E(QCgF@koq>xTj)c$!mu+U)tzDS<^i3CLL1H9hhs+`PGt_V%L=yLPTg#w6
zBLXHD+z`rYC?X<6$n3gAEpf^*=e%P!W#*NYv18oWSkEA&q6kEkL`98UK=dLCNHIn;
zEz95rrQ^->=Px)%Dw5--%jMFA;6q`#TWol8d_qVYYpae|ceb~#U%T!-7ex`gU)0N@
zEQx&6YLvvzfnkye%2m1j#MO&2UT^AURaPN*QBi~CvIX)A3`i>7K5sA_RMn-O^XI_?
z3Hu8o8d4iIiLwhsBr3!RU}ZTd&tLqd%U6=5Y~xUoBq=F_n~k<MW=E5Hu@DjGELoe)
zQTau_p3f)u_fNKVH=nqwDk^BpMLVc{ISxfp6d{QwQISsUneW`7nuDWa(v9VMy~&wz
zw(||sBi^B(%`=}}={N(mx!ca>B39lY6PY7&h?RGRBL`Y}JiopA%(e5+Jh}e#Q<pAW
z*lwGssz^|jMbk7*Q&*$W*3QQI`mm}BI%VfWH5?UHmCHQdb1pIEMOKc=`QSIUwnWxr
zvy7>Y5t>%b7NZqUcm_^KW+tMds5q2uqh_X!&KAwac3?*UhTY>>RRF<)_e8i@wg4DY
za;J5@OhrN1gVYHqzh@{xS(ZR<Hg5pavTds2a5P>ca7biE`Q`@zj@i5)jmB-8OjC>!
zqsC;;mCh9|1DA*ZU}a@xHk*ycW5iG|PtD-q;Ankwv#hYM7%8zcQ;|fdqtS@SIkT>$
zL0M|j(c2M#1g${-bG>X4F-e4k1f~MWV1USK=E&uhtM=VlQ`L^4uRS6!%li<(b11sE
zHp}=SOED&ij6E?s!wA&~JrXjpQAg#@2fs+{;D;S%GC!BV1ds@w``JR9#kM)?3FdHt
zWU)*xlMw?w6h*6vq_%sh>@LidRGHX74IOd*fA4O)Vj`OIw<W(*<oR=cULpp^t|O;;
ze)nWA=3b4$a~qFgYVJ->KfCea=g(h0J-oX-T72c@FD_F(K%C#c`Pv`7N*4ajSAS>w
z&qj}3fBf;$+E4DBu*t9*KH<-O@u`nqEz&nmPF{KX`J=_6uABKmbM^e%rLDmzxY32}
zmp}BvAAIv`;?p=$9b={N-1FD({p7u2wH^k8s$@xZ;o{Dke&gT&(@Cse`Sd6M=9m8J
z{@t5jzxUP@aD>jy(&wK3$Y(zC%Fg+<_Z}R5`;DK@<IFQP)7|;0tdtjCc=|)f)7@uB
zH;(sjM<R<hgz8gI|KdlVdga!QpG@ZP;B*1f&RPG(SN}ta_Tq;|AAI)WuYTs^dwWM;
zpG?{i1i3Q!<kf2*yL5R`!%y!WRm07;T^Q0^@7!J-9=~_<{(J8q?-b*iH1}d^0TsA#
zu2O$#ZL1*feIW9Rkw7KJ_0bBn>Du}h#`OB}{*2JfuB@zFf8uI=*lt#9x8J=tTp72`
zQB@8dkz+f2aHMrJD8gVNOOPfzcTK<Y%t!v=Z~fNIAAPTxoj&)uFZ}c0``T=>5W{BC
zURv9D@ySaU&#nFG4}S3GWCDmIvXh(l-+uGWmAU-AU;WA#e(68^$@jnawQv2PIXN8<
zstWKtyXUWe;LUpvzWLzxfg}eMV~nXqc8Gu~Oll&cBA^IlkUAD_j*Vt)lq5|tk8ad*
zeh3XD^X79$mx#OMF`0I9i@dmz%z{=xLNaKPm?$B#sj(v@mY7nCl!e7A07}HU_N|bG
z!(F(>cZi}k_Fq{<0E|SOB&h+2sm2`SYTDK@BVye&gdmbK!?cZQxmb+Hqq3-C5@1|e
zTRA?Niij~WK+It!15$9lPyj$~nlxX`40t#mI`+%DY3epVJnGnba^vyJ>e{Mzt}Fu}
z?H?X57H!jJzne8p(_IbO5s@Txj@!14Ni)>U0U982E--gW1|(L~D4I7@3TEiZg~enk
z#H-s|&1{|)OKk-iRD?)7roJc=&W|UP`}?Eq&9J(XSq*Jdk4!<OUe2ep8KU>T2)@on
z%d9rZZ-O1Jp$8y$iYMp@FFjj|9-95Y@Sy{un>nj#@ZM!1w3?*kh(h2Z;IN=^!4BoZ
z#>%(~!;;5C_teu@9=p1;wJ}&(8#(Xmy6)?3NJL2lh<tGCYvaooFC0$h7q48oeEBjv
zZj%^bjE$s}vvEWuDFM>@#_CHeFV^)kGiQj2h+-5(6p1nBc>{ncA#SX%t-kbP+cqMJ
z0Fa%e>>v<!3TAm);+O&S-1gS`Cx0=<CP`9BgJEd^rUD`eC@BG=vLIqng)3LDT)1$q
zZWb!S4%oR)ldEa~Opr_Jh`6!2{=w%yxR@_Ql8CHttc`|aW(HF=0R=FbOimDSG#s8k
zzcUz?W(h1-Rh7SneD?aRnkjst2%B3Q&M@O}CEqV|^&5dYFA(!1ZpD7HY)Ju8Ohx(=
z%L4@aS#nC(?CtjFMg))8+P#qr{oD)yvik=KFiCa;Lyu5KA~npgyuQPy{hnG)QfH;>
zVhIF>V&;SI-I=|3#}q(KI!MGr`2eDsL&pva>%9@V@GPlS5jv|VBLXr4t1&WrW=R>?
zpR*d>U>v~+4J2Reb9|2>6D`32F?oFJbgwaKVhb%jxqUu1(~~A`xzW2f?q1j)tgl>r
z?X@2XTUGeuJG;9_vvaE#nq{PsUD-Z=JbM@G<kdEZgO|@gd1bV+Rh&L~?b$mg2a82(
zkSr8`{{3(L_CHy9?%Ah5^|@a-J~^ppGaNZ=Qc$?Qaq;-xaZ}so*46RK;O>K)05*^D
zo3DPqna$XbKJwuwpS<?+mtOhM5C7$jI>iBn%PZ$zdiMDjUjBtf+Vyjn*Y6#!k5(3q
zym#y1N3Xrhyz|LVeeq!b<_niEzWVN4R1^i3n>709GoRdA*}3m`pMCBZrt=fjWdU*j
zv~K6i-NWzR-{1fICtiB-$xGk<=3&AB00VR{Klkzq@tt>1o7AkYoZmmX7fRYYobTSe
z>xt)+#YaB=%1ak7{x4tszl8|MN_C}{&p-3xg9m%ddbzcA(K{_YU}}im(b4fJ6d!%;
z%K6RB-}&(yg#L>k|M=`=YFp#Ce|qQQm8bXi?+pg4)gTTEU)PI+qoc)av9Y@H^2O_~
z?cRKMITgp0+RuITmB$~u28VaAf9$V*@732{f9tj{2AHDf07?Pr!_Qp%wJ-mb-}>+V
z$Gw>T?qC0nkA3Xv|LK4DpMUGG|K=yY^rfG?`g>14^W+=v?+*uq!FW6>==z28AHKNt
zvFley-zopkAAXkz7xQ_uSc3U&KU`Z|sZXYX87!H`?wXb}6Uy4*3$OzXfp%2a&T8A+
zpa6gvwCm7i<aLVKBq1WvA$P(@Bm+cM!tNW&z$)4_tw==cY<+<F5Je<1?C!pZ?7dfJ
z5n0Zcrl|woVAf&fg&Uh8QjU_MbIyqBx?Rj?lpnrm*%JkZi$x22$6}ynM0aym4pnE<
zS!`<rB?Ogp@BV}Q)Nno|H6nL#bb?6U`?9JSVLqR>&4ST-zp4>sB@Bx(a{<K6#LU5a
zQ<+UqJNQ&4gLQpN>d__)fGSp2B@wnMwN0Z*q?3!77%yX*&X%<*mtpPvPBUFd6Bn~7
zixWvd6H^sAy0=?xtZfAEh9Si`J2{!2Oed4m)5&3AbRi5^*4TxUljAs@o5uWuO)A-G
z*h6w3N^&z-#*EYyK>M^_muT&U$K68BbpR4U1T-xid8Wd_xWEgWgNxgPa~s8_b8Eq4
z2!4HiZD(g=YkM_#r`i6PQI1ILSQZNrjm^^3t*x$(S4OI^m@h=dq3_VZoxxL6iqvV@
zF~$UHS;U+DRHo*bkx=u69x<iloTGfs13Txu_tq&;OwEwgH0FT1T0&#zyblggiom@f
z&D22iPEiHG5ICjiy<?)$Xb4atuH}`fnf26ufh?mW0V2n)Dys|UFJuJa8PcRv?@1Cf
zU^7KkbDl0;y0DYB3=(!APFA!0Cm<@^<sgs&E?n4g*0CkEJIuiVO^px=9|~r&E-2MO
zKp<xdC~tQKa*W#)iJjwK>DpoZ5zI8HL<Ez3za~H+1wiyf4^Q_#2d{`~mhw*5RKbwJ
z12Qu7sx^Z%;j5}jWCWs4L8@v9Bv6z*&MH&v17>;EVHyoAm%3Dyi4jQ=e6RiKYk&P;
z76C}q45a($0|^v`AHbOv8$e7A3^bXv0G-G<XZBRguyCR1QXh=R&2m?k*@MUuuAMtK
zTRiY#z{pM8{?6}yqgvn8w*2<1-x#h`14mSBJ$~(@AA05jFOGicE1&<v|Neh(77a1B
z(<KSK`}R+7%HqP654L>!55M-EvM4>e(|Gf@|JQ%KwQ>H=gTMXYc=zbwV1IX}o=PrX
zc=4tA-t4_MAN<mne{H@zx$)jjW}A!NxPAD-GuJ2o4`FZiWZ8Ay>8)Y!bIzUe<~-Dd
zssaiC0g#wDQ&LNmNDXeaT5`*F*zIuG(SESs><Iq@c69jB;fU@I%W_+7cZZ~qnrxAx
zD1o!Y5d;W;m<vFmP-9kRR!(<1!`^ExKkRd}itLUso`6DCR^_dG&)$3O-|zbl$6G7C
z^6<vlwT_lkQa*G3%&Cntt7{vs=)Lrl>t(aBw>Keea7O>~kH6E+iqPD6>WNERtDTjV
z3;6YKG8jnAy4iylAAIV`C(3G4*5|(ay>Io44ud<M&2rbT%)R>h?d4wg;saam?_Omx
zM)&l?pXd%Q?d?w%R#yiV@9rK>Mv<YeWctw7%3{BBxIg{x{)hju!RlXq`72WcuWWVp
zkN@lcJ~VZ=xAo#nFCcc_zw%a*k<;e5Q!MuL-QC^K{?bPtcKGENUuhh?{POF4-~Y@f
zKmFi^Pu#e9?e6|@Q;%<NU-J&oG-D#c)w8Sr=r?}t&cFHB+d8WRGofxL|KZoa`t+xt
ze*LvKzw-50gqG5PMb)-%AL!BHKmNVXKl0c!zw@h~`@g>WTx0gF=e~LA)FZ#}x!;={
z@0|P4<1hX2&F{bX&feaX56jq;%NqWx-~Z%bxc<UVUq6ePCpHyqq9^?HvroVL)1QLb
zXf$f-%I8^n)~cAH12RNX1?FVpGL@!XmQqO{sb$m~SrW3e0Z9-wQ2`AE#(=6q%%Dkn
z2}lW9mGEAPXkAB%XhQRZTzY_uh_&9ZHsF&Ak%lCyB8mvyI?vltk^-4TL`!pKB2GC?
zHBB3dv_=A86h%ZN2k3wtu`@72c3Dx^b$h&S^-2mrF)9#7RYad;9%du}Q6cF)(*uy&
z1}P;(W7ISyAfh%JN$i@sYD1mv)Cw%YAIL;33BRHU0|QWq8k)dNrVx!rRa{u!gnCbd
z5UT5U7dF<8cka^6u@_dhXbHhb0B9Iy)#%RNV0FcJ2B9u@Ztac6<H>joXv@n>-EJq#
zyUyndG?`V}G-)~Ic}UJw)riw2d7DsamGv>Sf9(LkMECY;?Jf$4&^u01SSE5zjFuCu
z4D;22|IkA#r`G+2^P3C(eqQ7NkY#Q#==XYE1Bfv&Q&AL6(}+Y-2qB2X%rkQyRYfF3
zJ2*UC8;u4717rh0g0%F4p+OQk8v+JtY_6yRwKP&`T|(&w(9AI<(xJxop1WQC%+fMu
z^JE$#bh|xOjZyLB_-}K=TB~+Rx8_1by<Vqjnh@rbT96ZIDYW<H2_$9YsOaS7tenRl
z;XaEfASL-yvKg`Wo)Cj6B=Q%u;|WS&$Al*_CE^rzCL@Q5)=Y>fAVETGa~$TF`JS`*
zXHeY+sObo7$)B1^$c`{cspmmh)#MBo(b_rJhNF=HoOhnMB?7jFrWC|cK@_ks|91j2
zRhJi83l@R7g`wT<E25z(T2zs$ZU}RiXY71?AV-{IYf?BYaGK_51W;2FCC-XG@5Gc8
zO?JGwrwYLcqiTdUAO?!wuqC9NjOGbJApN=s&>HTj1sixZ&9V%U3_%HZj`xo-G@&7)
zJ{DWUg=^Q|Jp15<_pe<0FF*S^EuYvp|DYL{W!&Gt3tG7@UApwpXFvP&m;U5m{Lvr%
zAK!iVR?K^*JU$*}-R|`dK4>PhO;>h%E4}Vgr_(bLfV$&cT^;<3fBwI1oZY;8d>|RA
zfH->hz4r<kJn@l_eeQF=vbNE?edpG@@4a@sI~f@q9XID6yku4mhrRc{`|iP{RA2n`
zt+zh=)Mxs=h3oI!7!1#S>X$zE!Ye;L*xlYP%fo~6@rx_{Za2#QWOV24>xa?+sF2`e
zPhIL11`yWPSD$<Cs|)>APg4w|aTy<c{E6k^!ULO|8{Kky=N1Y$F$8$xiBJ66=YMm2
zTrMtjzx|yb-nemVZS7QSj^h-#)0<UQRgK?x<;Pd9zFZ~zGthtWpZqt^eEicdzVO=m
znXQLr@WK!OHa6Udh?;f%+S;bp;~TfOYYqSm#&5lI?RP)_+rRl+e}6W!|ML(2aB1n(
zbS4YK5~T!fEY@o)>xak3U-;q|Kl$v(UjOFTAeblj)xY`1-+St@$3~Z4c=4(qo*zv7
zZ2BYb$RS2R;=$gL&sQE^9`-5k{7?V$|N4nXFZ{~Wznu3M$9La#{e?RR*>LqD)4Lj@
zXMXqH8@qRIcZ&St+4T?ao!1x-%Bcyc=yTuyTVPuA{f=`G8*?*2Z|1}p35Y!awJkfK
z7^6xc5JQ>M+>@jw<r-2UhY@J5<}`^7nlL5Bar%@J0LG}~=VYz9&d5|%B9P7Z)R6eB
zYG_E_XN1l)f!G0wExA}sMduYWL<Iz71!QJJN{>Kh$IPLw0V8Mv$02~JD6#`H0mwO1
zU;-j`ZMZ0r6XpO4Ot>XM0YY}3oFPX^YI6poC=H?B3u6ESYE(7!NW{q6UJDW+sR%#>
z)7CMXj4Oy56I?7a2It6-0YL@Sz{HvWwNiI+W3aS!JZ)q$CQ{Bb>J>AK<Q-{Xmw|yu
zT2oR@115V%qdU8<Kd2fVkB^TI4=0mJ-84<8w>GzWy>6c8v$70PLWrpZs&i8iA~Lm1
z6@qr=ke<xmal7rJIfB1cAkHr%5d6HCntSIRYpj?0{`C6b!q)JS2bb5DX=8J-*XwtR
zLPX6VFEVrth?(~Qz)@0ATtt{zRQK*4#^|o!n7;YWwcWc%?DWi;&EY~{+e(X?VN^mu
zK{VAOFPNZFl^7E)GtEC3ytOS*GC=2?N_5^QH<)SKBBr>QB_h^5Y=&S^*A=tF*3OwM
z<|n#dO{5NN&5|~qO*xs7B&{InO`kd(korRH&{wUh>U)~0HVb5_WNY_jpdjg1?zL{9
zO-%xt0aH@hwo3MN5o2af%?N>r9NF>Fcyv4l0%kJpKlJcwd)CAg5nQ|Y6KPY2!-K;h
zv8n6K50+Mng=CCRtNqEEjp)709L>t|cr*f4ats((du!OvjxCi*<~cQF2KH_`9wz{|
zS`}5hgN=FQ3r-YcDv`j53@l2lnx+X&KvLudLbCgwCYahWt)f;<f~ka9hb9u`1uuvy
zk((oLkPs!|X3!9$NEs!>(0~z8r#o2iJ{Q$AWL8ydZw}N<5F?}MTq&pu-gWZ4XvETe
z&aKg1^K1dYU>Ukg{rm?zH{RR+V5QDx_3R@be(Z-Yz2S%p-?{j}#ZZmzl<$1aM^y0u
z03ZNKL_t*Jxqo-{?XQ-Hm%sn|_3>~aMpd8~!w+8g;j^b76t)*%eC4r^JdyeS%F>2o
z*x%dvhrj(>fA!_RIG)Vje)nwvlMsP1LU{j!4}S5<U;g-$&ph+Y124Vw=2K69{JnSI
zT3OwUlbu;3w{G8f<IOi-eRK5B{>@(sc1%o_o`3nJPhNWT)R~93PMz5sPfnk?NNS-P
z)sxZk#--o?2cKD6x&7ulKmE7QeZPrbLL(yI`@wg%HaGwFJKuiu%_~9Z*^mChi$D77
z99&U!506Hl|JBbst$y=!&-~N><)20|ZGwvZ;-{ZH|G+u~1q9PdLHhmS@!`~G#lhhi
zo5>)jZ~x7gwkLHJERvwaot^i;_4O~$N-xTfKK8LQo2S3{r+-+NM;=0vcRSq$muH{-
z^?&%Kzxg7X14Zw$k39M8#S0gr()#A<qB~sPIP=PjL7U@hc5Hz*HZ~^5M<4s-vv<cc
z4F(7yXas*SvsW(Pt$1zY)aK<Y*B1wC1~r3vz=t1s<j%FX@4WG~ojW%}0AT<A&Hax*
zG6LO&=IHXPQ}s&%Ia;2v2Pp}=@4kD@gD~jbot@>aGe@EHA}AO^Gt6?pZst&<No^ot
z8Bnff0A!k&eqct1s4AwlK|Bd+fsvw9%$QyB-=ze8D&mSnh9Ihd2IN}*3p#|Xl{K{j
zVsfs%*#%Q<)zk^ffJUCZV|IX~C!ZHWH8pLhMG>i{pdui-9K9pvwA2Bn+ho_6YHSGF
z{1~>jZ&3x{3{&7c{U|X2iHIdO^*nD$Oh8W1)0~H907UFuR>4$NL?f6nr+YHdM9lzo
z?e!I!Q93Rdm`S{UQ*B0oEQ$&QjAX2eY$^NWL##zXv6J<dvd++e62{!nl=S-UPLpvL
z3ZGa(>e46>O(Osxl+)?{jcxArL(!Xzj}H$IMx)VmHl3Bzs;V|NHaeZo{{H@GJk}_h
zw*Ho|;dXzmXx>SKlWJ&-4C5qz1D<zvPIB^beky4yWJWZRz)fB4-`zbrURoIzON%?*
zUOwpcGVjW=@{WhYJ~3q817M7jWgdw{Vrs68M%DG(qwha|`N{{o$&H~Zbv+|uRZDPk
zwM2^Is3tBV0)Yl;01U~@l#C@rXmKrM$chjIVeax(2`T{)9XsUq&JqA50m<3L7#(xk
zWJqYJrL3p-ESX5UNoU6=@LD2@7R&?_iUN@U#S~g57&7_f;$h}U9Ai|Kw(O$N3dJ}T
z<|2bLv*E(RbUGVPQu<gE7JWWUB{NO?<hkJr-8{pcz{ppR$72LV%vRSf`Yc7X=F!X6
z{s%|~ChxuX&f&q);n6`=R!zu%`*;3RV!ZF|o3<B{%q>kQUw-+85Td1^Gp>Ga>%qCH
z+pO&ygQ^fCGwp0&yR*G}JUSAIX0GU-KXvwz`7V48&jh1Z=hp1+-MM}HPKcqLO{<D8
zUi!r9#<{kyezMPRU1lU&9v<u+>>usi*;bRx4OZ5hr$2rwoq+GVTuG=)9ZwFoZ{3_t
zXIDRXzt`<Aubg}2v6bGS{TQf<fwakgH6kF2$A^d0Sw#d@St0fMgEPg#daCqC(07jR
zL@*?l7%nYu<tXpm`rzi|aDS@*?{k0g^o0+<`tqySuDri}Yx~sJX5j%W9*nnt<Dtht
z@{vzn`{zgdyC@1Vh@idx!8>tM`^e|dT)1)L+RF0MxpQZZ5BH88eDC{zcWdV+<*pG4
zDn<%QQDRk2j%NGB@z(bKi!Z$~n~j!Nm#0U!vq4upOh$L#eCze^yz<(<xhSHB&ft~H
zZ$9_^@87vQ`|aQRy$`Nld-kIr{c$;oP4D{TxYzaDH-B>e%=-6#^4d`Yh{%9|*o5-0
zzWRmXV0AK<hadfTzrVD;x@pa!<XKZyO*3;m{oda`_m#i>Zp{0l$bkRui+}ds>#uix
zuQ%v_?VH~`^T3%qH?KSAV&LOx7<yRSSeglb=hbV`<)T7rFTM1=U-;xFUi`^B4?gs<
z7#_I2eeKNIGke=O9qsNP99+-f@BjL*Y@K`X`5(V60%CDgHZQ#R(y#pT?XA=2);6{l
zRyNOFJimAQ%J%iC)G;>A&Yits$6vmD`MKwR99*V=rnJ3({0MY6A9_XyWq+`C_h?c#
z<<9M^v+;h;_~~Ex*e4!a+1b9ny0ICWmyF&1wEFQ+UwQr;f4Otx>NsrVYadx%KmE|9
zNB4JbXoGRG`{qyI`Pe6a?Nd*j|7ZX9o1@7z#Oi`%pMB~R>l@40k4G=P{x&8{fkXur
z(JapmDcN#8wJ1SHPQXkf(_BQ4rYYQtXbO^$r~pJ9C9#3TEMnVpkAMou0A}P)I72O@
zDOKbpI!I>HHiq3&=a5Ac+8tY|A+nmOL_{@-V91PSO61rPup@S8ZTU9+J_f1s8xa8n
z4HE^zN72j^0Gb%IZU}J95kNwdoJ(mJE<m7S%*JMbi5HMw8$gIn00^mglE$%SsNjqo
zA|tZ4u?{BZnkE1=jBze>G&53gKp8uBK1Xm07z7X)*+-)YoOKq!cMK?s03ZOH$*ih&
z_xCw-E^}a*kg=o+5YtUTjKU1Zdk21SCv>|92M43kxUL&SoKB}zRZS+7q9~4zj>@t`
zvpKsOKxF<DhLdF&(eT800g%311_DTHKOv@D*!JwC?V%^JrHl#dnn%;JV7z&I;sKd}
z5V{?oHeq1qJrNoc0BD|hB4mfoyI!w{NTYGMy?3;8ccco#g?wqb=NzTz4-%<}0jm*^
zO9s2Do^^6>)~GgMkpP&;B!B@RixDET%S=g<Q;rBy1P{`9Sxl+Dfdv9!0|3fEHNQ{+
z0jtasSyU{Ae+eKlEI|QO5y+wDMmm2nkXm+mY=zS)0i<e5Nd6@D1TESLqnT;ogjr4R
z`4|ly5~sd<QX(RNikL;7UxAn+B8w=xjJUOAc<)?$FUhdCe-H&6u^PpQ=g(h&xiacx
z5It`-a8t+0WEw?!-9AEIbOtM{EAumYqE}m*;wB8|{{CSMlDwQ|+4{!WJTLC&>S;1{
zV8X8Ht(!Lupem<~?0kP~>#PFsyy<8LrXXU(#0baxcX#gGK0MeLi4wJLIzd6w=Kh58
zp2#3zp7HM8yW6*Kjz(i*L)G!5Tt8j3xrX#=0RW<?8DP_tw{Be9*}3i56UumW5Mt-l
z1NBmJykQGs1yw@>0yG7amtTHS)OPM{mt|d+{_p+je|+xY$753?Vj%gTIt&_-fRQe)
zo<5o$zq)r@$)=t7r|*6DTd)6k!!N~V)?HaREJrYFrn6Dy;(<*Dr`Ik%aq;F)4{sfg
z8Ck`q(!8~EeKjBMy>`IFE6d9+gYDhzQ8~S_eWO7DQSqLlMg>$7mBVKI-5-AU-PbSw
z)n9+5szSGyO{Pa8&9KwGv%B{n{rX35?p&iYL%enjm7$@E9>&=hzVY17-tmpSy?5Tf
zHkwWW#8fVv+nOA`%dr0bmHnEV{$gh~5&|@YCWgsu7Q!wn-@5U3uS;M8hU4+5sVc&H
z+}!+=uY7yf?Z(E8%|O5W^)Fnx@_Mfr9v#d^<Jrck&FSpOOsCUHFN5=!9=Pz}1OM_1
z-<(pGnrw!+y}NVc_Kl(g*RQ>Hd*^yAD{0EIoHkA6IgX~Izx>+Qzx>?SU*Fvpa)~kX
zcR&2@FZ}3xj{DDj{jau8pKZ$NY&zcG+YQYucNStrzH|Bd-V8HU0U%Sla^w1w9~no8
zSFc^Ub>qiDl^H{bgt#>5esJ~8uJjhyR{!*`zYSn9hLPCio43F6)o=ZS&;8QnAH2QR
zd!XCt^n2Y&=B0}N*?<1o-}>bzPCtC{#h2f?JD!}YE0Xe`{QhtM@~561jYi-2$!jLj
zOdV6Y{%QqnL~7<Ky^+Zb=9ppxRF!BzV1nR$P5{*Q`sYBO#4=2Uctn}EEQDHpIn9eL
za1u}?BvVxs!qiP_SsH2JW(umtY4IhVckUHblHeFX6;vgFMCViga?aXoFNRP=5QP|x
zQnDA##Br7~Qv~V4j1sv+O~E9YA1T#a!PF=X+gj^(%M&3^oE$T-sAg(tQB~3T9($h*
zRD@)$C(k2NsH1W6$E7ey1O!oXh-m_#0?F|K<f}?4%LNG}vP7sMXxi}L(cvgY>Gr$p
z%d4YXJ5tp#MkOKQ#Jx5!QI#g#y>&YjMH!>S*o2U%L1kIaW-|atxK;y&lOwNzwH}$&
z5V85Lh)&wQ?Sbk(tpc@nxB35SlP=a0q!aYfb0lU$MnnWAJ_-O3nTd#79(B?&I*l<h
zu|b1af??f+>1-C7rc-1-%X-~T=ADWVw#%fN0(wXjZ2&_SNwpIb6^kZ>npnvo04yNM
zU#X_S6n&;<2pVG~wz*Zet(vGsKyTdAnVjpSEocaWEP!e{Z@~hK7_kFziE_$BfFLoN
zh13sCM@$1U@G23BnVhNt2s2B%+=&ekAY#-&L@H`zjEqPkG9Hh!Jj*f{8!$7`K&pUA
zq#Z@ULr(2zDjD`%vbUOZ{l#Snb&O(;v*nfL`Qg;=#oAN+jXKAp$#8LV&^HCF>$tLZ
z$`@HX7S^b$F-8?5bi^H`IGQ$f01;&FC=?HzznBPK>3x%;*QyA>L{K+%9Y`gb<w02?
zKX>7LvZbErwM7kql0&U5L#I2en;nTdE910kR@T>`6_>Z~R8^3uM2r-hIwECtEli~1
zrX_5iJ|n3-hbQ2U_S($M^1R5hqAX{fqC1vyRz-F`@o7^zsl}M9i6}@o+}|bQ<Iz!;
z<%qdKwz9fW*R>G<;!K<EIBP7bDu|s~UmK5S&phz-gJMBMW)07@Yp!$Fvj9qP4CC=J
zs*Iug?H|$k3%_B-_U)bh(X^UP%Q{3;EobH7Z03ND>e=P%ADG6vE<+4eXtF%_-YpJ?
z<MFg?s^o+pSCe{H-`TmnxwgK!v3B*^yE)2Th;=#rgFpVt^11Fup8ar;+wWgHoXl!N
zLZF@5<cr^W?)>Yo4Z3|bD6(9`tmDEPZ|{8K$u3gy%*P+S_1){Ex-LsI0}-p5P}Pxv
zgI>LP>%AP*V>E5l!k_=e7mM{8wt9=D?c6v_D7eMtrN*k!o$=A(lsUih-rJ@Dr12il
zK5)7i^nY@Bd&(Y}sI@Hc=IPDKV%5}pyLT@>v|tX8_K%(CrPalawS{szxw><w1c<FI
z0HR6*^_QRfLQ~@2-of$suv=u+_^2%FK`-0fTwYx0zkBulgHYB9^@C<0dB^P?-~O{N
z{OOHrhviIn_YTV0acpKDb#-l_-{;HM_y6dB|9|Sd*QgpoR2|pl*7>bTRidMB{PmY^
z?Ux}`pzzsWeDuHlC%^mNJ8yjPkN^1p{_@|=6g+e0J3n~-<@Z0h;d{m3y!2AhUntA!
zjW^$}%gSfDihJ_u&t(0y0Mfk!QJe9wYu9h??e4M95VYSLu<M+?@F=>B;2!_RwPYy+
zksCL!#}Gr5Joiklx3IXn-c77Jn3HBwCBf9nX4cfRDCQh9ks4>&U}1S7ia2LDx0w<m
z6DyKRh#IOop>9o-7FRn-$&{kgX-L?nkclPMt@t*zlTGtpFG$QdC!T-a0opuD>U^pS
zs$*`s{GLozMA)&VD@UfZPKv0RG%=(_OB9^zfmsaV(p_k4^WcPMG_|sxGG~McpoXNx
zQ6fOY2}~r$fCg;HnADI&2A1emL{4IJ>(*@mT;Et9E-hOf!=!BLMpc+4-ByVzff7+Q
zo=PK}`xxq`t~1O5Fvd7HI^5$IrTkIax(Le8I*ZJbLK`7QNo!5GPrdMS4Dpi(`Fv5g
zBraqkO1?azxh@V`Yas!(20HMLlOP?fO|Xh;Xaa*RW_c&~y<R7C8O|M$W(FFY*dS*K
zL~0E>&JncrQIkP5Y<W^i!D#^-CIi5zl7<&4`Q-r|BUl7Tbyfv%MD5}MXc}UR7D3Z=
z%D2?OGBZP$t4aug5JL#5H=Hhd(<sx_h{*t>s>`~LIgv}uC>89XvHM2;peE4PTJgTW
z6m!nEVJ<LBwgOEZ?zTz@U@=DTz3cb;=_B;;rN>iHtWEDSTdO)ra7XgKy~ant)wRyj
z%IWq}7MUH-<MD~bm}qbemYE3voIC&F%~OwfUm!VVS9H5(Cs#ZWqW~B&<y0U+UFnCP
z`o*fOQ~|){MK8+>00p3X>{&wgo{7w|<+Y13guJ_@hEdSvz4eU^NLOa6mg>_IhzKl4
z;JmZGy1rO+H;7z}bg8?ty0+4ut<@COL`0%05M@PYXf*8h!R28(oeeS*>#VG;&3#u8
zC8`FEAp{}JC>tD)ZE^Wr*<^@yf4I2Bz2)^)OWl4)cgIJEQbmnoY9VIJd8PXK&-_MI
z(kM}t4Lx#(lp7YF2`$7XBQ7)!oFU59y}eP{0Oe7k3}ITAv)OENd^|cj4o!_oSFN$B
zo6+&{{=wnGVDX`cJ_LxJZa2%a(1fa-jSde-#|M+qL98dA{KPZ;PN5n>qj%WNZMEBf
z?AJcNKaNL}vW`|()!yFS@n}@fD)Syy1;g_CkR?zDH%~wK%B#;Gjo`6MPd)f>e`jaE
zsYL~*Re5x9TvgSiDl?)G8zgh2WO#e~_L}9VF0I##*c_Vk-EOzr>2ef$=YyL~qn-&t
zJp)QT=(tzkc>DRLiQu5f2tg6oR@OF7t%tgP{f&1H_e-X1^y*6t%m@Wpzvr&qxLr51
zN~9)JLXl_y51c*IA9UY%>$UyeDVQ4!mNW0QseD0Or`AJVzJ29NK$wMy#9qZ9o;|a+
zvA%SB=gyCxe<O24LRU92)D@#FuMVpa{^U#F9tWAZevHaU(PU|{_uxYthf@CebKgB0
z+m)L~f}MI+TQh#((zAd4_3u6R%^&{YjrVNO6QH$~ji(;J_y=G3^Y7icQ4w@|eW=5<
zEZ=?Y-O<6(;>y~>aP5gFMMa2R>&ia4{4*4>H{ZCtySu%!vzKLlI2@k8@W`pN4>4)F
z5V`L$Z3wu#clXE7|9Cbl$K&yEIP7#fTc^)`YUK>N`=-Ny>G%Q&+uJ)o`qB5NlM(^?
zgP!-rXMgp#dZO$yW+qG&yu@)OG<@~-H(q|_#o46vS+=sWI9y!)?B{-ylJj^TSfzOr
zV>T<l^X+f#AMA%F_It&`aB$(`LytcGG__tLn&(1Vd*GeB`>($IVp)|)*2#0n{=-i_
zyS&kBIZG-3jfmuYmQ4(<ynpTTJ8uG5o)?*SXU?2C_rL(XriM}4UZu#Z&+?`mzy8{r
zhevzP`6A1m<E_)D7M8ah_Xq&d2qB6_)uxH$ya76P0w@Mi)p-xdbrVO&V?-D%4wb35
zyx5Fq&17b+h!<iE=^QM{SXfu4QA0(X+*8(akMF}g-K+ARXpQbe45ef3J%j2=R40uw
z(zmI4-{2aojmW0TB}9>y#}FkQcH0VRnjnT~t#r-q$N8mogoy|(W9oK%x8u4Ux4OKn
zs!iFn#E%pl12dHrf;FTN&^b>0Y6No5rR&HLqJjCWh!QnQ(mBLXr<0;*L=-%kX@;nP
z>|BfiQ<E-Y=6u?wA&|uAGp8!a&)7!Sq8J$=I&hk#!*hTMptX(+05(Lx7$dVg`K}$i
z1}R202+p~AybFxlQInZPi8=brd*>Wz&}d8mD%M8RK_mir0Ai*PqMH+u+wE0bvxWB4
z(h4W%utwLSmBD$hZEFfnKICcOoIY&x*BwAT0Q!Zl&OfQG%qV?*LXq}Pi##DH0xk@5
zMATO8kh0tDo2HFvAu$=5S6~3&A9l@Puyl$jJw*tK3{6tCPsKpl`NSnR)y-26wI(<6
z04b}5>2U*QDk2h-A<C2h@(T|=$%Lt{p+?SSh@_hSfbEH20ld!uyjgMa($i-4=!a3n
zm@`8vI-T^faE$NnTyH>wMo|G5|KMBysyk~?kjz3Ipb@9+qjk`GLr;`D770$ZOZ=P9
zJXYlLr(b)4e3tu;DV8AwGeB&bFddIXqKTq`a}0=OSx!UAO?KnX^@YKZT-q>*^VDDJ
zn-}mw#SaI)u5*mgVeaI<!%%dJytmw4E>1fa0VmUX`}UoKqr)Q09ileXVz1~I9LuRR
z({H@|0mxD@7(RLS;lbKgFbqM))9UzmeD~mZR+dLchq0=lnqD})x{!0m)GO$b2bb<1
z?;noy#ov9z6~jqWQmmH;>u+4SdF%G}?(VIlgWYC!aCUvEa9Cu%Zt5a0*ypb3EpBaf
z7Z!Sh{%qPzC(X?pcaM+9NHm*Fs_AHTF~?A%HOtGxoxQt22*ljU*EcuW^Zx$v>Ox#x
zI2w;;AxcnDkj13|W$x02hbM2m0ZnsZafpOfJw1JHz0-4dZtvf^u@8_>CVOVcE|VBh
z!ro!r+uvr7ZPWx1&>nu^^r>?z)5-V`|Mg!sQ$m*!7Myo6YR>v6U-{l-yni%3{)JC|
z^zkPidik|0r#Ck?H&%O{UOA0{N$aqb7n$!O=TTUcM6uPhnIS5m05E__s@eb>koVm@
z?{)j#EGt9}nbL*X2`hI#azvjMKI??hY*seQD>=Jdv>iXE)YJT?2|@@+oaG(oGUk9p
zKI?k+O^^i8$N3~P!MB(&sEJzPJ5wzehfA5yz)Zv>3Q!<p0yI@}oIns@7-EzVX0zGC
zLVq@^_79E>kr6dUm%BMl0Mdckdw+Cv)HGFp&~HLih1qPnVr>Mny#Sjts<W&>^mlIW
z6}js#^k;~}#pOCQT!_DqA)IX1hzRKR_ea-0xZdq{di{=f+#L-2%WaiQ%u+?Q-J2t6
zD?;Fevrtv%vKu>hLkO#Di*2Z^S6DaWqM#_=EWrU=imkSGb=8{Cyk`SUu~Yc}`{(56
zoR}3(?g!^PwE53$2l4HR9_PlJ*05mno_WFnwmCaH88zNZ1Arl-0znIVH<`PN8I93;
zy{tFzOUr|uo!uKZZZH|5WqG!-v9Y?k0stn#h(MK)G$If(b6q!YUb$M=HG=i}-9f*<
zb^26nLJ(n>iL@m#X2*o(th)TpdohMA^Lg%u!{OrclEnsq43pP}>bmmYdGGJ;-Mw>X
zr><+CIqz|0Woco!L}^V3Xv}KrnE?b5XR~_$?w*?X%xB(rdquZ9RE^q7Hrx0RfHCu^
z3X{okmUEWnndhP?q6ysBebOjdmStH6635dCLNw4K%M6nADFTEveh{G~&O}JC7D$)S
zI8Qypz38(+%f>v}U;(vBM?&Yw3?ynD<H?&tMUsiM%{T%Ynx?C7LNid+5X4MGH6_dw
zMJsJfQ{`U)P$9j#stP#gxrnwkuQ_cBkR@I0v|GV6Ax@}B29x_{GL(9UYArxZ=g^P)
zlHLf)NMxW)2!>3g2s~G-ipdGOvfYg)RGnFty95JqKmhmH`2Z$hm-lZ)6fseY=Irgb
z4;Vlii()ZCj8+F~1RH@UD1vGd8jQkfvvBk3wfA40=~8E5;5%A3<I&`BHk&8FQrFX3
zb#t1%0NU;~d=G|$g>IHZkmJLnS|X$}B^i-snG0p*Oxd90{n=An+uPf<S}_<bE)9wB
zVDISoa3X4sImQMp=B*oB&~(`C<XLuja5P+a{_$s?noOs4j7`w0mM8#3A%v!?h6|ly
za`%H9``o~waH<>Vbb0mCYp=Z~u0T)g3z-Ymt)1;jU705>pwl1JnZ*!9)MdaOpXWJy
zpJ!R9n~-Ud_v^YQf4sQ9ibRX6E6(ZaLJncdTKBu1v**ttyR7h><$1RUoQcA8+T7aS
zJv<(ZQWI*_(0A5j>E!-1zxb(Mw>KDcowKqYS4|yiU0*o!@I~7{n(XWy=S7jmWtT3V
zUteCx95_NS=;TF|YBD{@3kWeDAC+fT9@;ycUB9y@ipnl0+FV~*>=&Jk37SVPY<%q5
zCr5|Psr9v;yGQTs-*v-5RR<sxqq+`f&Rslr?h&SJVR5PGbVVZ(8Bls#r+PiHlfdhn
zXNu0S=r1u*mStzpT_8-tJ5vj4Mh0qvV9vQL>nyFFQY^C0us2w6-VYX*+Y0~5`N<3c
zi@az+iej*|v?;n@<egLn3^BHvVN5gvmyn&Q?6b7A;<9d5ge>nmpP5kzp#w?)1Zo-q
zJea1?Hak9Z>P!rRlsT6%w`UF0h|Ylt7$pdoV?qECMRFl(;_V<&Rn@5<i=d#vkTDrh
z3Dls|>Gk@97=sx(=Or3KidP%ADJ4^71@Y{deV+BqJW>Xj8Pco{YA8uNWoT_-G9{?f
zycg5GbX}EsmLt;D_up63g@pkC1XDvis!PAn%|&Z7R6%wKL3RGP1|YM7$pFJVeS0!4
z{`c42pW_nVZ&|okm4SOogZ7qe9+|#ZC~enRNFdbvSpCo<RPbc=ZJFUoKr{bS&&wrd
z&bdz4_4|H#xwp2q+?371!G2wqL|~$2ISXOH>_yY#f{{@qATpwP=N)kaY6ewVIi_k>
z7M*Tl$3#;GMKQ{ABoI+YJSoQ#Lkw(Y-F}f}9cxeYK#Zz_=mF4x_V-6kJxy~`1ndtM
z5IHmzl5=QGPGVDZa+Nrnl{?$JV!=7`-ff;b)$J|-M2!fH03cDBFv~dBcK7c7ojbRf
z(R*H9T|RZ{6nQp_W}cZvLYggSS+;v;=j}J&(O70V_xj!SwY7!eqNykdxRm)fH>+zh
zL`;I!q&h>FxnxF+QDTfIfARBo&AcMp)`?r*ce=eec@MRx=ESc^HZ&qob<U-ecB}A{
z2&U4$i1T-tk%=LaqP2ntG_j<e6-)d8GXq7#`66e41PaJ7w}qT23ljsy;6$*M>T&JQ
zv-A#29*k5R0Dz=`YWqtqy`4_p^?;zFU<PPJsBQn-PS7F**s8P%5eX30q|)-e`an2I
zUQ*TD6ciksKwObXNzs8tfQTjr-hq;s{rT-{NNhc~AIk{1vA*I4E?Nnr001BWNkl<Z
zov^z*o=%fIEEUx3-ux+XP|?)JRx`WBg&z0a;lW|q)M<`s%ngF}G6iFV2)HBlHbwS)
z+>B#M%PWiB&4rShG&&pRgMKe3!tr?4G?gbVhQo4N*3z-%?z^`>xV^I@pkfvSL}66}
zBXW3HXQ4A34&ct^+iSfgx?wA81r6^0$(O$rT=D3K&VBwP=StZ9;#a=LS#f%6anQ}L
z+}sXL<A7Ksb1rk#?e=!|b`5z_)z0}C4ZsCSaKV(Q0R};gUiIRI3kUnV7aw^rFZ{v&
z=;n<b=W;+7MW$74z-cf?sAQo_mNOGT?%mqP;?i=rD2l7^-4@}dkw&F#Vim+W2M9%$
zvx9@ft^@6683FaWuG@ns)dyFPnn0o$6?cwC<EHe!gQ%D}@Fav(WJT7!eN_L=_kPL?
z%kSLUd-K}6W2ACclFtB84HgE&XFmF5<_c40=heU=5-KJ!swtRd&N<36PapsIC+B85
zO0_p2hb{X+!BivwC^L0?{Z8KbwO`##9|KK}+Z1R(R#Q(&_pU^c=UMK#Q*_RpeL!?>
zL`Ot&S&^s6Rj23znrUFhZnrn+_lCp8Cmw&QZt8ZUjo9t=6`d$J$KGd&*5e#43>OCd
zVr^}u3DHbr6jd#{-Mr``XO6w75fULdvQD1S!a{N3!ph1&GBfX7o@G@vTV7esJN;=D
zy)V)u#WZ;DGVgo6&bbH9{m$?FE&yhkbB;p{z5c*u9UxBVe`W*|N0jGzQ54U7^x3oL
z&mjU5g&2!&H_!V-nF0oh29%BsEj?e;L!S-o+ym!9^?Tp`Mpexg2F2piA|MjEqtQ`d
z>aQ$fl&UO~;$77Y!wKu20lZiRqKP18_V2H_cF(^2GsoZi*Xf`8&;Q^*C+dQGzY8JG
zNq+ZV56@R>w8UG(`}mfrR05!?K6C7F(9eg1{Os0R?kFO7CgEgAjODCs%BItE?V%e~
zGyrmF8bovnb5TvxA3sK!OvXj0NH@ofOh6VRs1Sg2&igDS+ErmP88_9Eb54~2)PYaL
z)?|h1cDozv8#ix!AW@a<_;@rv9`^?Qbks`1fx4;k+&gwf(djQNl+&@A#2`mU$4g5~
z&gDr4iO8vpkY^o4SY2Hm9UsS7nb~AAsp`6y<)$%)CZ(`rj0onKhYN$1<&`^kZb~o-
z(tbis9UFoIs2MtqX}+r`QD=4@PEJr}>H9g^Kw&$bZhKRyVxPKa>5!@-rgF05LQLUc
z1Tatr;*{2FBL*rGgP9?uh1-}N5vvLin6X*Xxu$z55EGGz>Aj!6M7qssL6;1~Nu1e!
z{q*!vN$c!A>FK<Y4Mu?N<{tsnR3w@Tg2h%NLFxNww|?z?R62?yfW{^OCR%!n^GZkr
zK!l|1R$xa8226*|<bW-n)UM17#K<7Q2s{Is0hy5z10y;E5s-A_4-ypxFhWgnKbBmL
zmV3js%?-M{H=0ewbWVm%7Yo#;bkbCUWWPD~1K%BXR(t;7?%rfJGcZhH7H-4(h<Iy!
zsGiecWN$LEj8;~bPCs;x2#Y-P-YqW;X61A|nn@HDl@O@kSva*00KHD<v2&YE6C}pE
zX>Q)QHJQ{VU`C^Ix}^*KelZyKUb}r~7rGD8a;2FS1pvCt9)0M{&dob{?zSFS`}kvL
zmj|nF{n-bG)_@_{%CI*WE-dtVV~p(FT2X*uXlgY;q{ZRl?(SYRF*PHQ7>Mvdr>7r(
z&@y-R#`e`)cL*~J0zhgCMrtze&=`VLQN2V5VSQo2I&xfBKYaO}aTye;b!3?Vq!qzz
zqI;u#2{oItG-oy!FJ9d2$NtUR`#*i_S|z~jktxKeND7FAOmz9y6*OTcGi684J0ygR
zYLDuOfm%TVqIWL!%8^J_TE;4<ga(+Q?cFBAE6qc#>FO%o6t_blRkIMBcZlk}7eT|M
zJ3T>baN4pVGcgg9h@=f`=A8(%U6i!bCTd%`$Oh2u_Po!g(<vh4-gk>7CNLX{$aFeO
zsHXIt8xW%NK1=ZxX6*Mmh<Rvg#DOCc)h0yeU2?D%MImNt>YT5tDtFAiyx3ZkrV<Hh
z8F1`kY}k2rKBy#sKCx?>Mn!ww6_p`qOgDTg>O7Cf;~15E?tLbrhGYOmo)f^-^TNX5
z^y$+o5@JL`0cfI3XQ8a64iF`pu>z_k%oYoXs`T?*0blsh4}Sc^@9*5Ydj8z{rArSv
z$3(==9goIh+Ff3B0@Y}$B4!ps0H8z%N>L?JaHdFY*lJECvimBX_Ol1vdn>NqJ5AgD
z8LOZBk^2|mld|*NOK2x^>-&$?);_i8a`}5lZE9;dXw0tH^@D!4Fevhj5j693YHLG8
zs<KRq*iI)$P)1Cc1OSw%4XAgX88<iA78i$QStbspb3QQ*+sQXbj5eE1iO74mys}ty
z^B6;D8sxSapDI2EDk@O|fTaLZub*$7-m0onB+T!P=Tmr7i2)Jox>C_@CtDo$5v?j`
zfDl5csyZ(SASyBf13Li-j0TctytFhtJ~oj?L}#;Er_)0w&|qSK4$P`*#>h;V<*wK1
z)J@qmaXKw~{oq^*EQnbka?Ugwpw3rI1Mu{7TPkRproCC2zZr<y&JD3o74JFx6%$tz
z6H%Jb)BxswECL31;^n}3UAQHkq}S3^iPaPYfgDlZ0&V9_C@_toNxG!eC2Z{_0DvA1
zi>^<%?k)RTqG>c$f)k4>0jeb83AG0AIZ#(jrKwAz#Hk0fh?Kq?1R_)5jB%b&FauEm
zllu~<i9=@XsaFlzr~E@C*giT4IZ2Zumy({Vs0heF38zB9fZl)*#Xt>}P1+Mbu!5jD
z!$=Tyx0*z;jsD`s+9vMp9+y)j6fkOY7VV3yXw)KjbbEhqb7ghd@1MDFZg*#AI-A)X
z!j|@iU?v1H&ToJakH(|XXoLtZy(j=+N`xZf*a3h_%-APEW}amdA|d5PK3H5h`@rVi
zo&CFe6EjwYUcbM(kmJhoTRVrvV3=k3&i1}Arrn5l@WHj4$j}@5#nr)UKY1P5sfJ!R
zJNLlZAn|xQ8&zdC=%qw%jIq<{rOi{croY$$LYH~xT-pmdkF~{jFJC>H%)t2|0I2f;
zfns7RpaE)PjH9#7)9b@w=kR#?-uqXhX6n6ywj&%BLS#Y_L81WSJcG)mM^2yKS`3xE
z`qtIkhqERx3?Qbb8@p6=K|~{r2*^Gn5&?K;OoAZJjLCVI=suJh`Us(^2{UY~A}vi3
zz|6!kg&;9BiP22$YMMR^l!6(F@l5S$MkK_hNp=ZiqIB1Y$N;e=9*Y7(V0N574qDeG
z*~wRKe^&ePA!h&~3K%f6_f9~o(acoR20~R-36K*tQ2_v0r!zwK-g(am*3?yu$<5Gi
zi<=Oc*?XK$%c#msHO9KG8)k<_gjHEPLXqg414mIHNWex7$<h-j>Uc8Ey$el4M9v|B
zg%DINL^MEhKJnfqXcHRtKE&vVVw5yOCnk#)#iD2xf&$F#ZEfo?UBwYGh{O<X-MIGr
zkDkBs-eu3>qtAS3b8|h0n9dlZ<MH9qv3KmdMX|mb$J3)2qekbQwUuBsFa;$u59k5w
zL;ys>pS|n7fBF0mF2g@}EQWi{VY&a{JHIFXnP1+f{qIxz{mk#xmYsfP+?_0M8FS`%
zq1RdH=IbkqV4@1%)8b;+qUu6t?yrNimNIhtv}9+gs*6?>nfE*xbmxOrn6JKIszH^A
zLkxs~K#PkD!{H!CQ5AN{hnD7k_bl~MV!EDRTU%LK9s+=>hzK*PC=h{~KyrN1Y$k~4
ziPzRvmzI`d3`rpA9L3NOI{;BZLXM0vMl>jj?9{2vjm;GiRgHO`0hmY=O;~*hH8a=M
z)H@HLXU}YHuCIj9gr*_S&as-9Mga{1X6Qr$%s;z;j$4cwoG7m5F!$iNRppwQ0s*j^
zW0#SmL^4l69I-S}*3=?|d6C@E5jb#g{|*bx5VVQaNh(0Vk~zu1nIStg)6@`XotI)F
zK>?W1RLmrGlfejx(0NH4sQDI-P=hor8<H@=2q3veB}0eKw+G$U>}!IUb|~{hZJh5a
z)uqy8YQqzvA~KVNCbmupYqvM)@Pa-m<I-&`JKAf;70wUusUg>%?jdEo+h?g`Km-zK
zd2<9RAl3#X5FiPO5ssyFB`#*&m9-Vzhr@Epj?xWI5?~n;F(wi>B9WuL<AWwtTN|63
zr?-$mVoZ?Ux@lBe@tMYG05Qe{Oji*?V<J;!CR6pyMA+1=ZZh3JtLWjuL6PU(UiaYc
z;dC-PcVYA5rBercZwW|x<xZ^(cdzcVbIi2B+*uwVZhOzUcOWrD05a$Gof}tQc>6M7
z)+w@wKXg$<ZoG5nxSS@8s;Xp;DN+Arew&cy6GW*zY5?rGswy)iYQu)<x<9Qk?VP5K
z<HO>xd*<9mmcyN!J2&r)%yq=lo*iw@yq9$A!Gwl@;#r^k$l0ZZ&hGZ;-79-F`UW|2
zyITZonWn^ONSXo`j7Db6&~hm>UDF$;4J>JEtpU+!nubGZNJAi)X6Dh*L?t$sSoZg3
zmFZ8LrbUM7suoEVq6Co$rkK(m>2pb%M4|?YA^^b7VPep#N(hN^d-C8;TVY~nsHPB_
znB|#)5tB+Rn;OzbZ!T{+srb|XN7kD~TXtRNd9zt-?R}biZd3PGhblBgLjWWof|N*#
zkw{UbB%2B~ELqa9<BT|plQHs;yf`mOM&9#~#3S)Y9P1^DHKJi#2_s5wBuf!VHKZVs
z6nlUmfC8!ks;|1;Y4%=g&Y6d~_PIsi1t?qqx9Xm=&swwj|L>;=z;3PZ?;|D8kLO@&
zCQccwp=5}FBnF7VOdYQuIn4X+_U*gAu5v|j&Y45-%yJ+GWS1kg?MRB1QWo<g701o0
zYu1nuiPXq|03#AGag$PrTynoSo|lqcSt4d)AO=NIj8p>-%4t9k{?^rU`O<g3d+XNC
zql5j;F}(1?2gc*EkMX?n-aj~yQkoPEG0i5;_GUUf5{FVsQK~F1G&D2@U{&xqNM``O
z>*{^?KKR5OIzX}>yhq=$Gk*6Mhu}ibSEvfDlm2)uul?aEx8LiCh%szV$Fp&>y)ha!
zF{Rk1xLmBH?|pNO_2CBBE@<T{nyLikwn?RwQu_Kx)?#spb*kDyP!mE;qn3!eE{hbZ
zp*-u@5jLn<w1{M)2oPe-MQ|AD``F2~hCb>iA8o2IGc&1S0CGWtnt~_rKwVM+sEP>~
zGXq#mOadVoy3VKO=c-C?W+oJ4D5XPy5Xpc;8jU6+)#A*@+^vX75dkrP^?>eXWiVuJ
zsH%?FYh3e<CzuR`OV3}7hCJk-zzHr3e8`>+tIn^IuE8ue_Crex0j&IIFhQ;!-@(vS
zL!=FWoVpE20L3AnR;;?^)Bs2UAgPwv@Ja7GjM2f=N(Ts{ILQ4x*M%dJXI4Xnj?~9M
z@`_F#yqa|Gl^nVzTq_#4E}JEz84-x*V*?<PfC5rX=&>)O>G<u%es)iQpOA#6IGmYe
zBtzVj)bCNv_nvO37^qSQPyq=F2*Le+0ivg8+dDfua#t6U3z(rXARwDs3|yS8M;M56
z?v567dHbytV@+lx49q492uzHCX6k*CsuNR%2>~GnPB9`vWLB32sa4m%+H^FYOh#8P
zUpqcJ?ut@J9I!|)CKR|$i6icuKJ)tJKL^AR<3oF=V{!ct1coObyZFz4`->deKv(@L
zn}tB9PHj>scW&NYbeSn488e?hd%hjFPBAS~$SF|(eV-|?`$65huv)IH8u6>|9Ep4x
z!SxpafFbZ~Yg%&mgYRECTxO$CXC5_Fa`14dtA`9lw<qEK?|W#r*}VDs?N{HpFO&+_
z_-H=>wdT|eQx`(>jXWc;#{t;-u@h4;W+np6QdA3}nyd`iLB58*nlUg<F_?<<o!6Me
z<XsE^x}<;2=W{KE2_hqyl)m%CSaj60Q*r=-NEICkFnFBIOiS+Tp-2wKQb01xhA4{6
zv7-MGnS&Xqh_7S(bL3?z02a*vip0#pOEt$vmQoNDPo}J145<Mrh#^OgW(de3j#jI#
zh+@rCLk_{=c|KeOMWhg76jA1YNaDj@bB~SJ)@bS(QeYq|*fvoN8jc8{FjuYq52*+Y
zR6`XtKm|}>KaL4ev2?4lzkeV(6Xu7`@1>^VAI$_Hh}hB5F(R&3U6Ep=X1u$(JUEc9
zR}s!pRM!3?f3bpE0$jNl68YU@WH-Z9Ok%yR?A;2i2fz43$ohB5xZs3tTuG+5?tO<-
zZ|!aJw$fL>A~H&8(l(ouG;MfmHbI1L)dd4aDuku<L);vj4o+`xRsj@Mz`Cw;8b;rB
zh@b#8P}ocmk=K4J0c64$W63#78StBqZ2$uSAT)q#CAZj)+qTj9Ts)=Dvj8d>T4-?5
zn+lkXrlS~>9G9Zvmoz!<#y`vEK5zCbX)+q;lKWNXVmvb=0|PN2sNtSQ2wHN8ys<G|
zt(G~fsa5m_7@#o)aAG?^K=jC47gEI#f;}jG9!6U(9Yi!y@vsvE^JP_)8pFvcWv1u}
zOQ^%<-VF%KuEB5$HlW|QUh$)uVZotfF$e_6#9UVnh6pvs1idgXfKn|@0)~VELySY>
zp*Ix@2xekdYTQw^E08D{@i^Aiy~jroIkrtq#p=CD-U1^8V2&Z$a3UMJs1g;-BzuTr
z4a_nlWF&U$BOnTBCVS=ZmLL$jx5R4rhnuTa{Z<BYJvafHi2}PU)P~FlGp<`+093SM
zxSv-%Kiu2cI?H_T{(XlHiqwb?Fl#7?h?kckL{l=6u839Rw~0!%{(*s+WN|Yh`$eJ#
zeh!%tV#zs%0AN~#nIcC-P$>^TeDTbgvm$!=&CATGi6O<5`|NhI5JL#``(OIAJEdS~
zLTWzpfe(D^Yu_Wr$joM|#p=!LcYqRyKyGqDqkxDdm(KGXr{nhGBNveH_O070swz%#
z0w<jlVs@As5|gT``n5(x5S-a4g_u%|s)|77c{qee2S;yQz9vdY!7Zgo#FejJE6+Mh
zP<iy+){~F#Ddz8e@7mQ{orEN=!vk{m>2QkGhOd5+$<JCh%>oT<RrVc3B^nD`*RM*y
z3M_zV#()7ZGP9~8Xru(7roBorf?<q8NMydnFcKgpDA~-UZ5uR_(n(nrD~!Y8iiF63
zY!r|}aQ&4Qs<|yHn%$m2M(flOMKWWBkQyF7mq<)ZBxWkb34ugt=(24@3N>(n5Q*8-
zU<k9bpuN4ux?D6s&phB1opL}FyyDEo1DYy#9g)43)eey$q^L%W#2k>319wYh1n+~v
zC6+$pGBa?JMgk<$nz!5Mj4sIpDBc7s8IXDo009u!dqt^f+tf72hx-JkB}?ChhTN5@
z;84j<L}Lsg1Y&AtldUs*a<s@@7h(`$H8mnA;=MH^M#W5YqBH*CHrJozobx*^!uC$-
z)|w0bZUo0W#?<~xCK!NXfIoaSuaW-#b;mFeVbi49q#Y;No~0DoR7)0#F)$Na$z=$w
zgmsxIB7Tdg>p4Sco5n<YCedP|Rui1+ZRN`p6-9#Oa>3O;qcv_Fs(;RXGhm=am;(Uj
zQldy;>}v|)S_p3I<tLzOF=8yGq?nj-NU*nBHUny%%##TiqKf9&g}|K&)N2lFngJLh
z<50W;022~e6GOLJxp<g}7;Ad%u(!6bf3UAwL@Z})nyp8+HrK1e6Tvwc6B32x;&`=O
zaX^u5*0ke>n211XUg02MHw{co+O0YlQF}UfXqt_{!z<zXVHzSkAOu@3dl4xmgHh3b
zI-3m7P)&gxeknu+A)6F16Os9R$zeL0ZVc<r>MHWUGxVDk3xej{JEB%Cazi1+`Z%If
zbn1Ca1ZV|8OjJtl`x4`XapVt21(4M6NHb7GQ|+k|I8{syW9e)(oraitP(Xb9{+%o3
zSlLV!K-I(_Gq3uAT+{964+Hq&YoGuG$n5mob^B{lJA5F70C)Pi9NPrrWI72k=2A)#
zLLxvDB>*#Z@{6bvK-;$d7UXJUuck9*Mh`ajlhLe6$y8ikm_oplP%waEQPYj<*Maot
z==kj`HzsL(dOF^^aPhm>Zbc$i%*(!E2G9}55k*P~$TRQgX#enwfAN<FFlo}5`K#Z2
z>0XgA;zXf4JZxh?#5RO62Uz9AoSOLLQ|}Rz*M4wm+4m>_1}U&1s)Ca5<55+#`cr8z
zv)6XPM44-32s7468W;kWVn_j~I>Mdu<E-xxgNhX`XqK3sdide<XQ#)<N8kJYwRvHQ
z0T4Xjz}+w~%m9(NQW9%|(Lk8O;Uple>|H`dLofkTRYj59WzB>{984Lo<btXe86}IT
z=57gSDn?j$lwg3!hygGd#@t&eB?MAMRV!t+TpckA3?bi$1V9`TnyG-3STHa^gc?yQ
zDm|k5kkY_V2`m~lp&21Khyz50hzT+0-lStft7Bx3%nNnkM-^a6#DMA%_a?<as{EvC
zJ6Q<~n1NKx%kP*{4Dl#uuuNEkcnyjH5C^0P0M15GgQjf)<MI4RMbxs39SLd3lL%P>
zIi$pDSc*UsV~8ong}XSlR1b)#5i15!0VWQ?a1eVSr)Jco77U8md_K>)k0BU1Xju36
z_f=J-OsC^M_ake$iS5?LXlu4QUi7&qVp0_=YtJNtB_<_YsT6~E%!*H-7Q?{#9lELq
zm%;ClUp+XKe#dP+e0{Ck8}Oxr=-Gy~@q>EoQQMB1I34pS%Eq)Y5EVm0(}GMY)p%k=
zs%YR41>e$plz|aL?s5q|fD%|KGN1?5+bLMj`~lFY^nGrU8@5a78Ob*&#0<5SAu}sh
zLI@@IG;UK$eb=pW22)}eA(48}t<^wJQ|edUbUYc4M%}7YaUHF)gSgbp3_0i!-jH*4
zSzqpZtI3b`%1}@wML<JEgWPFpqBlSy1#2M)h$L13SpkqKT)q0nayeI}lH;R~J?$f3
zvy(stGb11{H7KwA;N@=B-@ku%v6%OL`qa;UcCR|ad|h7?Dv&4yAhhp%=bK%Z4XpHe
z)sH^@sm~0Li*Fj8l3_^5NK#g>zy8{MK3~iaMQAd8==l$x_1RY?KDuMb1B?kY_gAi5
zK0aRb-D-b-Kc&+TKOUaiKJA}aXOs*}K3{G0ckkT3as5`2JZeW~qq7&D-9AP3z@u58
zV*^4Ug6nU+1qS!--9J3sA5V6+wjX=q*>iyF64kIeZGi(=U;1vbn6FmdN>%3bG8&zJ
z@9D=C%+L_*t@}3*pcIi(lSkJ)5^v3iW0b0$$lb?=>ZW&>ftmQjY!16staG?t>{eN(
zvfwNvR#X5mAgda<9tHsc1CvTogA_uIl2EByxk@A;6GgNbg6BeatJO&nq!yUKEHInl
zcDw!2_x||ahnqkC^6%e__l`Sz?(F*?Zu<H3{+<2hWIT&^79V)*v3qac@6&8=wmH7D
z{NOY1z4XdK7;SEKycNc|l)cUE?PjziVS6;&9FO8?V{%Y__G6z|T>c%4<6Ul_8ts(L
z!z*&IvwdokWqEuw5@@MyLwI<!wRvhowx^fx-4Zep2_X;#cWJjxn{)OBJ9tKqDIhSC
zn1MlYNv$C<sfkC>kptlnV+c8C|DH~26p`JX+2$<WxN++Tmv3ikN^)I<&(El`o(Rp?
z6W&q`&P&Ci>t!?m<Qi{VPgp=v1y8MIRLNp&L{4ihd4b48SPTgRAgK1GWH3R5nBp*F
z&&&ZZ8CuSuCd|<UO;t<Bs8}Nqd@!Tl|EX9SrINEqkr-19feBQ!6p=oV4*3KIfXvXg
z)5_*o-~dDvWAgQwe{-q!0W<>z!Z6~PaIGgF>Kg}BP_17p_z+A)EjA-YHg!~e2#(fc
zmb_BSM5Jnt%vUQwKrw-#85EIHL=`-}v=kv9n$`?gH{CErUumNuh8UX^Vn|HXWl<Zv
zlqzaPP(-6)<EDnXX=J7lwzf~*zVWt(Fh8EJmaABaPTY58emwWvZ9E?NXFiQ0j7M=c
ziER_RPLrytm=ckKp#lQ2C+7GeccR6C=wu~_AcX+K9C&>zyI1AieegS!Q}4KU*ZAnQ
z2L|DRG@2h)Q?EA#%+#j1IZ4yTcDBcDLoSs71reo&+P1YKIrmk>rRYQk*OmGw!vFA|
zXk60<UGKC;WNPsQD?|iikG^&2qGU5r69oYE=y*WC={=+wDde0}h%PG-6<2bYV=52^
zNduW;-{%lmL|yyhYZ-^GxVO_p4A7L2sFXZv)2MAq?xl!Xv0~NE>L(1K8HNzlbhTPd
zr&FK%NXdXoHKvom#0*6tIJVc65!1zs7azb;m=6kkZKhgQ$4C47`_supq=e9_wY#VH
z>Jr1&`%)BDVx(ZVZ`@cekIc|iOheObY;A7?g4z(GjO5BAWJJ?zS1unP9pu~xqCn&4
zp8wI=Y#VSLL5OQMHIk|2yLWEx-@AL~?ma@yy&N3ufAC{xp&~`=2p`p_RfdFjZr#3d
z{n~uKEF~Ww-a9&Oo_zKvi>l)_t&&E3M&QZ4`P$VtbFX*q-tN0)>2E*r^zM`ICs#97
zSCjYIKC+bl<(FSNJUG67^X+c2TCH$%`#q08^I>H3YxT<hZB0SD9^6M_gFSi}`494r
zI$x=5YF~~G+1r5TP54ljkkd<m0GT>;iKc-PA+9_M8xbnHRItAK7W!;z4$NOicGpHn
zv~JC+Rjls)T?!XG;lwOpczW~UU;Ix$_3R@L)4{br|Ngg@Hv7nXKRRAsA6-29>mOVl
zPqvy{*FX5N$CpnnzJBZQv7NJLy8Tc8*vJ3$Yp-o=UD%tio_XX$fA4SZ|K4AHv(fNl
zPrUEPKJ+7x{Qh5!$9vD8Ir|GA|MzddcJ2Fb9h!^D001BWNkl<ZzrEdT|H#=Vwjnex
zzdCC-$BVGNw;LB)AUriY^I!ir|J{p!^@V@@xqo?IR)Uq;>Q7@zaWP-{Ps>cqK~;vh
zJtSr`$j+!Ea<OO(vC{j%%q+Eu0+~vvrXX|a!KF(#uHL?1C>3%{4j3{bnh)Brj>Zh!
z<OB*2&=34yk<X>InmOE|0a(XVV8j#y2P7l{vy!_~L=BiZC=(?@Dy0`GrSwgT1ku}=
zz-(YKQkP5VGZ5yk1XLn0?M;iB5@85&*n^o!=0K~(TogIP5PV&nRRzI79o@$wS`oo!
zrDP<nxx)s5SyfCeaL5^?6mspJiif$G1Z4GMV;H_wTZ81HAWT((r7C7X!3hn)QFH5M
zWDWCih_I@vATbg#0tXgV0%9f+b-jA608B*+t_eMQA}oh`IhdLZkwN~ni@ERy$e<`j
zbo7<_&c^5W+_dd@G6J3V-El5`DH)N}biU~Pj!Y>shvi~98Ba#zQLoyW8dFNqOp6o+
zg@7QUAOy$;Y{~#KT&9SaQX--Uc?=;0U%LB?DWdOSW4(Ju{qBE!a7JB0+#a2@mY)n$
zXcwFgeYQ5K9go7sh{la=Oq=YeZAK;RR^6y={mdz);ION!Pd;EN+0>Aknft!aIfoEZ
zN|H+r2KH(|{pS*QT04TNTdkU=sf~aN5D<E@7kO_`6cH05c3mHsQwYrD$OkFKMYe8_
zS5ZTYm|QG!cyKtKPMDdA)ryILDRHO?V_>4d9K8fr)fhvHVcvDa^Hni*UIHR}>IQb*
zDi8(c-qcjR5fBmY?fpOrge@VArdz5on{D6&I{;@=xOj)Sxp{Mr7z`-JX^hQ<hc8Yh
zV;_92uWFA;h=CDpzUWjb_oeS-KG$cSzYrp?cN;M9&(t6w8Q|f3kxS`w0ShI=<tx`;
zIDLNoe5jX6ZUg7Q5Y+H^J{QrVx?FN-XWKj5KG0SF#tzwXX`Je6wIU3rz8#Js&Ze{3
zn)c$3Swbl06_xc}R<$BIr3eZ+#|w`>N+DDkxG#-$VBjGXk@@j)pI2>a7y@%M-q^vw
zZm%t<SG)b91#3f$NCc{$5p5^RXrI(6dROX;5MQKJ#~T3E-y9UoHzvhghoXiaVj7SM
zS-MV~7NQ7djG<1b9Hgm=3aCW&n5zRezZ?8_S5>G1Q3Phdm;oRJG$6rQ!c)`9?Kj_k
z`r@gV-%uM}{LD{%g7Z<=U)%fRuk3E^jw$}aFaOeCzx<uec6@&4)bpnvd*ay_#t@!;
z&yx@J@YwSo9e?dFPfs^nOD}x*Biw{3#V5{Q{Dsf{(uMbZ;Drx;uu%Hg3m^Zf&-~n<
z{Lyb*e)IZsPd@jV&;HW=qw9Bn<JXZVpZ)aTI`^JOUiyviN=%9H?Ynn;knX}#^*YJW
zGfGX(8+~LnRaFB*<Y8%m=7O@SIRYf)0j%SB&)~czGs~jNQGG^*00zY9Y(g4pBQYi7
z3d~*S3sF5Rh`kjHh*~qdkpY325kV1_{pzJxeo&UZXL>*K@WmK|8h{ppU;+XtWhEk}
zdhhPhVzHXf7a_(bB|y0F&_!f6Ky-?fBdbhJ#Z>nX7xTrUWbyT+sP63UF^@z*B{qpf
zdIGSDMZ~`A5BBefYTx&xQ41K)oE@d;(hA41+HgT40OV5gqL;cFGc`MP`a%rBOhwQQ
zY)r%ym_vxM@A~8U(iCD0OsI&XNm5ba0)WBI$4DVWBoq<V>`YuHQq|n&$!t1ITr2J|
za6)1j9INZ8Dk7;n&}t+isHv$jQsn3jrEdX6G;qiw3gUAM^;mUThqFRRVKho?qqr5v
zqp^q}LXndDZaivJ4DEOXfH~)`>lgFoV!6DxSSY%QfEba9%}{(|VrI?=tE>eBfRqw*
z$hprs4_WM_s?32oh?Kt1I&gg+Y*^n-=Xghd?6>cO!f7~3mq&yLjlX{TidR%^lO}E4
z81d=dS*(YZe@0LdN+}@(f9>l;*^B}qk`25;0A-4zx>|J`)3^?PaM`a&8Q_`%K<+6G
zA(WEaQ3`=$42$KQfwlfI#ou89GbzQC0CV5zsP!o5)oRJX!I|r&DuIEBx~^ieT!zSP
z)AU`h1wd=#>o6uUMF>z=9<*F8n5RCiDW&t=c{4DRqoa8YsU1)J<&`3;(lkveSxO#;
zoGxGj^C9JjKm3UzI!IB-*UEuWkPuUhVR&b3@3ijjT`WZqC^k)OTAzZ7o<LHFC^c;$
zVzQ0d#b@4srj$|&Htpo}*>fUBjJ1{UE7gFw3EZg0)90RQ#`^%o*rs-4b9<Kp`}0vu
zJ>y%|h$0cAA;#I(?jvzD?^ZI|+IZygr<vK%ce!fn$Qt+TwMZD!CN+vdV@%7XoH~1f
zLvRK1df4u*pb1iH?j0<f@lIb3i%F+3PIgY8KR-O*^(XM0B``LN25B<gS*~sY#Lew<
zM{|1LkGv34$RY;TqrS1Y4}`^J=+HfB%Bo|!?&Y9%;yBor$;UK95-8Q1*t_4F7OBJk
z;Myf+F(_InGBEpe3!R@{W1AEJ8PG)05LD3=2lbslBV;BjLu}|ek7Xd^8=B~kJ^KWM
zef7`3@Hc<u$N&6WUpe!hXU731Tc<C-`DW7u6M6KpM~WO@y>WSK^Qr4^Uj5`V|K7cO
zm&`12n2cLsxPR;FD5Y~7dz;%k%f;QvxH-PRf9Cu{pdl|7lcs(2$tOnJn<2vXY<6mE
z`-vBx|HfBtj7J>OMibM~ojY?~?VQ`Yapj5<dD#U--i#75A!$*|M1TQ8mwQko4jcdo
zim5|ls=k1Sy+Q?wsk_RMc|f?BB0!*FZD35noS|HS?xr<U_au66!102)AjzYduv+gq
zavh6-av(4j&}HA<x^m^p4=&9%Hzt$u`EzFw#EW?&F)<`E?Mf~p`h!<~aO1|!<D=uQ
z&zqaGGpEl^$CJ&?O^*UqGO$RdS~93~tL}R*y>#p5&AWH+we4s&n~p}~kNw0?0B|Xg
zV$z(oWFU7B_c?d3zxLX9zw@2_{eyNi8c)ZYTc<wp$+Ky^RRyaaj^bKVGXuMF0QNu$
zzvbGOzW9axgTt+@t(~o{^ABD4@XpyZ482rUi-bh3jZ?F4f9HFD@`W#|!S>GP=4^KU
z{6io8$xn!g_N8fBhv|3<Phb|2FMRP&-hTV~sEyO<)I=Y7?9mT==%Ym>)HmH{wyctv
zXt`Lu_~Kve@86Fpq!=dS@l)@8YVYht6E&)a3K5Ml#uSM7=;-(>fAN(fB`}ZLR!mM`
zczE~R*p2$R&#G2eum&-P>Bi*R-K$y_N5==g9UP6Plj$Z0R!zQi1fbQbL*o6z<3%o>
zm&buaObSrC&J_fphH8YC3^G80nz>twu2!9oW*j@HHFuoM7{I0Xpbso-AMAtQ!K!>W
zQR|1BW1wLK{ljRjT28f1J5FgfYNjnmuAvRSg;66A$vMXuQ%oKAeb*N$W{Mtm2tH&`
z0xqS;b+EG;5&K=+^&Jy3vxtVkITsi7n_1WQV{Kin7em|Uu4=>#kbpz1(tZFS5|QO{
z=|x6L4S@BzH*<yjfMr5c)fl6y1`f@rIXXHvBM)~*QnK~VSllPej3T;Pu9!FkE`^BD
z(;yJ3Z5u*1@mv82#C@M*iXjB1;I1E4LC@Xr+@z)*HE=TMJ@Fwhda%g)y*Yd4>|l0)
zqHDW_lX-%RcvP){#&@;nF1)9%_X&xyWOD;g4X^|QW<-oJApmG|=G^%F1vaDViuK9E
z$%9g(wwW2!4AR+$o<4K_X$LNHh=8oa)o6n-jshoY5WuXxaPj@8&t_&;CE^rf6cvAm
zWazNfAjCj4MZ#03pWHk9w9D^HO-4#Js02I!Et?7gBBdCTj?>f6ZO@P9M9guFv6*hp
z`ce$Q(2n!+4)jX320|he8H6*H6m7$*tv>R@I>vQvNEHQWDlo`KK^45K6A$fVBm|d;
z8kks6P7;!Z2wb`@1S-;tioePJ2s)~P>L64AgqT-a>LeVj!kA7zh5&{f;L%6-e(SgY
z&x2QA`RQMH^zh*R{Pjz}^Dlqr@BPQWeEY4dWH@cdFMaph-}~yU7>`V_?~d-gb@#0$
z6W+Lb?LAMvH}{9P@4wBk_4eCuksjZ<^8Gdi&E@W`8|`L%^U_NPhpMH383r^!P7R{n
zyMEP78cy&3@Q3C{`-S=Pjq4Di5{VhOhX9d*(fB<(=YQstKXdlX+0kfhV8=)E{lkOr
zzVxjxf9EeDxMHfBVzI7ga9t&9-REM>C2^~thl`=n@JPD7rE2o(vx`G803i;`yy_A{
zV#fNrC}S9Olg1o89zHf{W4dvS$VhFI+7t;yN<ktBtg497gI&x@?t76Oh+>Rp&^ArU
zUCDjUD*$Sm2AzWsW?EDVg6{2}x_9ReF@+FZSlf4<8HNzedIJO~V1y`O1yp9UX$UdK
z6gZ}kq<CD9x?Wz3ig0D!nG#W8o{Y!2l&#I##^#Je7=p^zKs~kUwl@T8VroXMWZ9f<
zgb>u}c%U@!hQX|wm=TFX;ILX8&8B-y7*aw2DLs-XdDG3Rs#3^>=P`=G)yr@0?d?vc
zW66Ej^&-NoV8+f05)l<<bV_c{<?5Bov)L@BK+I{nGdopM1Q9VLcf;!-Wm2=7H*a-|
zyQxW&={ST4NX>ZazG10EAn3Ees$VQti>{N^iVRx75Q3-#CaJ6o&*6atBmsM*kP;CC
zXpB)*%z&8@P_(#ykcgV5$(clCEwNgEQXh08J#aU#0UJs*%>PcBU^`*>;0esfCk83R
zQPZ{!w*kwlzjbr*(7C-B!$}ebbJz8w(a4Z<wwGUdBj;YF5aDz>K6~cOcs#-yN{x(|
zyS}78rqpM7^R>%Yue}vQh>=EZI<>nqolM-f=HwhgDn(+9Onm*$o!2j2X(Goa5aZtN
z&hGB6qQ5Vy3SHl&6hmm3`QYIA)z>a}t9jd|@wnaHJvADQ(LDv#riCIxOhjS1oWJ_&
z>xed<q{*b&+}a$qqarF=4A?UiVvI3{uIsz5T)XsE2oxg46t=cDLyS_)frtv&_u3Y9
zt?|v9_YV#a15-@gw#{s|0qAOuf$Xdg%%AZA7px9`T0g2(tcKAKUm2JcCpd2#-bqye
zH4)=L4-zgP6bRIuBxcVTSNNf+h|jm7=0>rZAsHG_h*r}o001~RRlFLm0g#B-93n7)
z2&n}%K&;`3L}=c~4jMv2rpU%(0Mm`=%Uc(~4SVhf6Dbgh8T{me$;N0r#mz1MUg*MW
zRW(9UnM0Qo6`$w|D2NTH1n_K?ddJaF4A-CtP;lok_)%Wf8AymGuKiPF0&oyLm{fhA
z8!TIy{KLQX4=!$<4pv8@rbShy6#vPk6e%T35fv$tOPB57OJDucH*de)nW|&}BO5$y
z{%k0KSrNE(yx70fQFq*RtGDjnKQqeLuD^Y7@2wj*z7LAaMR#y;_w5@uLuyR(;lX|g
zVZIP=1&QI{{@qo!oL5&aUAp%AcaM&*mR$Dl-}%nhz8J&9ckf-leGd)}4nfN8t8cCP
z{;g}*?!NW<SN`k|`rH#ICOO`}BB1l!-8q_j5QhQ!gkQ}*`Mwwai~sz;+!$|+$CE2p
zuim_M^O1`epB+E_p%47X-XCrK&Y%5(qAEf)b|VgtCp;(;RoA|O8TgS`QR7vYLRhWq
zwQjAh`MOQ;p4A^+M&}3Vpjaj*Kw1l!t?n6sQ=mZYC~nLq<2I$psu@uP2!#U&u&fFt
zFVO%%#-liIXt~rBi3trfMiR-0n6nZlP0pTFGa&*d2+U1PIrqyYF$cnG4>9YdsA&LZ
z)gC~IVLWa(Hm9qu0|1U;V`J8)2%4<`xVc#fI1s97L9hWri7CaD(va{Yrg@m(6a++b
z+@zUVn_5hknlu`ZODU`6vTggA#!c|cHwy}wIEZU=HUonYe0M`f$A<?8_qTV)Ox1s&
zVrI#}IB;Oz+1}pWJKZ#qIjU*j_e8)9M1m%2rDQbGrfHqY(4-cTLx_lEz{^#)>M}MZ
zH5dY`4B>ok-;8NA**HA7lUmMMRi*2)6yXrn%pWfR=(@b@`mU6|$g<DDEK#WRPYzTh
zcnlSyDFlQDDUMo7N!4o?_C(|uqnYVS*YQU_L|yBmPhbqLGZ|Xm%C|&dCZgcm+y^md
z{vC*T;EE#-yLvMnjoQ`9QVgTSo1>HnB<CKoh@=z;RAmj_5fK1uN2BR<<Np19VkE+4
z*LS%eV>94L*|lRH_Dsa%$z;@yeeau#9vv?x)2Y@=$pB2W^nK^qh0Gzws3s*Vh^>~Z
zA_9o2#Sod81NXU$DIfuJ00k*lvMrbW;o)&gZ4AL*KnFCfx^8QGYdV|m9~`C>=kvLl
z=Dr7mcshB0kC*7Gy6RSKyV*3U6j?1-ecy4w)Wq><9Jm<>jGlG~MM~SWfGnc-?;eCm
zM0o1dPSf-;hOk&=L}VsrLWCk#MCw4l3Ye;9YAu-q1R@S80zm0Cm%Ltuo^V(^`=Ht_
zkcgP6(#5*|!I7_XFU-ip1d#l~!z#~H74`H5slYB6hPOtrmg6I>VL)mk6>>DpPY0zK
z4&+}@MdTqL#HC$gHJf@JEM;mi$ZSrO3&VN4rs?_@eK1^oLPJ&s5>YWx)cgISBkNR=
z31k>f)<6qaw<w5Pl4$6B&8@|2S`8r7BCKLL0js%XSZt8b;49@LK>WzL4}R){A0I6x
zxZAh_mnxdzBsRM${s7U84sN}D`8)f!Kne^S;0g=(qKXUzEQG&$`O@}c^5I7xdG+Pj
zD2)&o-}?5qkB?t?<(2OurtxI@$d5jEIA1iWjU02E9(n4q7r*&p(*)6ec8b6G^*>(r
zeQLHQ)A89yAAai_uOX3u^tzw<%%WcwX<z)}|F<>kzwwQ)EmqT8ckcdg|Koq3p*NAA
z{^Y0r=->YCORxUbr5iVwUFVe0A*c!g00n;amw)A<ovq*g{J;8%pZtWXzVh<-zy6KC
ze)^fG|G}^Q+Q)wM$NtTi|8PYhpsvgC*-q_j2F-chhz}DhM{YTsQXMi}Z&#0=@}3yA
zK9dz<3FJiZ!BXK_AmoTBaICAL0HQI5$i_sBk3V|h$@6EJ1A=lDEfr>pf%<-FYJqD}
z`uKY;Joe}XQzK##2r;CFh>VDsj2TR_?~>a#iOA{GyW2ZEgzTQq7}I1jMskK_nT*Gb
z3TlB7ny5ku_|cDigej;Qg^*Iywvns{6;+E(6Uk7slvNBEL-Wvu3!nMSXNqZx(Jc`h
z(<uiuD4>GKjHFpTd^&7QpMUPTCmw&i&;78=r0v<PX*g0r>qH76w6PVU1;cpMJpIhm
zPd)V{qKayaF$6kw>U3%+3WlJ_z+fspm=M`yG<y2IPd@(W!v}{4{<+ybz1KF06A~%F
z3ITHwgIV8orIZ-cV~;()vALCVRzSco+1iP*EmDGHRTNRT)3~-4DeaxT$T5P6ltM&`
zEpbaBY0>(5F*ATt1PoKtF4KHfvZk1_auH^UA!s&r^qr5;4Pw(k+bp}ho;)LB2(j<G
zb#+KgK0&R0-$|50?O0UBGh>EZmPeyDrgphpuKh^Eg*`M+2sLOz9b#yk8}0j_dGgYw
zE32;CXlZjC6Lf}!z?Q4kcs#;-N7int6c4QAjoHS*;en}RZgsv`P9`HHeozaxTrOQd
z-;Ub0ZI6$SOi7A%t5vsJjmE93V?7hki#a0N+}zljZ7i2_uPf*C#p3vQys<Hy+lq>%
zlu`;4wQbtko~>4MBp{;Ya=9*923s@F=kvqEBLEnUN7Iez{=tEP0q}gj+URmh>A|T$
z*L92KQdFlKlkM%T8#iu<VBgEZ!BNwUyk-g^_+O=zW|pQK)9J=6#@o4cF^0u**|v$u
z`3#7NzUP8mq==}<aG?(Bg$Jx=Kt!Ql3VziOMXsGBU162Mtgqh_nzM?k!dk~v?=}Fn
zQgg2faQ!B!m%!Bo?CfNJbWBjI*`LwxQ}1X+C0mVxF(1>qagZsfI-m;!4yjuJ?phJa
z^{&%OpZE42)i-ujMao0&qu<$8C|Kp)G&I)U_fVB@N4j+P_G+L*o;<F$epB6?s-8CO
z=&w5EM|3OR(1F%?xk?#Ze=9mk`t(l_AR2@VI}eSNu;Mg*U;!#+&AS;Aq3T;f1Wb1C
z{v88QM@H1}Ng|(Fn=&Avr9f{V9N}?yYbyWj|Nh-x@!GYQSF8K~_<#OiZ|)z2(djqe
zc%^K|KmX=;<Ls=JZnf%u^Phk2_TgK`r`~$w_20bw?bH+<wNaKwNBgh6`r4Pj{8gdT
zxnE|4fAhP4c(lxB>1*Hm%WJp3JI^IhS}a%l``3*Rj5k03`QHw@&^8~gRy8(*X~+vf
zCZ42b@6_%aZ@m6{|MvH8-@W(gPyfuPKK<#<o$W7w`75e2n@x*~F*?Vtj`S;OWLT}&
z*@_D-$+<g<ZuP6(Z7oj`y;L_JC)2P-uCK7m^pMGsZbrm9l!k6wcf1)f0f&$p(cH9w
zgI1apiD$1OR%x-r!&Ec|3XC{xoy8D=6oAMGEd(|b5sWc57^Da>&o;)+l2QfshThCq
zvTfU@m~!r!xrreK4jgkXW=4Ty^!O<<Btk-FBAQGmB4P?{6K5L}0N9vJ>D)Op>vKkD
zaS#J~EHk&G5&6z3rZ#Pw%9-6$F~yY9a=BcsR!!3a!gw-eq~)q(4#YSfjYLb^kjkm2
z-}@93G))AA#bQxPY1*-<mSQ3nQz}x-Kr`)~+EJAY51$87k&;pp6*VhGizrY)Vz;&T
zeNPN$&z?DZ_S{1kE*#AleJ-oMbXgZ&>BPirxmtkr4+wcsRVEv=i|={j{KFSboTTbj
z6f9DZH2Az)#Z-tPA#QGNPR1>i%zX}v&h0KPj?IcpZ0Zyv)4s<T&8%q}kAEYt)eK{7
zO70Dfh{t2^8tp;il`97UjEM=2As7HLF^9ID08!U<>yv+tIr7s52?*GvI8Hb~dE&yk
z_dUKFW%1UvYp1u<*;C_jy8&9v%BXFa0-BSVT}Z?^_W%(Q_jb42Ci(AWV9XX`GF5Y3
zWDS#$#bN<Kqb8j{f41wlyS`TuBH$1`NtUW3UqvwI3`R|pc1~?Amm{+xDjqxH3o{WR
zs#Euz`w#+>?e1=efUDIq7gfg$TUE4qmVp@_9UUVwA<bs9&Fv+cBATeqkLS&)#wYC}
z;-iSZ?}<33w7Ip__x)nA5VNl9S6x49+XofqrMNUy+qOA<X7}jm&`e9tITr+~ZFpcp
z^zm#R>XsrkBItpoy=Ml4YBOqv+thuis;V^D$z0{Hri5&ck!RQZ)_^}V(NgNo?xh*C
z)|-tKgFEWh)Djg@6_0(<6Hk)68WAvX3Mb@Jchi?bI2g1X90@2;YMID^c!-EFLxUo@
zl+GIxIAKCzjVT7?L5&H9B3UF$IpIHR?Go!rTDRy`q5w-P-@bEY1--v4HYi7j;>NGV
zI-5rrP_Wh6GOXw8N5m@xr^I;ktM$4yL!-6w7L<_ElMg+@YUW1ndfPu>()Vrjx<Ez(
z)K#~-zJEuDx5lc0k{ILrx6jX42bYcym`Hor;;j!n_ug`R{ncx?n%S9$&zza;?7jZl
zcRG`uU`+@&?;R|9NQ*vggq_o;Zrr~;U+HW!gs|K@efIM8Hxk8edH=D;9{b$q|J^(r
zh1@pjYhVA?&0AMPJ57jNr*>}MyQ3&wx4$!sr%vr$c;w-){q<|N?!9$-ck}we?Hl**
zDl!5Ev!Y6jOsr_4a`o2RXSa5L<!}G$rAu%A>7V}TCx7abKmEy{e&*@-28OSH<Lf05
z1OhrqnH-)gU%%HE-vguT`*A|F!y2)m>VyZU2n?3rI`A7(AIK%Uo+k7_RyqNDZE7w@
z@VOyJHh|J~ragIxi_29IM9QdXo2Eg+)pF@l4n)tqECA%|XlMHpvV*?kn82*>`_*bS
z95)7l3M_!W(LgEA86Z3!jmLyoO7RpHr$&KL-)ClzLLx!~H6prq?_La{X&NF}EEWUg
z&R4_$2%e20Rm`Hxg)w7{0SR*MUCGc;<F;T&EQJtajJcGQLZ8cW)j7n#RNA&hgl@Gg
zlF`>pRtS+}bbnmaHuHt#oXsSq5W=W!o8#l7Xfef9N^aU_)nz0qYB}p-wKByJwC^S7
zqN+udV{jm*0U!s^f)xy2z)004!9F1bL`I6LL=GITY_H%PJoUqmSfmJ`S0WM!m^2F!
zBMJ|qXa^Pg!3sslV0U*{)Fg|Vh8Pjx`1ttv_?VcT7dsx0{hd0=fgP$z(?U$UJ9}H3
zGjEgvM}xTR`o7B<x-}Q7qCmg^ED-E&Z%mqyyRMD6v)R1x+!I@~G<n~}htE#NZJdnS
z3TAX@pd(t5M6*wZbM8bkQJ8H`V+uJJtcO%>v<B>IZQpb55jiE^-kFMwy{2`wJR$-F
zAJ;K+jIr-~07BsHo!O?;`6W4`%kNZ&JcCQwCHI+_H#SC-Nn1)4{X7^g;g=U8E*1+S
z4k2!BZ*6YQO3ntJKo23XNc}Uri^Msah&0=nPR64O6C4J&zMdD6QVIaxxN*}Zd*>fI
zr*c|Vx~^m97&)kF(<I`7H0HVp001jRJkku^GF?ZO$jp(+P8RgeE|DVYcZAP!)l89)
z0ugiVPKJ~~FxBG83yz&Kp&^$b0AdKd_Wf4Yv=*_7jdd$-#Xvzd8w`(~51OH9=}I3t
z;DA(CL@VHE9z^pI0U#k%0J_@%)G>r;h*2sej|Ct#t=oUsvT)S`rXE8vM0v2^zG~zK
zMKLviqdb43JLsbnDXQW@avlckX2iN+2miwW5t|kpMoQ*wsMQ_tT0sklwK;Q-u-0x2
z>gy4xH0REoRgp^jHaKZ^>tCU!DUk&uga7~_07*naR1EKaAh>_9fBoRTMqER={cope
z=O6xO|J7Gt{KH@W(jPFV(>D6GU;X>%V*2%e@;?F3KJ)3nbN=+^D=&Zb#jhP~ZJ+-;
zfA{Y%ZocukfA#sIlTUp37q_;W+qW<M>wo?2GiNUR;%EPZGh6&yzx98u3O@PBbB{lC
z@!<>S{?Y&PKTJ0F{`SxR-N(*v|BHX|fAlta^x+rY``8n^yIcR{fB#3L&8?sN)X(p2
zPF{Zb#fuN^y!P6Ki%-30Z*TLT{y+b;FdHEuJ+br9<4-*H$6xzOPXGX&mH+qme&=s|
z@@JoT>dB{{eU_M}lSwW;GW@gO`pwUM;q%s_u`hp(hQO|xEj`pkNN8Y;RCn<;J<b7m
zUS+Y*9hjn416%!AdvWEBDKj%Uy_JRvlEA02RNrz(y2yZa_DKhrD%ju%0w(I9YnsN)
zX@7O5Z55&`!#Rq8WTa*mLgiiLuJgohzw=xrUbH@79=7Pa#zsUCODW6ca`;%)1|5+M
zi6|j3)WU*kG8U0i>|p=Czg)w)?tt8t)|!C5=p2pOt<9OL9v&W+QV76f5dCGjdw1VC
z?Wz_+C`D3=8&e5P_wL=5TteVdGFDFx`*O*zN>Njl5YlMWj>qHGVt)VLJx`JH!rITr
zB5L5OEmX4*!p6pw+2@dlS&A9vB3UhqiMUYS$dTRPDN^ndt_J!+8Co3-V(Sf>Q+)`L
z3^D)-^lr1!Krn83*@q&14@AVoTH_gv5HuGMLDfJpwvmWN;}Igon26x$=!l5M<MDJl
z6;ZPz7!FqSN*cf{q)3|^lgT(TyM8N_LT1=DEj^H$K2)6mV6#d1(EA@hzq?_j4`eYS
zk+q3t<Bf4NCkeX3)k=N(z-kkabI!R7OtZ~RKwK<4k>X@~MD|<W&o5KW^?tGt!fZBO
zEEZj#>s+Z4KiHj~>!^vGGZBqiFF?B*A>@0Wy0{yzRWlU<QA8Mz#;aAYDgy;i5yPNL
ztK5rWbg!Q0QdC0ZBF4-WEy?u2!m(<-B2!4Q>l6T)*O|#SRFmYpc0}-<_dq)i{vWGq
zs6-MUgQ%yex++-A1ZzSc4ZQ&Z@@O>j13iNRC>VPAqmqfhgBoPGkcfd|s%<5%0|5cR
za=!}B(-F^nFjEwBA`KB?tuK*?0g6g-Wus}uZ~6_~7=^}_RxU6e1j15!GQnX{>NhN6
zFf!yY$jGWET1^d#O7EPKiY@c`6eU9rfmKd)hD3yDQhG2oTnBmjL(PT_#fFd-!9Z>w
z-QTAorfPL9WG9(1SizkBaUi$zDmo;_^Z}F-LX8X@B+M`@UjWg|05Ra<rvhvsp5EGa
zI7b!d+S+gD*ZaV!A3}IkWWHQ1P1JY@F+f8gpbtLsf%lz%<hy-N5aTMI51aR|-Mn<|
z+AH6`+)hW&z5n@caplDqU(C|H@PVJ$-8psb>g#X3d866b``MrU%xkZH`QQD)H@a1P
z^2rZB|NKWnx%bldUd73Dd$#w9Pkj8(zVxLokAD2QPyF1^eOB}RSATF>+v($vKl|yQ
z`x|#|yrtSc^Yll5{xiS0cV_h0|Lq?i9O|>reB@I<^Qn8cubuvr^ZWbvK#NKKPyWOI
z==mofz5K@OFYVtlFe3iT?|=KvOK(1W?&8MA22&8zgQJ71H{V|7dAl(^l7)h<x#0jv
zMw{3?dEt?1J2rqKS;$_!{^qUKkqrTH)!yi8IiJ!4B2z`O3`1pK%==sD5CbvsH(Kjn
z83D1VIv#dV$#_>`F$Qpe`H&i2_s1SzgrHiWhEF@uW{qu!LF34ME-`|}XrdSi&|HsN
z8JJW-dtm6jo<9i=S_&K_7ZU|sXDg5?C>Wv@?GYI@cpSackwnx3zJWaIk-Ro7CV&K3
zmr(AvHWg7(wcO{b8L3yjn!4bzrZxCaUb3eYW0(7`ud!xGXqLS=a2~7|uO3^az5^@*
zs6)N#RVMlnQ~^bSh>K{~b#2=sV%O)c?+~e|6a`V#y2~O31mmj7aQl@=)ip|QCUsJR
zh6G;z00Rny*dn5Tbk&5IL5d+*AR496mzZ-Arkv}`<Q-g5JzjJn@@PUKxK=bayfK|L
zO*nPx6ab7y?PxS!ExX(}IK?Hab)?M5Z3<0fCJ6Nb*1+73nzn5{C(09g>wgb`q;14$
zYl$=QU?5g4MP}1!&iUXVm(n8u0zW9@swbGaqNjM*2&Phs7o+N&e>KOFN|EX|CNpCI
zYuZ$b<i0ymrhxvC@}^F7OOsODHhtICeLPk;l8LP^R6sCMMc6sDv$uQdt!p=>FAgL!
z&jE7zDlrbrU__ivr#m~__wL=F=M1jHcR&t3pa}Ncy_DI;#&kM8Iy~~5dte{qKzE@E
zkS9{rwrK)~<#MTDBE<*0%rSt0yV{3w1g@_)0wFXcH7i2~N%B^D07Jr>b8TQu4&^OS
z6(`kM%3;9HnA5Fw4dJ1Iz&vCSG8hF8>qx}^pRG5I)h$c!yPjdKJ-ovi?zv;#n!CDs
zuzMzSS9?h8!~#VSH%%K0A&?M4NFebADH0z*2tk685Ry?OVkOWxkwc6KBsc=w>2|wg
zV-a_|jk~+L=J{6L;oNiXIq$UhUh8=tK0IshbIL|4l~lLRz31Hb-S1k@@c;k*ektIj
zpN4d?d<7yRmCTGWRs{~_Rj3&v#K550ZAs(p#)vo!HeVim7_{c7AXUw1>L^ml06>Ur
zNbO?bjic{tz0?GgoCh!ot~T`bu90C>poW9@LmA|~v*XO5o(V_@iX~H7$F^$hTVNEe
znW|r^<IM9?tBM!vVH_)nqD1p201b_h=t|t%pUt7yQW@(1Z)hm0X<1p50mAX|gX~xm
z&&6_To#<1yo~X<oJbch{b0xLI!}b60H+}^zH|?He{cHcle|h%kIQ0Wy{X5_K-9Pxf
z-`}pzLw&Sf55M$Z{q?ure$50z-2eXfU;OL8^k1Jpcz?hn?D-%6<8R)5=k5RZk6+AK
zfB%O+`kTM<->;9~-Ri<R`t9HTo#&r@_V53XUsr2RPglSF&EL3oIQyeNdHt1l9?skM
zzVyY<{OaHQTQcB!yR#}r!)I^YxYoo+C-;$nk(lWAV*g+Lm%j4Yt;g>@xc@uf{@owF
z^_n#S%>L@X_a8jC|G|IvfBYI%!9%kEjgWur;P!v`@BaI<s!1vi=sww=ef@v=yT>1_
zGmf~o(H`JIduB$C-Ec$xhXm9f@B$u&SGF)_MKo7FG@dX-Wwt~FfNGLbR+F3s;X`j3
zhCmoqvYF*Pm_j5%rV_1V2FQixgcGvcg69DcsR|akLM9G4R&FW=#D-jCDWVPoGS!mv
z=+`_4&n^T6qw)m$Od9}$>slqFj!keOd!h@}1(b-HSyZ!@&?KMIo4T0BW8-{KFA50A
zF4<MEfD{5t7DC8A2a*wCY^2UJcZv*B&Ka8u2(qRUxKvIml#*eS#L$qDgPIOQYMR=E
zzj98hW`F{a3-ORdQN#d(QQ*KH(qo{iIj7z<nW=b<ZQ$4}Q5B#N>!YjJR;zW&3aSd6
z)v^ei4km3CFfa$EL_|a)<n@6swo<lTXUvEV#h7ynkpb1&ScRjH2<Xal0Mo$HyILPP
z20~_H1TYyB|BwuVD-sYvgaQK?k0HE~v<haL42py$I07%mwr#tvOKDJ1#*sRAfvMHv
znIYKib_WLsR1mvPXfhyEQwA;}G*Hs)vh|>gMKkMngJX0Y+gfl#z7G-|*E(j9IW#c_
zk6s2;MACB9m)Uq00W(GdH6~sz7dhoI$6~a`IG0U}jR%2M#hqQN^%^f>wh2b0UFjl~
zN_k>c6}sIH!2mq<!7l>w6dMEt(?Co}O;d~H&8A00196~R82X;6TyP#^qT@r22*f5S
ziHNC*3bEBq?QQGiCK^KmkO&AR>mZWBAZ0U{g{G;idQ36YqBb=Huqp;3QA+@-noG(L
zhPG`-ZSEzVo*AJM2w=)-5ET;$+yYlsQv+VMPPx%TspLJFN*-^05&`B#j8!Q!P0K_`
z0L`uWo@lHkij`_CfWmQ@JxaL2{HZlC0aZuHA}|tB;8<13NNli(Z}tx@xX}XvX_Qe-
zLTdlSinr>%7cbFlVBqFy^$yz*5eTg~Sf`1j8?X?WOv~a}6`t6;vIrIQJxmc}e}<Cd
z?Uj{B2LSEfgL}YS@-<5=iK*Dp;niW-ymx$G6|c{)+WKLR(S)22e0IJ8tLnP(MgMLv
zj0+&E>+trw@0vy5Ha<K#d31V)093W!!+rM$?_#x&YIpBF_$S}^eFed|1e5y@&;Rqk
z_TR=3uv)zG>YG1$@f8A~aCrCrcD?zN|KvaWPk;2<%Llh_R<Q=ndvUfozW>K>|8U)J
zscpqzpPT>qKl-bz@c#Y#A9?P%Cmw(NyWjhxfAo#teD2Ao|H2o4;tziBcj_38so({T
zOzhwK#eehZYq!4scYpOfb%=<89(AjiK6q#3V_mYwO$95_m_t(Dh|58)gfQ-IoaT)*
zK@z|Wfhee%nvxMQ6$w3{s)%OL4CCxh)lV69?jW;AVyUQgeaA$BL#d|B6)T9u)40sn
zQIZA9JeK?xcPW|Yy#Rm(a_ko~G83RVhiGg!6@h@*Pzfp{hD!?%AG8)(CKiLoXz_|J
zE(a<=W9GmJF~;3?W9B8hD?A9%C&Q?KU|Kg94CEN2nPwMDmp%_i<}3m+I@NY0qD5u|
zxKzj3D2gM1pg@Kwl8eTeu&QGStXpyJk2nI+Kmb($EEtigiN}a}!K@}JsrIVLTw02y
zs1{YANW|x>wTKe4O5jjgzZMa*Y^K7<O^hj4DdvzxghU9bq?3ujkWex+AWBZXRy-<Z
zG5}RoaOgq|LB+vjh5#{EW=3Ek_@;}d!d=0JG%#aRM-@>9)$C9P0*u6mix5DeAn?FB
zZIUGogUdt$l9C~qX@-f=@5Ce#CMK{nq9tAWW1^;tKnOVbWkv-up&=1gbyZa{5M>AG
zjw2bHVj+C66T)t{YuhG<u+>Zj5Tv8U9LmwCs-mId^YgR4y(J<z|G?Cc3AAWy4M2>_
z)4@0l!)CK_BAc73U`#q0mA52XW?H-5?%L6nD#p!fC89p!c6CmnK^1`z5@OB+Vq4X*
z>)FTnfe1{4V=wg5nc<a$7e2)B)*J8UtS2YOqLNbeiBEp&=;*+s6l@F)HZ#*q41wYJ
z_~FUPsfna4$X7n`W1r<QeP!}^`*pyCf$@B^S*=z%i<u(KW{c|J>a@?balq;!ZbG1G
z*sabVou8ktSL@~SYTe#g9Nh4MJB~3=j!4d6F&Luu-6p5Z%w`~_v-!a^j{?IGqHnta
zjMyVRdexkhI4`Z@8FQS5=Wbps(s4opGRWC-9=c&jOi|R1Zr-pF=eV={wron)dKu$;
zmZ9g-xX#(nM7xN9ynNwbVxyxsHzfmOM5ovoFm<66G6MR<?T-Y6T(r7|fc9Y;`vntc
z9Mc=fqxG300onKgFa!eQ!@Z-k^V7Fa?yAn2VmA!TtOy|l$pUET#77Q{q$)`>sJSB1
zG3$gxL<PC-+*CxJLJx^E83JQr<B$OkV2Er)5E;mlh#*(({O-w_QJ6K&@vZ|E#s0y&
zuim=30L^I17JlZ1FF$?z_AmePFaP07KltJozVwqXeEFw-;wKLd4`2Mj4+4@7sl*Yw
zA)Epk+`Msf^XUBU$^GxX{*ndq1WBlU+-Vaq&xc|c5i!0%B_O<zvz3RCkdTPcM&t{W
za~X-yTNqI(04D@hH8xixBcO_4SxGnx#iN{b{G?JAr@@S&dt+5^?vFAcKN!TnI~v$9
zB<3QXnXn;>1Q_h{rxb}f78a?KZpl%T3Z_78NJJ5dDFou^fvGXZ%|;MPNMc!)0|BaG
z1g=J%8k$0=0}*+eS+ScFiMaWc)liH%)FR?>Rx!riZlvjYN~|l-i%*bMA~B42u=w_l
znTB4hBsJRzqd<k6Ehus@V8%q52xD{ru;etTSr!phA7QJJsu>d?F$EPxFe$S&(>#ox
z2olL)s0s?ifdI)@X$3|~frtxyK($kA0%CB&5C<=SMtLTfN*-8p9(qOK7*paHYu`k8
zclPk%Ny@`?3IIZ&u}=UcCNnW300aTxFr=aDc0|yG01$|*j={tDG^HB#>OKWf%}G%K
zFor-1X-Fb6YiH+=&dYk$C$41_pa5tB>}~<1z8_R|KAR8Su-WWH^m1mrqx{sQZ1K&u
z+Z`eXW+($AokqTs#aT-|Cqp+3yS|RGZ5r48mF>Qb_~hc-002!%oH$)qRn9wqKM7nB
z>7#+{0o5*>>WBXNwX0pXJUKZPNzp|HTBK2`V(R(C#7O67XKm9|Rkhh}d{#diRLUY+
z!I+|Zqhk#7S<~;joO&#)cL?)&J3+{BBGvfTmr(L>=l%CWh{wnG(~x#u{iQGev_DPi
zm(X-6ATXoJ@cJt+^?k1*DeLVgukRo17uw$xur=N(%!HWUdgHbAW|wmUv(*Z}^pj5$
z)AU!sQ6TK2-(k1A`~KT+zw_QObi>et-dpYu&wl)~)3BffD!4_T5D?DKAHMbGTbs=$
zM3Q8yb^XOJ|J>5As8M=f;yB3h8TRtaFL(WLcJ|2BhE#q2&;8u~l`x6H#~;i27(fK8
z^VPk3ckjISen0fXkYl|1lRx{|yjmzBAZ~Mi-}=F_pUo3H+RPZy6Aq9|22oj+Pve%$
zLCe!T2Jq5FFfI`N&NTz)pcxW{>xWlWbksXfp$~tSKj)o<0+`zH_WSP%+GR7onK8vH
z2m9ye_s&ueyo@oN^+O<Rnpw`Gq#=Y596}^*-E6m8KVI9W?)%<lffEA0sw!1YDWPA<
zj`b-cTr@%sff3aMPgFg_%RKNT)*NWNJ6E$i@4pYrIuJF)*AHip-8d@XfSmXD57lhj
zbs6m&-}$|_@4WL1f90#6`}C&|7kiOtx7makdypwO5WxQFx4!+gzx*$M?dQMtg*)$M
zm4tG#JOB1~e(&A&adEf-cndp)E7*l*eX3)M(|1H%`Id@AbqbYJ)G_<kr(xhqX(vuc
z4)b<yMmbwxGE@igPtJ`?@tmqATx58FQ%7j(=z#HgyNFj;Q=i;kBz~KFg^+-!^NWdr
z0fGFcU`DV~Cc4T*)tn(Bg>2(CH4Gu<lyXWQYfeZ=CDxh>IE)Yok%%~i07xbdfYrji
zDn70$49Ke;j4{-8O-QD`gv$Q1r_={#r053IQ927q#2BksZFOy+P|`m^MG#qmGAM`E
zA;&`+Bqt`TV=xuaoRb@taxw)X!z!y0M2;kqR8=&)M_ELMVE|387$2zs1Qdv=SSI}!
zU7y1hAv+m#Fl2(JirDqc%p52PB_u-yBc!a_Z8u<<Vq7$FWUnb2BH((pTCZ0rCA!EQ
z1as|@CL&-aZ&l5u{$ShnF7-VTEf#YmTg;ls1YpC^4?B&TuO99*l|`l+x}i-35ZTO{
zrrvBQtC=OjF(|`S4Mh-{2nYaGt?RlfRw0D)NRC6$3pZrRf)RHE&*$@$QdQMC=Yk%(
z6tC{Tor)|g=j^e7(_XgZ(0jXT<IOE%h_G3&4-T)?Rh9a*%h_CsV`h*LDT}IU7zHwt
zrR#eS=g3);%M{0kP<6~VGZjhO?RL4CHBH@hyPUG()Uo>s?t22?Y{0JDEfz;y`b3XG
zpfDRR;BjrG1cXR|DKOqUepJ_W*L6+PhB&+R_>)IRhyG1ud|7-^$;^nuX1mF$cfk{5
zb?@GTtP(Mlmk-HQU2R2y5c2B$Ohr=eKvfbV%&%NM@`tSaJ=9c19q*je8?V1o1=w!Z
zW}->9yZ-jm*J2etzVFgi1H~Z>a{vAZB7NWQQi6V`3X2=J9xEa4b}8|==vQUvwhvG4
zr<8LVB-{B)s%Gwo23V1p5u*6LMSx^)yz$!ReDl`ZZ=0m9OG7^Y>7T2zil3&EZHt;!
z%a9kn_E9P^7V2^LlZa+qFniFj7GyAvSiT7sH$`20zTI@BVxetlg2%31l_c<Ix?T?e
zo)9xr=rSM-sek{`10*t)OBXy<*d8or5AWRHDO53_?=_ttuDzKca$VP(^&0eIR6Co`
z>MD+seU}%-x~_*|@Pl%1Z*Q~N_;j)Fdq0?c)g)#dxSh?mn=LZ-DFvk2Y`NR66|%o~
zH?AJt-JAlU+V-g@Z>&={NLI~geE06%5ANUp`LF!^&F}y5|Mt!Q>qqzB{ncOpwO{<o
z*FOJap9+Kz&mV~@xONo{Oqs&0nJwmv#eDwc?I)Bl2dz);N*0^o-2gID{YGA>T`rkM
zj7r%Kn5x&3lS4^7W&=>w$P<K#3_wK)kwS1JoB)1s@6qn$_~>vSN$V=c$aX0sw!AfF
zpeSJdw)Zzw)!eL7H_fO?ym;&Vk^}&6P`a**F#=+URbBHq9=^1jz%mbaYodYGbp-~d
z7$PwT0}7#zT!jz`%<cZgmzl(?i@L6}2$EsJ1P~yqff_Oew_qUx69Kq!*%TqCL>FE}
z@9LeHM1Uxwj6h&HD<cJF1uzhi90E;gee4JnQ!@$dd9JytD*zjk(|t8(aR@#F#=!Gg
zOMsFkFe<PiFqi^#Lq_lb-(+q$^bmMAN&vVX&8HYDzEC5Vu$GM#xyXWnSUe$_8BGO1
z191o;um}ZVWfdr598lAoNn?z`rSz)89K7`3tk)(&<3!he{6Wdcm;;m4b?}rkVngJ9
z7<OGJB4*lk9W!n<$4F*ok^{lf-h4T$0g{KrAfT$KA~T<zo!3{dFmnhoVXx}@O(i1d
z@u>+~5Jk7U=PY}Rdg!y~DCoFzb6|vvr)fm(ib&V(>bmZ`-VZewFnTXGF-9EUjLuk&
zF70NK3>Tj=_wVEpI0QtzK3})(EHIl1XvRRMYFI{mrhv?*Afkx6Uax1frmE@?`kV(7
zQPU!=@$ON93gR1*pN(}j>a@inUm_x=h%^@98bVl|pUs-4swzSf5I-D3QD9AYNB~5r
zVqgjgy4|H~S0B53_a5;aAU^ff6C4N;M2g(Hq+|fZPyy)Kd8gQNWEo)FrKg{Itg1pG
z>*|zirv^kAkaW9Cp_!%Ab5&Zc^8S^>cHWkwO5|b(41mPz&F21tlP8~eOa*sc9(p`E
zOFwbr`UM$kWI&hs8#5?wwu1<%z<RYieUv}<&piX9djl>wz~uX?K;hBxW`F<S&Ye3s
z$!-G}7ggJo&hug(PJoCU7&C}S8pQJcawaJ=EA(?0r>bdNHTTcYHad(ooLsECrZ9!e
zd7Wlva%rICgBzU^k?|tAbDZW=i99yA_(cP#pn3e-O}w<a#6O*jQYQ8zD%OzT{QT_R
z?kw{-<sM<x`*AUE+P7Ax8M##?!_;?GT~}4;dk+T5IcHIg97ePY$5;(HT^@J0ZL`^I
zMZ|9lFI1ViEa{0u4DL6m>)JoB?$|c4z5V_5YUT7$5dj0~SD*XXbHDr2OJ@1>!3S^L
zc~6Ty48Q&V{L_H=@sB-!`rufzSOssK-~IZp|DEBhUprep`@Pp*N-pUwW^Jng{`nWa
z^!A%?{L<g}Z_aX`MT9hyKGGe8Q93x0hDL-*3G)~izoz4=c>MorhBk7ZJ*Ue?#v1t?
zUJG`MBN9^Nf#Cf|XFq)X-Td%TfICf%pZfI2IJ&#hcUy%?XNU^8T5Vr^@wJ>}yX|JP
zmKZ+r+_R6}YGB%1`9oEnD%)+l?|kQvbJm=towYH9!z)*w|JX-~G>k?ag-Lz^X7r<%
zU%&goz0Izl&zcbU>h<fN{_N+c4X~&XvNQjPSrp!U{jE3Od^csOYo5<$P1}C{3xDon
zX@j0WffS<$^S*!Q{nuZAJxeCUS=&(HAN%niZ$dpXWu0wFF;-Pwciry({RgkU_8OWl
z7c*wAs_NG5Tg$z}Y0fMn%tT<$;9IYUH{X0yO#@S1RYY`f<*-@oyLrZEs%hxkdgdd&
zUAMb`{}_lAfSHj9V_h{%KrtJTxkPr9<X$j?)%twbZHbtW4Fr(d<rNVLWaHNqni_Hd
z<n`v9ATdG$FvW@~geampD}oRjA*cxepcrMH)pc9decyAmoE`1~?kk&`enO~1L;&AM
zHg)s~zn><|v|eq7K8cutraUxN)Bu4=OqXpP7}|L=s01_uAttz_0UY{a7&1|aq2B67
z6~P#ZQ_dc&>zF}6Q-eU%?S{Ni4o(NJ0LCAZa7d2YAO!&{C`~OoKZmWB36X)B<S`At
zObt!7ANsxhy$XQ2CkjL!dE$jv9tD!Bnu$ozy1rk`7fnATRo6!|bIH|ElM$}sUh2N@
z>!wB`=4hUISo&!pM1=we^>g6l<TL~>AuEO)Ev1BnDCi_IG$3{%F!fzGpU*byRo|-`
zGLA(r6?iBF4hDfnmf~kW{e_g|`Hyvm7(*N#I-_xl0hD5_iHV62n#1cK`TYJ9^Z8s9
z6mT|QWc5A#sHj3Dq7WicWx{(0x4Ala;;By=uv%E|A9!b=23qizhCqQLvh5w*c<%Yn
zS1~;I@r4@I^<F(&Jo(g9BI@Q1fAyg_8Y==yBG;}xb8>n@;o#b>+08`Hef)VG^&6&|
za~eaLBB%i3y2FE`+vh7t*={|4tC}6m7fZ0w0^%_Y>eW3HR(;pCi^I(>16IIwyIg+a
zbD!EjIOs)*0V4jh_g_(F6mfrE5nGuH2QE%IcgK}XSsPP$t@upbgM^d%+(+|-s3T_+
z%i7leR5ZF4mj~?}2bciU<LG)?!<WjVcwCSGWV_v*<w2<6D#zIi9X88Z6CRzOaHwZo
zYd_Rg6^MQK5kl}ta8=DHNZ7V*&Y78qp`UJFRn1wds>(S#L?VQ0yX`_i5i5I2gDf(e
z&;4XMIXwll`MV4kDF6T<07*naRD9kxZE|NS8G>aMB7EVCpL_ZvPk-yhA5?WU+uK{N
z4~tpLQZJj|`sQ!#*6YRo{^y_l#1GznrH^zso&C!H`giu5*$2B*&nCh$Fd!!0cHJVx
z$8JA<_RbrImL(e@v!}(CB8HGWGzrHYiC!4uN6C1p&`3l8k(f9z0A!JI0YJqNJbJCC
zs9+*8q@8L~%ZgRigh*ZA&lgQGSB$iELlY4(>vPT-x*pUh3r3=$?^TroYcZQmghDm2
zAty83Y&um9p+X8Ju)46}JR+He6e$2=%5r|TIeGYKNJ2n$({!Bx2FU^-CHT_}42c6E
z6V>ZYIzL;TK6-R?^+?qWDQ79lUGlz!m_rDGLLj8gX8Y>PudcVNTQ_gEP1DSqVMwzD
z7qm9IDov}ZiXk9i&id*ruhx-{u3RC)SjD5GE4nZP(K3KRFyzQh(;(6?q#yq9#k14X
z>({R_Q`6R;`pjqBxv7e;30xr&V>O%25HTlx<(1ctA0F==>^E&2Lb!6{=F#;Q$@4q8
z$a~A)28KSr^wKM<^;y%@vvwXLA6~gK-zNhQQQ`t87z<%k!+ZDc54-cWi4})sY_5c+
z_IxNe1RG=*7P(=0$o*=w*=~oN=gVal4IJvG-P_xH`0!!Q*{fJ$2BO7sVJe%|>f~fc
zFc83O*3K8Rrlt9O&QXsaJ`%|xaLSngDh^i;_P3kO`DT4``~gZgi}w6;PaW(ZG7%P!
zIQU&p#39CQpI`dXD>)|usp{A?@%qghvw7<$w)<!sYO)F-g;>4y&fWLly8|W67>=%9
zIXu`mbSj^42#A=5LED;$cf0)7+jlm*p2!SxQ}gxfN6Y1Mbl(Diu|ZDBlaB7+dvxc6
z2O>j=5m62fmRGMHl3ohc6&;45kAoQwz1(^Ke%E)z>~PlGk3HtnHLq(!2>p=ei^Y64
z?{@wD2M^EA9>u^_6{@N_I=bSw--Pz;`##1++qB)TzkBa^x7~(F05+euhll%MsOCdu
z6w`hfLI_RUZnoWf@7~Q>!bKm2aB&%5*eNi?FylpG+nPtl0=cvufRKR!Ao{s?c+|S0
zR@IOSKGMoM3<C!+!#b3rjH>1SeD8qF5C}u?(C_k`(ioz^%w~ufs%rMkbBAW|_%lAK
z3sz$KtbkdFfP<M50fe9`AugVH`s(9P8G86;hzL~Ny%!>DB|?P2GzYM!pZSbvzV*as
zm@5u7hk)cf*XauJplJ%B0gK#(=Rf(v<J%nq8HU)*>t;UW<i4Iw+P%Dcm{_uko3b4a
zTV%B*i}r$USC)ZpAfNIuY*g5eDWP_0iE9PiVe?s=bME^d3<2Wfi)%BACW$^Y$8#dL
zO*b)&YZG5t-ao!4L<&|Clg4G{LAxMJZ@hnpIMf<y=86bRa_XD9G1IDPa?WU0aX>)N
z0&|Sn<=9ald&U_1J`wSDyA=`lqx)hQ08+}{QoCF>rPOyr(>7;kXGBC~2&^JN7$bMP
zjoU4buI&G#-~26N0z*dHWB!GI<*$7D3ok&ZLG1@G{>k6^jlVxsbf&|q8<ff}$FbH3
z+UH@r+dlc^Gr#cFe{Hkdr8FeUcTPU|2mj<ZKG>d4CVwx1yiN2pJuDx^Q7}I4xyyAk
z!g1Uzt2SXa%)JmU<8oMZQi*D+x*L+1CP}I^46^O|tG<^R*Uchsz(7E8>qkEfIpq*C
z5^r}qyc8-|#!gmt8pIr85K$4yIbkX~?Md_K(;#mR5km~s;o+6z<3|`$s9MA@Buzse
zqok+y-|5+;3UxCJvE~q~s%5TKaY%WAzU*c%PeKSWR!j_tv)R0z&yi`iShP(OLdYo-
z5)nJ*Vp8QGA~7u%i>7V~#FYn#IP?RKyiX`korMtVx+bEwY4#5ecbjbpk(dy}&?glI
zQ;t|bj8vkd+qU(8?=6=^lyd@vl(VQp9*B`NARz$~q9-&dVAC$P+l}K7v%q$@JJ5`#
zs@VXMxqKQ-4IqSyH~_N%3@YctZWgLKRy2@nvDA!}l!{AJQ(m1u+M!a6Mku09)3&pj
z$6!wMB>;#q%oht(U7xQC$)7am+;v^s%$AF}tU6!li7E_IQ+WK=%_|3cZ@%%y>G^pK
zPzBDKyFLM07C|vj%@Pq&i;;+^Y1+1(Z?`Lekj=W3w!7_oG4nx%D#XbB&^tGSndY-O
z$0(8*10wBqT{Ekix`y(cDG~KUzk~(H$T806`|I_+uIq^@FzmWvHY@oJNwg+bwcW1Y
z+gl8S0CKm>fR=N|jJsVgVnn{OK@njNUDwU$a}I&18ai2>Z(O&uf3VnfeO=eyEeH~G
z$SFCc3ygBo^?FALL^fY67R$X5LU8wlf=EW@<#MU2oAs{W_2=hjgcKqXaou=LfD>_g
z+jVta`>10W<m~J$j9cT2NZBcrP|N7pq|ldOgneA<XfOP}P^SEavxJ~lR`LKjml3S5
zrTpj^c|5MF@DV&xiHG;eiD7Bp&`0_}HUb{e3zitdG)*lYFBhYV5(YqE4B{XAu{Rk(
z9dJq9?gIn^0ICCNU4cV?oJ@%m;vD_9Geu$mH07$QkucUvGj!&yA(;UZs>x};zL&R3
zo}l8B;v$^CU?*Jcp{G#lF{%NlA#fQzjAe~;9!4~_su`?zo3?IUvV@3_FRnF2azV|)
z%PVBF%YK=ONGHc9_syqhW&}*kB4VH)ed?nK^1<075WdpxL!S^(B*)Nhw;d8xvzZFb
z+L_;-I8IExJlA5*Mja_`W<bO#B}ClqIwI`*e!4KG1%&_DS!8v-n%*>jLQHkD-M#U>
z?;~*?nm6Bg<K;Kr%VG*bqJQCqFF$ep=zsouzh>3^7r*k=FMaL{|KK<O;rr4Fl?4<M
zfv7nX!?dm1SKfT><lcRuGFr|k5ANPSTd#~1O3;Ik3r1P_<#g52B{)$vtRMo$ju*iM
zP}T2U-#`)-RlH&`F=lt@Rru7?kJ;Y52^`pN+_(~|$Oz07Dt5gzGg%1CVL7*3x33>|
zqM`;;#c=E9wGg7O6=R$>spTX^#G|WMLumU!Vx*>N7V`yDh%x%gln~9O*+d)|vAJ>c
zMp7HHs%YCZRojMGF>{O|j9P946j6uyUAuODwcgD44w|}BwRX0sn^_1|Rab<BP~>&Y
z9GGUa`TqX?b07Wa`T2QOg|=zfzcf}HE9MwNEa+{*7%QgGHqB$VZ=XE8pL0$rRaKQ#
z2?>L%i8(O)r>bdMpR6=>)3mcJf~EkJQp!1TsK6`$2IkFXyO_`XNMR0(#q#*!X(Tit
zBM?JTBQn3KryURxA#**SSM5UVVaiAx5Ud|$NSUh=ouw-NI}m`8DMYFO+dw40>a-&j
ztOF79R&`N_ST~|3swpJ~R71BTn<y~{W&sefA>|k?XBmb*C7DjAl=3n}W(L5jsyFL1
zCL@DxNF0JFsA=E#WhO3wsDbf`+t(uDa$c|7$ZSkN!2O_-l{ie&6C&#R-n;bqY_`9@
zJYPRT!~moQUElY8&!OTn>oR8UyJ0qO5wV$7`v(W7rzeJH2>p=yKGk(iB`nGpEB^do
z(^m7voE|V@06@u@hAg6EUQ^+@ifY@oDeHXETsc~tot+^PGxhzDQVL;QEFvLN&H{ij
zhFRMj9UZP#XWq1>B%^tsLa5v{1ps}QVyxO(<JDM710Zd;yN3^t_xBHGv-y}e6%1gt
zI&a%qtmEGP-gdiADQAV%W-F%i`FwA0k0`iM3`{n=En#Tpv%SOp)3ftn09kBEc^dZn
z6^Ns$P(=U<z+!Y;9f(+$vKB5BOoWO{A`$dYdtd?t6_b>+<Y|IXe8#S#)UreYV~)Y8
zCL$t|t=#h?JxUeKoq|}%8b%=mUkau?XqGWgeS|w2j{JNCB2{GqqyST(udj_k#~u{N
zyAQ{ugOy$!Ol^#2DzS2<c{BwBD%5BL17)rh6wuy1z1s!MIgfAiMP_4hBu(TEar%W<
ztp=Bv8*Z;8Ld)`DX>_@dCVTR3w=EG8VjsQzQ~<MrwzknPR%l5Ge@bOt0_jfAPCSeq
z4UkYY8zLCpJi4x$PB)vVp$)aJ)()UpZ`Ni;Kq(C=<*KR;wC{Tt^rn;?Fl6H{YLfDL
z#n$(ok4USka%bQrcQO<>ksldqlkpkRvSdQ|!HX|u3I<Tc_`@H)`n}iQ%603aj%S~I
z!ur*BUi@z6y}$TVKYQcq(@`NJjdCipi^2vJY?u45|N5`ZV|{e6uK*?{mJ%dizpEMJ
zh3#t;8{1`BGU7!jCyuT#L(5s+wmV5sMun$o2~NaIC6|fj*<$(B^H0>>^#DeQs=|Z-
zw!gnu2k!gcgI3zMBEWe&zjpoFC3H8qIE6SMLfbZO+>as5XDtHmEfzPf-AXx|q91C^
zL?QU^p3UZq`9dX2mc?SRzrUYSzH)T!`Hz3XRaaI(TI7_B5V&a?B#@M16^@RM_Ls|>
zH*bFGQ$OxixEc^~RaLQWkwO-YAuJa&6)}<Ja=BbCu3fwO`7eAvr8H}slylS8W-uf}
z2tb%qHd8=|Asikav`u~U=8b2bdBy{p0WGUEO%r3Sz$xjjPqU^`Eo|qj*KS<BdhPJ=
zFoei~Ma22LfG8F`fd&9$i2lyD?d-`XpPDW9KmN(j3^{GPE~#==$Ep=8uj<HcCopB^
zs&1cs?qfG@-S%`(Ul}&dUf^g*mzo*?M2?}E&z^qn`L26Xa#9%}%RGdD47%ce@H$CF
z7*O47g@^_R%Vo8<40W4DtEwTw)%qmm>>&hxYR%d?A`|1@{(jTMq2GaJBy8%6IH<ue
zqziBrU}Qi`OnmF+m8Rwx!)~+6sf)3~P&q`nij|)cIc3iz4w3f{_m>BIA@FK-etLS$
zTset(Og4lp(x)7T9Aca=<~MF!uj;z*cEix8Jj7UsP!&HaGZGR~-wiRw5NWZfZrr@O
zUT^wgV1n6f!5l8>2$6^-=k2aX#QlT)M`tTy?)#3=vZS1)u3IZ~io%3(l6kCR-NeJA
z!>;Rc&ffdhO;c6TOmnunj)-)2cHXuvqRr;b-rjr|q8nuaxNYZd#P<tc)%uh}%z^33
zm4o$qwcG8oW);avX0utb>=P9u2yj(Z!;t3lcD87PjZ}flJ;#Mk$E7`Fgvf;BrrLGY
zBH}_KpKbafTf&DYP5ijc9TS$!E{Tq@e3-qXHH?HrAY$V_JtGw5Iw4Khk~3JzxlK+<
zcUg`MrG_YZKtNa+fuLU5`#+#yDwfiqs)ZqA)6xJ(sgoB8hK!@xSsZDANEaXt*U=yr
zh!_we6QLR?+Pmiu)|T@0YEIu`47w<qtkFCL7YR8dJ#V@;Wu(JgKsCla?s%h?w%8Do
z-99>kWFNB401%?;rKo^$Wa@)|k?w;BcY#0^08ump08$`~*REdOZr8`_?Xtdhv^+ey
zbKgvv5Dl1E&HAoqrkn>Wm}|)y+|t^0ooBYVH_4SFF~*St4;*MVYq#62sy0nC41<rO
ztE%$;CdPPncIMZc`vpX#&%>ub|K+#u+}DSX+Pb-O_jv8lYlWKYgM-6#{xDKBBchPS
z&^TmEs1R7mO=w7fipCTogunddKmWp)zFg1REP|ke_U|0u`Jevb-|JNjO|kfuC!=|p
zC5(Fbi!|(U<_rirVw?*+%M3l*2CzW5ocuFN(zB_kfMtRl*vQOG%ae}Kb-PRyW2{2R
zIg8{GSBn!P)eMM`*|&F)`hk&}rXj3zQm3Gs5->yb?%#;X6R#05MwXmhAjQE^9?&!m
zF`FTW7-E&Om>Gx2A^HwgvH?QV)FNUQ0taFO0OsghUt(sC<F|-~xLH-py*(yu+Xl?i
zFc=soPk+N0jW~!X)R6<#bydZH2u)pQ$)Hx(l{ij>&{V6Ysj8;yhg~-`b)C`>V-Tt5
z^Le-1&F70M#;S_LFgWK`R1Fx30gHstXWiFt+z_#LzTc(1>-zP!?^4RDB9_ENQKwD5
znE^7zrlG2;+u6(%yiA9QiZrcyMuWHkhN_+sHSK(|J&<JT2kSF!w<Hup5D_vXHB^^k
zDJkqNm(_gFfB`TKy?;A14F$|n++f7Km@jPBAOb=zzmAXvMGLY@%RCR3d$T&mrfCij
z_ss<H2Af4DD+_p^Na?I?39RdS00=SMzI|&L2GM+QFu#5Kdg;N&LDy*Rqa@N)VYys{
z5Ejcer8Gv%8GwmM2*Hch7-M0T11$HNroEnX9@W9>Vquq?ae1Wh<m9BC%>eA?&1+s9
zxWXm|zN9Vn`v^9hO^lH+9$h_LEEgq%fq=NE=zZZe?HRY*Ei)e+9#mEESHQpmhY-SK
z0rhryyWORfK(%d~XFu{x*Y{Z@4XLi{s)`dI9sxwuFMa^q+uQr-bI*n8`S2g;@&!y&
zw2LaZ%4#hA3O}--UtIrLc;%o1r8+K`l5ZT%%rDfU7M&8z5dleos92|AoY;uSFtNo2
zGG17N-3Jvpme?i#EvgDGGsdzm6Htfp5rL{AMP~NMb}JItf`JB)X&Sw<Mdyq`$pVH8
z;-)$@;6kBXZV|_?7#RjCNyDH3?++_uM)MNhe29q?4`bxwkD#s(kqk?s1&&@9=TnwW
z2d8Wd91ZxFhY)P>`r#Fy>R-wSE%CuN!q>{xt}eo%403;UB0d!u<yR_7#z%)&j_*Gd
ziSrQhde?0?B`vQ&F4aHzC0@<Im-pk->}VTG!_d~vkcEkwrdhAo{)oAOcw!{gHToPo
zrJ|rN3EraWG8+|Np>}=$^6PJb!K|&tK*~HHiNkJ4T@SzTm473)d$%8dV%MdA@n87)
z-jW1+=fQiw`zL?sBA4;wiH|R@e)X$gd-IjoUU}^mQAGl!{Mx&(ZF5)Bk^mLQWvSXl
zY6Cz~>AJtmtbBF~pV&8xY=vw-EgcBi8ynIB4!jVZlUnZkA!p}o(OAyroT?D3Scyo9
zH3ioev#*hzkS78;XGB7vJi4xTyRPeYh{&A03?Q%K!O-&tfDkd~+%)Zcu?QS?>&@xu
zS#kex1%O1oAtNy&VOD@1i6Y0Qt?Rl@DXms3w=5UU2V^rqU(J-#gaDw5VSj%K1l!Fn
zYhG`*h^Uf1`fxs*Be^&>4_RW2(4`?sTi5+Cbh|F4p=s*8?aj1l8W9<iWF3YCyT0%H
zv|ewk7-Ose?Ck6`r)*|vNPQnDFqrnkAmTnkR5h>ps^yXiCHMCpJWOJJ&V5P>CJJh3
zqdgLVRE-%p1lJ~&c_ak|b-tyIW=IAUbpz`}mS6?v&16t1j&2ST1e-d}W|D<4UF7N@
ziYY0`woBVCG>cd_ISX+Ju_`)BbWmw14JZP$!vGA7z%n8tF&gBYN9eqnS{0~@6a)8t
zhv<YDV5bxi`%`aY)SHMRNL5D;IP_v5<aQ7aV=^92+>FVkIv$cngdwnVnaZaC(R<M8
z<P(t?D>DrNXbkI{{y?`LfvC$SK(*_3h#Ud|u&PF?#%$wJ3^^$z%~DFtMu;(@Dm&83
zU*~`XMB_z?BYpt94N%n(VBBDq0U8%<2$;#x_f?FDNX&IzN7Y$dT5uhsQv5$l=m@$)
zFNBMDOGLTsE^<%VcxqQ6j42bN1bR$rDI-%W7eGNS16GmBG};$vXka2LWl#%>h1w2?
z49Kyryva5b@XlF8a&qa4r>6US77+~skVX#P=DK%Z$uwtEwK5l0R}nI^f@Z<Gu121e
zW3oZBW=S^EwoMh#Ra&l}K_X@j<D|MApptWOgh64CiWwRh1Vy4?zTwtL?`_XGFvz4{
zb^rB9&77pkK6@T3l?hie?ia^oS#nvZj&hmlPA%ZhqGmU`68CQG9e8996);5k!)f}C
zBTCe#7)-F*Z0?*toMMFwJDsSKc(8YH{OI@#&wTo=*Y3=gA$7ZeIx1Ah5$nY~)|++5
zK}fmgn47weRV<8-i%=;Ah{G_rG&-f^W>Ei{?RE<Q^ZC548!+8$RsbNPYRZ9Ldg<j&
z-z$J=e(I^m+wi>vXa>amgI8a@eeH?I9($^47RSdA5%uY(o)flA!|CRch*~H=u}l9x
z`pk0?=zHJ$qu=<>w=lSNK`f|M2xwHI3t&vgE`uIbEq%006#b(?6Zx+k%*>QQ{bC+#
z1b_F~(3~L(W8!2}#TkbP<e;a~N>un5h+rVoFBT@7mQj*Q5n_0jdI%AKeCS$LalKxv
zstCIy2vpsQX~m;kRJh{kR?|H6DGeg7c~nI9AYnr!4gdpsplZt^lG31JDJ2!jL-NAF
z%!q;kA_oKm3Z_nc3}z5G^eL~_YlaIk1QBnyga5s}@C2Z$=Dp>TP`2Ct;qhtqxhoNR
z@o1%(DsfauF@|>5#=2I?oAqwJ*%V*98V46|f~Y$Ne2Rq3LyT1w<B;?DdX*Ii)vVB`
zBx2@^IU-l1FjEOpA2UZq4Sl3vzEQ~}5`#cwfUfH)O`d`pFp*&q@p+yr)e&RG9Ebx#
zB4STgVgogkUEi-Z)p9S?t&csbx^nS~?>hbdD@HQ&zzFjK&Uff8Y&1kO@M&XJS67dY
zHtVfq$tf{`AtED!<*YEaBqKHl=1tQyP0o3{-MLK1A9f##`YY@M0B`5&7;fIU@xk4D
z!!UTcFP;d3s3Hi^_q}5+GJt>5Z{E83!TaxTx4j=5e#3YcJCyiCPmmBKx_Wq6*VTjL
z6JLp5>S89GaUuDbX^i3U@Zjw1T>3l`-KPuHTrTRsSLRU41qz$Z*3<|im?3ECdkAIh
z!~iT1#TY|~>-EaFZ#s^XY4ZP#$D<#Z%mhZ^0+3V~#~IP{2tcizlEfiI#>;~gkG(Zh
z6HqC53Mg@79tzGbG%ay^TCNTm3N_p#GD@!*IC9fegkb2fArFZ(0PzDuRnbc3fdK<T
ztQwp$YKn^r#AIy3w2(o~)Cho8Leq@N5#tz~2!~-Pq+LJMz%MKYWsae$stc{ul%ehr
zIw%G|0I#D_&A5)t(f?Y#$*~Q6PE+LO#c1CQ&H1QqNQXZ~s2VrH1!-8UzJSHNI^u_|
zAkxtA(x}Vu*~N{6*$mfGhTUctVYUc15?QBm)zhE)v=#K;m^`_e7!2Tv!=nM@@yDP3
zcmDN%`&+;H&AYF>70_WM;AWv1<HVVpf;7~uA_~m2w%zS^u8ryYE><yca1AaRc(*it
zK8K+PsQjmzmYrtCggNP$^(SCfRn-eGeDUu8`R#2UZeG2*n9Z}77ew2k|HdEu-!{-<
zdE@cNo~WuyRW`frdbjCpdz@Dg%67%qB5L;Ddv{Jx&wlEs|9sD|>vp08M*HB=-B%vo
zDPWsv#X43;B4TI&goa`tN@GP2J{>D}PYNop_W1UJ6+pfpUn5+f7<t(=zD5}znNh-K
zDk3STD!A`J2oQ}FjQy=D5!<Gy2wcKH(3nxwRI>-(d0e55`CW(%#)hH>jO_cIYE-*r
z&4GhLLR9BU0*90aBtpd)E77dVi}`*U@}pBzzl&TbjHD`nY?6JS;}GVou<LtOQFjj(
zXTc=b$AZ#D=SeYO?din|sDL>OfV$hWINS^k6p&oBPeeIcN?O+y5V~c>Uw=(W&7csc
z9f}WRL?QH9#nO<(kcXiMqTCIpMqp(l>#r-Y8OFK>!VJKKCXhY3(6gSr+;uFs0iY6B
zF~%y!z&xas%vd>Rfie(wxI17BS_Ncg;uu4bqUyL{Qtj89X1j^AIbt+`5F!#uGLwvB
zyGj!S90*MbOWFsRg}||jwChTXBRR&nK3}PVN|}b4XK5B>kiduM=Q(FzaFi(bVhfsr
z4ef#wGvYy9XbDA%FXUi!(+S!QSOmQO{O>j!8d<wIs&b&P5NIS>DwXy$1m?P`hJNrh
zrS}>IU1wH8@W6<$X`1=G1+bKcVMs&-9*GM;Fs^yPm=I0D@XFyn6Ayi#a|X!XmDxD_
zoy0S)%{)9jG_&=3rT+4n;+S!2@S!Ae0JwJTnyNm0a2%!}u%f3zBNNX{fs#kg1RqXJ
z8pXM4f|dytP{2%eKqP=*!u2dVsY%Qbj1d(Pprlp9s3Ao}u;2j<zBD4dpe7Om5s*)n
zM~s=N0#*t*8;1hp;sMMrT^q=XH?i<mj1ADkqWu(8Uvd(Fc)O-pR6^5qmklceAfCd8
zOXCip0Ai-73MESi!7L>OYPm)ZK@bf<Q6Fk&(Q`5`!G$g%uZpMaL-9mY0f*yk>9T0q
zrns&Pl-C5iD|a`3^7>OP29I?zaG!J;nU1lPG_ENNf`d^{PVTQXc|Hh^u>lD7&iMy_
z`+xu2A31vRQy=~0uImvLirQQ+2WFJ?B=2Jo-O}!3<V#K%3n8dT${9UnlW_VPe>#U@
z@T+~AKcAnUk0S^4=Z6^Ewj#pwZbP9mO|QTHMk?VT{)eQWdEqa8@h5)f@XFP`9{_B-
z+dO)7_6Ps$_mAKCAxt~|LjR<<@7^)f$8J6L7k~CIfeN5z8vgKy-+lQT?}`hUOQo-7
z;I8~K%s{%BNWh3j!V<A(=F1WA{S<k4!`L>dDQY<!-P|;dvQ4r%CfXltM0KI>rC79b
z*Me85Mua98zCtrGWg=on75JHDswPaNYM{lwSDbLJPbPK6R#jDP+io@+kLv^~({4lr
zV?_dE#1LblUNDgc<bYk*lZ$GMOAC*L6oA+n(}=7^X<_bf0Tnk05Ta_q7#X4>fni(E
z0HYQKCjvlLA&~OAP08v&s$@V_Ra0O<@|7NQ@X?=0Hc&!Rcm8?~qoQ+w(I5>&-L@4I
zXMw)USs)9lIH>`F(F_F%1I4zYsEDB#R$)==I>-Y6aLIT?WX=YRD8PhN#aUrBkQxUW
zQcgq8eW7lesfeK^vp^JLC6Y4<VxqC^6NR+db?4`CF%QiGkPZ(IyRO^dy6<=XT9_e)
z2!^$9pZfp+AOJ~3K~!Waxi>`xV>KfLgb=uGnv;`9F4<2>-gx)nvmcx{fmCv2RfiB;
zVgAslHy+OxN|Kqmsv<LMPHJP7sJUoTk<`Z4+bpGgdU{Goj5KEZndLOvUKL$bG{(90
z-EMC=cX7Rn7J<tJ|5yCd_n6qgyxnY$j*d))2~<T#E6rrAvqC0T2F`gvBG+3nm(Q}5
z@Mdom{j&_dHp(ecw5qCdN(KUmCVrjM$UiE+6$)V(h8P0}Qq5l0Bl)muiYSE1Uc23H
zo3;vpLa8zthyV!~kO_yOPpOCU!!>~`F8fiiOF%@&T7o6h!PHb0iA8dZv2E%J^*DY#
zAeiU>n&#qQ2d`P$zyZdF+1t^kY4Xq+5<wR25lr$x#9#yvpn&}e(f&Wi-t*bg>^kpT
zYwf+?aL&28Z+B03Ps9u`0fR(j8O&gYNYfO{CRJcjX853zMOCTFk}Q?|FSyFCa+wq<
ziY3Y=+a!yYNkIfbkOW8~3?=}RV^62)aKpJLykYOPmOrfho_iYL2hXRTJGXmIpL^cD
zS9qS^GjITakTU*DBZ4wVGkOCR;Hav@kRgL>7oIvIU<OF0fB_H?L|>KVn2K^WLdYsr
zLPAU`s0n~s5}7eb0F*=}gu*UE3Uq6B5KB)0Xz_LmWcbwKUd43}5S(rZbG;-h-l6&B
zKt(c>a@8&mewbkste}AEF7BR}BuId$IXGB`KxcanOj4(UGyt+N9UR_@cBxR_Mq0@r
zLI39Jb6<Yx*(aWV_8!@W<xC_g$V#`|bzM<}VJ|T_PerP_wv19+-ZV{9mSt|f9oa2w
zZrQ}SSziHT?W)eP&<HBhcfG2Z1lkda@T;%Au7n^m9#;bBeX!AzCjHUx{eky=@PoH+
zUw`TwPt6yL@nrJg!w=tg{{x>nf2RM#_Ng1Mu7aV=Rq~1Ve`Ig(%<upH|9$1)rlL59
z>iG3{F7v7!(i~y5YShqtz?MatD}#YomnqRYkVkFPf~VaA+GA|8GPI~Dn^yNJEt<AS
z$*JV319EhXcMg$?qVVWaN`2e0inHY;<k62qQX7HV!v)|8O~^(_pfT5sD65hX$twt;
z%O5i^P=@mvd&i0lN`Q#Ogan!t5h<)x8zK@@Tlg@1PJ2`X+qfZ1I4K1{bipR2Xs!z9
zoFnS{WQ8%WurokPq!3);418gaj}O6lr^=DL6>!_c5}?H3ysMq}0Kl49*a=SR(Sd5;
zwva^v*+L<<*#(aj(0k|-^)WPETrS*fj>kvXN5=w^fK`PBzyXnvqA%)Aw`^1qQxc9T
z_0rBTwnpw^LRMj<%6mnZFib{gNl^tw$p&&t)N(>iCPZOjKyc3CsDh^V0KzfG-jP)m
zs=$_O(w@x2=DZ^BL#+T+RZXW;7Ij3zDxyUwCChX;apyoqlQZcOYE>20cx=h2WjVpo
z<kf2_E>E`Vc<;Ho4o;n(&Si4Swc5%v=iPvoWm(r%>O14D8pl4L6`BmbX_{Z#?~Eto
zuIm<yxfzWVR5+)v+Mgh7Fg4frJ#(t6ax@w(7fViQwFu9eBg^{3oVT@Dw%glMmQ~;N
zoLJZbOZ1c=o$c%-f?d}w<_qVjC_>-oq_2F2WvP?_)X6y#;bz&?yW2Tpcn#ib*e66{
zv4AG0s?+Iob8|AP>ysGGjAN@p8oY+q^bMmdwwE!OXhlt3=ABpRUw!ozLRv27P17bW
zKK9X%;oUj1E4Gd!Qqe0nt}PZzR27gI{n>L5+;j2lszM*UN{R?RIDoX6xAXa8xtxm#
zK;hih#`X?@2Y|$~x{0hNGGG1S!JW406a<0LZEWt|??YIvABa#g(GQ&?1>wGH=Ci~i
z$_kF$_Gt6GWu|2wcxF*5fRIxVj%mqBOd4HP8-4OS^$rfft$A~2Qw~rhAz)5jA0wd?
z(XOYW+VG)Z1th@Wo_*)d4m5Fs)i`mGL8=O_Oi#LIUIEN7XT)J!J8TozoWm<u1JWwJ
zdX+RqsP5wKzRQq9SmlKo8AFEkDk84d`~*T64~}k2#-C_rO#_)3n=wJ<ZcY!k)Q`;g
zB~etGrtP{egn&3H%VLnyD>FOiMs*!yv@C(5C`>n06ot*40iY~P(<xMl28Zio@4ZLB
z#bP-ck3=NJ7(!^<rfXZPPEv{pFqw=_W(!4Bmbxkrj%EX06d!%yq4&S<eP8&K&wuUZ
zm!K?(JTu~7ed&k3=ZAj!r+(tYAN<hQuf2?ZpnxGdp#5{_nniQx;NY28Uu3k%6P5zd
zJ4D5`t2bLxbCoT_;Q*_5b>MXj)M%wF*TT$o8t|Y>NI+{zk*cUlNPUXLEGb#?sGYo~
z0rB2Da%EX|eP@4P5uueBJICWvUIg3h)cFwncs#yw<3`tMHY2RKSE>LOQ#cfx!{1c%
z{5;|+N!EtT<P=Z^LQ&Z1Da^rpa!RNwNj2pz3YiE65iy8}FKg$#ImlJP5fw#|OD>JN
z28ko*L>vQz$~XoI(3e&19TlN)1i~zm02l!|i$e*pAXiw!s-V&*P;$(!i#nT=L`_j8
zS=^u@F*srHH564Zf~D_ACB(Lz9fzYsZ5pTIL`-$hEP$knNS<aVhyj2kMpSjc&@V%3
z?IZ;v22@8v#7Kp&9VpdXK&23+7!g5Z@B0oRTJ20AqPV-am&O~5D0rA0Q4tEx_XFEP
z07SXz;%r`w>O@2ky!U2QWs#J)>wDX1i}hYvY%jUV0~wF%?X9ijc|RU+A&@IV#QOT-
zom<_ZhsmY$6R>*DMwURV8L@A?SRy)^&VqSNiI6d+H0XR!OJ`gD+3=iMjF;z}i?J7G
zJVlb2*hdCNH~_$WJ_p;8p)n*9k>vwhH6SADoF9T=x$9czNK`~vL7CY|_mH0sP+PdD
zBD&>rvA4H3+1R*q`;Orgawh@^hG0Y^nggnKZEMZLDdj@*=oAr{lL7(JYINtkFUxYV
zSj4^`#_+ZSHR36dcZMkL`!1y_XNcmU5_5zOb-I|(XEPOzv1Nv?(Y@W>Rd5QdX?Gl1
z#(2DX<qf33+<{<BqsJcKwFjI<2N_#N)f<oP#*Hg&)89V01uQI~8r}2c2R}5p>xS7~
z9xSUPSk7jzy!^tl>4-FT@njLc=Lhat8N5yr&3ULr<lT#}ymsf#0ivzSU6kDm_dT9v
z*Lh1}waKt2S9$yL8z(1=lzL8m;=)%Kf9S^^TJ4N6-;7{!&Yoy7pI^TG)|+o!2GFCU
zBgCzbf9f;4=Px-zC5*stEN(|(RuN^pw(pt~=L!6JO4_;u7>97t(=qdE2QX-_^HpsD
z)`&tPh*$`n+uo5VG>r2>l-ABvSmTNeGB0%~HxF)$Ls1!yVsm&?W;UsgDU3ti%}zK)
z06sc8MxwGT?Z(~O-hSuCjddRyfQH~Ky2K1Hrg?6fR#olx1prA2h>ZUn``!jn<5Asp
zoew^xSXISJmTzw)qLxM2+S-cgYVAECwq0+GGZon1-!F=A`_3&26dfl-AqNW2KL6a$
z{>)EtA8}>k8p_JcmoJC!t-k*Ue`x>y`<SB(uHof3-+b|v+i$BRYgR=J5w(KN*oR35
zjr`j7E9*OOm062<)&v<TYHgr9O*=3c4fY1@4~ap0Mi563f?rY0m^p8PV<JbQAj*+N
zm=VeQke8Zhoqe8~I8Uo5SA>z=s+_iQv>7aIIiX-zh{nV#h>G_fz{bPqoZ4JhgoTq5
ziX;G`EK3s5eEJJVP(mbdXoK+l$yY$Yx++uO5y7wlV_{RVfv|{5IiC0o5+MKxj!4N_
z@(3rA9_{fGBex(x=zU7AbyPT#Mb}Xk+QkVU9LV8OYUe5}l57k|il|8HJO!Y_69}qK
zYLWy8cgmBQ>ywI@KZHe6WEkRM6+AN_IcFLINu?&AOKmlXv=9oYIH#eYW`V_2T<wdh
zL||0ZH16A!Iz?m$(P0F12&2u-ZgeasGw*$heQ+*0$B_w96$C_6>Sv2Es;h0MgyYG0
zvfPX*#lGV_eu6;`?UD{@w<-uk2vrrfc6VCri+U$@X?ij}JiLtBkBai@tyxvbxxI-4
z#UTUGG>^8+H~4Uj?0uL_CSB9DZ99ahW{n}{pn`l;n2*2j`?4&W#;K|(Bj~!_e^|HW
zV{oxpj7Fmnyl~MbUafW3p0AwR<q%^`%jI%1*(l2r0GeeZk`M`oh_KboZo|vIY5T7C
z&IRYW?=6Q502FQYn!^@UM2TXG%jL4JtJ%!;UB{9vg^+=>{>Gt-fOA$vc5Mq~X(<6I
z_I7v<Dibi2oq33vd9hd&Md5L6s_cn~^zhDMRo2U9;amZL_gvU7$^up#iD8+CnTAY<
z(-S}tjwxx1=zVea?0&9RWYA&fXf{CSQ1N6sMRdxd%v}$UKl!lpBttn5N(f5ikPwBO
zr>0$oK-6j9wO!ja%etz^m{+7LAXh$8$&n_RO^^GoMFbU@FA{_;ABwePnA3~LjKRxh
zHlLkzU6)eNF&!N@@BPq+708jbC22TVl~tT`MDgZ3*AEX5Vro<DQ|#{?+}hdQw-Q4@
zd*nBk2U3cq77iXHR23WwnL(Ikr{w8Gdf30xs_|V-s!>mgWkWEQ0ze6}A-v~9Au!SM
zT(u#wQ$S|R6%pq=g13a|fj(^-2NX~QVea3)c_ZZkH4X0)dGdu1#J+^E9mZ8Cn-o>0
zkG&7REURpfcU0GPRaO>m<DEmq7-Lx$%<No1#Ig)UQ7o6sl#-nhd9vzV+qQil%d(Im
zX~6PyM|C})&k=Dl8OOfmD1*2Yo33fQ(m6tfz1=;f3SWB5-r3`mljG^hqffp+zWmCq
z=`<z<@>`>=pZbZ<w0-yd3onp&sFpM(s;C5ERKI=W8iT&)J&z`iq43l8__eFAb4o%P
z|GHYHNTy`lHp7ge#`zkw2!uK7Wr!?P6?7i6{Atk3$?Cz<(_x2*2wuH**dCvFgtDZa
z?a9v0Wbl}QNf~nHpo$V59-J(fecSZG`=a!tx;nGBLql(EAE)E#aVE+DHf?u2oiVE;
z^1(arw|90zVX{OEyeUE`LMWUM<eZ4yx_zf-5f<-#QG~j#cXs!|rl;yelGr&7h^prK
zpU>whCGP_O`Vhw3h0n}rM8YEY$#~p%P2oc%jI4`AW9N7o3Kl^Z#+y!Afd~*JB~Jjr
zBvIOqr*rH(NGbJE@}gb63yKSdpy-q8NgcQhv7PCyTW&VPw&9clfEzq^sCf&fYEJ<y
z?)biKQc92#arU(d3&)5G!m5ZOs)EcmlSEl5Axx4zh_Gz8<A{_9{7hVduEbDy=g6T$
zfYf)Kgir$oN9+o>Y&W*{j(u3D*gTRsdFMo&^}iqr%DilN*}%Al(v3H^E|sIUjR4>Q
z05GPg0Mp~+<#Jv+u1g4xywB;&W$E@eCgc4bfX!RiZXZo&%qftdcZ*){9L{$)M^)uD
z`!gAH>kJ}lV$j4AV=}0Yh>EIrluJ9c*kmi@EWuM_j3OL@55b`EI;dl9a;bxR23B|}
z+n87)<PeyYBTHZnZELB|=4BeyHK=w?tK>9io15(oRkPP#0s0u*w)NhJ;M*20yNYZD
zll3sb%tinthfUL18SR6YUQGF#y6C(SLq!yv=A*3Z`VfkuC}Q6uVv5mT-XOdcRL9H+
zXgQV6IiE+EgzCwWM^puO@#1~c=?S6pzBqUOo|XD%@Cl%bdgrZoTr5%u8!Ql00>lR%
zdKY<TBLL2_E7MRZQ6QA#<HOC({gc_WZJDS<H#&FzoE^AP)aux5CjfFjki(|o#I9{p
z)1<Zqbfe9!4f`3VBzlUZKt!h?UB_iLnJ?O|>)Vcxr|HQL-tWA#B`#$06|yLRBS#+n
za?yrR&SuNyvOPRpOi$?h&z}dpt5CB|ff=HeCB=TZn3o|qgswmz)cG8dfuu)^=@GCf
zs|dPWD9Au01CbThSz$#@L%3Uwg@dHeQho<kQl?1*0<Z+dO-&DwJhI`=QkqC8%gJbQ
z*mSmlv_%(^FN%6x6k+8*9qKMqZa~v5u1^mb)=8BpqO7tF^&>l%-hI!*JLUFkUw?VI
zScDL|zVY4<W@rF_`C^e$a^7bql<IQX^u1MrXsN)=wnQ|sw8R)g2!r?;jN?s&^Ti@~
zZ`6(=1m~#ldrlERJj%E(kB{fVX*`}7j;OB6*WY|T!|MrOzw*}E=g)lnQ{VUDzw`Zz
zc^^|EPiObfS7q@Z|L_l<zWlP3V9W|taE^fG8!tTf+Doqn^pnY$0YuW#^6*xFtO0X6
zWM-q;JGVxv$<$;REE#T?D9Oq-XO=7wUWM}6<Drz}0&(c>0YF$gP4C<|p5H$3-USCC
zgpJK{<!#L6#^Z77qjOHAQ_z!><;$<Ubu#T1i+*#Xs>-mlJK5gZLJ<#u0Da&0eP4uN
zf^!A9a^=QbZ(Tb$oSr?qI~t9A5#IacMkp*))Xo7Ua-k>$lzccoJo?I4zj1VYOh`LB
zJ7rlu@X&+1XU@r*B-A_do<i{U=DhUc%TGW3%yf3LzqeOaqn+K|kACt~WxWlm%8CfF
z@0QCMr_P)`%h~KtKL7a}*RGdku{9ZQZEZdIz7K3|oYCZjF{+T$wuHW!^U)FCIf@4d
zx368F-nvbyWl<7g5sKaIT_93$EQkoLqvSwS*Bwr|ZG@BY4P-!^>#&8)nnZw33>uW|
z-c<lj5>sSRQDo5-c2`9e&_FBMLSez}2qFp5t#b4fEp!qU9gt&C44#}TR7fSMup{Su
zbbi^U?V^UoJhe?pM8Tzq!J#r)P_r|MQ%Z~JG@?RPhH6|^TN_)u%pw{OkB+*o1HiuT
zIrSU0-xzuCpsLE0I5<*(P}C1R_+T%a#|NFNXO_|dqO!{M+w)Q7CsjZI=I9+%qiSb+
za}_^;NHL}5vf0=eg`)DlynW|LQ$hrm<Q;|J>bfRE+dB@ej=6XX06ILJ^<58y!t9)G
zZjP&}z~Mr*Q@t#!@pzOHFPmn1GPCq2a_AjS#$$s%t&ZkqxoqmXtcs@TnBnkfmYB;j
zAgB*vJQ^V)i{!-&qNo_A-MMglvIJGY7-L@)VLTq&x=vK7C`=GK8jZ%Iaf&lgn$8y>
z2|z;`3<0eG%*i<-a+X&SLV@VoHuf<&$^x_Tcr;LzfQ89X-}k-<-dS%-=v}@g9)Ijf
zgUx#KfOm<7tfnS%-cinnSH5)VJr6wagygf#msMev;eb!iNEBBDf`BU3X#bH%?^!OF
zkG&VYuY9QLQQaqVVe2Y~l8Dp?!oZTwUU+nK=l=P8MpTsb=47&6)fKafYD%0_2muM5
z^Cf}r<NVSCPmVSZin5N8d>Gwx@jio@pk_2SGYbQeCmNylRBVnn&m|aD6CUsSk6gI_
z{Dt!ay;00$mNOyA#(6v%?@uPnzK>0m?P~PkV;6V!ca3rcr0<*@Kvj|m&`L<dCRJEF
z$+0ZUwpnDSujH0#4a%XQlJ{b^<+XZIkw8c2M}Yejo~YsRQFj4u?P42JB@mk{&&B9X
zhSB$Z&*-bI%`=xKJ7>yzWGEt&3W<uTcA92+r(a;{Oq+|@LIG#o*1!0<UwildB|!iG
z{N5iK@I+L-4=KgA>%xGBna}46*@nb}x!$rX+F_f5h^dRJ%HFkYi->*S@qmjuIXMxL
zqoc!=Qb#%1HH2_@c$iWIWdPaV-{`N;6y*N<FQk+Ja9kC)Z`~9S%pzf3bj_E){#9}H
zyB~eu#^xR=Y0_^!_v|yzJ^igKFUr`fCL}`962qepJp9sIZ_L~FgO5J;k&k|2G^)E4
zr_-Znp84AC%Tvs;fvcdSwFIQK{mnpN&7)~yS$WTN<sTGf5OTEYO7r60tSX>1Sky$I
zC~6UK&V{0Ay9gPK4uqtV@u+47B_hO71dM@0sLG;pF0hCP8D#3>z1!N}x^?SL{tUYS
z5Qsud(nV&4n8bOnfWitus+P**0G%;FeJE52d_Z)zhhb*tJ)t@x?=S>Mj(l)gSq>6{
ztIM(~>y6385iuuIVW-ri0!s<1A%qNq6)k}_UDzz@jbc=*i-*&=aS)k8QK4{$si!_5
z;K32!xQWLndh@70=?bFY?5ywNGE4ae=$?wOakwML4BN>neac{6VdE=UGbhHnW3hi_
z7B<M9XyU9rx3kWCJ1|((G5~yqO9dWCcEcC~00>19iL?V5V7yM16mmL9(|6wc*}RI4
zbB<Ih2f(NVi7mY}^MX>>rl~ldEElt_y^G_Gz1ggF&~l2$Co>iG<cM^(SfmaL4{cSX
zln^k9>~C$?qk40E?#w;2TQ{$(ED&2y0M0EJ{QBFsJtR*W2&#h4p5NQs-C60+O`X@r
zl#&v8a_->ZXnry^O|17w4!5^AcXqZ4XZIb5%5u4|y3M(8{rW-EEDX$8)vg{@6%uC8
zUVehQt}DyJIYM+dZ%t2*kH{e*)T8p=dqZ7UrX#ecAQ_j<c~Lz)p1<+NRqx3;BGPl`
z_v@;1wt3Ctd0i})RaF&Lolch5uH8PFPJ?&k-FRGWZ^!YtuBsALm=luM#C_j;ADr{I
zZe4%potvQuL{OF<5y#_+LH><)017E_S(eWE!=u^Fo3|XQ_f%BHg$oy|ss=n|^4rwi
zuL*oJ7sz?zGJLx)hB8HI)oa>5kv6us?bgVfZ#oUQHPDFN*@PAhtQ+N6gzL$!#R!@l
zH~WI}ZW0Lzgq$m^irU)U+*H^%eh_9fi>la%JoBpsC<Lbk0_>a_A>z3U52N!r;m??q
z18zxF(P6+~2o&Y=+@<%Nzx1exkPAe?Lcc{sacEo3<mwzzjjHPEOAl?{`_KnsVnGT;
zjpW%LN&@e~wfSLk6eF)(zuxSPAUS5y{y=7@IKWwTU||aBYU_?5iUJ-8M4SRBR!SQ}
zmx|2?CfoNG)k9^w@7~^)WssR*-?ewzn=d9Vl4{c|+hucnd?HYtx$yYzeUI&2xOcp@
z9f|;%?SqKmP;cM99YbK{VbW?qG57BMM?Ut*`(AzV=|B7GH(q}J%Km6mRRlDYh31M<
zO_0&Gts^vTA?MB@FF^B}Q-qmq2pMBkBWtS|VQv*!Xe%G)1c1!UDH-}yx$nBgy_Y6~
zLL?ne8vv-h56&%@4H(~y2o*NR<F=pw_P_g0gsLv;kA3VTJ7@Oa_3$It4zJzj6D6>;
zi68y=4}Rc%PyWyU`~UKu`yTn(pZVFhE?<7(#plNxn~%KfUH9zozWwjte!Dy36-#E|
zr>t!Y>?;oL&RRxtgL%R-i@;gvf-<ZL>+>jdMgK;0L}u_{?G!{c6{R;IzxNIZMTAo<
z%QA!lpivd?$$98wn-X*Cx+rCYynsen-7%`l!dc8k)OJnR#=h@daH`IB^GU#Y@4XKp
zIA2uNs3^*mqzF}6jTP=Nb7Xeny0#-A@4a(mHakv<z!LyD64l9M0sx%E=6>XyLvX+#
zokhcXn0U~{?3iWQ(y}`j>QOPSuoy#8iYunec>RVdb&8<kln)nk$2z@nE8Vyi=ZmW0
ziUJOBS|sXE7JdkT8I;a;CGwENtfxA3q9H=ufQ~R+z?zt2N}y`lxr&eyb9S4dXtwPR
zq7C9<KefWrk?{l97DuPb&zx>)I)Lngb4d$OY!-U!Mj3nQItv&qP=f>Ki4@xeKonJ2
z1sNqp6zSRq5V!XBXN%Z2hbc`75q)<50z=OnT!35yDk^jAn`W`IUvKViojH5{o&L_K
zq~LlL=R*-CR&`xD2?XAOFeKKZ2r59%8&O0Qi5$5!+1%XT*`3W!lt2Kw$dwD#Xar^u
z5Xs2`h}%1xM@Q3oRBvu=utZRG<VAQfUzTOC(6C|3tzFl4U7-r(eO-^{^AlBIfv!tk
z*VlDr@1$nf2{ug=LgAd-+}_&S+3wl~i4dh}+9>SM>#*1&G<74FRk^V-+1lRj`_4|M
zzUQ`ULgC0!Q55LRcSlt{3Pm`co@{JxPG={^ylmQT*|hb5dN#nBg7z_b@5%Wyd;7~p
z)3%L*#+dBZ7gdkLloX)vqyJ9#>EHT~>Y537%|3JLPE|kxYntTLQ!`|Y4k^OJUdjQY
zBe%wMJS8a(bcj=kIa#8EnRyT?Q<?`M3^|ij8PW-nJowej1WZj#r>}WnP&hCLrtzDB
zz%0+?vRIt*?V+a!Eg`v8ds^7a#p(_-RvPeA1wFlZbiLIG3J#G}HWhcV3MAy9Y1%&a
zoP@kn=1w4GL7*Tiu$G8UG@vWMmq?`#CAh#C+Zfv(6O7P5w7vK6*7>tly;tLgJ1hjs
zo;CG-MC6A1W0t_o&@8ZP`Q)ABgOl0yE8YA=QlBo~x4FIRLU1(PwkVgcUyID-z?tP7
zt&+m+FfLKP{?r#g|J1k6(FO0Q>srdVN-zY6b6!Bz;H`#w$xNka;Zb&2^?eTmkL}bb
zFaUZiR9Hmnx=ty^*aJX{F=uy+5bAPqa_>Fg^~%eat?G(V0Kut#;-eqFJ&#|x`E~m&
zp555_$<O@6I|oOq;vN3VFaPp|`!3Dqi&0&lIlKLvfABjA02H`S58n6CJ=<q}qVM_c
z?_JJLe*1TS>o7Kj3qSrnKl}sV_o?^X`{1?Lj@U+61Ry40K3%M4yI9tv!|BFi-C?%2
z-Y0Y`%^jS6v}hoSs)!OoRhRF7-=psFcZu|)IuOaIDx4!v6bip+mQ9;+j6_tF#bb}Z
zD<vQbs2aR03fkM-1~pX&A;Q7I!E|~OV;oH;F{S(Ozc3k(n>Kmxs=D+coIkf;6y><6
zL#WHLY`absn6<9PRXHv~`O%Ml^s&dDh%uFAQI>vdb8|c%JLg;o&Jkv>HZ)BWoG&&v
z<GHh+_~a)K505~#2w`JmGARSb2A~HZMmULWJP013xp7;LPw;rQN97VylvMx#AOJ~3
zK~$*P41m5<>Lc+y^%mNlxQ`gqYcIY5ed?M<Qu2;~B^y@FM#=)F1T)$yp{THNYE?uv
zF=zEozBwt6&;b*(#SkfA5@8hu$~iFr))uoG1VB#_gSlhlq4&j8gTAU8e(ZS4u2)>8
zoGG}K=^I3|Rt=iz6c9_p3<!AyQbiC?=$x}?B-7WR5Xa6CayxtHWAfMD?i*bo`XW#+
z`ip>wNhPu*R__4FS*l=J6?<pTzFk+N$)wO(a2$$?yGD|F=Zg{@h$m>;u4#MceGy6v
zw>C%yYwnpgwkG>$&mA7zG2?^x{>F`Wc6N7mceco2mV{mE7fowj^xpo?V!7!1Mj)Zc
zvT4di*xKI6&jg`?0R&VDi%@v)jIwFz+D+SyQVOB8AGm@RMTpFi6FRD^YCIk{&7yFD
zS=v5!U0>I=8&swCGf9cdvZ|_TYinbAeAKoLfX0~m*f(uk6oolQ1Oy!(A0O9s9YUB)
z#zm<5?nHzwcB$`si`yb1`w((=e1xhhN297~7WT1d+a{$HiXz9Af+KL8#KZrOe{y?<
zYlw(b<IFmp1J}QVm`|otwsA&c!U~qO!a}Wm+qw`K*OG%|C?s`NQx2N|8b}3fK^*JS
z=;4XT%uHB2C9{kR%?o(fNb%bmn&CM@8W4iH3Abc*J+)5RuxZ-O--t8sa9e4I@&01_
z0)-uxLb-33w+?5E<+2RLxDKH#deEMr)1=ZC(h*0WprWb@TcO<W<O5Jp;#oXAIGWu`
z*uu_M{qV-#rE+&Nu0s$9<amSBrvwrub<EtdaM!g6sd8ATazEF8dF9z<GdnuJ_(;6}
z;mOWUQI_6$LW$hnI=Hh{6ka2MM@J%>6cgjc-Sf)J<K-Pdz3==P*LKHuZaT^eqLkQv
ztg(*>$ihU#DLEI+Wp9gUGa)c@N+~!mDn5kR^?l#1nneUmDf!@;Q@dQKDms^9Bt)}7
zID(=qUwQ4?o!f_k(zboq_JBC9i><AV<LT4_T4SHS?^EAhyYPiS`%}g8Cx7%ak3Rb7
zZ~fM9T)uYW7e4#h$KL(uxsC0&76)c4npCw1np7KS_s`$Ce*JiPqGQ)`f8+YqQB?&s
z)7WZGe45%Jddeyp@+WkKYt4%Yvna@rl(e?Z873;Y{z1=56LN+37w<dcrAw&~-VZi@
z3`CAdL<A%h!8SFcQN1ylIOl>dRu7Lu$_^!RL=<C+F^)zx014>!_SU6K_aJ&l-gGWL
z6h2gd-ccDsWs^Ms9FHg7hpnycix=;8&Vg!G*F=<3pTUZf3<cyoqQb_;#@5!BFz@bc
zKlYw?w@p*}FsiEK!=u<o<mgb4p_?z8m}XssB;L7V(L$5%9d9S7`b8tLV-}e%=Erlf
z-iO8IHI4aDBpTEfF-d|!7n|q6nEfg&neSx35Rt@e*;bNiltz$81r!xQVpZde8}81O
zR<_4uvt<vG-P}3rDZEb9LMD+=vKd^A@}0F_Hal5yw@H<B$eA|Is0f+_GGEPNpo$W}
z19*hssBlHYu~kTkN2BrCi<hdp-rL*TnCu_kzTGZPqIBLB!C}`eiKr;5o$amtv-`p_
z9*w+r;sUBDh<9!@8dX(I-C|T$I~$u`bv8XL%i@VA-dz+PK>^ZaGAf6#GQ&oS@bSrs
zu%wvw_VzY6H!fYe7-O$s2|8HUMNtHcK(^}n@bDnU6jQ&wJt@lvnN!<#ee6|}3*Lob
z9e;L963rJ2X5j>9&z{-c+lhTYUo2I%EL{kdr6S^h-V}l5vK0aE-I=p{+q+xKWz#eZ
z5wXtLeoVHqF+ECA6p`b2RFB3Jav>B202hVd-QBILaxG5?O)=^mJ5M`1TRwOZMiNW>
z48h{<X;{%pjJ*nk;76m;Y`##DP`FT(R-FK$WF>(DfWPbNySo+EmE&|}mKiwIqU&ir
z!`E@mDg&pR%prm8E{&094}E5_u4ibhE!d3#l>HF{eM#?PL)!Nd!l}JgSKMY*K^qX^
z-4%t(Fo=hh(C$>0n)~ln^>ONcw*NJ+1_CO2*NqOKP}RlF{@^&aJBkm5?e~`(X9c!Y
zMwlqJ^LFvp&EsXW*xK6O31jb^I${NN!Ex_rOK9g_kplVcv3J|*LxH4`XU#Ib(YPDQ
zK{!`UE^VIM-Pi`_x3>50xwwCPoe$r9u8XPdwQYMzZPJut@=m0WUEigc02Jemo3H$J
zznpi=lkI!%o9v$PW$7IVEDmqncwfCslq#oX=^6BR-rnipTwV9e!|PYyo=|9xZ+`ht
zJ|CAeu@$c>B01+olQEcx%zVO@<V=L1;(Vy<x@(&hd+T=*z<a-J7OJ3-a4<X|qB1m#
zxowV7SeO-&Q`GFFm1mxLNx>oNefQpXd-}2}Oh)w^Z@zx*#tj7pg1RUldhmg_-+Zf2
zT2=Lb@!j9^>dP;D<=L+>`m0yo{?vDWvT$JlN=hQ^M1JJcKeD;GDY1L^0}s9O&gGqA
z^5GAC*J3_<?b=&Wm~*h;3dsXVW(`&Vu$jH6MZ#q?2LQqv=5wWBIVHcY<znS*2L&5I
zGbiRK5JR90@38O~u%mhSwe66c1Arn2$AOW7Q_7rU3y~d)Q8MJ2CvU&k@Kpw9@jf``
z1jxc(9C;Wh3U-Uzk!O#pZ5ixDb42E{b81d*iEYQ6ynr@s5z~e*tE7uXhh5(<yOe~R
zUfM*0-SJ7`!?bBqALF8lO`F;tSd4&}3uc>Tt@sY6)ltn5rF<i+1$3y{gKa;HsGvzz
z6cV!n38-DSb^){faYRW)0a*mlJpO<J7V4rzA|RmF6R+O(Rj@|BUQJRx%=!=<<kc4q
zc7_27X6GI#snQ_A^M?Er&K#ALa%edrDi|l+A(n`aumA`k6=I7J6iRZ0INsRU+^ToB
zx2H$fog!&>&)M@Sjt-9w2tY)uYBbr{uoi;BEf<Zbgy1(fH||`6!iUmpj5cS-wu__5
zc>m0<h^Qv-Y=tDsc05W-kwp-c996C?%P<*_5F}fHb1pjo<c|t~^nGszhq8pCs54x}
zz9028mTf3UZCBzwO*U%ll+Ngm-FB2cfh#~hiAvi?Lg#|t+uJdfmU)-O=p<lF1T^d=
ziyTj<063o1kH7cbwi<Ippt3?-oQ~)Kj*gE3C<K4;()qrRh~V5hQV<42u9$910fF?M
z3+K+BJ>$F^#APJ9##aCk5ud&zn0+P9U4J|Beavf)Rm@F578I?<%Q<&FA1US%)4MNV
z)pgyny>1nu^>o$KE@8myovv8c?&%Em%O~Jz&X9H07UMCTK5`luhxncJ$Gg8Gs;BMy
z`s!$iQBYWKX7byH3NosT8#iulVR(1B{h@N}lH!)CmlpaZbE0m!n-;so+kr;PC`>>^
z<T!;k>FtBiw+s%pC(f5bLBW%PB<z<O-|5`KQRUB^Ilr@arYJnR(Zi2E>Afrux0<%;
zn%K42Hoc@KN)fw8v`>A!b^CVT^#TIgmm=@H_SMDgX!ridCg(0rHn&3=n)Y}LXi{y}
zuG^XT&B>Suk7g%t9W+~M@y@HSOm7_o9v$6o`}uKEgvbz?L6pc+8nbVn8B~%Z2j~SE
z6O+U7c(ZGozVA^0=Rg?0B2o}cDmv}k6g%e&+W}~H@1Y9CltkD&7e#DF!5j&_F#!k#
zL6M;C)18xJP#8}p&QU9xSQEmT$%ZS6$m+5D@gMw&&CSVQ{KXg5A%I@IbZOZ(w`WsC
zQU&Mz%dfrM&zBopn+Jz?+P0~R3L<>^$9{PK!uc=$`4_LA+@`Qf#2C!%x(bdyEg1<>
zl@(V#u4ee>=>RCBIc)!v0T}uCHr%riI8$tjGN6ve<JrlHu+U0o?Z`q(R!lcp;kRrY
zGZ5=6=EVYS)`L-1n1(M7wnBpoFp@el^f(Tqb6TB8BK9Pr2qT~)>{25v4p3Dkr7lJ@
z{->_@2;9YPF-MjTklUVE<Ff0QU0k-@bkd}*jj=a1mZ*wmZC^gY&Cx1Dr!X7^7TIQU
z8U}#GDyl5jp|WMDnJz&<1vH5$q9}+8g9?IOy#UBIxKQhWRSck?SF^wZK&XI9Ac~T0
zEiQu%0Mu}r*$-w%fDEUbIB<g!-ty8jg4=e;1eSLo1WKlPQy^7OWOGA8^aPkJX-0-<
zA94yMfOnx+DUrI_(lsr%Z9AJ+8+9m(Nm&M8Jb3Sh^X}j<p+rPlE*8eUAasa?ii_Dv
zvzR$QNr_X8(09>hCJLZ9o1L7@W@pdsBas6_R00qI?@3jd#d&WHKA@;D0wAi(=5ja0
zv8$!Xn?Tw^fna5x2T~R1or)9X!J#fg;*g;r5VD8}Ea+BGyR4iqB_c*e%=Hbe^un}C
z*G1<b|2WKsYu`l1;x}1S@P@kqT7>};8MkW{rv!>gBm{qY%@|A3`Bi($BC3&`Ln1L7
zD;n-T^J@hS6PrQFzDv0u#=%p%$}e1D5iMsbb2Hb*Zl@`y1KA($x|B}kC94K^`2JO@
z%;}wN*Zc5a*Xxgg?{D5T$fE!C@Wdg<4Hb0#cV^WvD6r%tSHNNK19u1beEZ%19T&MZ
z<fp27Kv2`W=9#!;)vkAUrbmxeyB{B)zYpC+Qb?Uc-!da}i0y@~a%X!y-Z-;daF^`7
zWG{W$wA{2F5`z=)pyXJU6DXu6&5!3Cm5@Sk!Fy)yx_*26j3*D$+`jSl$#e=GFBYj;
zb|Oum`o3-Fi<4$PZ@W%7+4QVwTSw{W>I>7uo5k)u_0GAX9(DbKPa4pu*aHfN0+B*1
z#dO|Zf8(#;`erqY)X!!o{ii<pi4T0>gMahYzj^BGPpQH${n9Tv?|$cZ{>^;8oJ_Vq
z`SI`C+b)0i|M&xR^)LRyFMi^~_x#nL|M7qL!*57}|N5tY`tSYJ5C4n*{-3>i^F&ZT
z{oNma*Sqfhjo<t~Be;7nUijIc{>)$e<)1zE?5ioJkA2|Dpa1!v`yc<Oe|6F(LjAix
z{OL;%T>SOl__xbm-}RnHw#VUxm!1{p-hSs+3k0B5SzNt!>-Af=wHPD7@nZh+E3a*A
zZ2!0a;8&k`?+5<+D_{EB3s0+~zw^P5-T%;oU;fKKU8V>gkjR1i+?T#kGZnrVmo-Z|
znol>&$(74jp8D!nFW<hLN@6hPv++EKFb~XfhxI!c*47gl!2zqNj_k+JpWY1M%9PR7
zrbJj%V$7#AEEY=(HYX$+h#5NMX66A=z6C%?Es;CRCIAUgMZx9M<n)D!5&=2~kk58c
zWSl_&@Z`|4t;FmzsJRKYJ6Q9$R+UpPi8ZmaS#94#lGwJ=^$sv~Jx1=AjdoGm7?(|I
z`@V^>>r|A`rIakL0SU!ac9KIyHPZ<VnrY_`h%l?NNMcq{n=k_+115t-fyf$JiB$w)
zu>C<YOC*A1i#DR8T+uru=L+u?oe}{c1@F8=BDSFl5gR_*Mt|t+{E+M<XG^b96_#YG
zLJ;LXsz_e!TU2UFNQxq)Hm%MiJOTg~hvXCy1VJ5uV=#ubfo;e+U{eyI2PAY}rHHI|
z4#7|G%&givyH#&=Rrt_*A3AqteEI6F<2!v_`XnI2)8pf^s*BPa^l(&^b)ZhL@4D0{
zFFGpx&Q>64yCsSb$Hyma*9IR}Vo;;d<XCqD_F4uLsZAeNmD13kC=#h9mkoT`VPcxs
zb)01NBp{$8QZQ^f2<!S5a+OSsr^(xyGofoTw{Oq0|64>&tIXC+ya$C0oEBXtG32(;
zhFOYwy5L{o7ilg04NqrXXwkH+f-Vc2*!zI!z(QMwLap%L=ctNrCr#q|UuKon`fb1d
zwww6duC9Fk45;Gu*FF5G;502F!*g+UVXp?^gTWn7$IdIXR_;pd5F#~9(CN!iL{hO-
zj8i|=U9S@f)?VISlkM+li)DZ(tt@e(D;s`BkHi!aVR<tDz~tN`qcanZE;ZwgQNK8D
z<{~jVkiDJF2Ol^;-Z*pf=KSjQgA^56mHV_@3MT?m?*N^Oras#9+jXgJ`(@iup90Bj
zdc2%&Vb5*D`{(y((<@iselE5twY*qh)3m9dcahqzX%@@2X=5vPo`R}s1WbU5n<ytO
z+&*??4ZsGs@)~DTH@dwf!sW6#IGVkE<tt6!$+98vh3bdi`^5eCU3%`D<=)wy4}S0?
z|K-p8SI0*OU--g*e)X-(zxt2<@uLs!zy0R3to;7RKk{q;<k$AL)9cTFscpK?{=z@_
zC;#0)JhNBbd*8WNZ_a=DSAO;9e&+k%dh472+pqt-tuq(@hkyC6e(2Mmn4Mht+S9N6
z;17QKU;eXy`oKdMf9qfWug|`A^+$f}$N%|1|EC<Mzx{9i?P%}bfB297@jW}~bAR%=
z|Lb#~o3?$Y00>o8y!7hj-US=4M3FE5)!%&Lqn{Y<$>+cDpZ@qyKL_Yy7x&Md|H7aB
z>F@v1?=h(u5Ey+${`)@psV?<@{-rNHeChtr{P^FkH#e4x<=)oz!R$^WQxR4Iq?M)*
z*Go5DKO+<eB^|1s#u2VQLsr<Yga(!_tF+pG*aga_|L8ekFW!+cBFxN|M^Jzw>a7(R
zU}+Zf>d1krGc*qZ0wiW~#5t|i5WgbHoX3g?w%N^1gY6K+)}L0AlS7wcN(#UtDM4b5
zQCTELNJ;u6T~Cpvi_*t_(I87~J58LrUSdjp<UT6f05c!JtO-;ZSdoBHRFW`=#uO9h
zNhXUXu|!4@RJ(myIEg6Q0NJEK%A$%WXmew$xe<sg&PB{}6nt5h=p7LHqHw_%p&;*^
zqoOK8C=HjS&LcSmaKRgVhZXuPfyN|i8A^r^78xKbIdg-Rlduc{en}HcjLb=yQ|e>a
zX^NUyV`Q<683qxP=OzSHG3b{AaG=h9txBMdjo~sZ_z44$7l6atz8?3tuHj_2?Au2!
zZR~AU+NViXmjUaljI1Z~`SJ1b?(UhQtdY?9pu&seJM~sMJ-WHQH7-<lw)EkLwr|wh
zEKj;l7mGzo?7e4`*oYE2mIOoqB8d%j3MypaH8R_~3?o8hWn>F`T083RR{E?$kOqOy
zX|fE!=|uY57L<2gIzVujHtE}LE?u7|uMJ!=@A3s~Gm}A1x_-Rlieaaa=NBs&-`c?3
zy6wDzw4_BAK>#ous3V7z#RfyZ=!#6`^>2&fS-(^D6xnwg_M*o88{nU7n5GQY8r}i~
ziwTp}su-1JnAxHNXFu%PAbizo!w~ejKL1@o88sJAG+c^ohOo7FTp%Z>>fJx2^{>e3
z+<lcNiFW}wR^>?UH>?;O^5(=oMuU+EK%1`J((uIY#dD+0jiB?xn;uh}ICg#NV%szU
zk|M{{^?lQ}ZDeb1n$$KBqbM*#T6VBpvR4)0B#T))o6Y;KlVv1MZ@l@2+k>sMWAw|v
z`ino|bTclFw9~Fh^EuDw^S-5?ecyL&)Ae2CBqB<~r%P3nN-x}D=b+!)*i?k$c4mgQ
zTSuKcn%k<MlX8m9vg^8}$|~@Uul&u+FFb$wjaNtGYCNg0UB9|m%x>MjIocc*Re1Z_
zJFmWRlR~+>zx~uVo+;hzsTU5x;nvRH*T3=f&Q|%<i?34%4?g(F+c$21{h3#o=+VcY
zXkz@<3(r0E%@>96(I?(_I9oI?y!86zEA?pf{tvuQz5CYF-&(Z&PyWoOo1W`Yb?y4q
zM&j(?PE>UW=l0K@J-<y)y&|fB4ghZ4zIo-!m2bZK$}3l{k`E7@yYSv8-;bcrf9snO
zg`6RMpzFI|{@K6(#Csn9&!79_i@W=u{p>HCoXl?AdS^1({P@Q{UXT3me&P2iAZHT0
zB7lHU-o9kij^6zN%fqm>kF<)eg30nwC_^HxjZ)L~=bXq4e&=P=vZ!|!m}vNyT$Oq>
zuPwR($K@OmQcAoU1)at{8I&(~=Oz(GBFfpZNFfxW=%cj6grRd0gv7Fn89)S*Xi5;7
zL^USqqsD|uNVQ)!+9&RMUG~z))b**091|fbi%pDjoI4Lbc2!Z%z8$;IP*lw7lUO)1
zvoNzHqZX(r00Spg$oH<YG3fvVkwKXd$SEN@hk;!1p(v^FE)?E-Ulcz0qOM#B6g&kN
ziUJKoZRjuWeej}y<Sh<dk;pp$OrnW}6-6N?7EvU}EJmBQK;~5iE+Wdx%qq-@nOT`7
zMd73=NsQ9>l45MT)OFl<sc*UOgcEZjgS`kN2mz7;0gwt>@{EE<aeyR3h(hY@X$El1
zR_@$fAT7gaQ)k=TLA%t%c3h3Bs%#U+*!6AOHH`?n!Tu}=?c$`3bY^!Pn|9N=`z{m@
zKCo9;#e6oqdFxKoEc>o2%MwpBPJxI-S%DPA+7a()AT%4}C>vFWw<q@}ry;AS<08~G
z<IT!bAS!tGMLUF?5)NKo0GHh`10@S=>6wr4yTV;p&t?vz%o_yDZ#@MK4@bX+9%iK7
zX-W<tfqrM3s+P}oS`+BtO3Xf*LGGjjof-$3aGtAs^9X)hr@r13=ZW-b9;%V|^2GI2
z)FiSt4PM<|0}}~kIQv0y9l@KKOL_|VTxI;&b#cl=#&tSHE|gG}ohK2^Q=kELtOJmA
z?RTs%Zgaz7e|58<!D-Ip8YFNy&W5M#bSu1epxCS|2Mpi2edod5b7$(!^JmYF0!(jT
zU-rwB>2ce%%h~++aC$8B@u({5{@S&plao%sI|l*#&~&tntePC9vP<&?dtqi3nVq!D
z<zm?`Q;*JdVc}1vC*=f`mgIr(BsS8YU^7p%87}5cj78u3uJ8L8W8@W$46_D-qJ-o(
z?s??BPk!_x=kMKl?&WV>dFfjzD|v&0B5R@O#ee9%@4xceD_7pS(kxqveC^s*Glmh-
z)i+=Jo!|U*K%7pGcFvu7?%A(xjmFQv@R|?w`s>gCzkl=}_jg85fAiIHRDJcSuQtuR
z@8-9U=hbNY&;RlZ58i+8Gta(`F5J9%<LPIfdH#8M@wIE@>9sfB?7HRg;XB7oHwmNH
z-+b#||Lfm+`kALB_}5>1xp4BzbBiy2`D;85(WXNH7cXA8dgBU<vCbWc{=}z$_^~IR
z_`^T`PvGd|Pkiw2{Wm{nE$0W`|Nj5*d;k6$S6>1`Qrh3x{H_mv*BdXq^u;fK=~sU7
zm$t@}-~O%NeC@{D_w1ef?9c!G_q_W(lP^_`EG<teKR}`b%u@%n%^><4vO(5~&;vwG
zvixSKW@QKf20&-1h@qbrmB`%1ND9Vo0%hX}I&?@XkSv!lLEe~QvJRW<LV>)dF=Jrn
z;0~u%UVtGWkwYY;1n3+l0EbG1UKy;NgeVx9ST!b%$q7hIB+6|MeUd(LA2}vTNfU!A
zuyS6ji46lx!(|~hA`I5E3fs;%iRI@=6wYJh;YMQ>7EQ_qo?%pzN*TXG3Bh@AjzaLk
zmu2aS;ELeOB9x``E`$QTcSZ1J@GhWpt}F!9c~9QqASy#58^u#5VE=z~z1fpx*>&Ex
z*4lfYbBCNNv*rOk0^LAk;E0I?NerYwQUWZ5Ws5fDDdceI%@5Y!;P8vXj}Avz4k##6
zA}JE0DA^<kK!6$qz;28Ub_3|SYp%?!9PYj6+_U#yYx!aAbMDQC-O+(ARCiTn-h0p9
zYxut3hhm>8>uCU-QU%Cj-(1O;6+nCD1ufKDj2PXw!pb&tW&srz&RrB{5aAee*GW#P
zZ6&ANb*XKai-qQ>sY~5bB}>lcxO0eE5J8iw19Sjh)d6?{Vi8m$$^n3!&bpZPyXExU
zhM#OM+w8}#>$;q>N?vvi0;uG6*=*|$Dj=yNT^t|y5qFD2%Ey-<xljiNrOTHuG;JrM
z2Zs-vw%OX+(msybL>?k)DkRf?Fe@|L+e?H7IiPaBmw9s0@s;kqG)T;=c5r=8ROsq`
zs6&sez_msZ`~KKkK`eFfnJx>4mUn$tTz07ls5VtDr+R_5OPOb_-(`b(vUdr}+j_aR
z{E2cTtpD<172SU^Qf{;|R2Q!xpx7sWpB<`UN$%5r?z-v-SHa7DXjKUl90qkbn1fZ<
z76T<Gn#y{|67h!Fn3a*Md>H#O*rE#uEV8b8aYC!LMb^gSJug`V`T#8$bkSw8jk0Ff
z6zO}M65NEacHOGIMy1|?0YNxO$*~Vj2Y}$iqG>N~Y<tkIT~daJ`}@n;LAN;W+Gf!-
zhsTT4{r!8lkE`*B{K)wVDL6+?yXti58llXYmW(s0PC2BQq9j<HcE_iuv%C;>&|zrn
zhet=%rgK$Q*OhZs7pJp1#0AagI-m2hTcjMitg4zBIWra{moTHyNc_%?cmKl2e&aW<
zKk>-+w!U!t2e+%dgp2@$BmfopO7K#+^1)Aj;{M5le0m(FV_bB8nPS@ti^jY-Jj(T=
z<Gg!rn-ISH?Z3W!;nM!W-D>0om*4sBbC2A(a&&UEv9<mB8?STjm|GznPsV@q{Bx(X
z!xvwA$p?RQeDw9N|HpGX8^@=oo0~h|eC}I!?p>K3?<)~H{Nk6s^sdJrec^?dko-@6
z^5X3HVC-eOIf)e|V97eE#*0OB``&#aCkmwS__ar$e$RWJf9|=LZ{M2w>F@l`?;amN
z{L?@C!i~qC_}phd`-?yK^UuBcLnU;Co6`+)9uY3=p1*MEV(hv_+aT(LhX>v}P#d+a
z+1ZEBPw71Sd9vA!%nY-xOIXuAl<-Hy@*fkbDl(uqlT~>{9g#AFS3u01ot8@9idR-4
zMWsHK1(eXN+)99gihxEn0buOy#R!gjk-3F1k;M>jUkfv55mJJzoPijK2{UNS=F~w}
zUdEhRvvqY`D65u$$b~Iqch5>T1;zPe88xb!MWo!#nweRZK}FRvOB9h+${ma#3K>KZ
zl@PrH3gXd^YG2o3G$QY-@yJ&p)HQ`rjYi-o)RhZ9R27n`R1ZD?03ZNKL_t&|V`CC2
zB6&|n4Rem1QJ73gMtyuF*&fUM?PBm75ddTX5mUwib79FAB^ZLqr+dg!p_uss;ZorY
zpgNg|wFo)e-<on<E@QV0v8$I|Y8r0aDlKE%K#HktP?R|WL5V^K$f^m@sRjiP>b1Nu
z44RvTOC3mpcB=C+)}CuzB+e<P7zto&a}ykarT!5Ms{>%o6^E-ACTY>AbX7ggtfO%_
zckWz0y3IKs>>q4xZH1CMBw`6yg{f+nuI6%Nv#OGSDwmjm)n!rU%vq(^!<GT++EkNQ
zf$m7EmN0D(1>>2AsIZj!;?;Z@mM43ruUl_b`zN9wG7+jMEB9o5)UuvAbH!RxYF`JK
z*>&v(gtxCLhq3GW7hu=_@OxSlzdls=!m(J?R_!IAt~HCj;aAVh+6G4k==vgBhlDp$
zRkAliN+i^f_EWfPfEM1xYnyXb0LDS(RIa^JHE3TD6jBqQ03kD%IY1%WC}EGhFVR=J
zexnz>WN#Yio8DrhvUXgG-fE=)Uqzt9N}^qKVLjW@Ii~~@A97C3Z01<@o8#l72i%^f
zcF`>ti)MLnvV5>Vubtc8g1XjFWkezeHHx2iG|x^oa>p_gca(h7#V857R%UIplo+!h
zdzc+fPp9=!RgcFqMdxMNx|11obDYnmZF1W=2H&NejTf#6B8WihGCRP@#Ydk0;3t0L
ziD#bK+L=~iaX3G^4eb(G5$se#iDMXj^xYr0{*LQS;MsQ2mZsy;9#%YSo0F5pV!>U`
z0HeCv+uCxIYThn4rql6wwCI{HEr0F<zc@cRGI3wCXg9aE9v&|0(MSn4Hm9S}*o>Qi
zy0JMSg7IiX-ZQ}N?%wU2ulcHSJ^&y(rv!uq2-E4bn;ky!*o`+24<0UN<{=(Wrdb>i
zA$bsg{`}<&7cRf?=FQ60pZw^@E?+qRg+KYj7he6*?ZboL`a6GTYiq0AbD+n~=^M9i
z?q0m|*}wZ)PO@=v`!m1&**o{|Ub%90_uTGZ{?(t)Iil~MH(MIvknxD?9)Ui{57!4s
zLlr!vNyFg#?H^)7>;p+HL5xS<qv?HF0FhMC6{~Sk+ZR2d?SPcX);wjM)^Dl^K!q$;
zU02W?0kYauL0O0ag|y4Wgbc_^2}uaELKYOrT@q$VoO7}mg|h4G>(wHg>P1r~(kZ#E
zc5Dk90mC%OfWRWzei=d*W>iJAo7lQrv6yZj(7RAq)wp(5RgFg&ydT%Tu6$jGdIW@_
zu6zg-f^*(3SMME>NAI0;NMs?qMD}AO95Oz^P&1;I24M0s+bG$S0)QlI+b`{V9Vy!=
z?Abd7j<%-z?1kvgSu2Q2i0Fd1T7;PcPpXt-x8xkTi)qp5veVdgi+OIEv{-Q0YEB}#
zFGx^q<gVh>64BKmI#5NDlyyE&-LhL$VO(cNok#IbQuc^~Ae_6lL9pxrMG+Lq%cJ)_
zbxqT`Teog5+IV!L=WsF})!W<KM7J07MU0VZbT<115MisbEJ@ScVqDO9%4!^5EqU0*
zzaWT1JfIn5WC&a-gTxgF9S7yR-I}Ywnzc1BtQh^}eL1@%mLARhwsCQ<5mN*pQE)wh
zkcJMs#Hi>hk+UB%0}P>OWzaEnw`ZXdMJ6^}w07lN@y;?73gtWU1|jOzB2W<HgR#k8
zQ5|X!vQcKSybYl){WQ)_67xtH4)tt-P^O^3Ya(hmW9TtI#V}a!XUTwX+vJu|uzpW4
zw8nNPuDwZvLQYmo{$AKz{zU38*<ra`sQ$8=9?;N#%j#@V6#-@y$tgPL$I}gD1xXT@
zCr8H*?{jR9+r=!k^R#T1&Ej;{o;LZo&0e#>axxMhA|fG3g$m6Q7afXZB~J60AFv-O
zQ0%zt<Yc~V(sG$HQQ(C<JUm8^n>(9bOrtTJKAfE{pqqtdqcLKP8bLafL6`{xfB-#u
z@|)xHkNm=~e)3)KeP;XIP92={iwCC<Ta?tRf)o@SW`@Ted)K56v$(kHQW%G)9((^*
zgriqq+da3tfA3B^Z#ZSa^vJbqO^&1S#*IgB?C<Xf@0_EiS%~npYuB#5<B^Yk<k!FZ
zoo|gsbsYkyeChmU5x#Nb+Uu{qF{&q{(Rgd49*@TiaOvV@7TMX^o-IyOmfhVQ@9^=*
zA9>}qo8(59FJF`G3PQsn+<a~3yuY};clpYVdh)U$f^#bLOTYB-Cmw%#d+Xdh;io?N
zsrz^DeEY@kaRBG3s;k9(280ZX2oKuhKmM~n`tZ+u=-TD0&b!n3?8^0PyO%C>vHRjz
zzWC+mpG8jyJm9$p9{7;Hr9Bs^Cq?5Ki6X2bxJ%WKs}rXr$%`uRAor*NwyLU95{rDY
zgFabg#K5e<RUA`q)FW646??H0qNp283KqJmikTe~Mnxefgv=EqB(V!vGiXknOChhU
z7Wk@+tc-}I>n+ewX3m^*&RGgoR8&oHqO6*8E*W{CqMB7$O?sqi5o31alBy#NK8!}*
zyJ|f0RprMcsw!VsVQsuj!MhO9c?)s!1^es0-MENg1APlM#J9yn;@VbfW!#5idFp$B
z;xNTwBUR8?{UK9SIih`%d-)BE*m-UKxu(#Pz5xRua)@g4^E#+X?7A=+Yf7?=)p9#8
z8eT5q?4+HY=C(y1I3f%P0>q%%gj%XzKtPCv87Xs&sahuTUIIzL;0T;gIcF7>%$%G<
zG<BD7Zo89*hewA8_wVgHkJqnVa?WpUPWE>9c6WE@&74z$5CowJnOSgXVun&g?LxH?
zE)1!%*vA0%uZi7Fg%~9w*neVwT6nasWL7;Rp8aV)^4fSAsQ7Ccah;lsKh>wQkt2$g
zVBObhZ@CU$<TL(U#GZJFH~@6d>Zr)BUTb`ZJGd}RigrqRlRNm7I(wjp2EKHd<s~fa
zQx&iwK9&bu`$XHqS6jP_A#)$yx{A%~&z?d;$MqTgYL8uTTexBr^onf+;BpfWGStDc
zZ3CYnbo%WI?XyFPA*8;Xo`g=zo?OZ~R#s)0SWMUwLV$kWE(L6-mRT0NrNks6<H=-W
zJkBX*Ny}xMb4<&&Tg>OPMOw~dyXcnfyy@C5w#(!YsadiDb)YH)Kq3^AETUJ4NV!{b
zT13}oAyCR$PnWUD%WNO!q$j7R6mZct8(R~^E-jB!Ln*n$VVN|EL}dXlV3c`4z^nv*
z;_7qn{qQfp`vV`?+1c^lIii%>n@9Vl6e@vo<v_o@dp_mvR&#Vp0x|AA@;JZ#;Qb%?
zP<whzUQZ5BPLEGWxtljkc>Vfy1Ui3y_jG=|ckxEo<&Dwk!rt!ry-Oed$j83-oo@i*
zXjDD*?hjtOdVO|s7Xiq*|MGYL+wXt(8=KSM9gfG_|H<e6)91hO<?Gk3+`9e72Y%)w
zPe1*h&FbXa-=2}f&;9*>cyf5xS8Yaq`R-lsYxM5?-o@R$D={jPLvrZ-V$o!VzxUaH
zFxi;y?4JAmKlr_e+=fv77ys~gRPyuR{u@D6Q6WT6-@o<JoBKC+s?Dv94F}{y=(^>i
zo$nv*=b%i5aRs1AsA%ip)gW5dP2famu}Oqy0-o0wR19FdFjmv(nik27x(IOn-0sEA
zt^DxFi4wB{I1|6HlvFrl91ef=t{b<CiXb#<zk-=fQNRfjBV~2Mn7}0^B@#pd5+Xs(
zni)WlIS;6EgBaL?hS?ff?(1x2;Vdkfb52E^44TER3-bjPLn!xGvVgK(g3bvc1y5BV
z?<SM6ud6VsLtVKL{HO}!5jYn{qfk{u<SOr+4^==S3rTd25D6U(<vs!;p#ZMNcSAhU
zppsm*P-U20F3$2}vSn1U5sMZK7Z->M7nnKN#Jt?QyuR<(!M}`(!_rMv%ksVN=>`NP
zD2_%W4qiCRggK@>9Z5S8Pay27in2J-Za!CvDr{$MnS=vm1+VG}y(l4*3XAyQAvy9C
zJcSWPhax<m9dqia4uq;A!QuYF@i)Km%@6`Ajz^;yF($co$%il=k2a2ukK3jhkLsZs
z>BALt*wBgau*F-Me1u_zDH@batIHTH=%u_c<>+4j!O*rcb5EEW@=n$#Pd2|8ph<%V
zVQ5TgkSM+F3Lhv>!|vAdw%111YcRW28O<U#RR%=(|MJVMZ+v@mFLOzB>9?2tvRQqO
zoqbYzIk@&B<dqo8j&B|+A5$ia4hVuZS5NtoBWHt}GI_?Hsx`=s3$AsI7PPv>hwD>B
zl?GuQ*z^E<1-15eNK@p=8Jm`<+MJ~LCT;DnL$KsJ2(uWA!P0UI^1xh1%<P;mqPRkr
z6H_pEO%vO;ozG+JGV|8vriw6Ua;PGlbL_gNZQ8DD=Zmylv`ssoFS{ixxR|AljFfON
zsH6mmB@zf{$(exTT&h~hsiG)m5O642MA<Q(&Q8c_9qYy7w5k-e!%V_1i9vrHk|*@`
zDxfN&BdDO>dE#e&;paZ|p-Y!9SD|u9h&pdh4^s!O1dJ5jJv#6F`3t*;CwK1Vj=|MF
zy!oRy|EJIX&X@lD&yJ5CQ0=$RU3~J%r~dZ4-)?5jl}8`Ztg-2u#cWhp<MGa~{mQ4l
z`|Ov_Z`7~8^5&bbz4mLr@@rrC!atvmeb?%zKK{wS`oI6Q!aN<<Z{55VLVf@4?Z@A7
zJ<-OSZ{3_uHsWk?{nGi1m#&E5>#yH#=f~rEOz2KePqle?^Zv^x=*E-DlJk>KKD~G0
za>_YWwGsjNuYT<-m(QQy+1<^;fB3Ke@UNbKRuLb6<gqZR{^Z~O@pG@g1Y<Oo5fDJY
zV_wXbt+e+EP+0;}rSK~s{Lrhn-gx=owvl{s;8hJGkX{41*7ZuCkAv%TXdTcE#fA$4
zLWC$_*$iN_N(59GhcK-}7o(;GDF>6TAQONaPJtedVG1njp<IYaNQUrsO27&tkioHc
znLHy2dhjGfj39_g2na$$N(eKHp!GU-0cXyfvWOU_n>lCBENsfx#LOZoCjl1F$ZWT)
zfQkU4Dk`fgp?W~)sPY(`HL~?&Ou@V0eO*_hD%6#)D<JZ9<w77|Qi+{&<h=9Fdyhy)
z5i$LgsX~Og%r*_WgCso^)GpJ02tk8pWd+*n$9K#&F8~!}F|{)kTqP?@kFM0hQL>vx
z)G9C&=Shh(r!tnv_P$H6c4sjhlKm?cK`Li`nYj@<?~%w?E{_6@LcO!4IR|jGOh<3s
zlsHRWn{$@TW~`Kc`Dfd7mz4;Oz3xPjsnQTCa3HKIT?fLP5;zl|qI0l09kp$fn5P?c
zm(tw_^Xc^bh(_Dnmu}s;dvbcZv$I_&n|AmC8Un?LFsj3pleL7!vnN6-OI}?U=azGM
z)h|-N+p$`Q$n_qf5_?g;O&O-U#)MhFr}1o)io7-xE}p@@6D#J!VdH4zepMC0QUS0h
z5=#jxE8%R{?a<T_kqE1zFk5iZ`qwk`#4O^7EQQx{W7nA(RxGN3k7?O2E&9}D#C7b{
zN-bsbZtTa%vKq~=PuT4z^O}>mA1s?Ii|l;raX`ap$hIoxo-!mHDiq!~^;x|Ajv4#f
z%C_`FL%R}%_1I_WRb?bSoMo*$83N;Mu1Nh@+krZwKosh#K7amvRo6|koXuy;`C{2N
z?PAe1i)KEXot!M@^R{i6^Tx*J;o<&tW4bZjs4B0_-E!G9i}`HP%ofXL5xZ`-Xj5iD
zrvS?&NLsQjMI<X`l?a-Y5tsyk(f1#EARuz1puAMj1l%#VDQO2mF)=$74}|K;BdHPq
zD<K7Ris&i|L^XzutM7XEFMa$IHy(XtG^(BD;*ri4r!6x(SF%x!AgQwD#yjV>-g@Z=
zr@|1zIN^W&>A(An?|*9l<?BcD^yP2;@MFL7nQMDH_uqQ;;nC5(x9<J+=RWt+k6yTX
ze(T`i!6!cP+mlh)o5*i`>LZ{3vzI^fncw{LKl#J!dm~EjQ@{4{-~9Do`_dQw;KLty
z$G`vT!87lD-`@7dH^2BtER$!y_wp}&^naA*<o1hyb$KhM(c~ZhcmMd`{p<hh%4T|S
z_&p^0-GB7o{P92gpU-XXTzT@zSMT3FY33KNUEA2$ymaXT-M(WVzhD07FD>S$zyF87
zKTpg3<*5Wf#M=*UfBs*7{?>!rT2sNP6vzvJ0)qfTR-uZzE`9nVpZu*)ed^h7{Kwb7
zdWTopN4=z9iY*vdQp1%|*f!{bXD4YT(YX}G)N3(}IgEWy3p#2zHzH_Ty_f~Tld~B~
z?pe`{R<K(tNfA1G+cz>JIL|~0f;cDMY4GexoCoKzLIo2(8DPggSW+_e%;=kKOPO*+
z&=_ONnKNf*7S7B9A|OfFP#B2~9VrZAPFz+o;-xwS??PQ;aOm7<I`LJY;CvN|Xu0yf
z3eJ09`QR%G-g!^XIp>`>e7Ie=&R$YLEqWhEnzZk4*o1KX#191DKE3S8551qY$Cb#i
zb5j)oV^P{qaI{v|B9c&8Sv9i&SixiKOB*|bX?Se%2^li;up=n$3Q+|iB4!mMKdBN?
zPVD;6k`${Jf+~6MrxUCzP~F+u_8D^*$8pjuW+x}J)J2<$mlhpC6a>&AH~~>+5n}ei
z`vg2!=csb(H=UQ1Q!5$>&^g@Nn!Nx0Pv;y}HH11bBo0fcb7X<Ksy3Ewx9pl?5&@-h
z{`L)(l@Y7GN9i?_D&{jYNF0XNXsTNs=0RtS1Gv)qmK&E~g?1~x-oj^wpO#{%BGPI*
zvzA0Kd?f>HYmJDErWUe7DW+s`tiujCrL1a5FC3_F7LV4a&zODxtbtfjg%JUS5mxu3
zwS`0ktjgkJZ2Mnen<LD&peaNw)RnH<y2)~Ip`LLo_44btGdk9Hy~E0Ct$ANzKg-Ls
z8fEBUW*AiJMZjzl5*?-hWe_OLt8D}IpL^}4RW^}88Qxy%{YB<rCUlCZKn?>^y|p!c
z?9oTJw>OQ{b92!yPEYsmKUkceo*W+^9UaVO$IRKvA9C)rnfYlg9CBPtBw&&lyTyEQ
ze0(~e%{axbZJVa;VpgCmnGl+kEMQSpQA&hp7L(R12?H|+R4WvnM*>6-A`Fl`G?0}j
z0XhOtKC`bKd5;3Q@<dW)4HT*Xeq;OG`ODWXz2otx-}nCOk3O=wJ#~)E38R=E96ZQH
zRagSyO+-GOjNY2x{qhf<UjhVy5#p8IbH4Jw^|{~tlRx@jMfj<w-}~s5?dre!`=9?m
zf4^Ds%~yW(&g<K4k~<IXpFe;8`LBQVV;_9imFwfDo_hMh{=?^={px@Jk3RFy{`v1+
zzPk7QAN(LU`yc&{4?O?E>yJP2<bU{!FZ^ep{m5T`>)F@tUw!wx-}C4H;(z}q|KxZ6
z^k4mcxAD%?*~#@?{lH^SfBicz{Jqco*4;OL@=yQi|M1nX{N<ni&5!oBc1ELmy0Pi%
z@$tNk!s`6kS0DS>uiSg<^;-w`q$YJ}!{$Y7XZv#@73I<~4o*buYh(lgMu$hs*^95e
z{FB#S$whM2>j9y}-j(%-F?7t1i6q6}3;ntm*CGc2&hqQ1?2;9XSJhL~+bqZPZc`Bq
z&w|RCOQu#ySpX$(l0hoALi7p*>KUDQ&*a&At-J=0<3P2i+L1>f1XNZa$&!TGo}4V)
zOQ$%+m{Q`LGIPo?rN}m8R$-B>oLK}UTTU*3pc>y%(a^?-A%G`WEI^eDKGc<~eW)t*
zh|bmH5qWan`O1@X<jMB9-Ua78y298m`VY+@z?@6N+V>^IG#uAv+%jNwX_&P450)Sz
z8L&Qx$TFZU3kXcKk6BP;1qI7sP*pS@NC^N|Eu#V=R<-c*LD4xRhug$XKnc;TR=xYu
zr0>N5+K(q8aY>Wy0mn+FwCZW1P*)eOU#mh02XA@FfBS<UEnuE<=A3PkZUe=v!luju
z^tOsj$-aB%-3Wcn$g??ZOfx6voH7#j#hfFN1c1ys?~>R0q!FaBSe!JA&IbbsN)K%B
z!N5fyr2V}hLz~+(m2~|i@3~2!nh^%};;^W+^61RI7Pwyk6(l+gNe0-LT*G`=RtU${
zV>hURZKGh}Y=~qob=T{hopS=hCHMV|q*+y*b2;aJR$8v%yw*D!_6tiZuS9O`>ww;X
zG_>YCjLiIs&{6L8eoJ9aWdT)9Ih9~37~&Ah3VrxZZBw+OlMjlql7_2qn?js%cj?Nc
zi$w}ypcx+Wi&(@q$HD>%77k|1CUPiZpJ_$~W+4YsN|I97V{vEepwzY^!$##6;A+f3
zBu`NJYV*qF8|QYm%E_4c@czA5UV3T&?!D8K<Cr=m34x~5QB_y<XzZMax{8~VS9Ljc
zd>O_Qk*;lL^Vy<l=8HDRE_Ge(5+VVifC&qU2<=6-ucGJTpmQ!0V(r?>qSGsIJ|VPA
z1ahjXq0+iaRS2Fuh)*0+*xTI0WpZ6)AcU$KZ|z>Za_++Ai&w6mJAY|=@BGfW?aj?C
zPhs$6A<CV*_ryjhILM6v5$`V#|Ci7IZ!f<269^&atm;!60YzoLF~%xPx3{L(AHDMM
zV0&+OM~_bL-+JwlYwuykx*lzAPR{S`?45&dapJ?~Yp=ga(p|rFZtP(;Kl$c2|N8vi
z=)%tU(%#O=(f;ZFtxJ24J8o`VfAmK`e(CuB>tpI3+<JZV$j^Q6xo5A2_WZf(+}8Nk
zo3CtQ`_A`%<ZFNVZ^nr4{`sH%(pSHFYyaLK{QH0Rm6!fDd5=UJ)pToftKHiE&p-3I
z43csdkk~DOFmY<7`_@a}J5CJ|@)}yM49d)fLi+3vpZo61FLbdJT)7I$E~Cdl_SM_!
z!BG{PBtxIT*{hZDZ9pHu()A9qKoLO}R6Ur@&WCzKiIYf|$Q-)}g5V62s|skEZzKRG
z8U$-`l{nAjVH9vw(Zsv4gFqPSFz&-Rm9qe{Kvsps8I)6sIVBZIF`7EJiyaH6oKjA#
z!ps>Y3Mb)QcDkkUQ7p<Sazvi0Q7s5zT&t&QRHJvkHV%d-Pvp>tfR3Ce=e_ri9Fa3v
zwH1FNkb#ML*gDZ#P-z*lOJUH01ud@C@rr;fQUECiHZIgH0Z;*P&Vib1NQR726|fXS
zyB7;1x>ziFq6DC=;El|+nxfiNkKFnt-H)BcN-Hfw0qMtz2rK#Cuy8BjB<Md{B4Q43
zVno&5OBXL*zS_Pq8MUW(Zr+zH)ODH2B($o^lI<hM{ce~*11mrd3ZmjrvF+q|t|Bn0
z*`ZmXaa9PKOf|5^?d^-Fhf}3W8J1mJsV}4}RAn(Vrh!siAINC$BCmCOy}xs<)e-B9
zAjU3)qV=>@DE7ie=7E;D3S2J5ZW+EJA_@!j<~`^K_`P<ToTHTp7eKUM00E$B5y3F0
zkW?L!Dx{PQS!4D3kg#XJFmY#Dc%X!U#qp1Yi*DcCAkS8{-d_8zbFc^TP?sZ;iU5#b
zmu{}EXdI%e)q+}kPqghF%4mAX6_+9R`mEx~jL)kr{9sqMPiL{`Tlh&o&>oyiDk&u`
zA+zeeQx#5GEe$(oKvgz-o{C6LnFxz{1Bz3E*<_h&b*yu)x6ZE$1O>23my)>;9Qo<F
zy?T3livUnSm|yz-_rLz-FCQHo<kSH{UHR$G=4ev+%1_2)B!|vrU+3M)4-fB;U41I~
z3Qz@^L7Qc}?4l&2QG10XN(z`#@}3-!MP(}jcw`J(d-RxshpkE88l_2K?`T}Zs9s23
z!iK%p9?69;s%m0!EFsE9tUvtee*h;9r<7uzPPV5TJ6k)uel(g+r&T?kOgHS%!_{O)
z0Mg&S{_+xpOENMI71Sa%FWh}CdjRGU`VsjUvr3fqVE^FZx$TROKYjy&IdvB<?jiZ(
zqk~s|@|OC%wYgi5$47?;+dqH(-r*Z<O9<)W-bTH#lbI25GO9oPp<kSCjybibNB6Wj
z4Ry_FiQ3)0_2%ir{o}i@cX4_B{LbEVjK>)zjB09*_ix;|;HsT#H=cZV6JCDfwYzEl
z$6x)66q}_-Ms$D|cK0?nHuS>9kAC>W+-o(NS&10)oBKDv^YROrp-)XHkITk*ym#Tk
zy$AQZt^<Iqe7bDNy`3mqPIl3ihQLmEAan$!s5(Qlvrg<RSj}o&8V3Gij4fpcu1l$l
ziO|Qal9dpgJ;106>W~6C5^zE__(~{<57~{d_E=Rks{O|1#x7w{L5@u1f)C8uv|1_>
zV`5HS+s4%9xQsChXBJ7Eg*oS(m19m>a%5)ZERsPPMF}&g5&$9j%6Uh%cfq+TxZqsn
z$&;_V5>aq2IC9SU5P~O9MC83AU)ozhAR;7G70#f*gex@m830k=Lr4$Ju~*pofx*F9
zyeO-hegN_ep)a5SoHL88t$|4go^V<2vZao)uz5iWOGH5wa%M9(_Au-|bfBDlC|ZUY
zMe+kQs7wT;e6{`9v-d;yM4?_H3xHW=fF3E~a=9Fhs?D8?Z@uzrXy@YUsu~q*C!itz
z5p5$YV62kTYKV#gWG4s+dER#Zlyagxg-I<zq@;Hg5sadua~spq`+nwqHA$S`3SNT`
zDQ4BA<z@mRSd|~Egs(yUWd2gt6}A;jw#ud1Lr0jCT7}bBB8uz!=`yP*yY?Z>QzV(t
zK}8|u-oVmF<(5e`XJ+hIKRuuU*3*{Es$+9?27!{0i`=sp`@ID8VLyO~l8n0M09e=J
zda!@S3D*K}VU=82^zgRtDwg7G54|69%KE?}EXqMVGh08q^j@bqBCN;*v^K+EEyxFV
zw2h8!dx2O~hN_w+i2-!PjQebdrYRK6<Y0Gfk-o9y6pKa4<RM%_s#8v7J0is%pE84*
zbKHoJvc4Tsu?!g~BNFGx)mUxr?cMNHb;~qAKKa4(-+Atv&mNyVh_UnDhjCqx>#8F2
z5jgM2IVJDCUlQN(F-q6CeCor65xbGPfp)I|03ZNKL_t)C%3F#Y2%!NGKx0lZbCg((
zP>GZP9O1Z1HStE^NtMPvPpfX^V(n5OCK5tHFDvFLdh*k%j$H?ttLz=_oSfg9ZfsD7
z5s<HHH=4kBqZ*CD2X<~D9S9H?Eg2#b=HvOT=Wo59z~lndi^EHNrnyK^(E(n&{*K-A
z+d0Q}Is4(?{&@Gwr$?g-Tz7PMqz*T>wwTjwwr~}m+q=p+S5C*3d;Qg0SFikxQ~uRY
zei}x*p`Kp3e5E;f@YMUC>YBH<xA(Ruqi3Fa*QLjwNohd{7q@rz_jc>?cs_4Q<<6V0
z{p>T3FXO%4b9=FwgKPu3i&wA8t8d-QOT4hNcyQDuK~DgfMYeag$>9%P_}*VU`&A$y
zN94T)^JSEKM-PsgnUJpHIC`t@(Zh#b*Y!vlP_&r!UjMw7=cTG-*Ki+<g+^yaOMR8~
z)L#Td8RU<peICv(6IK|PhP1TXk#lAgR%DY669NQ61gM-3>}sZpT_wK8QGhzoxDJ!b
zRo;y@rrVAxP+(wmIp-{BtivQCvFn!0Mb2^AE@E7&<gV+oa88kh6Xy()jZ3AHK?GGD
zs6!<J@2Dd5&UxqSK%RW<(Sff5kow@sJ96c3UwJd;A{Fc<kd-brivr<1%;9u(SQTy&
zp_B52S~q7f0L?7UdqRpi4g2^1zigNlIH}h&7g~OQ&i5*iLehX0&>vV72xXv*7@j}|
z93B-NXlZ%D8W4e%BHonJu%4u|LLKPpJj8MkuC9k7N-9oSW^9)WP}$ku*}MAa-Nn44
z;C%4DQdR(yz?7(@a(MO@P$L){X-QL7ZL{zs=So00!??oWhm8mblk<MWj`aFFuFv-O
zZ@)6}$N(v)WScrAV#zqLlSND|vNlyLy5hnvBq&xdoA>vM<;+8DLt#g&sFBHG2nQ1#
zjJ8FSq5`Upl%YgSsU%~X4;u#a?yZ>5L}wt!BEt;X>@9sfkC=30koRiIO<C=34Ge-v
zsu>4G`|#zhi$ug$(c0G#rNI;7q0VG3Ux`N~vLdEu&GrU!8vYb1rP&I!ZLgh8ii`mX
zNKi)Ef`CIfc~A2!uEFw$7l|e3oE>4W@L&REL$T!~%$&2ZfNF|Sa%Rp3`pGE?Gp8()
znMIj78>iheRai1h`Ts?MUQhvv3meEB&#M}tJbOeATnM9`?a76|`P#Gh?%q4RcXxJl
zZ`q#2)FL8{#|}MkmzG8lNjWV;J#v1O6^~k7bTN8)iMxk5x-s&5TTah!GDle~F_D1e
z?6MD;Ttrq94nQNX8zVS3jT=?o9<?>b5v7`<!{~vL%+V-@RZuXk2$jM-WhX3xUKjb`
z^MCUN*Jh^(S;k?sQB6lwP5j8TF~K<^*DX7nqQqqzydKZ*{<u3y9su1Cer4AUAu1~Y
zO-5sAqAcR&tCt-4;~CEyzEo9qLhe5}5W>mMo@9y3r7}8on7j7j15b~?b#wo{k8htm
zJp6@U{b1~F*W=xHKK{gPI(_u%_rLi3gU6qE&*sMV6Tk9ts?Uwbqem`2vb`~R-v^$-
z=^kOVwXt!0^Nq)!`Sg!}@RxO{s}TGsfI_qAmXoT<3bhBaXOPswPJ=r*J^aDTFMjLh
zi%i-lfQllp2svOhhE#732Lgc8X3_I**1!vE!{?$yJS%Z1wNRO$>Yz?OlU2Dc`m=_G
zir1k0*FBz9MF9kj!pH&u3<9DKF`%o&Rq7@=jKxj3^6JO+=D6M(k9O*6YDop&2k+`$
zU8N!%yKdPuBDssp*mWs(DaWpBIi+RSh~&&EE3;}8PLi2a5ST<9iX#dh2q-uT&Q$?D
zhAMyq^5o45R5>bluCs`^f}3^@`}`#_D+Hsk5+R`CSq<7c;?@2Y7ax!HQljRRX9hr{
zM6Ve)&)7il?fynsn>P1r+FmU;3_xs1X0mEKZgZA3d~TuUWhtv=yU>l<BxOxl{E=Mr
zDY#-9$q=Vzw=(}Ux}kU1ltpN1`dLK;$;H?m9PD4Y{$$%MPUmwsp6X)eVg&EFL_?C<
zdYIKDJIZ2>t?lpxlsF4OmR1p1n9_vKZE%&*k<q<;a3qkSJ3M%JaB$Ex?RYvJdp|$f
z2i1C1A0M9rfDd7iNfA-btSUr(Hv=G&a6lX8G7MNHft1>!?2&~T5XiQ<gBG{9il&rs
z6?$8m?3@MEu&<_DvPb|$D~5>7mu!z3aPBoz!;361;HX5Mqkcw0ed*Q%BW+FtD{iw5
z8wSrY7RWl8_r0%~5CEK8edE;QCA82>vEVd7MAdsg77=HThGO|u0S5Cl+U2j1awg{n
zc31BhHg1Tst2#?oPy%NvPbkd)V!{_uixD&7l5*yp6*T3XQew_ICoP#>Npe=^oU*W_
z6eVZLIp@qdr<8>`rI=#|fUa9gW(45=ufl~BRRrmO2GMZvD=(TAQL9FOg%5P(4iE3$
z`xX$QLBg_uV2LQjHpT^cAL=^PRXrJpx^|;cMh9D44`Qx!j+r|L_ndUTKHTK(OJj0d
z;k1UfOP!AkjEzK>qlO%aw>SOnM%o#tbK~XIw;no=$(6hfuo?KE<|i*XBPbwb77#5M
z6;K6PpuTi+%L;YL?39p|V|Gd)>MQ^bh%<Xd6h(&jzw61{$9IxLWf5dF2$3q0hu-d)
zV+x}wlDoKdL0Hk_@!@Re{Ppo<iVjuc?BHe;fBovCTjS|+F`J*xD}aZ0-kgTCd2TCq
z5UTp}rHiA<bpOts$>hTI>sR&Cc^5|W)6=@ze)QU--bc=qv$l(+ESK;9xnBiWjmEoM
z)6HM_;D>fDyd#7y79LN=qe;!N{n1N5K8nrB;c@C>?xJ%}ashF_d2s7r{M$eJ^7p@y
zop~i0EzZ==eH0wfXluYYT#u6O2bY6D9tOF-o^d_cXiED*m0hA%i_(B{?G5o|klcfE
zTq(X$;A~Krs?BNv9iexsV+gglTEj%^TEc`zm8-|~bUN7?PtH}<2$YyJrvw5yXDmT)
zc{ZCh^SKBwyC&xtW4G*<!bwyzr<7xs#GpwfYF0<$1Okae(<f7KK;SEno_z4=$$3Yf
zd~oQ{q{<;UA_7`HL@EeK&O04Qa{%kvGBEfRaaEnrnS7hx64__im$s<1R@!?=2JD!*
zGht0TvJ$oYbktkV{wcrN>MhlEuy?QVM6w%}i-SW4g6&|KvG1oRI7zSl>PL|SX<q@X
zZhm_iw~{GYK<z*Uwl6>Dyl9&Fe3nuI)s5|~ylnDvDamYA(z`|p(W6k}tOGjODt1MW
z0K%jQ%MJi*1aa6^?#{!**?fNW+STptE$_vnYn$d9fBmgApEWUaj3Rjb$`u7YJUp@?
zd|y!7L>&Q$S^H^@ShipBZL0Z|RMwzW+VlURk6-5AiHkjLy>JzW#7`u(a1Rsx^mWz{
z1KO+cO41JuQ@kEab9VYr`e(ErN{fMf(4v<D&6l!3`eVRAq^8@l>qRZQqYT4nATE}B
zdQkrf+p@`~EW&KDE~@HB<4qNNn{1sRy#d$Y+hsamTg0Xb$sCy!*}gsqsFKC}vc}I;
zAQV+bKv5R95KobuMJ1;wIje9^F{Nk&<eWOmImQlEbL?`?ImH|kh{UcF=Gb-R`i+U1
zyBGlwM03j0|7D7`p-3qcfL?)Cgbrs@gx9C*{RG}-@<+}&?RN}FYSzQk(_?bZIp>4-
z-q+(vJsyuXH<R~OiZg09eAJra$VsiIz+H_;J2<W;8@n|&9jDy1br&}jH02lrb<+yB
zC-Vxrk&}RYh5=fJXC}fO-nrfjpdxG)J1JOHTOSZ%xcDS0=#U|UC`(3CR#gYA=nyXM
z>^%PNckZ9==k`Q;h(Ny@6&2vjo@irhi;z6hmEFr5lM!IPd-Kf<)niWp$3Qs0JOKzI
z%VzPgUG81G@x&{qC)171+3~5*A}5E>y!)|wdxN3g+q<x{bFP|9n3q*Ot*hWCW5DMA
z-B;fA)W@$sa=q(jImIsNjYpn%`l<I^d*n(pd)b9aRaH;C>ro&$I=I(#SwxTTzHxA_
ze(m0^Tg~G1;2^S!u%jY<Vv#o<+<x=Rch#1r2z~mqvCL$BtYm_CJ)1)^a8CRAox+-r
zaNRN?>ukJX9aIPymT(4yRD~+0RDL;?WByF#*Xs<y`bLGZVhyxRTC<-hjya69s${g`
zH!C-;{g_-;hmohLcXjXS0~P4nHpV4$mYf&!d0e)clW2}{nR801>vGKIGFMiF1ev|6
zBlX_Zo(L!q)y`Gkd2+##cUYuSE>yt<2VfcFWfxc&dxJegtsV2j#GQsqvOHPkHL^^Y
zfpRdEK1Eq#Kd%GcVa2sy10$@^L5BO(9#ChiE1Maf&6qL#q)Gu4V{cR(9F^3oy)2y3
zB-6d<ci8I5nkJy%h+=Uftr%GLyY=6Azw|<I#aW|k8F|AiKs{2|c)B)whr@$|J9q9h
zi-q@Yyt&!TPux*p>^xE)l2%ax&^w2S5mK*z5GngUPy|nanU`&=gx=9y(#gZ)MNGGK
z|H1yz_SR(Y;zjn&{{DSlE+0NPs5QB?khrKT+}YYZIytpj_dsw41aJB*6(p2iiZmq7
zBO!t#z?^em5cNSjh=^{eMzF_2V?PKXGII(IObihqUz+V6Zb`<RB1bEFzpO?cy{y1q
zWFE2^w2aOXu}nCK$VPt#bTUzSACG5>W3;rvLLarcw5;2XaXmuN3Ncn8Bzw{NinII=
z5&6BH^Fu%0v#1K3R)({sukj6KxiVA%iU{XqZKj$%K}3X$Jj&(7ohYk<E#PBJlCnrn
zDK48vI5FqcHYqN-0Lmlhm}1N^=A2U3bzKLdDw0da7psb7LBzyaWhh1aYj_|+Lje;N
znY@&g!@<fuK)2T)>_O?>B_tx7Dj=a~GN!K?9*oc8!)aYr=)-7ZGqeklb~2?ft<t1w
zrqw*aJh%lxwdsy00NZuWPQ;5yVos=$G!j5?>ZnwVDh4VmB7W&(H&s-?G`Pyed|=IP
zAw;mHrkZI{Er}BazzVuP^{v3+00CgZ%ddU?Yxj>2xk&g*Dm4J215a)oYVSQ{jZHg(
zu(!Qi2e){5@4G+vUWUoexjj-nJvljD0J%}ywog3y*!<wmcr<QKPww4%?WuQN=-MW8
z0KjIkFtl&GjLdTX=4;oUI5%%jKKRTtqCDN)jLZAJn!e|~?|br@r-9OgTl)<4)vMP;
z7-V_#jTg6fE=@MZ8(SM&dsi26xqoz=VvNbud}X>=-1KXTQyG^1s+LXASHLKJO!Tm+
zD_8ZZdFi=@s$$S)U4hhB1H|=-qPgdbrW&eH)peaxDl9tt^QF&0Qs_ZHB%lNs7<QE|
zb#AiAlU!Ai$LuCF9y^;hZ-ROvhYE;6R3!^}%qhjLTP~XU>@=q?cFPpol%tBo)QRMn
zW9HQ5lu<G=I}id21R+pGSUK`U0i7qRg7<`u0HLZYUj^p~`s_lZVcNV;go&I*5D%{t
z5<-a?wj~L!Jyu0~r2}ft@J6dta{y3BZjfyDPyn#KUfGm^<;@MX%fQ)JM5l&W0?0WR
zGUclM9e7DfNI*rBGGuA2>*f#uf%>>e`==`ta$SowUGsqh_L-}F{?rg3EyyeNj12@?
zEDiF^$)ljIFq=qGSfkBgx$BnQ(Zh%H(^)fbs!^?>u0|v7md-iPlv#wctu&nFJ7Mu6
zORo>IIETVELeypFRe@mQs_5YG;gKkup45W=V!eBEa<V*~&5q|4<d7G@@#@8$I*h#Y
z#UVx|M+Xp*2nbD3<-Io*wpvn7--HqsVA-0?NQ=_AM1%GLcx#Sc`#=p!NdV)qTAmLO
z`ZYL)8|K@HsDr`Kj%*#s>o~MqcCZUrewPKQnHoa|uW-2#`%nNP)FDo{6p{T1=S&>a
z%G^jWSfpfKvyA<l?x)kqdL_9Q$~#2<*~ptjdUbvYqb^P%_7<VVoDw55XNJTAHWy-+
zoU@IQbBsB~Zn?}QqO$3lCdD>(ZQCq3X3lxJY;%gnv&$)pMT1)67eLNAn^3(#NOiqN
zmL9_)g`hGB;rc3jZN0~Z?T18Ua~?#3Vl^)!0~V!WibgOf{fL-|a@H=!rfGce&0-FR
z_r<%(*vaM?wkFkv^BZ+D3CodRRK$VUtJY*11J)9mzOtegAD6E7?z)ndizo?dW-s6b
znc1#kQ<&JhCCmh%tSA5~171P7q+)=Gnae;F6i;WfQ&lVvj}8Y0AvthkA0#Ff&0Uh1
zmFVcSdGW=U|DS*Lf4uVWWV*9=;oMF$n}6dgUtMY#PtSew*FW)%ul-e%VpWf3C&vf(
z(>rcVU;XhLEr;2B26F+8x8JxGIlc1w&GzWctB*~Nj!(1j-CMUGd)FiL)8l!QufOBQ
z@!`SNuAjF@n_CyIUb}kdtsmt*ym$Ye(v5rf?*8&eK80Z%9X7;Ng&--jXaO52nuWS3
zCkypLEcT=X6AYdUg_0|{Mot5uUNSSd((QvoXj-aX>ThRIZ#Npq&wXrJ`Te_YnNl3W
zSPHd(5TS<<+8@eX0gV~YVRcc$xs*0qp@pk8jBz}|jo_wr*zhzi2NQy@WL}!ep<6DS
z#eCV!Ii;>^GRK^|l%fb{PFW>tVwCI^0zz<9xlntmoOq?$qoYs-=O6@!p2(piN8TY7
zvKEo!5^P@7%4gyi5eZ$ng2+bk1c<%}m0dCZ1NNL(1wf;QU|&2D5g2}`44+q`8US!b
z9b7Q+s$iA}KqaJsLO-mQz4t?4&M>Z6%_z!D0|*@#Q8UVFZ-=1h5Cwn`SOw4#l>L4m
zc?3hlFRFIW7;T+;>^>A*s+P8CO+~M3Zr9%4sm7|*{&g0?lau2+ckZ&};M~Uc?&X|g
z%1zUHVM1h4N6tA%&Z+sdLD4zeN_yv!h?yBoBV7)Ztm*&~ivlZVB^m=o@+nkpO3N<A
z%sHjDX=bz2*=$xJPh@%H>h5GZ$>O|s(ua$fcG|Z1wtNNK;}RgyP;==jxklGT$W(M2
z#5u>f3?Zx!Q_j#FaRo^<V$B+Dn^w*OIFpjJQsk|TSe&DhtB59XS5a-+rV150%gF{R
zrD2(qWB=BdBCnTP*?&`tHHDuZW?*^BOJEO?z3-%|jvNuOimLiRbY=v1_Qz7NlTM(>
zHf@!gk{O4T$l2A!l9Di|lv2#r!lo|8$SHNpCZ}b$Smd~j%Vpava@V!Zylv*WTgGLZ
zQcNl36hR>-Lj*|9$u3=HPGyLPEV&=aLZ63#XIxJGbVGZ3x(-gel1BrjJcq*B>H`b`
zl#4w@%X@=JX3bYn<RRsv__7D2J`3lV$U9K2TAxoFIGSy4jl(pIw(53!+-y|yu}if}
zp6nc9g<g0)>^*w8nDjpYRS_(ADnfQY8!kO{<;o9!{9??+B1Fi{DQ8zQyt1k=(_>rb
zFKusr?~RwEFe+IE_4tL$CyUwPVy+?yL{$i#l8HVFlzhOql1czZ1&AH7pd#k{?q}Zl
zdw={d|N2{B+qrh>y_<WFKJkvPed&u|e(u>*g!f#3glhlo7rvhevGR&~dU||taQND-
z*Wze8+TQ%uUw+|<$Nhi!$`|K!>6M#5spFm7uP=Z2lUFZ(@44Cj-QDxQ{N3libg*b&
z_|Z%EUwi$xKl9$VUjNbk<HK)%=lO{{s_KVt+&&&(z46-XuOfajb+Z|FQc(a0iGf);
zVW}6h<;*FVC%iA#4M5W;TAHP2XnlG>or!+HIM@n9o7*pghoo<7lB7J}YknE?fXWa`
zZK8yNC@-H>Bn4N{{1_BG!<M=o_1lSdHEe;~$=x(kl}CYU@1`Ed4r)YaUx)D`yRI`7
zLyR3u?Aj)#4wPeD<{VRwq9Q0v!ZnE}szOyeKk^ueDo24_9bDysFjSRuWLGUZECwM_
zA}?jSORn!BaQM(8q9Z95PFMO3M}<p6-a8LSh$I3&gb+eZJS3~**^pOZQ7_JUM3agS
zP^2N1Y;Z6tGZVT}3V>1{cxrKE0~&CMa7V<HbC24E5JLZ9M`Ytb+guX_(BL<{4gdv&
z99gX{qR!cLQV}UL7b=u<%#5=7{3rqvVP7s3bFvX<L7l_Q$^4gu<h>Uuwx;3^R{}-O
zPSv+fn|(q>&RIA$ZKJVsu?1n$A=jB$Kv_VPRecEN5=TV`qCmpg0${Bmx4a+C;yjJW
zvBRXoA`H^D%eHMvW--PtcA!!@4#7L;=8IM`Q`LuF0NSf!?<q^R%F>ZX0ujzRdvbjT
zY$EM}Yk`C)s!k#17-I&2kwK@|#<{)NNT6thOSI5>(8b%<{PuAgwh!2kV)Tr%QrAqV
zno|aaP<ikC8q&)a7TQM+!_cYsqtkx50NBU;*d|_yO8S$5NxXBa44~-j$SHtp1VsW5
zXO#)~_8uA#KoH21eF2;+%nj#U&dIFnF{RkW7`vQe+ccWfVln3wmy1R2x^6LR=cnCr
z-nFxC*~V_UY}yz*&XH3x#%#7g6;u6i=A4b|W<NPdV=Qq+SLQo6sN?K2T*%#hwy0^!
zsYvD&kyv4%TNhWKkkRX~k18vHD8*h~phXI*xv=h-GY*;oKy=8+#90x`DbU8Sh%j=a
zt$KXgZk(HpcgFMSXg1QWat!JbiF}R`y*CJhs*;jPGB^tn3imDj|I5~!1zUDpXL@U`
z%-qA7?pSl7P(WcK27(|#QX)l>76&n8sVTWbQd=!|IBdxeb~qe<upjLR``u6WgCjbm
zXmwa-bh{;rmMBV1QX(OcpooFQSeR?RHQeEhd&tbSmLGEOQ$^eLLIhZt?!9O4%(edi
z`&db!T-rbQC%-#xX8SK)Tv^vDqY{e=(Ku@fM9D>FV>kcn-~3MxuD`o?^?Eeu$U@Zf
zC(i%+7r*e_4}b8ptM9iGgDN1N*g3X;xZjVwv~Pf5XBQXAvdmf2HXc-s!cSg(?uV~@
zuW>M)9mRJq{@}G&|NMo&T~T=J>eWm0=ZfQ#cW!?;R-0L4vP>HP!PUL%tLdG%@&2tV
zuits|fBav5ayVZ_6Z2P|H|?eG{$Tp<tj3@GU0WS4n>T;_;}=(){qJA@R~OFh4!(cs
zTi^cfZ9n*5|Mma&sfV|76R#|5bL)CNt6q5F`{mHxm>*h&36bPB8U$IR@YhT89!Arb
zQr7c7)_YRWz4}Y~XJ7Z(==V{|f^?U09#o^j4wlm;KQ!UWyDgEdDOdeoxOXO`ITa;f
zfJlyJAT(C95zSVhjX;xV25JhSB7hS#P@v{24vdM+7-I+#0KIQRXhVoGcGRlYS0T2-
z(T9dXB1Et#R<l8t6&VdP%B?9(F(|CF#*s^YA!o^2>#S;e=_a-ZA`lsi>Cd1+H0k=8
zwqw?s^+yQ}t=(k+s31h9fA)3cgr44<o?qSYZCxXUe!2j?iH?wv5+OkE0V#C$Sws+y
z9gU}xx26P-#t_q4r)vu{r}9|(O+Lf~kVZ6XL<1+Jbtgva?&5umhgby^7%&7$M`97}
z{E(mu;6p?-fEXf+h_iY3Xi^k_D4Gn!Dk3cDOVMi_yZ5bgF1110rp3-Cq$=QSd2~1f
zu*O(bWahRF-uuvc-?XBFq0Thss7d~0kQlo7q(l}Zupr$+*iaN^5{_L+MEg&RFbWY;
zi4?#Fj7w%8cs8Ab3&bRm1q7^!$f~ZGMM0c1Wm$9u#ctA`URpT;8lqkZE&WjKF1i^J
zV@$lQm_mqkU9-f&pe%A{Es7+QUXoizOWiV*Om`^krc-Fzw$1Z=eHu(*+x}?PJq!{S
zBE2c7Lp`dsE*<$0$pS=-&bcgenYGT@^p8&c@AbsE(}}LFVuWce%^U&Iph+(iWloI@
z>KW}xf62@WMuegJKS|XBKnQ?{mVW+?yG|{xgWI4Wtej9&psn}mXTp-1PLCvN2tEei
z)K&0pQ&+yOLQ_}EMO&{{vsqiM*jG(8Z++#P%C~_zMh+aAV_NBQqHU~W%(@m8>H6i`
z|A}<L=qgVLD(lyv0!TL%0z&HcI9(At9YBp}mzqn@lQbjZ&gqmOr6>vnq`fvyL>bm5
z6YO;+3C7zgVu3ZS@c>v5ohTZDy3GPv&v_j~kix^pRyH|vavH<a4?X(Q<%<OQXFl@S
zkKcK9bF?)a4&S+Y<&pc({qXJAo;m(tG06V@omW3~?!wKZJ8#bK2&irJDR<_v&C}B>
z^Iv`Dm#;7Gyzu5vuPpWr<h$AUqYpniEb?1-ZoKxvTjzE!eB{0h-@o|s;jL*w<x`J6
zKFWqqKJvsP+oyio$k}Xi@!AIsKxXn2r^nO7%foVH2uI~mP;c(vu0o4o3gfmnHi+S9
zdKA6ST~_((Ti^N1w(^b$IK009#vlLrpERpmhqw3kj*fPYWrxjtsg;#7%Q9DFzNR~e
z%Uf*~2D>%1p`fGvc<rDXZESCyIr-BUe=@zfe{J6Ihi@O-9ldgS{??6yp!vr?@lhD%
zKfL(*Yd81zV|EOpUb}O0bMpRd8mpiT|MMUJ(bn#yRx?6GXTW99Pr5oBs|faM1pu(d
zifW8835B$8HT3KSS?_=&Gj-LwH76|{-IRq5fwQJ*{lTiP6ap!ztW}!bX#3u240KtW
zl!5HWw_sFq#(|nmb-R#FTHF#lh&YHejAR)NcZeyp8IlFSnBoqhW@aDS7`^um3&-f0
zIm9*uuNor6h!JyZN}G>zH*nc7H@TxS%gfwl&SkbJa$~J^&RT<H6wnx}2#5yAT5^KM
znhep9vBo%StN;R%F(&O{lW98*S=SFHLZiL)jP5r3a82(KNUAtkQ<12PEOpaBy+;Pa
z5(!Cr^DrQ)GTuFQcPPTtD@0IcMnYjujoQc&y0K5k-~m7)+XbZiKva5=Ck24$T1MMN
zURlz-EtRoV1sPNoL*!&e^Eh;o001BWNkl<ZVO3G(nEnGO;h?(-cKW^(b`Sqf#i8qS
zN!oLD*)Ns5!@J%#Jew{S%atOU6lW7yE*8t#ECgTIRZf7hwW#RGsAUdBgm71WC&C~Y
z5o}&q>$LUYV<)=>NYLA)l#P)sfH8JRHo7bVG^=Jbj?O6pE3=>wVmT<C)fmI(=A;~y
zgW=d1leTv$-j&W4=@`n)>E40>F-A}nVPj0X)}$Hg-2k%+;;9}XqJ6vuL4^=R(`h&<
zD@@YX5s?7I$Yj<ubamDx%12t9ut?JItWR+3i<u-^7IfNRB4k!$j0j_2#7%|W^oOWm
zhyW>lij6UHj~1HNI}VZbzNfx@N5-r(bbu+wMd|x)(Tb$<E?9y8pI@TD9UoCzA6eD6
zK|qDY`_Q&+3?a0>t*hXDXj=}!w@tNN)XQnTocVfHEoN=AYU`@4EAMLr4KcKBbI(p!
z(~x;x97;18_&Hrk7jaDS$o?Zp>Dh=tz4;9k)^AAdXk*=so(NN?+jJaL>V*v^naMR#
zTO}3#5vWgV5p{n>KY`RPg9GaWGo%<=7gfW~nG+ydFsXTuA(o99P21?{#IXk_gOkoq
zzWB&5J}w&{d+L`qjNiT;KmWO}JooDJANk1RpE`GDcs>5%um1DHJJ)xo*>8OIm;cqb
z|IK^NUWxV;jvuhQV^`!SPi>yK?`h!+XV3lVUw$L#_`ms2{<BltI~rmeX5ab2w^!}S
z0UBQ|N*?@IzxM|h?mMkwcE=l|tbO8v$3A!F^w<CFU;o3!i=Y3+FMjQpzx+cpdFEpu
zM}Q*F>b80N-8cXA8-Mon<IjHeOJ5vMM$xw)TzdDFmw)={U;4~neDfQZ7B|mtpZ?mf
z|A!afcxybEoH=`HWBl;Z(VgdBc;WoH^NabB&GhJCIU4V{ELX+W%f@JHc=F8Y-Q7pd
zKD7Jf@etj7Srrm@COh{Zd-Tabr|&yGo!xN|n<F@J=D`b(JbCNJ#d17a1zv^LuI77{
z9<-H?ht<l9!uv;UQ7y6CpdcswZA$2f0)in@Wg?TlYX(VE<TdRZ3?<5DClev)HD}#4
zZ>?2GHJKF3KovCTMsBiMIMUm*dL_Vsf?Z<1gHlq@Nr!ZTlVqgrlz0q|V9dA+Zddc;
znoT^7A`Zn`hAg5H5&>0GMIgfrtO5`s*Qyvfh8ToHWS?Hc!jUBkFjG{gRG4xya)T@%
zXZbM8hj}q5!BCcGd7fo?o@H5<XU5pxy9WwjodX~N1T=XzAd?|jBnya{EApa91A{Ef
zMYQ$a7)zb&hD5|UM~2dqC4G<qpvW>6#e0@<M3`k+UDq+jJkN|VE;ES8A+ksc?sg$c
zl|0X5<Pf7VrmkxM$ecw&6$VLggJ_6i49QgEj7fi?H70~m*R^lka!_QMOCgc8DNk4P
zrfH0GMNxoa(}t>U0Tb9cz3a)434y!#1OSj}eDqOR!TZRfAxdOr!N`)PlA=Hsg;@;(
zkw_QbCX*hqur4z6K_N}3!*%*PMZVL6%!l^kTW=p79u9}YEX&i8#kXx;tyYVp=o=&@
z@r<aJ3}csTLo{j1oB$NU(NI<v<Z>h{QuQ-@k<JSQAOHqH#FA!YM&MfFMGP@Um#$pt
zhzWRfI3<kE<vxTMd|4KQacPY0p>J#RZubOc4t<xxs0d=hjgs^$!*vw7U!QjQ*>s2{
zBvDSploXp4Kvl5DB~6cjcI?75-$v7Ik<vh=pN-rj6TGWsP7`D8I;ou*Mc1ChyIMc(
z*GBi$4(}@MalMhb_b*HrHX^+1JHWdq%X_Gi<S?BG)#^Q^$h7!~kwatvNFJ0BIdVs7
z4<UH(o2r)JeO0$j?c1taE$ZdGUe2rK+&8OcwTPh!O%vFM)~D8QT2&_Ch6*rCNQFh=
zG?7TDeeMS|-6996>u~j{-tK&~{-O}}wY$XUOd-fM;egUt$vL9}N^3^8rt@0*lo<uY
z<a(3t1SgslG#0VXVW!nZ;-p9?I_s#ueWf_%?<k2=SO^VKjFO3B9S72G&g;c%@1A++
z89R&5oOtYfxm{J$kDhsa+u)DieC6YhfAwUs^R=fwcP8H=Gynb1eI-=053XK5V+Lol
zaX74ZPESC?8y8=H_0sK6KJm$C9(?ll)7LLN_DheQI&*O6)_AaWY_s^%r+?w)*H@*1
z)uR5r-}s#ePMmo0AAbyX@bn{(o!zyy*MTd3`>S7BF5_1}|0}#&O@=$CkDa=H{nC3^
z_s*O+_3RT*eE9YUzxtJ5-x%fBu3a6Dh7X)LO;6~Vjop9ph5z6${`zlz>(_qc_|}%*
z|KQH{&e74nmEmI-9$}FWZcQ&;KB}vFHuYyWPZgyaYe#PQv5$Y0N2doSd-kc1Su+sM
zH#SG_efa9`_|)(J?jKyf{QmyYL56VQ?8#?8`iVu0){Q4-wXB+|X_fNXbS~mIHipGu
zST`ZH8`}^7s6PyWXj~5!(`cwiW^|5?{=B3J*hBUqL0`LyT0)wD8lrUCTQ7m6pVwKG
zoj5%0?4&fx4i;@C5($#G3~-InPO&Ubi7ZmI=>isYEOZjHW18)1zRhk^Z4pf#zzQaP
zA@{}Dz>E?ZfW@;&((8uMig1YD`$m)_2PILfroeohQEmnsWi~2IL4!$|<t{G@=UkR$
zWGopnNnURZ8catG5l}=!q=<wT$y(=#9H9lWh~P4-U8*H<!ogabWf=gFF#;-rWRNIb
zgy=4}$l5N+qGHITQwR|iMb2#VJkPQWQ3*-2gfGB6&-zC&4u`|G^>y2(L=pj(Wnl;q
z)ug;6M-CAQVhqMm=Iq*t+B8jFxaD$HmgQ(vW|k7+2UN*WmgURU(ilTzV_;UT8xKe#
zxLVbKm={H!=S}0AHmItx86YgHrtz_EnIMG7h@5b|F-=c8Mld3+TTf_ApPu=7UtCI&
z5Uri-KNsy$6&AjA>(<`Qn+P}=Td=Ok3S;HivEzv7eJ#RK*=i7HfeeN&)n^PbcPON^
zr6xoV3Ix^|V=XFV8H5m2lMA7L>nI{dBA1hy*eob>h|#y)`gFJPG49>GGak4+_ds}b
zG((~j$B&UQXed3*yU2Iv2uNG|L=lkgDBO7(Op3m$fU#y>yAVO`i%aPZO^Hbe#KJ^|
zSp~ovi)hnCdfmfctBoX`Ui%mt$GDzAC@3MYBw(i)1wf}=mhG-O^yl7@r~pd3o;)ku
z4V0xLf4b>PTH&W(L}bhwxzqLHQgvzVL0ZRA(*4lJ*nM$Q#mE?1EUOTLZ+&u;wXNq6
zIY!?$%jJ?ISIfEhrd=&pi)mHOs@1%y7QU{7Z`rpY_~3ot7~*wjx5tI_2OjOFNZL<z
z)4+k(ClDn8lOj<7*!f_zTihn{PUk43K00Cy5s`Ii{tf_^OsYy-GSHvIy3Aw;pj1!|
zF)~L{MMBpZ5_*M2kF-qx*36u)!UC)+DZSM3PSd=iQ-mrBv>K^!Auu69<mu(h#pd?>
z@&~ui-j@%@m-y0fR9-l9--{PteBsu67w%sY+DGoY|Hiewjmd^{{+r+Zu2pj?7+5a$
zZr%BnXO08<`SkX;e)11bJp8fkjm^`$=bnD#BlZ3b1XYyz(fsiC!MPLXmdjZk+%G--
zu{U3O{@;G%-%d8pKKta;m#$s@?mztSBTqbW{_KOl{p(*VNdD+gzy1rK{pzY({N-PN
z^WAHQ|M@@r=O>Tt`np+6X9K%Y7De!WHog7wOD{is;li){(&s?TV-Gy=&2Rq2?y(b(
zJ^WB+X+E9pOSt_0rGvU&hG{dO7qq*3{3P$+wAT6PL(`ZcY!1t7w-(>{#=kpu;`~4R
zo&V^*Gp7+pTU*DT|A+5<uy><btv>zK6U)WyUw-{hKlk}x`^foYvueR2%u!Ge_G<|`
z7?<1ITP$lmCP`W{b%~4wJW@ku-JVRq$P_e9)wLv(PGWiPJu0nlS5>6~h$fLz`^REe
zWJ-VkmSO*JsgZZL1{+0&qWi11V(`e4au=W-*D1jTK@c%BHWSPRPSD^a7AGa&W;+o#
zj8v*2H7XioWKG8NR2_j3L*U3NEE<_vA}cfdz@9m>G8lwX+|Xqsmkq5O*<zGug>z+I
zl)1}XSq_Y~M5LhB8bo6di7>^A)^rhA$J0>PbmcT??ryqi7v96sQp8CWB6lH006{Rl
z&GRm8QPS|q*!1>KhTT-PG{#s%-nY2^H$y~KW6+WTz!-dtK_W}<R}c|vh!BNinp9*(
zmKTm=h#X>!&?VHA2#ldDb1C!=0M3$-qUvxs0L0KH_EsPR1Z0Me8Cj@pTL9|DC#ZzU
zt06IpGbWILMj|9*sFR_~dXasPF`%1->HkNB*AwyYBEePf-XpYg2SMBVYuB#{%WyC#
z%Cf20WzJdv0z(*MWQjz=%9!@_hV<w2-f5FY1`U$13ZVxj1TsX>>kG8|-$aT)Q6q{5
z3$i7vZyF-hD8j5LtGeCV7$H&HdNM{>s#UEj92JE6qD_}_rH+b?T{Qzb)ov1B0sv_2
zZi*ZdzZLo$m#*Q7y%#ps&C*m9dx}MG0yXy@l#Q{7Y2|=Du%d&Fry;4TCL(I@4eClz
z^mDFaT^GZ;p{geN1l{ZF>)%;-JB<G?6L7Z+;B~fleKn`9<k?*nP*v=5Rrg3{i6ORa
z)3i+pA+$cm*wi%#AAK8|I(lENR!v<st9iAY`lf2@W!qFuQ%j7#ZAGMQ8|j{Jk~X`N
zbV~wq_f59G<3jJ2q`n&0C1L>5-Ir1?5K}WTou&IVoplb8jI~4wIqOW8Tj$EbAT7F*
zBBQTPfaxs+NR($;2qD#1*tg5&qOO||0w5Zf4M!vB!cZXw&oQbh$Eczq2IeTt!cios
zN`kS8FafHhRv9HfHM4-GxFZu596dBkTHL<z{+m1ZJ@Dq+?|$hkUz%07|MunYuL^tR
z=GDpgOM6$|edXe{uYLIomoNYHr8i#L(fsL$A6wPa*FL<ou{kDS1^vupPd@dLhp%71
z_TKf|kI!e#YW~9)UMR}J!w;T0n$I45V0$*(ubL35dS`p<#O|?AKKt48=g)rk-~agi
zYu9ev+K0{j%(0ypUi`_+Z(aPgul<WWr)$@*+}dwXojQxuw!RJAesJm1crre7`oy51
z+5D)g8d3Vxv!A$h`SNo=dj7MY{rv6QcgWDO6UWDsvUuyY`qrK?eB<iPPk!|AVl-MD
zQaKzf_NO1d{qFrAJ7ZBL#J4WKc6)zW6u&!LcxwwEs@d$|$FIEb=(!6IK6w85=YH^$
zS6+PViDw_bu=)N6*NbwvSk-|e0v;Sr+u(6sL`gZFUi+Ll&(wz`4W;BQBc!avJ(L60
z<gf+R5Q35xWmy(EA}p6x6c$_yyt}J&2NDuRpr~*-Z<OW4?#9lfEV69xXfcZ%Ek)_@
zuf4%j2_RG060;523C&M)xl8#LmLs8@$#BB+gO37WSU7M9EP-Pb2@-vbftghzN6{GB
zs|H445;t^iXp3={k6b>qwlJ>9@-olzEZtC@bJp2Z(j`cdej#htNFGo$#wrMa=^_z|
z9EFg<Dv@>w4Io4`&Pt#ENXH-1<d#qUbA#9&W$p>uL=nmJoKuI$fbbfCkRnkbWffzh
zI3+5FKn%hhL^MPW98-*3S(>I5wnU)J3Sx~BOCrh~TAx~8>n69fZK&(kT3jMnYXDR@
zCV>TuB<E8~uQzQ-9Z^wgTQ3S}?k%c;SwkeUszAo3qlmC-6omAc?&NfM5C5{e*lOA(
z!#dHq#%8VMwcQf*p5SgOug~Xm@8f7Z-k3~`q1Lwm=$z#cm#an7R3fYhQDnB9m&38?
zZ(?0VyDy`Ih!t%@@NLU68sP#{Ku#1a2T+JTC>vNLia28&nGxa&F?jEr76F7~hF)}J
ztz!<S&z!k=^HyC|w{PFs+1Vx_?cs~ik+3^KVH(_Y-syxc02O6K5Eew!v99ipeRWOt
zR+V)5?)rP(PtM)+T!J>H!*cqsSi?m7zf&44uhZz=a2R{!B=+9t^=vv#a=Ok^YNj!-
zy@YFW;yt%yO-^p@7*=-+SL<v9tlQ1WU@e+J=qaR<X3=)BSOUOsI7Be3)pT}r6nqmx
z+qQLE*X(_}T*S8ab-h^3yl<Oo>6<DBU#%7~1ZMHRO%bZ3Okj@8v0J|MliKt`?ow=t
z`l)H|hXf?u=su;r4RxblB;$<Bx}G&5AZ9MJ)}&^HbB4$igMqOY$=IwIj>g8gt?jMB
zXlQIY)dHl`A7V-j65;w_FB(-e`1a=B&BMb3@7pM_wY|HuyPIWMy8edH#uU|#9NNIl
zb+z(sQ>_*;_@-Xj7&&;6RJzlYH0%(dDj`CQ-usXwyR0e*2Up)-EcdT3{k6RdAMC&P
z{O$MEWvgcT-qH0RzVh7BGCNuwz4)`2rmGc0_Q=DJzVr5LQFwoP?cK|M^Vq2`pMT=U
zt@r=t@4o%&wVUTIoWFmv@$jP$jYp+`zrJ_t!3*sNS1!H$%1e(w`t<#0kN@89{>P_J
zox6PX{hz(@#{O*Y2S51ES3m!Yt7i3g&wrl{oj7%DRqgFhr<)r)S?&%FZa(zzW1Ab3
zw{Kj(b9--RYqF}U#y8jZ_RgL<He1Y}`{DB&yIW6v^ohl4xxats@y8y`i%nJe$Rm$_
z<dKK|<lz6<zq3DE%z&sI4u;Eew0mrKcXKv97)>T$`r=paKmTZ8|LW^+Jb2;hs+r%s
zb+f8hgHit8hwpv;&;DEyj;436-Prj4kA6CuOd28|d;$-xsj$$s(KzKT(@%LyMx+mI
z+H<HR;!rQ*)y}tW(O5zvs$(lEzVVZd(XcEH;bKww{sS#{Sx4)uuqvPzn66r9SEqL;
z+v6NW<Y+#REJTW`D5(i+5hq}GH9N)SNy(2vzT-wCC`xge0;qTn0-8QFp1F<D#}Gt<
zi09}zcDyR#s6l`g*%Y8T730zkZ85O<&}5~xnJLTCSes=IiI5;l1R)LypPZKC>6o7~
zBP88LHbLSP0Lf;8s>lj#Bp93I5k^?a7*=6Uq(@|C=qPwy?Vb`lEy*MZMO0W~^oZ29
zEfI1wNI(e2Sc4cN$JqJoR6=^9w!X23(&&_o;n*#AqV|r{$SFUU4pU9rq&5(ObZe~`
zRn-_GgH7#2R6weIl%@q0A`+G9Yz3lZP!(DqBB#uU0YoGdSreQyne3RASyUqu8pCaq
z0_QPC(FA@<@x9&|+k0<%mqRy%z1IMrmfY*zCrbZfPKE$PWZ}_hbm78<>({O|b=5RY
z+cqpQMmRj&FY>~-b>N^PZM$+1j*m-n&R8;RRXb<h8pI2crEMFPBx{+ttW1t7RW%4g
z>rxQ(9BHyp5D8#tL)$b7!5Ou!s(O2z?`-b~Gjph_>fLwWF9&&9mLw)YUe`^LuE+?T
zH?k9EchEUWHR0qzLR1i-PC4Ik)%)?xJ;+xC6`<~f0g1JieuM3^b?Z0f-4tbKccQ+#
zuVidDoF`t3ipli%=?*PL+F3c2(4-Xu-u3O?yG>ZTK<?5-@E$rxKVrJ;%@m}bFwuR2
zh|tca)8S|oybnIyxqWLfJ!<L&aJyQ}e7$N{D_>Q<X_{u$HjOYZmkSjMzD?bs)_aaI
zgwX5%SS3d8vQ*s<S<kS%Cqhhp!4f28w@o7LSVbh`5S`0QV>6Rw);R^ui%eApgEG%D
zB6OK62SYL@FAL|KwOLUPZB}GizPY`%v9(oI%hop`cxQ~L80x?YrXSY;q=yMMtBNv5
z&Ms#2Ro!kMJ9h4Y2eK?9>Xy@?e*vd~Vf3+Dt*UCdS}dy7Y;ky4RWo0=sm%=7DO7qg
zIuK9@x>^Mv<|+CeBHP15KPdnHhkx_t^qLpe7~Z&j@n3%X|9s>1mmb)@@Nd3Vzw**^
zR~83N&~N<hUw?S%J<QzmKl}d0w~BI5sxg;uTzzZrvSRjEKlt`9Jo5N3bBp&6-+bo{
zA0pd-|LQ9*Ub(aP*MI-*Pe1!iZt1-b-#<9K{iB!v@z^Ba+01U<y84~xp1XMcL#5%%
zum1SXm5Xjz96z!1(^r4;=1*Tdm@ZdUg(78HeD{0b`|#3xP1Ckb)wa!dzx%z{-@b^(
zy!YOFr%s&Q-QAte=dZo-+K*oN$KUwPf9l)dYkzcf?edlF`!+X_93o8*k4~xo@lRfO
z;?WDA`Rp$MW^cXy<}0uLjL}(YUwr8mDiDaD`{9q?c;_8OI6AuZ+FSm^t9x!^I4JT#
zS)>tvr^<n3A%(lZbm-=#N!ISHRh8*%HlMGgi<_i9MJGLpnACb+Ko!*2?Sf@<W4JlY
z$C=qXn76zxj>BDMZ1VmRf<misI9(z0vCZMY(TT|*9xYm>peleyWde2wvQsoXql1%F
zZlE1eF_5gFoRma4Fbivt5QSUs8;)%VO$;r^sM5wL8l#BU$e?1`6qF4zQ;;1wTaYWT
z7}~)gGu9xbv6lD{))ayeA|M)LdomIMKv@*TLPU|1ucl3$Kma7;0i7|qv0yEb5o4^U
zXsmUaBQ_zV=&vMnj3Jx8;N4LkV?(AlmZG%;iZMp-1!*mt1M6(652YEm=|CJ{h(y^E
zifRneSkpx@Q?W2<0To>G$*2%vGG`J9k?}r6jvdU%P)dfYit&{A@YWhc6pk?j6?T?F
z;K0f(M7A5@qCrF-xkpNxBngIemlJ7OgMts5k|<Gnzt3IYJFNLiED05sw!G4XK09XJ
zx`&$P(dj8<6p=ZqYF-puTU*n^!})A#4HbDlpC1*uX_{uam{*IL#1>RSTbIO&!4=Mg
zoMXBxc2LHI3NZjSa_!s7w+TLAhz8C&Lx>s~HH0(|1VRPiv^FthIci&rZyCTja?XYj
z27^*n=kr-n6vo);bbfR+Es8w$2797(K<4z^@90~q5+y=v1Zffmt0;A^H6lQUzR98>
z{Z3HfUJwT<P>j)#1xnj)R@LpDoe((1^t!w9I&IaR2#ESvxFsW+ezKGkEV1j3cfboo
zOhoJT_fepiO$w}?4BafcvtvnW9PwR5kFMPh_ZW^P#&klXB-An1fdC5=5`Oo)&u?yR
zt4dQ>cWzy;W(T2JwyW7{IrViF+P10d5TkEe?_2M^$X!kEy1biS#{Czfn+f#J`A!?6
zu#O?5FO5O6tZJ+SBI_&}Yn-*#Wv+B?ke3^S@pw2HCu=tu9hAAXX>){`bE;aD1Lrd5
zoUzVjxy{PacrqG~%i$n~uw2c(Z`0R~RJ%H2hx)urm-TIX<NEczy}kY0cc!!X?unC6
zfBc!rWSk0!om)d8a^#r4Y0|dddmp3Bj`pXAHxKUYUB7mvt!fStA}cF%U}lN2r+}o1
zC}f2hj*8*1D2GEGl=UDx7{DGyDRQmZ20XK|m3gUWi-Xz0JT_irI4E6ijuta=8L9x8
z5E)d!7!|-)O0~Jb*2cscI-E{tNAt*D0f|hRWh|`9+%``>{P5$CJiJ*9e)j6?Kl|YA
zMmR*;+T1y|JwjuT4rYtPSsLPo)(<k5XIazK!=m`om%sGsPk!p%i*NtYpZswx5y%=e
z+Z&tC*ru(Qt3~bGo!w)ZF*k1C9t<|0eCW|9&fRaDcK_Pdqh|Sq-}$HC`rH3|b2M(f
zOlR{4AAaES^$(}h`N$1kee0(e9((A)2Tomm@5Vdte#l5Cc8+lj2lFFHAma41q-)X;
zq&grXAQ=?}Oyvhd2+I7(h4V@>Up0qE^XY80_Q!QD*@Rh1lk0@~1+gFli)YX55J~O%
z#;jg3`L65IuYnW!DphU(Eouf*W_aS*W;t+++8@m7rDvmNo3e9ud<KWdpxnWH0{Or=
ztHuJRpa010gRh&$$KYdVA~&&ZI0WHVViSA-78F&DM$Ev{5Z%za!e*tjIl0{A1#NFl
zilX2ctE%c##vL=2Oqy?*^irW@y*Fkw9BoV{%rc$NyB}kq^qvN?NEu=V=&a4MyfDUC
zn~%oh?VW8Rx_x`Us_Q;<xVG<5+TRipp-m^DJkK{bC(fG1VmX^l*JDQRh}A%tB9A?o
z5YSrMm<)EdCUxEH-MkZG=nMTl^DEspI><$bm)_YN9pBju-e0-8SNoPFh^R2jnkCoO
zNhHC7K%va-`TI^~&Rn~G`}Y1mbHc%OO2K~1Xi}}1uzN8dKfa?P`-js--3CSxh%Bt2
zK&-&3tSZ`jBb3NE5e*@9Lrc_q4XvVzWYX&;eGR!oQm4iaKzbZqyLNML4^@`)>1=wC
zWt8V8_)ssG2y9TrSHny{_Q(ULH#Szc>e=Bc296wk+w{yLHP%FHuZMc>Jt5@AZH-2|
zgP}tb-+J%UqL8JNF&iQxa?Ua6w5<-SWfSGXBj;jUBd?x%^no%@z!q9o)!xnh`_G?x
z;DNKontMV_i~!D%Aqvq;-|kA0o!(EN_pDtz5aDn*tm|61d)?ieD^A;qWGc4CArcy!
z=Xtv1OQ&{Uw{`nDaEite0iq$}oK=7rf`kAmX(U0VyLhLEOy96URVeaORb%uVSvX*q
zYvZ&NfrRSqy2hxAMUks$2wpfz)z^xVo^IRCu@L~B%d#vJk>Fd7(asJJIK;NC=d*+9
zoxNDkn&rG&&4O>)`?hTph$`IznK^yu*3gVpDbjn`kX<kVO;6DRM3Y2uJvGyG(F<cT
zYqLDdi_AEe7lm<lG#(AgiLs-+nCzZ7J{S!F5kSbWO0Wi<wbpd!`aI78C~bV5D{NK{
zN8|Bif`lOiXH8@uf(H?6sqbiZS?F{Q2Y?W~0xqkns;Xt(G;L$Z42B~^n3jg?Fm3EI
zeCT}?0b}!>`jq$g|Km%~Yna=5097N)1{+U|mL(7+Za}vsLTy_Kan<-RXxXl6yFEF#
zdFqK%bp4G(001BWNkl<ZCr;mY|HgO{8ZSXoJaJjCR;y*TS_}%aS{(+B%cymTs%Wf5
z#N1|%@{RH4z?B#{ZOH1X@*x<2EJF@$(^T{MJj9?P=g-|&xctW6HK6#>#~x!<MSJ}C
z$>FeUYd_tb$^Gn*ntByluPT|%MD(dApS*D4p(`JJ@Ux%&^vNflq%32Rx^0Ur=NN%7
zMxWMfpuDwFT9a)|N*`kSSdNCH>7ARyqPTYb`r*->tQ~C+^E|5;i&=HBJ=q+)oU7VW
zd*8_|7Uft2z|MFan9(GSmtl@g(;9(PC^D2D#LOWWLuu#4A|Ue6XHLHJ{`(ow$?Y8n
z=I~$^Rg(Y@)^-_Gg9Hdh1Vl}Y&s@0h>=WnDo_#O?e*Ig2art01Z6$CQsDYmJpU`=^
zp$s+p-~;aK(Ww(#yIHX@$&PL>w`q6+2B&be1I0F#Lz88aRL^MzBOwGIL+gFrHf`{&
z#3qJTV#~p6Y$UeGYydN|xpg_X0htn9X<R{BZe3=rHP)apCUY*XM`5b0tO$gZ79hr`
zU}s-hH&f9VR1i+D2Lu!#qZ)zK7z9Eh6fq%q5vORav*Ym?5f2WIg7>`uP8A{$8nUQ{
z$f#O|K*kc<v^jRp=DABOq;$rWzKKC8GlVISWl~k4EC(AK8%P8oA^P4Zg9-_XfeE#5
z$O51W6H%7u<H;zr-df@+MD}`joO_S+22Fa&5mJ_A8=D(t;TEfU@7C?eo%N=}H<J-&
z)`(~TlHmYdW{SLU&IFd(@@5Dk0x`Yhwd1j9QhX>Pn$Cf>hAB!^Ozz{j2I5i&neBd<
zp{s9nLH!tFy{eXrB`O#~?<<73TvXLE*%+0SiEwjcByDAk$xB;1#V#F|3O}jx3nGHd
z1>lrfLA^p1+FFY&%N%tB@Dx#mzJr@)493vFIiF=&7IrsW)9U=tGh?3TX&x{b44lml
z_7BgTK3-s^UF{iD{b_q+M^$+lSwbK7h8X+Dph)ZrxZO**$n&DenYn2ii7LvyX-|o;
z-|f<xs$wk`MWL$8WySrg2YUcOnn#N$8k^oV)@4OeAkk{MP?i`Xba$$5M3H7PiSwwe
z&J{&5GKN;GrEn!3*jAy(39QptECPZqb7U-8jKT!KF}Xm1@aMEwy`2FSF<~WCjVRmO
zH?HoR8@_F(N4ML>A-7fVbqFno7<?NehmdZ)F};cV_imzSB-bV01xI&ui?kCWL@S77
zoV6vIoLp{<aam@pB?6Z@<8ZPuF_wnoQCSw&xw0I%taRDNV7z_m%;_w5BGR@s5+ewz
zDD$Am)7{!xhlpg1v6-<snPO{eYd9)>U~8?jCdAgajS3sO2e02r)Dg)7g0;@t{Q8X>
zE-wIaKA$&D<D7FuNL_QhTlFVD2DvC|OkuNPxtcaywimN_YD?<IEJ`XXyJ&6TwyvN>
zaMlMe+-bqnrl+cWj658TXx6wbPm9_`&aJ(E>uLzmTBiar#$y{>C(BZ1cLt;K)_i`s
zX#x?01r}pW>9SEVJag;>DYaFdPI04hD9pn=J9m6*@9Kx+;fWi!_pjZ)T?aosJP3i?
z&~9vOfFW!1EH6jHNjV(59ed)~3Ewo@R2#*~YIcxYqe!bjxwCg}-Dc)r{LC+!EVFqw
zoz0fZrE{)BbBDmuBZomov%`H77*CEh6&S?4%%g9X)9JI%e8O16B0ex0Xxr)&kAIZV
za%_ED8EJMb>G75kS9M@hRxSG&6HUXp%=^|kHyjKlN|$;Qh1gCkPaMyVZhi98pMLT6
zE1YkP?eK{UkC)>ygDzI9wr-o&x87HE)r1&AAW)-1(P!KkXaH>+VUp>Cr%wF#zxYEi
z+BVZ4y!_^k{kf1KB=0?|fB+)oD5r*Yx6s{5_UMyOef^uyRgmZ29M1=nGMDjW*k)U1
zFrj?I6uDC8y%6@^i)e_^$H*L;;G57k(KixX2^EJ{V?Yg78V8a=xl!1h&;&a$SwVU3
ztTWcyRDqKYs0u_TQHK(CCuLUqV6FCY+m2wx+&hLPh7gP~T^R{GHAMp0M@=y+av3p;
z_dXRam^sBdJB$e=Z5JD30RYf;GBgz;beYY9OH;8vijrP6$jpdj$Regzy)_0!fkmvf
z$;OtlHC@)ULwb;kvL>F1Au=j}Wb(2s24y@vjFGh?j|mGy4_fK=)Cy#Y1==<uA)-M{
zYPnu2mL@EU3Zz|u2nlV70RYOf$g4^@Dyt7MDyyO<2q}^P0h+EiE(Fw>l#+3s*{gO4
zDnKBz61flg3Zexi>TDLQqN`Q)-aGHstEDp(qDP2?g32+9Xe0#?9&HUy>}=lJTZu3d
zjW@@usaIxWj5S8Yss`wT>7}9E0HE33*=pN%6`E05X2wZ~+7Dq>QAE;3od}IF1DA!^
zoZK02Pm0K+#ZkRnHltxyWOg_#+8{-qx1m<x$RWLvI0ellGDmBzA&R{u@?P$lN+Ogc
z+$RD++xYRAiY)hS>m_u-X~4eeiRq`;fa&sG+C$}#BF7$@#%rXoA)C&2ENUzPP-HEv
zvo?<*ssMA0?5W>tVJF@t07Eu2Hjj+PX4VveqKH?Cs6t(_3IKpiV!5NSj*I~$G}bxw
z+OUKq15IQ3b+bT`020*Is3IDNMo`q=xcaWDRLePs%GVWvwr!K%vc7494=G-xsv(5*
z2b~20fYaVO*;Z3-oH|A)5-K8DTe{M^VKLlx<<J#{%WRg}!LTHQd2Y$*aFCZ}Sq=sX
z6=02Z`H<Xrym{>S$>W)It#7?=Kp8Zu1mR#1tV!H5i-=&*kTa$*t{hK>NX9{TS{LOk
z%a{Xdf=w!lXi{=^mIW$@L+ky<#^(P1K~WUb+5Fb+TW8PRM|tKjh2y#s5+?8mVwUCO
z@s=o}5mH?YXbw4+RFt{R+=T~^SJ!XexpC7F`4}@*F(!nNV4f<dqHQap6#^YzyLmXD
z*+KEM*I#?_)mKyHAFYdZ^FRH!|J~6C?``DvnJ0F>{(rrCW52!;d<EdW2=lNkPwbw2
z`_iSGd$*4ckF2o<DFmNe_uu~)|K-MLFtu>*)W#3~{(Cp4i|a@8RT~t*T1$pDwl)=T
zzNn(t%w<`ThZrs6Bd3l(`{hsVRePU)_NkX%ee3Ou@9#~6*wVQ?%kyGbZftGMmW!i<
z!w@2oafV_D8hL9_e(kGYeErt7le=52epbb7I0Q1G@$=a%8fan&fdv3btwjxL&;s*f
zcJzf$KQ-~Qle-(M82;vaKVC_`^l7Q0MNzseD~e(~D2Kx$fpGwkeaNEy%`ZH*UDTnT
zKJdsx^Vw{fopI%eY^DlzQ|DthIG&TCHu&juzNl6{v=HME;={*BVZQgZ-}>^^Yj^(5
zU%e1T-v97QQ_ZcjgKYTV{r5faps_ZOK|+YFZ++7e$WT{*`1`*$(xal#!N!T|U^#0C
z1U9S1u7Zh-OU=a=WQ_m_M3(iMCQXn6#~`7OZ7b0WH{x66nqo`h9k#h?bD%OCY?aoD
z1I;pHGn0@y{iuzMp%`O`k;tTSfwcr6DukdwYn!YPQWP<UtcCPCG-L=ZbIr`wT2w)6
z5kMqj+O-mTR)<bRW0b0@thI?b;Jr^$&W?^Cq)4DnM3B_E93YkTm57q8vu<it?%f0(
zAgfOTgNo*v1E5t^w|<C-##&)k)XrM3UBHD5DcE%J$c#$}XCgz87)E{5LOJbX?{Nha
zfD$<Xictb{3C=pF-Q!)lW@I;DOmEY488Vci0yRyOWrh$l=N7AZ3RosOuBs{;1wwM7
zsNh`Y`WtYH7NIaJ1d&ceq!<7UqCp~MGR9zsb3!6gfx51vkA=&8GhZzaGApKV?1_UX
z6>G4tbaH#(z~|PY$<Cg?f3|mccysQX2&$>%#T?VR*&t*96K6J#Z5=;xd^xXXi>d`4
zmAPYPj%uwYOA>U^Uj{X*#=y?z_}GcfBC|FdXT@Mu#TdEVm^AImX8C9|FfFS@Wla4Z
z5m8|TZJK&A8g+sUj_V7cbew%i>3Z#<k6wM-G(=`i|4zC6eq`0<AejX?lC>(*wryDq
zvMlr73rnJQ#B{bZMkErbsDN=uMifO5jCHPT>bBd2c5krGje%qk4OwRZAwk~0?Euk<
zSYwL3G~NfICUQ^~#e};8MBo?*9T<mbK`nwK%&ajH1;A^{e0Lt=K2eq`u;>shq60)U
z0xb5<^$&zum{mCVHgb%yOCEXep|f&!znB?`(utK*Arq|tAtaZRNj4cnWGq>iIh$Em
zj<@gIJ$*JC4DvEFM1!($8IjQ}GenX*Hy#bFO}uW%vjR+M@~xfYCq|=@LCUhM^$s)w
zFo#AZS^^@7DQrSyj8QOTGBCzilky1NDTzorrIjRcxRQd3(XRhSXpMC)%eJ<*Ha0ev
zi^ZM&{rBE^_xuA7oH}(v1UisDh^W-{Dj$p#s4Q}q6+VW%C=OPKH(Z#FY_PGgbR0Gx
zdh+oPLpy6KTGd)rNXWtWtS><z5KKk7)v5-f4B`D(UcWh?VjDGxDnxF@^Yss|yz|nl
z_a7TScy_#Z<u*hb7lYAgxF4pUc=nT+nRnlN|I(Ffhey*+Ku$o$6zEp<>Xnz?8RYWT
zo9|t}x~DEDjwIrvoWJkB>2f+>tqzW+bsL2N0P`$U1&Z>;XP+U_t<6d1aPP`{XLnrP
zHm`qhdEw)I7artl3b*$T_YaSbrjpEYq6Pp0fB7@NJQ+?-9@`xc+^w5S@2PPv##mLW
zgG-m{%kuiW?<x|Yo;`P8ncHh0Ua1#NVT;dx@>4t8yG48a;R|P9e(h~!*t@<rT{Vi9
zP+XozqGC`y`pEso!2aaLSL>>=<c#8OiN}BIQ#t#}$K~wk-M8L(<M46-6IBI-MO<!9
zpW4kb6Jxx2{bomjkN&fdpZ|?t`S_hH7axE6!PRVW_417+*mvK%aWwxQ&YnK;{L3%H
zWH{N~D)Zvzja$BrA+ktxkw5+L@kgG#5RWdmH}~e(Zr^(Q3ebs-Y%-KA4=#_Hp^n?C
zsxhWqqvyyWcppQEAqdy(>)1xa5tW^YBPO##sB>s@Y#rJHb~cNFBl0WIRKrMVkQ5@d
z%;;lq(E@N+J<zlS*3?}jV>==ndj(^GFlZsb3AZonIy+eFAhH^TL?%fZk`6;lAxexw
zM)N#FMCM>R@(lI}RumO9fNH65Kvo1oj4^P}te4KZewSm=8wyYi6^e!deH&AS#9E60
z(Fdfixzdp=B^hT;mX!cj6=O`#A9l_Wne;nTm$BQ-NebvWAWJ3#ax98yi73mm+?Ca;
z>6X7;)<!uh1Bn_$Ypi8a72l@sn+hVt&`K|??W4~OXjnnP8cT?jIDN*L9``2zqQcVm
zxVj(#Swu&a8!`X{il9bS+NRC3Ec#Vl%`@WC*@)^bsR2~T4L@-9*!la8p+rK6EUUT+
zDmHh<w8Cmg8POmybw4$Qfm0j9(`UCfwny_(4mXKei@^ZNDho7C0%!{-o>iw*CZsaY
z9XW|m#Rd>OgDQsL3BiyUD<eDT5U>(c|HT?I0KRQvnWu-YFyD<0LzlQ_?kqB$vsokr
zUzP*ZM6cw&Tz!|}-y8XiMWo2y`@vw8MkcLq5jE8gq0fK=I3;7LU<E?ULd;-XVYAZv
zCf%6()>wyA$xCPLz}gbJhOq$zV{$`Tkh&X`B(DZ40HGyI8Db7-0W4x>T;>>>rfuq_
zHA;rkZ|>vSh}Mc4OF1hVvc?e$*lKndBS&Fj4l$;@HFrLuj(eWMQ(Zlm6@U~B8BB{3
z0z*W`8e<$8G6qG(Ip?f%d07s3&OQ3%eHR`;V~Qd-2#Vq?5CIu5z=OhO4i69R)NKoh
zZPqBXo5wacH#gIq(?nw(i3H&g4N7RNQG#S5jxp_IAV*8PCpXuV_jMXBp^*^95+Z5S
z)G05fN`PQ9=WI@hn_F9xjmdmInoK6s>2&Y<_1&$lY~+X_U0{-pM3@`jlq0KYX{K<n
zIJy?+bEB1uInV>clf#Yi%84HrE^{O2{IaTn01Zd4A$0jV0cJ`6$pQ*>n~UUa6wf{g
zA!(5B{?&JmZrq%o-o1V8GPiVYdw6AkdFt$ir_Wya*vCKl+>id@`uiU&TNa@1QAK1a
z%YiPv|G`gx@cm&)nSsXha&|~$#^^@>4^wXzqf2t-_nmVhBG+%J`s&tl_qEx#SF$-I
zn;b5)XckDCu?)$!UJSu73_r-Q1p|f+8v^{|7aO(#8H4e|7_w&oFOX!91`;$J4LMW~
zmm%5Qn%(SXuXnFo_tyHYnHdr196v->HT$t~yDM*2W=6z0=l}byRsY_v|MEA#_1f3o
z{IC&X>5mDKB`32rUOzrQ`q7V%O6(ro+kN=(@bCX;|NdL=?k?v)7@xm#<+&SQ`_?y~
z9vm#@O;XV%^&cVCWnCBL2Or#dcyCW7E*FgDW>K>C{Cho_&YBQYfcN-hisQkjU-_js
zfB0r*svFNd_u%2-y*EF2^!VuQ_wKZvI<%$DP~yMycYf#I?xWX!`1aA!$-%*pIc#m7
z+nk*H{&!zrt49~MF8<*AA2vt3?fj^m9DeZ8;a&?Z*shl=DiIvaj?Ya-H?Ce94eQ0x
zY<7I|?3Ig~;}I&%7tKdMeEYR;ynb@Hnkq5q*T4Op-~G)mf9l2O{^+Y;9c^x`k7{oH
zAS)l;xd$O$-`XZ058wW9_x+!L_|tdWrqrj-NQ;@Xj&gD)Y7%gIAA}`D?|tyTW9BaU
zE{2XnC$W(bNj<k;{@pKr@vnXHufG4ouYK?Pt9G@>sC5`KvN=j&ttE&b9~wVK?Dhx+
zVC|y}X&NKTGF65oE>m`nv=4z8RaC(EF$C~*4LIALD=4Z+!dVCqh)Q4)NdiVZBju?u
zQ13qKPqNCrJqA#f(o9oKR9<7?^cRsRuBjPKiS3N3WRp%F>64deks!i!>Ond6Jd%h4
z84+LsB-eDYZM!@();eo#+olTz1VvzBJuCegn<F|vCmI*ab~q?9=ZrnQHc&-nWd%r6
z6rc%JD9lX8oPra2(=CGZl42D?6a|qefQbc^4(&;3k&@9W8lz7!9|96MReTGQbwHHT
zm<fM!|Neu6C;K40T%P1PR<<y}Mr4%Jq#BeNl_p*}Kipo=Lom#12giQdhQ(?jC@Dvx
zJ&eh!1`z}UnZ=z8>suQ&=8$LgauuH*&XCYrvevM*sT-=2T;b__n36rjq9ht5s6xxy
zc$pA7W68k!S|uu)!m%O}qpAp4MCdvX3eFj8uvNj{uzM<{gyeqhpO947@jjF#<hk=c
zi1@QnWKl6_e!)dZXC_%;vDV~y5n>FX>w{s4X<}C-x;!V7iVa4UM6{~QRkH%Ls+iOW
ziJh0I;e>{aB{B>K2_s9M7g7$Q@49xu+=2?C(Niyr^ka;cC|4lSG>W8|t2y%k9+6K6
zuhQfo8Dq(0nCR<dEV&rPF6Il7zS+a4T+Uz6H)`)K6_TD2MoDa9tOYWF#$}GIEsDG-
z@;u9Y=+ez~)@5bw>a9z+Ze6-|DOEYFL1W2~Fb6_)1~Mx#F6WC`2$4C0s*lyht1s1c
zuKIC9O9TQiMkFF<0f47Z_wPS=Fq_T*khy&E<uC4Bw9N1eT$)~~s3L~IIehr=-gG)k
zv)llt^Z6%V`GTR0CFVsnS)Uvn?60ql4)&jZ`2PFXu3Q=p&IR8--hD8iFA#~y`tY<G
zU)tQxvdo0WE9$$CKI}+W92k_zoIkfc9OlP1g!RGYa&7U^1B|MG-cuyRQ{T>MVh}p-
zc`j8|Wrng&n}rwOC)*y~-E~9{A02=%Uwr=BfASCh?f>o{{@%&%)8gE@y*J;Q-MQnZ
zt4JmS86;y}Vd~An#^+vm(RVywG_j+>AScM%#T1DQ*gP+P^NX)ObFui#*Z=309f0)u
zRZI4zo40p{Luou0g_vSKU0uEY%;x6ioj-Z);&^i7%I3h);obW!A_yQLFd|{$?AYa7
zqqSk4fAH={M+Yaf=}DH=lM53THO5#n;@jDDZje|}8D__e?X``oS8l9MV(w}~`Hz0|
z&i<Xp@4vs>gfN{gOP6I}|JrYT<-hrF|LZ^flYjD;KX?lj=O;_<{I7rcE1$S^YyaNv
zWNq!rg$qA^^U-{F&wx_>G|!4J+`9Vy{U>*ir(#eLSa7lOh_lVL`R$uGkE<tJ&p*Gp
zHdq`VeD&);IoW^w#?SUXy!-UU8<*;};dg)Z&SW(F5C7iZzV~?lAOFd}I^3TE$KU+S
zFI^hfZyC6>bK!;C&n%9P|M2(!`TW800LO#e?d0bjxYFcK38PAs$Q+`Nk-hiccab@8
z=)4cg4TqI@58{nRBdz*ZzVfNtfAg0&U%YasIePc4Hy0MXMK)R(1VTe*(RxGaRYhxT
zpKGL3cwFzb0RWPOun+-ILS~ktRAVfXML{wss?6GS-Vg~OCrz>_a|A$TBx^Woo*PI6
zc>o27EFnY$2qE?`EQz3CNRUiYGYTk?T0<g<%3(rO;WM~`atzX&GQ?U(L@bQtY*C~(
zYWgzA7|EfthNwTusPbtZR3)i`Q<h%<lti)ZnEEkVLrB7bIj}_SN$%;+DJTJ$BvkFX
zC_-p#V)$_INT<>sNfXp5uVF=n6k?R7X>fg*Os<9~#0Y>KnaFUAtP0ktvUApDnTR<>
zO!m!7Q56<vKtOy5L|`nbNK)#=7>RO11i%>MYPmv$<!T;$>k2d$bJCo$%F6n<tTP#v
zt}fib5mtj$yL#|={^0)Zdga#FN7&%ZFA{S3jINbbh!lf^Kx9H}Kz#^)HlIz(qN-|+
zk=cY0&eE%_0wEB&;5|`|1YPUNn(0Y1YvOrR%$CQ9Vq9X~5TM2oQ=M3am54d|;Ik|<
z&LRN|bL3PN5K&{`4AZ2l)><MHLX0sQlk88Ynm;5^B%&BOEd(Ml#h8PSBI2BN&Jq$w
z>DpE#8e{T2C$wh@Qf4s*jG@S~TD1y<#wi#P0*r}H1&YpEW`-CQg!+`cimI`hwS{v<
z*Dez9G}U#83?M0@C<+ph1u|r;v5;kDuuazmmI$iG5+GVjDXOJN3TVhAkQrHLz4tLj
z1xV#c?GbY+kDOF6fM69eB!_5?bA7bIxh&7KJS*$MSX)&2a8OlMF`J&OR;#o^+k9jP
z8=tuSY+0AqkP1^z4`JaT5^|@`$<h9?Xhc*Z?OHD~m~5;k<8h3qTun}k1u6g;@?E=s
z@MQPV1L4?qUU;o22dOJ|>J#i43Mphp1_5|?_rY@6HcbP{-lNUV=fzMI0m-?t9uC*m
z)=rKNhlA?z?(W|1qwUR6+s%&-_NUW%h=Ez2?zgXg=_*;*1yMjC-kt7u!YRG20k3Ud
z7?yIN&DPe98yn|;cK4BWS>7Kc(o@%+mKh>w8XDmk0*ax?akXk&L9)(fXdNPgkyVtn
z^$ig9tEpec$A?Fk*Ro%J_R^2ve7AE}h!hQo*&bc}hyUO|fAJI7|KRukk<F_hVcten
zqO7op&1}`omI~Q(pZxUB$ehg63rd9M)6c$eb$v3*Y*gvQ&t?l|ogU5q;D7rU@4fR>
zv3&0O)_gG=YrEnM(57y<LmKDh^OrBLk0uu{U-{;@z8S^3dSbII9Y&B00fl7)ffI)W
zfnpa|vv6{>`uyjAJ$jwZkM2Eu0#bm45G7(R-lOV^w{NayCvW`drwT?es>1Yesov&V
zUfH}b7!GZ<wzs;!V$7}4m4D@zUV85Kt*y5{G;e<J!SOWoTV-7?y2lR>K6m?*E8ZXG
zC5q|1dGoy|xwEJdZ27yt_VRPL&RyRrS}niv+V}449Y-j{!^!@_w#}7m+b{oHzkxu6
zWqZ&aJ&=*^49&2Hsxa1o0Tz%X)eJuLyz~$Qi?qRa9D+!rv6aw543@kFHtG@o^e<n#
z^~*1ex7KgnzO{Pijin(WK!dE}eV8@j;e!K^l!Eg++Z*faBUR-Dc!}z%?*S*<>ufqZ
zK3R00Q`5v+v%bEzwY6QAPPL!Z4UxelPAam9hVJNSxoTSl%=2uyXojQpoeP(pP2N3K
zz}7PW`5>wUfRW?T@yYaLs(@u#%x1H!sBS*<f^o{CMpZ;3YmB`I7XgK3@5%1L!PBk@
z))_KbWW|*mH;4Iv`m+{BX7Aac=>_kqv+414cAV~MIzDXeTo|txXi*SEMb*xi4KsC}
zH^w5;bUHgZITYa-Ldryq*Ve}yWq;`iXw0(l2S+Euo>_>f>-@>dA(>v=EGk7&)}slY
z%B53lGxY3ICPQHrpB@~{7mL)KR)oB+&uw2Ut5Wo15tOQ=5H<pG<kfsG5>n}(2+7%E
zu!gp<mJ+iG5UsW6&YinIn>MSNa9A$cq8p6LvQ}v|H?me|8|!suNkzJ*SuW<@`=$-&
z&kdxPY(i>+5*dJSs^0`3{b(>~ML<Gb<v_?N^{Da~eVcn9thFHoqV#N}Y>$S(!N*Po
zZC2Lx;XEune)RAdVv8CL0f0xuJh!<ur`=mhda<r;^DHxD5KOaLt(v6>c<+fQb8a}S
zQ@H5VZP05xvMkH84ADG2I8HZ8MVzyPL2aE)w^oFStctX4n`I*aA~f^a>ha@8sxiy#
zWHK3#hk21RE1(*4_9Ijz5LuU(-74QdoPjooXbg@=YtChfD<CS+PlKxuj0)s()#Az1
zSqzIjb48Jl*T#94X`-1M3uz(`kOjy(AU9ofk9YS7JsBB|27_U3(IKIz8Uz5cHZ#T`
zL0**BcV0mS`q{oT+XX<<XCM*D0c6HjV2Y|9ly#jKdFoi_MQJiS9MxrA7CDYawKX6Q
zAgd}>@XWJDU-`r*E?vF|2nNynHm!%kQ6z#yW22=2U~-o?vF+NhSi}f%Z8AQqJi)mO
z$^ZZ$07*naRKOW=HBCAas><}_1X!$r&a(snbc5me3`WDJIGEJoK|(?Zp*=c0h*4q;
zq3f0_bNi)>F3XY$&1P9O7*=If6vd#fr$@){z5DK^OIsn#d}u_1N^Be7G+{KJAR();
z@_aS>aQajrO=dtTZhJIp+B-9ZPpx11?XP_K$6x((KuW={vuY2=giSCpgp>?#TVGZM
zim(q|69jBkWdkzSl46)O{@;B2Cl4RqclkOl+nud*<0{|YUK<%R2V_O7ZfMtj=Zk;+
zx4-gb?z&aO5$tq!97C58mbqgeTvlGcdDHu_UJWj9Z+^H~Mg|1?xfeh4%Ja{}$B$n9
z%;%r~?C1XQ5C8Y?y#CV=T4WU;Z4`^mxBu$LRUZC}|MWllFaL)>h?x-uRQqdR{MD>m
zJb(Slg=^1Wy?N`;zVWT)sw=WQ3gn#7Hi$^Mu{#^*4tE~~1ywCfMpWc>b8G8H(=1oZ
z<-B7F3IZH;*#!;W8Tx~N{QvyPpML$P@4V{;P{}DtKwdU)z5e=mIK24GOP~JS7v8!1
z_~HFskl-ZVQhNO8(bWs<=P!KmAN`+y98IQ#3K~7X^1`Qc$kyxiu2owM^7Z`Tokzx?
zLA9an+6Bb?Z~Vq9-~RFLfB$=bxTFm7QiL`5?ZM!s+s_^!9PB=7EEdNP<Cr$akgsJ`
zX`Mz9P8=rgx-P`%y^j)O3~dOWV=Hkb!K(z+j(COKkpzR_Bp;Oj`rF@m?rSf+`kBu>
zc(S+RsMaYcuo4>Q90E?KUFbSOKoo1|gF%({=@yMh0-*N8KpZ);o}4txRp`2q7n!vb
z#gz5fWkumq(=;Kd^i(DWKJsk7I6OLOyBGpnvg5U|zOilcWb;uZ5>X#n!EicFsm`X;
zJNNFbmP-|JSvFqZxNzxaQG*I-QooCKK7xdFI8ea0Y43b==kV~@S+ll29t=jCI~VGa
zpzV*iD%y5|Ahk(}Sx%-WZ~WvZ&2m`}2F}?m%c^=X7;p9{Y87D)K6*rEN#XvsZQp$J
zt;Kvc7}SZ!c~Nw2^SmK4L}XHm3Xu#7<#}eU712izA2&&>VT_7yZ*OPCAS(+1RY;3;
z*R);R`Q)%`n&$oY-`_tt7_Y54>lA5YduzPmo3;T^qS6@X)0e8C;%v5zyubgHgBRtr
z@Rx&fBP;S^pvo!?<kE>SgwQmr5Ii9Yz{#R1^K4KKEs*dm2CuPTG9mc+d^H{pi=taK
zU0zlua|aJ*3BPzs22E_%RE>wxs2m!-y0P`+w|A?9X70oOY-u`8=uJLlE`ofFn}`t?
zi%_jsfEKN~EPJ$f{Ae#45Yp&?hqVQXo0~&3tgJP{DiED9hD`7whF}dL!EClVIa#!w
z7h!9tuFJBlocl$TEXEi^h(%E-Xw&lUqob~Etwn3dI=Fc0{3sjr#sw7xu*Sp~MKsUz
zB{iLot7S_B-iNk(EGp;DowHU6&={A}zzLd)h(s<%oXtYBoDy-C5dyiqa7LLU8clyl
z6htJ?vlv1Un$N|zUUX5F85%d46d;;e3#TAXJ*6X)&Bzszv2D66$H=qR`>pM*%mSe~
zg~Rsu**R-Z<8Y*^iljiI29%I28jHpn%BymWw#bKTgSGKwbJIF&oXzsAs!QW+Sr#rc
zd2U9-(h%5kq$+LekB;UOQ@r}>tAk->l0?j4f^|dyV@Mf|wWx+{HCo>mJlT7?m@o0S
z|HiN8nf*nQ>Zz@Z5XhJeF?!FfkE*8gI-ACeS2ycHop_s|ea$NsmRM3aKu)H!w(S7%
z$&>x%qMOa#Z~o48>nLUL5h%}!_4P@f=XG5<=kDIQ^Zt7~o125K^#BB5XS4aLGv%Nz
z3bSfiL5}7pC(<bj#|U7zsM;C~?!C9KP`r5M8OyR<EUc~a%sS^p1bSgRDYU7uMoJ1A
zn5pxLZNMQg0%Bszv8ejscMrnR(eVq<TtAr3G+TV*FJFJ@Q&*y>fRJ^iD=uza{_H1T
zafYVLHqVDU=dV3^y5F^-L+0QJpw5fq<CAZG<6D3CKlq)kbKCm<`yj@E{p-K=J7%%_
z$zS^Imp}jO9l3eqk55*L${|=JCuk&m_xo@C_HTUNS!*bT;&5E8|I(*kUEKfqcx~tN
zU;6Fu{on_fRkJ5gnk+c$igJW#6i|eJ>#zT{dwY9tKYEA?2F-Xh84fo8#^3xqv+2C+
z!m^DKOcxlGV~DM1OU@bd<aoBfm@ipGX)+w$x_<ro*7nt%;b>4SeDyc~?%z9}EiYfW
z_U0QuQ4t^G8*jdM<I3hMFFt#IV|`MX)~hIFWG?TV|J+M2t)4s@7Dc4NfBg6VtDnF3
z&R759FJov3*$MxD|MGhWk1t=kcKO}+?{rFRoJNld&+c4&`S$JAw0Zs8Z;waMtyM+d
zm<#2kB9{RvM`7;TF3l=N=EyOGzSrwfTaB%9>nK>)ieCl4LTNRz`D8E{59{@R{;$4<
z)}AygFh&%VB`NL)b)Bu41sBWKIa3w6vsoIFAs|(aA|&d4C#Oz;yeyFnGe-dojAU1h
z_aPvXhyo^ie3!QN*z3fF1-zH(bTyl=#%pWE001ojCH!?t(kGovIunaXJ*ZK2He19P
zHzpfx(<Rquue=3_F?w$?*%{HK5^?g{g%G<oSlf18IMeZ>rdl_*5R=9=Nz3PpMYC8M
zV}+fF%;)nh4v-uwX!&%DaH`n>=bRzab)JyYwJsL(<zkUd#z+Ry0<a;2fX0}rtcXZe
z7R%NB`*%m9VO|u@nWk-HjCpTc5Fw3`my6{Ya5CX4VvODgM6wor+bkDzvI8`j=b5VM
z=Uxd_01;VXwQLR!cJs2xU2Y92>A-ij^mZ3DJ(H4ST+HVptPllQRUbV)4w2XE%tef9
zvcj&f4>mWiot(^Pt#DSo`|j@U{xYmW(|I%ol_4=wkmR(Y3Fsypn^Zb)3b2KbI&a#e
z{o_(`vl<!&gOr3NDF>XSVMeU)q&sS6>{n4wW-I2X%nF(rtQ>CSg%7-#Evhm<Z9n%O
z8t=WRI_Hcrsx+OhMA>FegEnoqYTKF$N>No+Q8mUiU0aj|A{BX=<;8rlL^J>@%Cp&g
zeSHm)B1``;ilj_|A*YCCS&^~K5mXd)zE})Lqg3`w&$%-u(aI7?Co3xJ>JUy80t?LM
zO;I%!IqUT7aZ1c40JJtM%E}h?@$n&|hOi=gj6~zLiLej~7)nOev}_w|%ev01!D2Dz
zHU<VHyIOgd4;2$mfO=90AOPAVuu?z;i(mi@nF4KQY@U~;p=>ysWJQ(LqiStD+1lLL
z+#J+3gBUVJk&VV9Yl#S*C2LKdWtXo$*Q2~ds;aK*L6##SP_%{&voJ?Ps44(CAqdCy
zb2rz|-C*Whw;Kg><?5Ambv*^X-zy=KwYET1mM~hodObUL_4=ot9!wF7^A|4LEY+V;
zR5+duxgnt=v<fatb>;et08rHzy3Pm|=eEwBnQufD(F}&;^XD(D=Ch4+8~5(see12C
zz3{?qh2qkc>kl681(4xd>GBLH8Mb-aEV|@GLLk)}!*eCX-J_$6lgkCr&wl!o)vC!d
zB2yBOwVAjcQAQkveVR~6upCap8A^J}USA6Ru)bQGsVU$2@M*KsYtO8!6mR_O!&a1x
zMKZAqYt{NEU-|?B3<mZ23pYJW^ZoDpmXSlWGOEigFQ)U=x4!+uwe|W3Km90ykczw<
zR`oEOJooY|#bEOGPv3s|mCt|s+u!SagF+I#5Y>ZPV)x<QyB|J!h|Z;e{OxCMwafX=
z_SUW2FMoJv_piS9#>GolAKZUn)rP2|cq%`q!~Ns8e)cW`Apt5~x^(&3n=f6waN+Z>
zPX73h|8-dntgBjFM(#va6m6E}MYd|V9@Ixo7eUZaGoOFv*T4M2t*v_x9$mZm*`4zj
z-+cSEwedM;a|8my)hZn9Pw(CNXk)QvkpVFS+8hji^Ot{lyS7iMqq=(G)!*8=bmeF7
zepC-OX49vj9jH7#j(_!oM=!N_`O>92`>0h>z&z?pH?D6~`A2WRN9|yJYeGw3x0<0d
z0vvt9j<#)^O3tj}qi<r@aSW&}$IgK6Y{Fo;wX=Qy{=K97A9(~OAXMat4tF-TA3fUJ
zeR6a(U-}SOjT(al%p84~&sOurN)$rijyly*|B@=CjCf|9wa)vHGKGb6#*z;WM~NXK
zLS9$}^pSzsAUd+Dr~<+usgzB&s)oic11}V*X+zTmAEc1pP@k*`Rw#r-pdmz478QVD
zR$;ST2B6RdmNd=ObMPU7(EDgC5~69Eb~amzaOWd4bgfSw$A0F7A;gd-hXD!6WLY5$
zk-6)-vu}DDrzPrz+(n+(Ri@0d%pgFPWpzDh+xyA52Y{>Ps$Dg-nRIYxI0$jpIhPTc
zs;sK2vSdSGq8KAD77h0jy(F^Z#34@ux7J$cthF{oUM^QD@Y^<>Z#o&oWQsa--}Ll(
z0Bf9cc??V@sDL#TL7AC_&FO(Neen&UNbHB(Qr7_JV7gi~Z5CIB8%3b2*RBkzBFpo#
zl@^BYe6auRAN?GBJeO75#n2c~24jpdq<tIF938Iy;xFHRJX-`?JUW<87i||qk~y!b
zI_wJsN;XPNf^#6lEX(C8v@{ET;bRa65kyLJ?M0D+uy14MQup^`c2)oA#Mr4CGI^eN
zUSjk%inRt%R?DWyGjx>1_Xwn*A%v7#vAG!zM+XOofupEFjNXT?3wfRifH_q!5m5+C
znYGr`!<rSm57rr@<bCwsmw?8Ygl+3jSOCTt$g->`vb<<ICPJ3z+Ay6ji+W_Nfzw$&
zJVnhLYpbf7OePN>K0pO)V7clRi)OS=##u^z6C^|w0U<Hg)PsS|^1y0<#LJXhH1ldO
zF;=WYB2)opB~lTwtd5XaAw6JZ3!B$jUE8v9c|ICVs(M`3!{Pc`F{n4Tx7OF!owbQg
zljm8U7kQpJOKC{q^cf{20wiP57^IX<GHEy=DYOmr<Bmp*xU5d=&E#AU)=OLxIpwse
zB(Eg)laVGbhh;rNRouEj3DVn>Kvd4S)4iJ0Au2GycyeVhx&VN;pSP?82!@O>0xE(E
z3ji6HtxwLaO(rL^Sv{;DJ>0!`@y2IA_vP`qt#cQj|K#V0th3IpRxuf#j+XNdL`6`P
z1TU{`sx<FCeRBEcmsYD|SWXqRZ5vk3tTRM_Kt$F$$$Ekqt0ZG(jHf$RNKT$!X`NW)
zswN0cmrd^MjT_fj%cFO{dtZ$MP>vzTY%r*XYjw(ycn^zJ+*rS`*LV>L5t`NuP(COh
zAD#S9zyC+~j~li*0SwAIhKPXm`WB!;TTV8wZe6(c<ncYQrc+kt$;O1+l`E?E@7?br
z1DP_<NV>Zp{QT0VUS2NRj~>0dKG_5qWHv{Q!a|fvDaZof{mzd*Jlani9U@$<Rw7c@
zCeQ7BzE~|<M|oWhm?gBJ-djV1(WtD8;jnnHzb}BTZx{3VxpNzJRf5v(7heh?jE6&E
z1SLSr+IE3Yrt@NW?X$1G@=yQl+vw3Kym<ZEwVkz0=YQ*O{o0*-CpTXCl&bFS9oE%&
zc6@+f2qUZQxb)ua)K#7tXr#9GnXSpSjg3h;IKp8)8808~cTZ0WFA|~;-iN>(+qUHx
z1INz$PP~`6k{E%-h!n<Mx%TSc{&xpk7w>)W(VfGirLn7ar4aL+@*G0&1gb2@v+2Rn
zNf)9TO5j`|oy`|!vDlal3DG(N;k?KY2^5S;FFd9t!FwNLmjD-oy4pFPAyEu$of!`6
zx~k3+AfNz5#@Y}fqCrwJP!wfd59)y*jMqcpyr{GXOp=^UVJ2pMIt{oI$&A*v)*4_2
z78y-;5M7Tu0#QxgBLjW96#>y@c~K6x&*#?Krs;}u2xI}3KnVeq0f{3+?oz=}0i4UW
zcg{~w3IKG@8AHzHB5Dm1L=^?X)pC*9DtERl@?*jx&v$lq9`8Nry4F}%kH*gBMd307
zgfYQDI5H6phXWRI&KhItvd)W|H3FbDj#;#~dMG3^G4`r<GK7f6xWRB#)pZC_6jd-r
z5JroJ06-ap`BdPMa6d%WWu<dfyILA2d7hihAX)^gfT}FQ#ux;R9FkZ!HIkDxCIs%f
zj)Zl0c6hRU=gz`+9*t?E%$D-t$#LXBkxO!{N<D+YoN1Q;OuLjfetLI5gcVZ6-sEEp
z1%)<-Dog9N5fYTMfLY3wn^Xu%hv_6+FoYI@_$XN}2wf+u<tiJG5J{B{k%|gY+qHR7
zAYxu*U5IV7$}&?`WsJQA$dHr7u3|wjgt%O+vMkSY=bTBz)*{cXh52HcmPG7v86YB}
z5JR-qx-2WovM8z$ymgtiCeJGcO79Ey8emF#Oi(q(WG<@)14-k&d9IiNIb$rQ?hk%!
zwq|A|G|mi%gT!0R9TZhDT02L^As`wwhE5B$%&f+cwQg-~?eL%mjn<hwccan7+9EYW
z6eO}bw5*^i7ENJ{Gsd_)cQ(tbx)_Ww&#KY5tcQboG#IW8$7^L(*K6bP+S+(DV&*h*
zR+SYI8iT#-8v#JmY7G6r7$k5YKw{u=|5$uX$n2%fsc1t))?$px49R%W7n6IeDE5?1
zKqA|Z{GEEx63<0XrzfDF@J*B3n&fmyF8v#4%xS4jkf5i}0y<X=hHD#}JG0q*Hk~dP
zs|OGEZaur2oUdwU(U^1z-UlG{7#|+&DIqfupaj_&t#y8N=Wzc?d~-Cugb(k{XA4ox
zx@<5Q<XMJ5ih@Yix?n<NPA5f?B(qc&B||Cy6+)Nd5`czTLKLz_5x)P!pY9*-9d~iX
z%nE2oNgqCW{Pn+h{VQMj%nx6GbLaA{r_*UwkF%_7eV0TyU5w<ih_H9E>d<hC)`32G
z^7QJht+4VgM?ie@t@noG?Zy0LP@3cYC+d9+VYOTwFY<d&4!l|xo{Yy`w=g(4f8px(
zrCTq5Zs-5~7k{?*cuwTTqhZgb17#5;6QUxSQxF?A?ef8+yFYp3owweySy3-mZB>ug
z#!f>vJ37D^5FmPARr%3$)(Hz4RXn%7wQ8E3XI}AY@*>Z&?31s&{O4bPZE|ks=-_b-
z(L-1PJbUY!A#8oLR7&V>T;4c%_}*t;{I!cOJ?F!_qtQSCin3@!@PQpEi-M{e7)^@B
zavs`HLiWu1<`-_<9C^2V*zr@EKRME6a4Z~R2wl@QF^ySq=t2k~w&Ir(I^_UdZ&WXS
z`o{XDa}VO^^6lpy?Hxbb-Rn4-EaOJI7)2m=jyW`~M=+|uB4_#0w2(1}^-(o>?z%H3
zEgXh0b4Wy>VgSpcG{&Gp?(&{ADdy7U3ka5sRRA)^Ip>^9bDO5$H(CUA&M~u72Y?Dx
z57(~W0_O@OgT_|%z`25KL5LxEXAJ;lnPtw2&>#@uXFj{ef@u)cSd*6}8Jh-_MI(xd
zF$w{I8e_|<zI^4{)vMRj5}rg6d0rG%on@s6^o)My7y@(5GPkj@u{l}0dGn^TMpaKv
zPC^KS(Ws~f*5s-^w%7YM24{0y7TMZ(G+7&7IDh`jU;3hg+9We3%8DGx0@~H83qBI{
z%tcTgkH<xxPbQPkf8o`(>yXeIyXsm1ur610s!3PH{qzPX061%J-n_ZBeZK8{@G;8^
z<MOH=5E&F@?*nqGbn59qtIM*T3zrAOwHRAKbS}&CqN)dmoC*t=5JCtYGuMN9dwYBT
zX$;*m5zd)oqKx<upN6=9B0qn)kiM7-n)C;t0MdytL9Uc`@o0=jP*e~AO7wpb?a!Ra
z%;Y(wnm>S8qHqS$g!Ca26eWXz(3^@B0Hk#K!ZR1fl|zxt89*+p3W*@~G5fJs>;h*6
z8f)q*fByE>rVV*vGi#Y+QMfG25y{$qsY~&*)F98Y?A+$~S-okDv6c*h%WRexfJCJI
zaUH1_{{Yy`l~wh^OD{C5l?XfMiXwBlb1p|B5k|tufy5vQ_bx)%IlnVr`?4WX4Mb#}
zG1d@S5kZm|0}%pH+jY)bKpIche)U(sj3@w1gqd?dph;GpxMPT_YKV$Fx7KWJZmz8j
z5ye@<F{U$U%EYFGn@UUwQtQe!lQ~xuWmVO6otITnSJh}(4~ErXSX6_u9#w;3T@MGt
z(PT2Q*0yb<%0y%>ndC7dJd+Ha(Xmsy-x(Bv5Hy4+zu@rt1*4NnJatDHVx}xJDb^K2
z4BqQmKs*)Tdi@h=KXi}`*=n-hTN7hsjw(I+BAp+B=yW@efFLReNfZT=9EuXs__xdQ
z$;P?q$<b_nax$Aee)9OvhaYX7zc|{M5F~VWVr)sv-QDTaPEvPFt=Myea^4(FV>dt8
zeP@5}_Kv&A9C_I^EV90~X2_gI#nBjx7!v9>DcC{`vHzcG*Djo6&8$UA$t5B}1VR1q
z!2=I6SN4das=`4-1pj~hU;p<{e)`V6`wyRc;bmj;)hbw<DFPaFWhRJ=RXbfSPGXFP
zL=}mqi}`eMvg{^z-oJPAmCeDRzJBwTaRzv4p|uiY*DdF>tSEM$9<RVD0V2(p3kc!G
z+b>NnUb}MZMij{MeB<2a<lNTw#!!@jfH|rHi%Rm!^_DLVzH7Sa*T3<#@o4)CU;LHx
zckkCl9#>CRM~g*_84&^=?eEX4@^CeeM4)JG)-?XkM<0p*^muL9EEnZy`{?LoFc@9C
zeyeF_2AUl0+Q1w>-Mjzbej7<ZfpEE;4F<*2$4|6rtW#%sKAnH?;rq;-Wu=A2#Aqe%
z><n+*IRE-jJ}lX8m!s$E&F4lJ^rU_7J9pzONXHVHBYWS4=)Lbk@R6CBSD|YqtR${D
zcncoF+WO=ZpMCZ-zxjo?KREc{(cPzeOJ~h^JZ_uGVs#uih(?iERmE!6bRiO%q#>3w
zs~Lc@xZLFyGHVe4)Fu^js-n51g;Et3L#A-Kh>9U=QyAZ+<CC=+oPHFXb<SFsu#t(s
zk*x7#vfKa?ktO4RoUysFS!#b7`dC?uNLf~-(%)cMCgN;DbQx>mw49vYj~Ii3h_E3;
zlxJCyS&N7qV_9L^BG`1D@Ub^0a1@S|#NL!4fHmZtbuJUpqO6RuqAI7<Vw?17L`6}o
zt&L;w)+AAMsuQTNR&`C*_z+_V*5)oXcto7F8<WX$wW?!4#27hvPtJuHnzj>B1!B<{
zImRBrZ-}a@0z%_5mz5zhD}dT$l#(cdK{NsxGzJv=Lxn0Co0oM~6seJnr#)JZfFw~n
z)h?|IbyZ!zal<*<+kFsxBa(nhDl7sTdOt<42GR5-O#1@DhCL$?Su%nu$VA49L`@FI
zWHm_2pmZ=-RhEP~OHY;~qs)SshUAHC5?d#EprRs3ZsTu!>6PtCtrD#<r_Y8^kD!uN
z<uZnhvBDs%*3z|W=S4I|K9%71+O9K)v@wK8s@ilNAPh%ERi95$ku=cL!^Mb@EFz^u
zu>$xI03v`6hIL)nXMP=pe%LV4xkWgYhXaIEm8t70&mBtu2}GxzgM>Lu>UV<xBuFBx
z!c|o|N2sE}r+wnSi7P$nyyuN18Ag_8Xh0<*0$Bu5GHK*YL^MV1lsSsn(bi5@7RK3n
zP}g-eUSBWEvKkEP!N_IVU^LG1vMh%#&(|lDx*iBeRhLe-gkX|mDB+#bmmy_ri9`e~
zao^4D|Iv@VgnH(6A|>rNSYj+?&URiC{VpNM(*X1@%w%a|nI&a7O79y_%fI*C$3I0_
zn287yf~wc5fHEqo%d*om2TP1;)`SoT^<c8Gad5D|xw#p<y#K*F+vhLbD)OqX!CGsL
zg2WI`R>zN<DWifYvkuj**V)1DQ^9iNCePpc#5dpkXFwDs%ohvmT<v{c<f#LP2xP1=
z7Qn}lWXT$%gct#llvz4v%M6Gn3X6(!#uyt#JnBlMRo0Y>6h#Y9j~*eKH-7fRs>)w`
z?O(QwRg6uDt#M>BQleGY`snwUGfweR00dYxv-duFe_YV+-c&cXZ`{24`WtU^>{iXH
zb~2yOWAsFTd4B)l6A#JAE7QfSG5OucdwVByxW6|ZPY(7E7mKNLZdlbOH>-Bl6J68q
zDXqQ;QKacwfUsO1MK9m_=GV(CTVJaoU)w$2<u0h_H2ZM0S}Y|pAb=h(7jNIaZ@c#8
zPh7cr?MjrxR;xe%H{W4`y{CIbFsSR&@@U}pj#oc=`-8a}K@p{Q?mm$V+ue76@X8C<
zw>CHT?)>Pr*Pq_KbAK=xtPjd|dC(l~z5MLuUwZNK{G|Edrw^VRU)(I$FVM)$SXU5Y
zr!3L?w(}fgh#`b7#t>rcqHm&aL00Npkd>7sipPMf<J-UT`RvNh3*+^}*FJjVU~f7-
zVGg1~#u`F{FkT-Fhoilx2VNjDr{4vfk&B6}bqJ^;zUxx`$RzkPCb0xqA~DJ=iOmi`
za#~p87>%_Ez#$rAp!c`*N#Z_N6Jk%{(9|DAK$b{Aq`=ryWi^F!tTi#j7-PCZMoj&q
zq|!q&9Ah8E07~%Z)1Rx6qlzMdaAH;?0BB$U^cbyk=`~I3rLnmxB;KtdFof2at_w+)
z-gTacBTL|vxX~gr&JbZ11Gi1*L+6~c)*?bu61Clm(Pmk`YPz<Kky({lLY6s1^dYWR
zZP#_FP#0oImO&Ba$SfR16E8wUOtMHL##3dXF@%bNRg>d3xe|~-5rhzvYdrP7`ciOe
z?DknoQ6-^Mg)Xo%03sAcv2*?+0zBS*&^3z`jA7xvQ4C6$5{=qpHj`^a5u8zLgp=ap
z%(&W%&r#6=pqy645mD7SSCj>*0cJ~vfvKNrlU^pFNCXz3G@z&k!gIGTom(%M1E?q=
z$7oGLl&Abs|2IW6A+SiBEL~`jB@&^k7$SwUt!57fOZni)5&*mv82|tv07*naRK;6o
z4H;GC$fu9YnbLqjQ-#~0Ay(neCr-K{=TAKaJqEn@pY=oOY1}??Fl3E2%1mTL7|5hg
zRKIwEq?@Lvn-o^CWO`>afJ!{=Z|bStMG_Q;5Tl5yI%~;TBT2?4DNmcyO$yLMyATq$
z&Te13R#mlirmm~Open1PEX%U2vaBeIBCqPasGQ5Qq8yC|Wobh|G-)Q10fbP_n(qLF
zU<8GL6fK;2?*;l;Py&#$^gFoz0WlG{N0<Wv2p|}PF`jWj1bT=goQ*~&ArvMyEs;T+
zGOZy51V}F%2#BQhTh5fpL;$3S1Zq+fLP142#Hhlc!W<D{G#*bTlMsUU^5FjCH-7Sy
z!P?s8>(>ntU^+(Yba6D3jzO6j6)songR=b5lf4TUZ+&v-l~Lw>2&psXy<e<W<IyOG
zqL-;8&kGR}0U-xTSwt291SM1z=EzKFdW{_*2mmX4jUE^bF({@zo`KdcpC0al#9#m9
zul?~q`=_z%5TbRc;7mqQrD-}L4Jv8~5$m#EELTAEo!9?rdVF}}@~uyN{!4mq_q*Tw
z?g#I`6Pm@Wo1ZLBs<P~SH$6F6f$-_uAPOCax8MEwpZ@t*U%35A5q$G!Z-j0|z(*%X
zZD^~i992b9oN7`PVfw1;Y%zbl_c(Jyf}<x-A7`1{o(!Ow?;Y&V+Xe{?*$$<NK0UAs
z>LnaC@#lNypa1#yzVz8<srP^I&K?$Phet<8M+c@K&dZ{q@Bi%H+Yb)|8c;9<@7#Sj
zpD!;BitqpE&ENX1UwL%@ov;1t?<`_Io6axnoD-iv_wqBp`nen2v_Jj+J6o`|v#~RA
zgMrO;-Wi4%rES_6f)8F*eCR^(p1BFFm$=f{AU7Zjk{QN^w9&Yn&7M4YI@%dS=n7gL
zKE1!Yw?Chs93CFV7?5OrGPrnQXVv<H*|I8YV;vD1Yhv#&B}B-q5$5PU5eg)oUra(6
zP*6fDOKTIpATTGwm{kN}0mR6W&;pRPNg76|!cK`y=CT+##<t(T6B9W=K{iA{#)w8$
zPu7t_`fyl7AlSsfF`3)@RsxbmW=!5gBgs3Ch)uK7JhMd1vGXAbSFvv_0ucd{Dv&X)
z_k>1M!y?(8MOq)arcJ;pI+Y70*krQ)rBxpQyh~{!TDI-M@o^gBwbu0YC7=+ZwaauS
z4!!w^iD2^_0OIsyc659kqX483twLW>)W|*2lBM^*mZfEpw)4JAH7ZTukyEj6nm%FZ
zKMj(w`;y|8a_XX2=}Gy(Nu&vy4iEr<HrWZ0i=y1v+yao@2Y1`H>s`717EK|EK~xDo
z1`8OXYB*F&BFXMU#u#Rsc)==Q3^_nTL1X(h*xI_T3>oSdh-l6hJ3UL*h;#Pxc*Ew#
zW#BAdytvV}t#Wk6a7<vKzWT~B#W^8H4gmqtD(0Cp2HUQS%!$%!OrHiy7)v#zknsGh
z2xXBwo5jc+LyU4Zd_ZJX6(}Mn5jBZ25|AP5G63wnXO3wxr2cLR5<$}0p&`Q5)h065
z*e<f1IZ97eT?k2Ubvk{c3V_Z!>um78AIby8^q=$|Eg{4x3a7_GGKP#1K0}Y{sf7=r
z$9<;J^t5jSd-dkcJkN?EGse_ak!P+biY&{lbvDZqY9q_?s;<k@SPLwaIVTvI`vnzL
z5Rd?sK>^8F7SIIZAOeBDCawJ%EF4eytEpFOHO<b0Wz@`M>CZDO5<&!yQ6;8Ia&ii?
zBm;~gV^X#@r!<Flil~O3j;8$*n+{{BNGeFi0@~EKNZns%PWP8%0ALj{#_a6usA}7G
zCnv`ree~|m#fuwTTf;0%8V3MAoE>z?t@lyIB3+%F^S*m;_aIO`TOR%VweJ`-Q6XU&
zg7-egz)^ckCa9(b*Z`1d<g~j_!=rfWcGlC%L4V7*lMqpWAo&%0C5uLb(00@P!|;uN
z^Jj~8TIad4f>DDMm1FQoz@TajAUNv=qrqaeQV<W}gU1i2Z8-Q}{}&K^y8pCU%q@lE
z<0sbY(Q3X}EhA{M02&~GzAt^WJpTGOzKS4^A3Z)kK8`U|E{g$t*G37$DkB7I2|$s6
zfLQyD*Wt;r@&`pxt*uQ=L-S(}&GPW*AgRln<!mV-Cf;99KT=_RvYLPWjd%8!zACDZ
z9v&_OR&|}{ZnbLifomY{ADuitI&OiKkkBY|tMKq-esnVX7k}}C@nrM<gT14Z{dq@$
z_2}^U`I|RBbz{uS`MtLv+i7)kZ8XlR%H+tZG5Qc=jK1q)j4}EcqvzPg(6C>LZ-E<<
z6^RbZ6~z6fZ9rR&`!oMP{@x$G`pH{YFP^{qaPf5a&TQT^Z4*LA1e;r%8|%fQZH}hX
z!_~4HjFF5XrvhkBH`U2&D{NFjK>C}en0BV92<WWM^UPW6yAZ@9DsW8Ck}6_aSrHNy
z&Y1LGa36y;Ce74f!W8NM&(xbOOOjn@dTZL--6PJFC-Y=w4JZsnfMAmZTg~p4tWDh}
zGnr9WGChReOHa`kl5TXPme?(#IRPL50tBjns;r#P5QF>PYtY5=$YNcTSz1<|%!u&V
zdkz2p{fg)m5x@pUAnq0&p`g17bBYHa9v-?b5QId5z{~{Z?tn%tgyp?t5)n-u#R0%I
z6A4#2M%KYZ67OT<Ab>d#-CWfvCs^7s9M{7)n<|UQa2bjKq#zb^TAE4e>E&rn5u>&B
zT0)`-oR<R-5=kQbm_?n;)*OXyp=-K~MfkeX^HBE)v~}N=(D=O5*&S3}SD|O7z@<ea
z9cD;C>&doSfgzGZw!)3Su~tGrxTaSgiIc^VuXnTA!sDCexO@5h;0O?F`YUsmXiTTT
zhjlYu<m}?YkzG&me5V<2P75gDd>r{=6M1}v3(H0dczVSUh<j$GBV;aQ0#K)s&(6y@
z$v8<VLFjQ((KD?|y=0Dd(^TYmSblKCg{2@Mk%DTvC(<pR$jpdP^NeDK01;uXr-EjU
zI3&mpZ_QQ?a6}GwKnjRbg;)@Pm^^g{;U4c9tL_-EN|Z4dv30D72+JuHBpkrk%<0u;
z?12QahWtn=tLTV0LRB3hajI+5v#TSpohr~=$L5_E?)mfc)};(ci-0&KhXTk)pL|@3
zR4EWX4zk&dEG(2<uu@9pLZy~zDnm^tA_$QZg@Z-7DaLwL<jvy7OvQkaDF99Z!Eg%f
zv;Yh5lytFhKt&`23IGxjDW?ngl-iho3gnk0sod*B&N3i@)FIz-_q<ToOAA~h33FK@
zkT^IZg;!)0uK5g`^-~Y;9vY?)CPbU<ba8R<^y$rRx7*!+{trL>$*14@?#0!kwIxS=
zasPS=M<y`jzz@zJE%Wl-k3ReM_Tsny@T<Y&PJ2^r>fL-^`m!`Tb9eKeAt6}_BLJF3
zH}C4YLgd$Cl!-E0YAiz?D;M5^cW=`;aFI8=hh{FddH@AMka_#!`4`A|)H%8eg@~wn
z<$)PBywu_lQe@sAif{nbTFv!~FF$|r>UEw9h0yy!Z3d0R%S9LgFp`>+V9q7X<M#gb
z|M7qRM*u=%A=;IK0oLYc<)+Bf5He1M03Zf2h6M%!*t`2Tw0k%n54F}X)3)?b3RmwP
z+?f#&PwOHPv91vC<=yT5Pyb<(!JX<jL5<zverd;fXKgtGVUz;er(tYr0YQj8>;d5a
z`rBW=x;wby+lSsQ5b)t{_wHr+_2G{0?&+XU#_LNNOAvPLUA^0~EKR#7Bfxqyo2@_S
zazvfM4&*!31KQ2a&E2b)578GuC-kBG#~=UnFMs-rXV;JGaB*yKm~~!egBZ5cu$gwt
zvOnzJ?ROohjuR2Do-F`NkVWR!MdFiJF+T!^hleA9fdjy1+K9;A?ZfeCNVyxt2#Z+L
ziVWAQmxxa?BFJ2(_u<_LjN~LG!p!pS0*?>@Fo39TxkL<R>b)Z(dY&ERlxd#n<jmHJ
zm`j$kOf1Bh)GGCF#$AYjM$8nn-d8~YqyfcY6<@oXDM92|@01SAYwB8}N{CdWb)Re%
zYpW#?F(Y0B5dk>@Ajn-ED6iqA`Q5`@D-wyBEz6uk!W2xITM`i*FoMj}l7h`5^=N>o
zuHoV4Y7WH7(Doom2st1DB-SG`EE2$6;}q{>o>AGn=FBpuzk@LE0nQ&#O1ZhYIp2u(
zWm)Flm(waV?_i3^<U@#XA`(Ee2ts7R2yjQD)9e)xVw57AL4}CxTBEoltTq~3cM>a8
zl9*YL2oQ}qN+A&(hB6KV1}w{Q?fMZ<5i^eYLr#`hM9lchRVo|6fa$oz6IRLBsWk<p
zzz}R5jsm>TZ#Zpd0w65b-y{agtro3i11V6r8Mp&D69Z%>pa8Cnxd?<{_Yf&khJa{l
z;ED(tmBB=(52YZoM-*ZV%m-Ul*KkGGfLL!Kq+~53akvMqZ%8u9Od;Gb6u=QMtFY7|
z>56e>dG_o>ku|%N&^FT`i~vqV#3-Brc07&sn*g*xOTRqblThB>+>H^!ZCQ?43L%iw
zNXX+f<z{!y`#QxKhAE}cJtF4@h!nwrj3mr-8m**aD=o4Lp@i-MkxgXIt{q8e*lcsX
zAHFWs*2+X1fKx(B0n{4=BBeu)>vYn*oRHaWZl++0;1NDZIp1y%o6XakCwK4ezWCzH
zzxnZBUtB-A`S3%enC<vtewf3|EmJDJL?`^yKl;(@`#bvJgLe<}*B0ivYxkw;?sy!I
zqY#>@t091`@+&m=Zq`-Th(yF9!pvz)V3G5Sv+F01FE7sj<WGMn)e#ZGZtwRpjX||_
zwI0WA&tKjeV7SkR!@S>JPQ&?TLhxFLVW^wUAO+jf9fDXqz$})ow-3ktv8#o41@Pst
zpGr()Sto%=?lufX)zYIWwU{Rf%5U!v;bdmoHIq?3`uNGyN7s}&FBGNFcR%?SZb}f>
zTD5Cyx<4%YeJfH_t*e%yjN2<FXXboAdvZF%5D8gKjfqulS=!zeke7D2f3@$+G7hD+
z#!TmzXSmy4$@bBstLI-mw?HAu=xTKP?U!F{WB?!z#31gn`~6pM%I4{GakITXr&<iG
z_qnU}-g`4sRqNW-^w`?b`!V!Dek41f?a3az&!KOB_xW&s-d%wu&xRm;r?7kdAT$$|
z2uK!8gulMKYi-xtaT?2}4%1LrILm89jMaRSzk*Yriun=bkwlTk2VT()X6b%lCJ)CT
zM-OvmAYuc^YbHHQ`2}(F3?o56Ab>#EW=PDQmpo*)2{Eot423lJS<jZi0En`imW1n)
zRUiebh~%CxWHki$wqR%uuF@8gbv6<s6$oT-#4yXV86n8j!ZgS+!r=W%kBGzp0|f(v
z1X0rGrpd<k2-o$*UVj>`_7!5}8h{?88oNUqdaCrn+#%euLv@dY=m7<=ML2K(Az+#^
zQqQ?Y)FgwfcaOYW7)kQ#2f%=CMyJiAgITx+ST@7VgqZUJVhkXJHP9m8oB|QfLWtuy
znqaN$KDlWC<*8@^1PrT^1AXnZETfR(8+@Rj-jE=7@(||aML+-r2_a~rf!?>&`7z{Q
zJ=6Cvg<wQ94Aojcbvyo^_pr9z06=6I1i;K|<HO&ufm6=r-g8^wtC}!}zkrCUt_Fyy
zxHp9L3C|U5WSBi*Acc7;oS0Q)79M)88L~AnT^D@lNCJqiSZbX%TL_9kB1T|<6opw@
zm)AulNtil@l!>JVa#kixqJgjus5CsORs=|n?iPemN<9rA@*9$|m*(0}`_tU}Q$(N?
zfRIOz9w9=Q1~{W{H<h9XSmG&jP%zYzLBGDvWE^n~#B?`iP@4fdgkp{~!g2(^2435H
zjb|WcIqVtX9HFag2#PkEHs|?$YwbNva*a=eP);;TX#T+f;(!Jsv{G0jhx76N5;hFY
z^hwnY2pE(B#!?4DiIp30LVbiKkcKIQ!riB-Twb2<5Bsa@t9Q4Dzy9%$A3gct&!^3!
zn~R6T{>#H{5Rx-9IQW10>Sxbie^Ht*`@^{RhnKIK_O9BS2apBq_H!xwv5IRZD+6;;
z^`_R<yPB^xU+}7=0Qa!49*&2Dy+s<!!7cU;BD!{BL4#1WZW=K67J?+z%)xam7hGt%
zxDdu+7=}`Y!a@jeM5b|^9KaFh)^V74KN~PH?RNJx;-k$l6()$nyxmNNr4|Wyma^HN
zm!T4}0q&2>tJ`}lRXx<K9S<Kpd2&|k?#(;h-3K@zTs^w@^oQTSyt$TIrIv2dn!mZd
ze{;LrY|f8MTjoPSczn67lDSpbddtJbOx28}xFaAP=Hvc2ALeF}d?lM|IUfg%UL*jW
z2`;yrv!QyM+x`xHo{zT_Gx{<La{xj;?BVWB9Ny7Jhnw;2YM91g>^3jmy7px;SJl3>
zrs2)>XuY`|Lk|-DtiajXI1NHRg_`Rh{?QMwA7B0C7eBu{E;62r)UMXL&WpW%ckAi>
z2Oz>)sgP~y(ZBuC5C50{`7b{I{L8=o+n+EOM@C{GBw-{VmhJYe?Dxmr{(YSHI)?*b
zWCU_^H*c*)<fR!Wil9dl7v1tMclR}_)!od}o5VzIZD%bBjezKGTq-~$r-z8ES?@h!
zM2t*)b5{`r2sI!=i%!IX=HaG7h1|t091THonqu0SylX=OqFj`bYXcM@M@9gFJc=U_
zatQ72N?`!H3R)2eDT09p4+LTcFo&+OwCFwDLsi4oy`M;b7zhpoR4|ZNC_HwJrCDYW
zWikYWMp)#oHe(=w9K*8Oq2z0<7iKQ-dhY;WZpj2iV&sCkNC?WnIuSua*EKuCth;3<
zX_z806P4VWp&?62Tw>}Ox*4$mk(#Y3eu>tOz_s^UP1ae8AqFHpgOpKWok#j9Oczqo
z8*6A)%6)_AgnNo_;^T+_13g8ro^=!DHG{}?sLs@S)82_Na+jTJX@CI7)dw00!|c5?
z*OR+xb>L*lxK^CVNMP!v=9(a9&6E=Yi&GFgu12T8AR^O_!T^XU>Lgf^8A$_rxPcil
zL`0YatyFU4!lkN1gkvDG01~07Ie~^*L}&yPatU=S!=?@cV#1w*hyaCHdULZ5<^i4$
z8nLJ%GH@N-ff*t!LJ$a%%-poQE9Hj}N=zQ+hJ`o)<>KPp%p%OS6@krw2=V3bzp`AL
zBL-gm;OcrUPxAqEhX8jcgd#K)1mV}O9$H(fRN?|?qipgk=lV@F3a&o_5QEX%a<tyV
zEh3OM&GFHV<RCadp><@1k%35r7GVJ$lET|t5Ns|klXVy1rV6L|XbPbTgTT!-Gsiq4
zKmZ4pk}SFmWcHJ$!d=tsl@B1XUtDYs$Fs+epUiV#+Sh;g<G;Fj_N;8acfagk*^!DA
z&Jaue<-^Ng^sj37iv^zSQ10(cV>N&SBjRDd0PHqX#dX<05f)&}(wmxEtcPX<3G*r^
z36C(<yNBJ|c6{C+elx#w57+K$?*pZQkjt>Rx1K-`A^@bAhKdBkIMh-YFj{B8-C<vd
z%P??Z2RIxL+I;DLb#*<C!xvwEA%&(v7$SNvNQFcQixgEI#&H}c^I&2KJT7f911ZJ~
zj0Exe?Q2opa{1)yD$lgz+<y7R7x41=+1VM3sJc4b?)LY`W!j!~wRt{VZq9b|y-=S1
zu3d#G=L)I80b=#&X2;g{^NdJDTuULxYD{5HAQ-}2(H>WQdR;3{l^kOmEy4htw8L^3
z-@c67W7)UjM;w5wp=(>z`@E>CWqPmKqW$1~_P&5OhCSM0B0R6<VpFDJEPPRUb2ePx
zTwYyWe)hdj4OqsDGHkLZyWh>fd-3&dSxAUkHq*2{8*B8ZoAU4f^^ZRL?q}QSdcVZ$
zhut2?h+>^}QLS|tCq6FU96hIqg0=HVTz&+7<NRAsG(>buhI6(_L4?fZ6ds7_VtDiV
zwVGjsuy{DFVu(<iS)3dw*w|FNyQ-@2s$gtwF~^J$@SMVsVSs@lpM_emdl=;6AM#o?
zQ}xgjEG`TH*RLHB)-VGk1k|pK1cVW0y&D*_<shC29V`=UftZQRf&k`uVM?8A<_@K}
z#NXcmdGx3UpoE3F22g88Bp!r$Zn#01xre!9m{|lmy2XH%AQ&RV0SO}ziI}<f?yh;A
zcsQ72II>4jU{FCu3NrwX@XTh`-VklodqH>*hyfBu4XC(YJRnRF2*kw9TmT?NHfC#=
zmQ;YudMBzRNlgK8C-Tt6=a#_5?B>34j=14TaSsTXuLmf=6U%_BU1eQhQ$Rj=m<!mG
z#{`I2imF;SzyNauK$ci}g5Vw^VrE1o3D3#FaPyUp35LMQ^^9-~T1D3o=H7eHyh!TY
zTMsw)#4iaEWrqt`0?>d8iCL!e5K(c%aEH+MzE%PX2qNLa?peuUKJ&zk#1Iq#DJo9A
zFlZnR4xs8x5s^TPTp=?MNB02B!0GJmnd=FB7G@A(xhlwa5hBBx*Xj#^1DRQ}=8<t6
z+}*Sp#Wc`Z;O(2&zx(0~08s0yLFMV6{Mo<EwQD#=xSG*gnFBKk$8nxN|Ls4e9^KU4
z&wuo9pO(t2%xsk^c>aRXg<`1q^Pl}gZ;P8dkjM1&qkqAYj_i0}k*%L9I8%tgyEkv%
zyngxW)!X?v15S=t|KWf979{ZYee(Aj;_L{{1cdt4?|*xDdlw$6*o~fk{KM~FeVnO~
z?%%Z9sre^xrchn>``vE$u+078eqU>Oa`WVHm_PsB7k~Bt{@>FhekHe2q!RRIL#c~9
z064Iz8>5@++?fhsCzfHPv>Pr<H#J0H=7@F5s+x0XTKyOVb*Lg`#dfc6G(nL*$X$WD
z*&O!!rKv}RsZ`;@5SD(y$bQCs7^gdiI+jJKR%*u?$gHcEaL~<Ag=5jBv(9!5i`{LH
zaAjwag+0IxthXcf00?3Mgn<|AcL+4^kI^kGz|j!vG|Dst;^%K))cx|uAAb7m;xar`
z?QXyO3LXv={WzOus5LsGA=PnM)7xH}nCEmPAfyx)N+=^`(YDIz5SW3Gh{2ozK&=o~
zCMT;*=ji|bv#X2k)stZm-lNaxJzxRVaM|tS?)B2%6uX1i8yTYTtg~7~S67X&uG;#t
zc;9O~gwN;;#msQW@j!Ywyo>%YO#=~C;acm@zj|3%)C`I0u#qwZU;xg&-|i24?Z^l~
zbtuzqodjNond+<8cfb727q`pt?Q;12{=OG+j#R@q;=C++Y==X0^HO9OY95i9)kjDy
z0)QESdP*#JOaTyJbSFYUCuWhvOrzVX<e@abN0?e(?zt5QAP+>1I&k4^R@_W`YayIX
zn7g5+VwYA`agcihDk6cDVKtm9RAyqP%!)!>x1sO<QEe!K0d#VEs444uJ-EACD;|WH
zs<8x*co?9g2Uzq_Vkq4aEKdM6WAFf5J-F%1vJOa29%zW9-CI{Ftm*+P8${TNuv>Tz
z=Mha6%LuSqPFpuXb_e2$Bx@wCr<yC6$=w_vf`JLVGcf=|5<S1sQ8vabm4J~<m1Qv1
zT9H{GN5_E(Ow@s-NI3@e-XQG#77qXjfP{(ausO>KZxFdEXh)48LS!TgjrSwsd@ImX
z$BICdRSF~0$}d`{w*+92rEj`1)^tb!F>^?%5trWg;LehRgtWB0cRpb_0FyhorTtfG
z8TWI~QD-=+YY|a1BFyw?BtZ`_Q?ptt5i#?UdDQ7<TnP~CE+!lZB?2K%;-NB#jLl}#
zV^$v`vKAIh5uvIA0?Zy!m|+;*wDYFT3#_5fU}h0fh6)j?=GYMlz?lmX6LEmF=0rxP
zp%9VR6oRGoDcpUHTujzYThy!pMOp#X6bVQY`hg-M;f`T~wFnaH!^54glk^5qKltF;
zFi2{-az2o$EbGWZh{?bH`m5|4v@h<gK5Wm<)|cep%r|lg#fZXqJnU}Yy*>e2<G5_U
z`~CCOiLGDNQ@ahRDj_HZzWn`fe)-E^y?XV^R9mati$C}u{-We?CQhsUl@{ue@w@GK
z_qYG`FCExbTlf8*%k-`9qyrK-p#iW;w;~{dTm+tf`Q^(O&wuy(-&;^X*_=H+J3IgA
zqYn@B{<r`1lgEF(T|OM2m9qib#aNH6S>?Gc03o$(h$fyFb@eE9oSe)vXS225B7J+F
zUk6{62rQ*i;sc1G*2>HlPQs<gu{C1EQb~rh>5R7{kHesCUY6YF)oB6%a0CbMma7P7
zG>W?2tnd>GP$L}kT!3*fg6KeniZJ*}<Rn5FD^-GU=uKx4VeqhsIu1Mz2-sRTfoK-y
z5a<X#jWLZtU|p2}hXQT@plY2^uO_JMJLyehm5&CM61C)nOj}#+9T3PgZ8lNZOttl8
ze`Ka*X%I-vr6#n7ZE4XJ5D-Jexk@=7|J8@`?|yLh(G^v05nx?F0il`7-CKS26}@{|
z?%r^3DISF5+#QJ>5WsqCZPxHv+ur(&zGpjD+7;YMJfJ_Y9}7lthQ*ut0(4lzr<plX
z#ssN7!Ei{U0}>LmhXYt45QHE9_E+Oy{wHKMgqh%gN>vI{q(7bLVc*)zhc{ooGgT(s
zZ0h;hczJQQj_Cm00s)Yim~9;|>%8>Cv8jfdF>|T)=E)7`<`QGg&NL08jH7pm!|^aL
z%l-ZCez$jv%d4wW$7dgX!jjPdt@pCbGi?S~50_}I@9rOZ@2zztlp-wk(W9qQ!z0qg
z9>MM@Ky`>v)BWylo)4-jvR3??v-4>?Q1KKQr}8N$h6vb9+q}GZ_u8xvb&w*6IE_=?
zp3ATSatu%MUGK`|9^rt!>D&7^$HO6Wa+r~jHrum02?~S<Q<!@*$GLgt)j`b5a(DYC
zATW|fOo&)F7c1Q$Y3&y7;6Z>APO5%?|Im9|_xH)^tfQ0>0U^-L5smqTbw+Trw#>aB
zb7fF#DMh5lxT$$`2@z2V1Y#s5AOe!Ew%Z*b`pKFi(vtuHAOJ~3K~(R9L^O<2N*Om7
z$U};#L~8Hd`i#K-u)_r%A_4<BXw{5@1zIp*5CIY~Ffu8^DVyiLtt$VOd)$<#NvVkJ
zj;c{BAqvoNJnr;iK}u=2mr|x_N<mq?k5qD3^<fy0JWw9)ACB{Z2_uYzhM`WIvv3WR
zz{tSI@BqX*OueaEeEs4TV+a!fi14H9>pBbwh%CfH#JOw+%D-)S_jbR(e`UTflZb3K
zn<qC<%?voQNoAs}`2c`OmL9+O`R9Gv4I`FH+wJuD`g$0_!vTPq5ZAE9%y~42-+uA+
zVfQA$YL#gipMCgDN+mRRMZg?ZnHduXkq5qfeS3HJ3ZgUNwB0<uemso4?qMB-5ex$I
zgC{bzckk}py|><5KQ8eve)M>KLoLZ?aPqx@uL5#^_41XPwze$C`S#8}`QG<8+c6DQ
zt2sJOeQ>@7Y;Rw`gz(<AEz5D%rI+)It5dBO5vx&njUho`g4PZXw{P0K2k&h@?soRQ
zKm4Q)s|CWrv!jjo%5MZ={`%ER2xlS(4O8uPdw#)^u&tE>c_M^(Bu~}*{ry`toyMW7
z9u~d3+x@{0zQxQByZd)<Z-4Q3e{*Bs{p{mMOM#;<i!}4TM2iR%fMf5=+&eIep_3F0
z$x@=M{VX6NQ@E$yf)QaDDq`xrz19H`!VOshh?!9sxj^ul@`zI_*2?Ikt7>@U<bZ*~
z!v|-nPC0+XwLT3PoW`>uAbQsbr_`vEPz9J03PxF1At4I^MC*+%35g-1smfTBC=4EL
zTGX7Gt?Sa-xS47l%q_Z3^=#a1vNJ=Zp$-?D^SM$f1Cj({Yt79`#4&2At8ai15EA|{
zPNReOWro&=%QF_S)^mNxX;|~<y`u*UVSu}C2KwP+`tLp)KDw@jHue195HsuBk=pNm
z_E)zr_HSO)S6|1&9cqVA@2aj^gDe4h;JvqQy@ejaj_h;6!}+*7D|Zv`3M{63?J|vA
zgb1TGH$!Gu_cT?MAr0u(4OdgEM}*W`N=ej1v!+NwST<v=rD-=;W(g0<__VMfGT_$W
zc+_QC7^%0=Zs%ub@54EXlU=}hC=f;OaX1{`yxs5jZGW6M+i4ny&Gw>>(@BVmrIy5<
z=9JOhmu30t%jfsI!@GC)r4EN<-)zsG+&s&ZGu+$_2~vmU9vE)DfA##Uub+SY>h&8!
zy1cr$yt@A5AD!3jC4mx#8=7@9LWq^TV}5sc_fP-ytA~dNX1=<*65$V?ef06Sw^$UQ
zAyO%1X1$qP&w=FeaQxZNe(}|pUp#s8<ox1nsP)mK>rcM(8Hxg$f{{CsD}kZsw_eR&
zym<5XfB&~caCLbl!s9r8`t9$0@X;Bik1K++EB2fpkOl6K%a8x--`(B5y}o`lZ6;=Z
z{N(0?x~T(xQ`sZhdW;dEwC<mO{`;3Nzq-1*6e;OOy?*@U{IU>PxTf}vnNG+*Ld4s5
zcQ0Oi8Q~cdREPTXgAePt@o+cQP?2>jOGF+ZQo`ZI^A{d%9IHq{#9<huR2B(9kwR3F
zfRG~sykhkj1~?o5D2Hb$s8@FmL32#aH!*}WBO4NV&r|xeIA0Ga@Kq1UtK!ZBEQm`f
z#u0}vzIwNRxUYqXpa^WH;ai_hS?hBO22*JjD-hd3e)r|8))#;%j3jY&by4a#jH3m*
zJ2S1$u3SQsbi=P-ybE_CV1i+&b=*kZurM&^YB#0xl^FqADQf)o?E!HHa3YMycy+C%
zRHpay_!X*{=>;s(4R^a`S*#A&d%L{6^6<=`KVhFzRv64w>QL(T_WnyoWA--o%STt!
zW}8fYV#MIQ>xfJGD2H)sFAX7-J@)hYS+C=CnrFBWp{rp8Gc)0`_&j@rxclq3cTI<<
z&pwC%2hjC~3J=U3D-kipvMl%aJ0et#*KZ!adeQ#F|MdM-BDjAeBG1jPdw?JjzIpRT
zyUz3R_U--GU*A3Y;PJHCuH5*w8$J1k!_ySIyWb}iw6zYwX8iHDJ`o`^hwyOqu=U`G
zmHFbX``r!@mu24X_Q!pHdq3TL@DwTM&u-o$Urb`20EzJBi|5NSyLRjCc$jx{IBg%_
zd`JY(o_+ZC?c3+ipUba*|NX~LE-!CdUtlm6-0vT5@9xZPY4Pgd?+iS(9>O`)0f5}=
z07L>n;-vi~L=l8Yba)UaznUO0EZl;?#Q+W(xARb@Qg}pe&CGz9V|GGh3`BG%v}mfx
z#FPae5Fyckja4-q5g9tTIia|veH)2T6>1p>DS8ePH~=~G(u4%%a6Bf%5@2$4>)v|+
zjH8XC531dQhblD)Pp(P=ehkwb;B^8b4R0=(;$J2VL}6qKLJxQLG%1>C$ADVLaRk7I
zjfoTCVxGq!jzdL8Gqv6yRs6Fj^znr=0>}^l=)eD8O^?6%&;R>;|K|1Yx39mnw{PvZ
zXKmIs|BtS{Yc9(n+_hUbggJDfSf;XEj`P{DY=zFpO`$=3Xf4<C0T5h}xzrLKy_<)N
zFaWxTsS*+ZnVG4|P}AS3su9La7)}V&`DP<>T$Uv?>uY3!unFjVJlFaLkrC0t)xb1y
zMkh={gomfZl?e?YR%aooV+8eXBBqvL2|&bBif~~fv&2CF0Gj#IyLsR`URwc*?q;R|
zsnUa_Vx^<d%psz+?&ee^0=n9~%)Kwd1Pt!v?%H)_+Q2vYxX0tn%tJj4<FMcFd+VjD
zMki(>Zf!9N#&r;yd|P)|mZcoU)R69;_EyXQH9&ya&CQI-@gy+`gd)XETWd^XYpwMT
zgdUD=MCd_g#sFq&u82fjHrw;ve&3oQcV;^rj$KXMF}=O1&ooatDIg(Af~<R2b6_S9
z=)JAib-0;{tn%RWQZi-apQo5SB7~(ab6S-E(htHSEJ#k|goS0Owbt5}rT4D7ruM2T
z1PTixN)cubcf>-7KoR2<e0QRkcy{%v#-PMILy~!!Bb7V>sqsS$gcW}YPKZcA%vl+q
z3UqJ>5|&|{HfQ(u`?*IEMuK_K{r+%%en!Lrsiz|dGz$RaQdla=(2hqU3;+SVf7o9>
zx~_;RkAH7fRqeIbI@WP>R)+2E?JXhJLLU0C+h1NkPK8>!o07aOTzW*Qb+g@Cu=j}2
zI`H9me0bPB9=G6*+3--%>Y;*C$~29amsj`i-nhlGXh0l~$L;y~if{4MQh|q7;gpGQ
z&d#Jv%W+o$n(E<jyu5H)SIJ7?2*Av)D#Dx1RL9CvkH;OE2f)($l?XGdc>u{~s!`d@
znTZIdY5G@x{_pmO`EXozhouhV)uW5F5X5?+rq4Z9>lF}>%kjf+{oyc-yZeLV%gd+y
z^yyP~AP3d-o0*xbnR^gYS{~Kw*~JID;|mQ9rq90rgHqP;(Hu&LhxW|<B<4aKclSrf
zVLH41_V($|fAQPz|H+?z`kilk_R6V<I5`Ajg#v(k9F9GJmp0!&%)j}~^P5lp?Cjzq
zwfmm<Dbom5RaHyT)3n)crp@!`&mVUCuV1`<{_5~2|MCy6u5YBo+~#K=eemY(o3}4s
zK78@wJ2&5|+e=}eruzHkbHU}s%jbvJw-0abm!<%e4^`sRMJkc6(#Mn3|D*+5QQZ;(
zYt0;hO}oy^ab9L(Df`*n`~9KcK6F#_=&BLU#E8gD!%#Py>2RF0oOJ+ZVrEsH#%Uae
z`}_O%P%Tc9odpY<*)R;k91#kb`bKjTk+kUH+IUg#n$jM3@7CSZU5;LlGa*Dwn@w*I
zbn`Sygok-7hdI7}XF|YiW<WF{G8gOW?zL8POGsOG2CX*{p6BDlREDZ|`_{UcF$*I0
z))`P(xCpbUshJjz^9et@`t)q-UGJ|Sf1k&x-yWX-<JX5Tzk2fpzI#*VnR-+0)_YgY
zwY#_Uxk7lDf%OO#@KO3k=0XhuG|JJ-45n5c)C0-lgb`;$1Tq7{k~v=)s2D)2;sk|U
zNYUL8Ynm<t1KcJP=29?>3K1a#5(+{!_v6xgTUzUC5J+GE72&<VB+vBs?s~{s*~P`h
zi`P3<Gjr{#B555-<E4<~GsbjMH>R>hO8DZwf-RS}<OqG;W|^58gt=*$K{#U6TJsDw
zkJfe2?q=ccXn?@MneOH8xhKm$z$})znJEBV#F_SP+RYkb2?zssO8RtO1b~RcIEF)O
zx-8Airp?Aoll~K+5D*ORPVbGoiS<Wlt%*p4597E$9<_G@<JEtW(Ijyil?4-z<0MjI
z#aLl$xef_*N6K<DGGR9&fG{Wgh_pW(hhZQlKy1C68<XSeMRs?~HFShSU@3)&w69+0
zu3dXi%8+WKgawBoa$%xU$on*ogba}i=`b)eW6tCNW|krakqoQ|ApqlOn{g(F)m20Q
zhDem%TsWBFdU_)>qgq6F^K{TAB6pS15Q;FT0FT%K07=yVc^rp2^ipeAM=~HJCopen
z*}kWr98iG1iDxK7*`96Qy?YZ8rHBV|rDbWuFi`R=BW>%H3Dc!e9fn$mWogXh!H9gA
zo0@I5B|umTuZV%@y)!WZY`2?0-X9yYA>;A5wAOpqu{eOgFQzP9inuiZ-)^Uf=w?jT
z73Za!yKARdL<C7996W;4tObv*E~Lm|=N&wvACF6GZ5SpC3xIGY=5QlsB6N#s8r8jZ
zWdbCB*zF$cO+r)%K?WfZ`e*V8c=qf=&z3iBJ-L<v5Jm`ckIEE9@`-_f?M40mA3Z@J
zcmKhkKtv2fg#fcP);e#w4EzERGwm>Z`q`gr@89_WvDDW5^71<8J$XKw*~y=WNQ?ko
zp>Cf&{p9ka@BBAJ<q!UJzujJ)ou4H-$lY37Jj_h3YgVf6<S{(`_zyRiAGX$y$K?<I
ztY1C(Bp`ZUQnjVpOnc8@o8E*mP@0$R<%dr{43yiWU&;l3?+4!}p|gvttLy8Vho_%>
zboc9j`t`4V_KWMsAAIo9Czn@SigMgFbn0^)4hmF;VcIXdlk@td$~!rxPUmK-MfiOR
zbYxa@9zx*m+LrF>y37p$BKl$3-|f<<3MZ;6F}pi44C8oqenv=#!|`x9B&agnnK)B4
z{6xvlZ*T-4VekF?{9J^)s&-9sZ{E4@nKkatA`zBFaZ1-};c1*&Q*$@fr0hoEP2JG;
zJVgzM`~92eUpJ2xEeMdPwWTd#UWeg$IH+2wve|BX>s@uI)y<>`GtJAQT|J`KT1x3l
z%aSe-(&rZ8%rITc^<VtR{H-^8_vKGt{`7l4{ZIep?N5Gt_u}3B;Hc=`TI;R%rd>}N
zH$BwcfFdY@90;khl~|(hj<$QS#hlh?9R`Tj)!dM1O&qGFlp1a<?Czzoh^U$aWGo*d
zAu|wZTL1usYaL2qM1W&x?7(#t-fTw^MsxyT3%x(Qe*U%gmfFlk4Xy@Z%o3R;wZ;CP
zaK}Wo2p~;kdDU;tJi^xLM=lo;65aP6XedNRR7w$+<9uvw(Qaxsjw3*%E-Ip{wq-et
zLv`!9tVy3tDW&&rO9zZ3t%jT9f>Z%0f(f_?=}M<?BGlgJ`M4|#0F+Wx4Z<l5qhnAQ
z0AS_91O%1_)(AfykLK!b(=^U==Jyz3I+Wa9-qUIGXf0CbrR|T$ahd{X>3x~!a3_kD
zN#yRD=&x0I1h{IT%%ZD1K{Zgz$Yf6^B@zbudpQ*{)ml7Y-XGj!vzg4?%zIZN3si(e
zEoK{Pt1K4K)Kv{pBaq0MOL&-e2%%aD9Rh`*2tx&xVK>xiGaU|h7y#jf6cNIOiHUHK
zLKw(UN<H6hbvb%l4)f4!=?6$y$9l0rP%fWU3lrCZL?cNxb(k|N*CPngU<FO5kCup7
zibaqVAVMz06;Os@oTkY<+Pq8?6d6^$b@yOQu1p{X5K`L4QdD(){pcTm^=q>}`cSHf
z^3oD`$nSF{@~@r86f>QjpD#<Vm6^buj&sXy#lYz_U~mUhr6R<5es(rZ)7#gL*-B+K
zo9E`LZidlFgpgMElo>(@<JIN4dRIN3)zLimhk2R%_G};u0Hu?s%PbI?ID}!l-Q2!?
z8OX$JYAZ{T7&5@}gh9(bYZ%A#i*qwQ+YZY-BS<(zWG_k*-_TP2nSUF>Vtqfp`484f
z=1M`Kb@Y*PGbBa`Otldbd6G4VfFpvKIc&up0|^qHT|CK;IKwuW1ORgfxte+{-B($S
zvpHN`JlmdmMqOWC69AOLYTd&<EB~;tRdI+x7J)ciKK}Up>O)vr+l*AgRc!@kY42ve
zcTFTn1kMeDFU$7q*|)Dh_>}$_Wq({AT|I8CNh#+SSC`k<H&1VF@9(~T{^GCy^Z)m!
z{~GJ?y?M5)>yO?2`pLJoE$`mE{l}mE{AYjvleR2o4yi>vNm+6oabncKdgHDPthFHq
zKoRMknAx<ixfQ7r1FR&A+L{)OfV?7uuP!b(+l`yMT073F>TB*`?<ep4DlaDrTivDG
z&1M>hJo0P_OIXqhP=i&Smd6~Os1Xt4IF5D1Kt@#6<#_D#93FL;ij>xS#`S2o+t=?v
zBwxFT6hJixwbt71-JM!$`r+=?+l(YzN##UoJcs~7ptCb5s%FcapbU%mJ34D0*T)a9
zpHGik%(j2{$N%SV{<p*P#qV8rs<SO~Z_Bc@*0ig8re$fe8X24dIEax1L&7NzOS^CV
z&|_|z{<TbNvFwc29TKLkHUU*kJZ&Zs>aEX9ivUf%E3KeDHI-z`)fy4CvM>_(&DHrv
zZK%u)ObBMna(MRm9Ih|cb}jtT)%NUcQ-lCQm@_FBB8X_HCGtK4{N$sjb=-K6n{Bq6
zi}SN#7>JQMb7!5T$RM@Wo~a2UkB<#m=B1nCIE;@TT}|Uq3rk@Z46suQQ{Wn9Esq~R
zHuontPw#hok2pU&ySzLvf=Iz+Zc79s6ec7JLPw14X7lXBXIIyca>*jho6V*OF&V=W
zK?oQc;a<maD742Yj5jxre(*;>n5GQ^xa;M`1v6n7lNDA#3{zau)DG^1Fi!Q8Pd-_e
z<>LJO{QTU^Hrov%FhxWUHwaQRrW%m*`5?k^GnG0L(RRCW_wD(Glz~W2?UJJ-3$797
zM8sU`aC7ritpmU?)L|ILamqt1%o1;q7UFE#0YgO2&o405v`j38NKC`kieMoCTac)r
zOtld4(PFG}d3kx<-zTu8h>&oRLPX<Giy&YKLt#9dST@_`fV6CFyV3hQu+A)rXF<aZ
zz6A4W9A&!^mJ!+K`z75Yxz<>lU+^^F2op1la1lV_Qn{1>78y$ImzS5@^KI>Q9Lm+z
z)_X%L4$NFIBGWAaiC7}2%1{U2Y&K7yesFttJ5HsFoL`(t9asitaSviiVoV0yA(F6M
zKf1bkdIJ#CG?Yr`+cRYG0A@-k1~RIeYLBP^9_ZKC7urAAYz8FDPbP7D>-Q^?H0{->
ziU|2Q(I0&O+wPq(0O9=nY#c`fLXU_=BjJSLx<nLVoTmD%Z#{c@b5)8k1QCtnbn<*9
zH#e<Q#%l#5AAj=kC!c(X5X=MtrAW3-03ep`8;>GHgq{&{ftKtNUVo}-^!`oIJqDO&
zjgRg*pGo)h8atOsQm|GiK?v!BIBB@zeItmJ*GH&n#2Uc)K7a7^R8U~{Z5e%yr$`3S
z-T?8mvO00=5ZC<R{2VDw-;|eMgoTBfnp@V_dARt>SVur1=E{RR1mZ;*VD+%aFl^2)
zF0XHHK0Y4qZtrg2z5Deqe|>%P!TI@x$Oa%pjHWZ;`u5f9ah!VVDVxU?Hk$KGPGrui
zKwSA7?;&Fhrv#6DBH!b&;G~9hL@8o!iQi>r5&7ujXQh-hT5r#`z4!aOdq{3UL`H$0
z<bP|_93Wg=TyD49ED4AN0&@Zp?+I{_c70d_y8sYznx>13ixm1ZGZCq(wthn7AOsK#
zBj-jWaY{q2XJ_XrYRzFlYs)_ihh7(x>uU_B2tpE(^Yb%iMg&5pf!$2Io)EE4NbNYk
zee+^;=DqZny}iEEdjN%4y3Xye+bwQQo0_S657%(za6({!tlBA@5C|5x)|*?13`KF#
zwoV0B!w<Z7+&1spdusjaB%to$6jYFp^RX?<DXb<x{V?dkO9vpNh2m^GKE66XW7)WG
zNeXi*1R$~<Kfbxj=?JW>K^$rU2ym}em>4{`@cH(vu=t8ThRds~ProAp%q;oc&v&)f
zT8hxB>cq3Nt%&6P^Z5D+GOM{+h!mDm>#*`{A&9tehPHaGG7Oi1UP}4&(@$G#-7FUe
z84}05V(ge)IEvsnl=JhmX&SE|U48uVN4^?oqlhrE)S3Y*%-P6BEi@E9Ki@#;)#di1
zkDmUw|MuSu<1o+5n>TOkI5HO?W~NdkhaVW7P-@{}C=lZ?Jp1^=54$QeK6>=X!&~db
zMID#6?&jS=Eh7k=iMHGA4}bW>?|%2YY12>-Vxcl*dxf}KfUvifFknVRkFFnW&L$#q
zH6TDh^N=;386q13QxQ>BcO%5@_Uyag`z*6&3IBht-mFWGD@hZx?OylTasxpUBv`Di
ztEX3uG?E_FM-MtjFFHqW`sve}Y4vnfv5HHP1VI3q84>P&ZP9~WkIWuC;Sc~L!<TDj
zpM486vy`&k?tr8S3k8u8hAt=GTt!%^a(#37>)-wEx4-^nMrCyTj2NkuIs#DcWf*Z3
zxIXO96=^xo`^~vXC^;B(We@=cco5NcGwf~-j1uShm~knc?h58^2myhVZ#^GwZ-?Es
z)Jlw{=gt-uVJTPFhkyFt{#R2ir35H|Gh!_z!1K}VNE@@1N+QHu$NG=|_%{J@A*MtG
z5fk;ijcjhxfRsg;+ea^N{^_6o7k9&eVKcZnOO}i9Xkn0Ys|aVoa3ze_U%Yz#`ehbW
z@9qwc;BA@I+|AOw6OAbb)mAJ0>Q`SxcLDD|ylTtbChr^9zH?18xR)<K(q(Zsf?%ee
zv>0hU)+rXbYE)H>*zI;iT~&IK?C0N+ckdpvT4lbkIclDO%mFx#HFFW>dG^&{y5~jo
z^Jt|B0wGhR*<;G$0hVRy8gN|o@mU}PSO4qOc|t8i`abKjG;Q4&y9bG^=^TlMH_yVF
znr>4Ah^Fnb2~O!9JOvjf9ORCk4wjUhacj9Z&dUVr$3<t$B^JDn<Kb?gKpr@5_g6PJ
zw~r66UVZx2S6~0>55GU$-2Lr8{KIa)%@}QfD5c)q-d^9{9FIp>so<R_620x{cpw6G
zdm6-Kpb!BNtN{|kFcN~BU6AWi>o8VkPTFvmz|D3X#v$iyA|mqZ>#H=Fb+yaBa4mKj
zqZPw24C6?gJ`X^|8$|DqX+F4=`|^0&8v--!_xr5knfIOrxUoP0i3p2(AdrV6;AXRJ
z5J+@=bw%6<Xb7N@+<ls+cw*Q0Sk3O9gFr-w{hmcG;bl}(;?iwI34z>f@rO6l+^*p#
zv7gA#j!tf>^D<8-%Wa#fhA*xSLK&ivQws47(30llZn*{JL|=xI#*pUTwT|%Y$BO_A
zBHWC_kaY_I1egj!P{tEwj#}@KBi~_RLW1kV{%XGy2B8qbA-zW-B#G9molr6miHHCh
zvDR!~kcdjb)|dfEBt@%{9t+4wj3~K1V&ZWanfdbaCxV(eFhJ6s1Tl%#<<jT%&m};F
zI+XlBWG7Tgky4O3{Wzd!B_K1`Qu5~ycP7Fj;Tc1Qd4^=i27wli2*Q{#g2EJGh|%Ap
zH87l+_E(2e3Ius%81fP;MnZ&1MiY??xFsf*JTaNcqFYEufDt9yq#od=X>ydHx~i$U
zMB?w=zt+Lc9iHH)@GvB-<H#az77`a%oi*_<RwWLoE&#v?9-g^*FpdB&tFDxZA!+@#
z5Qz{8qw12kc)#E8b~|k|K*sz;ucpvV9GNj~Yl)z>rRh?Kdh_u|r#C;hX}Ty@kTXLP
zLbV`W?RM_KR2KZX0j3Hw2*X!fD*|NN?01{pzHYX}#EeWdl!AauYecx+ZiFde`L$6G
z1f=xs&P^Ht5jWLLRNU`(E3?*;pmUkTo&pLZ2tZqF%YuPpDT9crW@X_*kRu-%c?)t?
z$W)%`{E#n;6a*(#LI~kL*W~`5*Pk<^Gu@2{l4Rr&owAyz$|`Oq$N=UD_qGHg5F;XR
z5wxIyi<dY=;M#cPcS(&X7eVR-0)&uM0QW~5#8f+w7ctL?W@4`a*yTov@Aho1?w9Dv
zg6`3YJza$ZkqA_+2UD1)S9^C-^9aA#Qf4q@;*A)^0mxOCW%kfm<9~3ao0xlcO`R`~
zh)7-G9_HFiTMwr6r%Am(vMCo`7e0V&rs?eCZV_f`5Ri!OGsrbfJ5vfCB4pOg43Wpp
z_WI`bv(H}L-#`5H=Ka6?^MAg&z5exYe_chAd`QBFtLqmpUi|p|4~yA4(#2|g{qLT<
zykqNmh}}^>`tc_sZk(wMc_?qj@%Hwnj&(&t^BC>MN$Y=!TI=oYZ9aXgS#BR_FZS0&
zoELiiK|-k3o06R)be{xRjYZeaYn@-Sjxv)V2uns?4&$Z{b!}W=7>AGQOT{#-!L$Ne
zyAP%vZMWMb>|}yX{%=Kc#EEr+hc$c6nP|7!Zicakd4zA>UJXP1xSv04<OqIBVaKv8
z%QDZs_*yf!hM@$`<bp<_(cIL-0#r(Y(54o3+-)jM8c1A+X>P}Ji7tZ2H0xh`p$v^d
zVa_su)LT*BjGM8p2KSzE;^{A%N#;dp7-X!Hvdk3GM&wS$AXYAA*AOAN_XJS4p%#(>
z0OonomFNhNV?^IJIuMZ&G7z?CfVkgodvcuFvMk;Y8cs9(j9dpm_jVz75mBu*d9X>&
zaCZ^09v6$;51Vvd4)-QPN&brPWm%^4IX#B@eFP+=)uW(W08dj(^O>YCP3Pr&UNVk8
zi+=#98IdscNMqC0_Bk?r58bOZ1NHy_AOJ~3K~y6b%pKq{czisqAR4-Z=I;oT6P}bP
zcgv88T;q8F0(z$|r}M4$z@v^)c|RaLCjtZnv>xy3X@}C&GrIWtd8937ek$?``BHX}
z5gviLM@Y+vT1&TLRn1J*M8y(ELm=p0DA>)V)TZ-Xgi&hQ?jpM(Oe6!$!`uJ^8>e8L
zO3|jOEhB8y%_7Y<(Ze%e2uaeqGFMUN(ag-+0F{Zbps8iAfENpXa0@4(R4NdnHgk6=
zoVe>WO*vmZIfQhtO<I2+*_0;)oqiM6kI-0sNOL0U>J<P(>q&q)Xu3zF%$qvCxQ=X|
zn?6?!qzHqM?oa{<>HCqg2y;Zb1YST!4Mh;9!DL5v5ihIj=!ReGn3E@Dj{a#z8f)$B
z1oc1&kY$<RX(G<l=#1KMB1u#>U%VuUyBoq~oXwvPyT>#KtbC&GDgwUDQ(NYt7C>+_
zTx(+HeyqbiXXKH&2B@|L!qXMDE7^%Mrv;oG2mz5fFhx5l9$idZ-=0RedH0WnRfk7C
zM9&>pl-o_0M3q`wdTI24AP<Lb0iUl*g5JrqR&W>QakJfDU48oMlk@5H?!&{s{PREW
z5BtwQ|I97b0yK=nM<2f||5|j-pXvO-wffRZN=gXj!cEOSV7;)2h$VZ#^`@$}E<EqK
zB9Im$go!NlN(=-HyjpFiNoil}KHCCN{(1Dxv?B&#e~vp^ktgj_ENMI+QuFLV02bz8
z0zjf#E4V=y&oN_9$-_%_Ja!N64z#XcE!IIBlfwb4^c<l((oz0gPD}_u;5FcjVfWYj
z+neQpXM$#)RA={PUgl+4T3b{X*OvQ3CS`1>>bB_Yp@G4a>sFvTj{5_T!!-yp?G9Hz
zzWMph&mT_H%$d*zPm6%uj9%_j3W}-Y^j+SK&{-(LlK)afh>#hJB%v*sI6M|>#!!U9
zoiI&Cy~6;2i0E#Fuq?o|FZ+TBYPu{-1OO=Xq(5NhfIQ_rhaV!I=Xtx`auVHD&(pL%
zYz>i-DFP80sX_lVOybN+9_0S;17x;H!qkDt%n^x55CF7>?lBC7Ng`sI=Oj`myptKI
z-K8&|z~pHI4yxlYAds1zr}MJ3L{EL~N|w115o8XV#p+)On_)~SY@X-KlI1dCWTp3j
zK+KH|F(J`rvmwIc5m!$kFwX^%Y3`v`04$=%OAw=KtlODDLhv56hycMk)2(5mD{fIr
zS(dr?^8kqn_4C@pz*77O(U(3NvDs{L;Au;1x~#Fdm#&?$UlvYdmKjk<w%g6|ytHYa
zk7p;2OSo^El|~?jH$8p0-`!k;G&@e|u9TF|OMBfv0yx53Gvub4d5PE>5XNr5H8X4N
zd_Jx6jg&#A%VV04M+<OG7p(xQB0SIYG))oC%xSBAi4N>@+OuhRsD)YF+f&#BVsf#1
z!NMFIXdNo7)*5Sb*5A>U5Y-zI)yV#g`YX#!s@|Q#0TFVB$-f?uVW1ah)4<KRHCG}x
z)r(yeu8!rf%FVmyHt|qLA_||K4Av*-vfTp+QL_v72WUO!hzbR4>d=+@-L%QfTDY!2
zvgdIVk#DR-WH&7<c_b5qm!=bw;R=AR0c+TU#Gw#jc6q8T+yKn2MOb=d)2a;z%rIIE
zB7+btsZn&(a0}4<4I<>p)kVmNfrQRLd8U(_rQ9h(J<M8jYlJ=SJ3KuzDF6W!h!9J3
z_A<Cz!n1X#yTk6qi`&!V!@PX^{>Q)k+kgG9+s)>%-wF$0l%XE3uWs&c^9)*#gQs5?
znRoBmyVwh!#`kXa$ry6sPvuqeh=5cy#acW2iaC8QVYNYk|L%j=An6N?0MsdAh!~#H
zTq}ftm?vvIooMk4nWRfG?g@>3s>UM4=3Fm9bWP_vRIRH`B#hOnVQnPyV7jDMJFbzi
ziCcDu7BEc9Fo-R{=i~nGZa;ZdwmTzQY+05}+?%IK&6c)IZCSz^xCyGD5-eb|&dC7i
z_n8HxBGK;ZCJ@@RAlWbuu}oEPzuQQukH^#c{x~tOFH(k*B~TlXXlz`9+5sTxjsf6=
zoZ1j3z;1q&M#vb^2?B23_w969(vXD#0wDyZ{4u>9f{9aK@Wcg1v<O7bHWdIIJtNq7
zy=6I`t^gn+8ifFMwj@CRI(h1u8$umQ5s`VGu}guI4?uwEA`uxwm(iJ=@P`Ou2qG@a
zLPVX`44QLo0Ig?ar>YPMGm|ijSa>si{=8+gm~%cNrPDn=H43=)7A>9-vJA||-f^a5
zlLsJWRY;LuCM!U0Uecl@5CAP&2Hr(b_JzG8fprDBvT%FsLC4Lq1ISk+M7R`LmN`#L
zcV8D5Y!F1u8Po1&fZ3jxQj%KH^dhJXRnLPRF+(Q<i4i^Hfe{#(0r_-3>a0uigkq40
zoRA3JI$~o!pN=}u5zY~&whAu#>-n^*dQ#<TCNhf%0ZHZcZFM3vRm@9EnN5!F|9&%x
zz!!KKAeHDjAtebW*7^CuzK#gya=E{kbFVANfCwnu0-RXXH0A3FL^(hZs`k7%=;08a
zw<je%rk)#}z+9d5VoNz$`csYSqjrQj0&tN5kctd#F+%Z(@YX$YpO&l<K!BKOY)BdW
z6#x#X;5`|-7i<g(*Nfk_d2co&3<I|R?rJ8IoN*SKgZ|33$`~~v*<cWW0wHFwh#L_U
zrrwo=VOQm6pDheE014SWdCBUg5$2(;3Sk&wq3h6*m;fOR5r}o@;Zv^Q9${uJOjE*$
zU0=SgnFC2iKmqjdOwXI$tu0fyA@m(>zgZEGC<=0fI3htYGw`k%O<vMwvpHNHUVi-1
z<MH9moA-bD^B-@nuYUU<eiyY8fqQKC`%hkd`u5FFuq^TK%kOgtdS#9EwKX9D_JC+d
zg3Kzrc#0uJz<fH7LnZELUXrPa2!moZPXGW1O``PLB(BVBk4t;ZbU6yq`@Gxhhj)TT
zD*WN;M+Hdg#O1qO8mj<cLSnS!n&n)H&^ctV+QnusV|~LP{i&y{tQm=Vfzxvii)X*w
zj374ZzZwp|-Mn~(<Gvv^)g=u!7IR-(J1_H5=cBiYd}eBbGkFVdVGa-!#1i002vUp-
zmmy^19!;lN+v9OTJ~_fTjGIkemStK&&efSZF4cE!M}XGrk++7aYY4-`skebS(})lu
z5O@+&%%Z0OceX}$oDh`FN?u}z{)WaXngzem!9yv%0Wo961CX;JON9S9%6DP5_oz5_
z!s2E~kgq_NYIkEs9tXZh0`T+zfutRI&+q{X%D5Da08Q~AF%QJT0j{b6Dd$KWkfVQ*
z{3o4b0T&DbY3*6#Y4=ZbNdy9P>aKza*a_!3U-maE`kuvm%0P#^Js?&E7ee=Jy4)`h
z@KssevxCz2lbBHQvxqpnxp^K_J;<duwFv=cMlwB%7$SFcGc(O6+c66eLojnml`Z1B
zW_FJhcbThMxMs+}Q~R9b1(=kQTky2dXDQ3vSW;@x<KeSBtgx3Y%dGPm8OYaD2!N1?
z2)i*KK`#Fg)>s@M!centBRHSWwXiTR89qSa7Ot6FkC+p1$JeOqWx@f03H7qLateS5
z%d4IHvGml4=%%5CfLY8eQB6P$hagXRF#u^kQNbR8%x;F=vkcq}!vGx6^CX28DF$H6
zfIhB$$w8FEUiiu!4)5&O01I#+=Hh@J#4IdB1ctTC=^BA%wk{w7I-9I`2qGgRi9@JI
z1}?5eo<PDC85|sXaw#IR0~I1wCjwRVE}OJ8Xb))FO~wi-N1#CgEF{I#N$e@!U`^OY
zPfbD=b2JE02*gsTFZ0b>GgAnI2(<;>7}N4HwOjeL2m=FShJ5w5*EP(;)vQH0bsWf}
z_Xhw#V1Qh!lmyc<`o>K&Ka!}gJ9<0=AOIQ=@@N6WrnnlcTkT9+Ld4B>dvkm9g}!d8
zr^orL-~a2)?bS!0e4PFG{&0Bl(MQ|ecAloo!FMtKUOVEoJxmi-yhI|!%BG{s-^@qI
z-RF5y-7-j@5<0OEb0vnWzXvg@TQ1+B7w@$B%zU>X=KgwgTo^nEV`WEN&S><k!D~e<
zE9t&dgc4m$lsNj(97yCB??VcF25BbV#ms7ndE~;_`t|4+qhkY|A&JQ`0(TIzt>Q21
z)vt!DS5V92>`2XQX-#!mT3bv{%XC`iBk062F}6Zyh9#_-1q3oM*M43QE)E(54cn=S
zl)wSFsQKrwKcA*)X`S-(R1mt;%Txc9cf3O=6cA~4*iCElAG#Z2&U9QjsWjeQ5r{SB
zEE8s)*fn8BsJh6CI<ClS_A7+wW~mVffMuBwNJ=4=w8YQhV!ePI*pJ%FGmaT22Tti>
z6+m17lhw>bR7+(MLKI=^@J|;YbX?K{iNYy30-1$9+)ULtrMJs6Uj`uWdwoj)EYq2j
z%y;32lv1frtKFeJeK2yf13*2*CS}dNb`cT*rfViVk?I52Nlf~Hg}kCF2oNI7X&~x7
z4=K-F_W%|o3SdB4jq=t>pE6OdL03Imex@TJ7$OI9r_BMBQX)dF0R)5vhDVp^x)XBo
zFb`&_ZU!I`<q|oZ7aSqXHNxD12;7~x1Ss{`D<mqpBFyaeV3t}%O0#8UTl7L3;BA?;
zO~nNQ1JY;D)0Zat*_2&ShQrOoNv*-aKq>&x=9y_A03n=RnJDW52@z1X?Rl-ujaeYV
zOg%lZ)))`9w$cC&LGivQ1HjgX8+CCm0th+$uSZr|zeUa%s=9IyD5qHFE`}_ntQ*pt
zrELBB=n=%^mbMFwEXg7wDnOQ-6@+lrTtVihG5~r8H!+b!WTsR>hL}&7q`Vcj?B^G!
zQ@a4M10fPIAsgy~-8L#b3=q&!2pz&*7xxV41#{*)=I+{)1sD<G+M35DS<C^Q$-0qY
z03f*;@yeEgr=dAXR0xJ(5y?Qz^F!P;Vj0G5=Tdn-ZEo6J6<m`fl$NpqK|l@`REbIw
zyUf&7-CDT1yS9Z81H-~_P4gy1cMj43Vat$!mPIrPa;gi0OSXP-srDWq>a?hhn{B=~
z?&hkIIc?fhm)&mbetSMY{_&4rPsjV;|I5FWQg(+uF%QFd`{M5A_U7UKzAddUar=&z
z)-+<zvl~{nSYE+(=DPsLedCz_MYUx#^a>6mKcS1!k>#Yh6PkIqGK;PeN^|bC|3*Y2
zd4i}JAt<NJC(-aTZZc7l9XbU%?=ms>haS5BQGS-XUt+M*oeq2Ww>w0B_h*{3>?JAj
zx*UZ?<mvncig59`4*p`;{%W{-L3LCNx5d>XT3ed7xh<zQAKQEaJCjcg=Sp*-M$rs4
z8RjTC*f^qk%mGVtkyz#h=9XyccDwuSfB5@%KfnFzkN-AJXKn3yC$wT^{2YzX^^xZT
z{_L-rJ7lE=H^_iLAOvP1^bYAG<;x)e2%hn(d5E{>D`S8`pi>VSJc3A66%Z^!Rns)k
zBZvzE0%asRW>M*jALa~Ih4270x4unu^Xx*=iR)!W;%3AoBG@%%>yT-h!ZCF2j5|TW
zzF^BK1OSseeL+dO?Qot-5Z-ln5Qt5!2tCsTb{C&@0%ibD+5)14ArYBrA}375gsU@y
zKi}^lB9aA&2eBYBHPakXlSOK-t4XlCuPC86U_q)RLa;jQGZRw>oXrB%tQX6Cd(8on
zktDrY)<-1>F$gu>-53+I4nzzvLLy*94HDvAvS-sjypttN-Iqk3)k0NSq?7`|ZiFb&
zo$#G|><3aA010xjO&$1ze1gJSn+DisWNwB4T6bB&^?~)Yka0KHIg6agkTZm)@<KR8
zlCEZ^08SAJ<3|R`BgLwev4GZEQcH;0*0%dOpV2!;EznuFq2|mI{ZRB|l7S}TnlKLn
z3J@|&CWSB+LM9}G+-><Y^Ml^7q4xz(c(`G1J}jXN4>QYn?0)hQ1f&lOl8`wtP#uQz
z*`$uXs5M(Ng!=Ns-H|bXfY^};m>7WtC}-%r<c<hIC`4L>-@SeN?(I*6(A4L~!~WG@
z{p~+Qw^8#<+3chTcLXO<YtzI1ePm?>a@=pPMk<C0zk|DJB%}-mVMtEs=hHFzA3F2K
zAP%?t2oG>wn!ByeR@&)zVBxyVGZAQ0rXdg<Y{*8(t^bp7vu4)v;0|^|OaE2?Fh|E4
zBv?Y#Fr60NJN#zplj1H8NyX?56s7%}2LYhkg65VJbI;<|6aZYoK|lF)o|kXF`QgnE
zf7u<be)(6w9mfq3Z@1g4>#HJSO)a`#Pk!nJ)P3?E>D_9k!ld&FU7luB%V_k7P_=2A
zHrs7Jn6*m6!cR<%zK*55AD8Fp0)+RuIV<;CeVNFe9G#JpH+pgMx@@*mDWCqvE2-PH
zsplRf2~(L83fNR5GFk+scF{%l2PxBFW^mWgr}W84B*zKUWD~hBX}V(O8s*DjcrBY3
zSPNk4-c!3gw`JDlxJ;+EoI=kWlhCQ~sZbMWVY$^<tx>|%JRpGFgG8`{5R`Ac48sp^
zemdTNIGv`S-@jXyMZ0wa{dc?YO!vGjtPmps+I-<7oDiKn&v630q^zg3JJVl@*et@-
zI0LhvbUUko+Imo3QV3xUp0U1bK};+!ldX|^E@=S7vMj?OE9t4zUituHnzIy8j<NJi
zV;H7J7n|cSGbNNK5(9!rO$h^11{p?DvvW3ui~Zl_dFqXtM0ij~Ts^`xM=8t1noDh4
zQCwdaWSL8ek@B$KAm*T-hVwo3{mFPPJTN>2J*kW69z>9tImgq<%{*dhEg_3^@Cu7i
zkYHjCgjI(RnGK+>0sd?+;s5}I?tlTrz4|W8(hYW)FgMK@gaJMGfSky+xtB6fA3_k_
zy@)K!l3ZxFCDUeeV+<aqE>hhQad7km?U@;ooLQ-}^3V|=MK#IV37||gik0TslYdrH
zTYCSZaOWz8dq5v#!;?=Ju9oH|j51qW`7xf+g%O^7aU#wKkpQg6t#$%)&LPyfu6;ip
z5j1cf;eC;afW+t&h)Iphb{rt)xrq>fOXYMV&2NZY01YD3TFu=rm`C2DW=hP&5!opM
zkQ7pL&}BXm!8$nf*9|GU3l(y{@FG>sCQ}Wul*M^+XS~*mM5R;|VJ>~75aCi?TToGb
zjL>PGh|tW0ncUkqU;pXnw?82U5l?gd>{lN%vzxoBhk<)1v-N0R7mOc%`0l&!zU|wj
zkmkF;|DRr7mXtaEhZ~@~8KM%pw)5}*^}h)7(sY?y;4tn#{f{p{&#I%Q?uwE5Y2eY&
zl^O3JKYab?KTq@Y^H1+;Jpc{A{Hy=r^{=ins@hvK?_#Iimovs#;^F@Or#Ek=X@Y=S
zc7en0_Orv?Cck!?$|j`jZfaU62;g*jRMq401c7d(Amjd{tJ{yWW~uekn`aSX5P=Y#
z+FXb7`t|GMaejQ5zW?@{-PPgsFTPZ@Qp)x9bty7Uff%?RnTfAFXB1y(2!!4LE03_W
z;3h!pp7?phcsg@ABpLD|6URO&rK@UM1z|1$JX2OuHqIncYDS&VMTE363<EK@FRjg~
zH(SrRl^H=@=+JX==%VE7OI{IP7T_WlnlLOO5%V)*Men#%?Auy<a{mY*Vi6z^STp?s
zq5@rO{8F}`m+_j**!ODIOtrPS&66(2HXm&{dz%HP%BRAQg0rwfv}A4sHFs5W&A>nk
zuu=*ofghjzPTcfQfB55hIvyWBoKMF^_4&>l`-Tmv)17f8cjxvf$G#+gI03Q{P@q9b
z@~3F!K=l<}Cz*IIb<8Pnm7(X%x_&}xDyXBZgdU)#(D(G*)F>j*!J+_ST2f;7SHYE_
zn<c7GY1r4UED#6*TuWaXu0B0IJcf`oKwVRbxB|a3mzrwG#Hdr!!z85?B6eT$tx0h8
z;@lDxg-Vi}Ai`E|0<J$#{<_$wr)~<uk-9CPMJ%n+P*|9_TOV}Z&{~80<z1C1=}+Qr
zi7Sc-L@diZFD(E>1RMf$NMR&aGXf=McN1Ys+D@lDyO~`q2O<K2p7ExicECgwPF<TB
zJ@to~FxhC?rI-b~YC}LQQcKac1a>%<I60O;1VzY9!;z(QQVM~o@rIemB6zncR|owt
z6D;i5VJHGByuaSpv94Q@Ft>yf*Vi(eoBqUk7$f)mB#6tsXsrzyghT+4p}%n<p68Y;
z+h%iTq5$$0N)st<S*G*MOu3!$4tf(1n>muXJ3*KQGXXMyxa)M*90luG2@oQACKRyR
zJuzln8%c39)9G|PxhryV(y)#-&&T{|#FW-^5sU)U(vHWr%=eC(i<xn#yWK9jZ$s*;
zIDi6>xz-Bz?;d{m?q}CCk&Ey!3?F^`Q93jr3MN|8^+G~i7o+dK|LOk2PdQ5M_j_Tc
zhYt_O#|K0-ZL_vAT>s+BUqy$`vgBye4H9i;Aw>Q8ryrMjQq^#`Mp1_S_K?s|xQA<i
zt!xiPaHjbA-J6H|_Yu(AtQzxDe)rLD%pA}nOm(I%2T-#X?o2@(KYah)&u@SD=9_OH
z?oW@8ZJO(^fA^m-z}>=Hvl+sYah+*MD2}dw{I~!2kAL{nFbt}ujo;nt|M7qQKUc_W
zPwnOnys4?G61Ycm_dosdzb(u1)0>}K3sd^=sQ>%_`F|60&J*j`aaA=}a76-B{o#kd
zAkxjv-7kLei?9Cp=f}tStAG3b?cIwq45ika+nbx)oAc>ps_PcD_oUIyIN>?p<hho=
z6J)wN&~oP;5oY@S{r$tkaTv$L_0?L-S7}q~1T#+t6avo2a|E=ex#$AK{cgY6Zad5R
ziJKESNCgHFK0F+!X<kulP}SXTe|>Xvp&jKYhh15L%;W}XCus;sWbO|S4<y6>YIB(v
zJHe1kR-42d=XqI{+00TzE>bp|&Gj%~pB$n9UC;gnlvg3QR4b6_VrEU7x-Z&JZ93`l
z*ya=ZnPDzG)pD#f3AbJu(10xbJhx?Os=7|GjKos<40*AjYD-(@x#`?2V{T(v7DP-h
zNq66jBR*rLVV6^*S$H@in%Oi>>4uYg`rW3EwImqLoSC7#BHMjKHqG<n{k?S?9cRJA
ze)r<V9Z^}UK1Dclt#tr80+9ur&*z`tJ+$V{wANCj?Do4CAH9?UL<|9!Ie^#HTQ`6A
z{=+;i>b5M+J;u%E_U^^?%@}JkY_<`wQj1d#^wUp2&GWLf7J#MHaTq`P<mGm|TaD;?
z4hjpQ6e2;y)9Lj7!-o&=Ka^7HP{(0lk^R-Rl+A@Sn`voT?L`C--@SYP_U&7DueH=V
z48xEXY(U;=hVGgCogSYVJ@V$wn}>%-58rLKBEn4D-EQ0+m@|OHmwC}~sDecO`Jblg
z`|p2rfLaSPBePT~!)6?7&kMJ3r^tMZ6dEAhf4INDzXx|_<{|+w4#RGDV3F*d5imTc
z=h{c2^T*S1I-eq<4kek``~ALFHd8V~FoPw6r3@?x4iWzN`1t<)&#f&(Eh18fy4h?t
zTObbVfSMtIE{%x-frd&~o9O{83>YFD3X;g(r+0TB-AMX~<qRIrc$BH4S;=Vc-{0dA
zuWokNSJy=3u7DiDNfJzKMx?x-+E-tFRSTEGr7|;bx7(|$10Z(IRSE~wst^gd9MAgI
zSKmlCD@7@?-EQvgUQphk07!);U?8#-Q+zy~zWV())}}f#Gt@HNy|}&GY$Ba2kkq^o
zxnV8U1<l~yhabNC`WqxgbR^ntHrF>d*Ecsz0v<@5<}irD!fe20^W6_0-v9I+$-)HV
zX51eRhpR(+Sx1kzkcb?G!=pL!_dh<)r}s>4+{nw1@6=3)n%YpaYh)q}Kq;cy>bQ5@
zsG_?9cquBxemXs#&L;@hdHL|TeDrF&+3pY=0L|2M|8H*YO&8%Hh<QFu=hOLocGuJ6
z>Hb6e==DdILLLiu1vKcqEl-1ja6LUfAi#N^r}N|aq|-8Nw!75tTUug*B@x<PQ;6#B
zKmPcGszE?&ZCSL`yE;}63qyC)HbZ!J&*3?kdeiyg{Rbv$ZMJ61%*@+i*bKv9(Id>m
zE!EW!?ykc2;lum$bUdFXKu1dHpwwX#5a!uTsChb%HaAskBIR^Eo{kT##b&d6@#4jF
zUcUYA`{{iC_Umsp+dXfFtLv-7VfTh;ChTHA#3b=tG`s5%jL#?}{%k@bBKFRb?KJZ9
z`CMylt?jQ4iHcB%AkAI--WUM@=cP4OH)~Ck<74jo-Cmdr3o#R-ngN8i`QpE=s?#*h
z^ODSbw+Mi76T+pG%A6X+pl&MQZb``wHzOiP5*89}O$oXoz-3)ZYhox-&wE&wd77p?
zf6c5EPxeao1_kJa#%D^e>vqq=0Is^Iws}_5sV%cD$2Ol`AJEQ1OD*R?&P5hs4?wUC
z(IvugT9$;9t<RBQ!#F;lX!C9~)0ES(Fq??`G|jmYz?Gws(d8+~S(n>Rh~AlWa6V6N
z>A)C5Xxgs#+rDO7eN7T-PI8YasQTM?_pRwXHw3H$HMN_Y>r%?P3Vi~=JFSlBbXwlN
zeY}61&eM6j+YW=gP`|#t8=esBCps}Rr?vCxbpGzUAKYP@CaFUyb+^Ci<gB#_<N8eY
zvhDu%?T7Eb|KU7MBC_A_Hrw6d=4QXoi3a$BZRYi1Mr2ic^W#rHeE*|rJ6s(~DOcCm
z<7Rg;wM)D({dU%w815e)e*gPFnCWi6+m4%B%O{_Hy4&v<*0CqGcB%Bwm8AQJ4<Ek$
z`Wpb)ANDLFBA<Nn$*|d_Pk@DyCta&BbFEcG+~e)fZ{NNDFbs9vZkWqvw|Vv1YhpHc
z3uP8lg91n>%tDNSr_=e{Z@-0zVW_3nB4ycbHrqX~Ej2Mj7$6fRs8i<i`Q5ws-+%v?
zaVSGAMP#$x)>2BT2obJ^1n8}C5w3z7M1+qIk6(ZNO%)o3n!dBQcQ?aO!5uhYMfg><
z)B>kRWHO;Qrw>JU*L__803ZNKL_t)iN)GJmD#Bco-xLTPWPPR?>N19$N>y#XUmUd-
zdU1PaNgblD4^&kTU@k=Fj?=kK(;`B<?O>*=zTfYO0z4vjsOc2}L?U4kSQn)ar^m4h
zv!~=&&BjuaJxd78luBA*Ryz;lelczfsu^KB(p1NBf7sW$Ng)%Hum}JFG8YgJ8FoRN
zWqx1^WP6PBX17mUj8tDDF>?uAY2YFsfBNe2!#lNz&}m*aJ8!BY#ms9Frpi(f!64Eo
zd%ruBaWhRvgJ=%tS*N+xF}QMvGpVnah)7s!9mnlqZkRdk)7(ha@9!VdXy*Pj{rTHB
z=eZFhAnNLUW9Fvm(wv-hI6gc+9FOKcP0L@t|M9>5;oFy=eBQYW(G8aS3u0+~Z{hal
z$DfvEY191S-G^`f{QY--c{_~Tz7_IBSk*5sBjEr(O(#Y&wWh7LC4xTt;`O-M5Mi3?
zub=4=uBLz<;OFDR`Sdt1(>$Gi{`vj8clVq9EiwmUlBY7zE%PBDHJIRUfBvb6%=1~b
zJw801j?*yiORcrk<XWqC3N#?Dyh(fa_T9A150Cd>fBntF!{gP}_4Uo6RQmp#Z{Gan
z`*fnXy}Ki!zHWK8_odEg;wLHRlj0Tucx7PG#fbE>6+<NVXsXPGSwxu9Zk#x4YI5(0
zXjzu@T5`{2f@f|c5HcgDe;X6Jx7Jp0CJW5k7Ds1<l~RUb6sbg#27Ztr=Nggb?w6P#
z6egxLtj;t>W+4*hvd++)_HUVj)%^`F%Dk0yS^-`dzBYMXwtJ)!;7!ldG|ki0mUEkr
z^K?H?N7s93$3o|^oHoO0C|WA8kkD#EMF0pXC+#LA-JC5w$GUkC@+#oK%ej=NUack3
z@_C+HYXMJ~Ja-HaiSmCTOl7q;dos*XwbU)8OZJ8GjTg#$M$<U77EPmRxHBSORBN5m
z-)Ga5Zg4mdkprql0M3gw^}O#F6SOD7w(!N8E%VQh=Sdw9Noq-0zGD^fWCeQ>;}Y@n
z^cGc9Ro8AIfL-yO>K`N`DTRoc#MGOrdrZ@k2t@Xxm)&Yt*{lo$W-d~Y(9ATgM4M`B
z+07*U!bGw1wP-a(mt66A=+eNv$B?fsy|{Kf(e1`4H^HS8cT-hsW+^l>pQlrHPaXXS
zPksPpD4`T0PL$BpmbSRNhh9_-c=2e&?j)LjK+hDOrm9Oz&b(=hP(pWG2z@h_%~)#T
zTFO|f$jbNw*Vars#0cSx8RlrU@@_wF#<JOL>R~sB8aYsq5D=Wt)2hXYWF$QK-aPl`
z$28PocQ{W|Tb3uwl<4j~fe0i>vf1oP9aP;Nr`b>E<?-QoI-Oy4+(lr-!ZfgK#&O3~
zcl+ycJgD*9peasM5A{oy`-%}V5EB(HRitpKyTjG2J~f{ksKN1g$_;KF-=z-1LuxUY
zL`vE0_CR&knANALE%UN0i<+%+k6>nE$w#`Bq1Iu4xC$!g)3P+3m$od+vMfMQYpKIP
zrCeOUh^Uq_ZpTkP{j`~xK{G#|=JT|eyN9z-E%L<l&OW}#{&2-*bVm(1%}rDZ`S82H
z{ZD4LyL-6)bpG;Jzbn}&twc3g4ZDFP{fFOvcr2R(TR03Lr^CySUj5>=n`O{_WEh}X
zMm6QTs^;f;PWK#(QZ_FR`xo2&CWk;XO-hxULXYZngm^rj>LBym69kyy!)f~Xvrk1R
zncV5*?B)=j)iH@EkH_<e$A_ia`85Ch_Tk+J|Ha?l@lecE)siw8U3<_AK7@Y%m+!9+
zhtugao#&t4+@H_#+rR%!bWElvJs@BPFM4P?`kF1S+UEJ;!|8Oi-~9G>AHV!mo88|(
z{OR}qdUJD-f}6u`ci7)Q9@k-)MR+Ch5Ij>Rr8tBDJnbm~i3HKiSfuo83%;_SfT)ba
zn1(xmpl*nggQz1Bi-f1ySagF2NU-j(-*1MYlr;WDcjH?5>dGz;=;hSL^gxJ!*o@mi
zOit|T>VVlct$V~6>X^MHAf-q&!w^NJ+wLd-FAX&^G4+{2`DG){%t%;}?i9Z;`2@?J
zg#p#n-J7;$B|M+3oxGjN&y|ja=Yf~PQ3{X{1^^=%prR9aT44}e96+OcMfJI`?}lhq
zWx4erx_(%#e4;cjBSfN(>C!s*agb3^|588*=7AooQNvnl@)HTtPa9o31E^;W+nh6Y
zDVeLz_)N)``}&9=U?P_y<5)`}q|_3cDFq~PuQQ*c3mSls0uczMNDud2N1#sFj>uD{
z*Y9r3ml+SbR$+Q(M;c9=N7Qbz-?I=|D9xFZWtP;3w0<Pvrm3;PwEaQ^3@5@`#Ktin
zm(4g7k-4v<U7K1ney(SOT+O6{Bl0mDhB1+zWl=yLkd|f1O=D)eB12ZqB>gj!2#b_8
zZo$zwJhU~E%3y%Tgewv3lHLtDJx}L}&5$W2ux{Nf0RWu{+#!OIy1Af8rgo-PxS^@G
zbU48jriAv8kg&>vPE};P-PBs!a&}V)D@8ht2g#lD6fU}9k$SZ+6Y8=Z#$kAH)6Aa(
zAfjeUOv#{LG^5a0Z`zdty@r%W4qt9QFUzI~T*C1J2^oPz#OqLoic%6POTx<I@jTDV
z)ztw59LNJ01(1mtK}w}zV^=pf-+lL&*1QOAM#|1C<Jggfr37*<1B<Z80Go~3?yz6J
zHn&y<#9*41X`Z<Z7$Nx@F|!B|BNKyc_q*NI)ek@ZrHBz4P&v=bvb15?AQdSUN!BjY
zOBHi1W1%AI5Y0*WG|dmE)9!Gadq9A+`dahRixeNm&B&#?p4~vrA5YVDvtdKRl$UxX
zNT>8)HruV#VOoxBQpIrhkN@K@wwnq>=ecD@Y^^*kem>)1#mts@f^cFaOm}m-d-?0l
z?vsE}^}qT%awuPX@wuu`(}b%WKGq&DC%k#FU;O&--EE$hFMdta1Xp)2nApvbA+w2+
zN|sUpVzPj_;nj;zPfOf=^5x<C_kTTHefi}VEaa|v6k1PTFn}Cl+`K)URd%-(hzC8+
zn?vPKUw@87OH)Khy<h$#H|j2^4&%6=n=K7gX=(KH!}RL)YbgvEmyXrVEuWP@VzP+S
zG|lretG#`9|IK&r?p}WU;>C-r>zmeE)A{%R-+%e?H^1KR_jez?xPLe<^U~Uq2>@_0
z>WYgG`RWCONVJNE2@$!JI;Rzs_c_Gfk@>LOZnoP#>oS8ebTO_aqq&sI!s2DZ<@)Ao
zs6(D#H#dh(t(@;wggY%Q?ZAKlg*d%8p~DmI87e6(rAU!JQ?7zDmJ;C>KqSJ_aaknu
zu!uSg>%hAv{CHn-C!u;Bf8jYSUy2MwcZ#1jdMWi<Dj~RO)22<Awk&Q(Tkdr_gPl0e
z1y78}6pEKZT+$#1Ahm$qO6!>=7_J&qT(g66CSR!&hym^`RXTb;pVvl#e6>wlx8d1v
zthP<z;f+`3ROW0Z`x8OR8d5}Q#GHXJXj$SkLWD{cBs6sZn3t)wN=(UC>)8lE0LWBG
zSRl-7+>GNWeaq1n;vii63KED^{7~*On3-8pxH7f2ERC7Z^Q3NVX+#2jnkN8ogBIo<
zM1sV_IF?d7Vr;hG9{|yEPN(&BTFp%}VUC&7;7L`_=X0Vj=b>iw2@x`RDv$Calv0G5
z5QV6a=)5#!@)*aVEfbnj7=l$U+}DwY2qIKP1gTar*L<klZ5)QpI8;Ffr*H%#$do5U
z!cuGAzF{1S6!Xlsi=~vdv^qFM2vN9!&>Ch&9lI`N7{>ei`=u!{Bl@y5wb(LW;FT0v
z5up<yQY}4i%1pBlH3bX@cS_=LID!*6dK+W})lzsI3KJgZ#hvonSW8#nNZ=z@=N!gi
z7+FGWF8l5HPD;}wb3sB~mSGr@Uge73G-=VD*uRSB00;;jqG>bqMLRbwE<tzseKJz9
zV6Ee3v;F2gshdF%1T!p6&C_Ew2@)d1h%_J%1U6LPZ1)CWtq~P9pO$56n)x>b#AT2=
z5*JwWZbhUH!^822;4zTMaGK`F)3VuN<x=Y?Qquhm5i{Sg)>6me@pP{2`&~5)QveXa
zLNb(L$a#R$6xlt(ODT7Ex9@-c5ir~-K<cn(u1qx|D4eCj>I|5Oz}<`6k3V_&`1pP-
zSZfKuGK?a{)f8ut3$)oyV|KgE%a31fwgtdMSjO#*R0$+i&-;|b8tz_4+2{?ml%>rL
zQtu4={aq<LBm`uOsCD@G<=vnD{5@q_gaCqN1WZ?_xKW|Im)kH81TzSrTtTjxH=Ksr
z&|P#&;tE&SpI+a-y8GzM2>8`s1ybE@56=gY?3*AmYK8+y4X^IL{Ez?hCq(E5=3*|p
z!*yW^_oT~buxp=cfQ3eI`Rw)YBI3ozzebR0j?-jc{_2;dh?yoQGdY&A@&qi<E$&{v
z9yWLLY_Gp)`~CHHw=0#e?{1sv@p!y{xc~0kZ$JO+)hDlBIl%Gp@!ikwkH@*S)xjO;
z$(Um$Np~0bged_KJkP!|j9cMkU6PQL^6J$qDJ3f$bn%8o7$G@RrK+mi?Ov;1-Q4Up
zBlg_4I@U@=kTxla`KywLrNR$NE%W~BkokbxY}jl{soVXb)XGvtqz@G7dIA{k2s~`O
z3}ZS{FtM5M57$@MH=E72lp&$T2zQEzT=E(d0pQiuP2SVCv{ZIp?{?SDpTqFQusg6&
zf_2)o>1m#3ZD(&MT^_=w0&TlF5xid}7pY|^Wk|P>=xPW7UEG~nB5=Pym|0extbgOU
zWfo!)mfYE3CqSg?pt#!_R$5`DI&ZgIDT5Rt?!QvKljZ~wF$}}i^|hO+ru&u;g^4*a
zgnTV)NxcV`A^=iLsYO0}6`OH*Jk25nF>bDgS_UqJ7cEDRrOQn@)Cw%+laF6G@Llt!
z4&m3=SDVdl9Jf-0x(b;t=H96^y}rGB{d$?si$NgLc01nP-PK{JwK5Bea4AGA!rF|b
zh}dq2AAj;mYijPLl$)FD{eFMAzTWK)X5G;x=j_x76p>o%cDH-=>eaj~$I}D=O!(sN
zqj4O^I&^k5f-t+AJLgVh9P91v^{ZDekzyQbxLqCgw>P_CpehkyMKD4UBEp5Ga$%-A
z$n{}&cXxAqI0DjUGu+-@jkOjgqF@0+pfChaK67>k<2VkrmLjqEIF2G^sDl(4YM~;`
zSW4QVJLNG?1OURa-EPNmM8sN$TI;ykq&Qxvraonzen^-@xFK%GalhTB0W%Z!_B0)p
zL7Ay=2sxuOxiAccYT?axI6guZ65(MeEJTFiYI+nY2$fkF1AHcsB2i0RU2p3s?M#W)
zU@1Z50n8NxTRV1(#~kRpr>te#4`3kqQ0q$C1H=LVr3`f#L?o@x9lX@?>eZ*`>2!R2
zEW)Ko6%wh;0}F#=8AdJ@fr*%ea~ZJRZ9n_`)jXXE^67<fyNAr7=22v*CEFBB&LguN
z_J_|te+}VRhhZ}c6CDmWo6Uiwaw%yW=i!(hUlalH;>F$H{lni>f?<?e%4V~<xxVEh
zBtx3|Aaa1IDoSDI%{czz%U|5xU760MaH(at+YQ6Uf-V}r07c|XDL{(tX7e|H`!@*2
zWZ|Af1WYxvdt$Ccq?(amF%0#$zx$0_Gg}A|zkTyaEJQd>=N!U@aTqt_JTH%rkEvTo
zA^CJZtEsEzPI+0Hl!4YhT13v%l+#sfGhw7}Wu~I8R-@e|m-xc8$kc0ZZRsQoZSJ15
zx$de&6dvYIl*=#_;fsf!_kDA!fiHRhSasA4K<Q!0A_0M!b)`#K8eD5<!~h_G^|Z4H
zKy@H4r4%3#k!6`%n_Fv1yiCuXZe<0S2FgRNs-`+WJls#G^ZWPj9v>gi=jrtqU+ngK
zRXsjDe*N_~U;Xi$>D+o`B3@dg=oNVlaUyW0bu@PMQ05ROOq&LPQp)QuUT?PBP76vO
z6|;<ZVhmRca0p0SfG~AkD1st05F_C-kB$wRJ7nbdI3i%m-*O609w5s=nKg^l1DdjN
z_Jr|6)vvFvUVZ#=n@{t6`nTWzfu+=8!&08?rMu;)>HkmFn>1UJB<XcJnVI_?-Vjq}
zR%TXqRRP^-G#VrYLM|x64TKwtaLIoT3eiKM8{JuzQ_S)1;BIEB%7vQWNQl&~;$_6U
z*9SAT?>ncj;}n0i`)`$bXTU@EFBbemx;tV*Q`6d7?X9o9p4ata^{KC`+clBh9s6O|
za;jh;DZcTD{=t@A|5e;%$W^pAL{c?k5@tYTmLUzKC_o08p~F_T8ySBM9(j!T1&9BS
z2k#HuMoXt}bPn50Brd`waTZ4OoMcKVG0k%>Ie~Yk!RU;$h~7Ihxp~P_N)BU(urTp%
zH^-*rbUH=s9EnuDb*rtb0gL3E=6TL(is-X2Pt%lB>e`p(+FN(TTAMo(vUxzFC`KmC
zLYyL?kaJ2*t+iU$*jDzgaoF$foW$Mdc@|F5Ta;9$l5!GB3}%<}X<gSCh_yDBK_a{?
z*W>YS+Rf_5oN_9ybpVgo@a6nuy_U=lElVN<GrhYzMuX1L)Sz|f9lKF&4b4=0ZA)Te
zCI{%fpHJs$nu#&z;^t;H@Aglpt13uJaVcJw<->>f>$)z>x~{8gu;9?lQ!dElNB|r;
z0W)J_0BEgUE|<&Y64{jKJ2A5Z<XngufE>c&mtvgm)>>Wax@xPvuQ4V7_i3I=90qMk
zx16&erNqbM!PL%|^N05zK0SQ|fSgm58x0`mNm61?xB6Tb+0VO@lUYBVKD~eY_Ikd6
z_MF7r89nE`n<oTnm-?rF{Jx)SUDss|F1jhWy0Z9uoWA+}H+PRm6k^7Co|rlMf)V>*
z7ABeJ$=t5jORe>Ky}DTt)5dYd?N!7HkwpXvbIypgEX(C`j?1ZJF>B0_b7l%?3`w4e
z7=V#TM3}j*>#|&1tIWjYW*s3Kc8tj8B$7f#f{2omBWP_yF5ulwqZ5zJ2*J-{A{qHd
zqLg#kc0dilRjXM?AZAfBBt{ZI0w<v1wPR)*nVJgT5fpsbW#jY>keQ`hFzv@#I{~zH
z1$5QwZt~&%o1sSU@dU)(ZnrGgWnGqKiKm9EF;lD6VPLekJO|abntPIbxtxhmhc&1(
zqMNqXRC}CVF%lBljdD!@0I4Kxx-5%(k8|9JI^gK*03w1$nuGDPHxh5@gBuVZK1W47
zP^Lf(KuBnt$_KYU843b7i`)<*jgc8|+;$(j#BD+wI35-WAA^ac*b}peI|L^lz;hAa
z&Uf8it@qwv|MJV-@$T^OP)ad?cW*x|*AIhI`x(uBV<pEr!4*i=85v`?gvbn>aI4h=
zGf&fQDmx@}0NIF#expvRf*Vt?x%GU0Qe`wFgt*qLRYYfSCkA$AS9Nk^q%!X$Wh9Ow
zI)p0_X-nX85Q_)shoXY1%zS@$pXXg|m81}t=PzD%H9`tDRzP;Z3_y~|hNuZO%68E1
zp1L01UA~rSAGe#eT5IoZZEflGWcAe6tM^4%?~e5R5lYE97bZ0yt_r-7JvTD;2111Y
zL1kf^cK35FdjzlKR%_G<#cdg=TVj2%KZg;@O*r!10^s0zY&mgDP<cdrkr0?d>=ff~
z&PhUOk0Y}KAt#Ey>vsAK@z9a6{$T*$?e;^QFp_!{=N2KFBqE{|BPK~nn1P5fmkIN<
zIZhxF#B!U%ZyeN^ks~+|QyzZ?Z)f47m~o?#keGQ>C8ES*?#fB-<)Qc1d)uh@mQotr
z20}@BctVL%O6#)5H?rFw2#g6*LfM+HWty1TO&yV#RiSlUs>P`nODdC;EGaPo*0w(0
zAI8!%Aa8L(Jf+&KH8=NKD}deI-NpHCTsF1$b!qO{)tYt#?A>Zt0Ez``%%9`P*<3$^
zw>EiKjHsfTN8_OrLvl$XM0;TbQyNirkd!v2uQQV{<s^wkhzxwn^6c^W#jEFP(XJ+Q
zS2beUBqiYH%rb;N+7NUudHV8IVySg$t%Ex`h_I=m;pNT6tC?BXts6O<Y~bjJhr{px
z@Lkyz3o$5!Y{ig*w@QeF!Uh12DW#|$jjrEDwjYtkfwGF!1$K4!286kkd7eVw9(cf8
z;{%Css6lR%P6x!X^G0_!0lD3bfXKk3^@IpW!{h-jEFc_1{di{$?~ywonDvdI;Jvqa
zeR`C}NeF)Bp}|2tH8-?P@~FB&wj<Si0~}G93LPvAW@BIO9@HZi(cTaRL8Y$OP!n!U
ze_EF7vRu}>gnExLP#UlWBHbLi1$Sm~a0ku_dT)qmfq3*zh_;=Y(#9DWK$ER1m{P`N
zRqeH2-MhAav(UrM7GXD;Zu~zclH(DoTH`ntz&4PXN3?Ztg47%xJY=O5vI<qLZB<nQ
zw=Hn=`85#Vhk-$~Z{gwb?sPg0jbG$m%m-QrHw6w5kI+3LQc8I$MUpJnYtDI^r}OFj
z_U)Umr?2N}Ivx)XkB>k9{3+nwezQ|;nwpK;I$T#BTD(aZKoT=CfJN<v5L@f_4-;;V
zmJyCchX|UHg>DDD)wR~^($-1<``tcf!T``~buch(t*z_Qy0)tIawSY6g-BQu4z3SV
zECUe&stXQkgT70uOa=(gpTA(j-G0AZs7!OpB{_xwHa2Y$Uw7Mhw`MqAka3kctN+F0
zi|P9Qu{o=`_H|uat!r;fZ)a`iURU&*#2@eJ@xk|dj4f<RsLq7yPE3gt07P?a^FH1z
zK=FZ(2<}En1PquEVE}Z3^$X|#hM)P8pJ9|+uV+g%n;~k56XQvNW}zpfA@<!qM?xmZ
zLM10jLM(_H8RGblbF^uFBnvm401+~>4AQJBI0dIaAZmC^^aUN(xA!Fwf<%+pVZ@(@
zK7elC3yhO_^?}x7bOy$;d<Wa$xO8)9S}g7W5Y=D<UV<|+VFX;vt##FI<BS~KtcL;}
zz-wCr**}~gu{aLLXg5Wu6$nid5kT!NCFs4kfJqu4N#rmQ5DBd{v%Xwwtha~=n}U1o
zorpw0t+m!`>#7?1<dCxl_t(rEuvQ&rr<=<i#;=cCdF6I2+B<kG^#OY1*M^$xw$&Ib
zK0-{AB3nA7uAAh}x<))APCp`H9q5nN8WHdI2RHAlB0z6F#0<SQq|h`Vi^Ml!rcJdZ
zNg~WydsiJuWh68;MAq8g|MIrg8e+H2%n?={NJ$><k7E*p*m@f>Wa7=EgGlJ+wKYO=
z2#<pe9_LL%f;iIqp8>9<wJ{S5A!Ijo&_Tv^a5oW-WCo%-plQcVTe&e<ptXwe0K6@f
znasmF{n<{qnWPOih}6IhsXIEM#1Z{~=?-2PBT}d|#!Vg+Y^2Q@<6D3_LM6h??&dVi
zp`kAvxp%;gD;#UF&=@d4@G+tX1)}u|80Q)UPEJ^B9jCUSt*>fEICR|`%MeY$nT(i_
z9KEiqo3W63?|q5J7`UT52J>lHIis%u>INurFS&OBZEdwyG1k{Z#61Sk2;^hq$_5|_
zMqylI0jC2uJ=UOO!RZFUUve-&4$xrl+FI4#z+Bx%M}9+IK!|T)$aM*2-t8hYTw9He
zxousnn{8`6phwGP1dCG6N4me9&&zs^D%aD~)6>(_-QC@O-aS5h6!~+l7EI<KBjdJY
z!Pr{**s+aE!Q!JdbLPRaKzC}@Qku(@%?#PK_sepHEwxL;!dVcsd9Pht)7B{Ely|Az
z9q;aesJF_f)~|KBo}X}CS0-xJ>gnw2`-evoj{{wxguw2&o9BrAw$^;TVHzmjpk^-2
zInUS2^7!yPNseEWiE^GosB^iTv=6vE0EP?|5eSIE_W)l{cUY?QOV_Hc_1>%MwbhHZ
zC#x6etB5_nhi4C#ixb6H*=i?dCnBW7{wTyGe7#=ndNo%-2O|Kz!8b!Ggb2~|=4f!m
zLvYMjZnv}rrTW*e->sHIrIeg9Ab{ERdTPxBI!oXX=Vu#ZC@P0>V4Q^Z`+3STmjoKp
zlNLu!G+2e>@6vcqArhfFWn{?(h<ja{#*-nY_sZ-@WDZ0I#N*Zm4i&tlgoM_6>+5Yx
zx>@azNQv11&BD}1*feJ>r5K=_)v8U~_94KnzT&Z6M{@V>1B<bn=ZVBj&!_A4y2M@c
zS+%igm4ho3mpKdPoO5C{TduXX7P5NT)&N@r+q+upA+!f#65(meU|y^Cc8!QfP%k1;
zVeSw=Yu<IN!ct1P6hv9q%d#xJkGj&f6&?!u9^WKTfPOe9W{w=@76NtchB)Y>+mbFW
zFa<+H6prq-xq9#2RS|*EQ57MeUUX||6X3e6=9ZJpQ(>lcStGo*RiAz9!VEbhQM>IW
zQsR=6_I^4&S=ZKTtll^Pl!kA<|M~jqtYOv}KGQK)H84QmANSolbO_@vI5}(v38Z+u
zFiT3pS%T2eTiw|EL8~2)ST}Mf`#jL3QVM{Z*IH}X(}l;zW4PS_!|4ztn48cdiq1oK
z4*~AC5!-@o5gmeF#Ie>_FxQQV5Q_yI1J>;^9z{VW&MCQjYZ^$-7{v_;|0qWp0s-Ne
zmNKW5LXsU_Sg<ip<ImHOn@$**SvZ+_cV%YR?xtdWMJ9AKWW)qW=0<^Y2p2~jmc}B%
zLf#S|FoK~`Le8d22yW`G2&Uel8I8B1Z4WDQh&K%b$?a}bwccB6E4pnyym*5;I3lw<
z`DV6?yC^nK0B+vh+JMyF)S(s^6N7b!a6-9^<y#~UplOY+MRYp0qe%pah6xf1p!e36
zW!cnkzJWVp&bu`_g1d<$=%C$!DM>-(7cah0Raa$VH9eg^rNkon+2h^a{k*Qt^k(MW
zJ|haB;OH8Lv&c7bO@y}x5!C?^o<3bf=DWKGvrgjcx~#3K^|)|@Q7?kn(Oa`#5pgQB
z<Q-4@`TjW)n|6X;myZbOro_N&1+TEGF4y&(9WhO8;Ar3g^Rzo2AHop6t{3gCwfZaj
zo@ihI03ZNKL_t(?h(A3&JwDtMQc8s-ZPz5u`~6&shE7WLseamyW^HhE0o^TE+nv?w
zyS%L0o0=}IHq%R6FV@c9R`gZGo<G>b5lT@aG&P_w1IA!NIL-4u(lH`g)z-SW_Z!Xe
z*9h+Tpe&{`xlGg4dpFZw8z8u~o1z$Qv*5vJCSpN=sqA;VT?~+u$fu|G+MBz=m`ufA
zWUz&I;(3>(lrrz8G?moW>$)rsZfFD+pxqn$bJN)nk|0fz_namo;6&H8yEgD}8d6+u
zL0B6)LJ<c-6yzCYA|~`z?b_AJ;-_vLdBffv#eo5gk|2<I)IC|Xt=)Q4h~({1mx9H(
z4cG^6MPk`F&D;$MSPg5BhDyK94-hdVbO2;AS!XdoNn*h6ttl>b$Vmwy`o1AgFpEtE
ztE)RO;k*;|1g>kh<yvd4n^<~`1Y$4HN5`2*;DWGV0t82@J!CVtw~?8-x|?IP5D_Gr
z(vp%$g5LY)7&Wta{>L2K%z{cidR&eU9zO=I-Mn`LQ=(wr=?#l^djb$q@4!S<h*>uL
zd%v;Uw$~YKk1vHjRB=Q&O_}4617NLdJm^L)#sDjP_~~tL4Q%Xvk;q)bgl^EEy?V7j
z%(lgUEMBHSI97qf&jtX*DVJ$oR{)Ja5Jz?KMY%fy4?Pl+n#X%FMh<Sn<Qee)IC>d-
z8wiFCIT!`-f|-b-#5`E*rZ-?hEOuiV=jas0{{Wn+5~9WEtDDmhx&UDOQ6vd%e9nbM
zOpVYCf`w^AT50NpW?@>4mks75F)T|d*J?oM-O&5kI043`X2CLue-b4`62ab@BbzsO
z5bY}%B9e1LWC8^M1Jj`=4XU+8H#fp@u^mQ4KyfER3v_v?<pKoSwOM>p0iB1~T!I4-
z76(Q`b7R0DSP8TBXcJk?B4agSKmhEBsIn=m21+?pO@OLeW4bsnE@N@cu^(0?<jAD?
zHhwfjH|t?)7{_~Y{tpO52yCi!yUvI#9?#$#MqFcp0Z5y|8a%9OMx`WXF@tH^KY#wx
z)h_2JN9eVkPpAEUKTY!L)#Hcvr@sAbw|*xh0RVkAx(_IRc&2YBCELK!tybOd9(ME5
zpgVLkpXd2vmnh~EQ7L(s($X(XCV(JWav{l*_w)V{nZT{qMF6yQ?zMP0L7|J)X0|R1
zkP}ZS5t0EN?(UCw_oEu_+Dg%2t&EAL2c!E}yTl=fJ?suSXGFK&d#y`K%W@r$5_1DX
zv+R)1>-|cwo?CBGPHWb$y{>2%*9Gk=L@%G|VP`qVN$(Bm6YXgt+3oJ{?w<odO5(`*
za%ru03tIbl#sydMX4Ye17M`a4R7&UGdIi9~t~kCOzjf+yBTF$80EkSv?51f~N(!{z
zvRoD&W_Y*A=zHL3qm!X((ZCK=MNY{_w>XH-5Jfp=G&LlEFbNU^<dhF7A5t#N=yn0T
zx_1~i#kSZb4hxP`jGH{=1elp;Vjwl(WOa4Z(UZm?Q+6Z<Qb0sX=FBKW6JkP6<meuD
z`e3%ZDh%N)+z2sogeOE9PypGy$DK9CcH6%Y35Rt9-5_=_z!>)Ogoq?byQ>;vaBl`D
zoR9#;-2l;%0gyNmCqM=Oq}=W5<LK&kn(u==fgG<P8qMzvaC<VMZ5?Y>H3+ef8<NMt
z7QkpYBeMt~N-nt8sJ48*Ff4RC3Lb+sh%%T+mL#s-SeaS9tH$H&Gn)G*2sbmKs7Wz1
z$Ki4Ozd<|L)(}QaQFDUNN61N{Xk>x=wg8lek`y|=`Tpm6UCg`%XUW~hn;8HxWqSF=
z^D-q1YbQEbC^{4k0Xam|aV&*M?j&3k9lWU-V)SJ#4q=&4yBQ!5BMEJ3)9AT`9ct^D
zZxzHb_hckSOoW(oiK%`{3EX;(&1LVlP59l+&_<z9&}A?ZVpV6|&CpD}g2e%Lycq~U
z%)rBkG}i8k$ldy&h2LVK<_>7i4&+9hN<hxtfmoQ6fhxFrC<exJ2$TSsSiqf0HWvjT
zN$f;bP24WvU?65dk|Qh-4>L6#FFI`z_aFcEs9_*E2CqCpMD$}DzIhSMl+Y2)v=gFX
zY&zMA5G4?q@w|?6aC6YE2p!OZy)*>cj)?4TB$Ak-g&B7T5t%|npobl4TMfkq#lf9~
zh+?RVx7iT5dBY&j$Kkeb%v&SC?2vNF^KKXH3pd|D4QQ>#3&Y*o26P5QZ$O+0C7K~b
zM3i^C!~MhRZndp~82Ba;db~dz_UZK0VXRBGc_Z3(FO5MKQItMm<59&H7{`G(Snr*A
zV(MnK6x;RMTXQp26_$D4O-#PZM1BT95tdAx4|mVYyhp%kDsSJtA=zQBzE*OWh^4KK
zDqw59YrD3q9FBK@oMk>7jwJ^^#q!i9?W*m1?H1l__ekM6qT9HZi0E)U-akB`gSjq#
zl_V+2y11F*P)947m9;;saEAh>&CSrO>8aIAuUBge*&>p^e6j8(kTf(vW6cy#KLhk4
z<@vK$^L%jgQj(c3^RCuKt$~gi!l;k?Hi%(NDew0C-Tp|(z#S<OvTIib7;*IBa~#HU
zM-g<O<MDpC+m&f9S%{#nwUpBPTC1uVg9lANJdH8i7}qrMSY!=?H<~FKI9T^MfhNZQ
z2!~w(InR>zDIG)-pph7J(Yhk&?d^*g2Cd;LGV90*S%8E%5do4CCPE$tm%(1(apBp3
zcnc#88j%o-gXc2WTDOO02LN&kB0iuYq{zb)6LAJ$2L?1C0wUM(T}MZOoHqiP*uW$Y
zZW1B^39^jJGJ=}I=e6?yz&JV(h?ICKA_&sJncWhaW_}x$2NXBXPymM|Vr&T{AySVN
zYV`6jvJ_~h@eUm&Y?hcN5+RF_h_{HQZd!}so<$^%+AJW5q}akRu}DH(%sh5}W6?rm
zJ$I8D`LDRG%px)nZ0226IZWr^sPQW!GY5~8h`M$&-qtJFdqa2cCV=bH^6Bk6?fn)U
ziwhu5Ls{&LZ@+l)^0D_u#HM|iK*@(53Jj2tQ^4cmkSh*H#x5d8q2r>$4lSzwfPf&=
zJQGX&zG%eEI;`;>{I-z+Vm5VjV3C`2Bv39!T?sVivZ~u+j<x_Tfd_e;V92=G$+i+{
zLsTL(qw(-WQ)L#GsUY$uX{BxZ6EonxC9R-)2Nt4Saz<j?@>eX$v>{;V2|{G+fP{>U
zW)_$iie)j8h?w^Ha>e=;02PZ-DKd&q!{He7WbM6IL`@W@Vdf){f=;N`bD?c0t3Eui
z0cQ&mo|-PY#e4~qfhH1RMi`Uscml`W-+N{D7<H%`AcQC_AZ443jN;!HhcISl+7gBL
z(jqJ2hUVl1?pfl1mVu%*w1r}NZ|D~54Kf_Ua0{WQNJ@x<__0}RQ3$)KnG%3n+v2rh
zKWA`3@o5_30aGQCX`ZKLij)0$Dz&z@w%wGD`?6lU#xDuLe9PbZO-+I{2rOgKW}!N`
zofx@l#558y86luAtE5y~RYa1M_xrtgbN1w#SwMuiNZ#!Zcctv&CQm7=Rmu~lscS1U
zF^6+ZnQ^UMm&^6(OxYj4{9-C2y`|dSySB9@X%#)bbM38(_DYf<APJ7le2A_T00HH!
zB2sc%gw$K_9o$fR>ULP+NEsX`XGCx7dRniizAn}mw{zn8+pp}fLj>!(IgU5qse=Qv
z$ZmhwAMWRQ7aw9uZJzh7t-Y<ScXw@lnBIv1ETX?YO^4(0#k@bL8n>pYwS~aCYj0Hn
zhx>BVGD3ipQqKGRKI%Pj$R{k*JTL1R8@Ou(_Aq*N8-OJ?MZ_GwpfNk-WZGij6jDL+
zjxii(bOb;a6sLkxkQ0CbtK@lE&JYJNW`v}mfB+zbWUfHKsYsfMCkJr^<U*X0llSW2
z5R(B6mYE_6kUOD?mpsMa6`)aKLE_#N(QX3WxDtj8kP>o679ftfH#6s=cs@5(Fh$pR
zxWsY|kbuoW05KOqlIRU05Mg2|s@=K*C<Kc<ZV9&-CIYY^!S+8Sj$)*56}vGi^N6#7
z0|Pn|B^C!#1ENHP!Iyz>1#Ys@a2+Cs$p;-#(oCF?8JXExq$iOjM08ua58MXFF`mHa
zB+QbKIi)Ow9Wm#%t=C)b3xhPL>W0y}agS}4{K`1FCC}B--P$JRLLEA1H$;}4BNo)u
z2p~&ZnR~0+mAYBCw?F)BO)Z498vsDTkP*lv+wXt(ZO*B-wn4H0KnME;0a$Kp0%lRQ
zTI)a^vsedrQ|<68+6@u|n7ihbA;K=|M8X6nqP^LeoAz)`0$^_)Q5=9gvxp-bP>il(
zhT&$a4aW8q$QjVl9WfCR#h)3c3G5K($_Aj|=1PDX`LYP*$7>#Zv|fnVk-^!zn>O<v
zXF*7gK&F6F96;4^EIa~PBSGAT+i{_*fqFB^`=PcYvS??-Xaka7&+^lcf9h&7-A{YU
z(>)>HB)e$ZO?$8IhHik?wYRo{gQ*isvz~X8g>Y&s`;Iqo%#U0VnrUBat?M#RGx0<z
z=NRY`#=JRBRsmp$n!`0^P5|K;HxMvGA(j+7!{IQ%&nafp2BCk{9-$#~bYx35j}mGG
z)8LkpHdRKA;HMd?Dge2&8zn6BZr4?b*Z|NCBYF&u=)`WlgWD~!;Ug*Aa@k8Nw@fvg
z<XrZL{c^pSJ0ZFGT32Rz_Uz%!>yL;OXBZ>KJi=X0TLL~p*V{QFhO-VGhxZ=!&70T%
z_AmcEP<JO=D-)-bMXH-WK6~8nci9_!bOAF}1_G4b;bEF)<`gH}xs<MJ$|aSl*2}dn
z)D<M<<XwA7-mLfKRPwHrSyJYd8NrMZwB=lK?k&5vwJU(RHgH8}gpf4jZZ{KAt2O5w
zzf{htrnH;#Q@fgVa82fi>i3?=fu}-A`e{AY_0*QddPQGFrf<GHeEsF(rk5+J^~j@a
zuL2@rnTchZ_nb0Ij?sOf1Ex}H$*nEEt(}LHc`$7#mwn2+c{*y>PPOZr$iXUjGp)V1
zpruBLF;4ps=y*8hoU|+CSfg<?AWP15y%28pxd16a*1m8|xf3}+DoJuKrOdI&yCHca
z>Eo(k!6z9hT!G{)Oc}Y56dP+aW==>9B-#Po5WMy78z|A-4M-+QX%;CE&?#gj;8dt)
zfO8<a0{FcRLc8R7%N;Nxd9<F8r!t+10Z6+7C=R$LI3jpQGb1R80;FYtfDGtB2}$B!
zaqBT`M+6{8U<XtO$rI6-Bs&BiQj+9eFB&^VSJ#1H0wX|i0G5IzK%!2LQO!y$DaxI}
z!u_nF0CX@U5Fyw~+`*4TB9X+*+Um_W+FJ(%M|Bb~;yf{DCL!cNfHO;y#4N4Vu*Gla
zs~D_VPDLbOpTq&qh`)=4Mq6y8hE<Ib0f7m%_xQ&EqN0E1v@ypbB6jJYqqgL#>P#um
z+i{7Rc}g4wAyWf$a(MdiX*pfZyf=-MgPLwxZD;nczy0#r<K5DF4E%{c6W_+QVAics
z5;us>;f;5uo!iL1j>^cOf)8UnZYiu=|2YDR*rI;CasMJ0!orBaDH#wbicsuqRac_i
z?W(GDD?x_G5{b}xED>NF7LS{o5gDA<^&0D8^Il3(Xp$$waeh1&8Gy*iR1uTv#Wvb5
zSS&jj+*|9y3DB8u<yew5x9h3Zg@uN02aQEi5@PYsxjaW8B+?FuB!B;Re{bfB`~UF2
zyd1>sk#ABTm}_<Kh=yQ)`u@LPFN=@t40qW5^?&?o#G|6dFunkX(P%KU_VbT_emb2l
zr_;PU91f2lm*4*Wxw^B1>NaEt=-S7DoEw5)o}OA=m!;OVBTq6te*3$x;sXtTPCR-?
zx6@-i;>-11+X{fp$&stt;rVk!iQ<q0U?kLF<Z=nkOna+AB(6;n6ER4>7s(WQ&h2Pt
z6S2nS=<W&{R4wSuB<(2CRQ3P_I1C`QdN4{;lD;g2n3L4%W^F2En#%RsMtg4vhUu2F
zg3X3>J7M~q*fw(nk%R<KPoK=J<m^CdIi;LZPbsC89v&W^Jv_kjUJJ6fM5sW!-QBA%
zzM7^vrEI2%yxSejntNLo=0x3CwSyTlf*LVS0!^E?hJmq05+MLqttsW4OI<HexUJn)
zdjkLk?B-RqrnDE~)|v>L_1JF42a>a-ET$E!@0uNr3ZNjW8#7+DKh^71TO+JQdfb2g
zhu`B|^z^Bv*2C>IP6)g<O$ms7x8J8UiDXGB7HUnZNa7^Sm=j&Qxpz~KBP$|Nu=|H&
zP9>*8h?IndX3WdQ$PTXSDpKoW+90?ih>9Qr(=_dNyMQxnome2kEK+i+Iayyr-x1#~
z5vdxH%)8^m{c}l_V;00g$zdSU?$$evZ+~-%cADln?T)F;Fj$YsOlHC<6Q>4&pd5qf
zA<!iSo=Pf`XCT>{P)u$};z$nEyIOCz{B2Y>RaJzL#0<90L1Y6tWHRo-Y!8wrkOPZ^
zKNkSa(E*Xf5e?8B060RzuIkptivxz*izPEBM{-~Q24n{#me`sM*`8K%!ciJgM8K4Y
z8IYr@K5{NB%z{7~pkuwM#=y4`T!di(#Uf$`$dXcIn{N}fXo#yh8WM1D!M2tvI02$?
zmhExh$51zFjq2u(1n3)xQ=-0vgjtfMBuQG0K#9iNt!vLYnQ1Ol&gpint7bGvj??9Q
z_7<e>UsYm)w;oAajITcWRI*7!$zAKRynpkqwgxtmVxv<wrsgi0zy0<%H<suK{f_=-
zcL!HMHc4{?(m!);+_r2ZhcwPriCE1U(bPav%1O=0Af@qx%xp@IjF?(m-4#H$Q&I;o
zW{&6_GLMlU5=%BWhg8=N(1}phVu?ctj0BDrsrA8eKq4^|b9w#x?YexdwF;+c&b!@i
zf4nC|HK!0TjfpZ6k&%3OT3-MBlUWl%Q`jHo!{IO=($<^#AHCp`*4qE|``2%O`JR)d
zB)k3oaNIvWzHqnRl|dblnF7oXm};$0=d0A(99SLi?jPVrDT?UwsAnO90qFI5{rShA
zR4tNqX6f+o7iHQL$$%%q&`CxdhS1#Go7ca*dHu`fa@F2He)xp^{)=z^Hhzi-+sM<y
zt#5+>iRtaz*Z=Jw|MA_sx7z)DuE5iGfA~+o`>P2!5mM_7F!F4J27w3&*6Q_-|M(Br
z<=UDt%UZo0zy4pp`1gT{iIbVQOI@WqA|WI7y8iUz58B)Le7;;3<~h$V|Mq|WjyQvL
zCXal|X7+YwBy?c>@rNIJ)At`fT$f6ik>|hq>;EKDg!8ZmnKFwSG4p=6^SZWL-C9oM
z$_PV~K--igLhtmeob8Ri6uYSSe7kj1CBow|=Pd8vzB!#vhr>%X6OmF%Yi*w97cXCa
z@x>R9_XmHf{5JnG(em?B+w~8B^X1`i$C6V@W&{ABo>J;f=A3b!J>kzkeEjtBV_{0d
zgv5;8TRlHrE*ECbB{N|ljgsV?a!yIGEPVR#_Wf=*3%*ocRcr5cDu=qPvX||qj?>~n
zlig1R*QH+8-AebE3X+)#(N){It*2#ChsL-HfBn~gxqtSs_8K^Q^Zx1S<8@ix;c~rp
z^}G9Lxg4iySIUlposXOCGbLu8ree09PaiMmlR5O>R5hn*ny}>EygQUqB*m<i2#vjg
zu2U<$<>lh1%cb>R*EN*D)6Q5Zmi){VOJPC>Ga?e<-8?PV^Z9(%)^CTADdp$SUmg#4
z(=;;^vkBwy&*rSUDoL~De7S6XdKZ?Ii|n3d5+ufPWIL{90Fso~mAmQr>8aLg=J5-V
z$o=!3q#esloN;?y5d_sa0ZDKD!-x0Ul{UYEJHB}J)pRJ#CI0(}9MV;YogB-$+WFI`
z<$84hH5KBV^4;U}QiMoC{6j3nDV8`$LM&~y^V5^|+O@lbBq79kcRWn@$P6f|VBu~+
zB9dS(_pVPLKi0N#7(T$6xlH>~_Oa{rF_|QXaKB|_amUN~T9?J$bIt(JO?Uf4PKXqr
zLjqt&MkFL-$te{iI)Az>%fdXy62dH*GTm4sOe`cU#Jz*$Ii=$Ew65!Qxe~${E|M24
zh>iqXVgnH<FsI&2DbwZj^z`&p*98HXFlPbS&GVE73zfD8Ep#&?7EY4V>FMcwI`!V&
zRfI~(#5_+^to&}-{$LCMVoC`JFU#`g$DgmKi#V&Q#!cvEU|}rcL|=UUl9+0%(F?D&
zef)H~E{nUSByoKn?)FoOeU&n?skOG1*?`>n^_x%E^GDv;2sx#k^TYEO5hWN|hDe!-
zFtL$bF71zh{9{g7O77a{Y1-{}56_;#xWZ-YV1gq6Gitgl`o};1tLqiXQ<9X@@p$~=
z%dd#T)6B#YIb<S2bmVkh?WdnV^!ka(03cnGnePwxHZUOGdynSQAj=37mv`^Z%k@2?
ziO9!K>9^l~x7#1VEcRl|OuR9d5Rqu!-=8o40$4?swN*7e9_~#Q!4PS)FQayKa7k&}
z9Ywodm-g(7?{@pcmR}gp|Cl6iGXwkh=~G?X+SXdvw)C}?mtQ{@nWAXrpGig|sI0y9
zc3H01b*;75*4A}ZbNa*Ga~?ujjR1}67WGA7B4T*`%g;eaYuZ$Mt?R?HS15@&fvFE>
zWS|5h?{1Fv`t_T4AKuqmwduO{+S2bH{~d7-yuNwIff8cfX4lO4=Jo5huV2@7xn7sn
zdaWO)y|7FvO|31!VBKODONhZU6XK^&A7B6Y!}|{(TW#x7yYYF!zxfaUhvW<toGtKZ
zemN_15`KKVfBWV&k>`{c`4@dRvduJ55OLOW3zZH==FJwo0cKily){I*zq@CmuKND%
zyRX0b3bcz!j<+F9cXxL$U%q^Hx3l!g?h=4qub0=Kmj4O3wSK&NxTQSYyND!~BneA_
z<UjuS!^ig@_tW%nf4|?)?uewU>&G{5mao3Ozq<!FB1%a#r@C+{36uSJJ%9hN|9pRU
z|KjoSaNL7gVp417oe)bZv1Z?>6hMe2i4tAje%$Y#WuXY)ySDSXUY5m}6i_ogeEaqN
z7cY>4g^x&3rt<FnyXCsn)~?q@%}=MxzuiAh(^N_Z#9)Klxb-O~sZ9Ib?)%H>m!E%*
zTduWQ%I?*xB;k4!N=Zb5QSR23-b<@_p38f%H*en5T5Da+q2&DX)t3OS+EXq$r&5X#
zp<Arti8!UCy}$nXm)2VBta8qW!|`{&OF2hHS(pteyvWK-MB;$grT^*AKV7fa@QLkr
z`+0vXcVA6+q1qisY_U-Zb3{tHUh&UA{Ph0)r)8<Cw%hM^hr?eVzc52pC-D%G4c8zG
zOCm|#{imN^e|Z1y>3k-lX`T-I<Kh10eVQod+Z&$<5TbHRLTjym`tuLJ{PK(TPRzoz
zn|6QoH-~ZviW(zDU2=qK0uy*$)_?w&?|=E}$KKn1KTl;U)AY@6f4jSTnOLG7Jp@w>
zY$JqmUDiMT@t=P9@rT4b&+{~uX)53S?hobg$Rts;i+G458W4$)r0dfE%YXTYKmYm9
zUF*x2FCHK6Qchoe^_%CrV-$5GY6~G(#}uH!>$3jyKmW_ScW-mf0G@L$C4cqJx6>hB
z2h1dlj6eY{O;U26)!<+M^-mu@yelOMBQuwI`tr*!_eV5y5gHxPh?TgK2m!6N|I<JH
z%k^?9r7-z!p6>3B-+c3%5vE~@SlX7224YUBT(0Z?`~Uq{a4T6-l2Y>FaQN=K-||+4
zzx9cG?}9P<PT&9d%lH57zrQ*>21c=4bXq*JHb6G*r{^yoeG_$w$XfO9|NftATXyrD
zazccZ<uCGghkYDwsH)<C(fUZjBfWX^;r;8M=1Gc>5DW6%-BG6lLjq5zq+*hoDdX_l
zlNy{qwI^RwLKa-EOKWX^Jd|OnbTbDc->eMaE_qs3TFwhgPl;15l2Wa;%!jSW649+u
zc|bx*B~N#k(@De#ftt3eYDPXRDYVtVMo$6yG|z|Q!}aoHP+hxMxLy|r7vX5bMonhx
zJtGg((bQ@;_jPUSx;jP?ceG?#1l%b$_u}(B%e%KvA3yc~_`m($!$BXucN?`%cW^K!
z?6rS*|E~3Fs;#y+uRmUv-T(fdzc9eqo7rgj;LXvfrmeLP@82)WvMkqit)D)wF8Sfv
zi<EP`>Fsm)eyqNk$#kjfiV(9n-0hFL$l>AHJnt<48!-s7;A{XOw%#w-PwsX-Us`W<
z?bhYvsUGiM%=0d%f|0HcjBga3hHAop{^`e@($l9;y|><7JM9mT$GiJdN^f<OnXt#b
z&P2cj`r{9OE=kY~-Ox?DBkpr5cX#)Z?sRuS2IJm<iL(eNIPA-EJ-Peo^mMtL<82h3
zig*{|jW3PS(+JQb1qEUZVq#cGfsIWWa;+;9A#(2sfH{}M{OsAYySux)W9c=2EVA3p
zW{N!JQfRXWj1iJiPN^XYGo{p)<@EHVW>2TH2l!)-Na3=6eEt6QFRxy`91Wb!UXXJp
zv(wYZ-r9!`?|=O1hu`LJYh6`)A<B8WyMLJHX&l#ro3==7qA;ixN^=NyOq=%lX}xM&
zYc*kGggJlt+i&t*TI&vu1kBX00rpzEs%bYvQx#50$~Lqge9I90GSgIYZ#{A!y=&{O
zcST&)G?y$%rZOc7+mo2~z#b7(E+q(m+N)|;Rq$cp0fe0Met(#z!U%4ba>;#dP29MY
zY-Z8-a7V-*Vb@Y-j`PuxuN;SpfzVaQr_0(_?P|Siv*ptKyH-O?3j-z<vXeLp9yls9
zud9B1y0m5rOlhvo4QSjlH{l~9OCn}u1|(HoYr9;oESyAqyjv1*TxPc)BtQll!s%Mu
z>FIPjop-xk&eED*uh(a>{~IOg8?ly=nM9D&vi1+3PRsSuySBNnb-iBK82b%xCDZ6W
zATlT7RPv;b>(VOJ-mSM@>$+UmXyo|~l@K`>BxC_(&e?#LrJc@Cp&q?E{ue9`001BW
zNkl<Z9=a-Qq(d6N93wK4i-e$LcE`)*+Pj7@)J#<s9EBu_#9fDj^hwOhl2R(I_2s&l
zwlXDgfdy{5Xc39SU>Kz{kX)opECQhm(~dyvT9;+1wT`{7Z`8Cg7$Zp{DKSe<MYY8+
zJv`;(+>~h(KQP3pX2_cnyLodzwFS~VN(TrUDKQ34^zzkXN}{f6#!N`);JHjyn>wO8
zGphM@SqvOUm`>fiH$aD+GCBzH<KeEq`!pLCC2Gcq_@Pz!<Wt3Rp)$>f1MG@TrqND9
z%%yNH%hT1}#WCXOy_=cI4SUOsJg7EElylh~j!z#ysC9EyTP~N}S|HJsK9}~#RF#?L
z-EOx(zWy0%>q!7WYHjD!<(MZ1Q|k%J?bAjCVk*<LKODaQzPq)Q(H$<A>$+A+Dik3k
zW0GxKgn+O=9**}9zx?>gL8Hukxm@>$dn5<202aic0*TNt=PXMl$MWLUs~CR=!YYzV
z<~Qb`uS+{UUCbPSwBh^r?cCP8XU_xe<MCmV3?xjvsFFZWbzOqA@!{Rm>o?1H|L!mE
zpFNMan%nqwnZ>ln2@Ns2nnxK44M0eC4~JLJUwuKGtT&9wj&1BK8V>ZjF7MvH4XO3z
za=o5N@$uos%T%V|m5eZhk#QW$6A`V;QrC69pK4!Qt=Ee#YyO)rz6u&cun(AJtixhr
zER;Ca>&i%OYQ5L%+Pyq`@x}glyt})<Ua!H-0z+^NA`dYzQS0mX-~V}@r;i_>2yX^i
z+{!JVZMg8Ob|3&SjUJ49(CR6dl(M8G>bS1gl%#88W?@!hPWe7wzu6tEuB-M224&tK
zkN49wr6k~p3~p}B+A*bMDH+PgcbDE30GjHj(}{@Es}~%_y#Dd+Pv3w1&2L`3d;xA8
zPBKZLY)IGZ6#-TC<HwKx@b^p5dhhPPy1#qeAMbLK$S=Bs_9nt2geuncFwN-LThrE;
zbv?D^sje#21$*M>-~OiD9aOuyq8qv=mUHh61F;yZ6$&Ll?22&c6e5XHk~G3j(A`4$
zOOby82f$oP$t9<pl1x*UI0^;KER7}SoViE0GRQ*;kWvcX(>%{PPi2}?N(c^a(_FNR
z_T<Vrm3SfD&dd-g(p75eU|D!91KkloSd!$}qN>;HvbZ6#Pm&PXqnfY1qbDIFcUKya
zYA7X5^VHqCdNZi%tvev6G>$6c0voT!aTFyfXJq1(SP~K$P*dZSWABAT5JC3QU=HLx
zP4isJWR9)b^|}I)B(Uv>l|}G#H8zT{JP?j4^^OL-RAo_M2IQd3#yR>HgF!@gBw|69
zGVPF(YEy%?bt2L@okpRJP`zPxIN+%wGR-rIq?}vp*Xx=~URwhXDNneKag$LBb0$tx
znGc5}({Q+|x=7#~VLYpRyi<kQ$q<qZnbI8a%icBmG(o4ixnsv#1cEq{B&D2-NTP8i
zB4S_x$HH+tV!#`An@|AYaCao;T2~@eGiZ&O)^(YtNqcvQt8_~_xdVWR9QOMTcIp)X
zGl`*Dq>c!Pbl#=A`vYwB)DU~;oc8<avRqoPW<rc=dR^95*HWmrmB@$_A-Ix}5&&H5
zU1x$xs*xEEIODp0dfS*K6;7g4nIG@*FzsJH^C_Y5u1q<VU(QR(IL(6CYwdNdTjf%T
zBt{nT>%<Y*!{g&0|M4G$`($Xwt@YYkZI#muVBm%<L4u57BoIiJr^|xAPK6A-G+mbE
z9tqH+k%OaZ?*M2<#FVG0n`_sggD&e@TRjju7}MyEf;n;=P*ch&l~j9Aqy)UKH5hP-
z9k97af|w&d9p_f^fBxV952xw*%P#@Z$b-&8l2FOjo5o9CCAInZGR+U#?b)kDyN_l6
zaDRWlvHB=hQ|^io=d!|SPJr{><Fz_5xcK4m@wb2RZ+82=2iYu!iAV;68cHO9eyyF;
zynHwrPVe5IPs_Xi{D1xD<K3NsBax{i5OM<0pqCQTZkp;;o=&HxuvGi>R8MD=13$ia
zG4FTUdYp)iytq{)4hPP)bwU(EUHj9g%k>1S(wD#a4UTmRqLZMw_NZ+zbLK+0ig4(j
z&X@D~Tu-b1)!%-@N!E2GrkEeZ#M>R?xjSV(pHF}HcmMV7?ueA!lL1DE;s&?b*774;
z8c(Bb96fqc#FR15(<H(vWpp%CCNzU2sY|N3PSdpC?}eCA&*$^HE+3zsx|&RR+RZ76
zFh{#dp^K1q7G`AzD$BA2p=_<IDb(6n<mK~679(2v<;~k4|MYNwmy*PX8Z1EY)LL`5
z^Z9Z)T;BZhdYb3`{_*kg#p8>YW!gs%-%ZWB{{K|H$*(Qhb>_Fay(3P0?`yNqBvT|M
zQW90_4ci3|T=u|Y{{bHO4>VvH1`JIM3x)?S38hlWsuCqp$?P-Vd$&91M8sZ=2W!WD
zS#LmqNoMA~=S1win(zC4R(0W_4xnfe^L&{?cy2l`56g7X#RwXq6&{~m@18vYVQ@FI
zBqx!>&|+&?xlYTns5^p3?6x}*D#GDrs)XoWnCik<icDunL8<jRAQY953(Hsw5in6H
z0st1yOr^+ZRhQX3opJyHj7-R-4%_YScsOo%`&x>K00f2$vlPh%*gB+wl=b+Ub?>g>
zS_KJ6B;(%_Rs)DsiXcL3Ixh+UKH)fSa>ZjhH*g5H5`77$Q(nNOlyMl6FK8Ciyr>y*
zN@0_*+4G6ffgq1}Dy4GfHzR8EX|Wwpk&>7qfJfhdPk$n0CK>CvI~>eoX=(vnY7v{4
zCELS7M9kfWlgLCQA}LZS8}6y8npr$6qsI><AS<^oPc|WD;yR2hWm%SGo=kPW+gK8d
zx-^&(fmu4(vJ=|54&!FG35>J@t6FP%IbX~S0@kYNF|gSqyhuqnWg1h>y;i7DlaH9{
zVrE>ioz$bwnKzp;u_{f~LWih`c)3ivG};lYM&#TLV}MZRGj6Z0jt_TldMFuzskNqv
zP&vEMEK2$Wf{4a(EF$B$xxc*)H&-lGnE8A@9}WjVpml871LdGU?ZYq*<7Szrd-p*K
z0@hLq!hPN!#&_O-K_U(j0p`F-o@d@44&T4NnWhO~8ODK_+cJZ@sd^wt&Uyvhuq~%o
zHxFNa*S>pGCk6F1#exF?0vaGWEWiXJ_ut>rZdks4wR!ObcO#B<lsZpSYoW$lA2-`=
zYpsXixFI^TGiAy+m>G-g4+jT2ou>c-8s?>4=J~mZyAgOYKsx>zARqk0{?OEy>5N#p
za8qrTeA%FmSm?0$o(_qy-ECOpa%obMgO<EuCjvr4mH_K(W&+R{YI*kT$(LUYOzm*k
z?Y6ta;aE#03?N6)HB!KHb3}ylyZ`FXNLaWK;lt?^lCEKPvt_<OPY}~__iX><17gB}
zrtq`LSxOyB%FPYHEf7OWbtfdj*bw=!@!$WWXQ%UNx-3XTv-;xYd#Q==um}WV3`q)#
zlr2*T1I_%wk2cTVnWm}TKg@=k4?g;29JhoVoLO>+$QVLc5RC+w>UM9}FFwKH*;Vty
z%jL4*`yc-Hlc!JDAs=8Ma{+X6CYA^hCg$-czw>)veeq=(u0Qzj!}H{2^W^2b?+(Mz
zO`iziKrHMkB7{Q`2ao;L_3fKii+Vu4zf3Z0fAr%|ce~v%3`?8c-$pP-5CkI^k9Ko&
zdw+j7&-3AUooz`(BCf#RZqR*gh~ENEeI=3*G9hr~tE*$Jbr^>EblGl4vz8qgA_((l
z7)mMbet&;+dvo*USKqw8IWLBveEi8Uj5$c_rFkHC3PNgkO43ZVEvJWzHaGKHH=lm`
z=``Ijg)KL)zy0$4k3K5b*8mO?h1iOCYv<GX^_!bznUCk=v@AgU{)aDLzWd>BcVrgg
zB!AL8r>B%%8Gz5r^6huuKKo#cu2Y*P*GAEVC-mXCKfLpT$HCJK9#9O}k<Nyf_}yn8
zJj~PUhue0U?{qP4r4(k=Hbpcy=>aI@;7S-wu-S~+YN+ZwFX6Z>w%cvXP(-Ar-8I(-
zl>A;0VOQRaV;$-=PfJq>n5SvG-5vJFakCl6k$XfVLRjCXvxF2%$gA11%;2C+MabRS
zG8f?pLiClg^429s2+W)ec2!$4^27~%ZgUWfK_v`5Qv~!9p+ta$B4XA8BeTm+r*jdm
zMWiIjfjfyAAz2bcJd7JIgGB_&{pr>Mub+f^K+f$~XVoKBYTba4l%i&fskfGEdG}!E
zQiX_%2obLZWFr1KH|6QzYL^Cq$Ezz<Cn6>gf@FF2eIg=JCb5^oWt!*dd~uIb3R62@
zCW!o?I;$a50&}NRiquke+l>?sGbd`TshX-Wk`N;V=NXH60aFe+ORd8&T0~nG7GkD(
zUOb~rg%kGKQ>!Rhdoc`EN-0HDRdvZY0b<T$N|>`p?$eV1!ypV69>>k$a8NY^uSGz;
zQ7Tx0h<kmsZkiYgB!s2bI&Ox`bP>j3D1e@V`EX;AoUM15@_O!-QjW*t_4W1FUwyT>
zEsNDsOySw}{@r)p+ij%|g^T1D`zS)HwbnsO;oDnHIC(9Dt7Zq64l|Arh4bq--+lY~
z{Pinb6c%$;Vb0`|jzdmqV(tsWuvtvH+)r?GlIy*0%iet_a&BjU%m)nUaI|o@B5wm8
zh>!_|VcZPQo?TB9T^%>2@bR$Qj2j}}j3Y}0qD=8g88sp@(J<5>fBJD-&YOYL)cfSg
zvr<a->C6aWs+P?VVF<xtzx~lCAD=HzHe)#+kK<VP`#p;w2A~nN2r`QRW?~`_ikB~6
z{P7?E;ZVWd>QMH(eJLdnk<oolp*Rz3^d+*8)L|I%IL@Ovvra>VivVD0&CL*S^h8tn
z7`Ts!fYh5nxbQ|*#PkuNnwwxEtXte(r*Q_E3igr{2=mq_kb%WYL?$>O;<NFcST$y+
z^AthEJ)=}r5t%acH3&$gYyk`bj^oSUJN_tlLQMl{D0NrIp$8TcAtxxXK!ivI-x0<*
zJbm%f-~I6NyK~!Zj~)b4_qzi#sVP1dpOHO85fKb`ke~hHPj7Bsefa4g%#+Ry_J`*m
ze)Q?_`f6o6V@HKVdh0g?M7VtT@o)XN|NS7Pwne}D{^rXszU?&KWHBJBKgM$5ny|Cl
zJv#V4F%@+jH=E5k43($${(CQ(zzmp>k%n4_Va%cKd^&&m#TTz{X4$>-(_g;xNB`x2
zz1fUhhsVIB%-Rcg;SyyeD$iej@QYvm(f!>SfQgH$ee%i2pMLVr-~a8uoi6vK`rY@R
zfAjf!yX^o3rIfJ3G|r|U{^+MyPv47(tE+1w6dr!|+rPg*T$fUr2{3@!6)2bK$XJG8
zK0bYR_rYnt-Z!|P8yll?X@bMm@%r7Db-zO*2yloBR4n3VkyG0=KGwsX5%3aEp5L)=
zUc4v*q4T9JrB+L{f;S-`?66D`dH(#xIBw79g}DIWcE9`4r$5<mx7$r03}gzBK_ZAz
zh(gMT@4ruh=kqxNJ%U7j{)^vx|AY4tco;{5L_sBKoS3MV$^<W;zxd@Z|KRTK4p&O>
z@p!m8?28a#2qB^aI3fWWLO^H{*lmW7K6v-pvnSfDnN64JaM+In3N@yDv<!eCB*G(>
zTrV;4)%DeH|NN)!L^53FMku@8P6`)6reKboC?f`~GR|7ZPk-{W7cbwtzkhghdsk~c
z9FI986(Qm7l3ERy4ggZ5HM+ij`X_(-=hL*DPG@%;#^Kqs7u)S-I}XUq1aBeO1XXx}
z*lac*e)Mq!y8GoaMfla#@tt?x-HgLH2(b$%WhxT%A<T#{l=AZBi$D9bKR-P@n476y
zT^(M$c)8h(V-@1=qDgsK1ZJaOYkB(Y=}&+1>E-+$vuwBH)$y=99QTL)W~j(m1c@o*
z*ND(rm{>$!zI^eA|LPAPP7iJl2*<1A%Xi;7?Dt#;k#QI|KUj)GCQH^*KKS5$wRU>A
zkBD(ITpf>PsMps|#&ImQj>C`!D(>448-}42esX>F@h2aJ2SrGs{eFA><a)c^j^h}Z
z`}pp$WQK68wQR=m`gr{Gw>|}MAs~eP{&015z1tm1DejQo3KsN8v@J19DSUN(1ptdS
zWDa)%xO(wqcfDsYVj+=I3ld2YAY|lmtWTdD0Y138-l^GGYprrTZ1a9%L|2W)UcY(s
z`qy8^X{L0o1_aV#MqQ|e9*GZyu5t3fO!}Ie&#gV2d@NT3{^2K|#J<YaZrE(N$Y#4?
z=9~-zXm~VNX715l82iKUCx80;!eH9Qp%S48ms<0N3ex~^b41GB5rFRxn_v9=X8_6s
z5zb7t)Lz=6wfU0Hbj;N*QH0ehKmWx~!!`Ho?w;73a1T&*M`U#;V<jR8q8LVb=iL|J
znhKtd2L}LOpvSt{(t?Qd4Z*+qyU%JJw%d)FFUuU@Jxhczk<5r_YFVguK>*4s)5XUq
zdk=GST+=Zl0!WDab(;lk!kpLp$+NA=`CPd7dKr4eXsLs#sVV>gAxjC*0b8fQn6)$l
zKT<DpjAaoB%px9MO6|0C4+PJS4gNC%WhCsv-C3%+uTG`%*69W2VHsZE1wO7_p=S|@
z9*JumP)ZKc%zC;_So5UGLj+h`F5!m2_Ye1f`IrCK-~7#gc(}iq`6KP7&#sa9G4bvZ
zkM$U7jQ;fc@ZksV4@0TLaC3Y5H~-!La6BH}Q;y+8bUYs4dG|d;zyI!^|KGp(Uv6IC
z%JHM8AN}_8_dX;XvZ4oCZSt<u<%I4`VAfijbJU*(M*yy471GcC>2Lqj-~QD&4)ZLs
zdH;|8{J%Ipc?xLSn%M#o52uG5){WzsbnH^baU6+C?l}>{T$jtq+N8_bU6*;D=H-04
z#G)}T^XX!476ueDR%9lmG6*A5__)OQ`ix)Rpcx=utbKQX^P8LRrUA$IUyd)IjfW>(
zw?w55gOm!1A`g$S@P^<Bp)KRtm`i0T+ud&5>^I{csW20<KsXb)HEqi>pTb*s1G8zK
zATk7|Hn(Bij=MbsJq`&O0mA3Yxh<y%g-#0bmeM%P0FTH~yqgjFc9dE<!dhFF^F?(w
z*KkwQ@B~6fxFPX4j%6r-EK+J2>QHN`?tZykqSF#00@U0*ScX6XsJq>9cYGpcAg;Z0
z6(PdbmdkXqwj@4}h&;?Zh`5x>Qf1fx3L+N~=FF~lZA)uY*c3jin&k)&Agw;7lyTgX
z6d>vGCB55Dr~S!v0asNeqI7-KTFq=2H&RDTbupK4H`VlTyUhrS;M_NJ9^thL0F%`7
z66P3PAdxU<b8pLhah<}nFtA9Gk}Ux<2Z{%|lLH_LbW5w7wae*Yn$G5Gt)=yaMY<20
z1i1tVb4@UHkB|;;^L)NM%=5V|b1zVYvD=0!a0$m!YHAYFVucW{^K?F2n_8Oz06nBo
zuFf+kEA6!r0T`u}T1!~8Hk}_HPNxSZ1n_hcF%vN+?Xsz+DK&?srB-*poaa}sUOhaV
z=eDG7SydTf7(_6HVl$Sj<1W|srHF_`xN19{9^P`e0FptG`Gbto?w6a-U!T5ujf?kD
z^D4{9OQB2MkSJ;60R@Qz7}6vNDd2E)7&xvs{NhM2j=bN<W<;R?BrX8LGNcg;0z?W6
znwhocrX6k-mU77e03ZO#>&@Jmb0R_E9^hf>t`SN-3p;NO$`qp27()=i#3>?)P=t<H
zS$R3=fy|PY_s2uIM|G(Zghz949lrz6!-2Zvh0IrH0in$Ef=D+vOY{U?Gu4&-&;i$Z
z&oPPhFg5VRd1jtLbOJ!;_r498i5{#7gq_TpmQnyjY-;Nblbyp`?@eAe+AN_Y8SY5T
z7H@4iDIJCW|L-oH%$=v?U@$WXAzLPFP{x=dQYIyOm?NxMN<qqPx)72)vfpxP2SkkM
zfQ*?<?Z`~Xi0G2NKBZ?o6EPo?KA9*$XbmW16rutUZn|@fh|}qm3YRq^y7y44WTS@_
z;twe*2mrV=&9Fr#+U<4-uFHf3`9juGiWJpGq4#fYF6WDfY!26(-2o5+J;1vC9FY)N
zB!<ydiHM~R!#=qYzVcZkAY7lm{P=MFFVp#s*zRt=`S$BC_s6SJ1uJ3`z_=<StfTCn
zJC&sP9wyzFQ$)hUR!RxCGU({OJv23IOWSCcF3nwCo0|~?A_$Ra8_(1BW)UMA1_Srm
zp(!;D2v}M{L|DMUT?`vS?Rj*a93Db|M78#aBrdhqDs>Q|WQzu7085%Tg9*kucwht*
z(q_Ly&-#-Q+1<e$sJ~uGc5_!GsC7V)2!lwTK)w+fKI358pDQpXOLuo_mskLSp}#iy
zSy5&Qum}=*Knn50&8#6(E#ihNLI8mT5s(U!AXSzD!`vETI0~VJM~X&jsUWhBl~;)t
zOR}{A8Hf>yk=HXMn2Bj16o74K$L4cOAS^k+1YnCyBIsnd)SJ+-!C_#6l~T@0J5n{4
zn!g<c2ckJfC^#@vk&)1cLB_(u906t~g&|;C4A|7d9X<7S=0t$Vo6Uxx5W&Di%pxTX
zV|fcZa8nOJ2QbT`D2Q;k+wXQ8fY7zXN5s~e2b$+tUOE^>B*QNdv6Qms{eHhmcH`>p
zKxSS6d5>~tB!t{?SlHpX2j9502<MJy0Q1f=%sM=g6tLp(h<LNv3`0eT#LT52KCcpW
zCr-L}f3th510hnzaV({%n@5bL5@k|lFu}MTNlMz0hg#G%kDdK~PrSxp^hYuPF`VqI
zw_m)v`|=gG01JrF$1p%l%~Jq?AX1o6PY{okDnUYukO>fggY>e5H8n+5dG8sDAQs>R
zI|GKHM|h?-skg3=q0~Y7Tir}Pj>&ET1M2q9aP@R;AQK`*2&@#<6e(mDz`EI7<2wi+
zT`FmxNjPE8dUA)JJ>Rdp6x{h5r2s+Q4-`Q?8aSi4GY6u>`~{KBytRG-o3-#{aQ9r=
zHIx)JJOB(>)kz8!$pRh2&CT5*3|I9~f->Av49|dwPQ-HD?~)Pc7H(>8iByDj_Y)8Z
z7|j40k^~^JY&M&vHFdXeYZ~F$=KyPfZU7-e5JV(!!`-uue0zI=r|xy7UH7E)_5NE&
zzW@23j@w%Q2`iB*zd59!SR<gb%YTfI#vgn&t0*)-`XJ(3%g=xQi@*Nse|Kt^gmka>
z>*H$!o=7ctoH|0Tkq~j7mwB3Yo54MVkkQp<bY$jy$q~Fwmsrl{yEg<*Tt%vgB=J6}
zVE_=B$CCMyeT$a61CA9y-PQTb$0zT-_wi5u@&Eg41Rty4-`&jfr49!K>=Wk9XH5VG
zQEoRM|ExDTAR?0>LUTZZFeMg724pUlz8$mtw%ttyp@a_xhozOp$IT8aPxD0Pp)Fcd
z)pkDnJo9c0pGATozzm!p)oY9yPK}P9vFFlt<?i923osK(fCrFcm?}a#?zyvXkTNNV
z^7l$iyt@Zvg79OuIrTvit?D9pd=Cl9gHkR;Ys_#`Bq{9-z&TI?K<@v5emeKmO7jRy
z4me<{$`hxMDkLX)bTo#Wf@fr=OF{RyutHp8I3EWs2)s^PI`T9TtSf0DH+q=)IuStW
zx1{yg%p)2c0K)*#)_Xl;U19|aV`hzFhvt!4PwWM7%TmoDv*nY!zAUX3DLJ?gm=^<x
zrCBowpv+EKEtEZA03gtD4x<3|AS3`(RU|MocTkIrkzNDG(v<;8Xb$j|mxt>Qmsuas
z^QvH7r!!(?whiU?LLlD3IX&1r4~Te-GsVCjMdKOT5)c*uJ(^*)9<3M3<9F8Y`0%VJ
zaAgRFuTIeZ17hN_T2n-7i*;%x=Yla8vR$)Ij21XI6((evnnoBi0eW(CO#{ICcsV=Z
z*}nhvw|8H>(z#J|@K!$ri44|^0t5|ZBnOB{BX2Ga5hCj2vxgu^pfJ69@Ttwse9`jk
zh}$tb7uhq)Hq70$ltM(77Q^iNx+Om6$GAoh20178FfEs6U}1UC$NB?jxkFjt1VT>k
z)7r;u>MH~(C9(P72O;Gpf&mU8%m9?~9J5G7A7S9yOd=+6*}E{e`{X&TWkb`J-J_X9
zgjws9xV*Z%4>e~A=-^0Hm{Y3Le}rh@>aN-}<HvIb5|BG9N8&&nH^VrNm-7^1m=rZP
zb?+&Ky>2!@N+T4y1F{E{p<bp-4{HgFm3#h}4TlKs4S*tT&W?^zMOZjAAV95|D|R>S
z+j9|m+uku#Ip(UhJ~GB~>fK=^D}x$)D8&zN+l+x{f3!D8xLZ2iVcq4tZH|SWKYz9z
z$IE%jCU}iMazwH<`#k}rnLp8K9qVO2Pm}5{Z3d|zfJjZXLlg@2<zx@9b-opbA|Vvi
z%hO<joW_T{nt6t;{@{l+b6VY{y+#SBW&H3*KmX#he_YO|p~iH&y?OopX1k$&`#zrJ
zjy-)j%farr>>A+cq^3^83x~{E>3G{DHxQtpAy*EMFyrvrNc23)IM#v$)9Jy^XENi6
z0BiGP^9%_9GR;_?AWkA(M*U!x-jq2r?3s~Z?%03=EHd>7g#a>&!Uz%F2||}SmB3j+
zkVp_kFXaIxN2Gz^m~3;;*4Ec3?9{^dA!>FN4#5Z{1i+rnm^A>){S0`|x&-Jad+K8%
zBE3K&;@(SVSSMfzWah+O^`9Dij?RX!HNyuni{MAk8>NT~13jB32a-s951NQDOY#@A
zwFt+sd^Gs2x43`6o-a{g0vG|QtIf4#8-U?}u|%w1VFEOd7X5rfW@eTEF!R<l+!ye9
zUJ7#$-Ejy+i=^|Dd00d`G82=TfxA5;8CwU30cJ>?d03EpxP!abnpQDvYHeQ3^>N#s
z-;wuR_QWLM`rC2I0d;^T_OdrsY2=~IX$OFeI|J;wkB{49S8t2uptAq(>o*dsiGtRk
zaApQ@ME20u6v86sC;$){kO~oDkr+%MWXnKWtV>(eA|}k2001BWNkl<Z{ZSK|c@zMi
z??ObRy<E+fd10YiYArR0+cGWF9AQX+-f8vT;`Yn?+pk{hqUK%Sj{r`THEQyzi7|2p
zn!`cr0qPEc$Th$L!P5tmC5sh{I4}0q8}gt4c?Pi=oIK+xv*gRi9uYhgTE1l|n*zw`
zBTAk#L<HyoNrWpRoC0`=o}Sm|3M<eCus26Ju485*1_4v+lt=HlLI4aiSg&J5atoGV
z1STPJDd;*wPc!P#d(h265D@4{Ttrw{<of#X-S=+*DK}(Uqq;W$M-N*`kI3xlYNY`I
zgsYkLjRvB6b9L1vfgF(wnQZ=u1CV(Lq;aU3a0uQN;_haum`7V4X1!6&qb-7<@G#FU
zd!^hfG}p{Y%r_--2{T)%>i`feu<i!Hp4mr)uHhLP(@V6VoN)Bb0RUlGWbVu3^=#_y
zhIvru>|nhH0|1br1EPtEfhZs-s4zEEwFO~4o$?#N{scsLYt7Ag%|p*uEzz?0mST|3
z3P60TL(PB8JWaW(5f*o)jy^Xx(FIhLD15nNpNqIgaJ0}lYy$xn25aY|+EV_O9j`XK
zxw%oZXHTAvoAGfZp6i3d;pzJy{p7QM`1eQ=cDj50`pMI0bu<2;VDCW%jQnUV5vh!1
zm_<6OYFjLO-1O(DT6CXJ*AIk81Z{W6d6~hYy4M*;tfOdUHdoLEtQ9wgU<6myWdc`-
zl4&ADge(aPPOQT^C(dnbBkGf=FpN+GLm&bQBLL84F*5?7Sx+}N)9r1W7c&Eb&0)WP
z`J8qelIqay+(f-caQAR^R|F@B)mG>vtC8FLtZ7Z6%`e}UrWmO|vOMzLR!&Q{hX{xq
zfB+=oD?}yr8R(9bJx*u<V3g?1ubaC_0RZz(Ur9Cyt_omZlNmEd0SJ<<w??zARE<bz
zUxRSM$O<bWR*o*Mv0)S`m0c%j?yhE#S8-3aPBus$ehJ^m9*r`_jes1u>1?Lx4(JQ^
zN54B*bHIRPdGJ=^QV=kI`?)E&K|ubTm_1>J{y+{*F#?l@k)=ZbtB0xPSCiFtvW;^Z
z@A>Zq3cykd5<@r>FNkU$rqDreIj?#&@pqa;T7nX(=Z1?fiy4MtV1(zt5PB`%d$abK
zW6WI2fDntj*<@|WabxO(F=5mZ0bz*l5TFUicCyx+`pD;b{qY_n)?y8z382KXNsf>a
zi^l@K&YuIoaC$Sn`r?(&wlwXUm~~Q^z{JQ28v`=3WRzuz0JB)sO{0ek0;KFcMcW04
z5j6}it$lryn@xIlv?^GTyII;rgct#WkrV>L9gL#CVu;uWFp%_qc1Nz<4^?7p>0~s@
zA$6p|c)dq5(Sadnf!&?mX~F2;*7+cswFn{>j{stlT12wz5atL^e<_AqZee=LEO`L3
z1a`Hixu-{;^NHzsOb7}9ZW+_qQ%t?(Hr+!!>>wpq6zN$d$b>@o(9~gp2Vp{H7(gr#
zS;lcYO-sZY<guRlW{vtS(`$?{Wa1zJ;C1s&2o8wMY)+X@0|A5(Ve2RY0g@bv%!P^7
z`<sw10BsgwIk;d9Wa@<-A_AHcVl9Q>F*q84g;f{TmK&zraS&ypL=hSg0m338n6xbL
za0;V9@cby!<-JZ6JojLi(`iY!ekxT~Bd|v#t0Ay!+<su??`v{5KVL4bwOVAi8%m*Y
z&qE))fi6B3#isKO#=NPF;Woc%=c5z}6z-miJVX~$)d(imrTyw3e)W&P`e#J`{a^m_
zgAYFvVL&1gL?I;R^1(;H_0{M9=<OUa-QRuxaQk8lM`n48u$E$G(c|q1fQUvy%G8pa
z<hM4PSqI*PEz1munX$ZH!pOo>ss|b<5ma_g>PCd?jNU2&S#Na0?euUus1mb>A%X`n
zI2d_ga4k@f2q4dYF>T-;93UP{AOZmjh(VOYU~k@9yUcf=e?5QoU3>L<xtwfS9Ab0a
z-+%D#lb?J#JbT7<lVR2b)UV1=)g@dr=c7M<5a9^ab?jNA3JVDXA)%of5@!rUxMK&>
zMSmUoMhF~JeGw}p9CB(EmN94G5l8}IP5~$wx$<8byh^FP4p&c_5~7;s1|p+mfe46^
zyp$oCI*;oZVupr!&Z`=&&Sf<0f#q3bV#&D!qF^7PvFGG`os;H{rDr7M2tE?P!~z|V
zk$JuD8fJNe_KOM$pv!9mD1b{D0SiKgFLA!ynT(ou7({+<X=zT<7DZrTAtq)C4`%Dt
zimw6n+0+ImJ1TOn15nGb-R=?5thJ>tyrQE39TBrNU9;+PkU)sUl6guL6vPbCOK}K?
z?9uxms+TS)niz*6wY(6)dH*E7&I2{{be_&<H>V<0id6|hM+ghzTsrnYJ-vz|SInxG
z3+c>lWF~VQ#+o6};8}%nL~}RrARwIm)mLxM_a|G_%@U7+h)!U+TOtGuWP~BcJwJJN
zopkze*JkZ*vQwKLlp;8SA}D$?ECMkh2C*w#miE<ah~Nl*x(5IlQk6jvMccybKr0|H
zygM)v+ye{|8Igb(n1PTJ?gmU4PK?0e6u!7A_k%YtG6{?zM&O~=o?eBd+K@2J!PQ(@
z2mq`pptws=i2x}*PboTbr%x`mEsQG>CB3#FK`8ME%LF-1O56?HgxGwYgqmjJST9k*
z!4N<KN{XLWXh?n$(C<xK!kU{!ga|WG7@9#DI7!)=<ctZ0XClQ!e?-<7+4%q>l0$J1
zmZ8>?d>JB+wB$hM0JaPTimuk?zP=2JV5uV#f(28CL$!3@hZ}@Knr|G4C~E;k@{q*r
zt&B!Tq;MjH#TIbGM1n_0_e38|lLJ~?hRv1`lh6~85seO^p4b_5ggitH5#4MkT!p5K
zW>^~`MF-J5E+>At;CRfQ>_a>=(?y3`cDt=GN5AYBc8BK8B0!h(tt}S@AX{+0v(xuy
z03P;b7?3HAA}RL`k6^lc{p#=j`v10h0p5J~)sw?<b2#o1S+D}soXj7NPv8IW(_jC?
zzbn<j&JTC5q)-`Z4giIT0Gcia&Rhbd$jIpnT!}}BV6K_9sixrOT~HgTYY0e0!~oED
z+8iOc<a1@Jw#<N07%HPc;ufM!(=yM@2mz^KTy^E35k18{$Q|67h>#0}LMS<frR<Rq
zOQfWKSz>PIZ@xW!`IUWtgAWgNnWN1_*v@wk_pfa}J^!7bkMF!oI6&T8;1G)8o^L^9
z+B6`7Ms)NkC3Z%LOC7g_1Q-ws)T9ivEtxIb#f;IDIRfd?G}hVYKL}%S(8p*TA_#B9
z0)34U$%-{MRb(O8w0C%T^PUN}t}vYd5QvdDD3$;glmZ;mpTZ0Z&3nTa>l5tm|H&&F
z0G&uk0Lha>1Oh~m5%<<`ZRpp8A_@RZ@mC@;hy%E@r&-z@9twS=54i@-)&!gbC4g#8
zp%Zt^ICU3Fc<a?1f~)qM8!#Y|{R1Hr6_FC|stE)}cLVI>N&w4EIFN)nppXa>d3Z_z
zh$NMq4(@%v7rkie<TUhfL>UHQ5g-9Vib%4Rn?*DNPsU7=_z@V>E*2=loSH8{LQ1q)
zM4$mRfB5#5-ahEO6c!`&QeZdOrg{}%a8N{kl&!226Hmw#GP;{110n{wL#>smMvfww
z3XsaQ*b<p(Wp@Ai{BV0xbL(Tew0}h^2s&M<`2Okm{KeI7zp1sd6e3hLcU!i++_yIB
zd^>>!SR}$Jf?%bk5`sj)r25Sp$MA4^dQi7O9LHTIlz4!-5=J1X8iuPi@bpikx&jiA
zFz`?}K;+R8ZNvq_)Mqor=&HOf;EDhe=z$)>EScekKmoZgYY3*TYrUW&UV`hk&kS;y
zN_|?Gt(jUQ;+%US<`SY%`l~X@u{A?vVlt1_q`Qt4Ah+Pkh`o;vu+YPCm!OH9z2)dF
zHw#SQ4#YGsv#DkOW=6!VY>IhTgm?1Ks(FGiM9U`7&CN|%%oKRz;p4cST0^4DnaN@?
zAOH-&!ogjcD9qH2kb_(ShwY)yMlwkf$qhw#ZWhoe0v#O96$sG-m`f0-wpwbgauG4W
zS9x1_E|UX1JmarDHwGvMAmbK^dzsTObQIy~GC_~s4scDJU21hU+u^4_{jI<H>wh2M
zfV>W(y9x`|Jm3|(536J$KY7w-_YV)-?YP@)5P}GR9CSfwVXC33mv(v3=?vD;=H>4D
zwm4sA-d@+ku?&@ka`O+a))X8+|LmXMdshGOcYg90fB6sJee?PL$#%2*1OnZ4yDJ@V
zE%m+kKl$=E|ItmGp4<FzIS(xRKCurx>m?aM<_0v%rgQ}y=BNa6OlrP_E4ZpQS5-B0
z&k-L<tul&?L?t*79Zg|naf7vh6wn1D6ha0txA}5u%N&Bl65tpd0c+TV0$8mjc@Yr=
zAT5-fB^05A1vs;(d@E&zYV+mv>Xkj*6}L*l>_X_F?y#Ka`Jeyg4Z_nx_~hw~TI;Y%
zR}G_?%@7U2!ZU6Ky+tZO11lG*Wk9Mq)<r~?k$ECw)o^o$=*obsPr*_>0}R|9l|RU7
zckh!KbTb7cG$j)74vYhLmg=EtbD+Qo59qB!IJi4?O}&64v1AuUG^BzupT?Xcg}Yk|
zZyru-+HMLyh!~K=38iuusSsdLrrY)lSi2}5@+L~MY#>3Ekyxm2?o-u>0im{FcF(aA
zE;}+pfPf^U3^DrR+jC#;VQvZ?4&^D%LL?vof&dz7B`KDlg|Eg3bO!@#u|`ej(kEOU
z1PO;yM8rIhfrx`UXvtDlnhNT!aYL4#mY93=E`A3>%Ai>BB?7E>&wX6UtLjULrPRzk
z=I(lsQtP18CA6KsznQ+h;b!6yK1D=}fQJfC_PQIqNZsTjAA7>FDpKSfMwE0j@|;8<
zL_n<rAZEZ+$|kr}znmfhO=HIUH>b9!Y8v?{0IjD^C$Yur9zXigySu|s$0|}f&=Zgf
z5fBxTp)6a!2rc&uPA&mqF+g<sYfmb0LWE0e-`zTa2*Pp0!|2xBID!HV)^%=pSRz{c
z^R%X_M<mY#f+FD_h!zo!ZqdiJ*%PEunal&3N^0T)p=rh*QDkf-Qu+fS$Xtn#7^I9O
zl4o<Oqq8O>(q>8OHs(~PCZEeCu{ItSMg#(g#Ec$5C8)8m1CkK}F%>j_xWAvQK?-PS
zl(CM(&R5%1<Tf!!W(dqARKk{UXl-swa|4!rIPUiQrn>G5frwHUi5SSp02tnMwq_n~
z&hCs=hRRY3rI7?zr5!yg`wc=7!`0HZ1SG&LgQP^_(RQ40^ZffL07COY4ELmmFpnTu
zhAm5p{x>2-WQr6sx?1i|A~N39+|7Xy&5*aHCPkfcZrs7sNEjZ9U>M=iJTYDY5H3tV
z``J(a=5PK(Gwd>ISP^$W5D&X|wf5=&9YNy0L5h^u1Hdvbgm^d}hC<#9LoEzlwVl9D
zzFgXTv1w}4S?6=RXq?V|dZ^d$w07AXj=QTv28p{iS6$A_`R49_{-6HGmsj@x{M*0(
z?90!0PY&<C_nb+H#LSj?1|-Hf9G`sh<DdNcSAW0E4{u(7Q)(G1k}yCtcVbE#2GKB-
z9TVqpW##c16A*#v46bIXx};(y+|&X{YH|U}$TB!NsOGTTOaa|oBb>W8#t4G|z=Hwi
z%LNAkLI%!9vYX&NT2n-Kr=*N^e+sjKLM)i=6p!vm!0x7Po-e2K?VYGqqN~HPT97Sn
zi))+PG^x&?e|6e!<fq`iGc82~B2*{0#o7fyQ{=4L-9)AtLyJ;2h>Rp2T`)rINQGHi
zK<-pL!_plh`m>w6351ke=Mh8eZ?`<AARrosm^l)s{sJ7s2|~=wUA+%G&AlbYy^njs
z+>J@hEeN<sBpnym9wM;M3nNThglonRKl%(=0))7LC+G(|kP?MZAR=7N7lgn-cQ*nA
z&U#l$i5w0`H}oShvqXTof-8h(d^q(`5=IO{?&<3pKc1&4F#|2;5#~0hw9v!D9FTwt
za>zJF#zO_F=hy)`0bb#1ZI!e~*SZ4%kF|`*9I=j92+>`nAhS<tA?XwE9wul`5X6O;
znF}#@I}u`pNUie)FkE%PK2^s6w@hbAJVxyf-2isTEVr^W)BDryx35NXv;cEAcU3@~
z=7;%mf#a61_f37+Y*K33RnpCJe3-s;M+VQm8Sb_R<^sR~l-Z7eef#GT<aoNf+})hq
z0hqwU5FEOFC2#Hh)B3ZYe|)^&ENbqaKJhMi?9U0y$VRrS*M6_|>U6%F$3T8GEG7bh
zCBVhq9_9sJM{c*01R02oERwC2FwLeB(H3P!aLxo>b7SI_TkI=&6p_e@0(hPlX3Ziu
zKV2zRN=es=83e4Z6QXbqtf%ws-J9>i+b|5nFc9NzS8HV_@G$da%EBs#WOMnKfB6bw
zaaU#;$MJC3?}lyuGVYN=BM~W%8tUjIBH^6oVj`@9({%ab^Iy-GN!0=fakqcQKmEPk
z=`ztO65^nivob^=5(IVo;y3@K+FH|a8h1~hJU@PNI9LD?X&-nY1?Bbc79tpG)A|0@
ztM8Y2CXiu!UAO$f(;X3K#G$V@w;?c-Y1B%f@$hgrO_%feJYSY!xH??Dvm36Yq|hCi
z87XYF<E^vFIGygbwYDr~8i7*w+hg7AhE9WHLPX2t+TH{^QJ5~?mzSYxrHnv;wX>}A
zV8|jN3os@^4hCQ5%VREVXF3PJc=_)0=TE=;{?>93_c#(*2aM7EGpmkcwFMIZ0-E{N
z)zy>Zk-#xGJmIFQ^I4}`pC7C(J})|-Z92E<qKbBZr^_Vs$!(DWrIbV$fa(41oA7pe
z^X8^$fyJit!_Cd*bQ*^Z@p8F5v_)A;DU1=<*DpwZrRU4};pXnmScS&j=nx2KmNS6L
zG!!W;R7!Dck3#4OCr(I?hc$0aTk{BW4<K;dY<Hz@NCxD>m`I}V@M${5`Apu_&P}I4
zbzg*{04@loZJFlL_vzVK!!5D{=>82!=W9eMrBCD%!GcVZQ%a<Y9%kBFYvzsIH=Est
zhar$!1zYC%%nZ^NoZIr7&!@vUe((<Bs8QT9ZgqJy@8@5EUY2nwXuyb^y1(>wAR>~m
z41j_}u8?IR0E7h~fMJ-Cuv>&=`-mRh_MMf8xAs<Jiz$J1_n;7B;?)3_sNno$vZAMT
zxJ@F6=4dH{l3_>8?un{T0CHgVvOOax|1-Mu0a?w6flEe?Q(BF{(L9g^2_q~_d)9rQ
zU^kSS4gw_V9;A-CCqN2<FgI<ci?&5NdoqXw8MqSWYAO2O7#P?%V<c1?Cg`o}w<DF|
zgi@sR%NxNxDEkm%M98nKElU=TW`>Ad1kt(lXpNOEM8M%vij*l`VA(o{_2C4wo5@&+
z1&JRQ>VQZrnNBgEx;zRWITjE>RG3*x&M6^0fCACLh>OT@o-H)O!7V^NAk4#5r?yO&
z&}rTY7v@F?#Hqk?^VZb76=4HMFvMzRB2w!>!U2@+N6KI!0$G41oR&%NZzco|Xpy^?
z)J*1Hj6yc?@sFQhKiMSwNfnmGJv^8F*%~?+3lEzCHWDMK6s7y=?n3GWL_orlZ>xt%
zj<L?#zIlT}8L|xs3=HAKOoVM|0r=f_uWsJF5yD}trB)W+9}Z=BBvHhp+Mk)tD3HH<
zeSf<9&SPPgT8oIheECx928Ck<l8Z>so+WQVzxnd@tFONp3rHamJ|2(5Fi0qp1LiLn
zZ=VXJ0GejHef=GxOW{&Vgzxr8GvzWQuMH5S)}hVO(23Y14|Zf>MuC{#y#D_F?)LO>
z$z3lYz5nU6QdvyG(=`<2EFusbMnqCczy9K@Z@&6X0I8`NZYSJ5fl>!h*U;3$5RiE<
z7HXA2@b>iZ`Dg$1aDV3(^P~#jUp?oa{@!tEmcshfAE;U`qKL3?gtuS+>hCh4Y@Qq7
zwrpSj@=u-*n~k~kgk8*QyKA`^7%;y0%|8j@H(!4>T`rfYZT2rd{;fa0e*Q_U8}gp~
zmysp`wFvlhx!j*09=`qd>-jRP`LKC{a`@3t|KJg2kPEtO69_>F9TCmu^WEK>H}f=^
zn>#7gaeMXg$3Onp|N6iAU;nrN9ThF7BtOUl?$_0dSaA2$!=+4^nTDZ0fBtOTR0KCw
zFsmdqY#uJJ+jN0;!O)?AVVv9SHfw9{lYZZDo{{KOaI@PJgM0Hf`{iZ>m;duG{tvSI
zk=n@Z;m!A-fA-n)7w_yXq*^Ij>)<AYQS0{k^LI`U_a5!^aI@KrOPl6==OStyN*#_@
zvOjh%|C-Ix7jg(*3I)OG;c|C-`|xl&UnW4_?hjHn*G~zkWQu!$g8-_}%iK<P?fgLA
z%qPdz+67P{G`T<yFwN6ewH8^QZ+uKscK58e+<jS=Om`kP8zQ<sUXcI*rxnUg!_?i>
zRLv@aWY!N--E3naw}$8l5e-gvr}GzImFpc<bg=y6+T5GFE%Ws7@G#HIvNU%X#&Neh
z9IsxA45bvNv>rSf%=$u9&F=2*-7PF!O^O7-xY-oII-olepgVX30jjwNxQCmzMK71j
zqMBRCI&6-|<L+=E=@Jch1IVZ!&-&TSE|=-<?rxr!It-i51^}cCPhY$zQZftx9$D4U
z<wOCX+RhL6({#B^b41iq$IW&ex0}O;rI0YLu<;x}bU~T<!~OmJ-JPm2ORd7pb=d5$
z2I$83RcYFtdBiLZaDV^s`qj4&_YXs@+wHd2Qfu8GpAJMsjF}>i>lBHZS%hUaKi%KA
zWtr!xwI%Zm4#y{TQ}FFX3|ANlceXCTmtTJM?Kj^L!noNCwQje&{b4thF;#EENF?y+
z{bweYQtJKf>u<jP%2o5e+3vQ(P!GrJQiRv!_B7H&1Ui>864&$GZoYrrmJ2`(bs)rX
z9Cycq)IyY4F^oV+Mjr{FFqL_34rrc20dg}nR|{2lj3s9K{>`CEWeiHg2qNOc`Skkr
zYheWNDpaZ*cDwCn%b8Fc-9yzuzZhIblFirOetG)(MiiPhOO?NAsw%RwB#w99dvZK(
zbN8n1)7<{!fBI)csAFa7NB7l}t7p%iL0SQ~mADY%LfGz?d9f_P)-H(v(VB}>+%Nj-
zE~@yZ5@U4#y`?>Dn&&UR`1*1_4YeQ#B8rqxepI)Iqq`y+rRpxa2#OIGh-uN=yECF9
zxVi1N`|WmDhAnk6e`FYCHljV!T54cXQ?n&%xxKx6@$zLgV=*L4%{%~RAI!|94o{yx
zyM6s#YbRpJc;NHtw7;rrWk7@|rHD2nVsK5iDT}xnBXPu6Uwrv+f0~!pmU+5F8IPZQ
z`mq!$T1+*SA{|5xM8t&vVfpskZ<f}kd0Cc48%)dow>SGzXldHl%e`>Q{}xO{WS@Wb
z*~9&<s=2$m-ank5yt|cJRkdTT2;8WXdH|T92%b)-%jx#~aB;V3UhYqC7MTC|zuJfh
z7<TjC|IgN&JX>~MXMU^M`!u(GUB2v)=mC-<Mafj-5^G?&Dio4uo;&QB{~-Svj&PNu
z!Xb}5b2%(Zme_%$RU}0aAiB(a-R(}Z_gc$?wa<MIEOWphz(nT7yXWk^n(zC4pk5LC
zRE!YDp+9VH7V}oqkjGxq@Wp4pYgh06$!yLsOk^%apZB`B1c(r>UVc7yhr8Ebq?9+C
z!`=SlZQs28;h!OSTjOeTGLb2a98pd4aP{)jyVuv-&31P<B!Sz#JbnJ1Z~nobf9t#7
z`=_7$;<vy3lqZ*G$+)KJS|K!Finz=c5Y3pmit+61biSDR&Ld|r!w@RS10v@!S7@^)
zl7ZG?#|~^a0I}5N&DBuXF;ZmYh?oZ5-c*N|D}9N(jv%kA`q|oUhRu)v;RkQL_u(IW
z``fh&ljSU6m6)pJ)%v7q8c@r*zq`E}#{Ba2>)md<-5tbiK41UkfBiRS7p_&AXk}2$
zEJ(l%W_Ek?>eEj?yW4CI-EehvyI7q*dh+7(=?5)G;(#SzJg~_y4&7lZ-HvP&>j864
zW0uh!GldkP;?goAMj)i4tW?2NM7P_`cDqX{scPT%ZQHJwtLB|5E*C0J8_kNr3Qo@)
z>&48)+#V`MLep_j0yDLga(8n#-rmGj17u(dDk3T8oYVO7<*Tc!tHZwAAG$Hg`T5y=
zzIuOlhLesLDY&Q!@W}UxS?r6?U+;FiuImt>Y3inJFCRZTJ!w1(04chULmlq{plV&;
zU%kG0eRaLt9fonNn|d~zT|R#NcHP9<>;dM52vy4lNkulB&2N75n=ik5ISj+u+1adZ
z&n_-jrx!$|(+>fs%gtW~1Q@#Rliz;)`t{Y#?cFf+i^cNd;^OUh-)~o^6po^;@{KbG
z74}i&t5>f-{`fanudnCx*>brIA)H@4dVhK5qSKOVbe~Ou%n^|ehuv@f<u{*x^2vO@
zSS}Y$Q=Ofizw=%@Td7}ac8^X6^;|Wet{Z;&%U^x=yH7j|p>C?heEHVf*e=hHgKLKt
zxc|ciIK!Ae`Q+1I{OqIUa<N=4tEyhiXV0ELe^j+9LdDjLN2@geatLPd)t4`S`s1Ip
zZC%%u^Qa$PUd|T_B0Pq(+!KC?k%C!x`SR|kKmMtuL)%nURW(g>a&q$SVqVv6J3C1N
z<B+^7Fd)DXV#A>pgQOObn7m~-%kG)9(ej{bJFB}T*Aat{K0s6t-SFzwRb7I=EHdRW
zot>TfI>UcxfrHZ&LI}fPYGK#qzE3k?m@?b!$fZ}MAnlA#PiFv-QU+3Vmo~-yp&PQY
zzd#_(d^V<3*Gvdm64zC8c>>5uZ$}*{XEcZykOCosQH6kM03GeFlX`2j21CFQ+;{4w
zd<?N_>fLVF^<%6Uz(l0)`!tR~A#&p&;sO^yK*Xwwb=!=ps77c^oJIR?5Yf6Uaql;P
z&LxJRmzS5f*RRII1{44?Al_|u?R;TrWDT7}vj6}f07*naR3L$b7^<rFil3RPI@E0g
z7*uH-a}2!O?@w~_Jqb>4NMLq<0V$w~x#ohH7}1gr!y%<H4a4i#H(eJl->jcLe=JIM
zU5#b}Vp^O$NEAY3R2lNs>sMXZb%(y|x<g0x(4AhKy8?><O3Dx%A7hNngyT4LzI5rk
z!(pEehvlOu&te^Ikb9h!TP|G2N<nn^;)^eKo86f5nEIhl<G@z&Y&KU@PZ{zhuxGp?
z7zYXfH`_bO>E^l{hJL%<blq_1+q#)M^U_4TDIr3)v;Y7zBAAT*c-RMI45oR^S&2_)
zi)F0h1fB3Tma}FI!0Jf5LkH6Jhs`i_ec$a5>1HEuzkg;tJGof=<zM~H-~ZtM-fj2&
zp{uJZrD5p0t~*o}@AtdnoG6BZvL1^Salp&Vi>9qb1T<?B5FNAR;h>}CKF6R`(Zt)Z
zG>QnSX4fosch_~>qzFdV-+ZOp*U()xX-kw5c^##`Y&N<2#iw_v+oYjm1gmQxR4ePl
zx~|si)#l~~Eg$x`1|(y@-QNBB*S{T8ZfEO%{jdKDfOMJxdO-uAfJO*nl5>B1bKP~j
zVd%$U9QsZa+r@bncd?Z>hC?7tS@Mv2$YX%PFd?X+h))Fo$W@d;o+j`53q%Vc<eYuY
znRD9h_WS)#L{m!J?N(9-(V_3=vlf^UthhY1h_*vr4cjdSHZ>Q;5QkU@R!W#6;JEAh
zuU<D7C$yS5{l^uOIj7Bbv)OF>e%$RlRoiZN<ESbErYdSSqKl5fsaQUdMl;)Pcbm;&
zf9Qu{ST5&HJ)WFha8;pu2{-}<qM&9-0>A*c-yd%8Hrs8#*$unhc73uE#ZYaYJWF%K
zX+T>%?w+#a1MqPi`+mqN4Sm1cZow>UHeJ`POzEh}FHp3jA`pnV>$=@`d)V*P?C$PX
zB%hpJTt0ov6}t~F8)jA}?}mrI-`s6(Zm#>jAIB792(j+EL%VdMkh?pTr@b-~5{HzJ
z5a~3IBZ6-3Zu`C$k%%@eY}Bd4KGEk;iD=&sx3{+;@O&{3nYwPDQ=a;~qf@9Ls|<lS
z0AdKiG4eTQW**0Wb9dLS*6rf_n3Qrf?sJGS)`-r$gud%cC4>N`+q=8|;(UE(OmGbN
zJ)Z0#1Y(}e7l@1@x;P}~JdA?_)fF5k!-%1D?1mTsW2K=Q4JsmLvQb1q46;gA6Q>@J
zFmzqDYy<gy2_c5MiX6k3a|{6y#+<r-+#kBda#c47K(VS_kS1y*sDf41&KAqzYLkZy
zYUbFSiMNOdA>!(^jgbp048gm&x}Du^cA~~?fWQoQciZ`V&g`Oq5STc|=FyT76WpfV
z$ZG6Dz7WV*lz~ta=$PbsH`bA>NHJK^?W6BdXYK6M!zTzhvxXQDIi)lX9fg26m=lG3
z;~mH|5>D2u&ttQ_yR9Q(KvU?tUe$#`34{eQhfu6vh>BRZ4Tow>87&)<4zS<t$CR2-
z`?KdUrao`?2dr+J#d`hf%WWPLF^brJe^{+0#B3&J%m_im^@cz=?Wu_XLI~B}rXR+E
z1C2>`d%4@;ciwn&v7Q}zR<~6+W*L1jLc|m(?C%CN2!!3?aC37wboE=0PF}qAn3$?6
z=9JV(0ZrY~06uLnQ%}1b`t5eJyT0xRt<Nsbxv;0D;3Gjzm4JYWj3f=WH#Z{E_ub*J
z-`pOCRKN2F7j<#P*i_H>Di^JM!7y}(x{9x_ws)J&-R<3Wmj<DW%geg19PCo0B?V~(
z4i6W}DtWWnsmayN^=7l*b>YcdPwKXrP=TH@g`x!-;HM8ER8`11-)^?Ice`PLyA7N_
zddyWtvHIYf-#x#4meU9(tHok-bF;a-+1|ZI=s)`CCs$Wj04S1ElEq@l%!~PQu~@Cw
ztMjwdrfwu_8dAUOER7%nxtBw?yWLrxBUT6?BKuu8^f_lIm7vm~wC^|9kan1NY4b&`
zd$z9lNs%b$2*WDadry~L&7>JXL<T@1^qdCClIDx~ZgZQ)BsL<1x?-BR29l+!qECWB
zq>!N|GqmS?^!;$?y1pM%O5<1x1aEypjGlXE1s^7Anni*YLL`{8#Szq)2nh+PowXbS
zPcum>vrHkPZ05t~l+rk+zVFkRy2F8)#&HzMBE?*Y<vKJZXjX0R($)6vgd1d>A#$uj
z3<N4NM9Cs4i}bH<b-Tk^4NN6D+|(KLDUCVHI3_a~#?b&%8rAYJ><JOb>M9_kXp!s^
zVF-kTqMAjMST_o>i6VsxxsFvELLDL#6FH<kR+Z-2Y#!rn%94_(;-MRe10o}E`C(B&
zBf{WgCzm)4)*taHP188CK-K!b&skzLIL3RqP!P~l!H_A0$Q;xx=Ui2lsxq-dA61VK
zY&#ZGQ`g8&_UZe9nP;<hzuO=7`!gS4a0GCi$Ne9Rh#aCbn*jU*w)q?!%{Zkjf2}wm
zB%j+8k%|p6)OD3ZVCHcgtq`g`lhCgW1jN9>Y3R;7oG##ya~{WWyV=Z_``D~~mUD#O
zdvGsvTrQWy-0cq&$w#~HFbsoACIlz^O#hchQF2w)byYV_bJ!iS0)qkKIF8%x_Rt-W
zImXr_4vXeaK@=1zwCz5nDq=u3#L=fNj@varAkBH`yLKGilH;*;RfvIk-}fR?MUD(z
z-``x{E|!bge1!;Ea>0E8AaYg3q3^3$tD29V)n(7<dujwSWS!0H5Q8e9L0~qdy2iGt
zyKW%D5RoX<br{FAx!cU<^#s;3BMWWdizSLCxf>3`CKM`QW?;*R2ns5y+$Fs`$Z}70
zq`*dqQ^3+}HWz`M2L!9?=y{_E1|}jSSU?2L28@=$G@EH#H&v{19uZgtLf~;6hGA%O
z3U!Us*Lob_NJig%T)$F603sj~D=9jz^(py24!1!H%uU@iO+)Nyet|;}QB_e;0`ZMy
z5Roa&fS6bjk%9-O?0Y_c`a$3I*lcs$o#Wy=fAn2&cf6GSq)P=oErUpi<DpL&Th0jF
z50Wj;|L~9h==5}+ghW79Aba`gDQvFPr{R#>*<u_&A4lEo#;!wNHYaB%-i8(#w~+}j
zv61^Ksn6OCLlQY0y4#!Wc9ZtK{o4;dsN1@Lc!&z=&=bWGn2;1rwXW;^Zrkk-cXykc
z4e<Qz>9c1rEp`fXXPS}|69JAnp#q@pHk&U#`*OdxyFPyRFP;)3F&DZw0fA|OVSD&Y
z(xh$MyuP}+xw^aE>^Hl-&&$iFPl4GG>!yA3<hchJ66kE!u2yq-vIgD$^r!zIGR$WS
zz+kFXMRnD_^WJ;UpT8NH0wbdhU7vP`?bWUHJxbE?aP!rt<KgyD<uud?+I7Qr(|4Un
zHc>QGVBp+=-K5qUybHE97+upy21#;Gnn6cZMxC=+8c=JI!AyvXt3gt(t7@@Wq@f1`
zu>_FjZFRC*zP!3^+cpLs`-7>JqX*H7gjPi|A?$Zucj)@Q+ibS`eLs%bNJ4DtdRAJK
z2{%Cq>b!k3w=WZD*6fyRN4Hk<rk%}Vtg5OGRmB|KO)HW?01N6wQ_6?KVd#6w(gTDL
z06{e~M$Ll?yH*H5)iN~|p0rn=U+?d>?_E6a#vxX9UCmIe8av5DV6K$Yei&Zg#`OZ~
zsFL07>Qkna@-R4n2fKa@p*GOI+YkpP3XvrfVK5Pu(G{xobcje6Gs}`w86U-1HL+?d
z|F?5QxF~aE4zu}uKA(%c6cIoZ(Uc@-%_2^p_Phry!cH%2yfdC4$AF^J4}IvWei(I%
z&u~}k*C(hHV->3^=aTp|`5LrbYIgsNbt1hZGldXBr3zg)rZl>$nZs_o+YLh(ss-Gi
zeXdDD4uP4g5LEPV=$Oe2M5?N;{U-Js%|R#S5}pK&9Jq?nOgPXuCR39v``vaN`-Nj3
z4etl#V9u!mv$}4GIh9@+i7@Ash9Ql^Jt4i&fe^unL)+FNgr;eS?l6u+&Z%u%0L&?g
zBxXE1#{htl0W@%6r1g5eTrM}auLxnpR8>_~*QzEt*VX;vV8Z7T0M*T`YG=La&2Ag&
znIEPaNV6ais;DR;q+yVpDym&^2VfjHglGoN_~bSqf~c5@h!Ck|@dMdh?kZ>iv8f%|
z4-<LP#D~yI2u&Mivvz{6BXbZnVr<(OLfG#QF=Jh$1jxCVFcCmCD{>$*M4oYVG0%N3
zxlhRg7?~mk4pEfYa@ClQHryRjv#FMIX);HIzz7&ZSgjW4=cg~f`f?l-64o`F3L-L~
z=200H1u^<{ZiQMY0Fotv<=J{s*Rg49Q_bU0)icm684!#^ECm*ax~f;JB?m^ds;--+
zSu9Tw3L4WL*6fyWe_0UPwq30j{MMVy3ZPXT&rZ+kx`~c$B2djCXDRwSBIbw)CedHU
zM^C?T^60&sv#JeA)#&ZF-|Tu#Nu^xnK2LLC03+6h(5{|-<2&DH=J&P-!#XQ{=MTTf
zfs%NJpr|S$NWnP+U?4(;S-X02`GV`)ZM%MV7{jx7zOg=8aUeA+Y*ccWY*7jjaX%!%
z09DJ43FSokumA18`S4rcTrB1#joJ0~hGJkIG6f8PIg6;}ocG;uNHjZp{O#}ltHomB
zX$f%DDNhJb*DdZ3ebv_EFnsa(S9hC!vx8jCUcCL5>uID+MYK4zk0S-75Lh*LyFC*w
z7OO9>UOj*Bo%6>R<)#NlA^<VdEGBA37$R%N>+9E_{qECu-g&pGnIn%wsv<vr^2W*O
zMH)NJV;=hb&1Qdf({H!KcGK_gy3MtX2T8jvj@wOOf;8s4+ipy%3I?o*6d(#Qbqo??
zAGr`jeI=H&rff-QKXe12^slPbc|C7I*g(`!RdN>7tSYlv+aH>{yE_0Ihn=K;y_)s?
zFq<`+yKa9Yxh?GCika9fOX|TyRmYV2t{aANzdsxfLsHB`YG!i^F$6xE2Ye!&)9B}l
zn2@PB!3G@AidmG}mfHn{IyAFbRlaCR;}BxZIU$nd>_2c3(JWv`KygOPIS+v`r%s8?
ziRc7MA~jw?mu~J>&7xYKkCH;ug!zhx19rO*L#2|k9zOeO@$3-<1QkZ~-1WdzG4FDx
zVmT*MIa#eplZ*$70XQHtNKnX{6WWN72o+F6<eUqacpQedopY!{Xqt9j*KLf!LCR(l
za)_}?sgHGCHLaSODN;~15go^b%t$WeX9^KH0vb@D5GiqtRS1=c48t%ap^>UevSJqV
zS#ZvYnSjg46;Y`OtuZ)$&rl}u+3oGEnmQ(uCJ|P_e@@dNW*)|I%&8v+HQ-n+*Hn<^
zgkS=Sz-8aW<e5lZ$9g_r#8`FRz6`_ccDLP`Wc26-!@{Qa9WWv@MdsylzFx1!G&(E7
z!1jkj2((<zlA?(MxpBc50LX}-s;c>HZfb`^KbtkGPCyJX#^t=NA`vP(G1GGpkyOAV
z-|M;}E@;##`7xEc9D&L0dFb*xBZx87Rh1>H!I%>gl_Lvr97nFk5GtI=XG92$Y|Ip5
z(`3ZWp*xK&i_?uk5%oSg#w2AZz5@U>B8U-J%lYliO-`ASV{Ck##Dv7|<|QKbT&6ya
zk}@-g7%~Ack^&-wW@L{8G77L<FRH3`hgCMkl!*ut+F6{>tJ}LBAha`!fddnhRWX1m
z0+@Lk3n5dr3UWCgM@=_lP(kvkVZ&;GpjoS^lKOPFOLx0!UPBdK)uSp^72kOFbh(&y
zT~}2ctFTziV+@2~ri^NkO!Y`aG|(9Bt+$_^pU;_)ncAkQtEz6ArmYdgETI7cNiOlU
zjzxKNdA3^o2|z}~SXEqxMy_mEfSj|Kv0ISMgizmj{y58tYc`!j>L?<S?9FRXRS!Ec
zL=KUZA(Zht$EBwc_$EeGk>YmSJMY%DxZcGE0%qs@+4A&_<;inI5Ceo@fOXy8+~%Cb
z0CLJDas<qfLe&rg5wxpWHG6#acwpi&TNYX@RydK0OO(izzQ7z*O--A{lMlc1{hYIk
zrojN~7jM0{T%82QEE&;CH|qR*5d$&|DO0<CjMd^#&!2C0eLwQqqZgNtpUvitC;GXH
zxzNLlYl8rSVcniQK7A%Qd;CFM+-%3U-uvde@4Zu1l{wtJWKg-qL!5?_6*0DhR8QXd
zCWoq-oxJ(&@!fC!$!tCgApn><n$-=RS^6O*(O{59TP{v79%Tip>s5@QL;2vtZ$G+x
z8kp1A=P_@uZZ@x8Z(m)Fhkfd{X}=i{o16}+Jy_oD1Pw(bjVX(XLbe2iM43}I%aN@O
z*`py%(tNRa@#5LP{QA?oO?Mdeki&L74ECi|^LDkUDk_8oRkZA0$-oq2NNI>6GT|_6
ztE##<pTBtfMWiI-HbX|Mj7g15Brs{}(Od^$?QF)|eLI_H<%%o7dbK*Ks>mFs2H3zf
zr<79~$1!L^60>pwiq9H=v2Lp6s+zB6>x<RNiDxn+DA6I0=!l~Ee114|l5<WHiM=6s
z`sC4U)_9;dap}*U$>y}0jCMe|g~OE`&hoNR6`;_x?dnnPcX}9!QZS(1aCmjSm_I2i
zMT5Y+T+A*mP5^Xw7|krk`1J94WJ4P)XM>=b6$2=Uh{}kTo!2;@*Xxt{d;u655qtZc
zx1T+GI-kvBtm>wvvRy$f_I8Z12DFpY)5lMq)a|YxMpNMsR;MRbRfiBmtg5DtF(MM6
zF?qdR1<9-B^5W6uVMx>u2Dn%*m&?_1xe77(7eUT+1H>|SHSY;ltM%FW1&6rV?vRi;
zE>|a>mUtfx>y$e3GBm_kFW2kKCr^`r<dj7oJ-T@O_{sVCMO9US%O1x)y^Mxv3|fac
zo6XM7&sXa;F$2JCwrHBl-8C^#Acz5($;0~qlt2k2hOj<auh;A3*+HsJ+cvW{#z+Kg
zRtP4pzD7gT5O_9g&(F^<A3y%;%P)y}wVYQmHcfMWe!g6-s>mETxX6zb4Zws6Vhr>7
z{PE>w&V!F{nx;mgx@{NBRgCU-AwW+LbT5E06B0ard?~p<J6jV`*Bxey#d5i<VkE@C
z9=CvnS!=5PjaSwA<IC%Q7|}B(rvR>!OkfJ;WFylYLNo*-nzixlbb;_#RjMk)z*P+E
zljX_jx~XeK4lw|dhysGDxVECI>uNQNv$j&p-H_7AgiJ&MjAXH10S6<bf^T%mEH_Pf
z|HBv0o?nDwN-$<zEEXX$5t<p30%SunBw}t(8at%iOX@8GaE#4-mPR$iP{AmyJJBHx
zSGO>)nkqtI078JKsh&N5^7zTQNDhI0`N+)TN4X^sNirn{A|Mc0UM<`8s&Ro(aAX6q
zfthA>?ov`!M`#g(f#tTX+ImeirBERh*}R!a22ul(?1#C48MAQ{W7%UGGrIEGX_H{a
zg!r>h_91X7u?kKD%gqYM{1!XLbWEJJf}VHOsFSIV=|Jd9*OEyGg%Db}0e*n1ffkmx
z-D94#4As%VeMjuEIRM~^2xej`U{;19B1i?FB4P$mRV`5nv4ke5DkGLLp5!vc)SPkx
z(-@)wi+Q|LjFX0~5X((eL^Y>z1P}sC$xXwSvxV5GQQfpnGbdt0D{@~{Nhzg4@~D~+
z)g<LKj6;`3RRE67Ak@yz=F1hhaMrmwrY<lUhaM#%rJN2oSJ$493kU?rT&-58P1{Nu
z54*d=-QD%)pIv|U`R%LMD9Li4`VDGI>A;Y{vMYOY5;YTdDR?^x7-QA8@nmVIixhG2
zAh^fRo_ymQ@BHBJKl=1{x4RDa2?vQ5+UDf^55D(Dm(QL!(nw8n&hBwFNkiZDeebvB
zcDrK^#JpUcUOstVRkK*NAyj~*D#Oq-6CsS_V44s6!*;vd9}ZbL2?Ez`vp6|_ygqv}
zTb|*R6K5va?Y{iG|G53Z4_fI1_CyjZQq6ap{ch9^xASj*XZ?*2akf~l*7Mms=bX}j
zpku#R88i<m4JxVcdrhey`*9ozECim-nv>Ovrsga#`%HBl$26v{>xXgNY<79bXVyH;
z%_%R|XXh6ePsh#O?z7+a`!9xJzuWINGU$tovp;+v=9Qb73~Wqe*LA}%xL+d1IGfFu
zi)E}L5urCjo)Y0TVje}as_b^VaY&+I7>Hs!o1dLOs$v^s9b!aa@USEkm8?3d%9w_6
z7{@UKaLO{KWMv4pYMQog=2bI`v4H~dP|>WC!E#RH;n45*yQ->F77ig+&0={vU!R58
zAOz+x5m7-kr_|+PC%I4KxZmxegyliXdAVAz&n{v$L#ntSw8}6jr(R@8{ch+F-QnOn
z<`B4U>bh>Kx~<zqhz+{#JTMcP8iJY*k_XM>e!IQfY;LZvRc*aqg%GN`UZ0$EH4C9(
zj=l`@#Cy}+b=z?`4Bh7D=1Q_0qY$ck-Y(YlY-Pq^z%j%a0ta{h4t<w~ZgY3D+ipCS
zAp|C(7~^cQXcs5Qm0G!eX)^7D+Bod`ZnxXsb=_fFc~gws&gS)ONn8<CFvZ;kCQwB{
zlX1Jb*=%k!k4;mjoV?+#>$<L6qY8`xNCnK7e4?s(9LL+6>z7}CA-jWJ-*sQSlCIA=
zr!<PlnA2!^K;dOPf8%ofXib5ci5*@e!b}`O45VU2IGfFyb{1kI8knnspZAa$)tvKo
zx7qJ^X&6a`6nqXJm{n5@IA6rN2}u4EX2;hP`(>uS3vl2}n1V9PA{_mc_8yZYTi%Yt
z=X-e7w;JZ{VzyWWs$|R}dy!4o@AlpP5P+YZE#7(>*9&5H`<{rX$`PP|<qtJLDq(ww
zE*xT-ay_l=O}MBL-I_y)49E^~n*wbo217}c!()9p;qFW3hE0K+)2}aFCb-YB^@Keq
z$eIBL$r?i-B9UCQ557hwvirP07r{f}yeJ$O8q@!9cH@*^hfttUB|)Wp-jd~4)_ZQW
zfnzvP0nbg~cz@-m+Ri4{KO!-jAp{}_%`tMdghnGF5$b(fxG88!9LLIgQvj=4oCMNT
z6t6Tz4C4eQD0C{~5CI|rR@_cOu>PGgp*KxpYKo<*Eh{mOgbWBqM!{lbV&XaHt)e03
zoF@EBDJaZ<nX9TXiwJ;W{^<ExPN^7d5C~CKlVmVUIrl@q+wBjBgQ0~gK!~xL>v#xB
z07x>SWEBj7(wH3^iiYIddn!T_5jWO@DsFcDXJ6c0-;KMGHY4;SiXo#)8gH+!A3eSl
ze?*El#sVY7x~Z$vlM|m6r<B}>&J-9DSTD&m55%mh1SZKGJ!Wc6)7DLUfh5L2wNWGt
z9A=0x_MJy;`cske=;%1nOypafk_ZW49Gk~)y?65BU5GWJ5ph5wW>bl=1|7k&NjA$W
zqnW4*XrA)AB@j6mg33g(s4J(sm8+^o3^T6bdK~UF=d561vB24a`!?_pLkwx`?{;~&
zua_;82k$^t$HijirJ`4{e#^T*76Hha88+p)1w>^4K07-xGXPQrq8O?c$wUT36U|hF
zodf{P#9RSrUDrBO0Ah~*^s5<B;1D=4pqpH+xQU$VA0q)kYm3E{<BjAzXQaS^iQJNr
zkB1JEVdRQuU=5g^oLx{kgB)K#Ax7k&hG61$cpqL<WaTQ-ylI>D$?0T6EDs?u`wnc9
z7ngu!_hmsK)2gl8_3GsD<)w(YUJTH~7=SSoT9H6fNj96$+A7kliL2H6m?~kOQ{gl`
z5MpA2iiijZ3=Ofa0$W`@Iy*a~DUj6nz#&8hQb0m8%V0<AFn}Rp69cww?Kz~rLnUOx
za+G_<up6FCG7-kW5aM#RoX=ZRQB(h6stOXRnkbYkFDPZxggc^U)}CCP=XQQbI(&7T
zVVnw9vuT;+-fKcaG)4;{1g02jX1{`ibDMlB4yH_In#@@Veo%rM_*7t)t4ec1fM^YX
z5+bO?h*cAq0YR9Mra9<zgE)Kv)Z{4tzBghOGC)aP41sVF<+RG3q`TaYV-yWd3^C$J
zK@Cw;N@?u!_14Z$VAfFN5->rYH9DnwVY!!b%FNZ6vYH}7(?p#(@ug4qG$tYs1MvtH
zzsCG<0OVt$)v@n9rt|`$sZM>S2T@~rmyVYqmL$b#p*AH$8X!T~?+<}}lZ<fhzB^{#
z+A$w~%IYcNg%bW@Rt&%6P}fa6YiXhms;Id-_1IRHd$L@*$G`vZyE$I@QxvA+k?wg+
zE<!*njuVwkMGdM<Q-;VC-iN-CEy<`wVRm0T0Ga_&5x=_db^4tCVaU*k1C}4_1ZOV)
zg%6;SKH^fEz;RBDcFBcLN|9n=1C{z>N<9bAGDvU*I;f(Dw5f84(M(BQe57W{EUOt3
zLm4AjoYes>K+vQXGAK$OBw<c~5V8m`*^n!w>>>9Cq6W-J0U(Q_s;EGBkbn8)^{bm<
zH{fB^F(aBN=EijFhn#wbC=R%QVk+~ZviQqXry|z{%!-yw0Vz&tngAevE=&$gGC;&&
z;OT*dm!!EjFSd}x6je<{!7-%*s2rn<-T;VV72A0;TLP16R(1G)abXigvs|=M(3oW~
zG0Oz1noWfOjE)(sUkjh|BsUI~TO@7ONZ$|RIE>@T=~=qCko^tIuBu~|xZm}|)m?je
z##QCtZU8_6F)3QI2NmrUx1|K6DgejeN0=g{$ki2qjHaNXs5vWh1Y?BYMWx50Jg~Sh
zaVR14E(m6Z>7JWjH*oo5i6b<Ch-#(o_6!H&;P^L0@tke|hm1lX0*fB$6p<VsSZZeg
z1XctxDNzL;GYsGiLB&c<c|u?uQ-g{O1-*1PQ}fFQ5egqd4GcnXAUSX-SEHyQs#*fk
zDPg8Sl>v;I2^wZ21R^%iMKA^Piou~pD4L`MHybkoMC4%8<K^X^n{Tw}x=Z(4An~rm
zM)RfbLlBz}n{~>ufC<4r9cgMR#7u~0!LKV<<9PLj2!O$7knYh+Ns4t1kwcKkM&y2g
zl179|h@|R(bZ;&LL!ZQB2mk;e07*naR24%zt9@^Zh%xvontV=4h)`&Oj<YMiEQf0Q
z<dPWy*hlr|t2Q<aq^@@JhXb_0e*H1l5|72`vh*VNn<4-Z9$X6uMgi+}4TH(JABM4(
z+%m<c;i1Z1s+u7l_S|FM_UU?CuNT$?H0SOCBYLFGG+_l%-0jn=t5@62A?4v@HGBU2
zaz39SVBlb&o`vX{j?>)NiJk79QD5^E;gPe(%hh59eO02^v<!?(xK|Mo*_8Y^*{qNL
z;?mohS@`UCU)1ls*|aXohX=ev@<DXDEGIakh;)a8sZ~{#bN>9(-+lV&r&q6EZ+E-P
z%SRu4@ZpOWFG3YKu$VINlt0g&{d)XiKm5<}RI&%+$@`1&co~~c66Hcpc7i!G<}5yP
z218<kNvBba`JRPPx*IG#c~L(WC8SxYY#)BABX-Vvcbei7kI{gIQQ#{>NBxMVG3|ES
zz8i*NaNK;(5<+ZdP1DYRr=!wA_*Udz)2GF$;<1TS0#lA&!P#(NuoPq9z_E@L10xeE
zLylDo$uy&669#7Tuqt1ik4ca*d;S(sXqsx?jA<J@C>^jHCH3Qwc}SAQpBsw-11RbU
zn!(Tn{e>?<xGtf0wtk6^wE}ndz-rG3H?|`*909E4ccw9=Y{V4@CKNOz$bjbQyru+5
zXo`81+-J!_1wc4pT~(3=sT{b(p)h0&OXiDWd27ING0`-FW-~z(vxFd$L9Dn=%XDT+
z@9>0F1K=2oVAwz^lqRH35BvS&XU`X>XT#M>`l}d1TUEo5$Lo!BJ-3l5l=%ymbZa$5
zVw(gMR6J58QN|;?5rKem&SS~|C|OgI5UUvL5JHGiQJId}&=b!R4D9H;1v<ufOzFo3
zC4*pk%!ouYATYm10F)7dCmtde1r?USI8!sf3gP&G7QvIpY?R#862w+ipkBAjvBj}c
zT+oA9dOwW(@bbS<5P)MA8G)*px-TF79#zW-Bsq6oheR<}Xr!Rv(*<8%7V28LEwQL8
z5rG)ob4f?2TuGSnx6MI#1`h&#(M<ekVDdzAx-Yt?&@G&Xt5cjX9M7~sY$cbfXsXTp
z*6>fqC4f#JMvWKDwWp^apG=s3z-DOR@_)98Vl^SEfe0A^6eO23Ggg5Jd<#9rYLpVm
zI~*^fjL;M2Y!ZljRa0K*a`rmvwERyFajNHv*>lR8L}ZWN!AZ+)58GduMro6W6IC@d
zEbB^kqh{%bZYH@20W3&gsW8WgOg8j~SJ(CVk|M^Y!uxb~6SeE>+mzGk>G{p=_V54x
zM_1R^bzL*U)qK|XhqvE)<7B-w_Op}}>^K!Fk2aOduDlA2Wq|CDfky!%sTiV8ts+gO
z1stVe57Tr?i#Yu#CMW`^LHN}_|6*3hC(oWVZG$-B-24=?2ZQDZ@n=8!;SX1<)qC%~
z|MQPN`iH;&hl`5~0C@4@#nsj8zx~_4{hPo3>$l&3mt%PFnh_x>_#dy6h3;#;FFfcx
z9`?b%*CIdcP7GoCJs%{)KuJD1A{`&RNXKxY>E<oNYhMPSeZ3Sob`0fH`3>#<;QRN_
zrsOg+gq%{!`J<ow<flLVXuI7V_J>%-?$GsJKc6q&c=OG--+A|gZ+s)x6$SQOnWMd6
zDi8fh)zZMYVgR5dIs*}Vj3yFctg320Z{~B$BVcAC8xuh=U^GG{GB!}l(^<r5QpWLh
z)4uWI5B`V$@xS}u|L6bdt6%@f3<NX{W1n>2r*ZVV!<ewCxUDEaHXT&W(cB2Z4^2Yy
zIGLks4zYlL00C4=OgD&+yHZjB0;Dvim#<#Eetoq+^vHGHES^4letQ0>ZN2m$z`_$o
zFwkM_J1WRVLqtd7`Qjs16&IruGO}oXu%1(&t|6$y^}y6j%z|nnK&GIYRfWk)`f>=8
zGm?Qi$HP^8>ajL9uX2~WeV<aAEtj{=jAO$#gc!nrX?u`eN9QYV@4cq>JB;n#D(+;J
z!lEuwW91Y{DSi3n%dcKtsbb#^!!ROq)3meMY`I)Le)@Q^KqqNCtqYMr3qnne$sa@{
z*Qb;lqSW|B({I2|9hsny_O<l*(yNswQdOu_riP}ag7rBV8o+~HPbp!jTq0U78MrTT
z3&Y{Tgvlmf!$if`<4dP%>cLH5Afm(2spO`v$FaY=y}i4;*>1O4WW8Q5m+O=DX*-({
zAsCwIL*4}xWfwg7J09R_6MXR)MeYGPFoheIGY`=Jsbk@M{P2EWmZ_E<QCxa|1WjXg
zk}?M?4Mka#J)EH-7GC<)Gnt`z9;(}Ltwf5E-yBHJwkdUke{&{e8XRI^u-j}k=+kEx
z&b47I+Jk9pNz)-I1qe2kfuQB9aEkNMzI@!w`PIW7sWz=XOT2}t=YRVMrsSYcH98_%
zaVr;m*|85sL|~|v)wm3KmpG-veqXn9rkIsQ7+gq>H17Mf+1HCEGa;9f&KG%~fBw~W
z*S-6G{VyN??&|vb+u!--qerI<aOj4QfAbqK`Su@thy)=-&s#PwG<2M1oCSpEE(@PE
zPPT6Yafzkh8q@65byi>qB4sypubM)ij7~YhP*SOhkihuz={rr+ESAf<ajXh?#@_K%
zJzhfU;ptiaxBu`TRBgRp|NH;t-@Wn1^Y4HE`|rR1-t#w}J$`)o!yo>TnLqsC1Dc#<
z=0`Sy%flvx{C#TF!>z!5c+rE-c>1ejxq-*pjSwEx6!4$@CN@D3A6(v(PVX47dc5e(
zJ?7Jaax6HGBk_mDLHQHQOXTxKMX;a!?5F?!-~F$Pwtef(H{O2x&1X+9&(GE=^<RDU
z#XtVz4}bf~CokT7^W^LVC+PY_NY=tty=T4MZv>{I6I>1NJ&;Qx$JD2>7s;MyYbGK|
zWHeQgEIIq&!S5W8K{3QwRp;jyfBoP7_y6jz{+pMd{QTzSuMM&Sq-@*mIE<FEc!W(`
z#bsN!RjB8))!7LL^7M2n8Wg(6iW0$;BVJxDbJ2i0GhR#&hwf(|{d~1tn#xB%|HTh~
z_~TbEU%h_yYPa3q-CqCZHy^K-tL1V&eNxdpswS0D4*TuzK22Y}#FPk?1I9Y2=ziY~
zVmez~e(T%K*{QFyY$~+r=mSHKv?BEAO`7x&NF10ZzY~C!_hjlDbDmB^WB>#L0-#Yi
zVKbXCVD5*0dkfklSxPD8taV&mo>LWzrehjl;MX3}l573&@b#xCi+u6&_1*1`kktw}
zCFlI=)vJ#``D9G#<Ye784HbmM@i!@ZsRx>oDRH-$wWc(NsqHRTb8+^S<Ij$7=rnY~
z@_gI0I5^(bHl0CqJR-c(hbfT!epdBhx#Qp+oDvm}QR2P=m}>6hd#C>Ar!@TPm%qHZ
zzGCK=Uw!$H|M>sBe)&b$?LYnGw_kqo`IldOku{y1tbM=!d*{jIa(-}nn0cn{aiaDx
z0_B*8GO?_+JVy7wl1e>M{vGZ3FZ+8v!-J1OrO+<{x<$J-wE=kl${(Yb0bM+By!muG
zc|>#=2N5yR;cl0%H#jCxF%>oO1uYUN!CklAr{VnkWU**tWB?3QW^iSDJ-L}(Xr_7`
zPpW6P!z5dUGTEK(n&NE37>S91rhq(jTCO2XGBrfvQkETc+SAiY<vA?%Ga(^!5CctW
z2QkI@d|t<fkW%k~9K$e<lCu)<ya{bxL|$N`qGsF8@bSl=S5<R!yX*V@^77*RY`tDB
zs;d6@<Il(3KY4OlRS~f)SW5)G53ljT8Wg8AZqsQ1IUUiUR$5piXVMm{4ovTw0+wy_
zw99ZDnU?6@X-5>k{OYrR`lo+Df^Xp;US3|hD$H|R@g6VZ&UyrZ!(o4Od)u__-~ZqT
zpM3Jk<I6`?6`Qs(v(09kQ(i5XejE9urG!!V;6#fftpKp5hxO|x(eXLf2fx4`3~9?N
z%2SZ?@h-G`aoVI5L-@~+IUleonu<=KfTN7d|Bh#j|9%%<=2cL>xoK8W+Grmv{HK5Z
zSssT!`?EiLba@d11DcAw|Ngrlee~1USO3TFe)rkU&6UdA4^OfOpY8WM?@|{69A|%o
z1PZPQ33attEVgYs4t-8T7S(L2Pk9(X^4JeDrkqFfO(uY-0!JpEFPAUge(~guH!)Oi
ze)z|)KK?(4uDQM4zkby*8|a8&OwdGHHenut$p{_#Xw&va(F734s1!DniXQHZHY-C#
z05w&`>#M6D{?iX<vssMwkAL*z5aRc~_g}Pa14#RQ{~!OaAN=CyA3b?|Q8l$HB65M<
zshJFU9837LnVF?ArO{y#<#YlS#Au*ipA(>hPTMM*kVigB0%AmuH%B#OHZ;wsY$^;0
zkfj*jxa{-%OD50?b%v637=}n_#8k~dcVfAz>#@`B=1vYHwv7)yr*0+~2p-dJ;2y4e
z%<w4Xslw^W$$E9twliXK(1nQJ+-`pQ(MP}f<$rqi^zmx7nA{N_D^|uiMgMC;Q_WeT
zsSVV`hs1#XZu`8~d#q5Nc26mrG7$_MZ9(@R7{FIrB{Z{aw*2D0uOUj=a1>1VLEyvh
z<NJ#Cu+BdI<E~aK)$_4(CdesWUteFnel?%9Uw;1C7oUCl=l|uOK6~~A08QaHzxntV
zKmX|T?DYAwP}MUabQ1W~-QuyQJeDSbNL>l>pkz7z8k?Mfll-QfBxX=_9@EuPgeqW1
z4HQnZY&~AB<}GH~#Y35A8h)+zDyyz3796H90Gj%ApKa>#v?)6sGeYv`n+Vu2A{$y(
z4=l3l*Vnt<?#bmT9_M)O_GMNpFefC8RTPnFMQs9BQl^YR&9%G7$sfDI1I=Ts42<#U
z^Fh(<LIY73z@iyWD~W07h#nuVULF%36IWSGV_W6<sCQ{h!(qRVu>}HA%kD=;hCGgU
zySUlcCkqJdMU|hQ%Vj&8)xZ7tw>b-;{rZ=`YHOaq`TX_O&3?D5n<bO$+OSMNJl5R+
zz(n=ovR02Epz<wDN&!_w)H0`(vO__dRMLgW<bz~?s}1qK|Apfu7y==F{`v3tM+}H&
z-+uh~vT527*b3dl?sujx(gXa<|LQMaUA>Z=|MbtkSJ$;aqrdvqFaPfE{_b1f`sN>g
z_q$B&U3M9za`~E%<r5sYun(Hksk1B^jIT|b9~714%|}l;HV+Gf@=(K3V0Of5Okex`
zKDeBx`um-3`2x`whm##@y8KF<i%pE^`&hR!N(56PYnpg_cl}TQ^p8)UK5Od6gQyON
z{a0VTLWGl(#eA{IBB7Mjzkkg?9C{xMky1lVygft=92B9h+p3whv&GHT%`lpb+8_FH
z-{)a4O?gO?lVmZ;(-kN&LRE+PYO!1|XR9RuK6>)T<>T|+E+gxha2V6BGX-I^MU9K7
zbx>dkfz8BB5DkF9#9V<o(TB90R9`z)3p3W#1D*GW?d|RLKmWhK3Nh}s+tqr_Oy}ok
zW-yK~o4VTXHYxQXmf@6vXO=?h50Xcl-Uu}t$0X`0(IjRfNli#Im2g@#kSUh+VUb6E
zO!!<88Hpfg<bVW~O3ryyNX3b2NF)WRh-J1bY^kyw<@Wj-PfpsVt(GT!+C&)Zx}yCa
zHr@W}_VjFBcHmPD=!zXTfU1_OeVS|CAH;`#*zFFp*}R}AQwE?z*Y!i<5MdnsX#V<8
z1|JgK+$@AH<MPCNJ2qTy1;k>ha5{ql0wbVW#-nqn94Km~O)1rjmqUKH6a%8KyHs7W
z{-A&?Hvry1A-|ic^GzqQRq5r5EaiBS|Ng$oiss{ZF9xPBzx=GNalhYX8D777`SzPH
zRwwKIe$N4izVExvKmmjx93R6n+BZFRV-G5QL$srw{P>|CJ}~!FDuiR50bulCQ09Z^
zuN`P+<gVn&!+EbYGn-nk2bb$a+dc|pCj?NL?oO3|DK$%Qr@tX$H0=Z!(GZx)R1^%s
z0#Q}-ayhT72=@+Fa3&gv9QoekFxvfmUOd|e2t-t;rCynEptthHMkJCkunQRih3Tvf
zdcR<p4!0u1DWJgPqvo<H5#hjKia;ExTGiccCwF<f-PZLSRKz5^!jcFK^I=SPJ2{+C
z^dOuvep{c+{_wl+rj$ny6jePvTM=Rv>4R^)^YrO?UDxdXrD?V3H`Uade@!y%z2ZbS
zF+emG0&;<}J8sHE)f^;PY(2hW@IiiHDts(G-b7vwo3o(v?>_y+OaYOZFCSkLHDyz5
zO5VDvKQ-30%^&^oANNC-Q!-HiXlJt+V+i3d{^I+O9zB}PX9hM+x}EDSMaPJ6)F<0<
z$n|yI)A10Qj;7<HLLaKOrr;ng53SE<pv+YM|9(%r-{%y_kN#fuZD#jvn;$sSyD@zn
zoC+X)cxxW>c5>1`{gXf6-tB+<<DdTcCqJ6E^SjNRU$jkAzwzS5AAj#ppFMwCIG06f
za-3=7aZ%-mMR|LtSJIbnu5KV^K#NsfRkK*l4dVW=OJf=i((T7Q43he>8$_~+9Nl<C
z5EZJnY3Iv!K5yC<0LNiOf~KxQ2(x*d&0#SQ0i`0C*EDa8f{u_KP>jbT0t`${J=&X(
zKWZWbqf)b>p&pn0U?MTVv*(Xrzy89E5cKNxSKIB~vu97f{OaXLAN}n0>zChs<C$3!
zXS$(72L+M9vimf=2Ny98plX1mZu&rVFRkKz^L>1lsLTqF!-UeMdpvZYN_^(y(sBi2
z%px9EjiQ9ClS0+Nq$aI2cZco}muF|~V%cvRuzlS$v8kaubgyn_&mPt5MR}S{ihCY#
zx`Xkd92(0^#Q>nHsu04<uU?7SFbv&c6w&SBkaI?&4?g&Cy<P_n<@<basZ7__^!r1J
zcR#*$rT#R<lCld^2@8s4g>UEvDkUT|Qk#-Yj>1*&5PB)MmBYgU0Z_$`x(Xzi_{tAl
zh5jImzynohF|-uvviBDEZjG`>Rtb#ny!|G^*dKOj<iPy;_3J}-n9bT(FJJx3uYcV%
z^?c?Au*nVhU{gEA8{U`N__fu$OnUkU{lRn=9i5Y9JNTfBIOZ`pwCA|NrAa>N+>Nho
zn(u+ZU+X<4k4c%pO~P-~2fGS06IFFso*4lml8F`%s%Zd6L#P@!i*2!<z5niqPoF+9
zra;qn-#xM-DJ4XA_1XP~yJ-Ib5zS@hi0TA^A}Ty;Sw*M%Qq34KdpktzhE-pWd-XE?
z*=lN7MoJ!%UDglC!S6ywq=0c2hIz=_)b-tNcgNsraMy2|DXK_+yIUN3m{r6sS~92Z
zpPsH%J*kC61SkySFq^d@Qv3h0^`=jnT-TZ3S#D;&OI24@??3|$0t6_61UZyRX*{8j
z<?-l)#vkmkBj!JqLkcgXMkAS{5hZzM#1REzBX%@;tMz>|?>*=E!#Ve6R)dU?C;{DF
zUG-+(dzR<<J?r(9Gch5c&j6UHc8Vbc!}k5fJfn#Z{lg=vLsQqyx&O^KCiNEbx8DC$
z6V;{DM^zD7K>;9@l8Hz_KKb}#qU3J5+qZA0u5(eeUvp+^YO3Ne3dscxR_nE!$wcI(
zm+tTP(`vO6&kaVZ2`X3u0T}&v*wlEwB^MJ*TnHxGo8Zs1wcp-)+4lKCxPZZ47;4q)
zv^tW_zz7)KU+1W+I%S`4-0SKs)9M1NNm2l~m>11&q?+D1I{MfD)BpJGH(&qo!w<)C
zk|Mj^xL$AH`kn7=4{scw-0FsosC}6AbXv^b+ezVne(P^Q4MXhee>tZCt`Ivh9H+9o
z*k4@ic9&QC%X5>-N<n9vgt8upXc*EFt-94F^&80oV3()Q%s@m_mzc+t%Fq{9+oZJW
ztYb0M)L}}Dv9byuF%X$4*V@=bqKu$s1d9Zn)*PIi9R2tw@9eM2Zp_n|i^#2$8vqKX
zUE&}7;CtVG{b9#IApSO~YP{!V@-Ri$xQe18gQAN1%uGv`JQ29u7i-u}ZMjgfY1{zZ
ztk;fImzIlwAsZR6ph4GJaTX56(ynd?36g0KvM<xLyV_qdf^pK!hIuvge06pC`J;o^
zUmlJRefe39G5#n)n4SRY@Fpaw&SM#d;r{*mM@J`DyZz<W)o!=n@5}9bcT!60_2%x~
z+b1VSDJ4W&4lohO3>5u*v^fYFn)=DLzmaMgBK4?-HEP;wjWffd*t}+@ew|R$AJu?K
zs;?T=HW9<RO|($D0+>duwi&0{t{SG;c}id@#c%Y|zw)23V|eN1yEkuc%QQ{nc>cp5
zvNNjs{>I_q58ip__~hi|<Rm3#0t2aiDb@8VEO)a0a%r{3QN4JvDl%Gcx-ga2+3Zp=
zG<y({T|W=)TZvu=U+8of@|-sGx@OL)XS9o&ZEmAu2V2x6ni*dln3e)69U?LicZiy^
z6)XL!d-&})jvw4cL{Mz|I8n2l&AGDZ?68;th!p=cGzRNoNQ(c)>S3`ex2%da|6^Ux
z<ilupsi<h=(1CgGmuK^aC4HflYp0=@B7i2KO~RGP^L%!Cy6RS_xu}dqM9pKP>~cJR
zdUklUu`acty{MW20)rVMoAJjVe(~vNpHI`oOeZ&wU%r3m-rZZPp+`hY$t5xzW-xaO
zn$NV!y$>Sj8&jm{NCD<`Qq+k4ql|gAzeyTF%pnaAhecd(>aTzDU<wB=e){RhMBMj1
z0-W5unOw=-fPi44^2HZl{N{s?e)G|9knGJj-}=sXzSDIb0EpN>{KMaW|NHOUxpz-g
zB!qL;UgO1z$X-xJv|DwtX1&%BW9vPuMrpS0*1PK3?igFUQU}vkUAF)#CBCcKVKv{@
z?N4c986PjS=~WAOZ>D#DolR7vTwGo~KfO3Sxbedu{)mX4K6!R=acKrOZ{FS<Y*XJ+
zT@U&Dzw|!6Fokaa@4U~88pE3va_s;!BjDxb?&|WY<l=;SFbgE0IxgS9Ktv1`sb}uD
z+Y=%NfZguQFBla;(5}<NH3>pb){_xpK}E1()u)aDjhYEM`uGxWQ+okKmIEBadCuRZ
zbob8f-F{R<Ffzl{uqo5ncikIryuMm*PHrBn7A^iLfX_A+%vq8KU_h#%YB`G*t&#>1
zDUv5dNL}yKB$rKD4MnI_8COB5%}z~fPaGN{Fs0tKfO=>#5-FhijtOF?ZQA1mIhAo5
zM>YW@H8M3~CPKN~oqzdweeY(s@?;e@Q#A=SHG<R|&&zG!y@ewOvG4oT^#_LsYM_Q+
zfBkrx^4+_4*Xz}Ky=JDk<!X#!h~&digptxp1OQ?MUeE(WlMwp<I0MAz4Y<4pBBMBV
z{6OSEVpfHWh$aT4V4%?>Fr_-GwOByUn4P(0Y|7`RRc|(cXjc^ikV}>l5rB1&vh{o@
zt4U>he0=08(URrx@Zjj^aJAkdB~P&htQ3p7a+nR!i_tyJ|2#q?TnX83!B!!)#=s2G
zOjNjT3fm=Z3kn7<Cg3mF8kg_&{DLot2z5}$O)-v$#rq$h=0Ka(DXKv(YzE}E?&Kq!
zVo-Atw1}Y?0HiLNscLaum6uBpsc~kD>8lZ$s4pNPf^%@WEbvw@TnP(Zt#8Joi6k<#
zdV!FEI(%li^Nuca;Y|%m6p{k;H&$|5#?#66S2|5-Fpc9hjb>KN3~<^{`}2$Se&Rm(
zHlb85@Y!cy0OHBX?RVe%_?Q3q-`3mp;o&xC{q&PBo;-dgZ-4v2OSb_AaIp!qsakZL
zGaCxbXUZ623csJ(&EGXwgM0`9QN@5+5d&cMA1qSU->Es_*s2={%q;nnM?_{cP1A=T
zy^jDQ`MYm_@95~L?>lT8X_aTsp8Y@n*Z+NdbhKLaj~_q&i@*4b$6tT_{deBEbLaMF
zpML!F|M%zLdhJ`cZr@7CHJZuaaC>3eeEqY8y8G~X`h3&HZWm+u3bC1po@-H5F0^@V
zV(dic`T;kLi2<m}H!6TCM79?-*kRhc?t_|FJ7}i!CiwHuKl|&y{_Bt4|8TupzxAEB
zj*pK1+duu&qeqVj>E(|<dFO|}`{3aNX78R${rhRP=i{<Qd0{&q-y>Dspeu@)i8=Kh
zAS8rU&kD3Y-k>m=ph_uON<Za1O_M6-BHX3E>xO=Vv^qMu34kYeZa)49rz<s6W?1zs
zJs2>FrMloC50Lez5nj;Fm}yqiiejjz60kYH$0ts4;^LQ|KYsM+aX+jN4h~nt=F2ZX
zxwyDIJG<c2uh*L{@yW@FU<p@f9coC)KKwBRKq?|SMh=(1AR<|HGR2b375D;~kX@#v
z*Pc6rc;G93wV{KeX<<M5{kkDaL=sp;3oV88SbEr<U-3B|41-I#Tu_=4^E91(@o4+n
z{Tui0#`eMxkwu%bvC5<BC+=s~H0Av`0TNO&Lqh`KtE>I9=chpF?(JKBzY4HMF!P+7
z0Ci1+ZKv!8Eict;a)T{-cs>qpb|M8Q+0k-uZHs-ViHVeYS2Znh45{Py8laMo3G21%
zY<jF`atp*={55<;<$K!7p>>i|?Wf&f*^MG@2-@#=B~RlxBI3p6<>8H^)dq-(IWaRL
z86y<+@rZA)ODP_F?#ExK;KSOB2H@jUy8ilK+Z41o3W~nopLf@Fsswk+cWq7Jvp^Bd
zSNk_#^S09Rvn7W7M5-!vQdiXRj?pp^lB!|RWavqSsbgl$Ij*#l<u{*v2G5?n{L=l~
zw~m3a?<i)@R@KVORd=kSO^eiO(@Yf%RSL}GMGHN{yd#eRh=^z0wF4h)Ru!OmWrbdR
zx4C@Ozp7f7vh_<09Ur8^S2|hAnGAgi>@xr}(_;Ix%l+BK_F#nx7yc1@{N()NYL_#9
z`st_rkluOc&0DulE-$XGuEzJ?`{1Ac`P~~g)}C6sxB)FR>M_8W_iYVD#Td9m2;(Jq
z9MSwF*Y91MoZjyU12X~U_M!WiPK#O(L=6N!`Q$f63Um6M?|%32@UZW@HYj`l*T4Sq
zi_ib%@BggyWl#VBAOJ~3K~(-`yOB~p{`jMx{`9AhpM3p$zxR88|M!1)d3CitI3P3w
zKXbjRKt$}iUSj3YzIMzxTzIv7I?=845v(}#r+=$&I26%@YS$&t_~Kx>NwQ}ukTpsD
zi+}73MeDL|UEJKW1X@ep?RNkEXFvPmi_dT0IeG8bzkct%e?B?6+4bGQ!S?Lz;y?W5
zUyfPsy?mcY63)Z;hW2Q0>9P+tGeT%%u_|9^V|jFN?%~1Vo!ck--SeJ0)B$C(GD+T*
zJdXRRWE?Y1lZdVihg&xfyFRT~n|?I_n3Tx^^C*d6y&~(W_+rUI#O$o{N_7CZHmk3Q
zE2H|uq_*tw5J|27dGhs>U;gr+zWVY>>bjKr&31csdcNE3*6XdBU0m%_m$uvOfCJzR
z%6AfHtC7`=5T%400HRMWrjpA<STMR1G8C|IANde~kWkwI#_A}^Yp=H9M|1Tru%R(?
zN~x4kfcZqJs8LTu(|&)2QbL+yK#7K7plK>+m%HcZtK;L;ca8vcq<$mdd}IF-nt=0*
zv&+konV&p8n~HYb>hfy;<(FT5_2}`zcJubzZ@==&D=Y5J$RPAn26gfev&I4<Ew#E1
zU|vAZ#zOODQ8;bPq#2pwGbQvDm01hdjw!ClJgKUnN3K$ZXn_$4pwvQ^>J&O$VU>MB
zjm1%S27z3)pkRp-fWi6c=|>-Y@Z`zkobztKySlhk6A^JKz^e~meeLzv@7=qv?$`!I
zN)S&DNX$YV7ENBudxPr}b!h{wdha%k2v#MOYJjwT+-QE%xpl3SwlK2Ae=76Dmu2YI
z^)@$KzU*zE72+MAVTy(wR|A$OuBB|o4K>+M48WX#wCe~_r4%9u8|YZd+2hma&o93F
z-8b&1+l)Q&T#%}He^$jP*UmR;VjT^hvQ-(HOTjDg&{PD8&=#CzGb=^fz8PmZI%(_;
zp>kVr;l;w3fJSDu(WaBZWGAQwVj!i67EuxZF=^S4)A`k*SWJ5>#QN~y#-m5iKlt#o
ztIHjrU0z)EeK+oN*Yzdqvu9_gr>8ehjzop(EMz_tX4yN=pH?g;YFiMJool{XKxhw@
zRzdYrFl41PC%HcWDY^&*Lqh|}Wwib0pMCm^|MZ`RVfFeOZyapbUDq=+nw>s>etLTP
z?yuf`?OU(C`r3mZ-TL8ffBv_B`-`u>{Nk%ekA{92hTaUgj!s(Zmh)J*O<wl4{@7;m
zPSg|@o!%S;Zu9B+VqZ9mrtr5nj<cG-1(z=8Ki@DM&#@9g^ww*BiH54VW{Xk<ut$%+
z{D=SVAO85?{F{dlU%hwl&Y%A2pRU&FPyX$ntk>(^Zue(@_J6+r!F$s*d33oW$o;vm
zw!aszd~H^)I<=rWQUF2|1vDb+`~KwQ2+O%n)L~}Jd4GXAl`)m68+W^L#NBQjCn(Cu
z{q2*3qZ=zgA!Y!(ID4)tpq2=R^-vI@hjG%P=7E2nh|;A2u$cvZ%a6|L`Zp@u7Up5<
zOB)gS;Qim6o?bkB?P1^bzk2uAPaZ#BueJ{#KD>Yb{^{x2fBw(^_3`7czx~ETRfeD^
zwN&<q-a=%gq*i9RyP1fns7N7i3k^h+Vi?*sam~1T4a_o&2C8=z102ZY%WUqjlo`ij
zhK9nbD;!B|5}QhbGK~}1#H6WXLcl3se*Ns^l~=68s$WGP+BMWuo8K+HXR0=i`>yLx
zpFgK=5W%NUpA`{AChn%G1V@WFR5-}3Y>z@NxDkzMu8VUq1QsF|UVjFU(VXWQ)-q@j
zHKM(sk<9>?$k-U$gcL>Uu}oDlEOl9iOE{D-Q<+F!eCTN*gV5@{^uo{fV}A1N`Op96
z7hit<`D)d__N~{3e)!~*Pd@wN^H*Pc{r0_kxyWw6cj*nMt_Ikes~`{&4OO!&6^<1f
zxflr7U>Ma}xHuXas${aQTH>x!td-_$6Kd{^*4p}|zQ7?t@SWRph=?w{@{h2TQooS;
z=+9rJxmHli`+bMNoInMcQzFMPnqd)1M+e{j&bOXkT>R=+@4ol`Zw_y4H`|SRV3ZOr
z%{I;%yap$UV}}p~6wyFz-pwr<8WpVS`uGVthqx)A1JOY+Qx5!Os8?>KJ>fMHq6-KH
z?vGYi7Z<k6WMrli#|f!{n9Ai?b~*2+zVDF1qnwEF@Nl)=uD*W!Bz1(yUw!rUZns~r
zH<y=Bce~xe;jrDTMI?m=EjAuLr?4>Lpu^jj!-+&_fT)USDvsA!IC}86Y#A!~j#?4i
z?v#ilbRQTrua?<3j-P(=$>09RpM&bdhp*naal`iq_wL>~IX?R9pa0cIAAk7o{@wq6
z^VZRifAYJ;@PGX2pN+e6`0|64*q5(p(Z#+{QC^$I_`Fw*&@fnhah-aivM$^~u+Z|f
zeUj<|R`uIvJMH%M3;2b4B)WhZN(t4;3X9cGoFBD5GF4gDxd5gjW*{Y(Jih<_dwCik
zyz=rN|M4H+x^?UB-FwfTJ)fomNZ)(=yBzUPfxDU)&|r%#Si8@b=xJB1*!3PCnR&C>
z92{=39J2NuX3|mf3d(-G;xeV(C0tx;$5wJG1(4H<r-XY%^)SS)>q-$dNsK*l5*!m`
zQg_P%vj#7zwe9dt|5zoG*Y$>Pm7|C@_o9f%em|PwYFG_@fA8+yk3Rh9wbviszIAJ}
zUOj#Cln^%SRbo;th#Y`sr@We(2opKusp-b!-Xu~J03l%4Q<|v-<J+wMdSBmSvkGA7
zl4fnZ*{r}1ekZFY;zS}6%PIjf04xK*it@8_(bS_!DWy!z5<=D~=jRvG<<)A{S4J3`
zp@;^}&W&6)^KcO{rF8S;got;$JrV8qV@f0<g#6Z<Z{EIhYr8#2T@RkP8?+|S$kS{3
zD*!*;usI#)wwtOW!2hW@gSXlVFy_fIVvzu3T9ZeRQJaU&BEjHMBY@19aBQF&K*S<5
z*|}ZD?Wncbl*@u26e>%?x^E(S`1%|DYW?8{AAbDtM`~Eq1bMYR_})9;d*iJ)H`{}(
zW?7i9Xz_m6n<|8WUaNtKS|}vY&GAwVeyVL%jB2eOQ7C|jV!rH<S`^Ope|+e5yjHL9
zz(OrS+*UW_RRZSRyJ(3lX7=c7#YX=PL%nC1%+q3kEL4;L70j~${Y!c-4R`5kzx(Rz
zCs$Wj{lJkK01V{X!0^cgE+5(dszjt3)>DlUv^AzNSS4mrtU2Q9RV5C{M&)i=php3(
z858C$7OLCB{A<;d*`JCck|?FF>kj(DDj+0+7Hkp^;8H{>vOmAfS7X|)ebi)NM09*}
z`#Zn$+N-bLHYCx4W`{R6VD$OtUtZnX{^(zP@8-=Do_DczD}l6tWrm2Fr~)-r#jr_e
z32*`0bUnvxsPnfm68~m-pEWgxf4>nk;Qaa+@u`^6)z#&@@BT9Ylsvuh=C`+-EfT!`
z#_Rv<|MtK9<A41xDW!f$s<PQ^-g)Qyr_Z1L`kz1i!~fxrh(S%<xJ}qp<`E0MP#4Dn
zq4l)2{D&qzm`Pc-pkdaLT4mKp?89g9=JnxT)N)!%uB{}f1WpW*tol3SG^s}w&ERLN
zsZ3gDHH|~&v!M_~+`o7CkN)Tne)-E^0qDQ@(GOpG>7`QS*|VpA{^x&wak1MT9RB1d
zKUuE^oB@6qt;^!C-JBcH%0q1T%r!u5loU*yXtP--JLzm>-DA13%+pSjuJ$@<qLLD(
zk^zJPkUEl{mFiIpgq(V2N{Kc@KgmcSiAg4Hz%WEYX4e$pY?;T3EYw)F@vPUYr}|>W
z4|ezNtxrGw^7GF=-)`3T?%cX@cyROP$&)9KKm72+v(t;C<Kvg_-=)AxNPIcB&Xkgv
ztGpMnG7Ez^j2b>?6=pQ?C$3%<j)br7HFd3Gg^UA{O1*fXA%wL;q=NWE?go}z84*wr
za7{biPnWs|M46^(pOO{H?x(qWc6#;fY&gDwsVV*mkR6rd52H)Uaj^vH`gDA9Gz`Ny
z$roQeeg5q1`Lom2W^?1l!O8Kl=NQhVPpwSJ8&;rYg;e`%2CT#gjPtu;Kupw$9^moi
z(IU4B-H^~jc9%O*Us_#T_|()lmx~gSfJ@<)>t{e@xX!*?Osz_@hq~XUX)x;#N~!Db
zz5HN%aCraa`=5UL=~rKU_4M?q8Eg)=oDv|4sHwZyjC@-cs~T?XA+G?IVBT*U@s}#-
zxktpti}gc;W*sQZ3Qq6!T(hrMJRv5Im+DgjfKmz(gMm~?_`J{3*tvxL6Tvlz@uh1(
zoDX2JD1au4&<kH62VT<b^6c!%<HwZf!7C3on@!zQW7R(BLb@u8okbmtOH9Fi>RsKi
zhJdC(<aRd$1;XgDRFwnap&ZUv1Z#xgmO~JV3UBnO&X!=oOfIFE0SyTT76#1%{+ChJ
zhMh7PFZY*c7kIGhHY+DPizqW59d8Z}2alCa0UptpUb^+ty_+XDj~DuzW)r6tS=Jcg
zBI^IPEvoBC4wg%bg@M*hCt7_#F@4b)@L<b9Y-)d=ssXu7)O<!PrM&mvdm;h|ufP7r
zcDosd;ni1PJwCnxV8hTO0V!>_2mkWF|5rcw;g9a#xmWXv17n8h!Kf{;sfGZCJQXb>
zBlOy_GUK^n;lz!{BMK!9Emf_dl>$8iK}<D@X>E(9w&uQtZw#UlYUWErD>Z7Z20lq(
z4n3X~2&!VHfY$f@AO7JVedjyhO(`85Y*R|AHcjJZvwrif@4WuTo5#mD+#ms<m2vNF
zr7j&-^ZDrEEmc)>O|Vwkfy~tP-FCAbtgKUE+mGjEDpyFr1cp{ryC`A-4UMd0=n|yV
zyUykO`4f++?i0QI^6f{TPMip!G&_+Ck$fguHR0_isByxoTY>}XR+~sKyy84fOfTKL
z^X9i7e)8#O2E)C(H~T)R>FKk_PoF#*R@=AVe)GoR)}#P6H4qt~s!Ay)%8q)Dg{$~;
zCZ2XCCFd!KG~P3d#Adzj;SkZRVD$yXGp1yf{u@(hcPb&6s)*K@1SA4keh38GQyCzi
zUTHxrqnV5{CT4SS@a69OtH;}Ww}-<`6DxQjr=o}^B5}5xLM<v(%wMj1_ik^uH$MB~
zYf(G7dBR)^ldyXkA_4iEg>@_#s-+k861Ct!Y*d7%|5tDjFd_j;KtLD2SpqcLWR<l9
z!o{Lwu^X~*JhiDwn_7E|92+pIOw6{(AX?717gPDz)T@fB8ru3`eYd-RaO1}Dt(!)~
ziP!73s+A&OM#)gsV**06pf9qzmI6%wu5>9_o}s;SUTRF^poxCnrt{(=zm+E551IM0
zT*9>>GLyi}RCAOrarr?VDg>$2SJ!T6@itgh)dNNR3+<<5#woF%Rg&u#*8psNuvr}+
zJP^5g>*mY%?jUk0+BR9xPO-%{y3JZ!mo|GD!Yf7XzO0;11E3PZJ6J^5pj3VXMrv<q
zBRzv_U$h!#3nN`ChTOfh>I&^bk&mFz0&D;X%arrg4r+#kKc(dF2eO(b3kzH#zIk$t
zKD4(M9!!fLzA{Jr6e0O;Q7f{EnPJX_T<%Y)_O;~DZa^p|SS{$Hvcw(w_f145l3W>4
z<M7(7%mA>6V96hT_(9htB7XJNSGEUhB04&{VOC3H!oKfs-n@BytR9Z*_hP+JLj=|`
z7psh>#f*5pb4{_2mHWJWs~5c42>x3ZYwkHirodkM$x#W*I3uOnrAt){UQ4=J?}kgM
zitpn!I^dQhp>?sRuvmK@92~AzgNRnGDI6Ui{mH-mpOJa9-XeKamJqgp6KWIB`VcHt
zPK{U{|DbB~G_sw{5TFC1)bZhsZKqhyE_TdjxnwF6sAQEX=R8im(F8T{(qJ{LDKS7s
zKvN^aZeX;D5lkxjhu9CU;<!fFfJS0Od}eA=-SJ`?%;d28grWqSW_+_<z4g{>cW$2`
z;?0|fK4yIFTMv$o51IN~cW$p%9o9WlU}p@p2#9t_DRs#Jh`}#ri-1N@4d}FHHAd8M
z$@+(H8kqw+<J1E`k8O8>l{VI*1Hvk1s(z$4WUmWTkO;ai9j?zGJvUL-;`n=o63=dt
z-IHhg^9$@#&>~}GqN3VN`e9MfvX}!I7<3&S9IjsL?%%z83z0UP!9bjE<P%X~b}t$d
z2TB4F4Hs0YMv$l#eS@M@X-O;ie1BVMKQL4G;^L83SG8`wYE?)~W)O5G<@l^}k?}QK
z2Z_kUXV)=aj@hhTYdu{STg#Sc;QfH>y6)ic;NkG_)~#ErdgI0oL@K!;v6cuAFoYTl
zg6_COs_#=%m_So_enaX}FYM)C$$zyE25g~x!|T7xuceR$%?2B2YSU&xzJ99szOenw
zK~y~AN8+D@NbwHP%(P^iMl@q4G!zj7lTwPvG)+P_tXG>mw~z1M9)_VyY!+!)T5JEP
zEktWB-&~{AXTGhQ9R`jNa;=Er3wDXA87(C^e!~Q^(5EJge=8EH5)H-QL>U&KM~aLp
z17ze?XN-c@nU_jrEeu>$OPR*8OjD8`m;nJihd6juM$Geu^_l_%RgHPk>D4PKf^01w
z85JQyi>;A1+6)4<dL`%F%+E92R1FEaPB?-qZh(lsxJ(K_*phkBkK>wh03r$?AAIlu
z5i{X~R~~eO$DPxRZ3hc)V&%-uJdx_4brH@?L)CfgBT`-f(KRPP`%dObG=Luz6@xVg
z%f>xf3oZ@4T2R{BxS;--QOLXy!L<A}3pQ+puU7U}C{wPR2mCopT~Dl@hi8by>FDG*
zHh;Aes8f2bsFEiCvuh!Y7Dt8!amrO{3uq1i8$gx;uuEMJnT*xc#tYb=({yRmWuJF_
z-jCxBG?|hPNpmr^X)0!>Wja4U1%r-h#YxJ3x4ZK1abX?+5BqB$Yh{^2J=0sD8;TY(
zwjdj|U*d3CWTMSxJq!a>I1&;c9v&PVY(W8-(X-NRCV`WY&mR&}$4qL1BvvJx{+>G}
zRK>k#4)IfSv@y+qs5T}-tOrmXw1#AiT8S3pBngH|{Wbu-UG*!9ls28Na6d_>g`wrR
z86c2Yxwst9&W9UY?6}2*)?+U2`^Gy%c+mmRY}@UyJ=l8Ss!1^bBT|!y+>LCRFh_a#
zg!tG2iF^Wq#;6T;Sl#fmVF{2F)F9e4n1}EoPl(%3t^?I;_d*n>xwK5(_+{js7(re1
z#9P+JkN)TIocb4n;kl1&t+vmk0V;nN4H3I8-MDc`OhoKUO9F<PC*UDQ*Wl`kP6M|W
zqQ~bfvfmQ!(nbzi<BMA!nk`B2(6q8uX;Y7rro)1|LYwJ~72*#8gwnPv_Fv>4asL;p
zs$tIs(_+(vxsc0fhy)N2aw#Qe0H7{)!_W`CQzx(ItQ$tPGz+d8hat9}*W}rtreF)I
zARtDy<fa6yb6TtH1Z>}$inh?hS{Mh{8W+i6F>=7ryVW>T1B9;cj8Q0p(}QFIo(iQ}
zitH!Lr4*@o<PKVzMVu;TU=g?*YXxOwKob*hc3T>i5!AZSqub&@LZIt*GE-?%KKI&b
z8}~*?aJ^aLr|SF7c)`iQQtFZ$pBoA!(wVCGM?}VPdjI|RnF$adyz;V3FKa-aPx+xW
zI_}w@)i+@7rLD463;;eh;LAMp$JU%L(hnW+wYZEI(!r`r^y9%{FNENGi?;7yNK92#
ziMVyHZT>7`iyVk~Hqu_d`Sx8HH|tMdG}^|R>W&ChM{SBs5x6@8gF?(jzJ|PR%m)wf
zs)h$_+*FN`Zsd=$D&&dto+S?{bwH%XJ@3cMG@Y|dMW)Vj(y14@8Vg|$ELc>;axqig
zUtN~zvhR`>KvONEE{a92G96zDf|{Ff=LvX(w${~t{b@AjQycSPjS`6$IB^O&C?J5R
zvY?6;Gcze-02J}qu0CT-iBsyk&QOWEm1)UZ%rk?XidnLhiMR(3=aa@(Bv^n`xJF6T
zW)5P1UCHdK^W4MtrCz9liJ8PaTP#)s1h`7JO5^zsC=z!4er2KpD!cvV(`TzY#~lq6
z7Qm{$L7XEzmeatQBG!UtJxWMLi=lzkip`sUt6Xj(ajX%B3`na60?6u->UGKNjGqas
zwhYF!_CYUQ0N<SAdL;|k){cv1sn6y7E4F~j>K|QL1cMnIcQazlGIeH1HV$75pCS*=
zs}YP(Q4!)VLk1>de%#fbrjbNJmwd{|^S*ZJzK|RLg0si~5+{qh;MzVf)Cr3enI+85
zwc?dSg7qV|rlYw2MMC4|*R4nx`ONBixCo7fM7q?i`=R8kA{ZgwUI+AP*lto{SV-Pn
zbrl&sI_Jy91QZrds%vh6`n1)$ftjs(&6jMV<<H80xRJ|kP0`w7Zn3?U@jUwmd6w9s
zI;w>X6LQ}d7ReJuylIUBG%$rc<#D&?!%Zm#S}aD@&BPcZ&@wZi)YWBdsHjaRroruz
z_<+!`z8^(}ko-pQQ;QjME}lqHjeE%zh`8X6`gAs;It@&Oh>*w(Qf0NntZ7+*=@PSl
zHsd(H`|hui*bE-L`e427iTw-{#*p1RkhAh`tI*t2QR^hVZJ5ya_H`T_g8nL0USc_6
zDK}iyvr8?RTbNW00o8qttzN5(q-Ok3m1|`$E=M4^KwU2Xp)PZoW-Uf6&vijvH`V3K
z<V?93g;^VKI<q!HhGT7h4RAr^6OXp%#swZea^kdL-f_Mn(T-`Ah?Gw+t~wCJB3L$k
zx4%%7iBwpDpr{luVdR$|zD`VC-*46|IU`Dkp?U;E<{>4RrV?FFN)VvJCarQ#Zxc5)
zZx)Cv*d^N37^^g-z2O4RzSy)8a>$jNU<cIH0NF4ha^m%{0mzqmOvH*L;4hW4<FiUp
zWsBmzNoh1-S3dQv@bp;vn=dbl)@z~Bkmk@#YhVPWsL7?BAl+){4>!9f=Y;?SSPjrR
z7jY13&iVYJTwM+89>LTC<6EDBxO>|CIpD}DRafPOcR>XMQxt#>kx+;j4Om1prkbp(
z0*0PETGPg0fu*z-<Ta0%b>Sdz)Ofqw^tUqAzll>;)XKNfYtkxzqahaUKEanN4S{*e
z0f;14St1&E2p`3%88x$Z44>-s$yG2jK)(RE;?~392!Q=i_Xp1tqX7^kX2FI4=2a!O
z8|TFf^?GDen=n@-hSn(z&iLriD%a{{7Bjc72dQaPv%m`i5QMeqEJW-lm567Vs8t7&
zil8X%Cmb^~`%$h@eAJl3zJrdmUg7>>g<csVh_?m3G?m<<sgF%tZRLZ=>v_@MlgGNW
z7!iioi>PL9`E<t%s(D}9GLbcwCb2>a+YzE$Z>w(D!jzgA`=m1q6;06q#ZV0;muZ|L
zctND=ySimIKw|RPDswSqgfu5=y!|H6!&z`|0h()Ln^s_gwckjT0HEu7aQh>er%cri
zYumjbV(6Ao%|NLOeWQY<T$DLU5ke%6@kEr+uEnocT`uMQ_dYbGgTs^6_J}DFgQ5BL
zsiFwxlL}vu&_V>#l8*dL_V`8$K{r^-AdAqUIM|s}6AVM`cOCmo1aqz=K=rC<#SPT7
zz_{A9O;cSJV)Jelohjq3iJ!kr*UDmSNNSsv*^z(Zk5pi^YFN*Vrf!CrriAfPfR6;w
zfXt*`_2|oZKy!Looe@Q|)E3kg$Sf$uWJ;h(h138kBhdPwJ2;{=Nf}|xt5R^cgK0uh
z@<)NR>-)R+U-nRxVc?0gk%2Ee5ddizHeh9(vH{Pjv*96cIFlAvGZ(+mfEJ#2fw1T=
zo4eh<i8@(~e;q;}gk3d5RaP5PzaB^w%COG)DjSjmfiQxe%%qfwxwGq&!8!2&tf->1
zP3q4!&dnzA3mUC0H<979GAp3-9L2vMrf$8~gwt3|0R)k)cyD25s=KqZvfFDBRVgCa
zR$Gy`4PaJOagP0T(Dpp-2Q)QtL5qP{$wiD<IQ5aNR6_|}Rp$a2tr90B6j;#3L9Rz4
z+MFHS{5r6h5-&V{%Sn~r9sbmNKOctucFsV>f=9RrRmOsZYax)js3y^pH-kg<NSg*;
z*+TM!3nxOnONdy+;k_PJ!cPBg2|N*M+fujd-T`pY6;=3ti_BVx$?b)VvZlYRg<7~g
zuJ3@c?RaZyDJ}9$3$_BwKur+mEJA+{bI$(v6lum^kWzdGYh#wP3pQlt$d5A+k&?v#
z3P86SfT^)F!g2(LW*)N8z?^2<45;yUu;wU<#>txuBs4X*Fd-qR7$PI7ITWZdQbRiK
zl@lR4MVX1g2<K>aBtme;mI1o%DGU|<beJnZhjlk>#!Eb}9{m`B$F+(qVxAh&4+E#f
z#NnNshaC0p0b}wYWA*@e6|GF-)`vAi)M6fhK0o)_k|L7oY^5*&!sL%4A{wEJa!M9W
zmxb2>d?iGRKBL8yClCfxU?wtOcsk$Ge9T{!q9$r0`(MBJ(ZSK}AEeE_`*#OU?xrIG
zWSa+<O=V}ZV5hPaa9Mg&El;BK4atJl7tBqQpcWf@7qfvH)ys7*SEGSu0Cj)~cL@zd
zg(8iBtm1B$?qNT7m`DQp)<`Jxe%EP1OKl!ja;bj<BBH7Ua~iq0U!2vUxiN1-a0LX!
zNI75%tsiu$69r;Ml6&$XirPllXJo_#lX2IP86~65nuaa`Q!m9X?E<h|+U}C`l(q-G
zjTs9IDr47?sZmP4EMPz~Q4=eY)qe&cCFdfp;MW)>5&|QcsG_f3v9c+{FldOZt)K?*
zi%!Lej5$T_wU<3?qDJIob^=5JgDBwv)Vml1f2|BV<RJ}R0U}|fgoyzstuBH(3`7G@
z{-}2+fB_?vIe^Yj%ZBA}lb71u5r%uzTbzpEMKG-%51TtT08`~v*R6-?a!N#?Ni91`
z%iXy7YJc_Yj1M=o>WN5OL<#!5NDL&Z{zaMP3zRyZL_kmzG*CgrRJYfDT@kEl!RP=0
zAOJ~3K~x}j!`f#L;Vg}S)u1>kV5|TD0TQASyYy1r$(B+wwUTpS_raVeR4)?8DCoSh
zS#Sm{#K1b^V2N7WMB(Wy{#pCo?e3MDPDgIeuHZ9kvaIL}%fjD3vr<}HQ$v^4&&24$
z8NpDo#z1@DTuQ`g%n9OV6tCQZT0Pe#%gl15hQCFc6PC0dN(+uqy@RU{0}zQLW+(!8
z7l3R~&(f&!VAR-elBvYeg~-gs6g}i!0c^rz9dkeQ=xTk{oXb@5SY!fQA8uDi$26<}
z$w?xix7Sj;n#lZgn4<Fx0MfO52odxwF;%w=A(E(zen3@`IXXvVB6QqYR6Uh)Peg#m
zNXvLmtQlaO64{LSsD@Lh`x*cs>JSoh*NIIK?nD9;x8<s$6`QgmCgk3L6sqnC0=;R~
z>`cUlPz*qgxJLwIZM*Q6(50ra5~-3U$I1|rm;xpL1EN6(0whmot#vdhf-0#2V5<4R
z?)!_lTOu;FbhR&C2WCK`2%0#VDv>58Ch|0?l-!(&DsXu<{_WrWmjeC2`h!2Xdw1LQ
z?lRO?8{h&`*hGw>da6EGpA}oU(y_h0XkazwK3wBIriTWVc70v^p9_G1As|r<MZHj~
z3m0<Ev>7&U1XQVdXe)z>Ay}g>+Qb*k14E$V__6g(kqhcGCsgwFo(3<NFz#kkHIDjA
z&8ULM(L>|grVgv>&krsFFk>b^`sWRs8KEU&0OfAzbv<Y%RZbnPhQy#f;&`T5bmXjt
zhm!Up<+(x9QJEP~#&JK51pvx8f)w9Q=bZPuX&g%_vfo|hDG*8qfSiWa2D^^HuTnJ?
zC&9U=PeA<natob^AbC?pW=O;sl|<aQh#nsp4}?E4MG63xq9S5|AXbg8iNJd988ad$
zVkRcXW1^~w#kevMY|G&x!3*tORVttcNN~{+LbRjq2}VRzv_zg;UPUqx+I44a5p!Cv
z(`GZ_g(?^(Fo_+9myl!0`w>Kmm{SK$Z(7ZfsuL2MiZ^iKZ{fC{gBrqwNKBkk>Zn_B
z>WMqz4v>ku)b*i^Bl7PNTJ$e8N{<UEnw2Ov^)541Rp#E0_IAIj>3kspq?k{Dsk$Oi
zt(b9eeCw1FWVtzl$Ow{9DMD*P!vP<itskf{=z>|b9%`DHO4oiBYKIe~EF$8Xl*fMU
z`^d!|bao9fhY_(DB|>0UYok*k<e`8GJU}Dn#xLUL=*4R}rY>oYxbPTji^SHSQoTMF
z$qj8h+dRjvr_o?MT0$TqQRQSs1WXA`FA55!)USs1xW8)RL4O}?m2TX-dvJU+^#@4o
zNOn^-6G9Qm4rx#o022{YF%=`J8U=OvONq#(_-UlnIcLg?ze-<mn>AwGz)lTdxbE+8
zV6rW=24+k&duPE<@GwkQl@*{F83XtI{NN%W5j$_k#E_&wo}>tLikR4t4G0JUNS(pr
z5)C9n@_ru(#ZNej-CK>AQI&!eQP^I#AfZ%mt!G4fRi!RiG89oj1Y$sz2(dubWZ0{a
zC`?7IhPjHWD5#PuBruq!OvnygEv0zE!;}jXa$-a*S{!iiC+zO@;&1-rFV^eBAOHT3
z@7+D&jtCj4#(ypG8FdSej$WzlCVKE_{GbgN2}iUPgD!y_6+^Lb4_K(Kpt_ywzoY1D
z!c9{T<pvC!H#>FYK!EXyDb3*!^~mMfAh>8uW(5UUV4Bh6w#)*&6QZ}+G&g8+JVwz#
zxCJvvfwSqz$TP1ianvJjkOJ*PpedyU9ce}=g4l1?hG0<AjoUb07)S!NQARt{VGS@5
zD?(B;m3(>n%;dq7-+W;C%&eHI6v??rQ7{xK5Ct8YVb>3wI_`S{kRs?^tx2fd%&;R<
zCC@?uODWaB6OQf~sbe-HpO#>?>iJ#kN=iy@x)mT%35OAyp%S4XWJWgh^Ri|IL`EDe
zADnscgfrSCtZfJcesnUSn+aVk=khC?0|LAnOer8-%&OXAV<3oH0D#y*TCK6`%!;ao
z)~-HZD5_%?(GC+}GC<-qs|~auAsdTK4#1%h1}~2;XK*uM;?z;<IrYpvagW>)Ccp&1
zNQ{ICUY67#lo=a`0LD<q3s@&oAZ>TxqQRzGL;|iSWzFkTF!adQ%BOGFRV#)=VYXl~
z`mL%Q!bFG97_ozd{HZShu2X3VqJ-?jfC9c3BVOn*qy{*K-;YRZ-=#o7eKO~hAjU!2
z0@qq!jBy$JP63G(!{bUw>H`r2qExGr8OKV<F3Gjl*kSGYYeJ!Sl8I)zXY8--TBur`
zfrC18L}OTQC`hJiQb2(`)zJVfPdFJC==%WyOA%Eqr4%W#m*%uRKIvD-%mWj7a2T3}
zhnRZP0w#%)nQLaU3K|obA(=-nxX-Q{8nEP&OZH%340$G+@Ab)D*Nl{yIp&CtK(Ag(
ziU`;i`A~cCDAp7Z1;EG=q)L>`!-RwtOerBD5uxuZh(wW?RYF;;(oLE=><K#n%7%mt
z$SP(?2B-i8?BG!UjqW+FhzJy)#u*qukwS>Mh?)A>UrYdD9E(WE0g*sd9gbE^2>^*p
z(OgiWqiz_pWSa~-v!vQ7fEbvHLINQ76ebN{mziiA8ss8ATq&ycEQ`2i=B$Rh{qvvx
z^k)Y6-~Hsrx9%LLj>zzO7H``VRL-MS3Y+2lyjsOA1zaVt-4!aobh*^E3N8Lwy9<r4
z_c0hXm48)hgAJ{qZ>$a$4YYFXX6gtTLqrh4L$f>AplaD*&LZ};jE@Ryrs`bRA;mmo
zQ4UxIOj4SMTnqkX%Z#btc*FaJe%&K4nG+e2F@i!$#K^iz!=Yf86{o38MKN`T<oaV(
zUq|k~{^S=!x_I=PzqInDmPu4|$<rtzmUF4pcz?$jkehj)n8GRmU>vNzHX@8kfe!~F
zrI3J#s6*<&m?;6W2epb?-z5MjMa&ezfX%R2&c1bW$q*3|6)@1^v+3wav_=zGqi3qo
zTLks<ScLD?fw)!aZ0$s_&M9@46i@_>IeL#-%!1i2u@Z>X5CbIYHa(;y`y!?e1EhvV
znq+^m0|g=^BA|rO4EpA^A{a7v%t^I?87(fb8e7CjY?QbgD7mqOkrN_$6YO1x{~Qp#
z(DzOu6a(b?ZxvTdXjSV2Q%vK1{ZwTp04Al>devW}D0w`Oz)YEZ0-<It3^V}rITthO
zYFIcCbct8PU}iZ_jgjZ<uF!`ELI)9mnGme&yTptD+;wJnb-6F19(YtlauH@aIM@PU
z$vJh-2*cEM08|8~34llx%#^uXtyX|oM2gzg<<0<x)!OeZMB*+5lQEhyl;T02fia4N
z`WWfOhpX3p9KHg>XfAyn7LC3XZT6lv@@kEWALy!vriMUlqNc^e?R`xt;BZ!q3Qu=J
zS$W<05mibS5m(@3)y<8g_2F^fZ-;(mvA{JcS(H_>nGz%b70IH4tXKevK$QSQi>bMz
z)xd#YUhX>f&yZL&Hb;?GX#_^9oG7UxA&Xiay22cPuCq`+>K}7Vm>_o5rl&D377BE$
zk%H|rsU||MkO-RnE(p2kRhF|oU7U4=hGOU}HUxGn93mG%Ke`=$Vo2?@7ll&Pz_ne3
zgep2s6H+Q=GF2u3gK?Tf&6W09GGM8M!jR-~D6mLOfC{AExOXX)0s9OfaTgX@MKw!7
z+Ve}+PcAd$3Pwh>fY+D^0=h7dRpsf^^Pm0fuSC0de)lKoa0@*+w!xItl%2H-kzq{;
zgupQdS7rj$ni1^lE_GA~7%(Btk_5X(!wQjz1r)_B`2S7NZ!PznmJ_h*op(AH)=(`n
z3x(U<NH1b>R9(>5v|niRzLRQcNHI6`=RX2FV|E%Ay88F0memalYRmk;LyFr5<)Vf}
zo<Z5nd=g_W0AykyE9jb20_vDb7nm3=U?NgH0Thu`1qi27%Cz4-|Hm)h|FumYgPsy-
z7F9RY?e_p~IcHTBG)ytxfao>7kwI0gb%Gm7v6^eJy4=W=42g^k*fdcZjC!IJ69xh^
zLLy3@y5<E>Ax;W{mNjttPJxt~wgiC`aIp`fkATGcAs|ywGytGPb!4F~8i;*_2}RZ2
z(7aTcwxOxRKq@+Mx`OnG%}N#lz}ZVgIBd7P>hr~34AG2j7KbMy-A^)QK;)FXJF5?v
z0HP`(CIAIcs##`GU6mAS!vsW_dQKg3N0fk=DG_%_#GIfG+<c1WYG9(!A5jw?bE;3j
z_!S5XK2``aAkxS!B{NyH;gBNYObG$eh~qs%oyn}kROJz2%2bt<FfpyyD*_ZLs#2z$
z5^Xl?F8Kyp#{ItQn3)k_82X_f*6V?pN)aN?xm;fCRIM9&Gn=Mt0DV6kY&RlOiV)HE
z;DDJ$MFg&PWtwm|PF`qreb3y9>NMrun0o>w;*|Wv^CG#pY1-xKY7>_(><!o=ei2b5
zXc;~=F(s=~W{(gAjPZY@t(bA@3R|9XBr|%s9_i$0ro>!)hG~RE8Xjn}I0_U%yrxtU
zFon^krx)8W0F<2fMY4j4*;GWpj&9xN?Xh;7EAw@nDpZ9FkU=2?Q^^V{s8yS&>fw3}
zz*<y1g3PR_h*~MAnncOWvIrqNr^=zz#Ee9Jmk_xq3LsGml^l_V`x|r4$n2MH5eGp7
z(jZQ|GXzLPG>ubHBP0`4RV)Rc!Z7k+;a785jTxFFxDlV6jgLMVcY{t0IsEJBSG42h
znc3HcV34>2rYspLRaDDhEy&i7FY6HuF)^C#N3hA6Whxm#krGCcsx2_r&CszvHvmyG
zK}<vmk%=fVCuY#nr^L*nnpUfrGx=B$XUJ1n>6>h=X${<iSc;uKefl5%{m-AAcgJtN
zleb&zlb|x=em60vE>UtmhpJOVhMv5LVlqNvGM`SW6e1=B6=Bfrx;IfNz{C~N49uvi
zDY^AXm|~6Z!fi*8xT-=+?l}P(6L?S-Awk%jD)-14;&q^?QVf(SsT9vEBLFk;0s@1V
z4k`iLioUt7pF=$D8QKBMgayztg|NlT4OOdAJ5_f>P4}T<uCr)Lv{+wMB^v@DF_<x0
z60_tRbYtc&C6BrRok+)l1=;!@Q$m#@MMP8zOj91G{j__w=RK51nnzGom69drQnKYq
zO;Hul2!KU2^@Csn>k$Oez$mLT6ETdQzy=f!zh)ygADp59fhNQi+6tgYUlE|kof7&!
z7DdU|FGWx$+pDWlOa}zD5s}cxNU_p$BA5TPli;AZ9+e$L8M+a5Es`NXO6;4hTEdIP
zECHI-I1)ZwW<qV$jba9roUA#5PNGPRW{H`=2o1Xq`y`PvhR*Mf3<NbOQpTbJMLa?f
zX04u)2VR>OmY4{^Of-U=5P)kajsJv^iPREWhuEnlh7Pd-WhuB8ao;*|4U7!TL03`0
zgcux+sis!7L@2-(x*d-+Mrl~g(~*3ofT~99P9&=P0Blim#N^H&_X;_wDlt2xUR08g
zHi#1wFe0wZG<AuHQc9c%2|0Dd$uH6ELGVRHtm`^2%BP$S0GWt*%B9CNjxtU~6+}f<
zrd&96I-1%v<>F=;PV5IaIO#FKGAL%#RGg_Jh7ztB@O(p8#bzm`6ki=ng|NA9z<;%f
z78UPmOo14=P%ctR5{Y=eqJlug<dY^5HDj-2O3@-tLN)-FVrHyDqG}2%)EUsT%T+d4
z|K@4Gzq%69QgockWU!}hzdC*nw;rFZ{LE1i(d;tbGL2vis%l&^m_eRKmx7h-p~h$i
zxj5q)MFA|SVV*FLqhu?kh>GfD2C59ubC)bZ8WMHH)MWuf_VrNCWv2UrsU<a0@RQlK
zjhGUsfRs8D^^F>!pTGdnPjY)oohDaR`5eX*NBj*_gDLaH1?>ur$qYGsR<2-)J+PWu
zN<>6cSkb7s{fE%!A4~+MM8U4{`56&m8cHq%*0DjcM5vO9rRx|>6DO}@nE*_g2!K5y
z#$>l$Z`M5#0h19akr0{clsK7LLY<h&nQ)0B0G&W$ze7rE*}~vQV;K3>rQcR4d7(Q#
zd;0m`{mow;e4P*9{63r<XI3JfvT_o_C<mM~BC6qEuFwV|a`O@ZO5Ot^nsh{~l#7&r
ze-j`O6B+0<O^o1wLf3VrWXXk@RYLfhTzivCk^O2Ie6)N$*Awb`QhcKTW-3L^x<pbk
zBO(YB`v|p^sY~3kA5bn#D9cQ)SkVF_MX-oVI-6}H`S8ND>xNRYnG&(8BDr+L4?ko=
zG88SUKv?rZ;_0$JCC1>HB0%4>N#1a|yVVtH>R>etecugzpQlNsFy)T+z++lx$##BL
z0Lzr8-RSrGIPUi67f(~CJx)>_o|AL7akP>l7cB+NOq2y_5_s}FpMSRR1|C*Oq{YF@
z)m?^wr4;AG1#Lgnp|0N`MK(I%{uXyD;si_~7Qj^84;ZFUm6Fjk=l!@#rlKX2mM-t_
z?fA%I1t=;SSa@GF(_Y}onLdA9sApzkCIC%L2HJJ5Vq<1xBu7VM7~d3K?dGOJa1Wv?
znE2v_iJ4VRfDsIgvcUPdoSx?OIuT)q(z9%PU_k6wz{#|jp~(!iFf^I+>FJf6j@DD^
z`Y7hS1=8aCX)`TSz%;QtDBO8$gpv{?WCI~qU`{<FtuU=pHxxv`xTt*GjL2GJPE2(g
zOJeN1a7N5K9E-k)P*b85Z>6h1vX9@H&`b~^mZv@j(_*Sb%p7dW>XK}5USl$5=sTv#
zh*Zt`t_M>>AW}v`>=Zx*%asu+n6N8JfmNkT#3Y1e=*zImh|NuCh&<+;vjCDBPSaS5
ztX8X(xbFbbO4;r96B?zyA9K0djX+#<Pry?yQ_;<K<JuV?wy1$B<^p3bT|bOdRwDy0
z0$Ds#uLVzGDF#5hy#X*W0YDL()I>>QDM%u^n?`_?5)+ZB2gU$cmy4QVDJo`a#3?22
za?YxeCY*~Ev68iv;(x1>C6pmbB349olp`pw!t_9pkxWW1Q<ee%VkV{|XjyL_!<|Q;
z_Qetys7&Y*TLaN7UNxAy>}=Xy>U7SiQnI`M>TDT`YH6YAYNeDiiAkBJ(WOFBX<<se
z2}{4hG_aZwcP__L1B5=L@;<L36m=zOa;;ionhHoU1a>`VY&<Z;SZILA34sU_F_|hT
zF-a+v+KmRls6!G;+IIyRn23mq6edb6UGj31(Mq2f%v{VFOmY)1276{AMHEheDuj$=
zL||4rPKbs&cDx439e0QZRuFp^U8x8&)kUHr#x9I7ClU(!4W`5fkX2NTn3Cozh8~Ft
ziI9CcmN@!9Kr%v3&dNXna_6N%A+m^w-hF)W5f@E2-hTVw=0V>f^h43&!?RofK#@rV
z6hKTx6g-r`A@8ap;xp<5tbmu}goH(OH%%_@Rs&)#{^X(oSYj(Vn<}%J8Z+l<N|Z#3
zDIj)wo}~yT_R8H4IcCQHpQ|_fu_j5f`;M8pN8BYdzonM`x_X+;p+piCq!FP1UvGLQ
zphp23QWP+wnVPBkw#<7Y+-=c=xkqLb-4Bg!RQAoh5$?8}^E=pi3bD+)yPH`lqJ2-|
z%u*}EGBnA}MM6ZFDck^7?TLD3W?1AaM+h|s$Z`RawTp=N&LVJEGm33lDibx`SvdKt
z1gJTKY7y)9Mr%gE+}lMkSuKU4gCK>^MbCEo%M;0`cp&?5UEjZdDwV@c&4At7cZwU+
zJ+LutReIs*t#7+qu-Z%gjj!)wS>UooZ>?>;`?g2hvF~9@?&LuhtU<fWum61i^4qWV
z@*s5x#9Qx_n2P|5j9hd`mZ)jiFCwYvHGcBtasBYKtk>WYOhjBnSc<uK)l|=zSwwg3
z(fa=Vn{J!yJ=)8)H+6jIbfPRtMjW?#8W6av{I`GD+O6-b*>$BFrxYeO07VL51ZM_^
zx$gv(vD1hn8!cTo9&Ap;i`0b~EF~Ro0qQ+&FZAtOggsZr(^Y={SmS{oYSB_c#La>Q
z#vVq*0gDK2`uo3p`v?9UODC#C;((gwWSeF1AHu!0wk}l|Stw+?n!6k(0t+vY<%#M_
z^&-ou57)2ch$KzS!tCzm>N)Z7z7|@_Sfse><QO9?@rA}{RagX!FiVw<FEx!AP86jS
zLgb35s}c@g>>N9f6nR2KEqM<0y42i-h*%K`w>%a_gy6#DxD!x>z-;P?9;+hh<0SHR
zDLI9<@qWR<+tzZzx3^Bf^?IpAJffD;dcWV=vaYq(=i5!y9iroIbB}m<d@}Ra)B~w0
z_u$*+yP+F#S+?d&U7Na-IH;=*J0^=-x*WhF0V9yQbu|NnSxvKLN_M2kFxC=Co2CRT
zK?A*O5G_T_?z!~r-Avs<+BAy;Rqv_^5@4nTvccj^L`z}r#m&RaT5HYRx8BsunbmNY
z)&2eceK9E!PO&<CLiEJV8AVl@Jv?B{!T0T+(F3I{xgsTy=cvg&h&&8TVA38rSPG9J
zlA!KEg%^&-MuiJPnVdjtZV-ei9OTUK@KPz<Mbg^lrIc`|HQYl8wII9;LzrBRiG(3$
z*XO=A<vy;ln0~&bqnq3LjGsO+Uu`)TVi$&o=A@=dFe?i&WzB7bC_?E6;<>XKmIDT*
zMAKb{k8kusb5r9v_uzxcidTC#56QX>4(r$<(Get<>Zl?Vf<To0<(V&6St_VxzkVpg
z)6oz^I;e$-!h(Y{N`fqhq;8G2zxRLSxVC@$^WXi=kM9dp<eVqq&T5v5XCG6eFmn($
zO@&0>j(|HcRbd!2b8oIzm1K8Qk0R8RW^yMx!i^E6YErAK(Wx|5?VU?CRjd$}0MraD
zAnw`&VdgQsG|{>`T;WC7nFFMTQaF>soTvvR^_{7M)e&1XBB7bpysP?9u9AT$SPkk<
zJr%m-2BN~i{ce`aMFIsAktL$koq%SVK6kY#MaijY@_@)#z)ZD9g@0uIbSYi;TGpqh
zhs*T>_`cu5_wDxk*WZ6d|6cs=-V8l!*`~d9G*x0hecQf#xu4JAQ%Bdf$G&0PY2VR0
zdJl&<#E5&89m}_!e!KVm<t2m=!CZ#rbhNxWl#Q+jb%8jy)lPC!xIOS`t=20_VPYmW
z^V4}z)z*VWq!a)m-1-JJ$7%Ol=tg#Z>Ge;&hrFl_ZJ7CZz|+ZVj;-^*e(86TAkP4}
zoF9pZBN$CYiin3H)b&oGOd*4}6~bvM2usmB@#$2-X-*qto_thQv9;3fyC81OKyF&M
z;;IxPKK%YP37k2F_U+sDtGv7jKsB+kATf9VLc=vwgxx~!op~5LDV=N-EV&yN2+R72
z^)X6~0+y<7G2>5&g(--PK)rQ$4R0br;fyFO5$2N_ky%VQfQ)b+DGZ(9r6AAHnX7;?
zJ055sfVj22lrrEsG_(&zn27^!z4JI_C%n*OV2Q>)%RvyPu1W)hflSs*(&41Bdag^&
zjEQrC6$i5dMEph7&7H>oHEONq?iQ*VkZ!I4B34t8-_o<hIG|myAT@F-K^0U*Dsf38
z7Zpi**U-^qUak!JD>17EDDq?+$-skesx;awB1l-MwtO`}1;F#R=fpr*x(~i4ID{p-
z5xY<n8CpGaFAOF+WBcji>+_esKliqo_10Q~DlOu!suat+kM;2?OK9{V@giq-01S@c
zaE%&c;lu81N?rs^Lhvbsi8scNfflmncFw6y3ht?h5Q|i<l_4foOQCf72nkUz<s$)N
z2eOx7X26vx^MLgz<(P=z0_O~KOTkkFnKy6o)dza#$R;N^g&~6CwBqM?as8mgAmMN@
zkqFZfoRBuQ8QMuPJX09zr!;5`?td9JDxcB6gO1Lr_GflapWG`{C|7Rjj1r`x+-E5H
zu*xM3j3>UG5as3DHzrg+)ytJ>%+-@Gl3Zzm6UYfd1W(FUALfCe!sG<z8|{Dp{r~>#
zpXlR{|I@?yv=kN@YtH;e-=u=ml-Bszb&WEaBSL77f4h1BYy+|!hN09q(3trIfG81`
zn<q1pa`mvTN0yPeA7PBu+(AVn9Mn{Mvr?9%`R%O}GjSziQ!zCVhZi-+AUWqOvx3+A
zwwq-b4?EVBgb1-3dbc7%T+PwiUe?pT_wbNX%^Bc9mhnKq3<(ni(ku*j2bXMw^AU45
z5y`woViaMr`0-qSeu#$?)skyPr*L<>egF3Lx8L^t?)O%#TkrRmt#>muw=hc}qdnjB
z`Mb4`>&B3d-sN_See<nZHz>q|oy5RK1@*kH%T?*bY=ly3N)KlYjJwVCc0feZL6mIq
zKncLfXo;XM3k*@15GJQeFoUm!Edpjz3OpzTOj=jDFs&!)>uI6$*3rINq?9wo(1(DE
zf^c5w@gy?d&KU6=Ogvz2L8OJly@PwEEUcyYAP9x<z`v=1;8Ln!bRG$^oI58cxKu7J
zn4H}{f8O_Je}5|H&5L;<cBssp&1C*b!~#1<@31U!J%Y(?APj>Gg&PNx<dFidWCLLz
zuU^S;L?eIUcp<752J2^L=U^%BAza*ziQQeOgDt3u1l)y5$T%Psy>~*SH@#HJMO{mR
zKeMZ5mL+r0V9z;&%(@KV!bs){a##zXN>R%)lvub*84skHI?}Y=ySiCnA);leYCW~+
zy$`8vP>3)b;Apxtv5kO-VMR{$J*<cK++3@wCOgI95d|ffYhA*dsfC9ydDyAu7{SJ9
zhBVa;$(JEwv*ekWLx~M!2~`LZDJ9t<ARMDO5pf&HQWs~DsosiY9cJ5;Qnv7x6+e@N
zJ3@UBC&Jv_;noH`ysIJHdcIU5;@SvQgxw>|3gV%bhv(nU&o8~-p<R31dvCq<u1&SM
zs>H`1A3uDOSX<hBnIb$WoL~{ny)k=QlH44@fyFF4JQor-lcC%)2Ahw(CIZa3cLpu4
zopNeQLIh%y(piKh5PK;lT^qu$z1+-TKHPwKje5g~Wu1oVn4#=g>+Asl03ZNKL_t)<
z#9{DVzgt&T0&+MyGAaT=<OpJ3*Rm9><fV9oL5NeJGD-FM;f|OY;*@9m;G(2x%85mC
zrII#+)G9Jj>J&zdH;D89c5u*i*oni5B<M&kC@ID;vn0+&K&0fa<{lzc`nKQb`}Hxp
zFw>bz<$+=e9Gqx^jK$}OeV)k=DL{870H39AfB&EV_aE2(pZ@3nbb7p0k!(>0%{tej
zuZd$$c$;I4a2?-tej8;N00IL7IbH8K5OdR=?-5L6$n5Hxs3IZ?Xt)pd&V>CYgf}Od
zX{$?1ACtT5)S*N`37n;AAT4xAyO@~|hX=fM9s2nR|8Vd5$yFV6pHDy!5RVI(BH(5b
zWJVEAEFP3^wFtYvX1vb0m>~mkGbX++<;Mqqzd*#aZTp>SVcYlia_jf|?Pd2n=}moa
z+g+c(_r1ADEhTz%3b>;8()x8TUNrXozPGq-zIE&x9_&uW>?n=o{ii=Xz598`8YC&u
zCnlX~W$u>Erm0OfQ}WQ5DTj3eI&o=qxohDdNs*1mZFs|(yLmv|3B<|04Y-*JP`obf
z^5fT)eg!GUCZ8yXEUn%W%Oa1TuAe?UHpfu&QczOpJuqBj`65*Wn?mG-a8pgGg_MCO
z9HMF#B4QawbhcaOE=2IsnrmB=97JSHzQUNuZ{nIL8Y1w3f_adjM*Gtf|M7i6sl%w1
zR-qWfK|+x%!2{trz%0X3MM&vvfJLelBl#Arpc8Wu5t0%_?x7yTuEvMEF+j#lj3~o2
zKfQ54gx94IpvGOx1dOhjQuAS3PaA8LfKQieSh!gkVWZ5#ryN5EoZ!U7v`*3lC~~}2
zScC?zu!Ot2f&>&I{3en!fRd9sA)eN-p_++srX|mH2fAhf%OYjinNnLZPL&K29SY`B
z3Q@kuLBmy+*D#OxrT`N>l%xR3)a%SVne04{{L$^u8%BqZJPCrkQhsbACQ`G^Rw1Gz
z)caMz5F<$Ha1%wgBtGT)?g*G!=7g>qxP51R(Y`_5!dlz+*43@UJAy9DAAfoJ@S#Dz
zrB7_IEzJT(P=pOBb=s$_dxRSDSR|;MjWi!qq&EziqZ(=*3sfyCO&_n1d?*fK6BZ^C
zo-7-H<P{%Hg~kiaM@i{3Yi79qaU`{lC)7NMJ=k0hTk4FZa*Cdxl87SKTA9IVc9?c;
z5q>pk&xoKYu$pAF994}3`(#xz6NTHsOU|EanM;^tFy`@94XtM!8FBQMVv%+2NQkln
zHlB}PX>CjMaemXMQ)vD@MaFbAl}Zs~a5KRfL?J-HbEFUvuD7qB|KI=fKmQ-6CH~j{
z?e8cG9R#j1VaS?D#|U6TjmM2T8Bv^uT8^2QI|2FhN=Tpql%72``>drb|KQ9slaAwn
z?#6%-jO-Cq0G9t0-av|9k&_3{9<X8F<qV09v@Ii|ydrGIkDY;iHh&IHp3t;?&`j8j
z@rci}AY}@#nYh5*Gz>TsNSOUvrLxr^>+SaZ0y9RueEstE_up^N&#J!N(Qf7bJ?^)-
zz0lU7;l#8qt6BumT6A4^ZEd^t&Re6sxf(23je@FqF{<+P;itd(<@DhLN%4teG*v%B
z`aDwrLU>8Roev1RID%LJ0R{03=%1*ZK{axU2MQ7{l||e`EzI-Dw&4&<2}qc@UPYI$
zOgpJrz%!XBYpWpQN<aO0e)x1wh409k3IzpI1Q{KB-k}v*0LS=;F{U~0xkt#Un+OBS
z;CRg|9D|gW{goxtxBwtW-1+nUo8NArj9{W8b2cK#_II^E{Zymye1HSwgU~(_s7Ae>
zWQhTC=8*wSBxz=F>_o<LXI_XFa3wC&>dY~xYJ-8CCk|5)o`9xIe3?X57_;bvW?=9l
zCOsz$m-%L-7BZ{k!4*zTz6X)f8>sR`ZV_h|%VZ{}V|`%qh$2da@qp3{{zfFoGY5AA
zp20J~BM?0AuDtMzA$wIBF;h%$poSj9FqX`X!8MvFl>^=rl-$&D5kvy3af~|uD!K63
z<iYJ#hnen3jFHT^n*l^|%m|7%FHK~9Ho(*z8QX3=9X5HQnh)<^szu@De#iFQTT^xG
zySg@OP50e()7Ht(kJlf6`glH}h`Z%0z^aA>F1mRb#62wB+&ctnUdWx?DFaI)SE0eI
zU9(ruUQlRkYGWElhn*h5<oufJfmf_I=DC$G1P>1YjpyMNxPP$ACp2|b!_46Xs6zcn
zea$s+3Qs@;q2;tX1--$o%uJn_p)Bz>;p&xj8kV*8poM@*c-+t#Fb@hh;<10opFKX{
z_|>v$ebwrYG{zX%<M^wG$kT<DcS`}Hw>`qmEnnWctVC?8`LS|CnNVB=Pc7~Nt_3`4
za)ZS7`)~j7-~Q|W^>=^wAE}H?3{E;IgTgs?+!HD}-jXSVnMmZ|>{*dKRU9~l{7yz>
z#enx<8Y^S8)R<^ieq{zG%hf$gcy`M6<&{H!RHm=Q>3r?;eV|cGk9pkKMCSk*Ghx|-
zX7ETtw_g+9VxDg}q9(@iHp024R2xKO`3%bhb!Gzg$h(3qMa~NqfDGaO{QR=tZ@O)_
z@1I}3e!1Uny?a-_?Q!2?@3J-S&LA#D2rNQiZmmDRydaD^tl?#|tw%FbCk+8gr)qrq
z;m1Fo9v@EYN;BBY&4V+}K9Zls1#f7;Im{qpWbFeEW_RC-nZ>A_A{d<4Ng+}ab_!3+
z4AW$QyvgdZUaGpQhM8+lJDuQ!^gap^3td*m%pY+lhJY;Kxv)w$3k~#~VFXu>uo6lh
z?*Uth5DsP;Ye|m?9cgZE3t2Z08`z?p@O1XF@J>EtUGe56kAP``t#Fcwws?Ic9PF>f
zW%v}w&nlleSybUl9AH7H6a+ep0iCD}7gFwKClNo-vg2k=%wqmRb0d_EP!~zPb}~Z7
zH+_VHPP|=~7Rmp#SxO!##)yCrdG;qV9papdMH*p8(_c5y4&zsr5t+xYksfXqPC$`D
z93m13?V9McF$tVLZZH7D{B?tlxDdpQ9n8bV=aF)NrROM=Mm8wIlZQ*QY<v6CW=%hK
zTgU@uXmlpZZ^+Tcz%QHJ$rL@l2XY@{wgJ9%%Xsf${y4ywGgjAgXy&(D`|??DH|?9N
z?tO3CTIdej!c^kNKmOtA!_$W!KHP4bYFsWC4tlx0EX%sLy)`R^5z#fI6j|lIZK_5Y
zl0f<SZ3gj0Eixm{oN^z+X~Lu<@SEmD(%tLGw1v=XZIfZFW1KTPLU<f3+N`dG=L7XN
z^)h=N?NE0&nhB2)X=u$f!l<Q|Whte+&CNXQc$um2n(KqV29sv~!F*W;8kdiU2yZO%
z2Qhdwctf3e1SA6HHY3!0G-CuepD~mNe`0)=l2^L+7U7>itGk^pmztRpxv!c}2?9O@
ztC-8(jBWC8<is5m6jm#>cISdxYqk!9xH_D#!!Z#cNDwhp-~82%7l(X=8;ydU=1dj?
z{KH91n0MZcTN+l|BkC)^cuo`4>$ZRD6kmOl8P|n3Om@I|=ABK$J<n)Bi;%+E3}-V2
zidT+wfJgY^5ju-E*YJoiBhE*Cya4nDk_Ci-XFVM(ITFp$3nvCJJhpwiYirxf_VT6e
zcUA38Z(G}%@7-Tsw$@FZoFsU}2j$9B``&hAjoYnn9o?lnJJ=vVbzYYbKYjS+Pp9ic
zDFtCkD`F0JP0oD~NfGzg^z89P6q$3syas~E!OBz!Ha2e(#FiA!JO#6rV4^6Ln!G$H
z1yl=jErBq%Zl-R#X^*f3mL;}=Xl7bFvqvZm8rnF>^0eonlN$MB{N@XfiEp245I@Mx
zuZ<l-n8UpvOfCeNqev0yEFL-?{p0KA0L*o7uDvc(^${7&@rsTa31~z5F$hEnRi)WS
zjv;1Z=Ex~J$OxLWwQM`!#4H#%FdV;Va$~aHe5JMy4oMDLe58Yp{+JI+;1MB|z}7KQ
zocB{2hY!@g3?bfYt3ji67(p!uN;JEZ!3>GW5pj$|H9ZUH+Lxu)Qp|ndqj$I`j_k;!
z9%H$Loe_gsQb;@y5c6gkGeXK*{0L8@$>H&ltu%tJ6Qf2!<CB=VAt;<#5Kc1EMLlM;
z`2bT-p!91fBxNsQp5W8Lt0x|W><k`_H+jpMYnlb15G9ifUH$vkU+!+Uw`SIx?pxoD
zyupn_&daC2`Q_p1skIJZS<2;ndHMdlEVb66+Ujs>N~Z4g-rP-6BISrkpX7wk0GWE*
zd(T%U`%Y#~73zr3z<9_<oL|y#c(N9z;`E56n!8AwDNSISY%Cv1ku;M4B;ln^sVmK%
zax4&i21^Q+rJl~GBIUn}SsVU#cODhq96KhZkvM|MX1?~ANsr9$@m9__;k?C1c5-%Q
zBV8m8U{q>DY2@7cn+UR8wI$o9#OrC4*%#T^SVY*jZ=cQj*)HenHLvcekSY;Tii{A`
zEJAa^A}&l6Vs1nQp+9|m)PC=~!zxQjf$IP?uvp?PnIb|U!qn6Ml@9+A5_yoYFgM``
zKzUlq4n^B*H9gu*=FEEtnHgvElph%puVf3n<xanb4d?XgHGE|<d5?_X2&7@tc}zuu
z{7s7C44BOieE?!}G%?Yy*%0JDiRS2RdM<IKyiI9w4jF?8>W#uEJk?dLx89q%X>T6B
zx2_hg+1}lQn?=`5jD$IXghe1rP_@YYAFIix6jWtBX-B7ee*fvy|M(xDK714@Day`>
z7e@ev*f4R1%<OQ=#Up|TfESawNP%D;m`WlC7a|sBmNI$z$vq!%GY~l<4bwnKx@)Q^
zMq!z$1<8yjVPZb5r&1Rg?4i7si6AtXWO+!A!9xy6`E@!3A_<B#cZMIMDxOGYk7LNo
zfH^Y@i-ls0buH0}`vH=k@RrdVcGcTvT~|7dDQeE>QeYK6k<~E(GnnVF6U$I99{C9@
zV0eI$9#aBAA}kNqBYiFgn3%_V68vVPf@9Ww49I54LC%#^w#lz=1k<Pz@yfCp<aIvi
zo_Le}jx2doPEwe;42#%N;0_1<jDozJmK44*MP2HtRyEzW4FM?}f%Q~UmbJG=kWAtO
zK`2h=wU*jitF<z-lyblCxBE^knbo0YYQ~^a3Wif_q=pcPSP~BsGu+$Mm<0%tQfo1D
zRqdwpDUFEeYBT2Er0`628;M`J;~z6P0GN#LacU1ZPgZslxOU`G#*wTvGHBttwf61V
zRquUk+SK;0t+^V<W=-KAe)#ayFQ3e<n=)~0{qvX4;SsJPln!qK+{{!XthIgg`9#8m
zV6KHCn)g)3i%9QkW(2BIEMkN=guhCrj<LgEC98*rB2t$%a=5~6u6upfO*q1#rxAS&
za%skuxnlqJ5}S?`bswrQLm1qcjDi;7O6KbQ*zQl%wmT7-*?bpc%HK0LJ8|AdQV>ja
zsD0A=o$p-+%p9$A+QTz<C`HkuWPve@n|kQm<oKfi^~u*8p-ka!o_fXMrdL-Fb62wl
z^3(YuQcEcTNkCUxU<dzTuuroUCs$3eU9J4^bk=qwbSs&XQNqD_<ceglOTL1}bC?`9
zA&#DnKtAF;e)%Nv<^eQjIv8rhtb#MMV$|`7NY!+1^fL=H;qLQg&*7ER3^<yG^W<;h
z^`@VbyP>H$GNo{Qkr@~UIySzeB#fY7lJWEb%p_8*YtRV5qIpxrajwl~>xeAlBM+Iz
zYnkr=ta;=_R!vP+wYT1TYrU)YuC4Xnt*NP+J9^WAILJX<mvZ`0&sX6W3v}!q-QXmr
z^V1Le^ZoMl@zcNk_fJ3mRO*reXonkTj>Or<8soSdBAFJLf0Y>p?`Ba-Wu|c<OuPDk
zs3M4kJ?1iYh>p^`g77R~)D1-v!I6%<nJ6BmRw7#JLX@fIa3=vF)NEQRM)oTuHEh72
zXX}fZK$=K3p7C(UYxKGT!C}rO4UEA+K$xXU2vNeZbY^OW1CSteg@&7t9Kvz%`mi8k
z&@+w{hB;y4T>T6PT|NaK3Azt=2o2HJJV-G{#K9TQ@VXcqAhoe&i$TJldpL)ag+&BQ
z=Gly%^(ci|_=q4mdfahGj9lpO@B|!qgb0s8+8B>PgoP!WWf5WGgnO78D7sqOKcrMQ
z>gl{f2?{B-F7hCSnOobpZ3FSTE)UnMSvTFE9<HS>y|wkUGO<~-uHD_7Znu5kyP7d^
zt#w@%NA$g^8H?PvZQu7&(&?K~D(GE}xh~5T1Eqiqr7(y+knHq)1(qU7`o*inayWN#
zl{+t&5$x34$eSi)P$?a|D0dH^qmNXiju=5iYxmEe_pjgjcH7&w>!#MtbhF;gI?M}w
z`Zs@5PRo7UW>J-BNksV9uV02j)GW1=kwQ9E_bjG8-RG+6`Gx_iYBp9&X0Az#87{Dx
zN}@~>P=FO~L?V)&F@+Kla}oaUSp7jf4(fb~=Nk}2WU5*HY1eR$yZQ5uZWMI1l@_ky
z1{j44>bcfBGEP)=S(c-1^2jy}DJ~%d2@hOd1S3au6cNi(ldu-%0WU=+>Hlb6$=yZr
zkmnf#GbMP;;nw>OkeiOm!jE{$@S$lSW+8AuxJ2=A&hC2(gSz&Y+lz;X`}uq&1kHOc
zCwY0s<yI;)T#v|T5&H4NyNAo_zG+uiVkVZF;qy-7BFrMCNGajSINf7f<>qFZa<G}0
z`<m|XN=;w}_;fzMMz1G1$lAQQ({cc_krE1GPJciqXC(&B$J`(xKSx|bE<6xfCi^gv
zVOr3LCf+%j^%jE)9ka#)<_~dl8dfxvvK%4ZQ-l(8gES+tMmS6iu>Nd5c(SbrwcRbW
z_r8ZU@6EKkS?j&2-uJ$>w(YH{wys@W%~dU^SVE+zK(6KbV}1W|U7GD*-!JdJZ~qTk
z4Ow4|-~Z`vpZ@Tt#~*&G>uIvHCr@_Hg_Hcwe?2{bj|JiDa58zwWt3JjsGFWR@i9%s
zk<rJa)1ud=6A_%?Isz}ndE{#4sYOg+IRq~mMUaDp{N^ww_&#$l$B^R)OUkEuST_At
z5D)`)IS3szEbn#{d>+p98gdB=DZ*v!vvWm}r&D?~`)%8wpO?qeNQucqhv4v(G-QDB
zI3~ttGa{SIQJyaSbW2*!nZtxge1xVjkx`~HreQHNe%R(PW`Hf@2mqZSW8tskA2TZ@
z+*t;;*L~!&rjjTNV#`g~s6yfHhJ^Hs2ulXAi&_98l!&y5D7B0`Ekn3X5y)nACIm+<
zg;})sIXT4XRF`FlsC!pcbB|?-wzHe<`~Gs1QhINFJt;t~^)&be=ziaNcaM-#)`gx~
zO;vl#0%W`2@7rGMlAE~*ctlqPu-F(^7NU%8V3A~TYS(1QWQUZckNHsMl_L4Rx`$g1
zrx}zok}%5)?%1^E_dbuj{BCT}+Omgs58w9vx3Amt*X{n?+NRpowQ29+Jxs~ZPmhlu
zo?h-ZE>&3EgEL=fL}jPSXC9T|VQSXhEv+GD3AjtnfxXTHM}i3fP&2ccQ9naXe5QtE
zsZB#jEW@anybsU6QeuM>s;C*bNQVRIScpet=l~NFmC&HgU_ih;CwXQFb60qCCE@eK
znQNIrlUzy}v*PgivlBU?>DLfSx+1xy#DPV4J)a7Rx*Hh>9}Bf3qbQJ_>+89l)AbzG
zxtk`R*WKJzwTO7cYl`-8flH83<bIM$wwy;ZkTb5{`#b{ta=A)f@{ev7?k36VNO9IA
z$L1l$%%A@FhjpoN%a{ZYLKqhbFoNC0jUo!L63Yx@$gBalT4)<!fzcX{Rw^QxOB#w9
zB|xXs$;^8117w)G`I%ohVs^7U35qZSq5~xB=_FD{fOa_G8RLa9UFY1HkDroVbP%xw
zu%1o>Sm^HVz4w8b8C^vF{pZjn?*-ySV4lvWzIUR?aAdau#2<Od5#c5*=}nWN+@l~=
zs?2O=Qy1U_xT(9Dc9`|9z3aBMm;1Kw?Y_0!-d?u8x8A#UgBj%($&83glyiOffYZnN
z?sO6V`s@Ga|8&>wv#h6wpMLq_)1S}pK1yBaHTq=?ej;UN$4NbZ?=d=>gZKHr`%uvn
zgDkWMcA{YR3<q<Ow53trC6JtFCM9ZUj@_a+HmxFMDIij~j<DbnRF&wNu9kwV82K^o
zt_aUA!`(Rzy#WHUcNxo{;g}c|19OVo#;-MIB$#FY+hgg_Smm^%3MIBwL~2COCL_00
zuzS<3x7HaMHGzSd<p>+Oyz|~a<ZMB6W;@It&Try@nMlktA_BE8OdP2jWf_~_Avw$+
zlHM2=5i^}~5~Df&KL*i6XswM&6^<x995W}3!MV@9+FXVKse~UBYMM#C$<&J=ViBcz
z4dj0ik+1;dXs-t|%6tZVI8o+DhMCS$9%YS?F={2R#u%9;j*$&sN(EEzEi3LE0$5lM
zLUTfrAzyRN#7CVS&o84iP9i;xvo(g7GS7<;mW(YNR(O`)2t;Nv4#sq1OtAtHxglfi
zz!H%j6*(Sx0^Ajud+y-~SAY4JfBpXJKiht9))cyXH?thW1|vA${rtmvJw+IWWNB(<
zvz~P35&q+<fFs<!r)?_Z9o_WEzsWG;p-G&g$l<J~X+|B$iet(O_YgiddE>8W?ue+%
zvMdY0W<8VF^CKK4n0y#BFlGq7%!L<*Y~Q}w%RY$09=T;TcSSTeWk0WLU26{8!ZoOr
zQnOH-krt5yLY9eZqtFbVB4L1qOIe9ZJ)eBrZA5}cewZ1kIJ0w-N;iU&hp5io1~gns
z)2^yvs^N*wG>=*r5|O%!6ycJLGc_wL=?r{bGI=-!_12EFU_E;&b<D(gDot~UKl_7l
zXDM#_<BvaNs+wEcVF3|9M9TCZj{=XmI7voZ6ALIzckR1s;~9I0W3m+hBoCDkNGY!>
z4+1#=H&e{_gr*j424AJDjS0N0Yr+cBJC$dFtAS?4lml%b6GC!o5aCklvab0MM0jg0
zQw)GKF(jJlHT2SBtc6I*yQg>O%lVE?MO6E?-7}FUry}mbLsmR=YVHilcvpG<{(aMK
zYGG<_6b^$Dsj9Z7ZP&ivZ!h=ze!J~2-(Q};J>Q;h+kMxj+txDF#55Co7ovsEkG`B}
zeKfh0Wo^a2*~7El{_@M;e){v@uGdHA6-@4#_!|W0G+pE}HACsMJ{VfRL9gaFUGX>y
zeYjCQS>o*BT}mYqxCGdUL`o2wbE&6~AAk7%{G64IM|5r4+7dPegaRI0_ZVaw4p6E>
zK7Rc8^86BTQxFWE@BbLDg&Ph@&WJ9N2(XN3@gen0>}U!>JW`sMG3R;mL>e$4VK%Fg
zK!A&I6)Mb{&V=mLGv<My-k$I4-i0#Z%2~+6c`PDm4hG}(_9e=3(=qG~jYw_F6h@6W
zL69dqh9xH?DRy8Mz+wnX7$nOg%d+$iv&5f7%x^jVYCAkfpu=Tx_@st_CtJJJvSvYf
zj1ZlIncRH9Y=wzRsf7S$8DlKU@qiD}2d7;m$NS_FBoSnUL%I_duBNJ46lL{{(Bvr5
zt~UPWFk*3_)MZ(g5dc(0`)(QK3V)NFHdq3d|2WvQg<6)}I0Zc1rjOQ#rYH&XGjVw!
zQ*a1ehDwu(va-*l%Wx;+adxEE-!Y9FL*tWQN}dc!xXFLnzV|O*eczkzyY6aT!wufu
z(s^D^%OC&r>H2Ufxs9L*jO%dfz@lU|kmk`;qYbU=2%^nrZ~&;r7s@`Rur}Ev`BbFo
zD+h;6nIH}>oH#!pj}vFbM?9T}Q6`2cG65#xXd{m{G{S`okem;}ru*mbG?0m7B4uvo
z-ou;#!g^WHmvi=nTx3~Rk0??~VKrr93mq?nSxy%%f<;&)D1ca&^>n^2>t$UoW~AyV
zi{qRa0dH+f_$v$05qCer>73XsRFxtqY~QvBNUa`mS<lOINylkEUA0OP77v8mVGtTC
zPxsz?9xhka%k^4I$qjA{0o&N7W)qv*qId6}9v@BwO|R^*Gn;!D%!tMFYw+l%Oodod
z;}fO0g=ve>aP>EO@feFV0V&2Tww%uOP$v!S2*4EPEi8kNd<>0okoFm<B;|6w_PvdR
zb!b!qWTrj4oRMD%@|fw(N<sDd@K{RCKW?7Apm5h|A{zN_Nmd9@MB;%ekuS?Kl&<+O
zGMjqx404|8QyLjF_Aa&K1#~{2Vxy%*Z%y1%J`y19w(Wb{?)&X|zu#WIy?p!nyxs0E
zFMHeUw)?iZb_sJ24`XwJ;B;Q=^(xCMvNG1*%IB~8>+gH`>G7vOFApE3t^hqgKB>00
z-NU<Z1WRv|Q!<~w7|x1`hr>ZT8Ig8Jva?%)z#}-roAa_L2~qIS2yrZ@Ypv_)60vW)
zNA%u$+s2P|@2#mRGb1RQ=%I0D36FpG@BW9M{_yjE{V)GzyT1r?bJf(6h9jIY{2x=?
zI6M-WWl-yxn96XVS-A127W4d#0uEt!ouGAuXSBoXC_5-*SyY5`5jb{%Lla<K$wOP`
zQ<(+glzPF55`~?FNQ~&``IE=Z#z$QqQi@ROhX6p;&1?$J<>(QI{U7AvX?a-JwbmlS
ztu=R}5jLlDwLeshuMols4iXV570f~`OlBGp>TP&thIBUwGRid0q(2GB>2#^flB1L<
zw82aSk7*momS_+tBOUvxOip3uoD%f5C#rp@%vk2CE`pp;rpn=3>N*}i>*4uwcbZBl
z%w>Z|&|G+fS?Vfv0dbfi)U=tYnI6fEm`d6pa!t{-GfPHCPqPY<+nE1O!%B)cQ-7_h
zA_bX0gh+ySjOZwsYM2fcko)%AmzQ7vb=z-d>R}@?1mkjWvUeXoy#M$lLJ>BpGe;+j
zIqfqV`JNVI@@(lOU<&4FyN0LRhmR4oXUD18_R9g07y$F2oLvvAk5ftqoG6`RU@q%v
zUDi}5$dJl_SP=~oW_={8XI^K9Fa?BHGTwe8Z0nH#03ZNKL_t*l9xuD?eTd_H%o$r2
zL<nNKUe9$Y0T<?_E=yelBC-Gu%PzK%5G)Iy7=rvXv4Lt`*V9#Gy_}y)DZK4KZjCJ!
zhWKlOhmUOmJO!sQbI+2VQA&VR-Fj=S_tshH@##rqSx%Q)P6SbNi_9_PQfuu-Z*0P&
z3Cq_`wI5r}^ZB%{r_575m?W86h;TwM@bUfAd9Cmc=i!>C%r~YG5tLyvGy^Ee5Mthm
zgj}8A*1|fWBj%blU1+Mr!Ys@MRMk~V9rlnhb55=-T;09DYQG5)<U?mHL0nHuEwyiL
z$OlHSD(6r)ayDgIdQyV!!V9=cSuU3=OVPtL#au+Fh?|+&oFj}Z?hzV_0uCvq)T&*F
zcp*YWim+Q(??Zf_tL?-{<%H0M8O!C$T*5aSIdDPb=Aj<l?B(VD^6hK8zqI@9``2&V
zZF_mX-EVE%TDzMn_fD1qb6Nr{<$Qks;qvZrJ+HMC1h)Hrd*1F_fB)fKsb`RQ@UmY1
z{Fndm`S*YQ{QIwN4Pnd*3bStAhRn@#9^?t8PxL}Cm?U4+SuE!=CR3%mnSlyWi8w+7
z%p#ygJ!CnZ&ezN3db@8@D%?p`SWpOI;l1yhnI_yjK#>7(1OUsr{_xWu-oO92EdO}F
zZ$6sTq!(Du*$A(L)7-1Egm9s<Jih<vfqlD2I3qu8gu9SC3BnOJnMXD_=*+@0j@5MS
z2-kIKBmv{GL7DO-0D*qr&mI|(`BpESzIGrn2~G^Rn0CKmlglD^K=njkU3o(w({hYt
zL`0H@-Rn<hPV-qrXz#Twv(RJ%+>;2F?D%wo@sL~$X-T@eWhtj4Ib4v9LeB!!Jy=p~
zq97rL1iJ?~Dhs%la!w9)t|5_7tto08(leeT=xNkV>t|khNr>)f5uv6jOZ1@8ijBV#
zfr4ZaE=xTv%gI!olnCyMJ|4v*QPeY%a>m|+qSRH&BD@0ZV&R1t?%g~hG;&gvYd?Z{
z4kRK6ydsHa90dglqlcSy?ZP~JUUGMW0A$ty4lr?bOAcUGAqF2aVRnzLfBnaQ+P^<H
z-6LVL7#4sa5R(-C`Hw%Xr<w!lB)^OjXv(RG!owzVVEj9;-WZ-U5Ih4sVv2<W><6oV
z>?20MGJ)rmtZp}D3P_33b`by(5V%N<NP>_!)VdO7*e4|@B~$?-k<cFI;Zf>ZsQOKB
zzkcz1i&>o6z+Srp4mZSds^{xjL`o^8a9yf-l(I0b;HZUx?%q-f<YwWfNNP9=sFZrW
zKGx+DA%Ntnu$1oJhS4tPsi5KgMWn<mrVbH+rMx^%;a~#aUiRC|_uiYT7Ac@|et2K&
zQp<^`l15$NuHjy!vS&K2yO|yK@nOtIbnOEnB}`03GP^8t(n^5mVk*3F`Q_73+Fz<H
zL4~Go-xN#*NJ@Ef29gJ)OeGB`ZLs~}-XoMKT%8G?ertC#1hZ3-`asOfvd$O-Vqzx}
zAs7{51Kb?!u01i5Ik<NR1gF!<Z0-T3E1rbNLYSNk0S`0lM1o95a4>i&MWl2cs@I(L
z@t}r7RrA&GFo0Ywo9BpNs+Y^<a=Cu_{DmeJhM9`6MppK1WWA+?0g|6u<W$OXy*}h3
z(#AbaL!Xtn>F)P!zkk2&x96AV+kU&>Ubby(`_}iZN5GuSDWZZ%>gnO*k3awN$M+vU
zoK9;3G4I>$<#w~6x}2HCEP}W$4=m?peO%VNwi`kb9dME2J%twvckOM`BNC}9gWQl&
zj~G0sOuIBwx7@de!zPHggcraa%W^L3>Fhy~MSg;&YVi(Y)3#Y}xp)npK?hu%g@n)7
zhwJr0&Aa;8be2-<(!HrVqK{_X9YiwhiK*Er>*?|O^i$WaM(&z;4}?1`$TG7voC3y~
z<Tjk=e7JG4ZB5hUa#}@u;ZRlsPn21>qwh`kMi&XsSWJpn7cvehaa!_*4>1lC2bc@N
zBmcI8r5@9?9BvvmM2|$mH2gnA?99w1&?9Ky_Vm2cqy-TWnSey(6LB;_icDUDAzVSs
zQhC~?h=Qn(u{pB(9Er`u;2haUu4t*$wJsNEN94HMX%L>?%3o)u`KuZ{nCE{@HnJzV
z1Z7$j=N@t50hoxLD2NM5Eo&(!P-T%cI}<CgxtXd?onY>{W?%smOQ~gLK1sPag3UaX
z5F#D4yE#qR-Qh7EY5^B;&Kkftc63A0W>cMGnyU>`YXC<uAS^{NBuk?qcXPMiTXZcJ
zw}1J(eg3-l2E<THnWdRJLoFYk&OiL{PK4ZzN8^*)|0C<!hj??;I>QH*N6GP0Fj03q
z8cibhVNfQByxPYGv4lY4VMOAtLnhrf7M|B(Awo*sF*FM@+$ZELg;{cvVP-^>CR!#c
zYl$GcwfjGQ!ONB)L=7MQ99PZBAtD6J`9y`A_6yUpR(IoaA`*~DAv4WqQbd?}zqf6>
z4;mWN)6?Vi;bEyObF~oF#tbHAE<-e(Op+PaK4wB5H1}(hgdszn6I5g=W$~cay?58{
zDkk^VRl}WFO1*GlP`I1+R<b!WGwZ#Sl7Eeun#gR8&1~B?cYl0%xIR1}hAMkRR1fqK
zgz4S82S5oj=~fgWH0Y)bI7NZyZ#eJ*9)Zv~?+SBe^1+vOv)<aiBjpmophAni`|<sH
zI<>ud!gq$pJ6m8-plOGxTOX2P_rhy1u}~>BImScY5#WTxdU4yC0&w&0ssT-*EwF%!
zlp2v6Y#Ku+8aZqP2#1=QTkq{4VUZW`B1Fq_s#RhdN!^FsSBN}=BHi+shf{<GgGd-w
z>rzTd!^04Z5Cx>vrPQUKFZFa{scvEFro)spU>;KXzPl4p15}sO$4{UB_~$=={Q1Yn
zr+4dVt(9A|mzS59m)p85*Xtu7?i5bzdIc|LT<evI!!{3Q@>tift=sPAVclF+b->v;
zjfBF(R>MqeW0ej{@MG@JVF+R_U?x(M1pzASdO8Jo+neWRH}&WFg9Mhi&}_d*h&jxX
zrp&dTPM7=b9zbh5lQ=nuDVI+vL<sZAp7oJ&1&v^;ygpvv|NQ*zJ69v?1dY(}#zdZ}
zsie77n1TXN$FP$J!&Gw*;)q&nC#tn_CQ}j#m0`gQx31b6THz`~7Zw;Vh>z8vSszO=
zzy`mCA{<O^maT)kS1I(yr9Mprma{0pg3IJn1Q6=Z3>J2&sx5`PhZhbJrky!=;p4s!
z=h3JHvs952%PQ$#bae`_uoSo5wYzH&oCM4q79<XrvP$8)oMbuG^MmiZ_buFpvF#WF
zzbejhd4XvQ^o-PHI%J;0QmRyKo7+D6r=h_Wr(!4&l(I@$L4{e|0V-f;sYF6VuDZ87
z6H5_5a!xE#q%KldF6X*jWm(DGU<Ba+TPvk#%T06&YvBWU#axOzL>OE^asX_nB`MO@
zlBYuNjga~PcMs+opok8Zw|<cB=Bm;Aw)N*PU-$dX-46Fpj156BK^Fey-~93M={n)$
zuTX>>j?QU9WC%oB)Ka!GqN5XoL%9prJdw>zGpr#(>ax})h8=|C)iMbdNw&6`Y41Ql
z0bp4w5nV3lx|Hcy<0N}z;mBNSU9{cr_pP_4s{7s;bUL4ktSj;Muix#r@7{WNiWFVl
zdYB@bYeRGj<*27+-}imr)pRmEa#kwD3}%v2*a^;DZnwMk-g?*GiMiI2%IYkoTWiEZ
zBBd_cJqGc1tY$`iJRCWEjH3^1HH{4yms&-Z2)f-i5jOXI+xBe_P+68z7DQnYa|>)m
zMAEZb)-@}U>A#qmo<I&yV$izjd|7J|rr_KghX-6(&gawP<FyJRdU)oc!b5YE0TM{%
z2<8%qoDgOwbL0ULf<q~S;S_GVfB*fr-#`DRZFh?ZX;%31^Z)YkFF0g+qsPJ<XloSm
zFW-N=zq|m{dv^m+vAp~7mv_WDL?3r{FlU5`BZ@FN_HBFq^7X#mQydZyE|<rT*LA(5
ztR|B@M2I=yf+AsH3PiKMZ?~J9X6zEv8hrZU^x<?md4!t7BiCu+3}-M46NFT?w_VM0
zF`;H_J=1Af>Uz0c+8A*RgDo*5q^_sa<?-=DAHD(WYuoqjwyvvcOK{V)$(QT9_ka4!
zpFe*3!}}k8czArcUQTtX=5F_<z29y(vtT0a=mig#3v)@KEV0z(>_%a%rll-vU83E4
z*w(gv-%}M+GTxe_E<D+;)4ZG!o5Q$o1Shu$a#vO7QcI->mO?D`;pyG<W29?LqzH+S
zkkLG{Gna~qgN=}`V)gi^U;kM|@_Zbdc4lS{2Hd9{hCDpTz)Z|i*7f@Sbp3FB`e?@A
zpKl=M5Dx(}Y!?c%&LZPL4di|SL2iEZzLP5vbzPQaEovf;vJ6*#jA?1#c5R*1%32R`
zM@&HQPz*DfY5J*0KuC%Mz!6@{;t|8%>n<X>jpS*fCnQih-1Zz1fCa%s?4cqnGC7Dm
zw_7O;Cy>C&onh08LnOsJq*7T=wVtG$imZXmL<0-4D03l#z$jXzOWD~;z^hZRROSLM
zQZMV}(IM&%R-%~B@{vK9u$=%P$@v@36n9S^Xx1bwU=v~~L`15wV{8PfqV_PZSl6@g
z3R+kSaY3rSyn;>2LSWZMx_50@7uV9daaqa|^>i)uf#e)i0g)<0*Y6@_6{!q_^)Pey
zAgF}}F&7T3=QV%Xaqg$-j!0DlWbVD~W<4TQm6?eoiPyCfaWNlNEHg3wf3n`JNs{Eq
z^V7@RJ&ue#Dyyoi(H9z+0R|(ovrCHbfx_?q4Y&`aa5<F0pn<L{kBD%0GgH-lP_xKv
zVLbo>h}4l0?slmD_4gw{5M~#d=XpJy&c~x_?IjOw3vmynZ?=4Ud*Cn^g1c6r&I@P?
zzDuSrp!b*2%@#y3e|7nGFs-@Pd0Ef%x~?@1!*0LlGzh0?k|9u3DO?S}i6lDWL}=!<
zR@IvG>JFRD6eV|NbVp*2@Gzp7Iuh4v^SSg5cokwq$;TDelK*kEV|I0I8Ck7vE86Nd
zyRKw~AZ^A9w&wiw^nAFvE?NeWmbi3h;&I%rd8t_m86nkzr_(wwvwKaFo}Zr2xAXR@
z$Y7zBA>`fFo|%u&MH?8aO##IJ2oG3iVe~QROAtKLd?YfA%UViRHBBP%(`gGQ`7owo
z7{Z$=%xnhC;!S(k!gyxt<~7cTu?@$(-RT6NxS0?Hq+Nt#QsVtLZ$+>ZJ>9HEVp?CE
zMNUY>CNf01t=&{QOa;IQ9bLhzo7Q!H`26vFdY;ecTI;gZ>eKFSD?FIi5bzmNFIABv
zID5^Np{%E;uOELkv$E!O)oS9?{r$Ip7LjJnGv}b1DPZ7E6db*-^QXW6wUk`eT&rgj
zm#hDF|1;r`hB4<*F<Kk`b0J_?v1+dQ@4x)VGSA235gf}3$eX*j-@kpIB+0VWKJns&
zltij$(C8EDe17`!`ExGox|UKhVH$?3Z-4ybI8Ha$o2Mhs=cS=JEat5R!C||PmynsK
z&G__b91=Zz{TK~mP<02WH14i{{HH&?{qW)T{%(J@ONquYnbvt-=JTA_g$P*E@qGU4
zUw`@CcR#&-zjOC>ncbZ^1**XiOjoX~$m5WnpUQlmAD<rQd9KBf`1)|z?+-)?Q>T80
z+yEh1G(_O)fecxfT&u22b?0$=7&g~8`*%ob7)CWErr6#*dKf^=$t0Bq%(5CT5)N%1
zhx$!KmSycjGLC?ZSOeW+TJn;E2WDD}BJ#LB+`s>3n66XWJwF@~S!7ft1STWX5V>SQ
zKr;e#Qdd9$R4^~mx4{~%GjGUp!juxTCr(C%kgH~QQ!__U)%kexo$x5rIL1cT@LMfe
z5oQYmb0oA{bFF|_6&yf@<Oahy#8V*HM<M`9qum)efLhKaczFs~)QN}9ZkH0b0TESh
z#p0JLG@6YG5J9VzT9>)ZRSoFs>dkgw0}&cowvJV6#aOgah!e96%p;4|TC0_+r(7Q9
z)3n*MYybr?0T2Ll8gStT0BJ+@FOc3q_;ui4kihNI$W}KNQLQntHY6DwWsBS0rdI#*
zb^Y7Nr)+Y#eY@GEBx8sxBHT{IYD5S{&Ll)=H6Mq86Y9F==ckj>aJaeK9TL*OJg`U_
zhJd6v8L+r=lB7xIwdQ51rfRlkU5jnEyUmq25OM-w;z2~r-LwG1Ks>)#Oav2`Qonxv
zx-4_8T2)Oea~j9ZZogx0e&~oIW9J4DqPmt+{{HJf^3!8dzr=t8DANkV;<xXwcZVxt
zHgFE2LuY(O2<rj>Y*ExcH`Za}?HfSAVHl2hI?m^~gPo7-IoDKln6|DFilf$UC-Uwq
z0Cz-Doe|v3mSwHAh=`<IRb##b2n}NN6#<!=JWb4!R?%AKxzuXK4V6oo{kht62|$RM
zn|U$KrWL$^6$TAT_>d5BEtv*d@_MBfNZ<%{Z#G*1EME(8ax~&pD;`fv$*af2!+Fkm
zEoB{}9)nnG(OP?WrHyW1lmXSlnt`udC!H1-$#5s)ahir{TuaSGQ$liI@_IU*tyThL
zCK(2#B#dd8#J$1ZV;Ux^(1;lC11XuAs=7wg$j<Z0yt><NyFqI6sYEm;zPq~?LUU#7
zsLB_LBQ;zwk^@!%<`;!at06~M2Q-4vU^>sI<MY$JEa&sQoagf?SJ+P1oQ4#DG<SDv
z(i<co3O=&B)@44{l9zQ|mt{S#SyMd^X&m6f-zRYM;NCj|hpG+zbbKiJG@s9>)123`
zWWv#gw3U>?T#AJ3L}Unr!sucZD!P{C>Fbx%@wl$}`RP~-79E_f{|O}xL&=qq)D<YQ
zs|3bQ!IsqH)0gLmUysM<yhee<f%iA}-$_ctkW^O@xoAY8-G0(I23?C&O2d%GX&9y?
z18$zCB=D%8-7$^3-~H2{-u>|7+jsA7Zm!2MF`H>Vm-F+}!_(uu=GnCFwo@(jzyF{A
zeRp;DlZc2!2A+kQ^2xJE!X%YZJH}}~&(BZK$Kzb8J?@Xc|NS_QTQvxcC^AzlfrzR>
z@iccm9iQj(Tmqw49G;JxeLdX&<iWVtfT%D)jcaT`zB@3PE>i#$j&E>6EAw2|MQe^3
z!hmZ;LEMR|+4*!jo#%)}sClVyxW@Yr6Y-{$ay%Z@6o`a|HY9-V@pB>pl;GqeF@T~I
z8WC}ewL^O&9gLV*c#y<`%EH71R83o!!DyYAq`R_aMjFS|mfaSovL4HJNyLn$X0@`e
zHZM7svfb})u5Z%NPup;r$OR&_2BijcN4J{STy$Q`(`il9=AMvP%ql~=5aBPlUO*70
z&4`XZYcA`2Ixb(Im#l=m-&_lz0Er_Z3ULEBF(+dY=KVl7+d(TnKF`OptS9~W@i=al
z@3(J&29^<shjFa6#w94Qd)SRd>KeF%HcHT7mEeXkwH8J27<FT+OiavMv2lcPv<!Ye
zK79W4G#44Sx55J;OG<#4h5^8H&gO>1A_EK~Y=&}jb_K|JnI9h>6$g^(`V9gy5^Xj+
zVyv~28E^tONrP7=!jhNM@!7z0E?*yyYw^1`_v3Eg(l<O1kH`$#9#ld=T5GX~ho{r&
z`7&1mj=QU?Gz^<<+-n0p%_7`Lctp&+<n`h4VbGdTI5_)lA~~$XFzn>!{tgGWC@Q=f
zBkL^k#wkJs*T~;=A*^XUdqJWiV)s%@UDx7<r*oc{oT~!(Jg-+*fvraaCzjaCgEEAO
zC9kDI&e_e*a{=^H3rSf^*>#->U$E*#rp7F;D#Pf2$J4yd85|NJtCiykGLSctiK<mI
zbEsejUV8$Z8Qe7&ABajW%RE=D8zKY{lBjj<w!3xRJwFvhPAToL_J8}^e^jl^Ua`(+
zTi0x6t}9XaL#)(FL@6b$Yivvq5d3E8Y8Wi<V`@mP5Zxd`>WH}AY_4yvnS8UIhLp^G
zv)K&eXl4vhb9OQi+U&N{;;C&I+o+fCm>Cgb9FvH=g~%$n=XE{BZmLR~kqDVkgsu;J
zKto`)O3<?!fvPm8rV}FQ=ob?4=G_YEHJK}dI;g4EvVQ*j<?-P;m%QfX%a?~zygL0b
zZih6+WPO|5H${quc`(&<j{S39=4C#gPUlm}I)3x>J&_QRYeSME0|H^NFN4JgzUFmZ
zm(zKf*LgiJk5792?i+I$rlh9r;D|AtVT54OiD9fo%UbeM9v>dgr+Hb;d}|(^4_P#K
zey$S&F(HswF!E|SugCfHT-N#dbktm|qBAW^E~P#`S1qlK8HY~?i!oecN$mzqEHrF~
zVM_b`^!4w5C$8k>@hNYv-+lAl54Uf>d2|1Ef3;<TT294sDeLKcJe}r}<2@t<I2})|
zw=D^Yi5vNfm=Hvb0tr~=D2G`oWzD%%ozK}6b5RmOrpU9zJvdC<tfHE+qjPF4IY(87
z=5twf2RtyRbzP%OV(0+^b0TK~Bu)b-ffXqJcqR=I86kRIj$gn0{jWTZwU(&m_B1aN
zA``9ax-QFko=tUGHCN<8fhKRpUyXdDnG&$0BPDMnIW#jMCt!0UB#pKxfsw@#A$nk;
z5FW=-R!o&V<+4hN)LHxb$g0(>`)i4R;S2u4Us*!chCzrN(MqnTQ$Ee>lCum`PZTys
z_-m;Pv}maTxqGQ)Sr>giuFvOXsCs>U9jrUT-@?mUUmJ;$glnCT$LGg~<L9sQ<4FyM
z_unQ?1956cDUwSXM;(wQtQyODUYFDHd3}7GfBm?8{j%(DCkG}PBn?CYfRa)i0^(@Y
zAoSpIYL0kxJGr-}TL*x&614#^60;<$cs#Gq&nI^~p7JmMIDPv3Y&0%QRs$r7DE>H(
zX4ZfVZB-LyCY00pL_|+d=XI$CY`d0tT9{eQ9g#><BBcUg?uF9?AjjkU@c0Bo%bdS{
zea`A>+}>6b8DtnGZHPxCaxFdWU5N#W)ckx}Yb_D4Ar_h!)oL9&#3FHEV<NX^h(aO~
zE}jSUORX3QHKH!8w{PEU54(W##^B$}=vo(`V(Z<s@O*ch_Tqy#Ricv-QIcU@%K5yW
z&Uq~rzzagorK*ZKp&Nh@IS>Wm0t}EG#gLzl%RHZh3OJ4e=Q+G*DGkIN5yhV3VgM&e
z#FA@0o!9gEw4rnuc9Q{Dbw@)obBm!s*GQ(-U_qfzn*kG=7gf#~ka1lzhj<`K>-;uP
zGa!*GrD53bcf&Y(wj?}lCPb)JO{>+yV+CYYMF0^A_d%>hj@Er0aUs5dh+6Ww^#(8a
zA+z0X_lKW<GOy#1A`_pcNrbg#$1|1cjv|uRMF8j$xgx|!sa!^qM5G(&%)x5~t%?9S
zFUMzPyb_^t901_zYQNuZI5<w>tT5-MGxbj61!@+;28L-_n>Jt57H4;ju;Q|uPs{1)
z@#%D0@={OdQXKcY?fHC~U_*_#6G-41XCpI5fb;qE@bGv(pO<<5^y}yI0@?Tf_J4f0
z+ixQ;)BFv94L5_R2#&t2%jtMLJ)fVSpHHXf`M9iQ8rMw1o9%Eu6+()((~JHETbOg6
z&pEHh)A8~7X+16T;s$s)98wa1_LmX@AqYnD3OfzAF7tU==BKCU<9w{SnhNr?-R_yW
z)>5nzQj8V{u(E$agv7)!jaz0(DG}i`v7j+kTUW<&^Ua6-&F$g(u-k8^X>zOXoL5)1
zbzV-VQ_0k;5oTbUX##fuMOSTD#8*mVL;#rQrId;kFfucr=Q*FxbDR8%93&^=U}$o%
z5r{bW4D+(gOP<f`nypk=D;?hKB#n|10+bgu7BnbW8Z0Fjd9h;<QS_t8k;uJRJ<d<R
zj{AcnIie9WNn6kXaw+F|d3-!B>r$$f3PpKWoMenr7BTlwjDrz!&>Y>+%pI9A+A)oK
zjNWs?7qJo|I}{+0frUkw#x$;Jp+e9-w5keA_G-13VNB4``<<s7e6@-QIoD;GA0AGh
zzdWB7TXHqit7^54Wn%ZOa-U0V5n?sdTAxqndCsSEeLT+dS|x1|1-g5@>(86)N8JFR
zD1Q9(^!V`g)91&p569<I%?jK7P58~BmoJ&Q)|m2T1B}G+<8%4@<HIsPe|b1PJmoJ>
zC9BBJYD1*Es;XI__<{}6oE_aa+=`^l8rB&RaVOTsIshU!h4z`l$1ls5j~`FxWnSvT
z<9b>RSie3z{LX9`M@cD)Btao2qH2gFKw`kp^ZM!ILn%5hWnL?AoDW(cMpaqlYJauN
z=VehMMq~#r#;3FY?U%1=nu{(=W=ZRk!BJ!o8Hp0}KtzPHmh28FBi2=9tks`S=bSSF
zFq0&gRQ1LE(>VFe%m|K7Fz8T*aTvFoFOScFK6sb)fFc2jZf`cX?{Cv)iXrBgG46{y
z?v+FDf?|#ZuzLV6{%LeaWOn4^Y5n@;xzy<NQ?)X#Yl~xn0Wu<rB<6&r=A02RjU%$0
z&+GAd1~ek7CRO!3FZUQCRB5=`-%iJk<M`(O{^`rZTHty!?kc4kjCTxQdev}dShWVy
zHH0+D{fFCZ%ebB5wt91Wz1wX?m{^D;@|PuN0s?hLP(b0dzuNuzU;Zd5*yKov!!)HK
zIT(NuT0mlIt!}R+J#AW{-9_ClrU$tAcDfQMxFd*gb-0Svf}@QFq*c{28-mZ~z>??;
z67M4RwIFt1W(K%;tRrB|?#eux1i%xBsA_d{FcX%;ZbuXjxyHGt_DVS-#|aAnO_fO0
z)xkiGNC3I5P}REaF`Sr|bN=+{)AREwuhorf#k7^1+ru&+0ewmW%z)11>IE!EQY>hn
zj}H&ay8il)Ps>tIi(I|E{_&^ZPvaCoyB9MgG_PfR;->ZZd^(-a504M0=i_`Tr)B-)
zfB9zGjNoKi(O<M3=55d;zJl|7{`&RH<HN)GbUZzsPiNmA_V;h!jl&pp>p%|@I$@XR
zLR4n#bUHmgJ%9Z4(X6g>t;&>!^dFNl001BWNkl<Z!_Cb&j;cz4))CRK3{ia(AR<hF
z0I(y1g%!%`Wj;NAHCXqDtNqn(x8D!L)WT8Te*1ZuA0EC;;~@r4tLkPNnW5IaoKIR>
zR+iAb$?K5_)$I8+FKZ!6+wERt7>3Q`<MDW&5t&5NFs77%n2F<lUTkf5ETdfV)8o_g
z@w6;<p4TON_2IieY-HF7^R(HNTH>T)4ulv@0!IKQP6Of@8p%Y^715#qW0nyL+KN25
zhfORBrDkqRF3-pL>*G_YdY)H6sV*O603=RAe7U3o0vWupHe19G$$HVZT_A`fRUND{
zM-A?jlcNxkNCH$%G6+kh=ss8+_|QV}Z5T5;{^G%oU!~Ts$J0Ol@%i!LJg;_IS8x}R
z)4T)?A;|CDric*K9wG%awO>Dd`Sl;4m(@>8o%0He+wIQ!s}1ge=0Jckj2B%;oR|8a
zfBpE^|M<_x=lQ%=H9$%QPUmIrWMFvFAfdQtk4O%s$D{v0|M$nwpMK57PD`!MB;)2#
zs#atQo%hw%RbH3noJ#4lh#p3hewBJ5`(r%jje&sH0WXM5U_iu$(p>oe`uESDKR;Bp
zs>n%5)~BbZwPZ;WjrnnyBynEz`K(L=#768me*7~3kN@}YYEV^?iPP}D6s^{;2F{Ws
zC8`1|0U)suC8X)g<N4Pw$9X=R88Z)~Jw6@R5&}vFWCx7r-=B}GJBuriGEBrWpVwtw
zg5#S~CF00f5OLH75Q$j=u+PFove|4l`(1`=wG2pO+#=D_K-c$ow{LHDhrRd7QGT`2
zcBnA+Z>%YZz+Y|1&DzxBTnIoYQMw0oBGVQ%khr)vuQL%MrZgam8KmT;6hs=w&A8dF
zd1b;-IOI}tRsc?ofe)8lWX&b;TEcR@-QR3>hXZa3NOb~gIYRIN4yapkE8rQtfYC^A
zzrX+R!@Fra?RMMP@!FZ6*`3_L8A>TkzM54nt;~WrjN`kvZ;3%zifW)j2w7E2ULm@p
z4v3V?>Si4L)Rtw_PA12WM((0)$3809%MO5&hF9wAHhpTU?lECZS_=`1s?kfm7+&-M
zmjYKC&vyhuM<xoX)HDqH-S+BgpBTqPzx(iRNF1~N6z<Iy?Zn>iiK`-jDIteE!Py8I
zfMcq?KM>71cXfUD{ZBvFl514}M&68@+i^s~;<^+NGNOj7s;yt|>W<ZDd$_}SdB=w|
zY>x|k`2L^o-rVhX6Czb?DBz}+h~j$KQi%^YH~-_`|2>VHn_*kvblC6Tynma9VOdM?
zq8m8?8yr|o14R7!)0gMt`E;J=^LjcjYnAJ1y1BiXHdD#DO|XLzLUUR5@5RhMfByXW
z%jZ(d^W#$~URD0`Z~yDz<{G*6z_3pfbkD(S^A`dlJAn+~Hg2wUcb4s!-ELcb+-!H_
zIE}-|%<ffH4J?jn>$-e>_<DPjn1)iTxur4HvYt;*)a1v~RP`}-(N0ugP9&q7OHu%w
z=K?@2{g1<Le;a&ez}CO5q{L*7$fTxEPshin<9X53oYk3xfLJ79EJ?(%5EFH`eIO%3
z_sASIB?6a_G$%<S6fJ$Ltv!HhO75n$x<gfacsib!5|<wJYM3zI+ZdmUA$2qCvZV$V
zZTO@%kPyW5D4=M=!BM0@&D^XK5wOchtR7WGbSCfOcXLD(B<X%i2leKmjzm&JGd(_?
zfBE~v*T+&C7zic7ZB^^;Fz-=EAVN1HR0C#N*Y)G4uYddH>uL517H#RPtLkmCv-h-K
zq4k=cg@<|dUp_vb&shW2%~}CY=Ve**9vl(IaXcIj&(DwN^BItt*hngfx_o`E|KH!9
zVlEemDCzceVs0hh9!Z^;xs;fd4Gs}UjRR0GN1g}^y@HTj6uK_Nl#<mIQPQ-lP7hBf
zHANQ6ghY>zPg-?d*I^Vy65&@rW>Zg8#kJz+$FsSr+Bgo9^mIBe%W~C@$W%&k&^BvA
zh(_ip!#HktORn=8tY<4~X*{iKvF4X%WErLn5h;KH0W$KC(zxI6)0hm*+8~^lS^+T)
zBE!HUETb?D<KSkh)oPZ+yZwF~hcu04nawH!CZ=JKyAOBozPTSaBZ-7Kl9}V?)y-;t
zx!oc*nTxYoo3C$D^(cn~R0If_eZSj&_x*==@83-0RJ2yr-F8nbX&8t|QgV;fU5Wyp
zJC{<JWHU|g-oN?q{@zU2H51|CYX8lLZ#J795hGw|n1~V)H$#~NIl`(3AJhs()DX!G
zR2AISG*`{88FX<iU?zU|;r53=e78UBQxXw*bqiqxHiKL;DFAXx1J)2IHR^a8Mpq67
z1PeC>3y?dMQV`v|SS@Yub2Bi+%dF8W7G(!PUgm~6;P#~_L?lrFZ{K*#usT4{*IfZn
z4TOo@YyAFzn)cngfut@ZYV1R-LWvNEVR(E0_D_HM*~&ake0P5cTr|2vBtjb2_)-<Y
z;IRR*qa%>Tq!TC-xA}wqBbXy%y1l*MUtLE^0e~Du($!{{5Q-}pa18AzXzcM#6l-*N
z^X<R>*V|eu@;Gg;h$fM(FncIJ+tca6MTszVH3#Q3UjOv-zwU0{2@h%5Jf5<{czyRF
zrDRom<30R37RdivH5b#$-+cS??&^M-=lQ&R`uug6uHJq4`Re+xnKu4velJG!W2(>G
zt9q_*|IN2oxA*gTF#}11diukk|Ch~nvz<0oTX3Tx1H$%m5hGp#jjhR*07sMwW$QBX
zU^0&5I8qZ4V4EaFPeT$Sw}Pm{$Sia`9pAjUO#>qscl%E>_PD86bTu<#xw(7$^~>ke
z^OG7nCLkuJAAb05v)M6^Z{B>E=T)`#JEV$N_hcr5=75}r>$`iI>;A@a)@;LOyB((~
zaKV?^yRfPC%Mlo&A>oi9GbtkgMO|h{!)79;mgxnfaBp}4w?IS%jxv`O0H^IpoT^e1
zVQP;(s0MT%sUnzZ%=%Ze5;~iHOKnk7Yd$3wmM~1c{9+U#CbL+NN%G6wq`O(rE;_}W
zUKH#vFK<YtDxx_knxn9L9fUm04$Rnh|Il{DPDbd2czu0%KIUvss4z|&B(61=Qku-L
zU$*f#fgMXpw!7(Y*dalw2E<75W0*91BkXoNB1~xzUR2wv-P)3Z*LPRTyq0RqTESFO
zisDwB%p9Parj(XtZha%TG=c)XVZExu*icO|rlptlh?)lynRyWT=KZ~cuk&(R7D;Is
zHgDhFi?Er383{ihpOd6055yET0y5KfJN)@CKhN|0`1mwV)7ACue!m}5iZ>J4-F=V&
z2Uz%AH2~-Y;P>~pzyJA%c|NPwcJte8uWznd21E|rlDkjSwB2sCRCPrXO6lrw^)G+<
zbIzrfdI9AguC6!Rt7&uPj?6+tL=x&XBS5gcELVr??|=ASYqnYwv3uQ2a{Klg2XSH<
zghfzT(#R~o%{d1#9WJBfp^G+X|No^t-Fl9MKs1cwk3W3Z@c!}M8JIy;0AxfK9vp{G
zqeOR4DQQJzxx2k%1OP}WG4nX2VHg0g*6I#s;E1LbkxdN&yn6Y1eEyGL{b7c=22#{o
zkq^zSsAjE&U^UIImSDWw{_syf-re6zN`Q_nx<>$xK%Ltad?t-SN+Js8U1LAQ;r_Cr
zdhlYK<rUCtRYWp#k?4`&<+%DAog%&v+UbI`rcMCuW~Ymbpb@aap=CMS<edP-9v(-t
z%fuM9Tqghk@WspR9`$e{62Z4`?|%Q&cfu7>H`6#KLD1OPBFSiNM~~JZIsyTDtm8<C
z>=lR;^y^^UoC32W!@y#LJ2)B!gEl#eBrz=wl7)dR()hO_A+rGRxEY4cjVoXb@DY=Y
zh&V4xJpI=0%HGgx>hA2grD590;lt*RC^_-9V>KSe4H24FYfne)zG`N!UKIf*PU-vK
z|D}|ib7m5CSA%i7IvlRz_jb6h8vuc|bBZC$_WJhQ|LuQ&TdUSm31yhJz$vBOb~}|?
z{FSJx#YDUIu$w5l@Yc;8)KNhy$XwB7lr%<ADCSCg&_^U~|L{-$diUmAmH|=LHAi*m
z>Tt8!Y^G^^Iqb!(wwl)L=FGz|ZU9NE0pez}0l+`~`OmxE{&0Q0+aJcwZmsS>QRsFr
zKuLzl!Bpk_x8Lut-*0z^QacdO$HVP+<1`M#aG5-T&>aQq4zV)(VFOR2TDBzMf(FDu
zjJ(}!uCK=J28nucJ@^uy>ssoHZfP8T`tiqiZ{GsoFpO#1j?>lMn{UT4nQ4g1TRqv0
znrzfUIcgB<v$zEJ`hVYZ0Xd}QtqqLrSw_0Vek3Mmz!U&gTbG3Zm|`&ULZU!oDGn}v
zdwcb#Km9b%bzTb~MquRn`f9h^r6IwqW?CzWGn1>iZ8n<^AKt&YzkhmOiUJT0!$8E_
z-Chz0d*;IKh-HEqhjBo{?|=CA`uZ?0tF?oMILhtq{cf`z(=ep8%!~V=jbrm-VBc)U
zfBP?gnU}K}R`oT*v^(6~-rm1`7g<gOI3JJwg93nH{o_T7aA~ByI)uX|S&IEp#743N
zBD}dd{N*qI@-Kh+OU{J|(=c&Lls30_ZzY9P%&ls~n48ENEbiog_~Y*pf5^G0dm4t#
z=D=w?PKPAS1n5R#|Dg!zMaG#WrEk9daC>{L8n!K!A+e<0;WiBu#Z0zApb9TXDF6bJ
z>)X4ln*(<D0{}70wApTVJ0z)936bNZ;>Ii~Nd}!Zn{R&i&6~HkZJDY{7(*n*U1geN
z7(^t7tpl(aBF;`kh<<q-a2j(m@CW^=)3`h~?N7kz8pIj;?G1=Qgb>Mqz!{JX;1VcP
zGbBhU0SKeVej&_(<1M)qFMvqMQ5bM5UfoJP{_^Sk%cuJF8L|?DBDbBEYgGr&rUiX5
z&0tkju7*GU%OCFU?}MWC`m_<$Menw90BsaWfUsA!*<A!^j#q~+V!GfcT4xAiexgge
zd*-|!pkMcfFCy>D_SHUQX6^?0mlrLVLJeoz7H^lHvT2KpcZ~k4-_w4nR#R;ud8Tn3
z@9qw}ogiS6kr1tB;;7j`-!?jnzEdB)-Gu{R9_`+q&H}nLotZ<@7?LR@K;$6Ya+{aZ
zs$qK${49VuFtVv5kpU424FW)ff+R#-YiT)AYX!z|d?F&y5O#%#mvZt8%Rvy4IOojF
zP1l9sR!yt9xgx?Kl8jvth6%<Rc$o+%i@UFR3Cswfle?;`Rd53&q7i6J!&SUCA&)|q
zE)T|9^TjjMoxA?q?;iYBk-^N|Fc+J%t(6VX5Q0tEKiPzYNhYTKW_t78_woL4e6yj{
z6&cbnsD|KD5eP`VDkEoSHOg6+^J)&mu(`RtdGk&HU`T_=X0zL$=LL`=aTD`woD5io
z%^@D)_ncCis)7Xo781&aWkB$p^JVeEjv5C}xZe-I`$oa?N9GY}9R^cI*zcy{upe)(
zWEzpFGnV1P8Hg1Aet+0(cHs{|PAQEfV;Z-v%X%&jEwdd}LjVoDBDh*mc^mxN`+gCj
z{b-BFyfHQZWCYk^i=|5mGX$tmtAQdo3d!ZQdfm4}L`g!z<2b%~b5~V!RWl%D5+)WA
zNl7BF6W8tbvWC2u7$J?*R^4vifB_RS0FcB3KqM)`K9_D55xH^5LUy~Wckigw>VTyv
zk|>bKwB2r*;&0N92l8k!ICCYwdvpK({oA-R<*e#M8b+3ZWJu#kh~PTU&j@H*TA}KK
zHHa9?Z`UaY=Z?G%LRi10!5|5zO(ENi>F&+jlv2Cp017AM(TUVkkUqf8G@DmMV**Nv
ze7e26y}8-N+%|=z76-rtn21M%P{Hanj<ZG4t8K=^G$px*8z&?U%w*_RiIEZjsw#k=
zPN!iQ)^+Xfa!JGH=I#SwgJU&uHHEW-5jiEHj*h_waJ7^M-oy3nq2{cr;rxysR;_Cw
zHIk%oKt+xc+urW(%8@Vt&^QZY6toyzyZZ>DvJ=Fc*ftt9S~a|Nh$Ir;+&*#Q+Uk+*
z=M6nIp(N7~40OC%loO&(5@|bPRJUA@U!NZS^B?uoBQJ$&1MD^ejG4Msu;RA3R=@)0
zgH4C&hd=&!^XAQFySd!IFSku>L?{bcThv#BH5}Q`pjlrG-_Xhf(SN#JSo@aMs+C04
zwB_D5p&lr2!`6|>YGwR(E%w&E?V$@-b8w4!KeO6uy@=@K?&4niEdHgo-S$Q3(O407
z3(8$!+c*i2<M8h7Er3esw$b}xq)$p&4c=o*-#Mw(CdWc;d7zL01#$*G0Lw8_7eBUn
zhcyFV%AuffxG*GkB53j%4><?LY>{asfG)yPGpps|V2FEgto7t>p?UB1KWxQ!2!%3+
zUAC>!EpQ4QREY={sX9VriJl4}wd-juwTq^}4IK<xQ-N4gbp4RHnduv@vK3TwF0Ze@
z-G33<#LI$(@i9hqdCfWJI-hf?F$ECJlP+Qca$rClCS$Wp5Hc34z&eDNjRG}~h+&J7
z!4%nHotKA)$2I3P3|EJn!|ja>35f_9K}dLB=lHTPa>|r=lo*&JWFW!FJ{dSfR~V5J
zA=XmNOsigyicMKgg2N83(|~-qy_WOyyqrr}nS>Lk&A{Uzi76JNmPt`?VCHEYAu1)R
zo$dyRLd=Z5&QInD$ipzkduoOjuwpj{g;o-4cInGN5j50C>*V&s86qMu7?!Hqdc^^k
zMGBXjHH8m}NNmuJB559UNOEdvBY+WLi{y^|twD1TX&Z1?(;y(Qq;~jlCr0sjnBrq6
zYyXG@7=zjE0lPd`EQ}5;!b~Ymy}l-fj3~lMgb=jm**&WnfdLr<@h~R2W^xe%cXQkT
zsIdXDBqrgMz!3;)S%L~0BpScm!Cv%>y`~rOZX#v|Hz$d7BoPluM38nP(SguXwDH;v
zg&et7sGWa47j>_t7&WvSqYTq1gp+%9GekxJ15|^mWR7MrQh`AJ%P;>~YhITnh7C{>
z($3S=0-I)PO3fV6T%55ApH8P`SyUCwBJ(^98vw&LX%$O9Ma}AhY-^{w-k~=`mLUlf
zp^)U9lMHIrOx<nZp@q}E*~EL}Fh0-lY=(*(*y1`Ait!MEI8%V5+eXsT>VSj<<ge)5
z1Q#PV62xUPlurFyqf03zl*1mm$q<TwxiLpr19V=>TEBk$a{TqPKAd^24(Jd+en7KT
z!E-IyExQ)i0$#a}H{(zL{PX?$ciYW2!jjs<^L{Z}S(|C@CBYZr79tX|gMxQBNk7s>
z|J%b%1=#a{fW+JVmAkLY;_a}gZKbp}4EPFZ66b6V-34Bfn--EDZTS)is6e}nx|_O5
zZwet3nQ0i-E)D!JZh2GZw!9a*BjVld^*E(AYS~RdVZ{bOxB4n7+>v{2Xs2E2)oQei
zRb9k`ITu(-189dB415Z?Ycxgx!4!x&2=qNN1Au6KKo%W<fKlB^6^JFYDsg&fKpA)M
zJ@#H$aOktvU4q&ms>Jc%-u9z*D{Ud@mtyUuiXJscemSP~<CC@~VrV3YJ%qz>DFD2b
z_xvJ-jgBMqtli6TEfxUu{-CLv)_OkA=kvPEnZ~I$!A5@$drjiS?Cd?FBE4zR_6-mY
zfW*ZM3$@nMX<l<?l-+KBeRDVM_MB4t%s}ErHdmG*CUM~fRvg(~1Ym<mCSf0M4yUB`
zWPdv{_46hJn({!0YuQZOau~{*%WA5C9vfLo0tkeprT~uGl3F0rKYtEnV>=;7=d%`K
z0YdleM%D|v{S0asnM_j>^>lVT$^B5nh{nvpivs{mjNC54y_OX<9!Df_h@e^DJ6=AY
z_C+v<Mi7YrIGE~0q#k53jIIiE3@9*y0WrB;3Xjn+^{9_G&`qR^q+|3$(;Lfo*hm`Z
z6q(xpLn6e0%oH<%RjZn{mKe1^1Q8QaTa+3WmXIQz4T0YYt&zrgw@sHhH~<rxH3Z{J
zxD=XWsG-n8s1@fsk;Fg*gv!`XvF*y`sOHtoJW@PP?pm@z90r?b2oM0+Gy*CZEt{A-
z_RCQVtmIsBZpz`8oCSM}7q~gST!q4|>qb!sbq`@0wMUs)Bq+^2%<UJQUkld2Z)%m;
zR9JmAARta!Du9Hp+7UP^2?&Vxs;v--#a7E}$pZ55+7d8Wq~5?Rk~h&#i~FZtZeZB3
z$9;y>nr+jX|AXBzN)wm1x0!_(zyaK#x{~#28Ycp?CC`sfPanVL=d+(yQDmexix%T^
zX6BYnGgtx3Zi)_rZLWu({`vQB-`@|@B#DFj)Qnmei5!5dg<G`kh#vJxM!+P4c{t^}
zfiY&{gC!DY7Dd1|<c3Hr!!S&>R^}Qh9O@Ovi(>UsxN3A<^LBHK>WHcL4H&%kabfE9
zQ85GLI9<k3{qj$Lb>$*NcL+F97Z?CDG1J}c&6why*Pha9t_#5CoQ_%nUgV;kIS|^<
zSWFPq!L`OMn4K6Pb!`?PIx)H`688tL&0cmUMgt_Zqgjwjt#@ENv{&kYXx=cb<`+Jy
z_akI$$hVaj(K&|RyeE$%$I+_L?rz%cE!uNg7qnid>01NIqxWr?JX}-M-fio(R`b^F
zYNiqIXSd7UH#Q`^pj^GFkszL<AQd~*YG$zHyyluDw9<sH+7*}gyy>PR{nliC7(zPl
z|3(6GQtXZRc|M;{$Mf;LorbH!_3r9ch7mD@LH*CP*Q2qo_kKhqYgyC)u;E2_9b>oN
zrt5;L*bj4YsRdLN<)|(sNfVex=71Tofo)Nk-PNKX<)P3q=oI+4P=jN;K2l7%P+vjf
zCKVs9IoO5X)AIWc4)jV=)atlMM8*_%9CoKxt&Xh>=tU!|YHKdg-{;rKj_^Yu#m3o>
z@0|-3qqhJMc(K-=j4BPWw>VU5ST@C83x`T??T~k!1-vv|>4GF|XTMeii$yuAhczBi
zaB*#In$SH$8=&Z58t)0RRu{KM6Kfz6>VL%xB_b+w7sV{V>)7V&nHg+@g6^PkacZY1
z>@|NiC~CzFP)t!BEk?K7<Q7Dgc&+;C)*Vq2yb!Rxsb-ojqYoUoc`zVaIyTlKzleeT
zax}JPMTE<z;uLpBcckudy+Bu9U7;?B41lO$AR{A!R&a<lx*gf$3P{-Q_U+&vI)xCR
zzi7KHCaT*#J!HME9y4fe?JMxerz!wxSQGoyV`nR%xw(eSINX@A1UnH0<+#?$mtkZ?
zk6{xc(`9`=pT0bvK0Q!YHXy|o0*EZJo0=7^)vSPJ(+Z$yF#6_h{Pw4BZ{A!>igEyY
zFJZPSx~o>FHnT&32v`vTNgRj?h{u#hch7lo#A-PPBm!yPdE;zQ!-qvINWR%_0jVp#
z$UWxR+wHZ*lHCH^%*+jrWR1BUHDJJKm)3UuYj1hTQoun59_4Zd_r9#a>wr%W+Fthg
zC=zYP;c&H!?hYC{LDR5U8z5)}Ters9Xag3PwH8|`)vA*rGP+rHkCCLHJR$)hcz9(P
z;u3=n6koqyBArCo3l0pii-U8!XBLi6#G(qr;C#7e5puf$$JxZqFAnoKAZvJtrJY!t
zT|3Yu)>?i|j%)zIZ=%ZxHMNDi9YMNsE>4#I8;nux3;mP==!D#kE-eM+mw?^N+7yEX
z7qx8PmP=7p$W^gg4?rUP|9|zZw#|Cri=)05wd2Z;fCL7$)^(nr9v|IpyW1bG@21T@
zaAN3+8h;mr4=Mg+qL;`%^n16vzZ}XgDX(rDiLM(W7_{@2U9!4uvq2C*LvX=JTL4h}
z2>@WBS|Zm9@oI&8BXXgwkkEGa7{2JIv33A8=z8~#r0mp-CRRceCqu9%gf(Pl@VKWd
zkbyWR4#pc`JMeWJKGv+InAwZa6A7)WR?VyhB7}NOsV9vA5rVc#7WY5|K(h8Pr}zjJ
zEYcnh7*8v8+B#B59iq0=ni%mNHB}vgs}ixtR3JEsN2eGm{7XTS1ZD<qim4hA%SfWS
zJD`D6aC9RNgl-PR!f|&A`7T_r&lkauH*21I$W9PZtvNfZsTUUlgcwn4{E1Lf#|0<2
z4UXzgwK)>wpukSx=CzorwG2)d-I%t+YrOi+R@x2?*gRG0kq?U2Ra-auvjIJF*yFO@
zmu2?Kb`VGC@Hgx0AkPJnfk;5KnWkEbsVW$lX|+<S$54P<Y`}=9uVOlYm^h_j&>ErC
z_7X9K+cPk21U<|^9JvIIhJd<~5Guz>!!#Un+N{j3;H2(u*ps{$O*OQmzkxfddMtSi
z9#NU|^ZESvRG!cI`OFpsw0@#Oh`&dn<sLI=R;}QQMw4H?-+%bwo88UzW||sssgLKx
z)x}h6&F#w69os}??#P9BNNH&2S|n&QZ|J6~1>69f5goy*MeWkeSR|!U)kHuf<#p}j
z@^o29`?2XY*Ao%#bta1tYB!vLwFv}sE4gw?BruNCW^<6JhIc{cZxWJjcJVHGLvSGh
z3@J^69Ihrr1%se<^}Dr)v6Xr^r#13kX2Z>28a{FQR#inH26JR^cF-_^M=8va!Hmd(
z!rVaa&P?8oDXsdCfFx*&lz>^)z!-s?D!Q4Y0YW8<(ZJ}Twvq)RVf7lJ14nQ})L6S6
z(c;t@Z+U2wFQcL@?jOg6Af<x!?ivAL3dmGL0k<<0b`Q)2j1jznc5d$f$;1tz)iyAD
z)fagAQlL{>E<B`$FIN-uTD3XRUY)MsA{B3cVE=*~0YOB}EPxS2Xl|w%0hVPsK0TJa
z48yqH?uTJRjSn10y=aqj8;rqM6AsZ<2YjjSLyvF2+`TX;_VFtUO{VQ5jykosGY3!)
zKt<Jum?Df*${Okgv!bf)%4J3^Q^Ad=jdX#nU*L|vxokD|t2b_UZ>mAF#yhmcfFlwx
zfH?+)*#H<YA&Dx!+>Kg%9>Lx7l5;Ml)I{QKDEx)96Fmn5x9Uj2N=5G(Js@MG(84PL
zwRr}LBOx?(zhbI4001BWNkl<Zx<jLE1oz5AfYe%XUWtf^%^Q0zri<HkDI}d3FQ5~$
zniDgj8z^C9$2fAcP(zyP?aPe?FuI0B=A~Ca7#Un4KG0XQlJRe|IGkVhq&Qy(0n}e@
zUC~iv1l5Y(&-c)<UV#(Qc8di>abz=)l-y$Y(7;?{xXel`R`qw7iOtbbtaFYWaJRo=
z#?$F+=2g{H-8Fv4tAAVH4_XJo-GPP2ajZqF7poN<W2Xs(dc3x(cIhMb=?`ayAAkI*
z<nsB`$9Ry}oI$I$$Y-Sp*!P9BF~r>w;OcODb#?RQ%fqrR<RPiiHlO3%VI~0Jy~w3Z
zZTX2cvR``D0acq*D1JbVnFk;<btCiM1Z=F!Xfg&T(G!rFEywfY$1ls%5v!qkq}>``
zrxi{k$fngy-C_@RMgvP*zW?s_`t8lt^%V)b8H;$k&NaG))>>;;t*sa2RKsFGj6}?s
zgg6{+>LkdB*@Bz{1_q`MUSn${VqtSf;&GfvlBuf(G?YL|d+VzAr+VP2_Z?$U$gDPH
zPHT!bS-7i$sRNc$;^Z{RI1D3E5DWk=1>WDB%kcGJah#c*iNS5Roi@`X{f_H^-0GZg
z!FRmSo?3GF1#;P{NuVrzIlfwrQ7}Rjj6I#jBm0i2Vr3EJ#3<crY3N{9YoyW80ZC*4
zN}w%o5-CK`>Oc;NB(5PLL~sjREsy}9nih3JVwOhesj+@Y8Yee1t-X6{R$E-CHO{PG
z^#GB=V%AD(!!Shqq{)XN4w%(j@BuF89&3kn4N3+Ogcze=&R$;EixsQ4pCX2cYH{0c
z*-l4nCG(aBit<^zQMbLp?9vmpS_zp%m=mE@uSV!@<lu(6l+*F~`1E9|SJzk5W=qUw
z-ctQQ4sL)c4N=jhzGD)G>4h#$jDBot0hWFcf@vCS=)ld0Sha>~6k9>KCq;Tsy%lni
zka)YhasXVD)=X$6Bb#Y$LFmgJi=wO)IK~(e2~=#qfc7RO8M%<WAWP$#&CvG62sZ*V
zvw9&$vkak<V>BwxLAdg$&czxVIV?3RYtgCz#sh~5FmAcESmV&eh_FMP0v*jGJQ<8Q
zCPyM*z{qf*T3r3iED%ez!J&yQ3bx2*6)7q-ZSRdoq1G65#yEKrw;>2-Y^X$aL_;DF
zjCybDfVP3YJ~`H20d_=mMj-HlM1Y3w<G2~eNmWZJElSc0fIWNkn*on%iv6D24rQih
zUXf}p@jg-?=ZsP_K&uUe(v#CfEF#GpToBAWB)6ueyO0}kTCF<|+rr7?w7I{(clYCY
zRt0c0cda#^Ui4@xdaon3m&nP0`LMs)Znx+2>2z{eGq2{|FWbQN;11MWMUjKil!j@V
z08q`57}0=;fYw~pYS_|aEHCPCVQnNLaFb!PKfD<?SNvR98@<l0MxqSe0IU_!EDl;g
zVH9vjG!!&bs}-U|?WGCvS_#@6$UK_60B+%9K%iK_;|7e#rkTw1x*k7&$&V+<3b`V9
zG(oI;inJGU<EbrLL&2>C&Nf}Ax4*l;d2^5<xmjXH!qzXx+FMnvlSRFi80-!=4-Eq*
zX=S506~;KaQcoPa#gQ=bWaz2@#M{j#rBR`U!k9@UWmRTTt<hPG5~-PDKhVHS^B$u6
z(i@zu<MQ<Mq_vi+Ij=(+c84n&w&tL2LV)hhfYtnx0*NgXiDK6Td>Lb60!Dm$|7H{p
z?@CL3tHndwqn)j$6xUb_n|kCFqRkWzV69Cb?G9j83nDvK08$6B1W4xSSV%@AWMb3W
zd)<lvs>NNkdXP&M44?uOAdXevkPV3_IWm!6Qe^JdE^VRbbc$k{5m^hkvV)LJaJjBV
zr`_F6%epp3RomI3N{qxQHdW@tL?Idjcftmg1Xr!a`zTcJ&PIm}`{cNdoVso{%2OA{
z`h{E=Jr56Z#pP*hJs|`KU)P*-b~TLnbyc<6O{=}5))>=>fQlxPgr!&kKqhfeS1+pP
z<LUX~>*@I^NU$l5VV$+!urPy^Hrwqs1RmYk<zB0~YAN)p2T2@!Z1>nk$wzM8kigQ$
z^%nqCtCj-L4!@?=y<X-I+#LuQlQ-19GmCp|+lkkjOZ#cNOW0qv-{LGrO$8GlV9fS=
zv@T!xRncFK7$X>>6JUV1h`}3NrXo37H7p8F!r`K5!8CJ2R|Be+*OJ#Vkg!YJ-W^R_
z8l%?g2+WM=X3^~AOJL0q31PztiKFS|V2E6`woj=`)?d(*(ByG$9#&V1&Q{0!yF)wc
zAi7Z;9*fl&LX5nHyAP8C3>WIKyVV*}GVA*0W@{&wn9f2ZBnI?x+(=4s%IHMZ7p2oH
z#7$=rSd^Y$#N^n^Wq_z!wU$dnF{)|i5F9SR0F`Ru6wif2cxBuSWB9N^QT``cZ`NeV
zk!0!VX6Am^STX=4Pz9j2?&|8Iw2(s)QiT8ie^59>_7oDxSnlGRnX2+Z&2L1_)Jts{
ziHIBSwj4d@JMAoskzX+Y1SS?_=!iGl{q;JCbS2sy%}Ob56<pUrYm*|ajVlO<JKBhd
zNG4hUMv>%2!M&Enbivy!0&L~mg@(+CnTY3kiP|V)3s0}A1{nsRL1Ej8&IrJaQ@`DH
z{n0!TWs=NN+!ee6fgna~tgW<&O=`oI^Ck3_IA{bEMN~opXjZaS=(Bk)oRS;F1<4FZ
zh(uf+72<49AmiKX^z}v00~thlv8^LVCIZB&ZRd+Pi<(x`imnWv{qEbt{inn3xKCXU
z(v6x5t+N>O4=QhzHbT=zsuB~U7$`C#V00qI86y6`Ez}#pSJ#T6PMM<ccDH9HcR;4~
zuGP-59@aB!6`74g*%pR1a2pENyU*s9Glo*?aJ??eQfgrq6zMiKJfXrEtW^+Vb%i!S
zUWa4^h|#^=X0}MwcinEYVWzcMyJhYiJbVC+J-PBj0D|JQ{z-3N^}*cRN?OzvT*0WC
z15nWgkqm?=D<E@P^HEJAcQcGe4y(kB?p7uw21sG~GXzy*$s!IY28Inh*ycdBmN){N
zwVRD0BR2dx5MqktQ+%4XR+c(5=u#Rc7Zh$vrp@4p#O|1KdrBgjhigMUte4<$av`C)
zqa#sNttXOvlSA?5fBvU*tgqX!-4u&8j?pF|=0?$Q8UHLtwWXFNAQjfU+=#?&@=byq
zY7!B#NK;T1>pV@D^Xc^VT9)Phe&2OH0F+Wae1i}Qi1dBG-R-AoD$5ckE_YQ^P%UM_
zcdL;j5mNG4`W+?pZ7O-g*8(!LDk7*^3Fa8K8CcY1hMYhw)c5=C=D3uZIAm=mLbHm?
zsAh1R+?lQ1VGL$05eW-%0w70sB#BBHaN;<90yxEh3y=_uDWr1+FhFs0z)HlJ#Hj{=
z%K!{4JWzNu$h3hy)>73pq-j-acGfji7M4<MZ>2c^wPpxxwl$<oh{Pgk4Mc>5$+eW5
zKpOuOk-7mfM-w-3GQh+_EUjh@!O0;6$2cjrW2<<SzcQN_U?yZOHA;12;1bmlruBAA
zgs2-NQZ0xaD>X?XVbzwrY`0#3+g5usLjIFe;a%ce>sMFWL0GOzsTid|F`$bQ4tH<?
zR3Kt>B4WuTV&*=VXub-yK((xkN$_!EMJEG9P2E-i@O-(dhI6_#H4#&(C6K=DIU$Nr
zWVCkVyzBd|HRlouv4ax{Arh!rQBztE&F%YUa^Ni8X0v0KaTr(QVsx4$VzO$W#X$kB
zjogR;6p@oi*Kd*1I2BA2NgRC;<8p+}UCF}G24@Zu*;WN6Gi~PO^#>(kEG_XFH&l05
zbs}^#03v2Yb|i1XEkSf7Ba(3$PQSh2Ftd|4K2r3)13I?Dp|#c!cdwy;GPt<x<nEhe
zzwanZ_3D!$k(l(<dqX^%Io{&+F~U^vX`E`U(=@xgu%w)~`z^(msOnaoupze0ZWFF?
zoXRrSs`E5E*x~ND+3gTeM5?1%n}Wp<%7Fkh0;eHc1dh;5*Y<J85B90B^kEZQxvEX`
zGL2(ZO-aw^bGJF{=ZU$KeZQNRQbCupP`LD(>G!?Ws^QEU=9Rjx+wXS5<f;xx()j*_
z;O0)ZQ-;yaul*icZ6~jH-)*Bw7zQcPtX3^WOI4BN4h{*h>kjuQN~9=pFKEmIa7C|f
zRjovj+#PB)qy#J?;)ZI7D8#s0d~S(a1uw1@028z8QfpKGiMy0{PA;;#gqz_a?ovkN
zOa@lm71Y!WF!-Nwn@j*kYh1Jm$RRfo3ZY?js1|v|>ai_VWM%;jg{OJ4;$>VXj<~w9
znh|{c0KIk7B1H>Z*L5PPl;UQ!7IQ-+Vb`i=>peKuz8ZK-VnimEl$+TS0L&0!Ug|gw
zZ_mGtms8*6P2X=eJ)*fUftE3M$JF&5OJYi0hXB-EHb7veIsw!;P=f;#x)ETpMhnj%
z&7DU?OuU{dhzXdSu&U0`=v3M?F?R$)N+PN6H!1h(AT1KfwR%b!`o1nxSw^k8`p8!l
zrvp$zLPUA|^w}LQ*I^A=YrCM3wZJ~PtF_rqQ~qPYM>luRYO1OP#j#eZNa*1L4IBr@
zLAA|*2|<^#YGr^HmvA7WTJ>FVZ6k?D$^#I(8WD3sK$O&_)K}H;E+Tpe>8dsC$VhDJ
zRx2{qqC|o&j!sB9_Y~(dk0ws6ws<r4gKC^REDTrG(Sgy0Qbg^w85B6gEHy9SwP`cv
z4rGeR0zkxxNx%d2|4#+xH-BNAzdw3E|Jf(_4ifml$ZG$t*7l^prNyI&C<a^&cl#|M
zMaa9B8hM{u9Sk(qWsCPB3W6eH#%h%Nj#vO`UTRZM0FXsomnEc(3ShM;5rwjCkt|7R
zv+0pYHC{AB61U2N$&)SsT1=;wWsABeCwJ<$`@ZjT&cYG$CUa9j180^b2`W}q_p+i3
zkb#hynY-<lrE`?3$}B16MY35XK#%k)BE1uI9X;9~4Vs;Tn|K*3Bry}#Wp03ctE#T1
zr5YfcyQGd20wG~`M+b@MFp)P%t`j+#7B_QkeL?GO5L_Gd+YpSPq5)aj$??;HI(CGq
zEK^zZq{6h>^mli6OyPHDc+Uc@PYz;L8|P`fj`OsXQdszKJoej--5BffQiMIw3@}Le
zX`1He=hu0fsupHOl21>o0~A&guPQU$4B@N!*{KmS4BF0a@L@Q(&Ij9zOd<d{&C4)O
z=1|p1N?A&+)!pR&_&CnfR2NC5mZj<vHpGvup{r@vn3<W5`|YL|rg)bOnr(9xKZE59
zH=Fx=QB!-7);7R~KM4z~Hx#~^4cE)-%PCw%%Um5&x4D0kK5vfz9^MQjKv0ALS}9o3
zx=hPFj+3cP(<G9RbMCgA{lo6i#pISDM%B>Bf^M!A>J09S={!%WcDW2@PO|&--OpXx
za}<|G+`zoS6V1Vu(Hx6fDP=Cp60RR}Wa;wejxvd?36M6evIw6!#Z|MIO?4?+Yh#82
z<!*<vvjl52BG#@OaO1`=KtQ<lVYQXZfQWMLx~}iKoKjkrrPflGQp=LWkw63x)Pmn>
zHG&67gpkm?*#BalM<@<jwT#2?{PoNE?Zve0_M3i_l7!n_Ybl5bl$?b*G50_M1}s2s
zZWTd2)nu#!P;0ZRSY*Qx4P4n`l*JT5uVy=P6eedf4zshBT3jmz#8b`Ph!RrH{RWU7
zNI1K+M=qrfy}FKl-)Wt~g=0617XY%Ou%L9CW7i$bAuYEMnl;yaNOOTJY1FoLpx&;Y
zuBsL@Sybk(l!>HJ&I$v@2n|4k??8>f?iOC4unt7xmH@$TVD}K_t&RCr!O2XOxh>Gh
z(rphc+2`3SwTKYREvsw_ZsgVu3$;}_NfIPNVv<Zq-a`M5=*Y>+taSnpnU0tRkQ4}s
zf!)o(Ifi#p1QhiXY870;3R;a<9vz9v>w=V8*2E*BWz#gpm$wF)w%5K}3qK^XZfk|Y
z?N7R!HtYDR303sPO&w58-J<FuJLlB3+F~<P4J?3w7a~#wW;9dq1;M}~NQl5(%}_c{
zNm5r0=4AooFd1m|mC@t17I1adrFhGzIHYcyQ%+saoWQXm_5eiKj2nhP7xtn{HG_55
zEF^;N;UZlBHx_RVp~RHCRA;X`p;xuW+X3*+X3IS@F`+myaf>Ds69A)wlVfv3H_a@_
z7;zl;CV_k0Oe_+`?&h9SCn7V#vdq&`=Xt5ct9jS=JIRjZ$T4w8NX%@8ra<Jm>-&CJ
zh9werglii>i*JSQW}H*Xx#~hp$EU-m?;bg)p)Tjkd6}1aUg8m8;eeSTaj@R-b}wnE
zBSOGs(aUuju9Jhakkfg4*zWzv#OP*L04TJq*cXMUI5^PtI$X|Y1MPC3yWw)V=6;vE
zgF(ZOIH?v}rB;d&B_p+cn%qqh(AV4L%?}X@YaBFFN+JM2LBGBU0H(Pt%aT$iPRkO5
zZ<FKwr%kPw>t!kPQl@Dcmoif`(kiY#1wdycL=fhOhr@Q4!4**&hdTHp2r+MWjB5nn
zk~7%GJb_=KH9T_z(Ycy|gK8~B&*$^yatXgiDQ-ra1AX@+nJJ^h-M`)X<4&a2w7Aa0
z_3in$ugf&oTFt-=4L6^E`b*y2QBrDI&bH3F6*mQ|XjPZ->u<jfm&-WM^EA(Mp>(_q
z_Q${7YgM2E7EiGghUL=06}^zp^K^ar@?{){c`mBeK@7V4ryu|LmnRYVpbrBfdW261
znB1V)a=E-b&*P-EnmS_2-QE7__Yb>=pmlz@6MVoyv_VMo7@NOWnh;@1Nkq20ecyMN
z(|MVvQkJUKT@YN@$#p8zJPfteQp&O{A~|>W{cf`niQ}f36QZHd%X~S%onK$Z>m@O7
zHhq^8dM(qulxet*fV9~^?(g?0_biD}h=CiNi`^G?@<8(nF4Lf8v8Ji8V^U4rZ=yCQ
zhOaG%Y=D4D$V|nQL6<UGDM5C1H#IPVF7LapXGt*_;FQ7Co!kv1S;|#7C#lP@EK}V5
zgY$(9LS4Vv_nX81?s1ytt^}7fLKm@t#o5-@WQ`%9leRt?Xw(QGb2H-bx0s25u=Jhz
zU@O%4_8-C$5n3Q2wYVMdd*IL4VMo{m5!JjDYp_ESMgkP19=XF6tAJcNC9MS2O&2#^
z)BqWPt09VXEFmd`$B>vY0!SV$_r$_h6l{v~r7AgaRpHb*RZf{*DM03p!}o#BX(q5_
zj@m9L#g+;c5~XdoO>v|sWr25Y`MTG(Nzm<b+h$+BwqGE;XHMK4o7*3)`K?XsyiC(l
zs%e<XMEYIc9`fc8=JTagN%roRLFSZ9(dts?YuxhOp(q%zBJb`$A+f3>VW~AICKANb
zGX6xWI$p2iIK+pbwE`lN+&^YS0jIU%mk=@MY_+(NFejmcK8=%_)>=zdH3OvGZol8(
z`I@0-VM*BmYN<dh%ynI3wbrH7>vf#x8Hw)iAGZ5DmP8~9sODO2yWP3jaJ?cjH98?e
zB(EBvBM`a9j8XU#@TGQ7FhgSE#FVCKx?G0yb(p6z3^S*6e86tIk4QR#FlR&wzK#gE
zxuldg{eraCX2&l%C~;t+9}=QqVeJm-+aEsf_S@8Vix$$d%w=BcG}qX)_xoCFDJ96y
z)YiS0u0}$*RV1FT*UR-vM8fRor_=d(yc0>p(P7Q5j*NsDbC#TQN_iaT*VCB@mu$rH
z_4)a5cegB~2qOwood2+$#n&DH$2C;gEEc{Zp&E<^Z`u85mPFj`wvk0P^ICPD7FAPK
zLXi81r=={L-M-ecl==1aT<bCn=ebO%wmJjX{S`51dU)6qc~nQYC?eiI@8&XJxeqsv
zP}|63k;M;QYi!JpkocgKWuE7%b(zbuEVTe&>OvT3j_ZJL7=XG5XGG0vDf9XCHjm>x
z&+b~5s+Fd?JbhmRpb>V#z(j(_*H*CVwoKFY^!7YlFY{8Cc`l_aWgNBp_Q!uon|%Vm
zF^dcVT+!6DfEBPZ52y3%Z?CU!ODSbp%HnfPOG$tD)4#82tkq`)PDqNt2u8?gWxkB3
zuj6%?rg<DjRbI6J%YPg{egD&ko(=feF9z=>^QJ$4j0H20h~%z29`6o^!|CN^8b{R{
z5CLfE)jC~YPG4W9VO*ASxm>DZzyJ1+e?1UMz>Q)QT2+VZ_3h>P^!n^t^JcT(ZI^kR
zhEu6!nWyXZs*c@Q@1B02yB!iobekC58NtATK)p^$n9axea=l!pX#_xbQWH+c`)~8M
zp*IZ)(GUo@(ZXZLvUwh^r{{T^YOSRfH&7$#j=w)X5lPD3X1krIX(`3Q2pAxN6&8^s
zl1OVA$6*}DX_`Ve>o#}a{qB>bP3{klA_+LnPUL3NYAxcj+iI^?n5iOAz^PhV1_`x>
z0tAMLOq`V2nOL}BLt--%Ss19o^|I2-2mw}<G*AO3kSF2XQLQ@9r7Y7h)p60T-+lVj
zu{l$s)TO*NLo+fc><X@)lDeea)jH2pnWkwN>aciqe0cnH|BwX;Fmmk)kgOJfs2CMQ
zN`i;|2A~e(IE~}^YOkj<tKB_*x_fxck$-if23B3&%jSTV*p3?&L36uYrt{nI_3V@n
z4^Q;)xK*vp68s0am87~s3k1I(Qg5uD8>aFD^2Ar#dEm*s);f=uWgdp>xGc*!EMvjy
z^3$LG(rxd%Eg_N{l%<qXOk>1B;X*bo<8Z0V;()_EozBx-VRyXmcK2=&w1Jk~Y255~
z?K6kd`TX_EFAfmnWF*Xa(`|PLb8{4=e{P<qn8Al9&#lh$IE?dfy_Tve_e5N4HSnN>
zVjM#eiC6>YNQg+LHqZ0ve0@8eN~t+_hvP9i{g5RZVEawK-|wesBxa1R%lK;}h`840
zh1lk6s4n(Mjv!2QGLSfmSsF(ju4NpjQq7i{x4Tj+u`nlu#FE#pp;SvHmXy2P_bAjP
zPrGHVo8!dLD0x2Sho|G+{h{l7&H_Y<5y!EX`ucXB<{1I{oKC0H;jrzxZk5j?8H?r`
z#O#0tSJl&bxDEpWbY1TV+hLfdsq1=?6!tJe45Loau4@AkqDMpT;^#9?<DIKnt<H)-
zuHbG&Q3Zx-HJ;2hPZ&fkTfNR}aiv9-iAM({GMm|cfB5dZZ*xv&PDEX|xxc^byX<a~
zx}HQN=TeufUGDPb^2Us5q<NmywA3Z0J%p5n_q)w**QF%!14PjVMHtvuhuE#7XU%M_
zhOrm`x07>&U#xTNc=t*v!*HFZxfZJhhG8jMWLpE7gQn5N=FpS@uxd4$E8}EY%}r|^
z$GH}Ql-_%sOyl!+RkPw&0o1i<UFK;hby=3BmNGBHJQX$5^J$*Ovdn-Wp?)ATIf0@p
zM0~u~@p2i4%RG(O>vf*yd8!KAWv(lCJzl4k$>4_Jp+!gVdAQEwG|$s84dZpVUh7=@
z@2?Y6`k&Als|)303*pBa_gf($QA#PL+~tihyV*1ip`(U##%n2;^ZDy<!#I~RpU<ap
z@_g|>{aXTR1AIbUtd7%oJ-wa2{yGoWBz!pRx7+^Z`FwhNuBE!!GLLhy*FpdESCZ7H
z+z|_hTOde2fC?q&1XYScS%%B$<uVM@G?vAeLX-~wcK6N4czZkPt%F7(M5wMyUB+L3
z{ZdL%D_UWiz1t3-fBY9@L1f{iVybT72nJ3T7$`z8o9FrE`DGY~QkH2b)tK}3@w=Zn
zZ&n5ih8YIg-4$2GOjU`=(aa2;5cz#XdrKu!YJ`NiU63d<WHF)!RBYZuq}xazP|d>+
z<zaI6K!a64MylIwj>?%~Se9u%U6#{jJl@g%s2wp;PI=3z$HkD1oSclPB2r3;wWLf|
z{Zi)Zb$Yo>!>lCz?(T7yI!;~cw$a#Qj^NJXZk32r*LVG5rZ!AvnO|OqU!SMy)bEc0
z3uFYs57uR~m3ixcMN5r|*xT2)|NftE|9G8KzuO+}OI^CW1y=}-{niThj^MZ*Bkg|(
zBfV#B%@NlTzK4rPODU(<%P^dlWf_KX7|Jji<<0Zg=f`h<yjfC9DL12ji-tS6d#%ef
z4W;Vy+xhwRij+C`*4VwRKW^>QWgw4%EP`mYX_}U0X~;=ocbw<h%*={=x8kv!5RD0e
zoJd5NWtx}s={n8J`Fuu1Rj;MgT2_0Sx+>*l>;6s5%mU2gyuAGOa=s4N>!4<R?@OsQ
zhW&9dBP67Go}&rIJxsY0$Gz}RA=(-{4oJ%_yTR?iVU7rrI+0B^etjFRmvNXz2V{|9
zm_8v1C*~y52QMroF?Im2Wl>Y?k|)s^KohpG7CIoX!2Z}DK5h4R+wFeO!m(hPI|1a}
zIq-Fu=4l~9Gf#=;Wx1VwiQ1A9Q>yU9Cgv=XlGIwzk$Az$rfE{G%RDimNJgh{9fVwL
z?!vg+_1`?*=hV1hYTD%lW~N2U6do9NR8vGUt>L?D*LbanVBxobl~2%K;dbP(z)v}v
zn+Sh;d^qfP@uySX<eXCy(<&?y6F4NOH2|@eGmo9j^K>09QmK||rh=3?-5vJ(?Y2va
z3AjNR6r1L}f)Q1t&IniZaLfWQq{TMfY|dvQGFMs)C8lW@hw1t2Yb~IT<5-vCcTZtD
zUEjsl3uI`uAu`;@VSM@ex-84GEYrMPuk$j4bQtm{uZDC)aIdcBVBl4)nAN3}WnPNf
zFpcxHTrcCal)L<mYAy5RV3>0wApw{b&;npqtD6nOFb>l+&X>z&8mD1c%&it<LZ&qt
z6#PB_Bvgwo4%M=p&zJbBxAW=zc78i821ipQA`y8{+N@UBHj)2Om2sP|-zt|0q05<w
za?V}Xm1Wjimw5*3V;`tX9j?PPO~W`2*Yo9a9Vg;)RU>fcb{q3Lm($Dh>G{{w>kA?5
z5BvLvyOguL4cBX_)!l0?(`>Rm0EE^fD_A%zrP!d4%pzRe#(BD4hx7G3jnh2pxOl&%
zVJ@&K5dZ)n07*naR2XY1xFS*MW>G-^a7Ir;L_W>qIE?c$nQ5&!&ZfArknIR-b9y_m
zpjS6W=J*9T`0MN2>+9Q6mU)_|sZ`@`E5wOYW=`hr2uwl&z>I9Cnea+G`8cFpqpNNJ
zM1USvljz<?Y;88i6a}x*-AP1b$S7)x-q>Um<y_3Mb4P88yCU#)oB-^49nR<Z?K1!N
zI*fA#nxDP}0Fs<pa!Q*eSFDOaZt7H6dY$HBtkZZN$NBATd^?Y)%d9Td5HJBJmM-`E
zl+rv;4y0BX%v`f~wp`!drpx8+<>l>kDqmiQ^L5Gnhg=yEF~5V&94#Vw)u!wGWjdSI
zc`jeRy#4a^JgaZFcD-DV_p{V_#h%41hNC*<w(oxAqWzD1aO17}EjtITLJpRxeEoX*
z^6Nk5rOb0#W;H;Rad-bP4A<>`PLNU(CJz3ZYK_nvGR;L#=jrX`<vLF1%QP1yuKT%^
zQreX<a(Zg$Ku8``P(&iB)y8q2#=*Q1%@BE>Ce;Nzj@MwSL=^3Y;bN=A4mghUuU~$h
zmL(MPl;{23T@&-&Lw2gF>qLnRh=hr07?)pudpVyjwH73vOTE7iOR46@Zh+!y=kuxG
zY~p9M)~2^&NSpVK)@B-AgQabZ5LE$4hREtBlHBlmou6M$)oRXJqnW_n%!L!SVh;@K
zYt@RCkeK_fJM72v8@fk1K@{b3!n?=q!_#hi=sBfm^Wu~cDcUWVDR+{X3c6X`#Jnyg
zI2mvweFC>B2mv~Z@ZH1l;eL16cWO?Ar7XMch7kHLOJFutBis<@l2B5%UHbj+KL7Cj
zx62ad3EJ%sL;zmFiUXKOhanJ>TdQUP(A#bW>-9Id1?~_@CuXXxQUTV67Eg%@6Copz
zNCsvEsHF&}Od?uKb0?wqeNXH;({QD}OP9-K#!0oJdB^<C<3pF^c8nwpi6(I54TBjo
z2Evcb!!`Z8{)?GDl#st0WDx0c9p2u~sx-}RjzqHG?;@mvfe()0U7$FFo#r;r%Wq$w
zYpLh!P>K&j0g%VdeeQZ{J#|6Ih{^fN**90!=jWI6<vI*Q++wfS=`!Mv|8j@m?!^_Y
zI5L?5D2D0Ut%Cb73~#S**UNCaoX_X;G|t1IOM&CvU6O>2Vb*rgpue{wJJo3(USD3G
zUtUgcr_<?lK9BQ+*Qp?ht{ClGZ^Q@d)dy%hycaWs|IP5dDLRQDz~y=w&X>9@wN^=l
z4z-l)Wqf`)old7=7^b;MKGxZWVY=PdO0{VkhV$w9w_nOUc3t=B)2IF6APn;|FQr_s
zgPFS8Sa8>|NN)L}b^5iI)*&(m>!_+-uH)C2*Kr!BajMnd&ht(?SBv~i<mnqHr*#8{
zWy^_a9LI4Qr)ip|S*y<#DBmG*tO9|1WM)7^AV*>+BNCBX>g95IeSIypPV+p^S}WeA
zy(6kAuGds#0u+XZY$sg(3XXv6)*NJRjpl?b4J2zoLbX-{CgVzk#I<#SHkL30GN6GG
z05L~LJxKxz_9`{V9yt=1Qog>NF4xQTG7pmuvz>=Y-TSSog;LE?t3bpg;tuScYaz~x
z`RnWW+b_@8VYrU-d6<iW<ld2-grz6$ByE!9aI*#G8EY}(rP9|g=U=}(Kfj)z-!9j=
zs(WAcGK{6_s#~?vx=@}8F*4WV1pnWEdwG3*y$;jcd7Mi{W*{kbHl4Lh;7|dX#R&`y
z+a<=EnLoA)d>5YW9ZcryTv*>voB-xt4PM@cfBg5Csg!Y?)I8<1*>2xnU$2+z-TgwW
zDPiuqh%6JK)v#RiT;aFp^Z)aI|K~VO)r>`0Qht4{wboK3H#W4ZzJF7I%tAz_aJdXG
zFJA!+h;qt^GF-1w7YJ67g%FZRRJalm5G6^HQZ>I0)7P&rY88<-+s)Io1Z_FacNFv+
zA|g}`rxS`~a5|la-+uiH2+WdlI-f6E>l%MRH7m=KQ$~0n^Q}#_jdlks`*Y>Znj2D7
z-5`M*0XaG%vPjO!+=!u1IVcVDJeRpJh2t^<Ha-S33p0qIr@Yx%FWO1fC786#;#l{O
zyZdjBsUu)=#1Pxu3^>{(A?N(*;U2(BDQXVjLbTiM`>wl<EzBIT5=m?MBy`hFPJjIQ
zM|TsE*qWKR>${d7Y|u(z=En9ya8oAQZ+AqbrY*e4Ow6?wQzvEzav(;EXoaadsJkJ$
zHkf}4IKs`7w8CX>FlJMW3^Tb$Wh4N(83BgRK=${?vMjaCrj-Qh;-wB<mtBECYb~3u
zo9FR*zIZMBZGN~r^f?I;BLY~faB*tzyLWYT-H+EW(+X{B!cN$c;wXV|YaIb1J{*px
z^R*PD1Sxgf?f%<u?ui^tBd-w#<^XuKN_6gb`(y4m|NS5TwN_jfFV%^?-)xytnB0sg
z0InK6o{him?&hy=r|USKPUq9>sj4r<mrBRGJ3>HHay7M>l?7NZvg2CjQpzvCeEId)
zFH2d@m&-hqadhf-pFe-U-ENXFv`}^UQv!<Bl%Hvue)-2QU;gor^W{2?)Ac-^uiou`
z=o<L61+w8ox$=9F#0p0a=$5-1sDs^VB@vN@h1qKzhx0s7W~vHkHjU$#Uw-}i_3QaE
zltsI4e;La5K1oiI0S$2Z<@EOY{N?=m>|mSi_Hex0Y`3OUsd~8%*YkOr=6SBp+fU!`
znNt#3OKNd-^J)u9AtF&xJ)N$<J-?3QJPxBdPLrm-K<j2!bRqb_k3o;DIy2Xz*I{~l
zJI~893}Y#}6gWQp7%zX63pG#v3W#(9VXjDOK2FPZnC7L-rOwl$Mw?QiCIyj1Qj5o|
z*sB#>4nWXQpaJuPU|GLU0V1-tUX14IM$AN{h{}NO!YtH+w~pu{5#i<3At#a?)v&%g
zwbad2E|dSa|9pKrjZ1~OlmM$$i-8|AXH)kSzvNUkI$<+m0?O6XZ*S8tUtX44ms$a-
z-_f)bq=cM-Q`c=%?y4JABX@Hnky_X=y$<$Y|8f5H>&q}rrB);u=khd+r78gFTI;oz
zBLqnk9b~ESa-RO*|9qb2Wm=Z1no>R<kLYH#)G`v0D=9cT1$6m__{No1ZtWPqLLx1;
zq7UN<xV1U7DHgFP(B(4B%VL1)K)fvT+-x5KcsFa!U*6)pj!c}V0>8bUm!-7zohfhj
z!{u5_aZ{A^4pDDzCIAmpt7x@h7}Zpg%=1#!z8j}nO0X&sArAdoBR<=fDUrmS#%USH
zNwvn`d3t-(b^tYwdGqS8jFbqoh{*nU==u&2h}le+#eV(r>pV}4m{=TH7zrU-h2Xt9
zt%;H`m9{m7`Qcb^4fgIUj}07=Ncebv`03{#hT(3deL=t7{qV!@bMCgAZK>c6B8{Ju
zm=!BAb541;$;Ta~C_M4p$#&ECeKJ8MU|{APx)6l<1Av*#{O<0!+il#fsscbxsp~Sn
z*MAbYL3_<tjF)>7zB}x3&6@y%nhMJ*PicFaEQ*lZ0S*vSl7C{*Qj|jJT0cbQ2psjc
zWDbGOj)7^7hstjUof_LM0H`*?d%)FJ><n0h7bAV+ia-b=fBx6MXsNX<^Khv;&EvH!
zV<}55Be>4fRLWA9#cG+S;jqh(kH@ad%#2_SMcYtiH>a+fIpc>6@ESe3Q7Uf)el=?x
zV-LF;ZZ_MWe)|2>H{Z-tHAj(@a(92X6-F?P60MKj-2f!g3G?G)`uD&8N7o<cxyI$7
z>o-6A?&ss(Ask%mH=vC~5y@jh2M;>~bCR@0A_FQF_q#49K&<fx!B?cVn|swd#}BpL
z?f5xywTJtsvNiSm^xYqR_~HAU)0!U&j6?X!Yn+-KTvbn}(>N|>IG17$sY{=K_x=6-
zUEg(h3+iGJEzEC4(Xs9~x|`ihTCny|1}hj_KZ-B&G+Zw8bSKgalNvm~p1%C@Y>v6x
zoUhY)wx9p{-FCN)`>$5LUe9kYUthj{S(cd)zxnp_;dsm)UoV4J9jE2(JiMLG%>C2n
z`^|2*={Gs&+Xmd6G-_^MwU{ZmGfP!CU&d)F^E9iusyjN7hp(*_B{q6Y6e2Znq`AGl
zy`9hJQgxY%y3dPsU6({?jXyWbOArBDvqQMxqL#qTYA^@^{ct#RUGBO*NxFslV?>C~
zNDUHvTMC0p7W61+WzmgA*(?qKLfn$uERyr=n!zc8oSH-nASwV7_1#8N*YEEncWMnc
zQEQE=5f*je>rl?uNsU71>NnkHw@Y1?l%t`gp*ENkk%9&Wj73P&b($~Np=jK4c`B#t
zFq;7q3nzC}b0Ps?=4@sxiA6Yd#qi~Hc{^S7c7(SgDT_n_B4aaLLSqWG%$No7ZC<8f
zxW?;DnfpF7q1DA}^3)j=22cZLTFJy15cGEnsI_tCjp1YV9su?*7r4bn(&zl}aNqZx
z2$>QxZ@0bV^l*Q_-EMMDL_h#qsv~@;G6QgA$<jPTHSnJdIF5t1mfUEL_V_Befd&zX
z@b3Pw-Su6Uk;n~}GGDKkrIZk#g?SZ8om+bcB9Q_Lr{nSP_;@s{BEn3>j6}$U2-2Wz
z<TogagMuSalGOM8?|%61habK{B-L6~`|bAbcuXlJCLp$0f=$7c0Q6lXYq)@Q{P)iV
z%+YIs93=}uDj))8IUbLH`OBZGDU&eEes=_BH$d*z8+N-;w^Cn1Q%8Vqv$^}`$!lT6
z#4JhNDiR=pGgJh00%r(V6}4|k1l?VtKh%s6S>!z|?if6CS`#1EddUEh1MvS|Dn-ml
zUDxH@#ZWRRF}LF5511oZ(K?NchTP<C^x&>n094ZGQMVQ1g$-ST?=uv@wNcI8fzVZT
zMc?1}zYwsENRGR!{PgqB^E^Q*%RHLT%QP;_P?x!uN$Y~(T1r`Fw^GYOupEyE5fKXV
zDiFF;D9C#2k!{^yt#0MLZ)@$eUyHJ;Bf*MQXsF(ty6%2+*vGmQbRrQ+Eu`WtlDnQe
zVqOCdl%#)p`rP-2S`87Hx$Ae5`qXb?M7@54xBjpQ_HoMnPe1)(9EO0>6SD)Cf`|Ki
zVh5`Z>PYAfDr2<-$_l`Q^Pm3sm#0tPBI0JVH%E23fBf9{DT!cP#C=V5S1>hGt!4`Q
z?cM+OzyF`7)1}s8s->DicmL_<hsV3-GYtUC%I#_vm3Z9Sa%4AhS$w7h$b?bPC+Im5
zf}c;PVYm#}OTS5su-zSg`0>YT;0`Huig|bU&ENk1zwGy0LUglnypGq)>+_fE`2_Bd
zPfy3g0VSrIX?wW)_Ve#H`-h)XMoydU{db?gPa-KLTARXFS=`Odb+z0vKR!MD@lSsk
z#&H~{S}Rk2`u6v`U1qFWr`D6v1V#m|jY5IIg!lJ{Rwq)byBOp@|M8Ez-7clJ?=!;t
zl4BM=L}K1<Hs62#HXfg4UYI+>^t&Jb^7!}^R)|&ngIj9xW_!b1Sz9YNjmK5p!%L^_
ztqQ1NR2#AYAqdf?a~=W#BSf9BsbP}5-^r$v&GzZ@PssUlzQ&7&v;cyFnd#l}_`BbI
zzuTXtIS>exbKdX!-EQA)wz=CPF%wr3Bn5Yt<eIez5grfQ?>~QA%Hn2#R1FOI{_cK%
zICgnUl9pO~5eEWdY~CDZ;*>ad^23kc9Ul&=HcpdP%U$<yf4AH3BqhX^Vd)-sHBe>Z
zEYkP+o2Q3T<_4z(@4Ei+;SSeXeyvN))QM0%%;40V&8@xi=I3e?Nyq;Q&Ec-9c<c6L
zyt_aA^yBw;cYD>^Z#LWAfjE8p{SS9{cOog;;%Y5xk6H7_1U>)Lr-#4){coqYS3vCg
zuIoEa{o!yBCSepNbWp7=Hl>E(=#ZGVo9&<f^5^@<ySQsIQ`h%TpFZz*yTpk;fZwCr
zrCA`6a@T$L`E%bls{|3Glv3Ut?w@kMAx2y|2hr>0E53q=A0Hp@4u6k)st7q?%3aqV
zguAF&kIPvtOQfG0B^Tr3g>4W1064j|*;|9m;JOh-a|xx?-Q7Kfmo4Q?#HCuP>Sm^k
zdtl6~J1Dqn1yDj4;oWZ6X8|)UHLikfr!WIFAgpfS<niA^l!(PY=MQ7ccWmTs`&boq
z@G#4*$3SAne?noHFoS7X=34YN%W!{3xvbq)bThNY-xFIg5gCRc1yQLS-YP<B{-LJk
zHlkFse4EnRIb=vHy<^ocqe>HrLQ$~l0J1+GHcMBRxy(|lY_imvwJfzxS{E&gyJ}g?
zifbYC#GDAg3=o(;XrkuCHwg4?PemfU^_)=a&3J#IOrw<b9dVL#=MIFT4%B+f*@1%$
zgCPb5UcX`G*V-i@$$Wp`yL&Yk76*{j#iHSB6!12Oj?WN)g!6Wrx^AOpAqE1l8B@xL
ziax7FRTUzjHve<`0g=-E{nO#@0g+PPuq1N?=u#FptwjMF1=>ull&HZ{b*Am%PX7GY
zL#-8&B&AZ+K~g>*j)#DKH#<=D4c}0d4ci)Z-2P9Z!rJJXm^NKX!XiQh*US0!?d|^Y
z;dp=Oa(B4@=D++O|JT3&#~2qC!@S!+cKu<uKM-PF=IiP0_3JO!^GmIz@3)UnpYmpt
z^A-{M-QA!6_3wZ9^IughbUdQG-QI1so1mbzTuQ*-t)<Y+0f=_H!@vFQ??3<ir>a_(
znTXAhIB&OiDFNDIm58L}$*s0IAb?0ZK0N-%|N39%d5QB|lC7lu{_ySnH&0#P2~*%A
zqk|7_#}z<#-0Y5j{oB9)>)#LnYBi?LK{oq``%m9V*M-9Z8<Mxt`qmG5t&fIxX*4b<
zLDwT<cXYJX8VE>&#K3HcecS6{lbM}S(SQ-H!oKUixzG1U-reQx15n=aZaBZWoA4a3
zs{nld;rqv@Pt~*(Evi7IPW@)LJKk+}cim<$k|VIG$PR9l00l@mrTd5bzy14PzyIMg
z5lQZ<k>t(8<9DCF`P^*|Ncltm9S3#6tRM+X`j>zGm*4&Vhv2M@(=<;70Qbk^cC%q-
zLW1TpYj@D*xg*|gH-Gr!4?q6&IpU9MW`>fwlsh7hJdk?@2iM?1HolvKBM|}yW_K+@
zr8Rm7?~`Hoo9Crbc9HIm_nUv+1er2*UG6sk-1WPz>lx$v=~}A;n5wHb6N!5g`S!bS
zzy0pfsyQMOh$P~!>knbx5hks*vF+W_jnI(52>1KLPe1?R=Rf?B2$ST^wqNFjIBj-&
z7Qwh%7<hAT1*^!3kcfA?{o$|=$TqgZ=IAepswCBR67<z%g8*bK+wBf~1Asx8cR(OP
zU^6JCP#F1%0D_qnAp&$aUa6rWr``N)5Z%}Q@niOtJpjzoZ8lbGqtm;WYVIyf(am8|
zpa9_RwYZtZJIhQtXGPGeguLzrhTsuTa*wb9nYkOqm>DUoTCrBg$HlkKU2G}~tpy++
zF7D8lBPn#V%QPX(VJQ}P??^NRf8sVf2~)J0dc61%J=V5^2E|5IV_!D4HNme9B4#zr
zrqN{y=n<fIL{lXsaOI%xcq<|b7f_&k%q(h}q|2fatk(iA4sKeVIbk9&LI*`dtO~%4
zU{SA&Oc-wzt_>^H>OV0q#c=EE4YBm*oNNZ|m2zw!Dst8`#8}6C?G$SKnFdh;S}Uy`
zViFybV>b{)X9q%Qg9Tdq?cpOEY<&)?wME1~1cbQt#sX4G$s6#tvEQ^YG;K8rVe^19
zvnSz1k_@opMBJM$({xTE(4L-X>ZoxcW=`(lF8yvBHZvmLA_h?z3DDFQ3%Q&lpKv=(
zwGn#*y2bkwId^OYL6Ik=F6S<10`h9Z<vPu?84+(%l85aBBAB5gngMf$07P1u#^L<>
ze0u$Qy<807?(t!NxZmy$IroT=y6t9j-?}hc+Z>Asr3CJ1x&n;d-BgR45ptGZiIQx(
z{_g%E^s@jUG_{6^!HZXPjx$iWB7$qjOq=~aZMP3=G!rFtZX$V?M4~h2JtyG4mhB)q
z32zT~o9+G)0VHL2G-q?-lsP48{8aU53W{xD?NV(8z3n&nfpo*-rU9{VSkJlS2n@z3
z*|&$3d+Lt-_#K{xdb#A`GS^bj<k0iOp6~W~|EapLv%BQY(X_ZGL}Bf^%#ui$5IK6M
z1EWBkL^dqDoHijHssj+CD*++0q^%Qd5BCpG@RNhOvt&SVVB$^cw!|5TKTdF>&5<cN
zZzx0G?;jqSiPU|W=dvu(%(L!-6l*cqIxEC*>?e_3-)ELMyw*|*IGZCfi%8Uft>mE9
z?C$NPgoe$d=uO>^eI44xE`GswQ&z(B$w(+2=YGF$aogLs10;x~wH6<llPSkr5;ZEJ
zALf+%hbIa%YOSGU#<-ObU3I=*%rWXTOdE6$+?jCGZ?@Y$KE0F@A$DnF7So@q!J9Dk
z+BODvb*}`FQkR6+?3TH^n%An#h^(d+kU*OVzqTxa1284-;;v}eI3&0hKzSRi0IE{^
ztZ3zLU`%~u5o-oucrSTe%i7-?tMP+Mh`8Fg<3YC-W@&CrF|$W=CouCkG5am~BFq|o
z+bCdYNYUG^7Kp^bL%MQrvkZ)n(buwo0Q0R)=xc%|QhP0mU#oH(;!=~NC_Y}p4_7o*
zb#LRP718Cm7VN|T*b%L5*zeKa$WkG-5ihvAR$9N6){qQtRhdw$TGi;FOF(sA>axJv
z@e=B-sX-hf&7>7{6Nx0yrD`D}Fw&M!M2N|?^O}1`jHa;Q34s%XSxnt<1;zPVqOu}S
z0pCX{{{zo+J>Sy$6W!uWAN%^i!Bm;q<4GrK^Ul~hV1;xeIC2{oA+33M@{hjCwtY4x
zZ4>5c?d56xtWi(Yaw+Zn<&C%ykpzIytI+{OgjkRWkVVMqQf9QmEP}Z9szW2bA%4J#
zQwui)0V5WiQkRI|-;&g8F=wQwA`SH}t>D`FZKeSX65*VMnY%6z*I^unWv-=wLjvlf
zuP~xww+?_>%Q7!7&%eDs|N8Rlmt~qC?jOGS=DWk;zUy|J618E*Dswc@I}$ONDOB_K
zS}wB!<_IW~0T^pCtSAO%ETO~KS}VB6{0YFpYqPL4{79_Q;vhL~RtzTvOAImKI2Ixy
z0#s9oLNC`i_8DbK3DHxEEdUTuqWLwZ!d{pg86I24Wp$~n!SuCyJw9iP8l?8@Qfs6Q
z?cLm&g}P139XP;Vu~h#w^D-x0Hl{>m1iZ;0iPA<jvM$J+5jiqKME68MLWCTGfI+nR
zieuD)W<aX7#*f?}IRKJ77Iy7(7GaK5qO~?+1Y|QbS0uQlRHKi}<2;hLt{qYMm7L6S
z&cxN%V^aIgQb@Sr?AAB|BLV>f<aM6QM7fP$qG+VuT`EIrLhxEq9`$bRRf^KEwHqy}
z)Z4H9ma3;v0uhlUb&OFRv992OIm4)-UmQraGPFAaBZ4cU3A1cA(5PxI%u&D<b|j28
zW<UTaiX2g$))rz!lKLBS2#{JqH49-Z-w`sb>c&l-a}5j^^NPv>h&=+qB6}atZF?XP
z$zo+{Z$GvE>G(bnSHUZu>Oc%NBzSAYfg8a-+7DJz_w5Q2n{k`?+{EV(FqF2mXbbXU
z<Feie1Z_cTXXVf@5Zz6QP<<`$0W?q~is}z<XDxRC^XiTgIYLCUihw9&+F-_OCL=1_
z;y$z%s|J3#5z|cLdaBy0Mb)C|y#cs_LU9wiuo;x%S0gJKu}w_Z>N8W*rAC0psv<fQ
zmr?>}4dw(+0JT=F)#CbLZq>luYH8??YG%sJ*#1h3;V@VO1Bh31HFhvZLSaV-s%^C8
z3hfO*NAzHCMxo7Zooc4Nwl1%bnzj7r17`j9f2_j&d&}P{U7H&;(seV>-}+p=JuwRH
zGRVXnDQSgpz=FFoN&BYW8B(`h!JEGWseLo=-*?NC-ZHzP2(3=*R$z^5^&_s{x!8$4
za7W-F5Fr78nobA_sxrxYar63B>tP_y4TMDN;RIVb39iZ~w9jR2Kx?6`+xBp4boccH
zDni1PyKcMP<|M*64&(WB8K+t+N+Ne@BcJtH;9hGjr?=<l-+p=d^_Ss#m6Sd`eS5rr
z-0trrcMTc6&JWg%**dItN4Hz0_pPU#+Eg{X6Kjkaji`dKJGbTohgQ^L3hMy8EdVUH
zeIAio32MvTqQ?Ok%|5`!SG+I>g825NQM33!^IHL!sex<#r(PZeU(E`Q%CtK8jELO)
zLle8Vf>rl`V8v_IGyrxd2kF_3%oyEV*@2jD)kX%Z8bsiRoO1Zdf~=`wJ6H=r3CUVJ
zy1F~4y4FS~jZ*-1D7^#x|8%`sk7QYrq^HX<caMn7TDp1&@JH~C{~!DZ1o=dOAVCo1
zaB6DH%-G!Q9#x$O5!HJwvY8DOva&io%+0Qyql?HVQ3}=vM`M}%I#jA!>|lNob6jyO
zy_luYp%9`a7A~s{^;tjydbUaf?m|qEI5(x0DA>zNVV~{DOHnNeoo`S(OL{|=ZsvTL
zv(Vf#i~(8*q>bV0EAC6lXIF(BTXY$~+R6+CV5NA}TR}#GE*!98I{g&T6g*>Ekrkrm
zYR+3#v<mk#WU(qT_k;@Wb|t1CNzOR&X(b)qyx6HuHPtjW4<w}ZA9PL-p{X9W{v~v$
zvT(`~X2KJc!XW%4M24lFT3kj^0e6~N_QZ><K9iYi86A6rGE2Di!r(e56?7lLj}p7~
zgbOC!EE3M$%-R$mxk_Z2>`IJzvcg+-mq+Tkqa|ytUw@*YS-qIE-uT8ovd9^6H4)j7
zCe9l>t0EuY?~+*+%WwN}WQ2+!F-odpcerhqi6ZB9?_HZYIv83gpK{<@<hEAMeV0`k
zdF*MgB0|JVO4L$iZ0v5PI3-G#ef{Qp$KHC}H6HRf^f>H(*L=vnYwp;GWUK;wAjsUS
z5KYR=lSxm~Cs*Ggp*)?2p}}*GsXnKlgEnCkE4`e)P28vv*XA}%l{^dK`v3qS07*na
zRJ9~hkd&ZFfRgA&TCiAApUJcGJW{Ebk%YLG;TP5rp28dhPa9`Jl!H_vtgTt#T*UG+
zYC2M-WQs}bl9co)2cLnF3~drHwoRGDr)UcZ)TBkcb*{pm&i$ctFxZ}oQhw7__3icT
z_3iD`r;l%MuPXBO^Ovu`efj*`=Rg1X-(Ftd<OG&>r4{kpufP2I%RfH<@~?mX{cl?J
z=Rf}GFaQ3ZK79P?c6*t);+`NC(946x?A<|)*5Ly9rErXDKrL77l1y(JVQ_B1cFEyb
z6jKTWQ*Kqk_EBq~zBadJQV>YCuu!1fVV=+^ni<ty)Q2nN&T}|I4g~#Iml>saO;a_N
zNE_#xEF&qU?brr-GBuj$RkjGW6dlsj;Fw6~Wo%UIxH&aLyFkeG;u?%N7|ks0+5#H^
zQzs_9JM?E~wlV*JPOTBjDPyIDas{bWbICLjSe~=O7-o(1PcJzo>qOMjrloEOjXOgX
zoeeZ)KI8&69nTp{T*yTb!$(=_CX(!&%t8|120+=>)yxFr9>{i4ff#a>b!Q>%F>5PR
zlOr(JQ(|6jx0RjYia;t=BoZ`AMzeDa#HkoT@oiE`0enY=_SlnIIv_P&6lDB5WQ$@?
zTqTLM{aIFJ1!XRmFMA&^&kUYSDJ@MsWkuQ|hAv5Ax)6TuCK4H_Vhy8(BICF3q*CV1
zBy7-VKyl3T!6-)dWJE<-W=VO9?CqJy{qB&<VbhB{xo5(<F<6u(WwO)N4NMzY@WVNA
z5ZYw0vOtnjR7T_ur&c^_r;2FSaXfT7d^{E@Re4)WOXB^Wk+FBD@L@ZfBo55iUj;Hi
zl-dAt?Y(ce1)Y~<9eKe2S5?OjgECvBM507YA?_73yRAscN^xU}tX%x#4A7Dl|M!31
z$8o>ES8dUh<Gqe|IqrG9@AvPjc|6{4%QCYhV52I9!fVKGrHn7ssx;Tw+n3`6bZg@b
z(jgGsg6RT-cmobufm8|-1FU2?y)8ABC^ctawQiDDI2Fv*&>$i~NLyv5X*%alU7Bk+
z&Gq7`Ev*vk8Dwxof}feac5P)uO%zVG>?xVit5T^cb(ncU-4m9U<_k&RZmcj6-|Xfk
zvLn<)&9Gz8oSm*AD!3>Otutd?q*RtL+t|(_VeidMUtize-roNBhd=z|<?mm<{Pth}
z%U}QPzx(h1^6&rt^7^{gT1z=es@%up^XJdM{rbx<|M<t>|Mu6~$EQF1{HH(t5juX{
zg_tgrimRqqY0LyPUm9`BnXoWK_n<>FA5;L|R1@X-K)rfND$)X6Mxab%PzyFG+SJmT
zOQmIC-IflCV1{Z<f<zQkby#>Y;E}a`qqggc{xtRgXK1|iK4FeSGa(wOh^B*~0w8n3
zRp@fYwg#7;AlgO71UiQ^qq9TJSq2dwC_VTXniK~!of6-^9u_4fXOLER^pfYwPm*n>
z_T}8iI*e^;W7e-`G}nm6Q^|Jjj=XwDR)RxK&KKNkrrrrMW1B)(98WE2$IDK$LHYv^
zzDgvNrIlOzd{x&1{J~1}Aqcc>OTFRZwhQ-Ev&0>Bb#>TI(GNe!>N5yM@wSWur>6SN
zO*_?@aa^4{B%*P~()8EnqPVI{78ajn407`7<Wxl*veY?h!YjbQRSCYe`Gi!p7y}xd
zho>yYfd?Xf0SGIk#|8ycl9>^XiY+sCl$0i>L6(7vsJtYPtr3#xYVvsG-ugH)qmGEZ
zp%c!%cWh3JIhNcG0Y&U(1~rB<{3~&A&zxqt?_<~AxdU`TsGl;Ub7e!cAeD0W>g}Y6
zJSv^{s^oD<ucA;^m|et4BIcHr%6t`OW0Z@$zWD97ca)af5-f;dX*Elg+sjQ=mof<4
z-Ej%`*@Rn(n^Rqm(aX+QU;mf??f(8AkM9}xh=&vyPx=1++uldT&N$v5@9VY-G4dwr
z*u*e|VY!!7$|=fyeSLlGtq!fSM5W(u_+Bv-)=bS{&|&m?l{nmTVmB96^F{w<rLH9k
zB*PLhx!rUvT}y2t1v{%s+(|-FZsS$eyn5Wz0z6#FhD3+9MJ0D;iHsPLk{yumtD7aK
zFoIlI220#P=i`je&DBaFgws$esxoA!9d2Ic8xwGMQ?JOdqy)(VMFSwnAdHA+?8{c>
zqG5nXgOGwGsvO<}%%W6v-PVVXA3uKj^zqZjUw`}j^|#-C`Nu#0^{;<@{PgMd^>u3Q
zi2dcumtX$*k6-@zw}1ZauaEEFKD@mA{PWNM_UAu;{P^*9yQw)SNXRM5Ohr}IbA_s>
zgZZ+sj=6*B=j|xwthA28Lfm&fAMM)51%#a?B`5uiW3!TpMv=ZaSyW-@+25-Y70wO2
z7R0?hy~zcOSmQtKIXd=FHIZXA$eT-#qQuc)JnQ^`Bt>Cb5@E@kleXP*&C=&a336^}
zSyGuK!zp#f;HsycVB{1n8I@A_M|-GlUOm#oi)SDNhm>3gi?x`Zp9JT=8NpcGS=;c(
z&A^gjDb>@CY~e=Dzd86eayP`>AbRYbB?}G=d#fTM)W}#-)wIgi#F}ZOZuUm%{Uvr2
zjTFK7SC>etMr|2@u=Ercqm4v;9pa`YhH+O_1@H@^VyLOjRDyTgd|0NMIa#-}>rzk(
z@m<Ud8((n|C&wyi7smR=!~$i2J?<Dzlf^0nIO~eg;<pj6UzK_7hP)W;d?&jlqGDHN
zpm9775iM%P(nRzA$h}L_`mx@7BlvkAhlxaH>}{&x?N^nVR!Hpl{{3D%xQngIh{thc
z=HoavRF;O@Jod3Mslv~6ZukR$@t4~w^yS$_VUVS`%!Hxr+=O#jE`aC2;a~8BDczYR
zR^nb-T2|N+O4`dCN7?S?%iT-c><=Wht1nkI^R+ANwo>Fp#eMnm7ahZriS>jWHe%ql
zAzSH#8s(Jr`YbYwelRV!%37-H{@4Hd<@4v-@B9AMHLLQt-?Q?z)~(W9zkmHL-#_1D
zR|Ta~f`V98Eh6udSpi=lEadz3C95*RZ?}M3%Pcb0xks!LUCw|iD8q;ZQ!^7cd%5YN
zmde&D6<fCw+o0yJ+uO$vg0wALzFz!xEA_Z7GvAT$wwwFrxut@y*YXfqYn8d0N(6*_
zqPnZfpac=UhX0voiJ6B~YMDE<U8WkU?rXP$%+@W<+?Se0VPmJ}#w;zhG^lFenpgGJ
zu?(0o3KZTd3bQuVD{2gcY=TQMJy=Dfx%MiR+I>&eUZtz_!|mnM+uP3{K79G`;a{J>
z{PjQozkmMs|Mcn8r{(_X(<dYf-`~G~`TXl|zx@5zfBfzK_4BLgA3uHk^G`qj{ORWx
zbuW_$F2a*bFG(qz1%Zq<gYt@=wxY1d=yE9DoZENa5H-uZ+s39>C0oSQBqBu}b66&M
zSn6D6r8V<rt)}@<SCZB1t8TmGlI-5^RolAwZ!xk*J8MrxA^ONdXpC8DMUAP@x@<6&
z%Ch8IKnpI=({R}#Wd&6Tt(&TshK9UWOt}r5i&RA;#i4a7(_yk3=+b#+v-O-w2)n6j
z6m_uOyCce2FNJCKehamRHuak9fh_E@N~9t$BLik~)ri=drOh8p;b;z^O(ab?)1t~(
z#mtoI7(5|csx)G`FJFtAr@6#UQ+B{9t4r!e$F_P&+#j2{lj`nDQyeYGQ2eRr-ceba
zNur<C%gx<Q`atdjz%crC)1HE8M1olU`tthy+qcL29hHeK@3r@ZgOQn;8&8gEMnV{z
z5krT8-8_y13us7t`j?i>WRwujQjvW>oSh#eKieu@Wmncdr0RGa2tLZ#QmK`-Gcpjf
zw<C}HJFDBw<MG(XAyU2^w=62zy$>aSrla1m{%loU>^%0Kr5>J722_Z;%7MFDwW>TN
zb{^!YLzb3OY0JcIAK|b+bd6{)hHuA~EGtvY4&i*8peauVm||}1=tOa$q^K?z6Lpu~
z^P`i1=npU3Z>zLY%NImN=%MUQy||G~a~%{pU3I8UGXqmM#jz(LoYEA)nPSM#&MMVK
z2T&EjiY2n_&wu*#^T&!~Ki>EIx7vGERz~JtraO+ePaoF%A0FSn)_zpR-gj4#i*QBL
zT#LjRDHq+}-!sz8j`zpTeOtGkS(#=QKv%2z^2kz^aS5whL?o7W)D{|uFn9+`TuRhU
zL?3H`3lDLJ`>N7)Tjmajs)4)a+}o+yS}%oOwo1)+Y+tVC$FbF2m*X8l>tODg^`wnL
zx`JAYu66U}LPnB<skYry_4e`tx(yc?sxRxNs<xJz+gfT%{HA7Vt5np@Z!hYG2Sg&{
z{jqGJc(k{-dRYm}CLEKjVXPW72Ca9U?VJF*rr*E6+>ei`e|mlW@_PIJO}>5p*Z=c>
z{vV&--d+v5Pd$#um#@G5^2^`9eg4<|>u;~BZ=(P9`r(f+Z+_ptw&XW_hcG-~Tk76Q
z3_a6<*aQKelog0l7Zt4t!z{GPNl2B0tQ7EpV;_>qc^|i%lIm4%?qZH=gW45JT}#wk
z43d!GOQ#_QC1G`u4GvZZR~XkknEVp!s-j74{3R)m_|_H;DFS9}@|aJ3D5a+mB*FlW
zv%5oGvP9h6O!I;TC<Z|F;opQt5%D$-^*nmq->e&;&p%`BXTR7TFs{JJP<QF>*-aB@
zX~t$$N$uF^BPv5OHL|3%QYs|VO?GY>l)8#!7)y$TiYgLx+``rm>qe~4q(u^VcinwQ
zNF~Hbm~dm|!3d*c-(GL)wnlyQ^G`o#=Hs#7-yc%CO5=!Bd&gE@b=__eaqLjlPaofI
zFSqaCzR3<X^V<@UwU*oZ_VxR5zoR%Xb9Y%TAAkCodoTCMtcc_OxUFUC_xt_r<@I<x
z3>$<U_xE>Gds*v!=WqY~S3HgsS+B3Rw-*#x5fR5>YLCa=OS8hv-51O-nVCmaghW;Z
z0-`dw0m<08b1|GInHX2OgQ4<y9F^sDCJBPil^NJgkX0gDmASWwRz+o+>lS;c9D6HO
zSS3m-N>&}5U>R50#*H^Rf#_*T%i5KG3>(#)WR*G8MbNfaXu&D20>=o3j>Uz&iMyG~
z>+35w8Y;`(+%cytDPIf!d0I!{O>z^}9pP&gJz1w02KOj5X6E?1Ra3W=L@Ma<G0@G}
zIu=9|(am(D5?yggWXFg+BUD9~pFEQy<`iplZdOQkn#x~B*AKDh`qTgTKRoXD$K&0k
z_TzpWkBCDuw8B+)?24Vome_fJKi<DrKKA3Q)vn0>cx0wY#c^l_;nxuepoOpb)ubX;
z){c-!$#69Z?07{oCDTOrv6s44My5fzSF(=>dP}G`GmeU^L(Qy?N2sc=fOXp4ZSC(#
znX^c#MQ&G1QW10AUZ4f1sj1|iQN@Zz)k-TQQM2HB+dGgIFCtOthI}L4YpG~u*LsFQ
zldZMxBJLI_{7u~au2!m8_kv!VQtRbrzSixQl_l%-!zWI3GaldGZ?{z;N5t#Tf3UX~
zx!nqnow=He%34d@us=4_wO00}HD_<^qw3+ux3~BApKtc%)qi_`|K;z0{lEVACCB6a
zw_ji1Zaa_f?_a)u{q6qs*P9$~Rv(Yj|L?EI-#_1f`kQ_HLyC6!hP|)C!gR4mfixnF
zt;W}~jlfvcm|?_U=1WZxGEY@4`Z<K|Mie;!8W<$PxnY)~a9Ribc?4ZyRO#kY`Tl-~
zXqA`Ive<zxft)-Hs?bClm2MaZYL^bU2aedsahO@`kiPQKf@5tQS=jOp-6i%GVO}+d
zhfnSut(u9Vx;68++w2-60Lwi?GpZ&>5@rxPIE{tyAk*7!R5^UXwl+#-B<6|;D4Ssb
zm+RPq^9^SvH}+?wnG}|5kr`4Mu`>>%DJOB45GJ9rkARZCHF6a@TBulVW=r`IYbrIm
zct%<QTcs*rUtVs@_uj|eD)RcWUfy0ac8M%s`|Zute*Nup1mG6({y6sIh{!m$sQS7=
zqG_)8pFWxC`{Ta%etmi2;A$;5yMKRw|MuMhJIvHdGkyQ?Au>=IeE;@s-ydeS%=Y8(
zb*n0g^kuQ*@qYKUOzOBlDt6aJigrDt_HjT}3x5!%qh<?94<cpmJ#y%X8XZ_tis~kJ
zQ!n3ZNz=-xNK>PJ9;ScOGO05^(c0V$4KvOnEe?H?LnBiGM^%AV?(N80pjL)TmZ&dB
zuo$aLnp?_Eh_2QWxtXK*jVcj6GF{~cQI0Q+XiFqTqtZ-#ISeD_W>Pn94+W%QKu`Hy
z(qcbT2%&F@Be!UlCZduRmE~)l9zqdOiA>-=xkqb5S7Z$&5;SVQ0V8%bXi98y*U>|s
ziK!|()7(go*J~nS3o8mTM2h1e`ct{k%>U>A>3=;Q_du%du`_pOn#w*7_}1}l%)R$<
z?ET1iNPa(#Z>|!LyJTrb9*0(xq-4c@fC+BJFp8WpMFdF5DhergMOM{PtBAe#63ZQ?
zimXi?VvDG$@B6(<D#{%SFC9<|j3*VL>R1Y}8^Q#pxyo<=?4Wfrl5G>BcY^tjDwP4$
zj|>+nr9cc1O<8M!t5g}wmh@f%0*{d(LiubW83{6%RJmDZm^pVCStaUrQxP|c!#Xk<
z!|7Xys9LHK7UQPOV#W+V%^ZcWGcC^WI391W?>~R|^6B<ZtN-%;{a@c6-|zY1<EOv;
z<==n)`KO<M{^@peTXMgDt^HWJKfNF8AHRP1{O#@getdtd^<vGSH+Qrw?kgkdolrHW
zClw-Qd|3qMp!PX+VhC&M?3_wb!NMU$uy%@oS&qf8xdSNxAexyiUntS~q3>N}M(m>i
zV?dn0k>usKn^dvGGsmhkaucRguz%PhT{0r_I1Yqyj#eKt=ZKBATk&FKmdg^yv2F_*
z*5P&IH$ck?MRR4EyOvbx5!=;D#qnopGiCYUP@IVpKbr|GJ+<y8prj-!GIF^=sh|TL
z6aFiJbCNSqz|N_;btu<BT^RI%*`UICQ<afBwzdkgZvu`nV()%1Ow1|~yPM!37nzY(
zRlZPl(WQc;bMFAIf@-B^3@&$fM=!1>j&piBc4_A8{rmUGT)v=Yihw?dLNrjf-0<gm
zL{_F4{Z=n8FE6(nLF{|0$ji%ZITBN}q;?#~aVR$<xo$Ui>)!>dpwzPF_GdR_*k4$I
zvXpFYD#P7H#n(z$_#=DS(XrcTCBb>XgaE-0{Faz1q9Y7(CRu4B@Of9&%j+A+ZzyWT
z2u6X<9FYdq9=^<s*x0O_n=UsuQ4_Z`Emd<*c5>#o)%$h_jv=d}xGx0#nHw<(7Z6mG
zO*s-fj)OOV2uf<S(VdneCWQ)eL7vK9s~Xec9hz{avDW-oW~Q{Lttq1eq(qI987(@e
zeg;8jeP3#`jKp*dU8mx+!&kD^Ay=ld5F;fCkuNI0ltTCA?#%=hR~lYAwjGb|R+S~6
z-pZxIYcIW}WoTtp+&+BB2w`iklHr-FGWH|lZgG$O?s-&%WO#*SKuhBlQn@6h0?Nf@
zn)|3KiE_@IRYd&E1I>~`R#Qbu<Qq43Lr^o!^k773DMVGt^3_^6%|u6oVQxV$Kt3lF
zJUc}6qgwAdGJ{)8QwO;eU*>&0K-ibeiiiz9Nm*<6!7r?1D?zWCm1xDtm#GpdH_c3@
zWKBsc@No-PBrM7@A6YjuKqR0Nm&&X=8p>shpD4IyZdxS~CZ*{R<)NQUxCq4L`|Itk
zUXG8iuP>k8K73F6{`mU!+n1_3j{A<shYv4iCADvoA4*={-*5LX>-#VJm(RWnIz3`h
zMBV&JAgrctk9}liM3`c&B1Z*goLLoc#4CkYc>FR$RNOtHLh8||IX?1P8G*msZTQCp
z2qihjOqq#rZB%1s7_xF*cC>95ZS>&fDoaeNYFFKE7HT_l)T)BDG0nb`)WYE2XyAH-
z$(R8LZI5YUV?-pLW@~5pcHy(iQmI{KY8yG8#p$Z6Q^t)S0;w(S8-bb&t5;^NyBo&8
z9axdo8xt)hg`*GxMhQJ^Z?tuBW!rLp7BZqz?g;$KOlw^c1|V4^(V$C?3@JSxbz5u4
z#;KIa-8Ov<Tpx>^wy|n5bBU>n0i1%*d1q9u%)~sz{D52wuGYOb2!#=cuNypn>*qK3
zmAQ*~$|<flzg1N}LQJu?zI}YVy}qbg+#h>KS*_)Vl`KupRW!uJU&l>e?s9Y1v#1K8
z$pC&xsm4kba~B0c0^N?^+!FQjGR#af#muWC{6y8<)Xmln{77_NRf&vxZ@Ed(p(qQ=
zHBnVV*cW_Q>vq!%3d*!2hK9J1X=+&!dmnrIf)icoxi{-Yy{e!qHui;8oz@3ub2Xuh
zIT`RBXZGK>lVAsmVT~48s;`7Tak#mvQR1#bt2N9oMscDTB_Gm7v07&6^YADtt&<g?
zs%{$qXT7)ro41uT!kJa!gD9CCA(~*KXQEsh^)jc-tO>!VL!y{+tJ(LJV&2sYCag74
z(9cp8qa%@8$8mJWT`g2mNzF|B9Cgn^;ILJO*^7kfcJ-Hid>7wRkr|nXRz>dSiBk!v
zB1gnL)^*xcPCj<e!>e(MW$^!3X~C8-@1w%H0qu*Z>^3r(+Cn;0GwpzfS?7RYeu%gT
zri*eKIRu_+6^V=`l@V^98KQ;8XQ3<E0WC%rc%Cs5*<tXQp2RP*^NNw)jobtd)MIb{
zv>lLU)ZP$oL4T`~`-nIWRYj7lI|RW+Zt6TB6_~&l@)PB@YdzMBeEhIYO7ror&-ake
zU%q|$_VuwJJNL)?+sC(;Paj`jZ!a$;AO4`r%G~^?pQ|!AWXx%#Ll{6S6?wbe@TaV-
z$nZ+3ihZP%o8g!cDKCi#H<PO4*oH#8vQ(l{#MT1+G%5?dNM<@KZBAv8*;$byX=^QC
znYA#wP&M<)NMQ1qrcTL{nr8<4AzPZeTJ~$IdRvj90MFLx6~H}6u4+k1nn>)8Yfo$j
z$jtVJtqmhV^pxh7fyba(iXG6zJ&_a<_4E{JV3jL1mK_+`9d7juz~2l;RE{NDvqEAV
za45K;8(*bTZY4=C?0B)%AQZxp1Yy|^K2zwTs@3CkKf4c_+`Cao6(e+!Pz&}MLiIqC
zXTht{$N-|kxDq;1#Aa@;WfXW3KHVU!7hq#~{;Hb$>&yD^md!TGy<wPvNq1p>>8@t(
zZf3`0|Kx_)AGBN;*rEr;#{s)0RSwSO6n+7ijB%18ySFJm&^w@)HMO4exURK!q$wrl
zP<@sZ)>#VTO5{tcz7i8VVF_in=ob)t*<sK2tei<KqbwU>zJ+)I9rK&ik+cacXdvg`
z?K7D-=rBH7t5}%&W}v;xw$+J9YBZk@gGz$>T5^c`fWO!V39kQ$1;HssGYXK2b^Xfl
zhSsI#X{hT4cQ}B3`$}fIwjJM2Yk)Gkw-U`RW$>L1fFD*cDU^!Z;wf~=ZETr3(P^jl
z6qYD{VIwFG#YT-KcqxNMMMRFx3`&j+E7x%x;G=RIR79RiJ2(+@#6Ojw2vb`s<?FS|
zBM#wWJNYn6s5t5YQ&VvaDTXE2x}BO3J*o+Cb|7dWE2>(Prr>3A)lUkKwU?bpwo(C@
z8~Lb3HG2()d$g3;LymDkF0W+D8)F1z@8~)lz$Op@tUXxxMckC)@RNLvH%1liF>ZQ@
zTmWLk+fYKQLdIAfl=Z8w6bv@a%+~@bNv<>4_7C8LGqW9`Vjs*?{V2J8|Mq&n$J;;s
z<)i-BzkUAv>-+uv^XD(B`qRfxAAkDezy0y&pWj|zq+Uex{v93&$qLLr&`sj7trDrV
z78-hZ^|)+`cygYU_;Q>95&Hx5cSgIVbRbwOw%8fO4usgCp;->Z65>`62v0c%`=RO(
z({^m2Rz>>hfQMS@%mc!>#Sr-ap-r_R?+_VOnejO8DknZe-4p9@j{0-&gpez%ypx>q
zl9SL0{yajONJB0)moCX0Gv4|Q!@P&nX8dlDiHece20<lY|EvYT?Sen03c*;yiKj!F
zKwM!Y8FS5A#o>tgBp+MEu~E5Tyj``!-Lv!6fEC3025SYF`v)FJ-J8G)K{+Ati_Hzr
z$YLu~C^Tq_K2K8qb-UfFBr>%$Rc+l$6^{yeMF8LSKtB7Ua$i#NMqY=u6v(S!yoUq2
zZfkLzAl4NLZz>jxl{W6UDr!hOwAkFw;8Q$Wsw%c;D+x^#f@N&f@7nW8!LoC3MA<wd
zM)zcyNtAM!Kdo3FIu~Tmke3K=AV@%y=IlyfYpY#LT>YHZG$zyuS!SHi=4rr_O39MQ
zvmZnvC?1xx=^Aoe37zo`86?QkD%%MSL@q4%rO7ulg}t!|)RDugW6(m?(W0E(B^uh{
zYz#^{Ge}Sdr8FQhGo%>@`-tT%?qhFv$2JCA7`(DwS&3W<&cAB{tl+3OV`_k?m1HEN
z0XbdB2yD!C@%rp_tY$*Lh|Z6n1&3VOB{HZqR${6PQW%3=F0*Q@p>yXl3H?Sj{}JEq
ziBE33hlm=sZipl*9wnk}4T21~v+Y)6WT641eFq0yGDQygG)!v%lC370VP#W`Q`9dp
zv<7OJUa$r2V^A5Q5V{07VpUY(6|NL(q>$Ro>%=z9&)OCu7V;fMp&D6mL1ec-yfaiF
zmLP^nttiBAFR9KzM!5xP!yLXPtMsR1`}=qM@YCDJe}4Sw(=WgL`hLIPZnr=G@lSvG
z%fJ2UPk;RM>Er8%4==ZynYduOC{lHkxhTi&i0>mg3wW2&^O@@LcxZ`<V))t1GgObU
z#KcIg#Y8%R5(6TqvI<>GVgiA48DDFkaumBCwVQGuky)mGNmS#P)}@qbpLAC9lkN@u
zjubUYSV}GfZz;^GbL-yKXmJeQ7rRcYEK{+}Q9_~R!2PMJfpiK{ElnXKUQ}*PG6|p<
zN<?clhy$M^Z8Lm41dAo=JJkTrswAB)D`?a%Rs)7%^JQrdZKePKAOJ~3K~!bK02V3X
zRi`4!4waUPx~WBlIi@d#SBM7~Ke=-Fv6wLNsW*|#jnx36*i?u!gx?G;AQ-QJ*`XSf
z=1gToW~drQ$<X*xDcATE5xJ9cSZJ6w;>b0HOH7Zetrnsi6%{*>J7Jb)ZZ;SY>P$Fm
z(QK*=2a;Grn2FS;F0Eti86B}i29=YBT!6ZyTIRUF&g?RL&MuxrW=poY5SX_J6c0=$
zC=rreAzr*1*RI3Rs^|ZjC1ql9n&Ik9woo~9>uR3==$@A6VO&y#QCMd-X$ySgS>X%s
zW;`<`*M69T8MJr6ZT7*1|EFZA@UQ|=Az?lgNX@gc(gE%<AhYaTd7OUqdSeCtG}JMG
zGx=ob4BERokra_*2MyVr_*IF3Nr{*RoPm#`(IX;HhoOiBaxmEQfuDuq*w=!l1eOOk
zUpuza_9qPepmhzkS8{Wi(dilJiJ{gL$sruuiBaHGy+(8jFS*RB+^m$6jK1Bd*s(>7
z3&bET;!ABfjhZ2t<Z=md&xlc;yHks*^S(PD7jRZlX}87-!v~_-_)MR4Ys~8rOUr>n
zB^FT)ZfLlYodf2gCdT-|aHu4SA);D4vh5^9JCmWho>hUcu>HU0xc-eVg;^2jOC5lR
zT&E`@qIz3PZcEpCd3*cwU;gs-%XeswUT!aMZ*QMIefse6!&*yy(ah<sWWEF)wgmD7
z>#?}NL*o)s;vY!E!1;lxO)FOD`5rs2_6~AlNHfpQ3EegqF-QU9%P^$hko#pK8vQm7
zEQ>~?)AGxAmNIxfN#<ivYGNu1%wFieB481NJ88?~h3eH`{ciZIs)83Gfa3Up*<57V
z*^}wTOMgnk<f@_t%?<IbRo1=l2xiMgRHAi%c&np5Ic*F+L9X#k&yp!Q6bC%qD5nov
zMbcA5qYBL{oB2qY1B)kEmfeCN;NaAcXjNEowR!i_k8bm?_@t@GV!4v3T`eaUI)c?5
zw3EUwnc}W!?xxh<Q?=lm8T^W5Rk^PnB@zbj5sA*3S!*o_g_!gubvXn|Yi>V$tW8Wq
zg9x}I<WxmA$WTWn$7u+9Ez{S`&E?eiXc;v`!eEtT1yf0C@>l8vK5O?xS5jW1&?-Yz
zGDA&CguD>rFR-|i*IWIYPIEcZr;cyx03|7*EUVgwBQT-uz0Hi5bsw`fxK_ek;gT&)
z%AQLlr6R(3zL8oyuKnHXWOr{od%<>$CwwvoTQDV;yZrq7?p9@2s**&vIe6m+y{FJ}
zA})9eRl5dpVkDqp*@sNa`vsO_s!t-hD>!1>NLN?cOL7y;k|nvNnSP>~fvgn?zR%I2
z8QFV;>`6EMRiKUbH@KRUmb0yb0u$ew_ICppN<g%!S3i`fOs{ix1(Se!nWpFVDS`((
zq8YmU_^jV|v7XW68w*>s4%eq|f^Kjp4jPSm4<XgB|EpY7dAMArGPqEAbxu6=YA6bu
zH?BVfk6&R<N_>*F8fM(L$<Md*D&%_gUQ)L)YPj8QX7>8_b{zZTr*~9~%a^&ozP@6z
z*D2lDW-&_h65!l~t|_y$RJ-479R!Rzz*oTQqN*Ye;n^@6yNa&~&7vBJ9U!X0;76k~
zvld2p^0!k=&$QW5bpk@D!an0y;GQzSJge1%sLKOfGy0GqiIAyqjn|R}PEOCkaZ45z
zl2umf7{n1OKF=Q8khvGn!&**`lFDR<R4YB|2`oGc3J_~g@HIn(YQ7QGnC^jE&)<-I
zI*AClcr(llSp~=!fTph(U_uXYM)y*E3MVVl=xmKiX&w9}aEetw;80GEDWnovCkm9B
zyef@J-N0+h$>QwvI&D#e)LD7Re6rjrNtl5zp_py#y>S7f&OgI8Ix_XNS!0%qoDUK1
z-7;qoI%t_6f`z)=*QZ50Bx^aC9l5geM{N`bi>kWtVX{s#dIhmI?lxCG-8RUqzO<D;
z{Pp_>1N3MeeEH>`riUkDelNUrnUej_m4lFi#+8r8rAg%_1Bh(N@)g~!HVUwp7s^^w
z=k8RAJbPcfU~A;b^EDrgBEDR}ayi^fB=-B<RLdRC^`-<$?2SHxIYa&Cao^;gm9T`&
zR-KSh$`#Ab+$zerL^Nx=IdX~D<Nl6}aY&sxL6TXn2i6b~p-D()(=#w|OMLi|se)WW
zD5SVOsZ3R`td!LAaI+J6B$}1xHvgbX%&3Vjotm9sTwL3Exu|;3O<5@kS;X{Q5(xYG
zJ4ZLYNCh1<E104PcTy6%o6Ysfj_1@8P~t}>57F!pVxb%Dcl`3$oe<jjO6z>ymn-<P
zSimWu&0#TW_^S{%jWpxzy_b&QUe2(i>Q)|Z8o%8Z(mq>oD3|Y{Rt2wOIjd>ud3arL
zjq|0|C*Cpx>N_*G(-}GrtzmmLY+#vf(7Z#9Pig|^MX@KkBTb__!V?w%fx(b1E|Hh?
zPYk|S`|ZjT=%r^Y%ozuQDXU)o_ioTr#?3l?bKf^8F+2YQGy9y`<|Sg|RIDg_3v0;a
z2(f2eFse%wM*Yt+Cn39SLYJtAJj3Jk#H8R8K^o8bKA*zKh>)ti550myiWUoPBA~Qo
zA7?Df6n4>6vY2RP#eh@uJk5<QEU)dt#9nPTnM<$DI?fbR#1O@}QUQCEq|ZRkigp5p
zIHGG*MYV>J$)lE2tAP%5p_E?hY-!UQaq?(C8V)TP4a@BB$+fB$J@K9Ns3J?j8sd5R
zgEP(orE@-d99=c{=*j!+5$h&?8N4IaOXWaEep~II?%);!)}^D3jOl~rNrglSG+tX|
znk^{X>q?wyO+)hM=oMXFqOKas0Y-9)%Z?G6V6JK4wJpZ2l717hVEH9-AfX;e#*Fjb
z#+L{~Y*TBlKi$1^EVFX$!-!b*`S`&9l5$lp&PmZZI%AKskjOABQhSP}2(Kn{K*TZJ
zw7s_g>bT>`M;LDSETHi945Fw1A~W@Tdn;>Gv2Ch=lc^lXaTa<52GWjRq(SVu=jWXW
z(0rFlWont7X(K}bRb?l1YQ_WPW?oScZRS-WKCRCWrRZ5D6(*8+%k8RVHpZJ^&U-m5
z`7cWAA1#?CJ*Brcj>@j3rS$ip!_4JUn<vH6WLXmqLAVT8<=h%h<=0ycGAnw{uX+K<
zKesz)42zjvZa<j>?D-pxXE_>Zx`Uix#WQ9KdWQBtUL`ZnwKGhDxQk@EB|EQN8KjI{
z@|04d6X2hYgB{U~W#;>dK95+bPg7nS5UJ{=&7D8w8iCp`q6<5|7bs1v*fok8WfPRY
zX5>?=)IwCY&-}kSul5VS4E#!djj@v)LuBttB_pf%?}LhNC^eR>9EDv757ICGY;>p)
zp@@b%puurW%wp3+IfhAEEc&}MLY+eM)8UL~vs<mOX<JVpAeet-t1LNy?fIuko^-sr
zq)hhY5bw{`7|oG5%}NY_N{$8iLDRM>p@mUIR#2x>aR!reV3QPDOc>im_{!h3H9k)}
z&i>r^LkM0tNsXK@p=XxK_@f;>pF8h5-$VF+w7P!EYxz4*-SrBTliLk7pJnc7*JWg$
zzhHHa`1!*-E+RP{sY}TP#>;%eb_PZoO?pe*h}IgY<2dLH?Q5Hv@lC$p$1wz1{IPoK
zN{O^%8ldS2QSOh&JQdg8ecnLm3h`kfxK^P`kv@bk?EUI+7)*8WbFjP2jAb4b2K^Uv
zKN{u@@wZCV=26_b4Y=fIK?n_6FEvEU>e%bs*UudoS8&=<$tGcnVv{=_WygZZicJJn
z6;rtRzDGY6Nz+wjc2j@7{3zFi(73JX)V-T&3(AX1#pZWOni+%@(kg&fBvKy=TST{k
z6_sv0gW43)Hx2lr(52)o?RbkoK&1T@AuqSj3ptUusW4-=*+RuozT~9`nu%!F<{hgf
zZCCA6Oqg4HHqG-&(5-Hmk~xx!s@VjqNGRhPd#TPZa5nj0RP=}Xw;FVHnMx@4Pt#7%
zjb3L4%-riO%?TX?-6dhMztuBw&Wrs^Qnhx@h0*H4np{KeG8yUd^>j5(NH?^jcJY<f
zRVw+rzme;;GzVFB2bpzAaqUS&brM4)(l+%v4Vd1dPyZjY<Ic0PF2WWT>5L-cElaVe
zbznxH5?B(SYJDgkLi!6V|380S_k5)L%Jr@8p7ydQQ`N{V9p1oVv=u8hu|Jj4H+ORo
z+vYp}A9*Gx3OrrSP{X);(Ceqls9%tde5S=gs3Fj5L*OC>XHKCRt`^Gn-6>LH?PIhN
zYE+5r?o_Nph|0mwX0<T^Zk?GC^C9N7u8oatUD4mnaP%I{%&v|JQ!;hrTvShU_{&b0
z4?K?>e!b2~#^v_?;p2v#A`?bOtBPuUWy*P1oreI<_C(gCMzM>9ba`XHZyNL|X=WwX
z=9j@Namta}40TM4hNU`V32W|Zb|Eu+Bx}svAh}Otecv+XG!8+u2eHni)Rk!-$yHjH
zeLM!C3KogUZpm>vQ8>cDmq;W#+$8{efGURacv^Nlo5wkb?F{l%Glg-vM9uYF)CT1|
z>g)a6=TX%>9`~*m4QVzlL!G=Pt!^eFa8*m>A<#gcGp-N<PkKbx3gq69vt<P?rx&z}
z2?_L8(2@{V1s4II-UHJHirPipywhqA^vR~4qiLiB!0~%&%dT54KNpooPXPQx4)v++
zGaJ_ix$s?@h7!MSfcw$j`KE$0XwTioZv)X5kbW~czGlf?2iMovqpkJmS^Uh`Dc|o=
z7V@x=pnzUH8s}pDvFbH!xStQbg!(dQ@!XF0RXQE>l(bN)$7Rkrna4Btd%hG<(}U5-
ze8|gd<5L$E(^owm&F7h}g!@ZiBhEo_%Lp!G&SvPqcdn}H)5q|Lzcl&RW3HYOnKA73
z{y9S3WSuuL79c-JKWJVQoi!W&2J3Xg+PFz~EzOXIW!80g(yuDysimGx>I@a9@{ovx
z$0IYjCz9v&LD$Dn#I=^E{f9bN^|U-8q`u5yp0n=leB$o*n#NZhOnFrB=9n*9@A|dh
zNtARE(WikFgW@|Ykcm}1C^j;@*{N#_VQ_7LHk#J?(V{7#C6YmWQc0zH^GV9Y@=4`z
zwx@Q1G<E7!1CQd2ODf@0Nw%Gos2&Hsc5~89%{nXRr@AmNMGwaQqN=*-E4|K{swcOB
z#Mi3YaWn@iu8XivQpv}0IN5A)v<9tNm&mY)VE>xz3eL%5%Y(ZIJxAH2#=5vhH8&_}
ziCV406||&c2TJ(vnBizK1};&UmhN6hG|i39e%V5B73MAmB5W@TL(jw!lw^25Ny0G}
zB^sPOHI0xuUu0$C&8PWAt2A~oM=LcjKQ?$k+RvAb4OPn!b1MYnR*1y9A9roD@9}uJ
zIp#ktG(XQfw!9s`1z#q#7?pXID#YFyx!k2r7~!nYTQ;2R5{kpyb^&%pNo=Nef3>Xv
zxgEQvr@$4FTs@qHhew?MQ^yf<U`xRcNx(XNEiTfkazzEkf3r1p){|QrGeE}Zp;Ko)
zUT(?(_s-YD-GQnAe^Of}OJZe}f$qzg2W!ZPaWbwKN%BZ1Z1TM0vQE}HnoTriUoXFF
z+_zjs&3)@m^>D4hpRP|$Q-`#&M>yy!^D=&{O#7h$>S4TG>uxQ*^x_mW_U1d#h;&^E
zknQzAq$zV&IMeA5l?51q9`cI{xUY&yN54FYDz)p?e&*Sn+g#pfZIQ>IF%m*k>eX$Y
zo+&%@`S|X-klul6^_H?Bo7m&4q-^-H*Uh4wLE_U}K#uggTN$>Zr}crmPah04|0#cM
zRedm(J+A?Sz1~Y&k5D&MO*R&!0GO=)a5s$4qAnxot^;zW+``RHo#XIRE<Sr)<E}l?
zSjegQnrI6>KSz->>_}(8MW)T=z3t`24~q$7IuM4)rPqx^vbG(4(6#AT)xD3#RoNV>
zGnAgIoRLS*o1?sJH_pL8zqcc?n4t(XI*Du^gRfFr-=nac!i;;J+|c|Q!2qxVKdbiM
z^z0NT|B+QKxx&2X5}Gaz@4N<ua~C_l5j~Fp3d;jP&`JO)Vb-lml@wK1jo4WM&)U)W
z0l4g>hUktSJv$Ikeq1}Uc_XQI(!uZXfPy-u0EvN{nflMpqa%d|dTh>9tfCYHd<;`J
z;;phOKyCrfq?mNzXfL79TKD&FoL%lMB1b-&R2MV+obfs|6ZnUaX_#swr8wNoNOz0O
z#|~GmEC2)m85dPNHfR=*zf0jTuX{e<I8`P%p}7-C!qCjEr}miNU$}Cs(tM>>?H(zB
z(u}6LJ1ySU{e>K{Uw=K+5jNRd98yHwrR#C6a(7&e7`mz0?RIPJH}o`Cos_P|wZ!~D
zo2kg<=AM^f?q*FEcs_IOG88^fSgC2gdtpPC1K@THK-F<T&K$R6j!whhlO(JgwH}T1
zkvcT<u?gy_biMACM`kIPfl6I}K8|kf@c_py5?yA=^&-D^!2M73RB=7q{$?|D-Gg**
zCYK?3<vFg<i+uOTIOckua?f`pA^>2TmSsL58Y8bccfT7FUu3Su4R6h}bAB8>?8)o<
zAdL^aF!QpX2Tql`o}M-FY`galWfq{slZDr?o7y{i4xv{|$v`2ng|eQj%gN@HA1;!!
zrm2gKlw8Ao5`D2G#b=#op4F3l`ud#8_~Ahsx9jGcgqBurqSHVLQj=pphOkTF(o3$a
z6U-OG1fSBMuJ?ZG<}Xz3KfDQWG%>1mZ@dg6lQp$hWAy*bMcp&i`3L7)(RZ=x8N^9L
zU@HvHJ@GkAy5w*(fD#96HG&F%qE_-*%nVV(viIpXI)ycy2S}Aj$Ym9wZ7{lu)ZlBK
z<yRgL?>8KSJy5Q&5NXX@TfwT_9KR%uHmpl1*PlYGMe^;!YEgn#nK}L|C7D|DrO*?C
zaDE|m{1=(Rb$(AB&G2hQKonMHW$MQs6IknGtK4n9fBU9g3(3_ydb)ux3Q5hJK_;R3
zavX>ASBD^i*Zw|^N2hFOmm~>%S5;NInUvOs>Z+s)*57E4-BM?APU1c@k<e5U9!OD+
zR=kOab#QIgSuh6G6+EMPpzJexL7qlEBJQq2$Yp~dY)k@9f<K4Ax0hQdyqanr?Mu6`
z!^KR^9Y;H+Myl#+BX9NP=U%p3=e3r(D_Q$bsqKst=pJok;{EH4+e&Ez@8unJAFY$)
zfuEe$%@fk1d2dkL4~67eMUG=J;utL1wMU;>^i?5pQK;5+UyIpnMv4MOG>Xlf(@lr=
zpr`lXa-Hkhz@7EM8Li6nn3M7<#OSHi^BnK`;=7E<i+D<($CAj{IDbvK&L`!^&Gg)N
zEohgE@7$g?#NCa}VBqOwmvZyx4dSI0mi$qR%RV}X(|esHVNsH820rhMY60ox%7Zht
z8q}kG235l)<fPbhqLXKlGxyL{`(7>jW9&F(88~!6$E+)iMb&g?N&q{WkSjjDpL`^k
zW5a1tKO~ngRH4aJH)a?=FFQ^}kIKZN>nS0takkI}&SL4Lbg?Lz-Db(iK#=a-$^gcR
zl2}o3`gZ#4%JZ^0%|e5S%4^k_bn6ON=4NdWK{iGU1git55m7Udq4edO8FR?#)<^=q
zZB*E^7vobvWrEsR7*O6|Mr`VpQCFMB<*!lUA>CY6<GjeD=N3ueL`C1$Czqkmw{!D}
z>yYAE26w_i$lIrxHrzJzQ=mSkrH-Nq)M1(e|LyFOz16@30;Gs&s%i{Q6?zBn(bw9?
zzJ4FB_30?8@L=t|5tBaPg33Z#NU9>J8R(9Pf)~4|Xqg#c9i8Jf80y=Cc=BLHst_P$
zLEaXRyvWeu64W%NjMNCk@2HvSRn&?w-BIEjRy{-kG#;oqXL$Hv#&SJ#I6{ujv9P|Y
z_)VHIY^Rq9v(_bhU8m-15z`p48SeNhRk3|AuB-1#bNATp4u<Ve<~ot)dQXgGqp7Ef
zu@fJJPQ1C^iCi7?gU&)ui>ZoP(`YsG{zJEV?Fs66X7F?YoScWYJ@90#@pt~P7Oe*K
zqg>1DPtG)bYD!M|NpnY8EGh!&8TiFs?{Y2uu-fku6Nq9x|0~yx`opc(n&**EcOI~|
zK1;anhzxpaFT&%g9<FcT?_J<ixjp6nUWW5>0VLr{u*rNG%|+3__#b|PPo)oF{m6`}
zxK>N26Nco;?9F<0Khe<6c4{_Gu3@+QDAi5#KbR;;Rn+N|tWf~;XSB~3DcFJ`5plFR
zIHTO`yij%I0$N1f`5^vD=98@F89roF1)82d%an+Kz6?c7J4q6H>EBIF{-YUkHWUu2
z@9Apv;`JcG)a-(-xS0ECN}H;he_T6-SdN!O!y;OK!7mgn(?%1#<kdTvF_gzRe+3;t
zW=Uxj>w_c)G0@YejmGmbjHwHUguiSXdHEwvvttl|9;Q|<$upLYGZ^`sb}83rNrV03
z+~b&ObcDgU)vcEl0Tg_us<~H+Y{<=8mLVc&Q)Bk%J2)Qg5;Ll-qYNX(je`f7OFaV+
zQ&G)|<*vlM!|WqRaK(wxz4drJa9F81HtmR`AIvG9158LVIZ_xQ<q?OgAIH8RRMaY!
zGtUlE6bXWC`k+LaS=JSzn&^&wTZ>LD4Rwz^ihTKoLUoN1d*ix`);g8QJ|6DAl;3s~
zw#b?7JugZU0#Pd~tP{4loD4+w1ca$YCnZkLEz#aUZiT&?P@ShZYuqU+r6v+`&ZcIl
z8v$4D;MI!ZSYoOgw({mH9kjyPT=9IqOox5|1)L3sBmQ%~6;w4#W%7URZ31S84VAo{
zfYSl1$`8}m>qYWI$JSvaH3Eo~(`A8>X8GOyeVuBK+_vAe#H>l=gsP@oEB#Tb3&pEu
zeZw%0&n{DFhO|6!OS<&dMjdpT*!3ixyATw}xnCpq^Myx&@b6c@zd!d!<$jgjT_?9A
zLx;X&I=MC;i<zB~XIjX#7E&&smXYTO_e#Y==5glqTi4OolNPrj_)`R<U#_fymFhIX
zhPkDP$Z;w08%x3;k`12F646b}Z6oNL1JC@DusR~ZI^{-y!@+Fij<f}th!QiY*!a%d
z#kn*DkU@;KsDgo4!?Fp21!Yq-YS>{gv!T-q)D&@CZk>wK6{lUy0<>o&7p@e)V3;hM
z4R<5Q`1Mf|q<J#t)rKSnR#Kf6`D_Z%M8l^TC;~X*;+B_vdkk*6L1XlqbE}(;j%of9
zofZwod>Wn3urBLTL$cUv_r&-iI|NxqHn@`_6_{icGNznB-!nUaP_5wHJ5IzvQygYh
zU*nywj3DqBdpZc*I05O%NXbef*;QRVI})_p&ya!Ma(m^_f{>2N*+Kw~(lAjJfc#dv
z>N@tLC;O+MPL88@e%^`(fkSED>WEFWW<D-kH^<w|9IH9<dhQ(k>p>pXesg>{WwstW
zMQUfd8Kk8HH+ia62^T19X<$U)V~vDAls(E(o82KXI5hzpJGQ%<tpaP*ZSp!qBqbmv
z$NUYe2Xi}Vu9_mURk=eI$vk=lq7$Zxv6H(?#C3VehxG_iQKw-vJ4nR6BI`w74@5Fs
zujizkmX)EiralAP>||p>wba<49?ln0W1XEx+Z7Ni$rMazwem?y)>F!wzW;hH{owKE
z-lgl9sHgs*k4S4F<I|NhDq@D)_iUU+&F{EQa0^^mf7(ZUH)o>rrQH#yyqT(L4CVNr
zkkrjjo^=BAuSBH4c|NlSE;DDG>^6-HiiRH+g#EpcQ~Um`vmF7sx#O#J(m1Y-hKgU>
z-%EeV5B-Xo8hwyFUx#f6LpB6PpE+4NGCt;u8ISujdVWqUQP0Lwv}CgtW*jUIa?{Gw
zKzsU<bzr)@o+GxIt6B<l#ic61;983fv9H590BU0c*0?AUk)1Fps)z=GpdCVhdsa!q
z?timg5|{aejq{Cj;IjUFRlp6G+F6a4Cogb-f9J)+(7DTd*mtd7mg^1T9|9Ddte20N
z^+zKt*!3wbrP=K!lA`?7FrH!cDn0HVjPcX<BnfE|)qPGE`ghJj;>{Z+SbkmsWW@%i
zhKt=?h0|U&d4p$~Fumy_TKj}Xh|$jhJSyksD0UF@ciJ^;w#sn#h4tVhOC-~Z%5r?B
zE~?QH8i~r17iE?N^i{;c3wHLfqKT2VDjEgheA1sIBDodcA$OmfzTY_&k+t`(tdd}`
zOf#*xp~wR=;GTj`VxUCus>(cpxDlJA#*z}v0Fi(D@*Tk)2I~=<BxjyAby2RAM#1vy
zkpkc+-DBps*r+%NJ&|CXW_YygwtzaqJV1%O>KaXfffYf>D4Yy>j!AiiV%Y(#jOLNx
z`*-n$d4ZEh*umNmA-j7WCB`EIjSHoHZ42Yn9PzJo5Sd6FD!27gb)4KZfE}fd=8~A>
zhS)<Y2<98h3{^xDfq+-_6W=*b4u?l?RRN)myECMO_Ye^uSKr`JL?~l9C$aK-YsBvj
zse_L>cOTb(MdiGqi-f{UhdqNPCi$Qy81C47fR}r!1@dMkaElr27BbiKWV|${-#T`*
z8iZ!tX$?1c0yUlzu;jx18-dJ)5c&i~;rTZZ#i9M;MaPz*u=N7Z)JDO#8>e9X$4@B}
z8P;XXh*A4D&5L~LvVl5BCfxJRCEB)y>1T2jZSe1i3OGKQf$Z1|VrjT)ZP$tH^>z%U
zjDJvUgqdaLn52n{l0vMqh?*E<tjx?goY&&W#LV`_j8W9IqE2x#?#4U=*oW3ql)vSF
z<Q>;mr=_*imsXWl)6y2jPx)L<2~l==zLWUwpSckz*-Fh~CNAw=CQ@BbEDQn+Ox>8Q
zdb%sGL})^zW9QseCqBDhYRI^{0lSEkrt$=hIrHmJOgVJ2mehY)2Cn=vJ|{g}E@o5J
zV3kCqf*N=oN-KWMDbQ;<x|rF{z~|V~Jr$K;d=&FsRLa>$SqJbaUCRl|hp5ypnvIhE
zY*rQ`vs85lZ&W!|ky4u4Xq^nWma7)1o<0BoAOJ~3K~#1U(ipIJQi)t`NY)f{t9Ifs
zQvwM>YU_Ugj=f99;qEQKX}Eckpr1w>{=oRB4U!+diF@yK#|l*d7KtOMc2Pha1(;B%
zd}FvOyawiIEjFC}<%f64%#tBusj9~%79#>5zyd@Y)5x9MozYBf1Q700yAEy)tmc^M
zjj9Tq^&thhjwPcOVng*h_U>I(wR<XSmYP+W2NIa=%!g31o;#VTmpn2G!#&Ex95uHu
z2p*yrSm;Z_@Z_;`-Ffm$FQ#~W=c_XJgPMu>-9+)SX-OTz240DoAE#ba&HO5V9el@e
z9OEbg({ysDuany!1btNk0l`o+8(Bvm#f%Eh5lH<9Xp5_y3U%vM^)s%L?sqS(j2y&z
zAjvDT`A+Bfq!RA_)8s=f1=QutSnb8ZMRPlr3_USP&)dP-%|N4P2C0!;kk_Iz&+91#
z;+iV1@57}WoC%C|1Ei9{QLS1&tI$V4a6vkl<R#1;wguquWFP|=sK)GKVed)~KT$4F
z8;x*OF8Mgg-E$~Yk$h%H^r$Xp!fB#__s8hGnxGuKkuoF4qebjZ9(j7xqEy8xbyf(s
zBgWg-&8153&Z$RYw^w~%3}`yC&UTVap<c~k9X@a+=9pgiR+&{=C#rqyT`(+j>0{Eu
ze3Q0HN43<T<<Q2hXm+Pv6JSfm8KuyrqM@l>-A%0y{#TbHrKt@Wt<IoP)+-~<mz<q(
zZ`PS|j%h$;*+rJ$b)n#UAcGNQsL#0W7$s?azi_0b4WOoRFveHS+R;GlXP#aZvo6dm
zX`7Zd$^pV<+^VZ(4KLj)s+9s4t6P(RnNdfgNR%>kgG$OK!w5MY+*O)X99!2KAo-+%
zy4lK*9f$QignY$P@}I|jxQE71)4^CT%)Q!BZyhtecgz+YpI`vkn5DsYqcWX%ci=kH
zDP>f^G$SMS@q_oEGQGe9DKW{tRq;lKsj99B=n%_p8kq<xf%Cnz)U4tVVIW)=uqh%4
z#F%zG%G8pw><%6=(JfJlDxN$4eB76Ne{L3mB*&1Aqcf_3mb}>9jIv%cb<vIKNaU6h
zb1x~g+X4?jRn*n2@H!YViDNBzVs?P-c&PAQl`2@I6L8VknHd=o8-*$}M_9INC+8S$
zBQsOCagLh#*pqOhbUajzqhsWYG~lP4ilQFAb(^WXLv<ScNN1lMyXFB_t>d^TnfU_-
zR!WWsE9)$}CEAg2kpy?(2gEGIVdBy3n?;|RV4O|St$r8(BM_T78R>s=v4o!c=FGHx
znx;}FiTsjS*WJ%d2rF~m-ahXNf``-8VNWiUHuCU4p+M?4zvHCXsMP>UIw4b_nKnrV
zWKP`gg!9Q6-!_(v2D}u;NGW3{KNBESB{s3k&qLH66U21DxXWddhQSdm<RA<E7nDi?
zFi_HYHIk9C)YJe|?hIQ7CreaXsmk7Q99sr*PEi)<m`{9c45+T;Lg>EF9C#=qL+g?^
zIA(wg?j|SK;gUVx@HO7PN~9ag$59;%f~5`Gx>5S$1KcIbTcn22H8YRSSkkGW#@tWD
zBU|;^D3PHMvpO!>oPNu|IM3(fOg-&Qg*J|+I?d%gTO@G9X>-dbuW$Zz@hpiQOn=u?
zMsU`;YNnFCDnJPxQ9QY;5@@4dmUAF@LJs)fV7|8tPNdoOXZTMw+ARB`qDU5p3+X#q
z8>v&S9U01(UEIRw-tNBE5(-LfhluI=^6i^4sa7|_EAmXStSoghr*yJtTHATM-7-@f
zG|0;)cV@YHo_wWXDo)POm6GF~3@>DKXdLDqQ7J`QP?ehPNG9KzR%u4CLfvE^AnTjk
z2&#1?kAn;R%raa^Qn54B)FsnY%}rFQwMZ?6NfcD-k{ME3tvhX~)kwr!bp>O1l~#yy
z+04G&v;w?xdLiO|U(3zBB#?|zDiK)MmqnS`?Y6`{L=cVzD<>f&Kwc|=DmAI-7+&Eb
zh|DYRqJ`P$R&(!-a{oatKd-<^apqi66>luO1O!dnD39FCq%1Nr!_AN5Kwm2&#}RE@
zY-&;$+|DZJ3EeIo>@@SPJWW<Sn}!_JYEp`3BU8Osn~^6$|H8cNws^E)#d=*YolKV$
z!nRP5JBd8azO#Tz&}nfl8s5A_Dq-ePh!skB+L?0AOX+FI*$5(zE2~g0j-r%x_i5VD
zxw)%ZRL}$0#r!xbpo>~whH9x3C8SJ%RZ(@e5&Z*ec>fnb_&iiGiYI+uB0do<vMuI)
zlVRIeBobr)lX|k%jFA)L_0ozuxA@Jbx<JN9`1VMVfJ2EJmdv%5QNo&4vUf&QM+XwG
zfcwr&k@VAVQt1v=!|^nNm43c(P@IIRGY2!{yxxW*W|yW)>W8h+=p{=<$^yzoB%F(c
z45E}@7XIEPB^yL~WP>tm3*{o+%O^*=qaFLg#HS$0ccBg*0RY+oB2I%qYeiWtWu3rr
zhSud7Q+j<|dTumGUZn=mP)XxdXX_PYIaG-n0*$ybkHB%upyM_+0c2Lpw4VB&`|xhw
zwg~gfR0W@Z64z+0*1}9XFU)ow-bOP+Chb`bslVFR%}lkNg)Hu1_f`2Qk(b-;MZ}PQ
zql)LIMAjqHMYHx*Bg$A~(-O&JkFf+AJcPDXRX!eW-dU|mo~>w!?l`DFM4e!#jn&NJ
zF|N}dQ5NGna&M*#c4B4i1hNN`fjpzrq~vLF1?7S(75rAVJA$fIE`v(P0#BqoB?ZW>
zhLU$MQB*2MG8yBe$xJubQ{;uP;%QJIYotgut9I<}NCMMZ{A!QKc2At~(WBYG=PBX7
z-d>^RR>~{&Jou)l)YH<PS%GBD0KdDWeY70{V7Of*BKHow68x!Pb!0>h6qk!Vh}}fh
z)eZT)t!>ehO{NB3QdCJYr3--)y&s!o1QF3g#H@^>Uk+NBr<MiQHwpVAN9=nEYeDlR
zv~V1ar^~AnlVEU^`6!shFaVf2Kh3`!WU;r8N4VWY+4LZK>WbUsE>L9eV?@d%CnNO}
z{686~>Yj82YS$C}d0r$@Jg8K(^h}kROH`=ZPoUj9M{43S>H-1Ch_s6kFgr#qC;lr-
z>S;oVye|_gLL1I=gsY+6);14^ZB|{<Yo)<?Ia6W=;53IE{7b1O2qq8#Jqb6WC6f~=
zIVaw<Aq_)b&TJ4JnS0Cfx$t8sS8i3y9ref#uxL&|11Z{IL$Y|UAx^t9^ae1Iqr0<i
z`?6+pRF~wnf<PxKJFW>SB#OS1xMHp<i^WGW6sDy46$+d+d@mR9c*DzD<4;(Ts)Zy(
zs6)tP1YWd(n(nxqY)!Q0+KE#f{F-%<qapo>b#dHKRE*~FDM$ZLEfQe-K+Vb+cQ0@k
zP|ZXSvhcGbibFpNvhwo#YC9j20d)L#r88ij!9n~*o&uN<n#4T4%pT{|4}3Z~6E$oA
zN32gNM7Q}hlT|yq;cR&o(>2UCAk~ps`YK-FWSDx1?43(Wj*N(K(GtrFZswk8Y9uL|
z?VcsILGvU%HCW23#MwEq<j=TzPOdx11f_W#FA(b*mY_yactjj~8#<?9LEw+>U}+O`
zm&^<`>p;roHb`Dh|LPRno7z!(EJl-`g{uO1=Ol0Bl+FfX8=jKt=Z#`<V8~uMdzRLz
z@vX~Ju{2e!9oFF!xPH|1w%mQS0zpQ0(Lb^iBl?~YHTpCvPt2qUmMOU0r3^Tc<2a7v
z$o>l#V?=gjkTsWy4s0Z;crK_I%uFQAJOdawz!N(|RLAc5-wM07CCQQ73Lsh4tGUQ8
z3M=&gza}{xmbJEI%}#eS0r&yeOtM?62*vDdU#eJS0ysDq0Y$0M*|c=BiZz2-n!%E;
zNg**PDTpVbxU|)m-QIIn087wwOzfDpvMAFdc5JIRXw1;H*JEZ!_J~!S0>GGT$}S_&
zo>;0=m%6k#2O|WL&o{1OlV&2OsryXZZJ(-DDl?!3DtEvfJkQLGTUAv#tjL2kCJBNA
zsB1y(Wg?~qA6o`(SmdiGAjEN_<}2TAs*-_HYl4W0^-KWC;HGY;k#y*|bNzqb3P8rA
zVOYdtu$!Fa3C@8UW@%{+ycY^lV2!kCFb1moZ=iyrO31UNVlJ(}ODmO@zU(LhdaRki
zYDZ*89D^Avs=4=M{E6>H0~u5HA)Y{s4QD+XDIlnEd&09KLMSW^p2%1DwmHxx!B91v
zJu`1uN|R8^GL9D6<BCzu;K`d2!H}a^h5^(d9zO~Fs9}+^8K4~dAUvWI6oxQa$|4<7
zFpdiwqHCu%t67;i10&2i++V?!W%gkjJfD%T5*dO`7h`1az`Y#rf!0M~#npF%StNoq
zF;Bgs8`g&ZdRn7I`;e=;auai$T?hv{{!gL5Lhtlg#{k3;+3lX)M})`U|L>mz2NAso
z_ld}hZ`g~tCDw5q2J1&~kO6=k0|%BhlHxJO<Y`c|OtTa*b*6T5jXlC)eiSe-**q)<
z4I*Oig5eZCjw7A_j8^V0YyNvU@P3P@81Fn&UIwDvbe4oTJ@{6Uy>|;fGoUHkr*`&`
znfs4Hq7%VQ85{F9jP4L7vyzMbg9;>~z|DAa0tXr|Y2uHBkK=iKeJCKIkJ?_SB8m}f
z@#0KY#~FPEgR3GCfd+~_1&lZ>FJYc%?ruY5=lo&9kvVaOg&^tVkZLIT+=i&e>VQ^7
zJf~W_fmDd7ps^aE8Q=wA;MY*iX5D$mz81A{6)U4KfLOm_Sc1m2SZ##2g9-@%OxB?D
z$FB#0Q_~DCMaD!&WPK<3KovkOXAN9yAhDp;=Ccv$J<Uf!G9TFpx&Z<=<7G(AiAmg?
zwaJTXm{^~Brs;PR%X$QgW4vKC3X5>5aG;9(TP0-Ibe;A#$`n)LaKNBP^*D#P$y4HK
zoqEf94l1l`nOgKSC1YPR_1#VN!$j6AyB!*+FsESB-i$71J3C)eR0eR-vQWF{Nuzzc
z{jJTECc3TcaE%cv?5*q$WZ&KRqEUJ?VgLYVG9*_1Wo2yU-V1tYN#^|KsuGfg;4}vt
zvqnqN0777Kn{GEnj5$&P*sV+>kvL7V{D}7bdb8g)_Gxsex)A)c)M2e-JTD<a?6IH*
z=V*wb3gHoyE(PLxe^n~8n+((`yT>#UD7t>jST^<=#7$slveuG3ayT@vs887G#anX|
zXqW!?2O;Si;MtTTRFh^71JE+X6>%I-qG3i@Rt@d7AAkSff0%G6R`>p7GBXk#gWNjN
zCGBMV{$q@{*LPKTKA&E;kysghG&Cb+RgiHUkc#i1iH>7v<KGI4u#98mEox36R-wtQ
zDiA>5-`|;e9OD>ACV|BA%IE3hINr_^5a2v%kV&B++(qVjV(9IX-3~RVi7yw))nI17
z4v8Wv&Qr%hwh$GW5YN2FcD0ld(~6zviNg#+v74&*&$Z~jEJVi`$1#q~QgSm$3p_?q
zwp%2P#xetIc<&$km9WvUq-2-Lg$XvC^Rz?C(1HlzAaMSG!}UhUv-8D@4u*$q_!2u@
zW0&+aVWPp=WJWo2qc5)o5~tMBDY``Yp_X5~JDWFWV{cq0rxk8;xYG%NoPg#;gfzKp
zj+K^IqwEI12ns|q{It1ODMVDA5PU1I*4;_5L_~`@Nwd^YVe51cM~poQAU2CVY|g#(
zeXcNL8BswY9~aI4-5X!csi-11u?xU_t5={y@LZiT6Tq^^>$XkXmJPKBEJg%z&+e@_
z3jo&Xi~qL04Nb>#q0*KlXt43%VI1VL*rKgwqwSY!3zdyaRkq5QR>LVyXf$SvKQVPm
z`HyNM{}e{SiT^Wm+7vH(KePUckXUW8A}Og?-;#k&FYq2f;!rMVgqm3sToGsh3X~=s
zCiN*+QCj8&grES*+$~pauW93pgu_H?=d8ns;$<e17?d|RW~%HH1vm2{mlaDX_0us|
zn-1AMHDiX!Y*?6D9`S+24oS?<=^`Qc!-h2G@#5+x@=l!yr1%*YveS8x*MJkZfo|a_
z+t);|?83e=hAJwG*(Zb$*!C|tnXQ@x&Do_x$6x>YtH-(cBkPu%%xv2fLIPBt!6yo{
z*oWJ*L3oH;()6$`tj85Nugp3TBpTy5-rio#3v`fw*_;yz2MtSkB(%Cqaprp2K91p#
z65=t&V;n3zXqats3U^JG>b{Uj2r$Tbd-nK^L3Vc8jlzsKrhu^uO+`5Z5Dj-$JC#tF
zWuqVW6cn3OyxHdRsp-px>*snro=Eia@^TzU0K%F|d7~X6l*JBF`e0z3JZ30~B8&y>
z11JnS_;>&gRh-O5LKfCJXB0W(R8ySf2u2q$Y7e4)uWclW2x46?p;0Cp<}8f>HgE@0
zQq7|^>5_WVmQ~)PFH(Dr;jcUAw9BHVHcOX?nA|T$fORT6xgr%iTewrT!cK5io|sbH
zLdiqM8p3q%4D4><aJCD`w`qS7YdQ>RHJ;voOmY289wPw=s^;()<W*pE2XeVjfS|S)
zh;UPdRyr}gy|AsK(N=@(8^Gpc=1+i9`608^Mj7C0w_-%rbop59LYvLlHI<>v%=2fK
zaWM95tLEV!$hNl{6y_D{;TWs9OyEun@p5BKC=Q?}&)c~f>Gc`cQ>mIZUpTH4I(^+<
zM%aAnGIMEr`>_X27JlHU5;L8OKnn&?RokRUx1S5gW~tQ9a(_%KF3k@GcL%sc#e>ae
zD~9CEOV*n)klEvp3bQVrhYO2c^Xd17CR|;ej?@0pvjr3a35+4O5^yEEEevLIxecxd
zX{gl!FNrUTU5AfL6PXXJYlf3$<SK0}ig)IjT6qox11ZcF!&N3sB8>WgNGvh{2!{%U
zcMcr?`0WQF%4E&QkI+v{krq7fV5pexNaU?ewADQZs$!m|gGLhiiJVED*9cUH`5-!-
z1jH->m>Fm0AXwt0u&p!O9@|W*td%px3lU}hPYgXU#&|v+vmtDjBN#r-Rb|O}zWy4H
zF(C8}RtBtRLB!*D*b;6GWR_zbzIKA<22~!o;4chORGB$qk~KPs<2a6<T$b5z3i##g
zR~&>(kV}WiK+`(g2tp1=N$cqBd?#xc$d&%U0-)nKUXC#z2cPFW=bV$p97!~7Zbw-}
z0fOyn{T7$hypLg%V<fS7_Nqsug;8*+lDxzsY(OQfnNDE^SKFE<QUzu~a=n+ffzM8a
zHr900K1f?iOmw%Eko@f~C2vQYc{(nZyrM*Iy;2i=^EjiJeeFpI+K&5Pgn_hX@KR2Y
zm6{cA|7v5>JQ=9-oS_s75+jIcq>F>6HkrbewpglSfLAH45P~lI-e%wAOh5$7q+w3$
zZ^|I0CufuuR<kb2(SOf@aN60DU~f9Q*q8$i^5}I4X*C*GK!Y5bxm6MC69G=l#%>Mu
zk!+b3%D|LLC-GFrc<}7)SOkk}4s*N@!-KMjX_d?K#5_81QOPH~kJ8xnA+MJ^1Om00
zvUx;&BP*2KZ9G&<<Y>8P`@t)F2&DgWo|2tVhDt~}riH3oTdfPie3JEilkBoRh(WXY
z*)&5g??Rf@+KnT?ve#d|({F;uusvl#(Ucvg+OBQ>d@R@0cqYt4C9M(s<_Y0Dj)8zg
z18`XUt*QA9A3YFhS^%V|k*AECcO1u@)6Hcfw+GZ_T!WeGQ6VBWWs7|=0?+w;JduV9
zxF;o8(j=xK5g<-Urjf@3(HI;jZ-$i`A5M9uoHiCZa54+CrKaF8e=+#Y>fFP4L*fMY
zP^z;CD0oO>nC~?Hk-BqaV`SMZog3oxBi&*IRps$`q(4-CkgspA5`1hTd_G=&d3njl
z(gMy9kW4A|c+5GU&u6;y<|*a}J0buHa4mrm5eHNToJMe!B}<9`ve?jnARRzMfyVJT
z->0y$sIl^Wv2AungVcR$!g~RenMVjT`8|#Fq9l*0Q=*L5kVN=CXRE2$$!pF086#R)
zoqmP6^j*+S1>GJwXz8R|_)`9PiyPS@7Pf?m*!$iE2b%E7PG2|bQiwzZkARN@H-wS#
zd|G2<rgWyO4ns$edC&d&>chNQv0CyHvtBZWB|?AQl>)IlmMDO@U{`?ojL9<(EXbhC
z+*vOXOyCi`i6?f1HrU|YW@UHIu}>#tuYIPMsvP1U!8G_GbEd(P-x7C$M3tkEQqnd;
zPNqShz+@Vw;@pZ;I{9={)kxdLc;&HAuG~`R!PG?ya*;UIINc?s(^&iL7xx78sZe_)
zCGIZbCT~rAqGcANcC0^7B!AhE2ym~6S@zPPtUFRIbqk@}-T^ihP7l~>we2S5A}Ukx
zHn8WGu1Dx@x_(88_xW}Gjr|1p@Vg-OQLyZ3KKT0Jx0AOfm@c%qy=jpe0CI0dwY%AF
zGdM)WRT`1!MdV6NiH8H--XW|Ff_B(=n}|qbBr{75uNJ3zno}zT_0F!2+OF3Im&fCg
zN8~sTW(!0b=2ihK=Qw^Q+0qn|OjBi8zlyj&hWpLg%;Z~<$K%28??&AkV`wS<0hBE<
zO+?bVFhk21iVBn}2!itMP(0|MvD{2W)9`{G0SxOMrnc>-Ir$HN_=9ns#&DAjL_khU
z3zzc?v#Jal7Uvv~mPeXrVnK);fPHI4G!CQzFa+pi`R(W1>)SbJ<P(H4FKCMzqp<1W
zP@8#C@I1Xc3FJIhw=CM8-`w`4;fWiPDInSMVKmeKT=d3T*i2ohuVZcF;?<NTLs!DF
zFASvIHaqM%Vis{g*wpPY&$(REU$8(!1YvWWTwSlxqN|c;QEV3s%~<qy$1%+K1)=AO
zVq$ApYxsJF!?_XY%=|e;G+I5)xT$N3yDgie@7C4E?(W!yVE8VnL5}XJWaN3xwIV`;
zRMb+-!uCWPZ3i;BxhH$(`lC;)>8%LOWlVBK-87TgFpV)H_qJ6>r0@er05S$EC_%L*
zRSB+<k$qJ`K@;h}+C~mD{+k7sWW5ntR4&*+U&pHY(C_69x7}n=RX`gc0YtiSDK3*9
ze)6xqdUZs%+m&yOjnc*4{i5t+`pDS6KAhZ>dJcHYC%C3}Z>u`JSnORtzH85V=cKoT
zE_dB_=ghnBMm%E6o@;##OCc9G306^M(4l22byzPyh%6u2&c>IQr=1RwXp!Z|d!Hnn
zX;}0f$3aBQa|zN>>5o}{3#45hQ9rWnM6<$UATtgMNBF{COYN?JM8cj>L_{pCwgx4V
z*!02%CIstIvu)1(iCFZI1y%_X<t?=UaR>;Qh1r~XT&(N1Q*5TeDS!*m(zZezUWpiv
zjS2umLHPWS|M<%v|NW2fM|ydAv9)~|DR9C^q?Xwic|;;uoDPf7T0kvIcujep3_uDf
zg3R)E&cFT7-(O$fn3I``k<0B5f&_7%b%ja8*C#WQ$uiW<iE|0{)Xc&5(?^Snsd2)t
zQ>kYOXhw*yu9n?>vpFjj^(@8(%s4q+=-EvhrVZEc<3*&rZRfIegcQ4NZ*>W$uy}FG
zvt~c4sxNLa#u3BkmJS=4AbyKA;DYP7B-9zdF(M<8RufG>#Op{Ex1JEG{a=PyY%AJ=
zE1GSSeXqteGw11(A|bh(w;e^)2Tfg#!`kpoWe*kd+&Jd6NoAnDTHO3fv0RKOX}j@D
zJ<2{A*;{4m5XcqM^zBRgSl3)jZc`VvGJx6GLCs9qDEhJMaiUqZc-_myY>qOvx#9}^
zBa`cB*e`Xzfs;ZXEi48TTtBJSx5MZ*dM-BajS!GOKext7MA+)(#*(>h7jC<UYwXxo
zbhjR*ydv+Iq4_hfaCBH*Va7jbOO(fQk6++x7MXKe6_^qfan-{oJae{F9Ai8l527LR
zK8^j0;RY(wK@Wc^lq3M?#xC{-c(N@!IfTH@<Wl#)b@-Y&xc-=jSG{L9y%vm9zIQYk
z{1=e;-X&RAZZkxSLX%?Hq#_Us$>A`bwGj*lp&2!Zkk+p_j^jMfu$Z)%Gah45!=GK<
zN5~?nGN4%3_a@G2=XuUQ|M@S!{PN}N*RRj#^EeJ)=Qv+MYikwBuU;X9Td<Bq9!`qw
zfCzb>V4NvBSYHK5f#zgpXIzH-G)WJZ=t7$IrajU*K&^;nHTNbIP+)G)Ga`jj(46|s
z+#_|2x_dhtt7z$<Q(ss~z+q-&3D6w2IBhoxjqz^qjR}O1OxC1s?Ag<H!w=aZ7B}3F
z+XT(t#Hs|>GZ{X1W^@;MO17}Wo_weQ`EVm8d3+F>C>bEstbIy&JdW?b|Ni#={`0rr
zcybtkI~OkkeWfKq`7WR-v+7tRBBizhcjMylK~vgKu{2T%bF65hQ!X4!oaA0mfA2~I
z2?sP%PmWxBo@Oj5y_s9;bnm)wi!hHjf^E}>>*0&H^<$g!`rr5Sy`vxPE7Ncn`@t<`
z0t2ho>B8cUg>gu!lG}u9o)yGja>p}cOSTVowg_ueT6z*-j2_@F#?>Oz=j+w$pRc&_
z_KDaNni-ggOCyW;VNw5V82zC9-}VicZ;TcD<sE%A<rftf)AKE)_7?yN+cR6v{35S!
zuU3Oy&7lgaM+(yIqY@P}YM6YcW*{HkU<gXMcan$LgEhQ$PHApZ0W!|mA8sU&9*co=
zIHiS<U|_EF)*E^R!G!XJ&GaNf%*d;NQ^1DHawtUv1vbBkXbG!pLvve&yj~boELVsT
zs_HMl{4!{$$T{ca354Sq-S`X#DZu0L2rR{ypcG1vPCH4`kTcW+==<B>e*O0CKmYWn
zKOr6FI3LZU#d?E^vzvx{XfT8%kqjyHZ#lv9Nz6LNlI>0EKw})Xa~|UWoRTI-xs|81
z_xJY2JU%ZN4&+;iOxao;wOWYAY!44up)p!z(mcL9tW+zLFc^x8tL=fZ0(NbI)4&|8
z11RZIME(UkseYqhXSWXtLu%@!2zsBl&8gN<B7*0C*a|+TH-j<9K}4j$%o@ZL?O3as
zpjjdX073XivPe(~^R@&Z2BD7t01d54L_t)ngmy=yoF{_m?+KaHS3_Ic5n?cymQ1G|
z<2Cw%nb9FY@FkWgOrjcCGs8F!sbZb2_C6c52!s|tu()zx&i!pp>gVRJ+U&2VMRfE+
zj%9wdAHMxo?0tWa3Cd=-j~@+t(?*JbY;)Ud#&nI&Rx>aXt6s_5D!XZDgMLM=-w%=f
zCq!;+AqtMw$H}lzxo^SSTX6ewRd>!*UgS?I?(GQsNu2iGXscUMylOr#-OqwT-_`7X
zY-_*CZ!g6a!&lWg*%+ps9yGpu`+andV5?J5J?EKjhrzLy6)eI&v$PsV8+puvbc|4=
z5t2zXTy||yOXfq^2&>vMVgm}k`OIW-x`6J4v@lajMFNA!=v4XZ?4OsHmlPltuI28b
z1#nql`|)^eA6SNY*u|wmVcLRO$d|(+&vhsyEnScl^!4ZK?|%1fJPu}7fjOtBvwcN8
zCS~%RJPiY%bK1hy2vwkJc^EudMA(ADRhWf^&31o^o$$gUKVRRN^9CJ`<c7?*y}W*f
zs_42e^m^WH4^nNuWx>JPiirB}8iSIoYvGN~$Oi2MknK#ouB_G*C+-b!a&nS`uD!fl
zP$~Pzm$ZPCV6J_4Usa@h&dcf;zKDS`%D1-3IMr2E*J~9)0^SY1zW#iFd$*t@K;3?6
zwmXO(ZRuEWv6gy|@9Wucx2zd1BUsu6Q6z#kdEy6Kx?ovjjdj_ADQq?=KDc3-l!yuj
zW=(DG*t&t}j28mk=kV$F!?t_odVKe{mc2!HAL}1_-`V5Jk}`g1lcN;^kxx*Q^DG}_
ze^ccF(*9G9;0>YaSGfCIh0@8NGV1lXG4J$>V_!*C*DvS~-FAI$|9=m`yiA{4CF}SH
zZa(UWw*d0CJzW2=kTbR~zHG1k#?G^3>o%^u>suHc>lRWYIJ3z3`tA2N`8}TxLSmk#
z%7q{q<`}o}HIfw>fNFS$=(1pU<|MWj%%glH!WtzRL*24pv?w!;0pdooxnC&~hX^?N
z$f?gRd%?uGkdTZHeeI*|Aogt0q_9RGn(x<GHs?7lN7<Hk+e4cgm0plyr@nLywgzrT
zP0y>>x7WAl^Owi*$gnvhm8t4v^OR?gqE|QU6%Sg_li9cTV!H<ADZ*@RLBuCVSAz8O
z=j%CLN}+4x)=n|HqI2<H^b>Z*WtO@{|J<ZDRC?-hY%3>)2ydkVw`b`3B(Ix`qAcl^
zIkI=JF`nv5dEB1xb|zx_&34ieECvXg=WjdZsjsMWT$73y7jwh%rY(MWev7o=bnqY8
z5)#StZZP;hgAgM83awgX!7&iojR7HbE)f5@(jNCZ1Qljyo<Uw{n|*=PKp@!J7Ni~T
zu2H|XTWI_9waS)FUi+H7QSas7m!G*EqrKV%mjXY38Ohr!@54`bsOxzxcenR-CTpy3
z+$##C3uh&MVhR-7muZWox`AYGYwcG5wk5)~4&A=-t<c_jB(!w~ZO6z;g)7Cxr8|L-
ze(V(;xozfJ%`SFTE@ZA9+f^a9Sf85xNcbO&U%q}r#6k3UJXp%3A1<BFM+SBF+;-%4
zPh(x~`m(_bg+Pn!Zih3cehznT+Z6~Z?=~NcwNvuS#>hlA!k|Ed8i7Lkyld>IJOPj6
z$RRa4R<kY{7nTQHp^TN?hqe@lvW?WddA2U^?d=_rp3j$Jdzqn!n0}wl)R&n>c+ROR
z%<LVF_~zfR1okyMh{_am9%D;CHOblg`}y<rrvf02J_hwIKz|0dN8-vh)X3K(qc>kL
zpRF!da1-S|6}JQBss-#TmhIu(%EK*AwKW;N9NqwH>v5pL-nx6dG0ICjC@(LdH+HMt
z<8tDsX+u~gIA%yI*0<ewxcX6tRE@&Mh>ekyDM=Y7U)Dm1J^Z!ftKP+~q@MoEvL9bB
z4iOD#Cs9b&Ay^##lO)Z|_tpwNnlNrFXuLdozuJi6W^*8)m-DsqQQxO*1%7*xd0c$*
zD{eu~{5aD3C2c$cIN8bx_4)N9j?&hPY{TU?I&U22+d=axwCxb-wN!V+{*y-eO2yhn
z-t9!)donFn$|rl`x_W@usq%((b$M-#`3xHs|Jtl<y7o|(I$k?||NY;bro~)vTs$B=
zT`#=66e+uT1JEEG)Ej;{(nh4hl&mETVSWrdX6_VSd}HFcjVFLKVcgo?;7+%5L0kC3
zau+FvxUWQnSVT|XuEF#9{Qmv>moHz=^E8k!YJ)5nS{)|clQceflG`msM3`>LUC+1v
z5K+*dKi>f0<>hx8@tM;gWpT?)E3wR8eGO`66=NPTi?W){2AkicCIF&yvWbqE<vh=S
z{`g^i$ws9~IJD1dQQ_z#yoJJPzC-S}O=ttsu77{8L+E!xyJEht%@xa5kQNE)f=*|*
zk;W~sjl~d(nvRk9c(-~}bfteKu;I-lmnWB`x$Wk?ymlD%?=i)AM(LWK)MInD%^&&$
zD49<aqh^>&Aq1x{iZIa_)LlpHA7;jNjF8?OuZK<!VY&j38hMe`-DU#oN+Mq=wQ$`U
z+|D1(*P;t}v`~sWIn(9l>1=T4Rh7B)<^GS(B+kFg11k*qx;4~LY?m#;rR~_?WqdvU
zD-u(gBn6L0w|Do^BJ)-h+xOg8ubAzJ+;y}befUw&bVYz~r{^1}13#?3*Rc(o%^mH&
zhgX1YyFQ*V)g`|lgYB1<wrflf0LGUu-|WAoIeX=A`*Doeym0#(CFcxBp#c|jlZ--3
z)lc*CHpvh+%iIlJIgSzbR_H#6S`T)YG2Dp5lJbuTW<4FSW1SYl8fs{Wwip4P&*z{4
z2tR)Oa6r4Kjn<i%A-lRRMzIU&deLfg4;jf~AUz(BY+(BtVHki2zrCL4`Tl%94ODl<
zh-8=I5VMzC6?3+lEb}~7U@}kUb53)xn{!U)Ih|^Ep6B`g&dfhwUw{1eTLV~}gF3>$
z^ol+q4#W}UHh`#1$v~mNi}8YDHD)PhBxmKPui(Kg=yLfoO<--qm-<d<YtpZT&lK;b
zn}PGc!v2Fg;0Aa7@4^iOP!Dh2W|YN;>#l=N^N`(QS~aXb=z2<Smht`DjhAINbfw$i
zARIoJVm7;x_h;$!!Yqt^L)j}#OAhE~oVpk=Kno=Fs5EWoa!Ds>8_PaDI?MR!4z65B
zt^!mVkdv1aH@51f$;%?907{ng0=p7vBYE^2YPW`N`+~0RyuO$G*rOp{nw6eI5cYjH
z#K7{rtmdgTyx47-<sy5-4m)k5?I%n0TkLo3oX9gOKIJxFG4KsVTd+5P-T`hj$&X;?
zkG9<xpc~WieWR5%3J`A7R5xnv6Gf-69GwxK;>hMV;TR@a;yLy!VxIVd03)0MqR0Ud
zh?#k-D2v%~xgjc{nSNxs5)t#2>~u=E%L}E4`z;Yk3FQhG^q)4!yw0Jie32;pu#_T3
zn^GZB!KeOoy#9QBe}88`xulC1m$(}w8kR*b8zz&);A>mm8hJFPYyUWH)aXV(h%)8<
z*I$1HfG=OZJ)h6#^YMH><1<!K20y818dF;(CL9VA#B9CYjzC0M=G)ub>+9<|-+4~k
z6u-ZpVYam*NB|-9)K0-N5HzDc2NB19ABm7ChBRHO3#J@d8)&bD>dQ&GFS@rAPv&BE
zSNAR0C%u`jY+LjC2pGHoz?c{)U4jwo^+;K?Dh774Sz4yK5y6&AC?74@K3ZGcuBq(L
z=Cc?bM%T-RmN!C5-1HOyP*BN2DJ+IP+1(ikX-Q<@meI;QsYZE7-FXHDG^)q$|D5?+
z=2T@~vz0W{_ceNBz4@=CsBqOF-H~8>_`!YI5Yg+r7{g8R>_JsP+Ucn|Yvi5W=hxf)
zV)&7z0!MCTKS`!Bdh>Q`-I{WL0=!)nTyaM2Ox^1Z*>Bowrq;i7|G0Xos$!Sq-Far=
zl~CDtptmS7D3IF}mD%&{PpkH21)Q&6obLK<xzH7n%ZjHRS<B^e61$|md7d)>00+?l
zAgY|J_!@cJg*FJ2B6O+ZRE^?^Fo@hF+*vcjP-#MBbgyF59H$rBRh6Io&ybsV9EqJS
zd0jP@#9;}EhyzJwv2e4G;!u$c6!-Ij(&Syb|2udt7;pxLpdYe%9f*keH0nRkso^tj
z9OFp#)n?jG>ARF=qY=9tS!^hZZ$-^F3=l=$r^;Xd`@bH?KZwTTF}{EQejJB+hs}9D
zj$y7?qEkcwWKKTcr@@Ujm>RK8#abQy?dOkkPL{b^!^1X(V`gl?^}!?O#fe*K5}Bq*
z%sX2|j8>gakWGUoEe-)aPTiOUz{y4LBkY9{s@ux>ljYEbzMxHCTh5MqYcFi?$l`=O
zJ`D{w2?Od2{^r`580E#az}h{tw&}b>BT0|QJ>q_p$6K}wXygD9ZiaeV_Ym$&vaBlN
z2`>Iww9^nXvB6k(+Lby9vnK)>keGgeUM5mj8vV-PW4J4)>v&hL;J3p{`cvl83N8kT
zRN#$ta;S&quIy-Q%d+J%wy-KAk|+>?AA>bk!lp=0bUpbE`NH~)(QpLa82A@uM3;kG
z1!`8w%{AgmWm@4k=soMk57>wlpIAp-o1W|BeM@XMSY+K9!R_MUO842mVEcP2S+?iA
z=;c_rb}CNm-{7dijgy!n?Jsrh9_T7JT3QenK8lvxxdjG#X4U@#0Us$oxn+mh00000
LNkvXXu0mjf5z!Jg

-- 
GitLab